diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/RenditionCleaner.java b/core/src/main/java/org/apache/sling/cms/core/internal/listeners/RenditionCleaner.java
similarity index 78%
rename from transformer/src/main/java/org/apache/sling/cms/transformer/internal/RenditionCleaner.java
rename to core/src/main/java/org/apache/sling/cms/core/internal/listeners/RenditionCleaner.java
index d1e75ee..a2b8cf9 100644
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/RenditionCleaner.java
+++ b/core/src/main/java/org/apache/sling/cms/core/internal/listeners/RenditionCleaner.java
@@ -16,12 +16,16 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.sling.cms.transformer.internal;
+package org.apache.sling.cms.core.internal.listeners;
+
+import java.util.Collections;
 
 import org.apache.sling.api.resource.LoginException;
 import org.apache.sling.api.resource.PersistenceException;
 import org.apache.sling.api.resource.Resource;
 import org.apache.sling.api.resource.ResourceResolver;
+import org.apache.sling.api.resource.ResourceResolverFactory;
+import org.osgi.service.component.annotations.Activate;
 import org.osgi.service.component.annotations.Component;
 import org.osgi.service.component.annotations.Reference;
 import org.osgi.service.event.Event;
@@ -36,13 +40,17 @@
 public class RenditionCleaner implements EventHandler {
 
     private static final Logger log = LoggerFactory.getLogger(RenditionCleaner.class);
+    private ResourceResolverFactory factory;
 
-    @Reference
-    private TransformationServiceUser transformationServiceUser;
+    @Activate
+    public RenditionCleaner(@Reference ResourceResolverFactory factory) {
+        this.factory = factory;
+    }
 
     @Override
     public void handleEvent(Event event) {
-        try (ResourceResolver resolver = transformationServiceUser.getTransformationServiceUser()) {
+        try (ResourceResolver resolver = factory.getServiceResourceResolver(
+                Collections.singletonMap(ResourceResolverFactory.SUBSERVICE, "sling-commons-thumbnails"))) {
             Resource renditions = resolver.getResource(event.getProperty("path") + "/renditions");
             if (renditions != null) {
                 resolver.delete(renditions);
diff --git a/core/src/test/resources/conf.json b/core/src/test/resources/conf.json
index 89e2b0b..3283cb6 100644
--- a/core/src/test/resources/conf.json
+++ b/core/src/test/resources/conf.json
@@ -107,57 +107,57 @@
                 "sling-cms-thumbnail": {
                     "jcr:primaryType": "nt:unstructured",
                     "name": "sling-cms-thumbnail",
-                    "sling:resourceType": "sling-cms/components/caconfig/transformation",
+                    "sling:resourceType": "sling/commons/thumbnails/transformation",
                     "handlers": {
                         "jcr:primaryType": "nt:unstructured",
                         "size": {
                             "jcr:primaryType": "nt:unstructured",
                             "height": "480",
                             "width": "600",
-                            "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/size"
+                            "sling:resourceType": "sling/commons/thumbnails/transformers/resize"
                         },
                         "crop": {
                             "jcr:primaryType": "nt:unstructured",
                             "position": "CENTER",
-                            "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/crop"
+                            "sling:resourceType": "sling/commons/thumbnails/transformers/crop"
                         }
                     }
                 },
                 "sling-cms-thumbnail128": {
                     "jcr:primaryType": "nt:unstructured",
                     "name": "sling-cms-thumbnail128",
-                    "sling:resourceType": "sling-cms/components/caconfig/transformation",
+                    "sling:resourceType": "sling/commons/thumbnails/transformation",
                     "handlers": {
                         "jcr:primaryType": "nt:unstructured",
                         "size": {
                             "jcr:primaryType": "nt:unstructured",
                             "height": "128",
                             "width": "128",
-                            "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/size"
+                            "sling:resourceType": "sling/commons/thumbnails/transformers/resize"
                         },
                         "crop": {
                             "jcr:primaryType": "nt:unstructured",
                             "position": "CENTER",
-                            "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/crop"
+                            "sling:resourceType": "sling/commons/thumbnails/transformers/crop"
                         }
                     }
                 },
                 "sling-cms-thumbnail32": {
                     "jcr:primaryType": "nt:unstructured",
                     "name": "sling-cms-thumbnail32",
-                    "sling:resourceType": "sling-cms/components/caconfig/transformation",
+                    "sling:resourceType": "sling/commons/thumbnails/transformation",
                     "handlers": {
                         "jcr:primaryType": "nt:unstructured",
                         "size": {
                             "jcr:primaryType": "nt:unstructured",
                             "height": "32",
                             "width": "32",
-                            "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/size"
+                            "sling:resourceType": "sling/commons/thumbnails/transformers/resize"
                         },
                         "crop": {
                             "jcr:primaryType": "nt:unstructured",
                             "position": "CENTER",
-                            "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/crop"
+                            "sling:resourceType": "sling/commons/thumbnails/transformers/crop"
                         }
                     }
                 }
diff --git a/feature/src/main/features/thumbnails.json b/feature/src/main/features/thumbnails.json
new file mode 100644
index 0000000..935cee5
--- /dev/null
+++ b/feature/src/main/features/thumbnails.json
@@ -0,0 +1,21 @@
+{
+  "prototype": {
+    "id": "org.apache.sling:org.apache.sling.commons.thumbnails:slingosgifeature:default:1.0.0-SNAPSHOT"
+  },
+  "configurations": {
+    "org.apache.sling.commons.thumbnails.internal.ThumbnailSupportImpl": {
+      "errorSuffix": "/sling-cms-thumbnail.png",
+      "errorResourcePath": "/static/sling-cms/thumbnails/file.png",
+      "persistableTypes": ["sling:File=jcr:content/renditions"],
+      "supportedTypes": [
+        "nt:file=jcr:content/jcr:mimeType",
+        "sling:File=jcr:content/jcr:mimeType"
+      ]
+    },
+    "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended~sling-commons-thumbnails-core":{
+        "user.mapping":[
+            "org.apache.sling.cms.core:sling-commons-thumbnails=[sling-commons-thumbnails]"
+        ]
+    }
+  }
+}
diff --git a/pom.xml b/pom.xml
index d12b544..d192f52 100644
--- a/pom.xml
+++ b/pom.xml
@@ -71,7 +71,6 @@
     <modules>
         <module>api</module>
         <module>core</module>
-        <module>transformer</module>
         <module>login</module>
         <module>ui</module>
         <module>reference</module>
diff --git a/transformer/NOTICE b/transformer/NOTICE
deleted file mode 100644
index c91d59c..0000000
--- a/transformer/NOTICE
+++ /dev/null
@@ -1,8 +0,0 @@
-Apache Sling App CMS - Transformer
-Copyright 2019 The Apache Software Foundation
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed at
-https://github.com/coobird/thumbnailator
\ No newline at end of file
diff --git a/transformer/bnd.bnd b/transformer/bnd.bnd
deleted file mode 100644
index 1c528db..0000000
--- a/transformer/bnd.bnd
+++ /dev/null
@@ -1,4 +0,0 @@
-Sling-Model-Packages: org.apache.sling.cms.transformer
-
-Export-Package: org.apache.sling.cms.transformer,net.coobird.thumbnailator.*
--includeresource: lib/thumbnailator.jar=thumbnailator-[[0-9\.]]*.jar;lib:=true
diff --git a/transformer/pom.xml b/transformer/pom.xml
deleted file mode 100644
index b4db414..0000000
--- a/transformer/pom.xml
+++ /dev/null
@@ -1,196 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional
-    information regarding copyright ownership. The ASF licenses this file to you 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. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>org.apache.sling.cms</artifactId>
-        <groupId>org.apache.sling</groupId>
-        <version>1.0.5-SNAPSHOT</version>
-    </parent>
-    <artifactId>org.apache.sling.cms.transformer</artifactId>
-    <name>Apache Sling - Transformer</name>
-    <description>An API and Service for creating and transforming images and documents into thumbnails</description>
-
-    <properties>
-        <sling.java.version>8</sling.java.version>
-    </properties>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>biz.aQute.bnd</groupId>
-                <artifactId>bnd-maven-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>8</source>
-                    <target>8</target>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.rat</groupId>
-                <artifactId>apache-rat-plugin</artifactId>
-                <configuration>
-                    <excludes>
-                        <!-- Used by maven-remote-resources-plugin -->
-                        <exclude>src/main/appended-resources/META-INF/*</exclude>
-                        <!-- Generated by maven-remote-resources-plugin -->
-                        <exclude>velocity.log</exclude>
-                        <!-- don't check anything in target -->
-                        <exclude>target/*</exclude>
-                        <!-- for some reason Rat doesn't seem to pick up that PPTs are binary -->
-                        <exclude>src/test/resources/*.ppt</exclude>
-                    </excludes>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>verify</phase>
-                        <goals>
-                            <goal>check</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-    <dependencies>
-
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.felix</groupId>
-            <artifactId>org.apache.felix.webconsole</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.annotation</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.service.component.annotations</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>org.osgi.service.metatype.annotations</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.osgi</groupId>
-            <artifactId>osgi.cmpn</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
-
-        <!-- Sling Dependencies -->
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.caconfig.api</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.cms.api</artifactId>
-            <version>${project.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.cms.core</artifactId>
-            <version>${project.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.event.api</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- Utilities -->
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-lang3</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>javax.annotation</groupId>
-            <artifactId>javax.annotation-api</artifactId>
-        </dependency>
-
-        <!-- Document handling -->
-        <dependency>
-            <groupId>net.coobird</groupId>
-            <artifactId>thumbnailator</artifactId>
-        </dependency>
-        <dependency>
-            <artifactId>pdfbox</artifactId>
-            <groupId>org.apache.pdfbox</groupId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-ooxml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.poi</groupId>
-            <artifactId>poi-scratchpad</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tika</groupId>
-            <artifactId>tika-core</artifactId>
-        </dependency>
-
-        <!-- Testing dependencies -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.sling</groupId>
-            <artifactId>org.apache.sling.testing.sling-mock.junit4</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>jakarta.xml.bind</groupId>
-            <artifactId>jakarta.xml.bind-api</artifactId>
-            <version>2.3.2</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.glassfish.jaxb</groupId>
-            <artifactId>jaxb-runtime</artifactId>
-            <version>2.3.2</version>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-</project>
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/OutputFileFormat.java b/transformer/src/main/java/org/apache/sling/cms/transformer/OutputFileFormat.java
deleted file mode 100644
index 464d5b3..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/OutputFileFormat.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.sling.api.SlingHttpServletRequest;
-
-import com.google.common.base.Enums;
-import com.google.common.net.MediaType;
-
-/**
- * Enumeration of the valid output formats for the thumbnail generator.
- */
-public enum OutputFileFormat {
-    GIF(MediaType.GIF.toString()), JPEG(MediaType.JPEG.toString()), PNG(MediaType.PNG.toString());
-
-    /**
-     * Loads the output format requested in the specified request suffix.
-     * 
-     * @param request the current request from which to get the suffix
-     * @return the format for the suffix
-     */
-    public static OutputFileFormat forRequest(SlingHttpServletRequest request) {
-        String suffixExtension = StringUtils.substringAfterLast(request.getRequestPathInfo().getSuffix(), ".")
-                .toUpperCase();
-        return Enums.getIfPresent(OutputFileFormat.class, suffixExtension).or(OutputFileFormat.JPEG);
-    }
-
-    private String mimeType;
-
-    private OutputFileFormat(String mimeType) {
-        this.mimeType = mimeType;
-    }
-
-    public String getMimeType() {
-        return mimeType;
-    }
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/ThumbnailProvider.java b/transformer/src/main/java/org/apache/sling/cms/transformer/ThumbnailProvider.java
deleted file mode 100644
index 93a8b18..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/ThumbnailProvider.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.sling.api.resource.Resource;
-
-/**
- * Service for retrieving a thumbnail for the specified Resource.
- */
-public interface ThumbnailProvider {
-
-    /**
-     * Returns true if the ThumbnailProvider applies for the specified resource.
-     * 
-     * @param resource the resource to check
-     * @return true if this ThumbnailProvider will create a thumbnail for this
-     *         resource, false otherwise
-     */
-    boolean applies(Resource resource);
-
-    /**
-     * Get the thumbnail from the specified resource.
-     * 
-     * @param resource the resource from which to retrieve the thumbnail
-     * @return the thumbnail
-     * @throws IOException an exception occurs retrieving the thumbnail
-     */
-    InputStream getThumbnail(Resource resource) throws IOException;
-
-}
\ No newline at end of file
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/Transformation.java b/transformer/src/main/java/org/apache/sling/cms/transformer/Transformation.java
deleted file mode 100644
index 2058207..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/Transformation.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer;
-
-import java.util.List;
-
-import org.apache.sling.api.resource.Resource;
-
-/**
- * Model representing a transformation, a series of handlers
- */
-public interface Transformation {
-
-    String getName();
-
-    List<Resource> getHandlers();
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/TransformationHandler.java b/transformer/src/main/java/org/apache/sling/cms/transformer/TransformationHandler.java
deleted file mode 100644
index f8ed7d9..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/TransformationHandler.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.sling.api.resource.Resource;
-
-import net.coobird.thumbnailator.Thumbnails.Builder;
-
-/*
- * Transformation handlers handle the transformation of files using the Thumbnails library.
- * Each transformation handler implements a transformation command using the specifed configuration.
- */
-@SuppressWarnings("squid:S1214") // I don't like this rule...
-public interface TransformationHandler {
-
-    public static final String HANDLER_RESOURCE_TYPE = "handler.resourceType";
-
-    /**
-     * Get the resource type associated with this handler
-     * 
-     * @return the handler resource type
-     */
-    String getResourceType();
-
-    /**
-     * Handles the transformation of the file using the command values from the
-     * suffix segment.
-     * 
-     * @param builder the Thumbnails builder to use / update
-     * @param config  the configuration values for the transformation
-     * @throws IOException an exception occurs transforming the file
-     */
-    void handle(Builder<? extends InputStream> builder, Resource config) throws IOException;
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/TransformationManager.java b/transformer/src/main/java/org/apache/sling/cms/transformer/TransformationManager.java
deleted file mode 100644
index b32457a..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/TransformationManager.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer;
-
-import java.util.List;
-
-/**
- * A Sling Model interface for retrieving the transformations available to a
- * particular resource
- */
-public interface TransformationManager {
-
-    /**
-     * Gets the transformations available to a particular resource based on the CA
-     * Configs
-     * 
-     * @return a list of transformations
-     */
-    List<Transformation> getTransformations();
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/Transformer.java b/transformer/src/main/java/org/apache/sling/cms/transformer/Transformer.java
deleted file mode 100644
index a7e27ef..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/Transformer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.sling.api.resource.Resource;
-
-/**
- * Transforms a resource using the registered TransformationHandlers to invoke
- * transformations on the file.
- */
-public interface Transformer {
-
-    /**
-     * Transforms the resource
-     * 
-     * @param resource       the resource to transform
-     * @param transformation the transformation to execute
-     * @param format         the format of the stream to return
-     * @param out            the OutputStream to which to write the transformed file
-     * @throws IOException an exception occurs transforming the resource
-     */
-    void transform(Resource resource, Transformation transformation, OutputFileFormat format, OutputStream out)
-            throws IOException;
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/CropHandler.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/CropHandler.java
deleted file mode 100644
index 573a915..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/CropHandler.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.TransformationHandler;
-import org.osgi.service.component.annotations.Component;
-
-import net.coobird.thumbnailator.Thumbnails.Builder;
-import net.coobird.thumbnailator.geometry.Positions;
-
-/**
- * A transformation handler to crop images
- */
-@Component(service = TransformationHandler.class, property = { TransformationHandler.HANDLER_RESOURCE_TYPE
-        + "=sling-cms/components/caconfig/transformationhandlers/crop" }, immediate = true)
-public class CropHandler implements TransformationHandler {
-
-    public static final String PN_POSITION = "position";
-
-    @Override
-    public String getResourceType() {
-        return "sling-cms/components/caconfig/transformationhandlers/crop";
-    }
-
-    @Override
-    public void handle(Builder<? extends InputStream> builder, Resource config) throws IOException {
-        String positionStr = config.getValueMap().get(PN_POSITION, "CENTER").toUpperCase();
-        try {
-            Positions pos = Positions.valueOf(positionStr);
-            builder.crop(pos);
-        } catch (IllegalArgumentException e) {
-            throw new IOException("Unable to load crop position from " + positionStr, e);
-        }
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/ImageThumbnailProvider.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/ImageThumbnailProvider.java
deleted file mode 100644
index 79fc9bf..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/ImageThumbnailProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.io.InputStream;
-import java.util.Optional;
-
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.CMSConstants;
-import org.apache.sling.cms.File;
-import org.apache.sling.cms.transformer.ThumbnailProvider;
-import org.osgi.service.component.annotations.Component;
-
-import com.google.common.net.MediaType;
-
-/**
- * A thumbnail provider for image files.
- */
-@Component(service = ThumbnailProvider.class, immediate = true)
-public class ImageThumbnailProvider implements ThumbnailProvider {
-
-    @Override
-    public boolean applies(Resource resource) {
-        return (CMSConstants.NT_FILE.equals(resource.getResourceType())
-                || JcrConstants.NT_FILE.equals(resource.getResourceType()))
-                && Optional.ofNullable(resource.adaptTo(File.class))
-                        .map(f -> MediaType.parse(f.getContentType()).is(MediaType.ANY_IMAGE_TYPE)).orElse(false);
-    }
-
-    @Override
-    public InputStream getThumbnail(Resource resource) {
-        return resource.adaptTo(InputStream.class);
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/PdfThumbnailProvider.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/PdfThumbnailProvider.java
deleted file mode 100644
index 0230da9..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/PdfThumbnailProvider.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Optional;
-
-import javax.imageio.ImageIO;
-
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.pdfbox.pdmodel.PDDocument;
-import org.apache.pdfbox.rendering.ImageType;
-import org.apache.pdfbox.rendering.PDFRenderer;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.CMSConstants;
-import org.apache.sling.cms.File;
-import org.apache.sling.cms.transformer.ThumbnailProvider;
-import org.osgi.service.component.annotations.Component;
-
-import com.google.common.net.MediaType;
-
-/**
- * A thumbnail provider for PDF documents.
- */
-@Component(service = ThumbnailProvider.class, immediate = true)
-public class PdfThumbnailProvider implements ThumbnailProvider {
-
-    @Override
-    public boolean applies(Resource resource) {
-        return (CMSConstants.NT_FILE.equals(resource.getResourceType())
-                || JcrConstants.NT_FILE.equals(resource.getResourceType()))
-                && Optional.ofNullable(resource.adaptTo(File.class))
-                        .map(r -> MediaType.PDF.is(MediaType.parse(r.getContentType()))).orElse(false);
-    }
-
-    @Override
-    public InputStream getThumbnail(Resource resource) throws IOException {
-        try (PDDocument document = PDDocument.load(resource.adaptTo(InputStream.class))) {
-            PDFRenderer pdfRenderer = new PDFRenderer(document);
-            BufferedImage bim = pdfRenderer.renderImageWithDPI(0, 300, ImageType.RGB);
-            ByteArrayOutputStream os = new ByteArrayOutputStream();
-            ImageIO.write(bim, "jpeg", os);
-            return new ByteArrayInputStream(os.toByteArray());
-        }
-    }
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/SizeHandler.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/SizeHandler.java
deleted file mode 100644
index 79bd276..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/SizeHandler.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.TransformationHandler;
-import org.osgi.service.component.annotations.Component;
-
-import net.coobird.thumbnailator.Thumbnails.Builder;
-
-/**
- * A transformer for resizing an image
- */
-@Component(service = TransformationHandler.class, property = { TransformationHandler.HANDLER_RESOURCE_TYPE
-        + "=sling-cms/components/caconfig/transformationhandlers/size" }, immediate = true)
-public class SizeHandler implements TransformationHandler {
-
-    public static final String PN_HEIGHT = "height";
-    public static final String PN_WIDTH = "width";
-
-    @Override
-    public String getResourceType() {
-        return "sling-cms/components/caconfig/transformationhandlers/size";
-    }
-
-    @Override
-    public void handle(Builder<? extends InputStream> builder, Resource config) throws IOException {
-        int width = config.getValueMap().get(PN_WIDTH, -1);
-        int height = config.getValueMap().get(PN_HEIGHT, -1);
-        builder.size(width, height);
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/SlideShowThumbnailProvider.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/SlideShowThumbnailProvider.java
deleted file mode 100644
index e87371b..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/SlideShowThumbnailProvider.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Graphics2D;
-import java.awt.geom.Rectangle2D;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.List;
-import java.util.Optional;
-
-import javax.imageio.ImageIO;
-
-import org.apache.commons.io.output.ByteArrayOutputStream;
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.poi.hslf.usermodel.HSLFSlideShow;
-import org.apache.poi.sl.usermodel.Slide;
-import org.apache.poi.sl.usermodel.SlideShow;
-import org.apache.poi.xslf.usermodel.XMLSlideShow;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.CMSConstants;
-import org.apache.sling.cms.File;
-import org.apache.sling.cms.transformer.OutputFileFormat;
-import org.apache.sling.cms.transformer.ThumbnailProvider;
-import org.apache.sling.commons.classloader.DynamicClassLoaderManager;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-
-import com.google.common.net.MediaType;
-
-/**
- * Provides Thumbnails for Microsoft PPT and PPTX files.
- */
-@Component(service = ThumbnailProvider.class, immediate = true)
-public class SlideShowThumbnailProvider implements ThumbnailProvider {
-
-    @Reference
-    private DynamicClassLoaderManager dclm;
-
-    @Override
-    public boolean applies(Resource resource) {
-        return (CMSConstants.NT_FILE.equals(resource.getResourceType())
-                || JcrConstants.NT_FILE.equals(resource.getResourceType()))
-                && Optional.ofNullable(resource.adaptTo(File.class)).map(f -> {
-                    MediaType mt = MediaType.parse(f.getContentType());
-                    return mt.is(MediaType.MICROSOFT_POWERPOINT) || mt.is(MediaType.OOXML_PRESENTATION);
-                }).orElse(false);
-    }
-
-    @Override
-    public InputStream getThumbnail(Resource resource) throws IOException {
-        if (dclm != null) {
-            Thread.currentThread().setContextClassLoader(dclm.getDynamicClassLoader());
-        }
-
-        SlideShow<?, ?> ppt = null;
-        MediaType mt = MediaType.parse(resource.adaptTo(File.class).getContentType());
-        try (ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                InputStream is = resource.adaptTo(InputStream.class)) {
-            if (mt.is(MediaType.MICROSOFT_POWERPOINT)) {
-                ppt = new HSLFSlideShow(is);
-            } else {
-                ppt = new XMLSlideShow(is);
-            }
-            Dimension dim = ppt.getPageSize();
-            List<? extends Slide<?, ?>> slides = ppt.getSlides();
-
-            BufferedImage img = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_RGB);
-            Graphics2D graphics = img.createGraphics();
-            graphics.setPaint(Color.white);
-            graphics.fill(new Rectangle2D.Float(0, 0, dim.width, dim.height));
-
-            if (slides != null && !slides.isEmpty()) {
-                slides.get(0).draw(graphics);
-            }
-
-            ImageIO.write(img, OutputFileFormat.PNG.toString(), baos);
-            return new ByteArrayInputStream(baos.toByteArray());
-        } finally {
-            if (ppt != null) {
-                ppt.close();
-            }
-        }
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TikaFallbackProvider.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TikaFallbackProvider.java
deleted file mode 100644
index bfb2bbb..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TikaFallbackProvider.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.awt.Graphics;
-import java.awt.image.BufferedImage;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import javax.imageio.ImageIO;
-import javax.swing.JEditorPane;
-
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.CMSConstants;
-import org.apache.sling.cms.transformer.OutputFileFormat;
-import org.apache.sling.cms.transformer.ThumbnailProvider;
-import org.apache.tika.exception.TikaException;
-import org.apache.tika.metadata.Metadata;
-import org.apache.tika.parser.AutoDetectParser;
-import org.apache.tika.parser.ParseContext;
-import org.apache.tika.parser.Parser;
-import org.apache.tika.sax.BodyContentHandler;
-import org.apache.tika.sax.WriteOutContentHandler;
-import org.osgi.framework.Constants;
-import org.osgi.service.component.annotations.Component;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.xml.sax.SAXException;
-
-@Component(service = ThumbnailProvider.class, property = {
-        Constants.SERVICE_RANKING + "=" + Integer.MIN_VALUE }, immediate = true)
-public class TikaFallbackProvider implements ThumbnailProvider {
-
-    private static final Logger log = LoggerFactory.getLogger(TikaFallbackProvider.class);
-
-    @Override
-    public boolean applies(Resource resource) {
-        return (CMSConstants.NT_FILE.equals(resource.getResourceType())
-                || JcrConstants.NT_FILE.equals(resource.getResourceType()));
-    }
-
-    @Override
-    public InputStream getThumbnail(Resource resource) throws IOException {
-
-        log.info("Extracting content thumbnail from {}", resource.getPath());
-        try {
-
-            log.debug("Extracting file contents");
-            String contents = extractContents(resource);
-
-            log.debug("Creating thumbnail of file contents");
-            int width = 500;
-            int height = 500;
-            BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
-            Graphics graphics = image.createGraphics();
-            JEditorPane jep = new JEditorPane("text/html", contents);
-            jep.setSize(width, height);
-            jep.print(graphics);
-
-            ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            ImageIO.write(image, OutputFileFormat.PNG.toString(), baos);
-            return new ByteArrayInputStream(baos.toByteArray());
-        } catch (SAXException | TikaException e) {
-            throw new IOException("Failed to generate thumbnail from " + resource.getPath(), e);
-        }
-    }
-
-    private String extractContents(Resource resource) throws IOException, TikaException, SAXException {
-        InputStream is = resource.adaptTo(InputStream.class);
-        Parser parser = new AutoDetectParser();
-        WriteOutContentHandler woHandler = new WriteOutContentHandler();
-        BodyContentHandler bHandler = new BodyContentHandler(woHandler);
-        
-        Metadata md = new Metadata();
-        ParseContext context = new ParseContext();
-        try {
-            parser.parse(is, bHandler, md, context);
-        } catch (SAXException se) {
-            if (woHandler.isWriteLimitReached(se)) {
-                log.debug("Reached write limit for preview generation");
-            } else {
-                throw se;
-            }
-        }
-        return bHandler.toString();
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformServlet.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformServlet.java
deleted file mode 100644
index 40c8e86..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformServlet.java
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-import javax.jcr.query.Query;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.Servlet;
-import javax.servlet.ServletException;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.poi.util.IOUtils;
-import org.apache.sling.api.SlingHttpServletRequest;
-import org.apache.sling.api.SlingHttpServletResponse;
-import org.apache.sling.api.request.RequestDispatcherOptions;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ResourceUtil;
-import org.apache.sling.api.servlets.SlingSafeMethodsServlet;
-import org.apache.sling.cms.CMSConstants;
-import org.apache.sling.cms.transformer.OutputFileFormat;
-import org.apache.sling.cms.transformer.Transformation;
-import org.apache.sling.cms.transformer.Transformer;
-import org.osgi.service.component.annotations.Activate;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.metatype.annotations.Designate;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * A servlet to transform images using the FileThumbnailTransformer API. Can be
- * invoked using the syntax:
- * 
- * /content/file/path.jpg.transform/transformation-name.png
- */
-@Component(service = { Servlet.class }, property = { "sling.servlet.extensions=transform",
-        "sling.servlet.resourceTypes=sling:File", "sling.servlet.resourceTypes=nt:file" })
-@Designate(ocd = TransformServletConfig.class)
-public class TransformServlet extends SlingSafeMethodsServlet {
-
-    private static final Logger log = LoggerFactory.getLogger(TransformServlet.class);
-
-    private static final long serialVersionUID = -1513067546618762171L;
-
-    public static final String SERVICE_USER = "sling-cms-transformer";
-
-    private transient TransformationServiceUser transformationServiceUser;
-
-    private transient Transformer transformer;
-    
-    private transient TransformServletConfig config;
-    
-    @Activate
-    public void activate(TransformServletConfig config) {
-        this.config = config;
-    }
-
-    @Override
-    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response)
-            throws ServletException, IOException {
-        log.trace("doGet");
-
-        String name = StringUtils.substringBeforeLast(request.getRequestPathInfo().getSuffix(), ".");
-        response.setHeader("Content-Disposition", "filename=" + request.getResource().getName());
-        String format = StringUtils.substringAfterLast(request.getRequestPathInfo().getSuffix(), ".");
-        log.debug("Transforming resource: {} with transformation: {} to {}", request.getResource(), name, format);
-        String original = response.getContentType();
-        try (ResourceResolver serviceResolver = transformationServiceUser.getTransformationServiceUser()) {
-            Transformation transformation = findTransformation(serviceResolver, name);
-            if (transformation != null) {
-                response.setContentType(OutputFileFormat.forRequest(request).getMimeType());
-                String expectedPath = "jcr:content/renditions/" + name + "." + format;
-                Resource rendition = request.getResource().getChild(expectedPath);
-                if (rendition != null) {
-                    log.debug("Using existing rendition {}", name);
-                    IOUtils.copy(rendition.adaptTo(InputStream.class), response.getOutputStream());
-                } else {
-                    log.debug("Creating new rendition {}", name);
-                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                    transformer.transform(request.getResource(), transformation,
-                            OutputFileFormat.valueOf(format.toUpperCase()), baos);
-                    IOUtils.copy(new ByteArrayInputStream(baos.toByteArray()), response.getOutputStream());
-                    if (CMSConstants.NT_FILE.equals(request.getResource().getResourceType())) {
-                        Resource file = ResourceUtil.getOrCreateResource(serviceResolver,
-                                request.getResource().getPath() + "/" + expectedPath,
-                                Collections.singletonMap(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_FILE),
-                                JcrConstants.NT_UNSTRUCTURED, false);
-                        Map<String, Object> properties = new HashMap<>();
-                        properties.put(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED);
-                        properties.put(JcrConstants.JCR_DATA, new ByteArrayInputStream(baos.toByteArray()));
-                        ResourceUtil.getOrCreateResource(serviceResolver,
-                                file.getPath() + "/" + JcrConstants.JCR_CONTENT, properties,
-                                JcrConstants.NT_UNSTRUCTURED, true);
-                    }
-
-                }
-            } else {
-                log.error("Exception transforming image: {} with transformation: {}", request.getResource(), name);
-                response.setContentType(original);
-                response.sendError(400, "Could not transform image with transformation: " + name);
-            }
-        } catch (Exception e) {
-            log.error("Exception rendering transformed resource", e);
-            response.setStatus(500);
-            RequestDispatcherOptions op = new RequestDispatcherOptions();
-            op.setReplaceSuffix(config.errorSuffix());
-            op.setReplaceSelectors("transform");
-            RequestDispatcher disp = request.getRequestDispatcher(config.errorResourcePath(), op);
-            disp.forward(request, response);
-        }
-    }
-
-    protected Transformation findTransformation(ResourceResolver serviceResolver, String name) {
-        name = name.substring(1).replace("'", "''");
-        log.debug("Finding transformations with {}", name);
-
-        Iterator<Resource> transformations = serviceResolver.findResources(
-                "SELECT * FROM [nt:unstructured] WHERE (ISDESCENDANTNODE([/conf]) OR ISDESCENDANTNODE([/libs/conf]) OR ISDESCENDANTNODE([/apps/conf])) AND [sling:resourceType]='sling-cms/components/caconfig/transformation' AND [name]='"
-                        + name + "'",
-                Query.JCR_SQL2);
-        if (transformations.hasNext()) {
-            Resource transformation = transformations.next();
-            return transformation.adaptTo(Transformation.class);
-        }
-
-        return null;
-    }
-
-    @Reference
-    public void setTransformationServiceUser(TransformationServiceUser transformationServiceUser) {
-        this.transformationServiceUser = transformationServiceUser;
-    }
-
-    @Reference
-    public void setTransformer(Transformer transformer) {
-        this.transformer = transformer;
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformServletConfig.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformServletConfig.java
deleted file mode 100644
index ee2d970..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformServletConfig.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import org.osgi.service.metatype.annotations.AttributeDefinition;
-import org.osgi.service.metatype.annotations.ObjectClassDefinition;
-
-@ObjectClassDefinition(name = "%transformservlet.name", description = "%transformservlet.description", localization = "OSGI-INF/l10n/bundle")
-public @interface TransformServletConfig {
-
-    @AttributeDefinition(name = "%transformservlet.errorResourcePath.name", description = "%transformservlet.errorResourcePath.description")
-    String errorResourcePath() default "/static/sling-cms/thumbnails/file.png";
-    
-    @AttributeDefinition(name = "%transformservlet.errorSuffix.name", description = "%transformservlet.errorSuffix.description")
-    String errorSuffix() default "/sling-cms-thumbnail.png";
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformationServiceUser.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformationServiceUser.java
deleted file mode 100644
index 210729c..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformationServiceUser.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.util.Collections;
-
-import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ResourceResolverFactory;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-
-/**
- * Service for retrieving the service user
- */
-@Component(service = TransformationServiceUser.class)
-public class TransformationServiceUser {
-
-    public static final String SERVICE_USER = "sling-cms-transformer";
-
-    private ResourceResolverFactory resolverFactory;
-
-    public ResourceResolver getTransformationServiceUser() throws LoginException {
-        return resolverFactory
-                .getServiceResourceResolver(Collections.singletonMap(ResourceResolverFactory.SUBSERVICE, SERVICE_USER));
-    }
-
-    @Reference
-    public void setResolverFactory(ResourceResolverFactory resolverFactory) {
-        this.resolverFactory = resolverFactory;
-    }
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformerImpl.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformerImpl.java
deleted file mode 100644
index 1fb7477..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformerImpl.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.OutputFileFormat;
-import org.apache.sling.cms.transformer.ThumbnailProvider;
-import org.apache.sling.cms.transformer.Transformation;
-import org.apache.sling.cms.transformer.TransformationHandler;
-import org.apache.sling.cms.transformer.Transformer;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-import org.osgi.service.component.annotations.ReferenceCardinality;
-import org.osgi.service.component.annotations.ReferencePolicyOption;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.collect.Lists;
-
-import net.coobird.thumbnailator.Thumbnails;
-import net.coobird.thumbnailator.Thumbnails.Builder;
-
-@Component(service = Transformer.class)
-public class TransformerImpl implements Transformer {
-
-    private static final Logger log = LoggerFactory.getLogger(TransformerImpl.class);
-
-    @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policyOption = ReferencePolicyOption.GREEDY)
-    private List<TransformationHandler> handlers;
-
-    @Reference(cardinality = ReferenceCardinality.AT_LEAST_ONE, policyOption = ReferencePolicyOption.GREEDY)
-    private List<ThumbnailProvider> thumbnailProviders;
-
-    public void addThumbnailProvider(ThumbnailProvider thumbnailProvider) {
-        if (thumbnailProviders == null) {
-            thumbnailProviders = new ArrayList<>();
-        }
-        this.thumbnailProviders.add(thumbnailProvider);
-    }
-
-    public void addTransformationHandler(TransformationHandler handler) {
-        if (handlers == null) {
-            handlers = new ArrayList<>();
-        }
-        handlers.add(handler);
-    }
-
-    public List<TransformationHandler> getHandlers() {
-        return handlers;
-    }
-
-    private ThumbnailProvider getThumbnailProvider(Resource resource) throws IOException {
-        return Lists.reverse(thumbnailProviders).stream().filter(tp -> tp.applies(resource)).findFirst()
-                .orElseThrow(() -> new IOException("Unable to find thumbnail provider for: " + resource.getPath()));
-    }
-
-    /**
-     * @return the thumbnailProviders
-     */
-    public List<ThumbnailProvider> getThumbnailProviders() {
-        return thumbnailProviders;
-    }
-
-    public TransformationHandler getTransformationHandler(String resourceType) {
-        return handlers.stream().filter(h -> resourceType.equals(h.getResourceType())).findFirst().orElse(null);
-    }
-
-    @Override
-    public void transform(Resource resource, Transformation transformation, OutputFileFormat format, OutputStream out)
-            throws IOException {
-        ThumbnailProvider provider = getThumbnailProvider(resource);
-        log.debug("Using thumbnail provider {} for resource {}", provider, resource);
-        Builder<? extends InputStream> builder = Thumbnails.of(provider.getThumbnail(resource));
-        for (Resource config : transformation.getHandlers()) {
-            log.debug("Handling command: {}", config);
-            TransformationHandler handler = getTransformationHandler(config.getResourceType());
-            if (handler != null) {
-                log.debug("Invoking handler {} for command {}", handler.getClass().getCanonicalName(),
-                        config.getName());
-                handler.handle(builder, config);
-            } else {
-                log.info("No handler found for: {}", config.getName());
-            }
-        }
-        builder.outputFormat(format.toString());
-        builder.toOutputStream(out);
-
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformerWebConsole.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformerWebConsole.java
deleted file mode 100644
index 4422894..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/TransformerWebConsole.java
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.util.List;
-
-import javax.servlet.Servlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.felix.webconsole.AbstractWebConsolePlugin;
-import org.apache.felix.webconsole.WebConsoleConstants;
-import org.apache.sling.cms.transformer.ThumbnailProvider;
-import org.apache.sling.cms.transformer.TransformationHandler;
-import org.apache.sling.cms.transformer.Transformer;
-import org.osgi.framework.Constants;
-import org.osgi.service.component.annotations.Component;
-import org.osgi.service.component.annotations.Reference;
-
-import com.google.common.collect.Lists;
-
-/**
- * Simple web console plugin for listing out the registered thumbnail providers
- * and transformation handler
- */
-@Component(property = { Constants.SERVICE_DESCRIPTION + "=Web Console Plugin for Apache Sling CMS Transformer",
-        Constants.SERVICE_VENDOR + "=The Apache Software Foundation",
-        WebConsoleConstants.PLUGIN_LABEL + "=" + TransformerWebConsole.CONSOLE_LABEL,
-        WebConsoleConstants.PLUGIN_TITLE + "=" + TransformerWebConsole.CONSOLE_TITLE,
-        WebConsoleConstants.CONFIG_PRINTER_MODES + "=always",
-        WebConsoleConstants.PLUGIN_CATEGORY + "=Status" }, service = { Servlet.class })
-public class TransformerWebConsole extends AbstractWebConsolePlugin {
-
-    private static final long serialVersionUID = 4819043498961127418L;
-    public static final String CONSOLE_LABEL = "slingcms-transformer";
-    public static final String CONSOLE_TITLE = "Sling CMS Transformer";
-
-    @SuppressWarnings({ "squid:S2078", "squid:S2226" }) // ignore since this field is is injected by OSGi
-    @Reference
-    private transient Transformer transformer;
-
-    @Override
-    public String getTitle() {
-        return CONSOLE_TITLE;
-    }
-
-    @Override
-    public String getLabel() {
-        return CONSOLE_LABEL;
-    }
-
-    @Override
-    protected void renderContent(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse)
-            throws IOException {
-        PrintWriter pw = httpServletResponse.getWriter();
-        pw.println("<div id='content' class='ui-widget'><br>");
-        pw.println("<pre>");
-        pw.println("Registered Thumbnail Providers");
-        pw.println("========================");
-        List<ThumbnailProvider> providers = ((TransformerImpl) transformer).getThumbnailProviders();
-        Lists.reverse(providers).forEach(p -> pw.println(p.getClass().getName()));
-        pw.println("</pre><br/>");
-        pw.println("<pre>");
-        pw.println("Registered Transformation Handlers");
-        pw.println("========================");
-
-        List<TransformationHandler> handlers = ((TransformerImpl) transformer).getHandlers();
-        handlers.forEach(h -> pw.println(h.getResourceType() + "=" + h.getClass().getCanonicalName()));
-        pw.println("</pre>");
-        pw.println("</div>");
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/models/TransformationImpl.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/models/TransformationImpl.java
deleted file mode 100644
index 433ac67..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/models/TransformationImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal.models;
-
-import java.util.List;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.Transformation;
-import org.apache.sling.models.annotations.Model;
-import org.apache.sling.models.annotations.injectorspecific.ChildResource;
-import org.apache.sling.models.annotations.injectorspecific.ValueMapValue;
-
-@Model(adaptables = Resource.class, adapters = Transformation.class)
-public class TransformationImpl implements Transformation {
-
-    @ChildResource
-    private List<Resource> handlers;
-
-    @ValueMapValue
-    private String name;
-
-    @Override
-    public List<Resource> getHandlers() {
-        return handlers;
-    }
-
-    @Override
-    public String getName() {
-        return name;
-    }
-
-    public void sethandlers(List<Resource> handlers) {
-        this.handlers = handlers;
-    }
-
-    public void setName(String name) {
-        this.name = name;
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/models/TransformationManagerImpl.java b/transformer/src/main/java/org/apache/sling/cms/transformer/internal/models/TransformationManagerImpl.java
deleted file mode 100644
index 0458866..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/internal/models/TransformationManagerImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal.models;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.caconfig.resource.ConfigurationResourceResolver;
-import org.apache.sling.cms.transformer.Transformation;
-import org.apache.sling.cms.transformer.TransformationManager;
-import org.apache.sling.models.annotations.Model;
-import org.apache.sling.models.annotations.injectorspecific.OSGiService;
-
-@Model(adaptables = Resource.class, adapters = TransformationManager.class)
-public class TransformationManagerImpl implements TransformationManager {
-
-    private Resource resource;
-
-    @OSGiService
-    private ConfigurationResourceResolver configResourceResolver;
-
-    public TransformationManagerImpl(Resource resource) {
-        this.resource = resource;
-    }
-
-    @Override
-    public List<Transformation> getTransformations() {
-        Collection<Resource> transformationResources = configResourceResolver.getResourceCollection(resource, "files",
-                "transformations");
-        return transformationResources.stream().map(r -> r.adaptTo(Transformation.class)).collect(Collectors.toList());
-    }
-
-}
diff --git a/transformer/src/main/java/org/apache/sling/cms/transformer/package-info.java b/transformer/src/main/java/org/apache/sling/cms/transformer/package-info.java
deleted file mode 100644
index 0594c64..0000000
--- a/transformer/src/main/java/org/apache/sling/cms/transformer/package-info.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-
-/**
- * Package with all of the common models used to access content in the Sling
- * reference CMS
- *
- * @since 0.10.0
- */
-@org.osgi.annotation.versioning.Version("1.0.0")
-package org.apache.sling.cms.transformer;
diff --git a/transformer/src/main/resources/OSGI-INF/l10n/bundle.properties b/transformer/src/main/resources/OSGI-INF/l10n/bundle.properties
deleted file mode 100644
index 8e4e008..0000000
--- a/transformer/src/main/resources/OSGI-INF/l10n/bundle.properties
+++ /dev/null
@@ -1,35 +0,0 @@
-#
-#  Licensed to the Apache Software Foundation (ASF) under one
-#  or more contributor license agreements.  See the NOTICE file
-#  distributed with this work for additional information
-#  regarding copyright ownership.  The ASF licenses this file
-#  to you 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.
-#
-
-#
-# This file contains localization strings for configuration labels and
-# descriptions as used in the metatype.xml descriptor generated by the
-# the Sling SCR plugin
-
-## Transformation Servlet Entries
-transformservlet.name=Apache Sling CMS - Transform Servlet
-transformservlet.description=Servlet for transforming files into image renditions
-
-transformservlet.errorResourcePath.name=Error Resource Path
-transformservlet.errorResourcePath.name.description=The path of the resource to forward \
-if an error occurs transforming the provided resource
-
-transformservlet.errorSuffix.name=Error Suffix
-transformservlet.errorSuffix.name.description=The suffix to forward to \
-if an error occurs transforming the provided resource
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/helpers/SlingCMSContextHelper.java b/transformer/src/test/java/org/apache/sling/cms/transformer/helpers/SlingCMSContextHelper.java
deleted file mode 100644
index a0acb90..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/helpers/SlingCMSContextHelper.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.helpers;
-
-import java.io.InputStream;
-import java.util.function.Function;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
-
-public class SlingCMSContextHelper {
-
-    public static final void initContext(SlingContext context) {
-        context.addModelsForPackage("org.apache.sling.cms.core.internal.models");
-        context.addModelsForPackage("org.apache.sling.cms.core.models");
-
-        context.load().json("/content.json", "/content");
-        context.load().binaryResource("/apache.png", "/content/apache/sling-apache-org/index/apache.png/jcr:content");
-        context.load().binaryResource("/sling.pdf", "/content/apache/sling-apache-org/index/sling.pdf/jcr:content");
-        context.load().binaryResource("/Sling.docx", "/content/apache/sling-apache-org/index/Sling.docx/jcr:content");
-        context.load().binaryResource("/Sling.pptx", "/content/apache/sling-apache-org/index/Sling.pptx/jcr:content");
-        context.load().binaryResource("/Sling.ppt", "/content/apache/sling-apache-org/index/Sling.ppt/jcr:content");
-        context.load().binaryResource("/editor.min.css", "/content/apache/sling-apache-org/index/editor.min.css/jcr:content");
-
-        context.registerAdapter(Resource.class, InputStream.class, new Function<Resource, InputStream>() {
-            public InputStream apply(Resource input) {
-                return input.getValueMap().get("jcr:content/jcr:data", InputStream.class);
-            }
-        });
-
-    }
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/CropHandlerTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/CropHandlerTest.java
deleted file mode 100644
index 7f043ce..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/CropHandlerTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Collections;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.testing.resourceresolver.MockResource;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import net.coobird.thumbnailator.Thumbnails;
-import net.coobird.thumbnailator.Thumbnails.Builder;
-
-public class CropHandlerTest {
-
-    private Builder<? extends InputStream> builder;
-    private CropHandler cropper;
-
-    @Before
-    public void init() {
-        builder = Thumbnails.of(getClass().getClassLoader().getResourceAsStream("apache.png"));
-        builder.size(200, 200);
-        cropper = new CropHandler();
-    }
-
-    @Test
-    public void testCrop() throws IOException {
-        Resource config = new MockResource("/conf", Collections.singletonMap(CropHandler.PN_POSITION, "CENTER"),
-                Mockito.mock(ResourceResolver.class));
-        cropper.handle(builder, config);
-        assertNotNull(builder.asBufferedImage());
-    }
-
-    @Test
-    public void testCropLower() throws IOException {
-
-        Resource config = new MockResource("/conf", Collections.singletonMap(CropHandler.PN_POSITION, "center"),
-                Mockito.mock(ResourceResolver.class));
-        cropper.handle(builder, config);
-        assertNotNull(builder.asBufferedImage());
-    }
-
-    @Test
-    public void testInvalidParam() throws IOException {
-        try {
-
-            Resource config = new MockResource("/conf", Collections.singletonMap(CropHandler.PN_POSITION, "centerz"),
-                    Mockito.mock(ResourceResolver.class));
-            cropper.handle(builder, config);
-            fail();
-        } catch (IOException e) {
-        }
-    }
-
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/ImageThumbnailProviderTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/ImageThumbnailProviderTest.java
deleted file mode 100644
index 05e85c6..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/ImageThumbnailProviderTest.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.helpers.SlingCMSContextHelper;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ImageThumbnailProviderTest {
-
-    private static final Logger log = LoggerFactory.getLogger(ImageThumbnailProviderTest.class);
-
-    @Rule
-    public final SlingContext context = new SlingContext();
-
-    private Resource imageFile;
-    private Resource pdfFile;
-
-    @Before
-    public void init() {
-        SlingCMSContextHelper.initContext(context);
-
-        imageFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/apache.png");
-
-        pdfFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/sling.pdf");
-    }
-
-    @Test
-    public void testContentTypes() throws IOException {
-        log.info("testContentTypes");
-        ImageThumbnailProvider itp = new ImageThumbnailProvider();
-
-        assertTrue(itp.applies(imageFile));
-        assertFalse(itp.applies(pdfFile));
-    }
-
-    @Test
-    public void testImageThumbnailProvider() throws IOException {
-        log.info("testImageThumbnailProvider");
-        ImageThumbnailProvider itp = new ImageThumbnailProvider();
-
-        assertNotNull(itp.getThumbnail(imageFile));
-        assertArrayEquals(IOUtils.toByteArray(getClass().getClassLoader().getResourceAsStream("apache.png")),
-                IOUtils.toByteArray(itp.getThumbnail(imageFile)));
-    }
-
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/PdfThumbnailProviderTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/PdfThumbnailProviderTest.java
deleted file mode 100644
index 2bf6f4a..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/PdfThumbnailProviderTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.helpers.SlingCMSContextHelper;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PdfThumbnailProviderTest {
-
-    private static final Logger log = LoggerFactory.getLogger(PdfThumbnailProviderTest.class);
-
-    @Rule
-    public final SlingContext context = new SlingContext();
-
-    private Resource imageFile;
-    private Resource pdfFile;
-
-    @Before
-    public void init() {
-        SlingCMSContextHelper.initContext(context);
-        imageFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/apache.png");
-        pdfFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/sling.pdf");
-    }
-
-    @Test
-    public void testContentTypes() throws IOException {
-        log.info("testContentTypes");
-        PdfThumbnailProvider ptp = new PdfThumbnailProvider();
-        assertFalse(ptp.applies(imageFile));
-        assertTrue(ptp.applies(pdfFile));
-    }
-
-    @Test
-    public void testPDFThumbnailProvider() throws IOException {
-        log.info("testPDFThumbnailProvider");
-        PdfThumbnailProvider ptp = new PdfThumbnailProvider();
-        assertNotNull(ptp.getThumbnail(pdfFile));
-    }
-
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/SizeHandlerTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/SizeHandlerTest.java
deleted file mode 100644
index 55e2d51..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/SizeHandlerTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.HashMap;
-import java.util.Map;
-
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.testing.resourceresolver.MockResource;
-import org.junit.Before;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-import net.coobird.thumbnailator.Thumbnails;
-import net.coobird.thumbnailator.Thumbnails.Builder;
-
-public class SizeHandlerTest {
-
-    private Builder<? extends InputStream> builder;
-    private SizeHandler sizer;
-
-    @Before
-    public void init() {
-        builder = Thumbnails.of(getClass().getClassLoader().getResourceAsStream("apache.png"));
-        sizer = new SizeHandler();
-    }
-
-    @Test
-    public void testResize() throws IOException {
-
-        Map<String, Object> config = new HashMap<>();
-        config.put(SizeHandler.PN_WIDTH, 200);
-        config.put(SizeHandler.PN_HEIGHT, 200);
-        sizer.handle(builder, new MockResource("/conf", config, Mockito.mock(ResourceResolver.class)));
-        assertNotNull(builder.asBufferedImage());
-    }
-
-    @Test
-    public void testInvalidWidth() throws IOException {
-        try {
-            Map<String, Object> config = new HashMap<>();
-            config.put(SizeHandler.PN_WIDTH, "K");
-            config.put(SizeHandler.PN_HEIGHT, 200);
-            sizer.handle(builder, new MockResource("/conf", config, Mockito.mock(ResourceResolver.class)));
-            fail();
-        } catch (IOException | IllegalArgumentException e) {
-        }
-    }
-
-    @Test
-    public void testInvalidHeight() throws IOException {
-        try {
-            Map<String, Object> config = new HashMap<>();
-            config.put(SizeHandler.PN_WIDTH, 200);
-            config.put(SizeHandler.PN_HEIGHT, "h");
-            sizer.handle(builder, new MockResource("/conf", config, Mockito.mock(ResourceResolver.class)));
-            fail();
-        } catch (IOException | IllegalArgumentException e) {
-        }
-    }
-
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/SlideShowThumbnailProviderTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/SlideShowThumbnailProviderTest.java
deleted file mode 100644
index e4a059b..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/SlideShowThumbnailProviderTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.ThumbnailProvider;
-import org.apache.sling.cms.transformer.helpers.SlingCMSContextHelper;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SlideShowThumbnailProviderTest {
-
-    private static final Logger log = LoggerFactory.getLogger(SlideShowThumbnailProviderTest.class);
-
-    @Rule
-    public final SlingContext context = new SlingContext();
-
-    private Resource docxFile;
-    private Resource pptFile;
-    private Resource pptxFile;
-
-    private ThumbnailProvider provider;
-
-    @Before
-    public void init() {
-        SlingCMSContextHelper.initContext(context);
-        docxFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/Sling.docx");
-        pptxFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/Sling.pptx");
-        pptFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/Sling.ppt");
-        provider = new SlideShowThumbnailProvider();
-    }
-
-    @Test
-    public void testApplies() throws IOException {
-        log.info("testApplies");
-        assertTrue(provider.applies(pptxFile));
-        assertTrue(provider.applies(pptFile));
-        assertFalse(provider.applies(docxFile));
-    }
-
-    @Test
-    public void testGetThumbnail() throws IOException {
-        log.info("testGetThumbnail");
-        assertNotNull(provider.getThumbnail(pptxFile));
-        assertNotNull(provider.getThumbnail(pptFile));
-    }
-
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TikaFallbackProviderTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TikaFallbackProviderTest.java
deleted file mode 100644
index 73330c4..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TikaFallbackProviderTest.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.io.IOException;
-
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.cms.transformer.helpers.SlingCMSContextHelper;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TikaFallbackProviderTest {
-
-    private static final Logger log = LoggerFactory.getLogger(TikaFallbackProviderTest.class);
-
-    @Rule
-    public final SlingContext context = new SlingContext();
-
-    private Resource docxFile;
-
-    private Resource largeFile;
-
-    @Before
-    public void init() {
-        SlingCMSContextHelper.initContext(context);
-        docxFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/Sling.docx");
-        largeFile = context.resourceResolver().getResource("/content/apache/sling-apache-org/index/editor.min.css");
-    }
-
-    @Test
-    public void testTikaProvider() throws IOException {
-        log.info("testTikaProvider");
-        TikaFallbackProvider tfp = new TikaFallbackProvider();
-        assertNotNull(tfp.getThumbnail(docxFile));
-    }
-
-
-    @Test
-    public void testLargeFile() throws IOException {
-        log.info("testLargeFile");
-        TikaFallbackProvider tfp = new TikaFallbackProvider();
-        assertNotNull(tfp.getThumbnail(largeFile));
-    }
-
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TransformServletTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TransformServletTest.java
deleted file mode 100644
index 11999f2..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TransformServletTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.ServletException;
-
-import org.apache.sling.api.resource.LoginException;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.api.resource.ResourceResolverFactory;
-import org.apache.sling.cms.transformer.helpers.SlingCMSContextHelper;
-import org.apache.sling.cms.transformer.internal.models.TransformationImpl;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.apache.sling.testing.resourceresolver.MockResource;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class TransformServletTest {
-
-    private static final Logger log = LoggerFactory.getLogger(TransformServletTest.class);
-
-    private TransformServlet ts = new TransformServlet();
-
-    @Rule
-    public final SlingContext context = new SlingContext();
-
-    @Before
-    public void init() throws IllegalAccessException, LoginException {
-        SlingCMSContextHelper.initContext(context);
-
-        ResourceResolverFactory factory = Mockito.mock(ResourceResolverFactory.class);
-        ResourceResolver resolver = Mockito.mock(ResourceResolver.class);
-
-        TransformationImpl transformation = new TransformationImpl();
-        List<Resource> handlers = new ArrayList<>();
-        Map<String, Object> size = new HashMap<>();
-        size.put(SizeHandler.PN_WIDTH, 200);
-        size.put(SizeHandler.PN_HEIGHT, 200);
-        size.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, "sling-cms/components/caconfig/transformationhandlers/size");
-        handlers.add(new MockResource("/conf", size, Mockito.mock(ResourceResolver.class)));
-
-        Map<String, Object> crop = new HashMap<>();
-        crop.put(CropHandler.PN_POSITION, "center");
-        crop.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, "sling-cms/components/caconfig/transformationhandlers/crop");
-        handlers.add(new MockResource("/conf", crop, Mockito.mock(ResourceResolver.class)));
-
-        transformation.sethandlers(handlers);
-
-        Mockito.when(resolver.findResources(Mockito.anyString(), Mockito.anyString())).thenAnswer((ans) -> {
-            List<Resource> resources = new ArrayList<>();
-            if (ans.getArgument(0, String.class).contains("test'")) {
-                Resource resource = Mockito.mock(Resource.class);
-                Mockito.when(resource.adaptTo(Mockito.any())).thenReturn(transformation);
-                resources.add(resource);
-            }
-            return resources.iterator();
-        });
-
-        Mockito.when(factory.getServiceResourceResolver(Mockito.any())).thenReturn(resolver);
-        TransformationServiceUser tsu = new TransformationServiceUser();
-        tsu.setResolverFactory(factory);
-        ts.setTransformationServiceUser(tsu);
-
-        TransformerImpl transformer = new TransformerImpl();
-        ((TransformerImpl) transformer).addTransformationHandler(new CropHandler() {
-            public String getResourceType() {
-                return "sling-cms/components/caconfig/transformationhandlers/crop";
-            }
-        });
-        ((TransformerImpl) transformer).addTransformationHandler(new SizeHandler() {
-            public String getResourceType() {
-                return "sling-cms/components/caconfig/transformationhandlers/size";
-            }
-        });
-
-        ((TransformerImpl) transformer).addThumbnailProvider(new ImageThumbnailProvider());
-        ((TransformerImpl) transformer).addThumbnailProvider(new PdfThumbnailProvider());
-
-        ts.setTransformer(transformer);
-
-    }
-
-    @Test
-    public void testValid() throws IOException, ServletException {
-        log.info("testContentTypes");
-
-        context.currentResource("/content/apache/sling-apache-org/index/apache.png");
-        context.requestPathInfo().setSuffix("/test.png");
-        context.requestPathInfo().setExtension("transform");
-
-        ts.doGet(context.request(), context.response());
-
-        assertNotNull(context.response().getOutput());
-    }
-
-    @Test
-    public void testInvalid() throws IOException, ServletException {
-        log.info("testContentTypes");
-
-        context.currentResource("/content/apache/sling-apache-org/index/apache.png");
-        context.requestPathInfo().setSuffix("/test2.png");
-        context.requestPathInfo().setExtension("transform");
-
-        ts.doGet(context.request(), context.response());
-
-        assertEquals(400, context.response().getStatus());
-    }
-
-}
diff --git a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TransformerImplTest.java b/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TransformerImplTest.java
deleted file mode 100644
index aa6b4d3..0000000
--- a/transformer/src/test/java/org/apache/sling/cms/transformer/internal/TransformerImplTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-package org.apache.sling.cms.transformer.internal;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.poi.util.IOUtils;
-import org.apache.sling.api.resource.Resource;
-import org.apache.sling.api.resource.ResourceResolver;
-import org.apache.sling.cms.transformer.OutputFileFormat;
-import org.apache.sling.cms.transformer.Transformer;
-import org.apache.sling.cms.transformer.helpers.SlingCMSContextHelper;
-import org.apache.sling.cms.transformer.internal.models.TransformationImpl;
-import org.apache.sling.testing.mock.sling.junit.SlingContext;
-import org.apache.sling.testing.resourceresolver.MockResource;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-public class TransformerImplTest {
-    @Rule
-    public final SlingContext context = new SlingContext();
-    private Transformer transformer;
-
-    @Before
-    public void init() {
-        SlingCMSContextHelper.initContext(context);
-        transformer = new TransformerImpl();
-
-        ((TransformerImpl) transformer).addTransformationHandler(new CropHandler() {
-            public String getResourceType() {
-                return "sling-cms/components/caconfig/transformationhandlers/crop";
-            }
-        });
-        ((TransformerImpl) transformer).addTransformationHandler(new SizeHandler() {
-            public String getResourceType() {
-                return "sling-cms/components/caconfig/transformationhandlers/size";
-            }
-        });
-
-        ((TransformerImpl) transformer).addThumbnailProvider(new ImageThumbnailProvider());
-        ((TransformerImpl) transformer).addThumbnailProvider(new PdfThumbnailProvider());
-    }
-
-    @Test
-    public void testImageThumbnail() throws IOException {
-        context.currentResource("/content/apache/sling-apache-org/index/apache.png");
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        TransformationImpl transformation = new TransformationImpl();
-        List<Resource> handlers = new ArrayList<>();
-
-        Map<String, Object> size = new HashMap<>();
-        size.put(SizeHandler.PN_WIDTH, 200);
-        size.put(SizeHandler.PN_HEIGHT, 200);
-        size.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, "sling-cms/components/caconfig/transformationhandlers/size");
-        handlers.add(new MockResource("/conf", size, Mockito.mock(ResourceResolver.class)));
-
-        Map<String, Object> crop = new HashMap<>();
-        crop.put(CropHandler.PN_POSITION, "center");
-        crop.put(ResourceResolver.PROPERTY_RESOURCE_TYPE, "sling-cms/components/caconfig/transformationhandlers/crop");
-        handlers.add(new MockResource("/conf", crop, Mockito.mock(ResourceResolver.class)));
-
-        transformation.sethandlers(handlers);
-        transformer.transform(context.currentResource(), transformation, OutputFileFormat.PNG, baos);
-        assertNotNull(baos);
-
-        IOUtils.copy(new ByteArrayInputStream(baos.toByteArray()), new File("src/test/resources/thumbnail.png"));
-    }
-
-}
diff --git a/transformer/src/test/resources/Sling.docx b/transformer/src/test/resources/Sling.docx
deleted file mode 100644
index 73fba2a..0000000
--- a/transformer/src/test/resources/Sling.docx
+++ /dev/null
Binary files differ
diff --git a/transformer/src/test/resources/Sling.ppt b/transformer/src/test/resources/Sling.ppt
deleted file mode 100644
index 0e9a6d3..0000000
--- a/transformer/src/test/resources/Sling.ppt
+++ /dev/null
Binary files differ
diff --git a/transformer/src/test/resources/Sling.pptx b/transformer/src/test/resources/Sling.pptx
deleted file mode 100644
index 8ed0a34..0000000
--- a/transformer/src/test/resources/Sling.pptx
+++ /dev/null
Binary files differ
diff --git a/transformer/src/test/resources/apache.png b/transformer/src/test/resources/apache.png
deleted file mode 100644
index fc3f667..0000000
--- a/transformer/src/test/resources/apache.png
+++ /dev/null
Binary files differ
diff --git a/transformer/src/test/resources/content.json b/transformer/src/test/resources/content.json
deleted file mode 100644
index 3591ef7..0000000
--- a/transformer/src/test/resources/content.json
+++ /dev/null
@@ -1,115 +0,0 @@
-{
-    "jcr:primaryType": "sling:OrderedFolder",
-    "jcr:mixinTypes": [
-        "rep:AccessControllable"
-    ],
-    "jcr:createdBy": "admin",
-    "jcr:created": "Wed May 15 2019 12:39:57 GMT-0400",
-    "rep:policy": {
-        "jcr:primaryType": "rep:ACL",
-        "allow": {
-            "jcr:primaryType": "rep:GrantACE",
-            "rep:principalName": "authors",
-            "rep:privileges": [
-                "jcr:versionManagement",
-                "rep:write"
-            ]
-        },
-        "allow1": {
-            "jcr:primaryType": "rep:GrantACE",
-            "rep:principalName": "sling-cms-metadata",
-            "rep:privileges": [
-                "jcr:versionManagement",
-                "rep:write"
-            ]
-        },
-        "allow2": {
-            "jcr:primaryType": "rep:GrantACE",
-            "rep:principalName": "sling-cms-versionmgr",
-            "rep:privileges": [
-                "jcr:versionManagement",
-                "rep:write"
-            ]
-        },
-        "allow3": {
-            "jcr:primaryType": "rep:GrantACE",
-            "rep:principalName": "everyone",
-            "rep:privileges": [
-                "jcr:read"
-            ]
-        }
-    },
-    "apache": {
-        "jcr:primaryType": "sling:OrderedFolder",
-        "jcr:createdBy": "admin",
-        "sling:configRef": "/conf/global",
-        "jcr:created": "Wed May 15 2019 12:40:00 GMT-0400",
-        "jcr:content": {
-            "jcr:primaryType": "nt:unstructured",
-            "jcr:title": "Apache Software Foundation"
-        },
-        "sling-apache-org": {
-            "jcr:primaryType": "sling:Site",
-            "jcr:createdBy": "admin",
-            "jcr:title": "Apache Sling",
-            "jcr:language": "en",
-            "sling:url": "https://sling.apache.org",
-            "jcr:created": "Wed May 15 2019 12:40:00 GMT-0400",
-            "index": {
-                "jcr:primaryType": "sling:Page",
-                "jcr:mixinTypes": [
-                    "mix:versionable"
-                ],
-                "jcr:createdBy": "admin",
-                "jcr:versionHistory": "87458e80-83b8-46ee-a5d8-3e39c2f07c10",
-                "jcr:predecessors": [],
-                "jcr:created": "Wed May 15 2019 12:40:00 GMT-0400",
-                "jcr:baseVersion": "9ddd2472-9a0e-4fcb-8a2d-72f0b3f40d61",
-                "jcr:isCheckedOut": false,
-                "jcr:uuid": "fd5c6000-b3b9-44a2-88a0-1c8e13d7c1a7",
-                "jcr:content": {
-                    "jcr:primaryType": "nt:unstructured",
-                    "jcr:title": "Apache Sling - Bringing Back the Fun!",
-                    "jcr:lastModifiedBy": "admin",
-                    "sling:template": "/conf/global/site/templates/base-page",
-                    "sling:taxonomy": "/etc/taxonomy/reference/community",
-                    "jcr:lastModified": "Wed May 15 2019 14:05:46 GMT-0400",
-                    "sling:resourceType": "reference/components/pages/base",
-                    "published": true,
-                    "hideInSitemap": false,
-                    "container": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "richtext": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "text": "<p>Apache Sling(TM) is a framework for RESTful web-applications based on an extensible content tree.</p>\r\n<p>In a nutshell, Sling maps HTTP request URLs to content resources based on the request's path, extension and selectors. Using convention over configuration, requests are processed by scripts and servlets, dynamically selected based on the current resource. This fosters meaningful URLs and resource driven request processing, while the modular nature of Sling allows for specialized server instances that include dude only what is needed.</p>\r\n<p>Sling serves as basis for a variety of applications ranging from blogging engines all the way to enterprise content management systems.</p>\r\n<p>Our <a href=\"#\">Getting Started</a> page will help you start playing with Sling.</p>\r\n<p>Discussions about Sling happen on our mailing lists, see our <a href=\"#\">Project Information</a> page for more info.</p>\r\n",
-                            "sling:resourceType": "sling-cms/components/general/richtext"
-                        }
-                    },
-                    "menu": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "richtext": {
-                            "jcr:primaryType": "nt:unstructured",
-                            "text": "<p>\r\n                <strong><a href=\"#\">Documentation</a></strong><br>\r\n                <a href=\"#\">Getting Started</a><br>\r\n                <a href=\"#\">The Sling Engine</a><br>\r\n                <a href=\"#\">Development</a><br>\r\n                <a href=\"#\">Bundles</a><br>\r\n                <a href=\"#\">Tutorials &amp; How-Tos</a><br>\r\n                <a href=\"http://sling.apache.org/components/\">Maven Plugins</a><br>\r\n                <a href=\"#\">Configuration</a>\r\n                \r\n            </p><p>\r\n                <a href=\"http://s.apache.org/sling.wiki\">Wiki</a><br>\r\n                <a href=\"http://s.apache.org/sling.faq\">FAQ</a><br>\r\n                \r\n            </p><p>\r\n                <strong>API Docs</strong><br>\r\n                <a href=\"#\">Sling 10</a><br>\r\n                <a href=\"#\">Sling 9</a><br>\r\n                <a href=\"#\">All versions</a><br>\r\n                \r\n            </p><p>\r\n                <strong>Project Info</strong><br>\r\n                <a href=\"#\">Downloads</a><br>\r\n                <a href=\"http://www.apache.org/licenses/\">License</a><br>\r\n                <a href=\"#\">News</a><br>\r\n                <a href=\"#\">Releases</a><br>\r\n                <a href=\"https://issues.apache.org/jira/browse/SLING\">Issue Tracker</a><br>\r\n                <a href=\"#\">Links</a><br>\r\n                <a href=\"#\">Contributing</a><br>\r\n                <a href=\"#\">Project Information</a><br>\r\n                <a href=\"#\">Security</a><br>\r\n                \r\n            </p><p>\r\n                <strong>Source</strong><br>\r\n                <a href=\"https://github.com/apache/?utf8=%E2%9C%93&amp;q=sling\">GitHub</a><br>\r\n                <a href=\"https://gitbox.apache.org/repos/asf?s=sling\">Git at Apache</a><br>\r\n                \r\n            </p><p>\r\n                <strong><a href=\"#\">Site Map</a></strong>\r\n            </p><p>\r\n                <strong>Apache Software Foundation</strong><br>\r\n                <a href=\"http://www.apache.org/foundation/thanks.html\">Thanks!</a><br>\r\n                <a href=\"http://www.apache.org/foundation/sponsorship.html\">Become a Sponsor</a><br>\r\n                <a href=\"http://www.apache.org/foundation/buy_stuff.html\">Buy Stuff</a><br>\r\n                <a href=\"https://www.apache.org/events/current-event.html\">\r\n                    <img alt=\"Current ASF Events\" src=\"https://www.apache.org/events/current-event-125x125.png\" width=\"125px\" border=\"0\">\r\n                </a><a href=\"http://apache.org/foundation/contributing.html\">\r\n                    <img alt=\"Support the Apache Software Foundation!\" src=\"/res/images/SupportApache-small.png\" width=\"125px\" border=\"0\">\r\n                </a>\r\n            </p>",
-                            "sling:resourceType": "sling-cms/components/general/richtext"
-                        }
-                    }
-                },
-                "apache.png": {
-                    "jcr:primaryType": "nt:file"
-                },
-                "sling.pdf": {
-                    "jcr:primaryType": "sling:File"
-                },
-                "Sling.docx": {
-                    "jcr:primaryType": "sling:File"
-                },
-                "Sling.pptx": {
-                    "jcr:primaryType": "sling:File"
-                },
-                "Sling.ppt": {
-                    "jcr:primaryType": "sling:File"
-                }
-            }
-        }
-    }
-}
\ No newline at end of file
diff --git a/transformer/src/test/resources/editor.min.css b/transformer/src/test/resources/editor.min.css
deleted file mode 100644
index 8d051e5..0000000
--- a/transformer/src/test/resources/editor.min.css
+++ /dev/null
@@ -1,2854 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-.sling-cms-editor {
-  /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-  /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.
- */
-  /*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */
-  font-family: "Open Sans",sans-serif; }
-
-@font-face {
-  .sling-cms-editor {
-    font-family: 'Open Sans';
-    src: url("../fonts/OpenSans-Light-webfont.woff") format("woff");
-    font-weight: 300;
-    font-style: normal;
-    font-display: fallback; } }
-
-@font-face {
-  .sling-cms-editor {
-    font-family: 'Open Sans';
-    src: url("../fonts/OpenSans-Regular-webfont.woff") format("woff");
-    font-weight: 400;
-    font-style: normal;
-    font-display: fallback; } }
-
-@font-face {
-  .sling-cms-editor {
-    font-family: 'Open Sans';
-    src: url("../fonts/OpenSans-Semibold-webfont.woff") format("woff");
-    font-weight: 600;
-    font-style: normal;
-    font-display: fallback; } }
-
-@font-face {
-  .sling-cms-editor {
-    font-family: 'Open Sans';
-    src: url("../fonts/OpenSans-Bold-webfont.woff") format("woff");
-    font-weight: 700;
-    font-style: normal;
-    font-display: fallback; } }
-
-@keyframes spinAround {
-  from {
-    transform: rotate(0deg); }
-  to {
-    transform: rotate(359deg); } }
-  .sling-cms-editor .modal-close, .sling-cms-editor .is-unselectable, .sling-cms-editor .button, .sling-cms-editor .file {
-    -webkit-touch-callout: none;
-    -webkit-user-select: none;
-    -moz-user-select: none;
-    -ms-user-select: none;
-    user-select: none; }
-  .sling-cms-editor .select:not(.is-multiple):not(.is-loading)::after {
-    border: 3px solid transparent;
-    border-radius: 2px;
-    border-right: 0;
-    border-top: 0;
-    content: " ";
-    display: block;
-    height: 0.625em;
-    margin-top: -0.4375em;
-    pointer-events: none;
-    position: absolute;
-    top: 50%;
-    transform: rotate(-45deg);
-    transform-origin: center;
-    width: 0.625em; }
-  .sling-cms-editor .box:not(:last-child), .sling-cms-editor .level:not(:last-child) {
-    margin-bottom: 1.5rem; }
-  .sling-cms-editor .modal-close {
-    -moz-appearance: none;
-    -webkit-appearance: none;
-    background-color: rgba(10, 10, 10, 0.2);
-    border: none;
-    border-radius: 290486px;
-    cursor: pointer;
-    pointer-events: auto;
-    display: inline-block;
-    flex-grow: 0;
-    flex-shrink: 0;
-    font-size: 0;
-    height: 20px;
-    max-height: 20px;
-    max-width: 20px;
-    min-height: 20px;
-    min-width: 20px;
-    outline: none;
-    position: relative;
-    vertical-align: top;
-    width: 20px; }
-    .sling-cms-editor .modal-close::before, .sling-cms-editor .modal-close::after {
-      background-color: white;
-      content: "";
-      display: block;
-      left: 50%;
-      position: absolute;
-      top: 50%;
-      transform: translateX(-50%) translateY(-50%) rotate(45deg);
-      transform-origin: center center; }
-    .sling-cms-editor .modal-close::before {
-      height: 2px;
-      width: 50%; }
-    .sling-cms-editor .modal-close::after {
-      height: 50%;
-      width: 2px; }
-    .sling-cms-editor .modal-close:hover, .sling-cms-editor .modal-close:focus {
-      background-color: rgba(10, 10, 10, 0.3); }
-    .sling-cms-editor .modal-close:active {
-      background-color: rgba(10, 10, 10, 0.4); }
-    .sling-cms-editor .is-small.modal-close {
-      height: 16px;
-      max-height: 16px;
-      max-width: 16px;
-      min-height: 16px;
-      min-width: 16px;
-      width: 16px; }
-    .sling-cms-editor .is-medium.modal-close {
-      height: 24px;
-      max-height: 24px;
-      max-width: 24px;
-      min-height: 24px;
-      min-width: 24px;
-      width: 24px; }
-    .sling-cms-editor .is-large.modal-close {
-      height: 32px;
-      max-height: 32px;
-      max-width: 32px;
-      min-height: 32px;
-      min-width: 32px;
-      width: 32px; }
-  .sling-cms-editor .button.is-loading::after, .sling-cms-editor .select.is-loading::after, .sling-cms-editor .control.is-loading::after {
-    animation: spinAround 500ms infinite linear;
-    border: 2px solid #dbdbdb;
-    border-radius: 290486px;
-    border-right-color: transparent;
-    border-top-color: transparent;
-    content: "";
-    display: block;
-    height: 1em;
-    position: relative;
-    width: 1em; }
-  .sling-cms-editor .is-overlay, .sling-cms-editor .modal, .sling-cms-editor .modal-background {
-    bottom: 0;
-    left: 0;
-    position: absolute;
-    right: 0;
-    top: 0; }
-  .sling-cms-editor .button, .sling-cms-editor .input, .sling-cms-editor .textarea, .sling-cms-editor .select select, .sling-cms-editor .file-cta,
-  .sling-cms-editor .file-name {
-    -moz-appearance: none;
-    -webkit-appearance: none;
-    align-items: center;
-    border: 1px solid transparent;
-    border-radius: 4px;
-    box-shadow: none;
-    display: inline-flex;
-    font-size: 1rem;
-    height: 2.5em;
-    justify-content: flex-start;
-    line-height: 1.5;
-    padding-bottom: calc(0.5em - 1px);
-    padding-left: calc(0.75em - 1px);
-    padding-right: calc(0.75em - 1px);
-    padding-top: calc(0.5em - 1px);
-    position: relative;
-    vertical-align: top; }
-    .sling-cms-editor .button:focus, .sling-cms-editor .input:focus, .sling-cms-editor .textarea:focus, .sling-cms-editor .select select:focus, .sling-cms-editor .file-cta:focus,
-    .sling-cms-editor .file-name:focus, .sling-cms-editor .is-focused.button, .sling-cms-editor .is-focused.input, .sling-cms-editor .is-focused.textarea, .sling-cms-editor .select select.is-focused, .sling-cms-editor .is-focused.file-cta,
-    .sling-cms-editor .is-focused.file-name, .sling-cms-editor .button:active, .sling-cms-editor .input:active, .sling-cms-editor .textarea:active, .sling-cms-editor .select select:active, .sling-cms-editor .file-cta:active,
-    .sling-cms-editor .file-name:active, .sling-cms-editor .is-active.button, .sling-cms-editor .is-active.input, .sling-cms-editor .is-active.textarea, .sling-cms-editor .select select.is-active, .sling-cms-editor .is-active.file-cta,
-    .sling-cms-editor .is-active.file-name {
-      outline: none; }
-    .sling-cms-editor .button[disabled], .sling-cms-editor .input[disabled], .sling-cms-editor .textarea[disabled], .sling-cms-editor .select select[disabled], .sling-cms-editor .file-cta[disabled],
-    .sling-cms-editor .file-name[disabled],
-    fieldset[disabled] .sling-cms-editor .button,
-    fieldset[disabled] .sling-cms-editor .input,
-    fieldset[disabled] .sling-cms-editor .textarea,
-    fieldset[disabled] .sling-cms-editor .select select,
-    fieldset[disabled] .sling-cms-editor .file-cta,
-    fieldset[disabled] .sling-cms-editor .file-name {
-      cursor: not-allowed; }
-  .sling-cms-editor html,
-  .sling-cms-editor body,
-  .sling-cms-editor p,
-  .sling-cms-editor ol,
-  .sling-cms-editor ul,
-  .sling-cms-editor li,
-  .sling-cms-editor dl,
-  .sling-cms-editor dt,
-  .sling-cms-editor dd,
-  .sling-cms-editor blockquote,
-  .sling-cms-editor figure,
-  .sling-cms-editor fieldset,
-  .sling-cms-editor legend,
-  .sling-cms-editor textarea,
-  .sling-cms-editor pre,
-  .sling-cms-editor iframe,
-  .sling-cms-editor hr,
-  .sling-cms-editor h1,
-  .sling-cms-editor h2,
-  .sling-cms-editor h3,
-  .sling-cms-editor h4,
-  .sling-cms-editor h5,
-  .sling-cms-editor h6 {
-    margin: 0;
-    padding: 0; }
-  .sling-cms-editor h1,
-  .sling-cms-editor h2,
-  .sling-cms-editor h3,
-  .sling-cms-editor h4,
-  .sling-cms-editor h5,
-  .sling-cms-editor h6 {
-    font-size: 100%;
-    font-weight: normal; }
-  .sling-cms-editor ul {
-    list-style: none; }
-  .sling-cms-editor button,
-  .sling-cms-editor input,
-  .sling-cms-editor select,
-  .sling-cms-editor textarea {
-    margin: 0; }
-  .sling-cms-editor html {
-    box-sizing: border-box; }
-  .sling-cms-editor *, .sling-cms-editor *::before, .sling-cms-editor *::after {
-    box-sizing: inherit; }
-  .sling-cms-editor img,
-  .sling-cms-editor video {
-    height: auto;
-    max-width: 100%; }
-  .sling-cms-editor iframe {
-    border: 0; }
-  .sling-cms-editor table {
-    border-collapse: collapse;
-    border-spacing: 0; }
-  .sling-cms-editor td,
-  .sling-cms-editor th {
-    padding: 0; }
-    .sling-cms-editor td:not([align]),
-    .sling-cms-editor th:not([align]) {
-      text-align: left; }
-  .sling-cms-editor html {
-    background-color: white;
-    font-size: 16px;
-    -moz-osx-font-smoothing: grayscale;
-    -webkit-font-smoothing: antialiased;
-    min-width: 300px;
-    overflow-x: hidden;
-    overflow-y: scroll;
-    text-rendering: optimizeLegibility;
-    text-size-adjust: 100%; }
-  .sling-cms-editor article,
-  .sling-cms-editor aside,
-  .sling-cms-editor figure,
-  .sling-cms-editor footer,
-  .sling-cms-editor header,
-  .sling-cms-editor hgroup,
-  .sling-cms-editor section {
-    display: block; }
-  .sling-cms-editor body,
-  .sling-cms-editor button,
-  .sling-cms-editor input,
-  .sling-cms-editor select,
-  .sling-cms-editor textarea {
-    font-family: "Open Sans", sans-serif; }
-  .sling-cms-editor code,
-  .sling-cms-editor pre {
-    -moz-osx-font-smoothing: auto;
-    -webkit-font-smoothing: auto;
-    font-family: monospace; }
-  .sling-cms-editor body {
-    color: #4a4a4a;
-    font-size: 1em;
-    font-weight: 400;
-    line-height: 1.5; }
-  .sling-cms-editor a {
-    color: #282661;
-    cursor: pointer;
-    text-decoration: none; }
-    .sling-cms-editor a strong {
-      color: currentColor; }
-    .sling-cms-editor a:hover {
-      color: #363636; }
-  .sling-cms-editor code {
-    background-color: whitesmoke;
-    color: #D22128;
-    font-size: 0.875em;
-    font-weight: normal;
-    padding: 0.25em 0.5em 0.25em; }
-  .sling-cms-editor hr {
-    background-color: whitesmoke;
-    border: none;
-    display: block;
-    height: 2px;
-    margin: 1.5rem 0; }
-  .sling-cms-editor img {
-    height: auto;
-    max-width: 100%; }
-  .sling-cms-editor input[type="checkbox"],
-  .sling-cms-editor input[type="radio"] {
-    vertical-align: baseline; }
-  .sling-cms-editor small {
-    font-size: 0.875em; }
-  .sling-cms-editor span {
-    font-style: inherit;
-    font-weight: inherit; }
-  .sling-cms-editor strong {
-    color: #363636;
-    font-weight: 700; }
-  .sling-cms-editor fieldset {
-    border: none; }
-  .sling-cms-editor pre {
-    -webkit-overflow-scrolling: touch;
-    background-color: whitesmoke;
-    color: #4a4a4a;
-    font-size: 0.875em;
-    overflow-x: auto;
-    padding: 1.25rem 1.5rem;
-    white-space: pre;
-    word-wrap: normal; }
-    .sling-cms-editor pre code {
-      background-color: transparent;
-      color: currentColor;
-      font-size: 1em;
-      padding: 0; }
-  .sling-cms-editor table td,
-  .sling-cms-editor table th {
-    vertical-align: top; }
-    .sling-cms-editor table td:not([align]),
-    .sling-cms-editor table th:not([align]) {
-      text-align: left; }
-  .sling-cms-editor table th {
-    color: #363636; }
-  .sling-cms-editor .is-clearfix::after {
-    clear: both;
-    content: " ";
-    display: table; }
-  .sling-cms-editor .is-pulled-left {
-    float: left !important; }
-  .sling-cms-editor .is-pulled-right {
-    float: right !important; }
-  .sling-cms-editor .is-clipped {
-    overflow: hidden !important; }
-  .sling-cms-editor .is-size-1 {
-    font-size: 3rem !important; }
-  .sling-cms-editor .is-size-2 {
-    font-size: 2.5rem !important; }
-  .sling-cms-editor .is-size-3 {
-    font-size: 2rem !important; }
-  .sling-cms-editor .is-size-4 {
-    font-size: 1.5rem !important; }
-  .sling-cms-editor .is-size-5 {
-    font-size: 1.25rem !important; }
-  .sling-cms-editor .is-size-6 {
-    font-size: 1rem !important; }
-  .sling-cms-editor .is-size-7 {
-    font-size: 0.75rem !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-size-1-mobile {
-      font-size: 3rem !important; }
-    .sling-cms-editor .is-size-2-mobile {
-      font-size: 2.5rem !important; }
-    .sling-cms-editor .is-size-3-mobile {
-      font-size: 2rem !important; }
-    .sling-cms-editor .is-size-4-mobile {
-      font-size: 1.5rem !important; }
-    .sling-cms-editor .is-size-5-mobile {
-      font-size: 1.25rem !important; }
-    .sling-cms-editor .is-size-6-mobile {
-      font-size: 1rem !important; }
-    .sling-cms-editor .is-size-7-mobile {
-      font-size: 0.75rem !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-size-1-tablet {
-      font-size: 3rem !important; }
-    .sling-cms-editor .is-size-2-tablet {
-      font-size: 2.5rem !important; }
-    .sling-cms-editor .is-size-3-tablet {
-      font-size: 2rem !important; }
-    .sling-cms-editor .is-size-4-tablet {
-      font-size: 1.5rem !important; }
-    .sling-cms-editor .is-size-5-tablet {
-      font-size: 1.25rem !important; }
-    .sling-cms-editor .is-size-6-tablet {
-      font-size: 1rem !important; }
-    .sling-cms-editor .is-size-7-tablet {
-      font-size: 0.75rem !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-size-1-touch {
-      font-size: 3rem !important; }
-    .sling-cms-editor .is-size-2-touch {
-      font-size: 2.5rem !important; }
-    .sling-cms-editor .is-size-3-touch {
-      font-size: 2rem !important; }
-    .sling-cms-editor .is-size-4-touch {
-      font-size: 1.5rem !important; }
-    .sling-cms-editor .is-size-5-touch {
-      font-size: 1.25rem !important; }
-    .sling-cms-editor .is-size-6-touch {
-      font-size: 1rem !important; }
-    .sling-cms-editor .is-size-7-touch {
-      font-size: 0.75rem !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-size-1-desktop {
-      font-size: 3rem !important; }
-    .sling-cms-editor .is-size-2-desktop {
-      font-size: 2.5rem !important; }
-    .sling-cms-editor .is-size-3-desktop {
-      font-size: 2rem !important; }
-    .sling-cms-editor .is-size-4-desktop {
-      font-size: 1.5rem !important; }
-    .sling-cms-editor .is-size-5-desktop {
-      font-size: 1.25rem !important; }
-    .sling-cms-editor .is-size-6-desktop {
-      font-size: 1rem !important; }
-    .sling-cms-editor .is-size-7-desktop {
-      font-size: 0.75rem !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-size-1-widescreen {
-      font-size: 3rem !important; }
-    .sling-cms-editor .is-size-2-widescreen {
-      font-size: 2.5rem !important; }
-    .sling-cms-editor .is-size-3-widescreen {
-      font-size: 2rem !important; }
-    .sling-cms-editor .is-size-4-widescreen {
-      font-size: 1.5rem !important; }
-    .sling-cms-editor .is-size-5-widescreen {
-      font-size: 1.25rem !important; }
-    .sling-cms-editor .is-size-6-widescreen {
-      font-size: 1rem !important; }
-    .sling-cms-editor .is-size-7-widescreen {
-      font-size: 0.75rem !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-size-1-fullhd {
-      font-size: 3rem !important; }
-    .sling-cms-editor .is-size-2-fullhd {
-      font-size: 2.5rem !important; }
-    .sling-cms-editor .is-size-3-fullhd {
-      font-size: 2rem !important; }
-    .sling-cms-editor .is-size-4-fullhd {
-      font-size: 1.5rem !important; }
-    .sling-cms-editor .is-size-5-fullhd {
-      font-size: 1.25rem !important; }
-    .sling-cms-editor .is-size-6-fullhd {
-      font-size: 1rem !important; }
-    .sling-cms-editor .is-size-7-fullhd {
-      font-size: 0.75rem !important; } }
-  .sling-cms-editor .has-text-centered {
-    text-align: center !important; }
-  .sling-cms-editor .has-text-justified {
-    text-align: justify !important; }
-  .sling-cms-editor .has-text-left {
-    text-align: left !important; }
-  .sling-cms-editor .has-text-right {
-    text-align: right !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .has-text-centered-mobile {
-      text-align: center !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .has-text-centered-tablet {
-      text-align: center !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .has-text-centered-tablet-only {
-      text-align: center !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .has-text-centered-touch {
-      text-align: center !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .has-text-centered-desktop {
-      text-align: center !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .has-text-centered-desktop-only {
-      text-align: center !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .has-text-centered-widescreen {
-      text-align: center !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .has-text-centered-widescreen-only {
-      text-align: center !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .has-text-centered-fullhd {
-      text-align: center !important; } }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .has-text-justified-mobile {
-      text-align: justify !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .has-text-justified-tablet {
-      text-align: justify !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .has-text-justified-tablet-only {
-      text-align: justify !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .has-text-justified-touch {
-      text-align: justify !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .has-text-justified-desktop {
-      text-align: justify !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .has-text-justified-desktop-only {
-      text-align: justify !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .has-text-justified-widescreen {
-      text-align: justify !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .has-text-justified-widescreen-only {
-      text-align: justify !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .has-text-justified-fullhd {
-      text-align: justify !important; } }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .has-text-left-mobile {
-      text-align: left !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .has-text-left-tablet {
-      text-align: left !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .has-text-left-tablet-only {
-      text-align: left !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .has-text-left-touch {
-      text-align: left !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .has-text-left-desktop {
-      text-align: left !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .has-text-left-desktop-only {
-      text-align: left !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .has-text-left-widescreen {
-      text-align: left !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .has-text-left-widescreen-only {
-      text-align: left !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .has-text-left-fullhd {
-      text-align: left !important; } }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .has-text-right-mobile {
-      text-align: right !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .has-text-right-tablet {
-      text-align: right !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .has-text-right-tablet-only {
-      text-align: right !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .has-text-right-touch {
-      text-align: right !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .has-text-right-desktop {
-      text-align: right !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .has-text-right-desktop-only {
-      text-align: right !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .has-text-right-widescreen {
-      text-align: right !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .has-text-right-widescreen-only {
-      text-align: right !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .has-text-right-fullhd {
-      text-align: right !important; } }
-  .sling-cms-editor .is-capitalized {
-    text-transform: capitalize !important; }
-  .sling-cms-editor .is-lowercase {
-    text-transform: lowercase !important; }
-  .sling-cms-editor .is-uppercase {
-    text-transform: uppercase !important; }
-  .sling-cms-editor .is-italic {
-    font-style: italic !important; }
-  .sling-cms-editor .has-text-white {
-    color: white !important; }
-  .sling-cms-editor a.has-text-white:hover, .sling-cms-editor a.has-text-white:focus {
-    color: #e6e6e6 !important; }
-  .sling-cms-editor .has-background-white {
-    background-color: white !important; }
-  .sling-cms-editor .has-text-black {
-    color: #0a0a0a !important; }
-  .sling-cms-editor a.has-text-black:hover, .sling-cms-editor a.has-text-black:focus {
-    color: black !important; }
-  .sling-cms-editor .has-background-black {
-    background-color: #0a0a0a !important; }
-  .sling-cms-editor .has-text-light {
-    color: whitesmoke !important; }
-  .sling-cms-editor a.has-text-light:hover, .sling-cms-editor a.has-text-light:focus {
-    color: #dbdbdb !important; }
-  .sling-cms-editor .has-background-light {
-    background-color: whitesmoke !important; }
-  .sling-cms-editor .has-text-dark {
-    color: #363636 !important; }
-  .sling-cms-editor a.has-text-dark:hover, .sling-cms-editor a.has-text-dark:focus {
-    color: #1c1c1c !important; }
-  .sling-cms-editor .has-background-dark {
-    background-color: #363636 !important; }
-  .sling-cms-editor .has-text-primary {
-    color: #9E2165 !important; }
-  .sling-cms-editor a.has-text-primary:hover, .sling-cms-editor a.has-text-primary:focus {
-    color: #74184a !important; }
-  .sling-cms-editor .has-background-primary {
-    background-color: #9E2165 !important; }
-  .sling-cms-editor .has-text-link {
-    color: #282661 !important; }
-  .sling-cms-editor a.has-text-link:hover, .sling-cms-editor a.has-text-link:focus {
-    color: #19183c !important; }
-  .sling-cms-editor .has-background-link {
-    background-color: #282661 !important; }
-  .sling-cms-editor .has-text-info {
-    color: #3298dc !important; }
-  .sling-cms-editor a.has-text-info:hover, .sling-cms-editor a.has-text-info:focus {
-    color: #207dbc !important; }
-  .sling-cms-editor .has-background-info {
-    background-color: #3298dc !important; }
-  .sling-cms-editor .has-text-success {
-    color: #48c774 !important; }
-  .sling-cms-editor a.has-text-success:hover, .sling-cms-editor a.has-text-success:focus {
-    color: #34a85c !important; }
-  .sling-cms-editor .has-background-success {
-    background-color: #48c774 !important; }
-  .sling-cms-editor .has-text-warning {
-    color: #EA7826 !important; }
-  .sling-cms-editor a.has-text-warning:hover, .sling-cms-editor a.has-text-warning:focus {
-    color: #ca6014 !important; }
-  .sling-cms-editor .has-background-warning {
-    background-color: #EA7826 !important; }
-  .sling-cms-editor .has-text-danger {
-    color: #CB2138 !important; }
-  .sling-cms-editor a.has-text-danger:hover, .sling-cms-editor a.has-text-danger:focus {
-    color: #9f1a2c !important; }
-  .sling-cms-editor .has-background-danger {
-    background-color: #CB2138 !important; }
-  .sling-cms-editor .has-text-black-bis {
-    color: #121212 !important; }
-  .sling-cms-editor .has-background-black-bis {
-    background-color: #121212 !important; }
-  .sling-cms-editor .has-text-black-ter {
-    color: #242424 !important; }
-  .sling-cms-editor .has-background-black-ter {
-    background-color: #242424 !important; }
-  .sling-cms-editor .has-text-grey-darker {
-    color: #363636 !important; }
-  .sling-cms-editor .has-background-grey-darker {
-    background-color: #363636 !important; }
-  .sling-cms-editor .has-text-grey-dark {
-    color: #4a4a4a !important; }
-  .sling-cms-editor .has-background-grey-dark {
-    background-color: #4a4a4a !important; }
-  .sling-cms-editor .has-text-grey {
-    color: #7a7a7a !important; }
-  .sling-cms-editor .has-background-grey {
-    background-color: #7a7a7a !important; }
-  .sling-cms-editor .has-text-grey-light {
-    color: #b5b5b5 !important; }
-  .sling-cms-editor .has-background-grey-light {
-    background-color: #b5b5b5 !important; }
-  .sling-cms-editor .has-text-grey-lighter {
-    color: #dbdbdb !important; }
-  .sling-cms-editor .has-background-grey-lighter {
-    background-color: #dbdbdb !important; }
-  .sling-cms-editor .has-text-white-ter {
-    color: whitesmoke !important; }
-  .sling-cms-editor .has-background-white-ter {
-    background-color: whitesmoke !important; }
-  .sling-cms-editor .has-text-white-bis {
-    color: #fafafa !important; }
-  .sling-cms-editor .has-background-white-bis {
-    background-color: #fafafa !important; }
-  .sling-cms-editor .has-text-weight-light {
-    font-weight: 300 !important; }
-  .sling-cms-editor .has-text-weight-normal {
-    font-weight: 400 !important; }
-  .sling-cms-editor .has-text-weight-medium {
-    font-weight: 500 !important; }
-  .sling-cms-editor .has-text-weight-semibold {
-    font-weight: 600 !important; }
-  .sling-cms-editor .has-text-weight-bold {
-    font-weight: 700 !important; }
-  .sling-cms-editor .is-family-primary {
-    font-family: "Open Sans", sans-serif !important; }
-  .sling-cms-editor .is-family-secondary {
-    font-family: "Open Sans", sans-serif !important; }
-  .sling-cms-editor .is-family-sans-serif {
-    font-family: "Open Sans", sans-serif !important; }
-  .sling-cms-editor .is-family-monospace {
-    font-family: monospace !important; }
-  .sling-cms-editor .is-family-code {
-    font-family: monospace !important; }
-  .sling-cms-editor .is-block {
-    display: block !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-block-mobile {
-      display: block !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-block-tablet {
-      display: block !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .is-block-tablet-only {
-      display: block !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-block-touch {
-      display: block !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-block-desktop {
-      display: block !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .is-block-desktop-only {
-      display: block !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-block-widescreen {
-      display: block !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .is-block-widescreen-only {
-      display: block !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-block-fullhd {
-      display: block !important; } }
-  .sling-cms-editor .is-flex {
-    display: flex !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-flex-mobile {
-      display: flex !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-flex-tablet {
-      display: flex !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .is-flex-tablet-only {
-      display: flex !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-flex-touch {
-      display: flex !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-flex-desktop {
-      display: flex !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .is-flex-desktop-only {
-      display: flex !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-flex-widescreen {
-      display: flex !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .is-flex-widescreen-only {
-      display: flex !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-flex-fullhd {
-      display: flex !important; } }
-  .sling-cms-editor .is-inline {
-    display: inline !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-inline-mobile {
-      display: inline !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-inline-tablet {
-      display: inline !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .is-inline-tablet-only {
-      display: inline !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-inline-touch {
-      display: inline !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-inline-desktop {
-      display: inline !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .is-inline-desktop-only {
-      display: inline !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-inline-widescreen {
-      display: inline !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .is-inline-widescreen-only {
-      display: inline !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-inline-fullhd {
-      display: inline !important; } }
-  .sling-cms-editor .is-inline-block {
-    display: inline-block !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-inline-block-mobile {
-      display: inline-block !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-inline-block-tablet {
-      display: inline-block !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .is-inline-block-tablet-only {
-      display: inline-block !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-inline-block-touch {
-      display: inline-block !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-inline-block-desktop {
-      display: inline-block !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .is-inline-block-desktop-only {
-      display: inline-block !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-inline-block-widescreen {
-      display: inline-block !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .is-inline-block-widescreen-only {
-      display: inline-block !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-inline-block-fullhd {
-      display: inline-block !important; } }
-  .sling-cms-editor .is-inline-flex {
-    display: inline-flex !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-inline-flex-mobile {
-      display: inline-flex !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-inline-flex-tablet {
-      display: inline-flex !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .is-inline-flex-tablet-only {
-      display: inline-flex !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-inline-flex-touch {
-      display: inline-flex !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-inline-flex-desktop {
-      display: inline-flex !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .is-inline-flex-desktop-only {
-      display: inline-flex !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-inline-flex-widescreen {
-      display: inline-flex !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .is-inline-flex-widescreen-only {
-      display: inline-flex !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-inline-flex-fullhd {
-      display: inline-flex !important; } }
-  .sling-cms-editor .is-hidden {
-    display: none !important; }
-  .sling-cms-editor .is-sr-only {
-    border: none !important;
-    clip: rect(0, 0, 0, 0) !important;
-    height: 0.01em !important;
-    overflow: hidden !important;
-    padding: 0 !important;
-    position: absolute !important;
-    white-space: nowrap !important;
-    width: 0.01em !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-hidden-mobile {
-      display: none !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-hidden-tablet {
-      display: none !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .is-hidden-tablet-only {
-      display: none !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-hidden-touch {
-      display: none !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-hidden-desktop {
-      display: none !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .is-hidden-desktop-only {
-      display: none !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-hidden-widescreen {
-      display: none !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .is-hidden-widescreen-only {
-      display: none !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-hidden-fullhd {
-      display: none !important; } }
-  .sling-cms-editor .is-invisible {
-    visibility: hidden !important; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .is-invisible-mobile {
-      visibility: hidden !important; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .is-invisible-tablet {
-      visibility: hidden !important; } }
-  @media screen and (min-width: 769px) and (max-width: 1023px) {
-    .sling-cms-editor .is-invisible-tablet-only {
-      visibility: hidden !important; } }
-  @media screen and (max-width: 1023px) {
-    .sling-cms-editor .is-invisible-touch {
-      visibility: hidden !important; } }
-  @media screen and (min-width: 1024px) {
-    .sling-cms-editor .is-invisible-desktop {
-      visibility: hidden !important; } }
-  @media screen and (min-width: 1024px) and (max-width: 1215px) {
-    .sling-cms-editor .is-invisible-desktop-only {
-      visibility: hidden !important; } }
-  @media screen and (min-width: 1216px) {
-    .sling-cms-editor .is-invisible-widescreen {
-      visibility: hidden !important; } }
-  @media screen and (min-width: 1216px) and (max-width: 1407px) {
-    .sling-cms-editor .is-invisible-widescreen-only {
-      visibility: hidden !important; } }
-  @media screen and (min-width: 1408px) {
-    .sling-cms-editor .is-invisible-fullhd {
-      visibility: hidden !important; } }
-  .sling-cms-editor .is-marginless {
-    margin: 0 !important; }
-  .sling-cms-editor .is-paddingless {
-    padding: 0 !important; }
-  .sling-cms-editor .is-radiusless {
-    border-radius: 0 !important; }
-  .sling-cms-editor .is-shadowless {
-    box-shadow: none !important; }
-  .sling-cms-editor .is-relative {
-    position: relative !important; }
-  .sling-cms-editor .box {
-    background-color: white;
-    border-radius: 6px;
-    box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0px 0 1px rgba(10, 10, 10, 0.02);
-    color: #4a4a4a;
-    display: block;
-    padding: 1.25rem; }
-  .sling-cms-editor a.box:hover, .sling-cms-editor a.box:focus {
-    box-shadow: 0 0.5em 1em -0.125em rgba(10, 10, 10, 0.1), 0 0 0 1px #282661; }
-  .sling-cms-editor a.box:active {
-    box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #282661; }
-  .sling-cms-editor .button {
-    background-color: white;
-    border-color: #dbdbdb;
-    border-width: 1px;
-    color: #363636;
-    cursor: pointer;
-    justify-content: center;
-    padding-bottom: calc(0.5em - 1px);
-    padding-left: 1em;
-    padding-right: 1em;
-    padding-top: calc(0.5em - 1px);
-    text-align: center;
-    white-space: nowrap; }
-    .sling-cms-editor .button strong {
-      color: inherit; }
-    .sling-cms-editor .button .icon, .sling-cms-editor .button .icon.is-small, .sling-cms-editor .button .icon.is-medium, .sling-cms-editor .button .icon.is-large {
-      height: 1.5em;
-      width: 1.5em; }
-    .sling-cms-editor .button .icon:first-child:not(:last-child) {
-      margin-left: calc(-0.5em - 1px);
-      margin-right: 0.25em; }
-    .sling-cms-editor .button .icon:last-child:not(:first-child) {
-      margin-left: 0.25em;
-      margin-right: calc(-0.5em - 1px); }
-    .sling-cms-editor .button .icon:first-child:last-child {
-      margin-left: calc(-0.5em - 1px);
-      margin-right: calc(-0.5em - 1px); }
-    .sling-cms-editor .button:hover, .sling-cms-editor .button.is-hovered {
-      border-color: #b5b5b5;
-      color: #363636; }
-    .sling-cms-editor .button:focus, .sling-cms-editor .button.is-focused {
-      border-color: #3273dc;
-      color: #363636; }
-      .sling-cms-editor .button:focus:not(:active), .sling-cms-editor .button.is-focused:not(:active) {
-        box-shadow: 0 0 0 0.125em rgba(40, 38, 97, 0.25); }
-    .sling-cms-editor .button:active, .sling-cms-editor .button.is-active {
-      border-color: #4a4a4a;
-      color: #363636; }
-    .sling-cms-editor .button.is-text {
-      background-color: transparent;
-      border-color: transparent;
-      color: #4a4a4a;
-      text-decoration: underline; }
-      .sling-cms-editor .button.is-text:hover, .sling-cms-editor .button.is-text.is-hovered, .sling-cms-editor .button.is-text:focus, .sling-cms-editor .button.is-text.is-focused {
-        background-color: whitesmoke;
-        color: #363636; }
-      .sling-cms-editor .button.is-text:active, .sling-cms-editor .button.is-text.is-active {
-        background-color: #e8e8e8;
-        color: #363636; }
-      .sling-cms-editor .button.is-text[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-text {
-        background-color: transparent;
-        border-color: transparent;
-        box-shadow: none; }
-    .sling-cms-editor .button.is-white {
-      background-color: white;
-      border-color: transparent;
-      color: #0a0a0a; }
-      .sling-cms-editor .button.is-white:hover, .sling-cms-editor .button.is-white.is-hovered {
-        background-color: #f9f9f9;
-        border-color: transparent;
-        color: #0a0a0a; }
-      .sling-cms-editor .button.is-white:focus, .sling-cms-editor .button.is-white.is-focused {
-        border-color: transparent;
-        color: #0a0a0a; }
-        .sling-cms-editor .button.is-white:focus:not(:active), .sling-cms-editor .button.is-white.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }
-      .sling-cms-editor .button.is-white:active, .sling-cms-editor .button.is-white.is-active {
-        background-color: #f2f2f2;
-        border-color: transparent;
-        color: #0a0a0a; }
-      .sling-cms-editor .button.is-white[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-white {
-        background-color: white;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-white.is-inverted {
-        background-color: #0a0a0a;
-        color: white; }
-        .sling-cms-editor .button.is-white.is-inverted:hover, .sling-cms-editor .button.is-white.is-inverted.is-hovered {
-          background-color: black; }
-        .sling-cms-editor .button.is-white.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-white.is-inverted {
-          background-color: #0a0a0a;
-          border-color: transparent;
-          box-shadow: none;
-          color: white; }
-      .sling-cms-editor .button.is-white.is-loading::after {
-        border-color: transparent transparent #0a0a0a #0a0a0a !important; }
-      .sling-cms-editor .button.is-white.is-outlined {
-        background-color: transparent;
-        border-color: white;
-        color: white; }
-        .sling-cms-editor .button.is-white.is-outlined:hover, .sling-cms-editor .button.is-white.is-outlined.is-hovered, .sling-cms-editor .button.is-white.is-outlined:focus, .sling-cms-editor .button.is-white.is-outlined.is-focused {
-          background-color: white;
-          border-color: white;
-          color: #0a0a0a; }
-        .sling-cms-editor .button.is-white.is-outlined.is-loading::after {
-          border-color: transparent transparent white white !important; }
-        .sling-cms-editor .button.is-white.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-white.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-white.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-white.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #0a0a0a #0a0a0a !important; }
-        .sling-cms-editor .button.is-white.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-white.is-outlined {
-          background-color: transparent;
-          border-color: white;
-          box-shadow: none;
-          color: white; }
-      .sling-cms-editor .button.is-white.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #0a0a0a;
-        color: #0a0a0a; }
-        .sling-cms-editor .button.is-white.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-white.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-white.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-white.is-inverted.is-outlined.is-focused {
-          background-color: #0a0a0a;
-          color: white; }
-        .sling-cms-editor .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent white white !important; }
-        .sling-cms-editor .button.is-white.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-white.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #0a0a0a;
-          box-shadow: none;
-          color: #0a0a0a; }
-    .sling-cms-editor .button.is-black {
-      background-color: #0a0a0a;
-      border-color: transparent;
-      color: white; }
-      .sling-cms-editor .button.is-black:hover, .sling-cms-editor .button.is-black.is-hovered {
-        background-color: #040404;
-        border-color: transparent;
-        color: white; }
-      .sling-cms-editor .button.is-black:focus, .sling-cms-editor .button.is-black.is-focused {
-        border-color: transparent;
-        color: white; }
-        .sling-cms-editor .button.is-black:focus:not(:active), .sling-cms-editor .button.is-black.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }
-      .sling-cms-editor .button.is-black:active, .sling-cms-editor .button.is-black.is-active {
-        background-color: black;
-        border-color: transparent;
-        color: white; }
-      .sling-cms-editor .button.is-black[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-black {
-        background-color: #0a0a0a;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-black.is-inverted {
-        background-color: white;
-        color: #0a0a0a; }
-        .sling-cms-editor .button.is-black.is-inverted:hover, .sling-cms-editor .button.is-black.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-black.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-black.is-inverted {
-          background-color: white;
-          border-color: transparent;
-          box-shadow: none;
-          color: #0a0a0a; }
-      .sling-cms-editor .button.is-black.is-loading::after {
-        border-color: transparent transparent white white !important; }
-      .sling-cms-editor .button.is-black.is-outlined {
-        background-color: transparent;
-        border-color: #0a0a0a;
-        color: #0a0a0a; }
-        .sling-cms-editor .button.is-black.is-outlined:hover, .sling-cms-editor .button.is-black.is-outlined.is-hovered, .sling-cms-editor .button.is-black.is-outlined:focus, .sling-cms-editor .button.is-black.is-outlined.is-focused {
-          background-color: #0a0a0a;
-          border-color: #0a0a0a;
-          color: white; }
-        .sling-cms-editor .button.is-black.is-outlined.is-loading::after {
-          border-color: transparent transparent #0a0a0a #0a0a0a !important; }
-        .sling-cms-editor .button.is-black.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-black.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-black.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-black.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent white white !important; }
-        .sling-cms-editor .button.is-black.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-black.is-outlined {
-          background-color: transparent;
-          border-color: #0a0a0a;
-          box-shadow: none;
-          color: #0a0a0a; }
-      .sling-cms-editor .button.is-black.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: white;
-        color: white; }
-        .sling-cms-editor .button.is-black.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-black.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-black.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-black.is-inverted.is-outlined.is-focused {
-          background-color: white;
-          color: #0a0a0a; }
-        .sling-cms-editor .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #0a0a0a #0a0a0a !important; }
-        .sling-cms-editor .button.is-black.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-black.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: white;
-          box-shadow: none;
-          color: white; }
-    .sling-cms-editor .button.is-light {
-      background-color: whitesmoke;
-      border-color: transparent;
-      color: rgba(0, 0, 0, 0.7); }
-      .sling-cms-editor .button.is-light:hover, .sling-cms-editor .button.is-light.is-hovered {
-        background-color: #eeeeee;
-        border-color: transparent;
-        color: rgba(0, 0, 0, 0.7); }
-      .sling-cms-editor .button.is-light:focus, .sling-cms-editor .button.is-light.is-focused {
-        border-color: transparent;
-        color: rgba(0, 0, 0, 0.7); }
-        .sling-cms-editor .button.is-light:focus:not(:active), .sling-cms-editor .button.is-light.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }
-      .sling-cms-editor .button.is-light:active, .sling-cms-editor .button.is-light.is-active {
-        background-color: #e8e8e8;
-        border-color: transparent;
-        color: rgba(0, 0, 0, 0.7); }
-      .sling-cms-editor .button.is-light[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-light {
-        background-color: whitesmoke;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-light.is-inverted {
-        background-color: rgba(0, 0, 0, 0.7);
-        color: whitesmoke; }
-        .sling-cms-editor .button.is-light.is-inverted:hover, .sling-cms-editor .button.is-light.is-inverted.is-hovered {
-          background-color: rgba(0, 0, 0, 0.7); }
-        .sling-cms-editor .button.is-light.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-light.is-inverted {
-          background-color: rgba(0, 0, 0, 0.7);
-          border-color: transparent;
-          box-shadow: none;
-          color: whitesmoke; }
-      .sling-cms-editor .button.is-light.is-loading::after {
-        border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }
-      .sling-cms-editor .button.is-light.is-outlined {
-        background-color: transparent;
-        border-color: whitesmoke;
-        color: whitesmoke; }
-        .sling-cms-editor .button.is-light.is-outlined:hover, .sling-cms-editor .button.is-light.is-outlined.is-hovered, .sling-cms-editor .button.is-light.is-outlined:focus, .sling-cms-editor .button.is-light.is-outlined.is-focused {
-          background-color: whitesmoke;
-          border-color: whitesmoke;
-          color: rgba(0, 0, 0, 0.7); }
-        .sling-cms-editor .button.is-light.is-outlined.is-loading::after {
-          border-color: transparent transparent whitesmoke whitesmoke !important; }
-        .sling-cms-editor .button.is-light.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-light.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-light.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-light.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; }
-        .sling-cms-editor .button.is-light.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-light.is-outlined {
-          background-color: transparent;
-          border-color: whitesmoke;
-          box-shadow: none;
-          color: whitesmoke; }
-      .sling-cms-editor .button.is-light.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: rgba(0, 0, 0, 0.7);
-        color: rgba(0, 0, 0, 0.7); }
-        .sling-cms-editor .button.is-light.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-light.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-light.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-light.is-inverted.is-outlined.is-focused {
-          background-color: rgba(0, 0, 0, 0.7);
-          color: whitesmoke; }
-        .sling-cms-editor .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent whitesmoke whitesmoke !important; }
-        .sling-cms-editor .button.is-light.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-light.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: rgba(0, 0, 0, 0.7);
-          box-shadow: none;
-          color: rgba(0, 0, 0, 0.7); }
-    .sling-cms-editor .button.is-dark {
-      background-color: #363636;
-      border-color: transparent;
-      color: #fff; }
-      .sling-cms-editor .button.is-dark:hover, .sling-cms-editor .button.is-dark.is-hovered {
-        background-color: #2f2f2f;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-dark:focus, .sling-cms-editor .button.is-dark.is-focused {
-        border-color: transparent;
-        color: #fff; }
-        .sling-cms-editor .button.is-dark:focus:not(:active), .sling-cms-editor .button.is-dark.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }
-      .sling-cms-editor .button.is-dark:active, .sling-cms-editor .button.is-dark.is-active {
-        background-color: #292929;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-dark[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-dark {
-        background-color: #363636;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-dark.is-inverted {
-        background-color: #fff;
-        color: #363636; }
-        .sling-cms-editor .button.is-dark.is-inverted:hover, .sling-cms-editor .button.is-dark.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-dark.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-dark.is-inverted {
-          background-color: #fff;
-          border-color: transparent;
-          box-shadow: none;
-          color: #363636; }
-      .sling-cms-editor .button.is-dark.is-loading::after {
-        border-color: transparent transparent #fff #fff !important; }
-      .sling-cms-editor .button.is-dark.is-outlined {
-        background-color: transparent;
-        border-color: #363636;
-        color: #363636; }
-        .sling-cms-editor .button.is-dark.is-outlined:hover, .sling-cms-editor .button.is-dark.is-outlined.is-hovered, .sling-cms-editor .button.is-dark.is-outlined:focus, .sling-cms-editor .button.is-dark.is-outlined.is-focused {
-          background-color: #363636;
-          border-color: #363636;
-          color: #fff; }
-        .sling-cms-editor .button.is-dark.is-outlined.is-loading::after {
-          border-color: transparent transparent #363636 #363636 !important; }
-        .sling-cms-editor .button.is-dark.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-dark.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-dark.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-dark.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #fff #fff !important; }
-        .sling-cms-editor .button.is-dark.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-dark.is-outlined {
-          background-color: transparent;
-          border-color: #363636;
-          box-shadow: none;
-          color: #363636; }
-      .sling-cms-editor .button.is-dark.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #fff;
-        color: #fff; }
-        .sling-cms-editor .button.is-dark.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-dark.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-dark.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-dark.is-inverted.is-outlined.is-focused {
-          background-color: #fff;
-          color: #363636; }
-        .sling-cms-editor .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #363636 #363636 !important; }
-        .sling-cms-editor .button.is-dark.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-dark.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #fff;
-          box-shadow: none;
-          color: #fff; }
-    .sling-cms-editor .button.is-primary {
-      background-color: #9E2165;
-      border-color: transparent;
-      color: #fff; }
-      .sling-cms-editor .button.is-primary:hover, .sling-cms-editor .button.is-primary.is-hovered {
-        background-color: #931f5e;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-primary:focus, .sling-cms-editor .button.is-primary.is-focused {
-        border-color: transparent;
-        color: #fff; }
-        .sling-cms-editor .button.is-primary:focus:not(:active), .sling-cms-editor .button.is-primary.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(158, 33, 101, 0.25); }
-      .sling-cms-editor .button.is-primary:active, .sling-cms-editor .button.is-primary.is-active {
-        background-color: #891d58;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-primary[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-primary {
-        background-color: #9E2165;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-primary.is-inverted {
-        background-color: #fff;
-        color: #9E2165; }
-        .sling-cms-editor .button.is-primary.is-inverted:hover, .sling-cms-editor .button.is-primary.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-primary.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-primary.is-inverted {
-          background-color: #fff;
-          border-color: transparent;
-          box-shadow: none;
-          color: #9E2165; }
-      .sling-cms-editor .button.is-primary.is-loading::after {
-        border-color: transparent transparent #fff #fff !important; }
-      .sling-cms-editor .button.is-primary.is-outlined {
-        background-color: transparent;
-        border-color: #9E2165;
-        color: #9E2165; }
-        .sling-cms-editor .button.is-primary.is-outlined:hover, .sling-cms-editor .button.is-primary.is-outlined.is-hovered, .sling-cms-editor .button.is-primary.is-outlined:focus, .sling-cms-editor .button.is-primary.is-outlined.is-focused {
-          background-color: #9E2165;
-          border-color: #9E2165;
-          color: #fff; }
-        .sling-cms-editor .button.is-primary.is-outlined.is-loading::after {
-          border-color: transparent transparent #9E2165 #9E2165 !important; }
-        .sling-cms-editor .button.is-primary.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-primary.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-primary.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-primary.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #fff #fff !important; }
-        .sling-cms-editor .button.is-primary.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-primary.is-outlined {
-          background-color: transparent;
-          border-color: #9E2165;
-          box-shadow: none;
-          color: #9E2165; }
-      .sling-cms-editor .button.is-primary.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #fff;
-        color: #fff; }
-        .sling-cms-editor .button.is-primary.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-primary.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-primary.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-primary.is-inverted.is-outlined.is-focused {
-          background-color: #fff;
-          color: #9E2165; }
-        .sling-cms-editor .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #9E2165 #9E2165 !important; }
-        .sling-cms-editor .button.is-primary.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-primary.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #fff;
-          box-shadow: none;
-          color: #fff; }
-      .sling-cms-editor .button.is-primary.is-light {
-        background-color: #fbeef5;
-        color: #d43089; }
-        .sling-cms-editor .button.is-primary.is-light:hover, .sling-cms-editor .button.is-primary.is-light.is-hovered {
-          background-color: #f9e4ef;
-          border-color: transparent;
-          color: #d43089; }
-        .sling-cms-editor .button.is-primary.is-light:active, .sling-cms-editor .button.is-primary.is-light.is-active {
-          background-color: #f7d9e9;
-          border-color: transparent;
-          color: #d43089; }
-    .sling-cms-editor .button.is-link {
-      background-color: #282661;
-      border-color: transparent;
-      color: #fff; }
-      .sling-cms-editor .button.is-link:hover, .sling-cms-editor .button.is-link.is-hovered {
-        background-color: #242258;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-link:focus, .sling-cms-editor .button.is-link.is-focused {
-        border-color: transparent;
-        color: #fff; }
-        .sling-cms-editor .button.is-link:focus:not(:active), .sling-cms-editor .button.is-link.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(40, 38, 97, 0.25); }
-      .sling-cms-editor .button.is-link:active, .sling-cms-editor .button.is-link.is-active {
-        background-color: #201f4f;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-link[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-link {
-        background-color: #282661;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-link.is-inverted {
-        background-color: #fff;
-        color: #282661; }
-        .sling-cms-editor .button.is-link.is-inverted:hover, .sling-cms-editor .button.is-link.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-link.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-link.is-inverted {
-          background-color: #fff;
-          border-color: transparent;
-          box-shadow: none;
-          color: #282661; }
-      .sling-cms-editor .button.is-link.is-loading::after {
-        border-color: transparent transparent #fff #fff !important; }
-      .sling-cms-editor .button.is-link.is-outlined {
-        background-color: transparent;
-        border-color: #282661;
-        color: #282661; }
-        .sling-cms-editor .button.is-link.is-outlined:hover, .sling-cms-editor .button.is-link.is-outlined.is-hovered, .sling-cms-editor .button.is-link.is-outlined:focus, .sling-cms-editor .button.is-link.is-outlined.is-focused {
-          background-color: #282661;
-          border-color: #282661;
-          color: #fff; }
-        .sling-cms-editor .button.is-link.is-outlined.is-loading::after {
-          border-color: transparent transparent #282661 #282661 !important; }
-        .sling-cms-editor .button.is-link.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-link.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-link.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-link.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #fff #fff !important; }
-        .sling-cms-editor .button.is-link.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-link.is-outlined {
-          background-color: transparent;
-          border-color: #282661;
-          box-shadow: none;
-          color: #282661; }
-      .sling-cms-editor .button.is-link.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #fff;
-        color: #fff; }
-        .sling-cms-editor .button.is-link.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-link.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-link.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-link.is-inverted.is-outlined.is-focused {
-          background-color: #fff;
-          color: #282661; }
-        .sling-cms-editor .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #282661 #282661 !important; }
-        .sling-cms-editor .button.is-link.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-link.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #fff;
-          box-shadow: none;
-          color: #fff; }
-      .sling-cms-editor .button.is-link.is-light {
-        background-color: #f1f0f9;
-        color: #5e5abe; }
-        .sling-cms-editor .button.is-link.is-light:hover, .sling-cms-editor .button.is-link.is-light.is-hovered {
-          background-color: #e8e7f6;
-          border-color: transparent;
-          color: #5e5abe; }
-        .sling-cms-editor .button.is-link.is-light:active, .sling-cms-editor .button.is-link.is-light.is-active {
-          background-color: #dfdef2;
-          border-color: transparent;
-          color: #5e5abe; }
-    .sling-cms-editor .button.is-info {
-      background-color: #3298dc;
-      border-color: transparent;
-      color: #fff; }
-      .sling-cms-editor .button.is-info:hover, .sling-cms-editor .button.is-info.is-hovered {
-        background-color: #2793da;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-info:focus, .sling-cms-editor .button.is-info.is-focused {
-        border-color: transparent;
-        color: #fff; }
-        .sling-cms-editor .button.is-info:focus:not(:active), .sling-cms-editor .button.is-info.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); }
-      .sling-cms-editor .button.is-info:active, .sling-cms-editor .button.is-info.is-active {
-        background-color: #238cd1;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-info[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-info {
-        background-color: #3298dc;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-info.is-inverted {
-        background-color: #fff;
-        color: #3298dc; }
-        .sling-cms-editor .button.is-info.is-inverted:hover, .sling-cms-editor .button.is-info.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-info.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-info.is-inverted {
-          background-color: #fff;
-          border-color: transparent;
-          box-shadow: none;
-          color: #3298dc; }
-      .sling-cms-editor .button.is-info.is-loading::after {
-        border-color: transparent transparent #fff #fff !important; }
-      .sling-cms-editor .button.is-info.is-outlined {
-        background-color: transparent;
-        border-color: #3298dc;
-        color: #3298dc; }
-        .sling-cms-editor .button.is-info.is-outlined:hover, .sling-cms-editor .button.is-info.is-outlined.is-hovered, .sling-cms-editor .button.is-info.is-outlined:focus, .sling-cms-editor .button.is-info.is-outlined.is-focused {
-          background-color: #3298dc;
-          border-color: #3298dc;
-          color: #fff; }
-        .sling-cms-editor .button.is-info.is-outlined.is-loading::after {
-          border-color: transparent transparent #3298dc #3298dc !important; }
-        .sling-cms-editor .button.is-info.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-info.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-info.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-info.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #fff #fff !important; }
-        .sling-cms-editor .button.is-info.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-info.is-outlined {
-          background-color: transparent;
-          border-color: #3298dc;
-          box-shadow: none;
-          color: #3298dc; }
-      .sling-cms-editor .button.is-info.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #fff;
-        color: #fff; }
-        .sling-cms-editor .button.is-info.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-info.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-info.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-info.is-inverted.is-outlined.is-focused {
-          background-color: #fff;
-          color: #3298dc; }
-        .sling-cms-editor .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #3298dc #3298dc !important; }
-        .sling-cms-editor .button.is-info.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-info.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #fff;
-          box-shadow: none;
-          color: #fff; }
-      .sling-cms-editor .button.is-info.is-light {
-        background-color: #eef6fc;
-        color: #1d72aa; }
-        .sling-cms-editor .button.is-info.is-light:hover, .sling-cms-editor .button.is-info.is-light.is-hovered {
-          background-color: #e3f1fa;
-          border-color: transparent;
-          color: #1d72aa; }
-        .sling-cms-editor .button.is-info.is-light:active, .sling-cms-editor .button.is-info.is-light.is-active {
-          background-color: #d8ebf8;
-          border-color: transparent;
-          color: #1d72aa; }
-    .sling-cms-editor .button.is-success {
-      background-color: #48c774;
-      border-color: transparent;
-      color: #fff; }
-      .sling-cms-editor .button.is-success:hover, .sling-cms-editor .button.is-success.is-hovered {
-        background-color: #3ec46d;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-success:focus, .sling-cms-editor .button.is-success.is-focused {
-        border-color: transparent;
-        color: #fff; }
-        .sling-cms-editor .button.is-success:focus:not(:active), .sling-cms-editor .button.is-success.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); }
-      .sling-cms-editor .button.is-success:active, .sling-cms-editor .button.is-success.is-active {
-        background-color: #3abb67;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-success[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-success {
-        background-color: #48c774;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-success.is-inverted {
-        background-color: #fff;
-        color: #48c774; }
-        .sling-cms-editor .button.is-success.is-inverted:hover, .sling-cms-editor .button.is-success.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-success.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-success.is-inverted {
-          background-color: #fff;
-          border-color: transparent;
-          box-shadow: none;
-          color: #48c774; }
-      .sling-cms-editor .button.is-success.is-loading::after {
-        border-color: transparent transparent #fff #fff !important; }
-      .sling-cms-editor .button.is-success.is-outlined {
-        background-color: transparent;
-        border-color: #48c774;
-        color: #48c774; }
-        .sling-cms-editor .button.is-success.is-outlined:hover, .sling-cms-editor .button.is-success.is-outlined.is-hovered, .sling-cms-editor .button.is-success.is-outlined:focus, .sling-cms-editor .button.is-success.is-outlined.is-focused {
-          background-color: #48c774;
-          border-color: #48c774;
-          color: #fff; }
-        .sling-cms-editor .button.is-success.is-outlined.is-loading::after {
-          border-color: transparent transparent #48c774 #48c774 !important; }
-        .sling-cms-editor .button.is-success.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-success.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-success.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-success.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #fff #fff !important; }
-        .sling-cms-editor .button.is-success.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-success.is-outlined {
-          background-color: transparent;
-          border-color: #48c774;
-          box-shadow: none;
-          color: #48c774; }
-      .sling-cms-editor .button.is-success.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #fff;
-        color: #fff; }
-        .sling-cms-editor .button.is-success.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-success.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-success.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-success.is-inverted.is-outlined.is-focused {
-          background-color: #fff;
-          color: #48c774; }
-        .sling-cms-editor .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #48c774 #48c774 !important; }
-        .sling-cms-editor .button.is-success.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-success.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #fff;
-          box-shadow: none;
-          color: #fff; }
-      .sling-cms-editor .button.is-success.is-light {
-        background-color: #effaf3;
-        color: #257942; }
-        .sling-cms-editor .button.is-success.is-light:hover, .sling-cms-editor .button.is-success.is-light.is-hovered {
-          background-color: #e6f7ec;
-          border-color: transparent;
-          color: #257942; }
-        .sling-cms-editor .button.is-success.is-light:active, .sling-cms-editor .button.is-success.is-light.is-active {
-          background-color: #dcf4e4;
-          border-color: transparent;
-          color: #257942; }
-    .sling-cms-editor .button.is-warning {
-      background-color: #EA7826;
-      border-color: transparent;
-      color: #fff; }
-      .sling-cms-editor .button.is-warning:hover, .sling-cms-editor .button.is-warning.is-hovered {
-        background-color: #e9711a;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-warning:focus, .sling-cms-editor .button.is-warning.is-focused {
-        border-color: transparent;
-        color: #fff; }
-        .sling-cms-editor .button.is-warning:focus:not(:active), .sling-cms-editor .button.is-warning.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(234, 120, 38, 0.25); }
-      .sling-cms-editor .button.is-warning:active, .sling-cms-editor .button.is-warning.is-active {
-        background-color: #e16b16;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-warning[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-warning {
-        background-color: #EA7826;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-warning.is-inverted {
-        background-color: #fff;
-        color: #EA7826; }
-        .sling-cms-editor .button.is-warning.is-inverted:hover, .sling-cms-editor .button.is-warning.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-warning.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-warning.is-inverted {
-          background-color: #fff;
-          border-color: transparent;
-          box-shadow: none;
-          color: #EA7826; }
-      .sling-cms-editor .button.is-warning.is-loading::after {
-        border-color: transparent transparent #fff #fff !important; }
-      .sling-cms-editor .button.is-warning.is-outlined {
-        background-color: transparent;
-        border-color: #EA7826;
-        color: #EA7826; }
-        .sling-cms-editor .button.is-warning.is-outlined:hover, .sling-cms-editor .button.is-warning.is-outlined.is-hovered, .sling-cms-editor .button.is-warning.is-outlined:focus, .sling-cms-editor .button.is-warning.is-outlined.is-focused {
-          background-color: #EA7826;
-          border-color: #EA7826;
-          color: #fff; }
-        .sling-cms-editor .button.is-warning.is-outlined.is-loading::after {
-          border-color: transparent transparent #EA7826 #EA7826 !important; }
-        .sling-cms-editor .button.is-warning.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-warning.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-warning.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-warning.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #fff #fff !important; }
-        .sling-cms-editor .button.is-warning.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-warning.is-outlined {
-          background-color: transparent;
-          border-color: #EA7826;
-          box-shadow: none;
-          color: #EA7826; }
-      .sling-cms-editor .button.is-warning.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #fff;
-        color: #fff; }
-        .sling-cms-editor .button.is-warning.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-warning.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-warning.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-warning.is-inverted.is-outlined.is-focused {
-          background-color: #fff;
-          color: #EA7826; }
-        .sling-cms-editor .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #EA7826 #EA7826 !important; }
-        .sling-cms-editor .button.is-warning.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-warning.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #fff;
-          box-shadow: none;
-          color: #fff; }
-      .sling-cms-editor .button.is-warning.is-light {
-        background-color: #fdf3ec;
-        color: #b15411; }
-        .sling-cms-editor .button.is-warning.is-light:hover, .sling-cms-editor .button.is-warning.is-light.is-hovered {
-          background-color: #fcece1;
-          border-color: transparent;
-          color: #b15411; }
-        .sling-cms-editor .button.is-warning.is-light:active, .sling-cms-editor .button.is-warning.is-light.is-active {
-          background-color: #fbe5d5;
-          border-color: transparent;
-          color: #b15411; }
-    .sling-cms-editor .button.is-danger {
-      background-color: #CB2138;
-      border-color: transparent;
-      color: #fff; }
-      .sling-cms-editor .button.is-danger:hover, .sling-cms-editor .button.is-danger.is-hovered {
-        background-color: #c01f35;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-danger:focus, .sling-cms-editor .button.is-danger.is-focused {
-        border-color: transparent;
-        color: #fff; }
-        .sling-cms-editor .button.is-danger:focus:not(:active), .sling-cms-editor .button.is-danger.is-focused:not(:active) {
-          box-shadow: 0 0 0 0.125em rgba(203, 33, 56, 0.25); }
-      .sling-cms-editor .button.is-danger:active, .sling-cms-editor .button.is-danger.is-active {
-        background-color: #b51d32;
-        border-color: transparent;
-        color: #fff; }
-      .sling-cms-editor .button.is-danger[disabled],
-      fieldset[disabled] .sling-cms-editor .button.is-danger {
-        background-color: #CB2138;
-        border-color: transparent;
-        box-shadow: none; }
-      .sling-cms-editor .button.is-danger.is-inverted {
-        background-color: #fff;
-        color: #CB2138; }
-        .sling-cms-editor .button.is-danger.is-inverted:hover, .sling-cms-editor .button.is-danger.is-inverted.is-hovered {
-          background-color: #f2f2f2; }
-        .sling-cms-editor .button.is-danger.is-inverted[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-danger.is-inverted {
-          background-color: #fff;
-          border-color: transparent;
-          box-shadow: none;
-          color: #CB2138; }
-      .sling-cms-editor .button.is-danger.is-loading::after {
-        border-color: transparent transparent #fff #fff !important; }
-      .sling-cms-editor .button.is-danger.is-outlined {
-        background-color: transparent;
-        border-color: #CB2138;
-        color: #CB2138; }
-        .sling-cms-editor .button.is-danger.is-outlined:hover, .sling-cms-editor .button.is-danger.is-outlined.is-hovered, .sling-cms-editor .button.is-danger.is-outlined:focus, .sling-cms-editor .button.is-danger.is-outlined.is-focused {
-          background-color: #CB2138;
-          border-color: #CB2138;
-          color: #fff; }
-        .sling-cms-editor .button.is-danger.is-outlined.is-loading::after {
-          border-color: transparent transparent #CB2138 #CB2138 !important; }
-        .sling-cms-editor .button.is-danger.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-danger.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-danger.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-danger.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #fff #fff !important; }
-        .sling-cms-editor .button.is-danger.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-danger.is-outlined {
-          background-color: transparent;
-          border-color: #CB2138;
-          box-shadow: none;
-          color: #CB2138; }
-      .sling-cms-editor .button.is-danger.is-inverted.is-outlined {
-        background-color: transparent;
-        border-color: #fff;
-        color: #fff; }
-        .sling-cms-editor .button.is-danger.is-inverted.is-outlined:hover, .sling-cms-editor .button.is-danger.is-inverted.is-outlined.is-hovered, .sling-cms-editor .button.is-danger.is-inverted.is-outlined:focus, .sling-cms-editor .button.is-danger.is-inverted.is-outlined.is-focused {
-          background-color: #fff;
-          color: #CB2138; }
-        .sling-cms-editor .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .sling-cms-editor .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .sling-cms-editor .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .sling-cms-editor .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after {
-          border-color: transparent transparent #CB2138 #CB2138 !important; }
-        .sling-cms-editor .button.is-danger.is-inverted.is-outlined[disabled],
-        fieldset[disabled] .sling-cms-editor .button.is-danger.is-inverted.is-outlined {
-          background-color: transparent;
-          border-color: #fff;
-          box-shadow: none;
-          color: #fff; }
-      .sling-cms-editor .button.is-danger.is-light {
-        background-color: #fcedef;
-        color: #d3223a; }
-        .sling-cms-editor .button.is-danger.is-light:hover, .sling-cms-editor .button.is-danger.is-light.is-hovered {
-          background-color: #fae2e6;
-          border-color: transparent;
-          color: #d3223a; }
-        .sling-cms-editor .button.is-danger.is-light:active, .sling-cms-editor .button.is-danger.is-light.is-active {
-          background-color: #f9d8dc;
-          border-color: transparent;
-          color: #d3223a; }
-    .sling-cms-editor .button.is-small {
-      border-radius: 2px;
-      font-size: 0.75rem; }
-    .sling-cms-editor .button.is-normal {
-      font-size: 1rem; }
-    .sling-cms-editor .button.is-medium {
-      font-size: 1.25rem; }
-    .sling-cms-editor .button.is-large {
-      font-size: 1.5rem; }
-    .sling-cms-editor .button[disabled],
-    fieldset[disabled] .sling-cms-editor .button {
-      background-color: white;
-      border-color: #dbdbdb;
-      box-shadow: none;
-      opacity: 0.5; }
-    .sling-cms-editor .button.is-fullwidth {
-      display: flex;
-      width: 100%; }
-    .sling-cms-editor .button.is-loading {
-      color: transparent !important;
-      pointer-events: none; }
-      .sling-cms-editor .button.is-loading::after {
-        position: absolute;
-        left: calc(50% - (1em / 2));
-        top: calc(50% - (1em / 2));
-        position: absolute !important; }
-    .sling-cms-editor .button.is-static {
-      background-color: whitesmoke;
-      border-color: #dbdbdb;
-      color: #7a7a7a;
-      box-shadow: none;
-      pointer-events: none; }
-    .sling-cms-editor .button.is-rounded {
-      border-radius: 290486px;
-      padding-left: calc(1em + 0.25em);
-      padding-right: calc(1em + 0.25em); }
-  .sling-cms-editor .buttons {
-    align-items: center;
-    display: flex;
-    flex-wrap: wrap;
-    justify-content: flex-start; }
-    .sling-cms-editor .buttons .button {
-      margin-bottom: 0.5rem; }
-      .sling-cms-editor .buttons .button:not(:last-child):not(.is-fullwidth) {
-        margin-right: 0.5rem; }
-    .sling-cms-editor .buttons:last-child {
-      margin-bottom: -0.5rem; }
-    .sling-cms-editor .buttons:not(:last-child) {
-      margin-bottom: 1rem; }
-    .sling-cms-editor .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) {
-      border-radius: 2px;
-      font-size: 0.75rem; }
-    .sling-cms-editor .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) {
-      font-size: 1.25rem; }
-    .sling-cms-editor .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) {
-      font-size: 1.5rem; }
-    .sling-cms-editor .buttons.has-addons .button:not(:first-child) {
-      border-bottom-left-radius: 0;
-      border-top-left-radius: 0; }
-    .sling-cms-editor .buttons.has-addons .button:not(:last-child) {
-      border-bottom-right-radius: 0;
-      border-top-right-radius: 0;
-      margin-right: -1px; }
-    .sling-cms-editor .buttons.has-addons .button:last-child {
-      margin-right: 0; }
-    .sling-cms-editor .buttons.has-addons .button:hover, .sling-cms-editor .buttons.has-addons .button.is-hovered {
-      z-index: 2; }
-    .sling-cms-editor .buttons.has-addons .button:focus, .sling-cms-editor .buttons.has-addons .button.is-focused, .sling-cms-editor .buttons.has-addons .button:active, .sling-cms-editor .buttons.has-addons .button.is-active, .sling-cms-editor .buttons.has-addons .button.is-selected {
-      z-index: 3; }
-      .sling-cms-editor .buttons.has-addons .button:focus:hover, .sling-cms-editor .buttons.has-addons .button.is-focused:hover, .sling-cms-editor .buttons.has-addons .button:active:hover, .sling-cms-editor .buttons.has-addons .button.is-active:hover, .sling-cms-editor .buttons.has-addons .button.is-selected:hover {
-        z-index: 4; }
-    .sling-cms-editor .buttons.has-addons .button.is-expanded {
-      flex-grow: 1;
-      flex-shrink: 1; }
-    .sling-cms-editor .buttons.is-centered {
-      justify-content: center; }
-      .sling-cms-editor .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) {
-        margin-left: 0.25rem;
-        margin-right: 0.25rem; }
-    .sling-cms-editor .buttons.is-right {
-      justify-content: flex-end; }
-      .sling-cms-editor .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) {
-        margin-left: 0.25rem;
-        margin-right: 0.25rem; }
-  .sling-cms-editor .input, .sling-cms-editor .textarea, .sling-cms-editor .select select {
-    background-color: white;
-    border-color: #dbdbdb;
-    border-radius: 4px;
-    color: #363636; }
-    .sling-cms-editor .input::-moz-placeholder, .sling-cms-editor .textarea::-moz-placeholder, .sling-cms-editor .select select::-moz-placeholder {
-      color: rgba(54, 54, 54, 0.3); }
-    .sling-cms-editor .input::-webkit-input-placeholder, .sling-cms-editor .textarea::-webkit-input-placeholder, .sling-cms-editor .select select::-webkit-input-placeholder {
-      color: rgba(54, 54, 54, 0.3); }
-    .sling-cms-editor .input:-moz-placeholder, .sling-cms-editor .textarea:-moz-placeholder, .sling-cms-editor .select select:-moz-placeholder {
-      color: rgba(54, 54, 54, 0.3); }
-    .sling-cms-editor .input:-ms-input-placeholder, .sling-cms-editor .textarea:-ms-input-placeholder, .sling-cms-editor .select select:-ms-input-placeholder {
-      color: rgba(54, 54, 54, 0.3); }
-    .sling-cms-editor .input:hover, .sling-cms-editor .textarea:hover, .sling-cms-editor .select select:hover, .sling-cms-editor .is-hovered.input, .sling-cms-editor .is-hovered.textarea, .sling-cms-editor .select select.is-hovered {
-      border-color: #b5b5b5; }
-    .sling-cms-editor .input:focus, .sling-cms-editor .textarea:focus, .sling-cms-editor .select select:focus, .sling-cms-editor .is-focused.input, .sling-cms-editor .is-focused.textarea, .sling-cms-editor .select select.is-focused, .sling-cms-editor .input:active, .sling-cms-editor .textarea:active, .sling-cms-editor .select select:active, .sling-cms-editor .is-active.input, .sling-cms-editor .is-active.textarea, .sling-cms-editor .select select.is-active {
-      border-color: #282661;
-      box-shadow: 0 0 0 0.125em rgba(40, 38, 97, 0.25); }
-    .sling-cms-editor .input[disabled], .sling-cms-editor .textarea[disabled], .sling-cms-editor .select select[disabled],
-    fieldset[disabled] .sling-cms-editor .input,
-    fieldset[disabled] .sling-cms-editor .textarea,
-    fieldset[disabled] .sling-cms-editor .select select {
-      background-color: whitesmoke;
-      border-color: whitesmoke;
-      box-shadow: none;
-      color: #7a7a7a; }
-      .sling-cms-editor .input[disabled]::-moz-placeholder, .sling-cms-editor .textarea[disabled]::-moz-placeholder, .sling-cms-editor .select select[disabled]::-moz-placeholder,
-      fieldset[disabled] .sling-cms-editor .input::-moz-placeholder,
-      fieldset[disabled] .sling-cms-editor .textarea::-moz-placeholder,
-      fieldset[disabled] .sling-cms-editor .select select::-moz-placeholder {
-        color: rgba(122, 122, 122, 0.3); }
-      .sling-cms-editor .input[disabled]::-webkit-input-placeholder, .sling-cms-editor .textarea[disabled]::-webkit-input-placeholder, .sling-cms-editor .select select[disabled]::-webkit-input-placeholder,
-      fieldset[disabled] .sling-cms-editor .input::-webkit-input-placeholder,
-      fieldset[disabled] .sling-cms-editor .textarea::-webkit-input-placeholder,
-      fieldset[disabled] .sling-cms-editor .select select::-webkit-input-placeholder {
-        color: rgba(122, 122, 122, 0.3); }
-      .sling-cms-editor .input[disabled]:-moz-placeholder, .sling-cms-editor .textarea[disabled]:-moz-placeholder, .sling-cms-editor .select select[disabled]:-moz-placeholder,
-      fieldset[disabled] .sling-cms-editor .input:-moz-placeholder,
-      fieldset[disabled] .sling-cms-editor .textarea:-moz-placeholder,
-      fieldset[disabled] .sling-cms-editor .select select:-moz-placeholder {
-        color: rgba(122, 122, 122, 0.3); }
-      .sling-cms-editor .input[disabled]:-ms-input-placeholder, .sling-cms-editor .textarea[disabled]:-ms-input-placeholder, .sling-cms-editor .select select[disabled]:-ms-input-placeholder,
-      fieldset[disabled] .sling-cms-editor .input:-ms-input-placeholder,
-      fieldset[disabled] .sling-cms-editor .textarea:-ms-input-placeholder,
-      fieldset[disabled] .sling-cms-editor .select select:-ms-input-placeholder {
-        color: rgba(122, 122, 122, 0.3); }
-  .sling-cms-editor .input, .sling-cms-editor .textarea {
-    box-shadow: inset 0 0.0625em 0.125em rgba(10, 10, 10, 0.05);
-    max-width: 100%;
-    width: 100%; }
-    .sling-cms-editor .input[readonly], .sling-cms-editor .textarea[readonly] {
-      box-shadow: none; }
-    .sling-cms-editor .is-white.input, .sling-cms-editor .is-white.textarea {
-      border-color: white; }
-      .sling-cms-editor .is-white.input:focus, .sling-cms-editor .is-white.textarea:focus, .sling-cms-editor .is-white.is-focused.input, .sling-cms-editor .is-white.is-focused.textarea, .sling-cms-editor .is-white.input:active, .sling-cms-editor .is-white.textarea:active, .sling-cms-editor .is-white.is-active.input, .sling-cms-editor .is-white.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }
-    .sling-cms-editor .is-black.input, .sling-cms-editor .is-black.textarea {
-      border-color: #0a0a0a; }
-      .sling-cms-editor .is-black.input:focus, .sling-cms-editor .is-black.textarea:focus, .sling-cms-editor .is-black.is-focused.input, .sling-cms-editor .is-black.is-focused.textarea, .sling-cms-editor .is-black.input:active, .sling-cms-editor .is-black.textarea:active, .sling-cms-editor .is-black.is-active.input, .sling-cms-editor .is-black.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }
-    .sling-cms-editor .is-light.input, .sling-cms-editor .is-light.textarea {
-      border-color: whitesmoke; }
-      .sling-cms-editor .is-light.input:focus, .sling-cms-editor .is-light.textarea:focus, .sling-cms-editor .is-light.is-focused.input, .sling-cms-editor .is-light.is-focused.textarea, .sling-cms-editor .is-light.input:active, .sling-cms-editor .is-light.textarea:active, .sling-cms-editor .is-light.is-active.input, .sling-cms-editor .is-light.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }
-    .sling-cms-editor .is-dark.input, .sling-cms-editor .is-dark.textarea {
-      border-color: #363636; }
-      .sling-cms-editor .is-dark.input:focus, .sling-cms-editor .is-dark.textarea:focus, .sling-cms-editor .is-dark.is-focused.input, .sling-cms-editor .is-dark.is-focused.textarea, .sling-cms-editor .is-dark.input:active, .sling-cms-editor .is-dark.textarea:active, .sling-cms-editor .is-dark.is-active.input, .sling-cms-editor .is-dark.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }
-    .sling-cms-editor .is-primary.input, .sling-cms-editor .is-primary.textarea {
-      border-color: #9E2165; }
-      .sling-cms-editor .is-primary.input:focus, .sling-cms-editor .is-primary.textarea:focus, .sling-cms-editor .is-primary.is-focused.input, .sling-cms-editor .is-primary.is-focused.textarea, .sling-cms-editor .is-primary.input:active, .sling-cms-editor .is-primary.textarea:active, .sling-cms-editor .is-primary.is-active.input, .sling-cms-editor .is-primary.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(158, 33, 101, 0.25); }
-    .sling-cms-editor .is-link.input, .sling-cms-editor .is-link.textarea {
-      border-color: #282661; }
-      .sling-cms-editor .is-link.input:focus, .sling-cms-editor .is-link.textarea:focus, .sling-cms-editor .is-link.is-focused.input, .sling-cms-editor .is-link.is-focused.textarea, .sling-cms-editor .is-link.input:active, .sling-cms-editor .is-link.textarea:active, .sling-cms-editor .is-link.is-active.input, .sling-cms-editor .is-link.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(40, 38, 97, 0.25); }
-    .sling-cms-editor .is-info.input, .sling-cms-editor .is-info.textarea {
-      border-color: #3298dc; }
-      .sling-cms-editor .is-info.input:focus, .sling-cms-editor .is-info.textarea:focus, .sling-cms-editor .is-info.is-focused.input, .sling-cms-editor .is-info.is-focused.textarea, .sling-cms-editor .is-info.input:active, .sling-cms-editor .is-info.textarea:active, .sling-cms-editor .is-info.is-active.input, .sling-cms-editor .is-info.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); }
-    .sling-cms-editor .is-success.input, .sling-cms-editor .is-success.textarea {
-      border-color: #48c774; }
-      .sling-cms-editor .is-success.input:focus, .sling-cms-editor .is-success.textarea:focus, .sling-cms-editor .is-success.is-focused.input, .sling-cms-editor .is-success.is-focused.textarea, .sling-cms-editor .is-success.input:active, .sling-cms-editor .is-success.textarea:active, .sling-cms-editor .is-success.is-active.input, .sling-cms-editor .is-success.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); }
-    .sling-cms-editor .is-warning.input, .sling-cms-editor .is-warning.textarea {
-      border-color: #EA7826; }
-      .sling-cms-editor .is-warning.input:focus, .sling-cms-editor .is-warning.textarea:focus, .sling-cms-editor .is-warning.is-focused.input, .sling-cms-editor .is-warning.is-focused.textarea, .sling-cms-editor .is-warning.input:active, .sling-cms-editor .is-warning.textarea:active, .sling-cms-editor .is-warning.is-active.input, .sling-cms-editor .is-warning.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(234, 120, 38, 0.25); }
-    .sling-cms-editor .is-danger.input, .sling-cms-editor .is-danger.textarea {
-      border-color: #CB2138; }
-      .sling-cms-editor .is-danger.input:focus, .sling-cms-editor .is-danger.textarea:focus, .sling-cms-editor .is-danger.is-focused.input, .sling-cms-editor .is-danger.is-focused.textarea, .sling-cms-editor .is-danger.input:active, .sling-cms-editor .is-danger.textarea:active, .sling-cms-editor .is-danger.is-active.input, .sling-cms-editor .is-danger.is-active.textarea {
-        box-shadow: 0 0 0 0.125em rgba(203, 33, 56, 0.25); }
-    .sling-cms-editor .is-small.input, .sling-cms-editor .is-small.textarea {
-      border-radius: 2px;
-      font-size: 0.75rem; }
-    .sling-cms-editor .is-medium.input, .sling-cms-editor .is-medium.textarea {
-      font-size: 1.25rem; }
-    .sling-cms-editor .is-large.input, .sling-cms-editor .is-large.textarea {
-      font-size: 1.5rem; }
-    .sling-cms-editor .is-fullwidth.input, .sling-cms-editor .is-fullwidth.textarea {
-      display: block;
-      width: 100%; }
-    .sling-cms-editor .is-inline.input, .sling-cms-editor .is-inline.textarea {
-      display: inline;
-      width: auto; }
-  .sling-cms-editor .input.is-rounded {
-    border-radius: 290486px;
-    padding-left: calc(calc(0.75em - 1px) + 0.375em);
-    padding-right: calc(calc(0.75em - 1px) + 0.375em); }
-  .sling-cms-editor .input.is-static {
-    background-color: transparent;
-    border-color: transparent;
-    box-shadow: none;
-    padding-left: 0;
-    padding-right: 0; }
-  .sling-cms-editor .textarea {
-    display: block;
-    max-width: 100%;
-    min-width: 100%;
-    padding: calc(0.75em - 1px);
-    resize: vertical; }
-    .sling-cms-editor .textarea:not([rows]) {
-      max-height: 40em;
-      min-height: 8em; }
-    .sling-cms-editor .textarea[rows] {
-      height: initial; }
-    .sling-cms-editor .textarea.has-fixed-size {
-      resize: none; }
-  .sling-cms-editor .checkbox, .sling-cms-editor .radio {
-    cursor: pointer;
-    display: inline-block;
-    line-height: 1.25;
-    position: relative; }
-    .sling-cms-editor .checkbox input, .sling-cms-editor .radio input {
-      cursor: pointer; }
-    .sling-cms-editor .checkbox:hover, .sling-cms-editor .radio:hover {
-      color: #363636; }
-    .sling-cms-editor .checkbox[disabled], .sling-cms-editor .radio[disabled],
-    fieldset[disabled] .sling-cms-editor .checkbox,
-    fieldset[disabled] .sling-cms-editor .radio {
-      color: #7a7a7a;
-      cursor: not-allowed; }
-  .sling-cms-editor .radio + .radio {
-    margin-left: 0.5em; }
-  .sling-cms-editor .select {
-    display: inline-block;
-    max-width: 100%;
-    position: relative;
-    vertical-align: top; }
-    .sling-cms-editor .select:not(.is-multiple) {
-      height: 2.5em; }
-    .sling-cms-editor .select:not(.is-multiple):not(.is-loading)::after {
-      border-color: #282661;
-      right: 1.125em;
-      z-index: 4; }
-    .sling-cms-editor .select.is-rounded select {
-      border-radius: 290486px;
-      padding-left: 1em; }
-    .sling-cms-editor .select select {
-      cursor: pointer;
-      display: block;
-      font-size: 1em;
-      max-width: 100%;
-      outline: none; }
-      .sling-cms-editor .select select::-ms-expand {
-        display: none; }
-      .sling-cms-editor .select select[disabled]:hover,
-      fieldset[disabled] .sling-cms-editor .select select:hover {
-        border-color: whitesmoke; }
-      .sling-cms-editor .select select:not([multiple]) {
-        padding-right: 2.5em; }
-      .sling-cms-editor .select select[multiple] {
-        height: auto;
-        padding: 0; }
-        .sling-cms-editor .select select[multiple] option {
-          padding: 0.5em 1em; }
-    .sling-cms-editor .select:not(.is-multiple):not(.is-loading):hover::after {
-      border-color: #363636; }
-    .sling-cms-editor .select.is-white:not(:hover)::after {
-      border-color: white; }
-    .sling-cms-editor .select.is-white select {
-      border-color: white; }
-      .sling-cms-editor .select.is-white select:hover, .sling-cms-editor .select.is-white select.is-hovered {
-        border-color: #f2f2f2; }
-      .sling-cms-editor .select.is-white select:focus, .sling-cms-editor .select.is-white select.is-focused, .sling-cms-editor .select.is-white select:active, .sling-cms-editor .select.is-white select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); }
-    .sling-cms-editor .select.is-black:not(:hover)::after {
-      border-color: #0a0a0a; }
-    .sling-cms-editor .select.is-black select {
-      border-color: #0a0a0a; }
-      .sling-cms-editor .select.is-black select:hover, .sling-cms-editor .select.is-black select.is-hovered {
-        border-color: black; }
-      .sling-cms-editor .select.is-black select:focus, .sling-cms-editor .select.is-black select.is-focused, .sling-cms-editor .select.is-black select:active, .sling-cms-editor .select.is-black select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); }
-    .sling-cms-editor .select.is-light:not(:hover)::after {
-      border-color: whitesmoke; }
-    .sling-cms-editor .select.is-light select {
-      border-color: whitesmoke; }
-      .sling-cms-editor .select.is-light select:hover, .sling-cms-editor .select.is-light select.is-hovered {
-        border-color: #e8e8e8; }
-      .sling-cms-editor .select.is-light select:focus, .sling-cms-editor .select.is-light select.is-focused, .sling-cms-editor .select.is-light select:active, .sling-cms-editor .select.is-light select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); }
-    .sling-cms-editor .select.is-dark:not(:hover)::after {
-      border-color: #363636; }
-    .sling-cms-editor .select.is-dark select {
-      border-color: #363636; }
-      .sling-cms-editor .select.is-dark select:hover, .sling-cms-editor .select.is-dark select.is-hovered {
-        border-color: #292929; }
-      .sling-cms-editor .select.is-dark select:focus, .sling-cms-editor .select.is-dark select.is-focused, .sling-cms-editor .select.is-dark select:active, .sling-cms-editor .select.is-dark select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); }
-    .sling-cms-editor .select.is-primary:not(:hover)::after {
-      border-color: #9E2165; }
-    .sling-cms-editor .select.is-primary select {
-      border-color: #9E2165; }
-      .sling-cms-editor .select.is-primary select:hover, .sling-cms-editor .select.is-primary select.is-hovered {
-        border-color: #891d58; }
-      .sling-cms-editor .select.is-primary select:focus, .sling-cms-editor .select.is-primary select.is-focused, .sling-cms-editor .select.is-primary select:active, .sling-cms-editor .select.is-primary select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(158, 33, 101, 0.25); }
-    .sling-cms-editor .select.is-link:not(:hover)::after {
-      border-color: #282661; }
-    .sling-cms-editor .select.is-link select {
-      border-color: #282661; }
-      .sling-cms-editor .select.is-link select:hover, .sling-cms-editor .select.is-link select.is-hovered {
-        border-color: #201f4f; }
-      .sling-cms-editor .select.is-link select:focus, .sling-cms-editor .select.is-link select.is-focused, .sling-cms-editor .select.is-link select:active, .sling-cms-editor .select.is-link select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(40, 38, 97, 0.25); }
-    .sling-cms-editor .select.is-info:not(:hover)::after {
-      border-color: #3298dc; }
-    .sling-cms-editor .select.is-info select {
-      border-color: #3298dc; }
-      .sling-cms-editor .select.is-info select:hover, .sling-cms-editor .select.is-info select.is-hovered {
-        border-color: #238cd1; }
-      .sling-cms-editor .select.is-info select:focus, .sling-cms-editor .select.is-info select.is-focused, .sling-cms-editor .select.is-info select:active, .sling-cms-editor .select.is-info select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(50, 152, 220, 0.25); }
-    .sling-cms-editor .select.is-success:not(:hover)::after {
-      border-color: #48c774; }
-    .sling-cms-editor .select.is-success select {
-      border-color: #48c774; }
-      .sling-cms-editor .select.is-success select:hover, .sling-cms-editor .select.is-success select.is-hovered {
-        border-color: #3abb67; }
-      .sling-cms-editor .select.is-success select:focus, .sling-cms-editor .select.is-success select.is-focused, .sling-cms-editor .select.is-success select:active, .sling-cms-editor .select.is-success select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(72, 199, 116, 0.25); }
-    .sling-cms-editor .select.is-warning:not(:hover)::after {
-      border-color: #EA7826; }
-    .sling-cms-editor .select.is-warning select {
-      border-color: #EA7826; }
-      .sling-cms-editor .select.is-warning select:hover, .sling-cms-editor .select.is-warning select.is-hovered {
-        border-color: #e16b16; }
-      .sling-cms-editor .select.is-warning select:focus, .sling-cms-editor .select.is-warning select.is-focused, .sling-cms-editor .select.is-warning select:active, .sling-cms-editor .select.is-warning select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(234, 120, 38, 0.25); }
-    .sling-cms-editor .select.is-danger:not(:hover)::after {
-      border-color: #CB2138; }
-    .sling-cms-editor .select.is-danger select {
-      border-color: #CB2138; }
-      .sling-cms-editor .select.is-danger select:hover, .sling-cms-editor .select.is-danger select.is-hovered {
-        border-color: #b51d32; }
-      .sling-cms-editor .select.is-danger select:focus, .sling-cms-editor .select.is-danger select.is-focused, .sling-cms-editor .select.is-danger select:active, .sling-cms-editor .select.is-danger select.is-active {
-        box-shadow: 0 0 0 0.125em rgba(203, 33, 56, 0.25); }
-    .sling-cms-editor .select.is-small {
-      border-radius: 2px;
-      font-size: 0.75rem; }
-    .sling-cms-editor .select.is-medium {
-      font-size: 1.25rem; }
-    .sling-cms-editor .select.is-large {
-      font-size: 1.5rem; }
-    .sling-cms-editor .select.is-disabled::after {
-      border-color: #7a7a7a; }
-    .sling-cms-editor .select.is-fullwidth {
-      width: 100%; }
-      .sling-cms-editor .select.is-fullwidth select {
-        width: 100%; }
-    .sling-cms-editor .select.is-loading::after {
-      margin-top: 0;
-      position: absolute;
-      right: 0.625em;
-      top: 0.625em;
-      transform: none; }
-    .sling-cms-editor .select.is-loading.is-small:after {
-      font-size: 0.75rem; }
-    .sling-cms-editor .select.is-loading.is-medium:after {
-      font-size: 1.25rem; }
-    .sling-cms-editor .select.is-loading.is-large:after {
-      font-size: 1.5rem; }
-  .sling-cms-editor .file {
-    align-items: stretch;
-    display: flex;
-    justify-content: flex-start;
-    position: relative; }
-    .sling-cms-editor .file.is-white .file-cta {
-      background-color: white;
-      border-color: transparent;
-      color: #0a0a0a; }
-    .sling-cms-editor .file.is-white:hover .file-cta, .sling-cms-editor .file.is-white.is-hovered .file-cta {
-      background-color: #f9f9f9;
-      border-color: transparent;
-      color: #0a0a0a; }
-    .sling-cms-editor .file.is-white:focus .file-cta, .sling-cms-editor .file.is-white.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25);
-      color: #0a0a0a; }
-    .sling-cms-editor .file.is-white:active .file-cta, .sling-cms-editor .file.is-white.is-active .file-cta {
-      background-color: #f2f2f2;
-      border-color: transparent;
-      color: #0a0a0a; }
-    .sling-cms-editor .file.is-black .file-cta {
-      background-color: #0a0a0a;
-      border-color: transparent;
-      color: white; }
-    .sling-cms-editor .file.is-black:hover .file-cta, .sling-cms-editor .file.is-black.is-hovered .file-cta {
-      background-color: #040404;
-      border-color: transparent;
-      color: white; }
-    .sling-cms-editor .file.is-black:focus .file-cta, .sling-cms-editor .file.is-black.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25);
-      color: white; }
-    .sling-cms-editor .file.is-black:active .file-cta, .sling-cms-editor .file.is-black.is-active .file-cta {
-      background-color: black;
-      border-color: transparent;
-      color: white; }
-    .sling-cms-editor .file.is-light .file-cta {
-      background-color: whitesmoke;
-      border-color: transparent;
-      color: rgba(0, 0, 0, 0.7); }
-    .sling-cms-editor .file.is-light:hover .file-cta, .sling-cms-editor .file.is-light.is-hovered .file-cta {
-      background-color: #eeeeee;
-      border-color: transparent;
-      color: rgba(0, 0, 0, 0.7); }
-    .sling-cms-editor .file.is-light:focus .file-cta, .sling-cms-editor .file.is-light.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25);
-      color: rgba(0, 0, 0, 0.7); }
-    .sling-cms-editor .file.is-light:active .file-cta, .sling-cms-editor .file.is-light.is-active .file-cta {
-      background-color: #e8e8e8;
-      border-color: transparent;
-      color: rgba(0, 0, 0, 0.7); }
-    .sling-cms-editor .file.is-dark .file-cta {
-      background-color: #363636;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-dark:hover .file-cta, .sling-cms-editor .file.is-dark.is-hovered .file-cta {
-      background-color: #2f2f2f;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-dark:focus .file-cta, .sling-cms-editor .file.is-dark.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25);
-      color: #fff; }
-    .sling-cms-editor .file.is-dark:active .file-cta, .sling-cms-editor .file.is-dark.is-active .file-cta {
-      background-color: #292929;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-primary .file-cta {
-      background-color: #9E2165;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-primary:hover .file-cta, .sling-cms-editor .file.is-primary.is-hovered .file-cta {
-      background-color: #931f5e;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-primary:focus .file-cta, .sling-cms-editor .file.is-primary.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(158, 33, 101, 0.25);
-      color: #fff; }
-    .sling-cms-editor .file.is-primary:active .file-cta, .sling-cms-editor .file.is-primary.is-active .file-cta {
-      background-color: #891d58;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-link .file-cta {
-      background-color: #282661;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-link:hover .file-cta, .sling-cms-editor .file.is-link.is-hovered .file-cta {
-      background-color: #242258;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-link:focus .file-cta, .sling-cms-editor .file.is-link.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(40, 38, 97, 0.25);
-      color: #fff; }
-    .sling-cms-editor .file.is-link:active .file-cta, .sling-cms-editor .file.is-link.is-active .file-cta {
-      background-color: #201f4f;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-info .file-cta {
-      background-color: #3298dc;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-info:hover .file-cta, .sling-cms-editor .file.is-info.is-hovered .file-cta {
-      background-color: #2793da;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-info:focus .file-cta, .sling-cms-editor .file.is-info.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(50, 152, 220, 0.25);
-      color: #fff; }
-    .sling-cms-editor .file.is-info:active .file-cta, .sling-cms-editor .file.is-info.is-active .file-cta {
-      background-color: #238cd1;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-success .file-cta {
-      background-color: #48c774;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-success:hover .file-cta, .sling-cms-editor .file.is-success.is-hovered .file-cta {
-      background-color: #3ec46d;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-success:focus .file-cta, .sling-cms-editor .file.is-success.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(72, 199, 116, 0.25);
-      color: #fff; }
-    .sling-cms-editor .file.is-success:active .file-cta, .sling-cms-editor .file.is-success.is-active .file-cta {
-      background-color: #3abb67;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-warning .file-cta {
-      background-color: #EA7826;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-warning:hover .file-cta, .sling-cms-editor .file.is-warning.is-hovered .file-cta {
-      background-color: #e9711a;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-warning:focus .file-cta, .sling-cms-editor .file.is-warning.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(234, 120, 38, 0.25);
-      color: #fff; }
-    .sling-cms-editor .file.is-warning:active .file-cta, .sling-cms-editor .file.is-warning.is-active .file-cta {
-      background-color: #e16b16;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-danger .file-cta {
-      background-color: #CB2138;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-danger:hover .file-cta, .sling-cms-editor .file.is-danger.is-hovered .file-cta {
-      background-color: #c01f35;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-danger:focus .file-cta, .sling-cms-editor .file.is-danger.is-focused .file-cta {
-      border-color: transparent;
-      box-shadow: 0 0 0.5em rgba(203, 33, 56, 0.25);
-      color: #fff; }
-    .sling-cms-editor .file.is-danger:active .file-cta, .sling-cms-editor .file.is-danger.is-active .file-cta {
-      background-color: #b51d32;
-      border-color: transparent;
-      color: #fff; }
-    .sling-cms-editor .file.is-small {
-      font-size: 0.75rem; }
-    .sling-cms-editor .file.is-medium {
-      font-size: 1.25rem; }
-      .sling-cms-editor .file.is-medium .file-icon .fa {
-        font-size: 21px; }
-    .sling-cms-editor .file.is-large {
-      font-size: 1.5rem; }
-      .sling-cms-editor .file.is-large .file-icon .fa {
-        font-size: 28px; }
-    .sling-cms-editor .file.has-name .file-cta {
-      border-bottom-right-radius: 0;
-      border-top-right-radius: 0; }
-    .sling-cms-editor .file.has-name .file-name {
-      border-bottom-left-radius: 0;
-      border-top-left-radius: 0; }
-    .sling-cms-editor .file.has-name.is-empty .file-cta {
-      border-radius: 4px; }
-    .sling-cms-editor .file.has-name.is-empty .file-name {
-      display: none; }
-    .sling-cms-editor .file.is-boxed .file-label {
-      flex-direction: column; }
-    .sling-cms-editor .file.is-boxed .file-cta {
-      flex-direction: column;
-      height: auto;
-      padding: 1em 3em; }
-    .sling-cms-editor .file.is-boxed .file-name {
-      border-width: 0 1px 1px; }
-    .sling-cms-editor .file.is-boxed .file-icon {
-      height: 1.5em;
-      width: 1.5em; }
-      .sling-cms-editor .file.is-boxed .file-icon .fa {
-        font-size: 21px; }
-    .sling-cms-editor .file.is-boxed.is-small .file-icon .fa {
-      font-size: 14px; }
-    .sling-cms-editor .file.is-boxed.is-medium .file-icon .fa {
-      font-size: 28px; }
-    .sling-cms-editor .file.is-boxed.is-large .file-icon .fa {
-      font-size: 35px; }
-    .sling-cms-editor .file.is-boxed.has-name .file-cta {
-      border-radius: 4px 4px 0 0; }
-    .sling-cms-editor .file.is-boxed.has-name .file-name {
-      border-radius: 0 0 4px 4px;
-      border-width: 0 1px 1px; }
-    .sling-cms-editor .file.is-centered {
-      justify-content: center; }
-    .sling-cms-editor .file.is-fullwidth .file-label {
-      width: 100%; }
-    .sling-cms-editor .file.is-fullwidth .file-name {
-      flex-grow: 1;
-      max-width: none; }
-    .sling-cms-editor .file.is-right {
-      justify-content: flex-end; }
-      .sling-cms-editor .file.is-right .file-cta {
-        border-radius: 0 4px 4px 0; }
-      .sling-cms-editor .file.is-right .file-name {
-        border-radius: 4px 0 0 4px;
-        border-width: 1px 0 1px 1px;
-        order: -1; }
-  .sling-cms-editor .file-label {
-    align-items: stretch;
-    display: flex;
-    cursor: pointer;
-    justify-content: flex-start;
-    overflow: hidden;
-    position: relative; }
-    .sling-cms-editor .file-label:hover .file-cta {
-      background-color: #eeeeee;
-      color: #363636; }
-    .sling-cms-editor .file-label:hover .file-name {
-      border-color: #d5d5d5; }
-    .sling-cms-editor .file-label:active .file-cta {
-      background-color: #e8e8e8;
-      color: #363636; }
-    .sling-cms-editor .file-label:active .file-name {
-      border-color: #cfcfcf; }
-  .sling-cms-editor .file-input {
-    height: 100%;
-    left: 0;
-    opacity: 0;
-    outline: none;
-    position: absolute;
-    top: 0;
-    width: 100%; }
-  .sling-cms-editor .file-cta,
-  .sling-cms-editor .file-name {
-    border-color: #dbdbdb;
-    border-radius: 4px;
-    font-size: 1em;
-    padding-left: 1em;
-    padding-right: 1em;
-    white-space: nowrap; }
-  .sling-cms-editor .file-cta {
-    background-color: whitesmoke;
-    color: #4a4a4a; }
-  .sling-cms-editor .file-name {
-    border-color: #dbdbdb;
-    border-style: solid;
-    border-width: 1px 1px 1px 0;
-    display: block;
-    max-width: 16em;
-    overflow: hidden;
-    text-align: left;
-    text-overflow: ellipsis; }
-  .sling-cms-editor .file-icon {
-    align-items: center;
-    display: flex;
-    height: 1em;
-    justify-content: center;
-    margin-right: 0.5em;
-    width: 1em; }
-    .sling-cms-editor .file-icon .fa {
-      font-size: 14px; }
-  .sling-cms-editor .label {
-    color: #363636;
-    display: block;
-    font-size: 1rem;
-    font-weight: 700; }
-    .sling-cms-editor .label:not(:last-child) {
-      margin-bottom: 0.5em; }
-    .sling-cms-editor .label.is-small {
-      font-size: 0.75rem; }
-    .sling-cms-editor .label.is-medium {
-      font-size: 1.25rem; }
-    .sling-cms-editor .label.is-large {
-      font-size: 1.5rem; }
-  .sling-cms-editor .help {
-    display: block;
-    font-size: 0.75rem;
-    margin-top: 0.25rem; }
-    .sling-cms-editor .help.is-white {
-      color: white; }
-    .sling-cms-editor .help.is-black {
-      color: #0a0a0a; }
-    .sling-cms-editor .help.is-light {
-      color: whitesmoke; }
-    .sling-cms-editor .help.is-dark {
-      color: #363636; }
-    .sling-cms-editor .help.is-primary {
-      color: #9E2165; }
-    .sling-cms-editor .help.is-link {
-      color: #282661; }
-    .sling-cms-editor .help.is-info {
-      color: #3298dc; }
-    .sling-cms-editor .help.is-success {
-      color: #48c774; }
-    .sling-cms-editor .help.is-warning {
-      color: #EA7826; }
-    .sling-cms-editor .help.is-danger {
-      color: #CB2138; }
-  .sling-cms-editor .field:not(:last-child) {
-    margin-bottom: 0.75rem; }
-  .sling-cms-editor .field.has-addons {
-    display: flex;
-    justify-content: flex-start; }
-    .sling-cms-editor .field.has-addons .control:not(:last-child) {
-      margin-right: -1px; }
-    .sling-cms-editor .field.has-addons .control:not(:first-child):not(:last-child) .button,
-    .sling-cms-editor .field.has-addons .control:not(:first-child):not(:last-child) .input,
-    .sling-cms-editor .field.has-addons .control:not(:first-child):not(:last-child) .select select {
-      border-radius: 0; }
-    .sling-cms-editor .field.has-addons .control:first-child:not(:only-child) .button,
-    .sling-cms-editor .field.has-addons .control:first-child:not(:only-child) .input,
-    .sling-cms-editor .field.has-addons .control:first-child:not(:only-child) .select select {
-      border-bottom-right-radius: 0;
-      border-top-right-radius: 0; }
-    .sling-cms-editor .field.has-addons .control:last-child:not(:only-child) .button,
-    .sling-cms-editor .field.has-addons .control:last-child:not(:only-child) .input,
-    .sling-cms-editor .field.has-addons .control:last-child:not(:only-child) .select select {
-      border-bottom-left-radius: 0;
-      border-top-left-radius: 0; }
-    .sling-cms-editor .field.has-addons .control .button:not([disabled]):hover, .sling-cms-editor .field.has-addons .control .button:not([disabled]).is-hovered,
-    .sling-cms-editor .field.has-addons .control .input:not([disabled]):hover,
-    .sling-cms-editor .field.has-addons .control .input:not([disabled]).is-hovered,
-    .sling-cms-editor .field.has-addons .control .select select:not([disabled]):hover,
-    .sling-cms-editor .field.has-addons .control .select select:not([disabled]).is-hovered {
-      z-index: 2; }
-    .sling-cms-editor .field.has-addons .control .button:not([disabled]):focus, .sling-cms-editor .field.has-addons .control .button:not([disabled]).is-focused, .sling-cms-editor .field.has-addons .control .button:not([disabled]):active, .sling-cms-editor .field.has-addons .control .button:not([disabled]).is-active,
-    .sling-cms-editor .field.has-addons .control .input:not([disabled]):focus,
-    .sling-cms-editor .field.has-addons .control .input:not([disabled]).is-focused,
-    .sling-cms-editor .field.has-addons .control .input:not([disabled]):active,
-    .sling-cms-editor .field.has-addons .control .input:not([disabled]).is-active,
-    .sling-cms-editor .field.has-addons .control .select select:not([disabled]):focus,
-    .sling-cms-editor .field.has-addons .control .select select:not([disabled]).is-focused,
-    .sling-cms-editor .field.has-addons .control .select select:not([disabled]):active,
-    .sling-cms-editor .field.has-addons .control .select select:not([disabled]).is-active {
-      z-index: 3; }
-      .sling-cms-editor .field.has-addons .control .button:not([disabled]):focus:hover, .sling-cms-editor .field.has-addons .control .button:not([disabled]).is-focused:hover, .sling-cms-editor .field.has-addons .control .button:not([disabled]):active:hover, .sling-cms-editor .field.has-addons .control .button:not([disabled]).is-active:hover,
-      .sling-cms-editor .field.has-addons .control .input:not([disabled]):focus:hover,
-      .sling-cms-editor .field.has-addons .control .input:not([disabled]).is-focused:hover,
-      .sling-cms-editor .field.has-addons .control .input:not([disabled]):active:hover,
-      .sling-cms-editor .field.has-addons .control .input:not([disabled]).is-active:hover,
-      .sling-cms-editor .field.has-addons .control .select select:not([disabled]):focus:hover,
-      .sling-cms-editor .field.has-addons .control .select select:not([disabled]).is-focused:hover,
-      .sling-cms-editor .field.has-addons .control .select select:not([disabled]):active:hover,
-      .sling-cms-editor .field.has-addons .control .select select:not([disabled]).is-active:hover {
-        z-index: 4; }
-    .sling-cms-editor .field.has-addons .control.is-expanded {
-      flex-grow: 1;
-      flex-shrink: 1; }
-    .sling-cms-editor .field.has-addons.has-addons-centered {
-      justify-content: center; }
-    .sling-cms-editor .field.has-addons.has-addons-right {
-      justify-content: flex-end; }
-    .sling-cms-editor .field.has-addons.has-addons-fullwidth .control {
-      flex-grow: 1;
-      flex-shrink: 0; }
-  .sling-cms-editor .field.is-grouped {
-    display: flex;
-    justify-content: flex-start; }
-    .sling-cms-editor .field.is-grouped > .control {
-      flex-shrink: 0; }
-      .sling-cms-editor .field.is-grouped > .control:not(:last-child) {
-        margin-bottom: 0;
-        margin-right: 0.75rem; }
-      .sling-cms-editor .field.is-grouped > .control.is-expanded {
-        flex-grow: 1;
-        flex-shrink: 1; }
-    .sling-cms-editor .field.is-grouped.is-grouped-centered {
-      justify-content: center; }
-    .sling-cms-editor .field.is-grouped.is-grouped-right {
-      justify-content: flex-end; }
-    .sling-cms-editor .field.is-grouped.is-grouped-multiline {
-      flex-wrap: wrap; }
-      .sling-cms-editor .field.is-grouped.is-grouped-multiline > .control:last-child, .sling-cms-editor .field.is-grouped.is-grouped-multiline > .control:not(:last-child) {
-        margin-bottom: 0.75rem; }
-      .sling-cms-editor .field.is-grouped.is-grouped-multiline:last-child {
-        margin-bottom: -0.75rem; }
-      .sling-cms-editor .field.is-grouped.is-grouped-multiline:not(:last-child) {
-        margin-bottom: 0; }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .field.is-horizontal {
-      display: flex; } }
-  .sling-cms-editor .field-label .label {
-    font-size: inherit; }
-  @media screen and (max-width: 768px) {
-    .sling-cms-editor .field-label {
-      margin-bottom: 0.5rem; } }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .field-label {
-      flex-basis: 0;
-      flex-grow: 1;
-      flex-shrink: 0;
-      margin-right: 1.5rem;
-      text-align: right; }
-      .sling-cms-editor .field-label.is-small {
-        font-size: 0.75rem;
-        padding-top: 0.375em; }
-      .sling-cms-editor .field-label.is-normal {
-        padding-top: 0.375em; }
-      .sling-cms-editor .field-label.is-medium {
-        font-size: 1.25rem;
-        padding-top: 0.375em; }
-      .sling-cms-editor .field-label.is-large {
-        font-size: 1.5rem;
-        padding-top: 0.375em; } }
-  .sling-cms-editor .field-body .field .field {
-    margin-bottom: 0; }
-  @media screen and (min-width: 769px), print {
-    .sling-cms-editor .field-body {
-      display: flex;
-      flex-basis: 0;
-      flex-grow: 5;
-      flex-shrink: 1; }
-      .sling-cms-editor .field-body .field {
-        margin-bottom: 0; }
-      .sling-cms-editor .field-body > .field {
-        flex-shrink: 1; }
-        .sling-cms-editor .field-body > .field:not(.is-narrow) {
-          flex-grow: 1; }
-        .sling-cms-editor .field-body > .field:not(:last-child) {
-          margin-right: 0.75rem; } }
-  .sling-cms-editor .control {
-    box-sizing: border-box;
-    clear: both;
-    font-size: 1rem;
-    position: relative;
-    text-align: left; }
-    .sling-cms-editor .control.has-icons-left .input:focus ~ .icon,
-    .sling-cms-editor .control.has-icons-left .select:focus ~ .icon, .sling-cms-editor .control.has-icons-right .input:focus ~ .icon,
-    .sling-cms-editor .control.has-icons-right .select:focus ~ .icon {
-      color: #4a4a4a; }
-    .sling-cms-editor .control.has-icons-left .input.is-small ~ .icon,
-    .sling-cms-editor .control.has-icons-left .select.is-small ~ .icon, .sling-cms-editor .control.has-icons-right .input.is-small ~ .icon,
-    .sling-cms-editor .control.has-icons-right .select.is-small ~ .icon {
-      font-size: 0.75rem; }
-    .sling-cms-editor .control.has-icons-left .input.is-medium ~ .icon,
-    .sling-cms-editor .control.has-icons-left .select.is-medium ~ .icon, .sling-cms-editor .control.has-icons-right .input.is-medium ~ .icon,
-    .sling-cms-editor .control.has-icons-right .select.is-medium ~ .icon {
-      font-size: 1.25rem; }
-    .sling-cms-editor .control.has-icons-left .input.is-large ~ .icon,
-    .sling-cms-editor .control.has-icons-left .select.is-large ~ .icon, .sling-cms-editor .control.has-icons-right .input.is-large ~ .icon,
-    .sling-cms-editor .control.has-icons-right .select.is-large ~ .icon {
-      font-size: 1.5rem; }
-    .sling-cms-editor .control.has-icons-left .icon, .sling-cms-editor .control.has-icons-right .icon {
-      color: #dbdbdb;
-      height: 2.5em;
-      pointer-events: none;
-      position: absolute;
-      top: 0;
-      width: 2.5em;
-      z-index: 4; }
-    .sling-cms-editor .control.has-icons-left .input,
-    .sling-cms-editor .control.has-icons-left .select select {
-      padding-left: 2.5em; }
-    .sling-cms-editor .control.has-icons-left .icon.is-left {
-      left: 0; }
-    .sling-cms-editor .control.has-icons-right .input,
-    .sling-cms-editor .control.has-icons-right .select select {
-      padding-right: 2.5em; }
-    .sling-cms-editor .control.has-icons-right .icon.is-right {
-      right: 0; }
-    .sling-cms-editor .control.is-loading::after {
-      position: absolute !important;
-      right: 0.625em;
-      top: 0.625em;
-      z-index: 4; }
-    .sling-cms-editor .control.is-loading.is-small:after {
-      font-size: 0.75rem; }
-    .sling-cms-editor .control.is-loading.is-medium:after {
-      font-size: 1.25rem; }
-    .sling-cms-editor .control.is-loading.is-large:after {
-      font-size: 1.5rem; }
-  .sling-cms-editor .icon {
-    align-items: center;
-    display: inline-flex;
-    justify-content: center;
-    height: 1.5rem;
-    width: 1.5rem; }
-    .sling-cms-editor .icon.is-small {
-      height: 1rem;
-      width: 1rem; }
-    .sling-cms-editor .icon.is-medium {
-      height: 2rem;
-      width: 2rem; }
-    .sling-cms-editor .icon.is-large {
-      height: 3rem;
-      width: 3rem; }
-  .sling-cms-editor .level {
-    align-items: center;
-    justify-content: space-between; }
-    .sling-cms-editor .level code {
-      border-radius: 4px; }
-    .sling-cms-editor .level img {
-      display: inline-block;
-      vertical-align: top; }
-    .sling-cms-editor .level.is-mobile {
-      display: flex; }
-      .sling-cms-editor .level.is-mobile .level-left,
-      .sling-cms-editor .level.is-mobile .level-right {
-        display: flex; }
-      .sling-cms-editor .level.is-mobile .level-left + .level-right {
-        margin-top: 0; }
-      .sling-cms-editor .level.is-mobile .level-item:not(:last-child) {
-        margin-bottom: 0;
-        margin-right: 0.75rem; }
-      .sling-cms-editor .level.is-mobile .level-item:not(.is-narrow) {
-        flex-grow: 1; }
-    @media screen and (min-width: 769px), print {
-      .sling-cms-editor .level {
-        display: flex; }
-        .sling-cms-editor .level > .level-item:not(.is-narrow) {
-          flex-grow: 1; } }
-  .sling-cms-editor .level-item {
-    align-items: center;
-    display: flex;
-    flex-basis: auto;
-    flex-grow: 0;
-    flex-shrink: 0;
-    justify-content: center; }
-    .sling-cms-editor .level-item .title,
-    .sling-cms-editor .level-item .subtitle {
-      margin-bottom: 0; }
-    @media screen and (max-width: 768px) {
-      .sling-cms-editor .level-item:not(:last-child) {
-        margin-bottom: 0.75rem; } }
-  .sling-cms-editor .level-left,
-  .sling-cms-editor .level-right {
-    flex-basis: auto;
-    flex-grow: 0;
-    flex-shrink: 0; }
-    .sling-cms-editor .level-left .level-item.is-flexible,
-    .sling-cms-editor .level-right .level-item.is-flexible {
-      flex-grow: 1; }
-    @media screen and (min-width: 769px), print {
-      .sling-cms-editor .level-left .level-item:not(:last-child),
-      .sling-cms-editor .level-right .level-item:not(:last-child) {
-        margin-right: 0.75rem; } }
-  .sling-cms-editor .level-left {
-    align-items: center;
-    justify-content: flex-start; }
-    @media screen and (max-width: 768px) {
-      .sling-cms-editor .level-left + .level-right {
-        margin-top: 1.5rem; } }
-    @media screen and (min-width: 769px), print {
-      .sling-cms-editor .level-left {
-        display: flex; } }
-  .sling-cms-editor .level-right {
-    align-items: center;
-    justify-content: flex-end; }
-    @media screen and (min-width: 769px), print {
-      .sling-cms-editor .level-right {
-        display: flex; } }
-  .sling-cms-editor .modal {
-    align-items: center;
-    display: none;
-    flex-direction: column;
-    justify-content: center;
-    overflow: hidden;
-    position: fixed;
-    z-index: 2000; }
-    .sling-cms-editor .modal.is-active {
-      display: flex; }
-  .sling-cms-editor .modal-background {
-    background-color: rgba(10, 10, 10, 0.86); }
-  .sling-cms-editor .modal-content,
-  .sling-cms-editor .modal-card {
-    margin: 0 20px;
-    max-height: calc(100vh - 160px);
-    overflow: auto;
-    position: relative;
-    width: 100%; }
-    @media screen and (min-width: 769px), print {
-      .sling-cms-editor .modal-content,
-      .sling-cms-editor .modal-card {
-        margin: 0 auto;
-        max-height: calc(100vh - 40px);
-        width: 640px; } }
-  .sling-cms-editor .modal-close {
-    background: none;
-    height: 40px;
-    position: fixed;
-    right: 20px;
-    top: 20px;
-    width: 40px; }
-  .sling-cms-editor .modal-card {
-    display: flex;
-    flex-direction: column;
-    max-height: calc(100vh - 40px);
-    overflow: hidden;
-    -ms-overflow-y: visible; }
-  .sling-cms-editor .modal-card-head,
-  .sling-cms-editor .modal-card-foot {
-    align-items: center;
-    background-color: whitesmoke;
-    display: flex;
-    flex-shrink: 0;
-    justify-content: flex-start;
-    padding: 20px;
-    position: relative; }
-  .sling-cms-editor .modal-card-head {
-    border-bottom: 1px solid #dbdbdb;
-    border-top-left-radius: 6px;
-    border-top-right-radius: 6px; }
-  .sling-cms-editor .modal-card-title {
-    color: #363636;
-    flex-grow: 1;
-    flex-shrink: 0;
-    font-size: 1.5rem;
-    line-height: 1; }
-  .sling-cms-editor .modal-card-foot {
-    border-bottom-left-radius: 6px;
-    border-bottom-right-radius: 6px;
-    border-top: 1px solid #dbdbdb; }
-    .sling-cms-editor .modal-card-foot .button:not(:last-child) {
-      margin-right: 0.5em; }
-  .sling-cms-editor .modal-card-body {
-    -webkit-overflow-scrolling: touch;
-    background-color: white;
-    flex-grow: 1;
-    flex-shrink: 1;
-    overflow: auto;
-    padding: 20px; }
-  .sling-cms-editor * {
-    box-sizing: border-box; }
-  .sling-cms-editor [draggable] {
-    -moz-user-select: none;
-    -khtml-user-select: none;
-    -webkit-user-select: none;
-    user-select: none;
-    /* Required to make elements draggable in old WebKit */
-    -khtml-user-drag: element;
-    -webkit-user-drag: element; }
-  .sling-cms-editor .is-draggable {
-    position: relative; }
-  .sling-cms-editor .is-vhidden {
-    position: absolute !important;
-    top: -9999px !important;
-    left: -9999px !important; }
-  .sling-cms-editor .level {
-    padding: 0.5em; }
-  .sling-cms-editor .modal-body {
-    padding: 0.5em;
-    height: 500px; }
-  .sling-cms-editor .modal-frame {
-    width: 100%;
-    height: 100%;
-    border: none; }
-  .sling-cms-editor .modal-title {
-    font-size: 180%;
-    cursor: move; }
-  .sling-cms-editor .page-wrapper-frame {
-    position: fixed;
-    top: 44px;
-    left: 0;
-    bottom: 0;
-    right: 0;
-    width: 100%;
-    height: 100%;
-    border: none;
-    margin: 0;
-    padding: 0;
-    overflow: hidden;
-    z-index: 998;
-    padding-top: 8px; }
-    @media screen and (max-width: 769px) {
-      .sling-cms-editor .page-wrapper-frame {
-        top: 104px; } }
-  .sling-cms-editor .sling-cms-logo {
-    height: 25px; }
-
-.sling-cms-component {
-  border: 1px solid rgba(0, 0, 0, 0); }
-
-.sling-cms-component__is-active {
-  border-color: #dbdbdb; }
-
-.sling-cms-droptarget__is-active {
-  height: 2em;
-  border: 1px solid #b5b5b5;
-  background-color: whitesmoke; }
-
-.sling-cms-droptarget__is-over {
-  height: 2em;
-  border: 1px solid whitesmoke;
-  background-color: #b5b5b5; }
-
-/*
-  Copyright (c) 2018 Michael Amprimo <@michaelampr>.
-  Licensed under the MIT License (MIT), https://jam-icons.com
-*/
-@font-face{font-family:'jam-icons';src:url("../fonts/jam-icons.eot?osflwm");src:url("../fonts/jam-icons.eot?osflwm#iefix") format("embedded-opentype"),url("../fonts/jam-icons.ttf?osflwm") format("truetype"),url("../fonts/jam-icons.woff?osflwm") format("woff"),url("../fonts/jam-icons.svg?osflwm#Jam-icons") format("svg");font-weight:normal;font-style:normal}.jam{font-family:'jam-icons' !important;speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.jam-five-hundred-px:before{content:"\e900"}.jam-activity:before{content:"\e901"}.jam-airbnb:before{content:"\e902"}.jam-alarm-clock-f:before{content:"\e903"}.jam-alarm-clock:before{content:"\e904"}.jam-alert-f:before{content:"\e905"}.jam-alert:before{content:"\e906"}.jam-alien-f:before{content:"\e907"}.jam-alien:before{content:"\e908"}.jam-align-center:before{content:"\e909"}.jam-align-justify:before{content:"\e90a"}.jam-align-left:before{content:"\e90b"}.jam-align-right:before{content:"\e90c"}.jam-amazon:before{content:"\e90d"}.jam-anchor:before{content:"\e90e"}.jam-android-circle:before{content:"\e90f"}.jam-android-square:before{content:"\e910"}.jam-android:before{content:"\e911"}.jam-aperture:before{content:"\e912"}.jam-apple-circle:before{content:"\e913"}.jam-apple-square:before{content:"\e914"}.jam-apple:before{content:"\e915"}.jam-archive-f:before{content:"\e916"}.jam-archive:before{content:"\e917"}.jam-arrow-circle-down-f:before{content:"\e918"}.jam-arrow-circle-down-left-f:before{content:"\e919"}.jam-arrow-circle-down-left:before{content:"\e91a"}.jam-arrow-circle-down-right-f:before{content:"\e91b"}.jam-arrow-circle-down-right:before{content:"\e91c"}.jam-arrow-circle-down:before{content:"\e91d"}.jam-arrow-circle-left-f:before{content:"\e91e"}.jam-arrow-circle-left:before{content:"\e91f"}.jam-arrow-circle-right-f:before{content:"\e920"}.jam-arrow-circle-right:before{content:"\e921"}.jam-arrow-circle-up-f:before{content:"\e922"}.jam-arrow-circle-up-left-f:before{content:"\e923"}.jam-arrow-circle-up-left:before{content:"\e924"}.jam-arrow-circle-up-right-f:before{content:"\e925"}.jam-arrow-circle-up-right:before{content:"\e926"}.jam-arrow-circle-up:before{content:"\e927"}.jam-arrow-down-left:before{content:"\e928"}.jam-arrow-down-right:before{content:"\e929"}.jam-arrow-down:before{content:"\e92a"}.jam-arrow-left:before{content:"\e92b"}.jam-arrow-right:before{content:"\e92c"}.jam-arrow-square-down-f:before{content:"\e92d"}.jam-arrow-square-down-left-f:before{content:"\e92e"}.jam-arrow-square-down-left:before{content:"\e92f"}.jam-arrow-square-down-right-f:before{content:"\e930"}.jam-arrow-square-down-right:before{content:"\e931"}.jam-arrow-square-down:before{content:"\e932"}.jam-arrow-square-left-f:before{content:"\e933"}.jam-arrow-square-left:before{content:"\e934"}.jam-arrow-square-right-f:before{content:"\e935"}.jam-arrow-square-right:before{content:"\e936"}.jam-arrow-square-up-f:before{content:"\e937"}.jam-arrow-square-up-left-f:before{content:"\e938"}.jam-arrow-square-up-left:before{content:"\e939"}.jam-arrow-square-up-right-f:before{content:"\e93a"}.jam-arrow-square-up-right:before{content:"\e93b"}.jam-arrow-square-up:before{content:"\e93c"}.jam-arrow-up-left:before{content:"\e93d"}.jam-arrow-up-right:before{content:"\e93e"}.jam-arrow-up:before{content:"\e93f"}.jam-arrows-corners:before{content:"\e940"}.jam-arrows-fullscreen:before{content:"\e941"}.jam-arrows-h:before{content:"\e942"}.jam-arrows-v:before{content:"\e943"}.jam-attachment:before{content:"\e944"}.jam-background-color:before{content:"\e945"}.jam-backpack-f:before{content:"\e946"}.jam-backpack:before{content:"\e947"}.jam-backward-circle-f:before{content:"\e948"}.jam-backward-circle:before{content:"\e949"}.jam-backward-square-f:before{content:"\e94a"}.jam-backward-square:before{content:"\e94b"}.jam-backward:before{content:"\e94c"}.jam-baidu-circle:before{content:"\e94d"}.jam-baidu-square:before{content:"\e94e"}.jam-baidu:before{content:"\e94f"}.jam-bandage-f:before{content:"\e950"}.jam-bandage:before{content:"\e951"}.jam-bar-chart:before{content:"\e952"}.jam-baseball:before{content:"\e953"}.jam-basketball:before{content:"\e954"}.jam-bathtub-f:before{content:"\e955"}.jam-bathtub:before{content:"\e956"}.jam-battery-charging-f:before{content:"\e957"}.jam-battery-charging:before{content:"\e958"}.jam-battery-f:before{content:"\e959"}.jam-battery-half-f:before{content:"\e95a"}.jam-battery-half:before{content:"\e95b"}.jam-battery-one-quarter-f:before{content:"\e95c"}.jam-battery-one-quarter:before{content:"\e95d"}.jam-battery-three-quarters-f:before{content:"\e95e"}.jam-battery-three-quarters:before{content:"\e95f"}.jam-battery:before{content:"\e960"}.jam-beatport-circle:before{content:"\e961"}.jam-beatport-square:before{content:"\e962"}.jam-beatport:before{content:"\e963"}.jam-beer-f:before{content:"\e964"}.jam-beer:before{content:"\e965"}.jam-behance-circle:before{content:"\e966"}.jam-behance-square:before{content:"\e967"}.jam-behance:before{content:"\e968"}.jam-bell-f:before{content:"\e969"}.jam-bell-off-f:before{content:"\e96a"}.jam-bell-off:before{content:"\e96b"}.jam-bell:before{content:"\e96c"}.jam-bing-circle:before{content:"\e96d"}.jam-bing-square:before{content:"\e96e"}.jam-bing:before{content:"\e96f"}.jam-birthday-cake-f:before{content:"\e970"}.jam-birthday-cake:before{content:"\e971"}.jam-blogger-circle:before{content:"\e972"}.jam-blogger-square:before{content:"\e973"}.jam-blogger:before{content:"\e974"}.jam-bluetooth:before{content:"\e975"}.jam-bold:before{content:"\e976"}.jam-book-f:before{content:"\e977"}.jam-book:before{content:"\e978"}.jam-bookmark-f:before{content:"\e979"}.jam-bookmark-minus-f:before{content:"\e97a"}.jam-bookmark-minus:before{content:"\e97b"}.jam-bookmark-plus-f:before{content:"\e97c"}.jam-bookmark-plus:before{content:"\e97d"}.jam-bookmark-remove-f:before{content:"\e97e"}.jam-bookmark-remove:before{content:"\e97f"}.jam-bookmark:before{content:"\e980"}.jam-bottle-f:before{content:"\e981"}.jam-bottle:before{content:"\e982"}.jam-box-f:before{content:"\e983"}.jam-box:before{content:"\e984"}.jam-branch-f:before{content:"\e985"}.jam-branch:before{content:"\e986"}.jam-brightness-down-f:before{content:"\e987"}.jam-brightness-down:before{content:"\e988"}.jam-brightness-up-f:before{content:"\e989"}.jam-brightness-up:before{content:"\e98a"}.jam-brightness:before{content:"\e98b"}.jam-brush-f:before{content:"\e98c"}.jam-brush:before{content:"\e98d"}.jam-bug-f:before{content:"\e98e"}.jam-bug:before{content:"\e98f"}.jam-building-f:before{content:"\e990"}.jam-building:before{content:"\e991"}.jam-bus-f:before{content:"\e992"}.jam-bus:before{content:"\e993"}.jam-cactus-f:before{content:"\e994"}.jam-cactus:before{content:"\e995"}.jam-calculator:before{content:"\e996"}.jam-calendar-alt-f:before{content:"\e997"}.jam-calendar-alt:before{content:"\e998"}.jam-calendar-f:before{content:"\e999"}.jam-calendar:before{content:"\e99a"}.jam-camera-alt-f:before{content:"\e99b"}.jam-camera-alt:before{content:"\e99c"}.jam-camera-f:before{content:"\e99d"}.jam-camera:before{content:"\e99e"}.jam-candle-f:before{content:"\e99f"}.jam-candle:before{content:"\e9a0"}.jam-capsule-f:before{content:"\e9a1"}.jam-capsule:before{content:"\e9a2"}.jam-car-f:before{content:"\e9a3"}.jam-car:before{content:"\e9a4"}.jam-castle-f:before{content:"\e9a5"}.jam-castle:before{content:"\e9a6"}.jam-check:before{content:"\e9a7"}.jam-chevron-circle-down-f:before{content:"\e9a8"}.jam-chevron-circle-down-left-f:before{content:"\e9a9"}.jam-chevron-circle-down-left:before{content:"\e9aa"}.jam-chevron-circle-down-right-f:before{content:"\e9ab"}.jam-chevron-circle-down-right:before{content:"\e9ac"}.jam-chevron-circle-down:before{content:"\e9ad"}.jam-chevron-circle-left-f:before{content:"\e9ae"}.jam-chevron-circle-left:before{content:"\e9af"}.jam-chevron-circle-right-f:before{content:"\e9b0"}.jam-chevron-circle-right:before{content:"\e9b1"}.jam-chevron-circle-up-f:before{content:"\e9b2"}.jam-chevron-circle-up-left-f:before{content:"\e9b3"}.jam-chevron-circle-up-left:before{content:"\e9b4"}.jam-chevron-circle-up-right-f:before{content:"\e9b5"}.jam-chevron-circle-up-right:before{content:"\e9b6"}.jam-chevron-circle-up:before{content:"\e9b7"}.jam-chevron-down-left:before{content:"\e9b8"}.jam-chevron-down-right:before{content:"\e9b9"}.jam-chevron-down:before{content:"\e9ba"}.jam-chevron-left:before{content:"\e9bb"}.jam-chevron-right:before{content:"\e9bc"}.jam-chevron-square-down-f:before{content:"\e9bd"}.jam-chevron-square-down-left-f:before{content:"\e9be"}.jam-chevron-square-down-left:before{content:"\e9bf"}.jam-chevron-square-down-right-f:before{content:"\e9c0"}.jam-chevron-square-down-right:before{content:"\e9c1"}.jam-chevron-square-down:before{content:"\e9c2"}.jam-chevron-square-left-f:before{content:"\e9c3"}.jam-chevron-square-left:before{content:"\e9c4"}.jam-chevron-square-right-f:before{content:"\e9c5"}.jam-chevron-square-right:before{content:"\e9c6"}.jam-chevron-square-up-f:before{content:"\e9c7"}.jam-chevron-square-up-left-f:before{content:"\e9c8"}.jam-chevron-square-up-left:before{content:"\e9c9"}.jam-chevron-square-up-right-f:before{content:"\e9ca"}.jam-chevron-square-up-right:before{content:"\e9cb"}.jam-chevron-square-up:before{content:"\e9cc"}.jam-chevron-up-left:before{content:"\e9cd"}.jam-chevron-up-right:before{content:"\e9ce"}.jam-chevron-up:before{content:"\e9cf"}.jam-chevrons-circle-down-f:before{content:"\e9d0"}.jam-chevrons-circle-down-left-f:before{content:"\e9d1"}.jam-chevrons-circle-down-left:before{content:"\e9d2"}.jam-chevrons-circle-down-right-f:before{content:"\e9d3"}.jam-chevrons-circle-down-right:before{content:"\e9d4"}.jam-chevrons-circle-down:before{content:"\e9d5"}.jam-chevrons-circle-left-f:before{content:"\e9d6"}.jam-chevrons-circle-left:before{content:"\e9d7"}.jam-chevrons-circle-right-f:before{content:"\e9d8"}.jam-chevrons-circle-right:before{content:"\e9d9"}.jam-chevrons-circle-up-f:before{content:"\e9da"}.jam-chevrons-circle-up-left-f:before{content:"\e9db"}.jam-chevrons-circle-up-left:before{content:"\e9dc"}.jam-chevrons-circle-up-right-f:before{content:"\e9dd"}.jam-chevrons-circle-up-right:before{content:"\e9de"}.jam-chevrons-circle-up:before{content:"\e9df"}.jam-chevrons-down-left:before{content:"\e9e0"}.jam-chevrons-down-right:before{content:"\e9e1"}.jam-chevrons-down:before{content:"\e9e2"}.jam-chevrons-left:before{content:"\e9e3"}.jam-chevrons-right:before{content:"\e9e4"}.jam-chevrons-square-down-f:before{content:"\e9e5"}.jam-chevrons-square-down-left-f:before{content:"\e9e6"}.jam-chevrons-square-down-left:before{content:"\e9e7"}.jam-chevrons-square-down-right-f:before{content:"\e9e8"}.jam-chevrons-square-down-right:before{content:"\e9e9"}.jam-chevrons-square-down:before{content:"\e9ea"}.jam-chevrons-square-left-f:before{content:"\e9eb"}.jam-chevrons-square-left:before{content:"\e9ec"}.jam-chevrons-square-right-f:before{content:"\e9ed"}.jam-chevrons-square-right:before{content:"\e9ee"}.jam-chevrons-square-up-f:before{content:"\e9ef"}.jam-chevrons-square-up-left-f:before{content:"\e9f0"}.jam-chevrons-square-up-left:before{content:"\e9f1"}.jam-chevrons-square-up-right-f:before{content:"\e9f2"}.jam-chevrons-square-up-right:before{content:"\e9f3"}.jam-chevrons-square-up:before{content:"\e9f4"}.jam-chevrons-up-left:before{content:"\e9f5"}.jam-chevrons-up-right:before{content:"\e9f6"}.jam-chevrons-up:before{content:"\e9f7"}.jam-chronometer-f:before{content:"\e9f8"}.jam-chronometer:before{content:"\e9f9"}.jam-circle-f:before{content:"\e9fa"}.jam-circle:before{content:"\e9fb"}.jam-clear-format:before{content:"\e9fc"}.jam-clipboard-f:before{content:"\e9fd"}.jam-clipboard:before{content:"\e9fe"}.jam-clock-f:before{content:"\e9ff"}.jam-clock:before{content:"\ea00"}.jam-close-circle-f:before{content:"\ea01"}.jam-close-circle:before{content:"\ea02"}.jam-close-rectangle-f:before{content:"\ea03"}.jam-close-rectangle:before{content:"\ea04"}.jam-close:before{content:"\ea05"}.jam-cloud-f:before{content:"\ea06"}.jam-cloud-rain-f:before{content:"\ea07"}.jam-cloud-rain:before{content:"\ea08"}.jam-cloud-snow-f:before{content:"\ea09"}.jam-cloud-snow:before{content:"\ea0a"}.jam-cloud-thunder-f:before{content:"\ea0b"}.jam-cloud-thunder:before{content:"\ea0c"}.jam-cloud:before{content:"\ea0d"}.jam-codepen-circle:before{content:"\ea0e"}.jam-codepen-square:before{content:"\ea0f"}.jam-codepen:before{content:"\ea10"}.jam-coffee-cup-f:before{content:"\ea11"}.jam-coffee-cup:before{content:"\ea12"}.jam-coffee:before{content:"\ea13"}.jam-cog-f:before{content:"\ea14"}.jam-cog:before{content:"\ea15"}.jam-cogs-f:before{content:"\ea16"}.jam-cogs:before{content:"\ea17"}.jam-coin-f:before{content:"\ea18"}.jam-coin:before{content:"\ea19"}.jam-color:before{content:"\ea1a"}.jam-compass-f:before{content:"\ea1b"}.jam-compass:before{content:"\ea1c"}.jam-computer-alt-f:before{content:"\ea1d"}.jam-computer-alt:before{content:"\ea1e"}.jam-computer-f:before{content:"\ea1f"}.jam-computer:before{content:"\ea20"}.jam-credit-card-f:before{content:"\ea21"}.jam-credit-card:before{content:"\ea22"}.jam-crop:before{content:"\ea23"}.jam-crown-f:before{content:"\ea24"}.jam-crown:before{content:"\ea25"}.jam-cutlery-f:before{content:"\ea26"}.jam-cutlery:before{content:"\ea27"}.jam-cutter-f:before{content:"\ea28"}.jam-cutter:before{content:"\ea29"}.jam-dashboard-f:before{content:"\ea2a"}.jam-dashboard:before{content:"\ea2b"}.jam-database-f:before{content:"\ea2c"}.jam-database:before{content:"\ea2d"}.jam-deezer-circle:before{content:"\ea2e"}.jam-deezer-square:before{content:"\ea2f"}.jam-deezer:before{content:"\ea30"}.jam-delete-f:before{content:"\ea31"}.jam-delete:before{content:"\ea32"}.jam-deviantart-circle:before{content:"\ea33"}.jam-deviantart-square:before{content:"\ea34"}.jam-deviantart:before{content:"\ea35"}.jam-digg:before{content:"\ea36"}.jam-direction-f:before{content:"\ea37"}.jam-direction:before{content:"\ea38"}.jam-directions-f:before{content:"\ea39"}.jam-directions:before{content:"\ea3a"}.jam-disc-f:before{content:"\ea3b"}.jam-disc:before{content:"\ea3c"}.jam-disqus-circle:before{content:"\ea3d"}.jam-disqus-square:before{content:"\ea3e"}.jam-disqus:before{content:"\ea3f"}.jam-dj-f:before{content:"\ea40"}.jam-dj:before{content:"\ea41"}.jam-dna:before{content:"\ea42"}.jam-document-f:before{content:"\ea43"}.jam-document:before{content:"\ea44"}.jam-door:before{content:"\ea45"}.jam-download:before{content:"\ea46"}.jam-drupal-circle:before{content:"\ea47"}.jam-drupal-square:before{content:"\ea48"}.jam-drupal:before{content:"\ea49"}.jam-ebay:before{content:"\ea4a"}.jam-egg-f:before{content:"\ea4b"}.jam-egg:before{content:"\ea4c"}.jam-eggs-f:before{content:"\ea4d"}.jam-eggs:before{content:"\ea4e"}.jam-eject-circle-f:before{content:"\ea4f"}.jam-eject-circle:before{content:"\ea50"}.jam-eject-square-f:before{content:"\ea51"}.jam-eject-square:before{content:"\ea52"}.jam-eject:before{content:"\ea53"}.jam-envelope-f:before{content:"\ea54"}.jam-envelope-open-f:before{content:"\ea55"}.jam-envelope-open:before{content:"\ea56"}.jam-envelope:before{content:"\ea57"}.jam-extinguisher-f:before{content:"\ea58"}.jam-extinguisher:before{content:"\ea59"}.jam-eye-close-f:before{content:"\ea5a"}.jam-eye-close:before{content:"\ea5b"}.jam-eye-f:before{content:"\ea5c"}.jam-eye:before{content:"\ea5d"}.jam-eyedropper-f:before{content:"\ea5e"}.jam-eyedropper:before{content:"\ea5f"}.jam-facebook-circle:before{content:"\ea60"}.jam-facebook-square:before{content:"\ea61"}.jam-facebook:before{content:"\ea62"}.jam-fast-backward-circle-f:before{content:"\ea63"}.jam-fast-backward-circle:before{content:"\ea64"}.jam-fast-backward-square-f:before{content:"\ea65"}.jam-fast-backward-square:before{content:"\ea66"}.jam-fast-backward:before{content:"\ea67"}.jam-fast-forward-circle-f:before{content:"\ea68"}.jam-fast-forward-circle:before{content:"\ea69"}.jam-fast-forward-square-f:before{content:"\ea6a"}.jam-fast-forward-square:before{content:"\ea6b"}.jam-fast-forward:before{content:"\ea6c"}.jam-feather-f:before{content:"\ea6d"}.jam-feather:before{content:"\ea6e"}.jam-female:before{content:"\ea6f"}.jam-file-f:before{content:"\ea70"}.jam-file:before{content:"\ea71"}.jam-files-f:before{content:"\ea72"}.jam-files:before{content:"\ea73"}.jam-filter-f:before{content:"\ea74"}.jam-filter:before{content:"\ea75"}.jam-fingerprint:before{content:"\ea76"}.jam-first-aid-f:before{content:"\ea77"}.jam-first-aid:before{content:"\ea78"}.jam-fish:before{content:"\ea79"}.jam-fiverr-circle:before{content:"\ea7a"}.jam-fiverr-square:before{content:"\ea7b"}.jam-fiverr:before{content:"\ea7c"}.jam-flag-f:before{content:"\ea7d"}.jam-flag:before{content:"\ea7e"}.jam-flame-f:before{content:"\ea7f"}.jam-flame:before{content:"\ea80"}.jam-flashlight-off-f:before{content:"\ea81"}.jam-flashlight-off:before{content:"\ea82"}.jam-flashlight-on-f:before{content:"\ea83"}.jam-flashlight-on:before{content:"\ea84"}.jam-flask:before{content:"\ea85"}.jam-flickr-circle:before{content:"\ea86"}.jam-flickr-square:before{content:"\ea87"}.jam-flickr:before{content:"\ea88"}.jam-flower:before{content:"\ea89"}.jam-folder-f:before{content:"\ea8a"}.jam-folder-open-f:before{content:"\ea8b"}.jam-folder-open:before{content:"\ea8c"}.jam-folder-zip-f:before{content:"\ea8d"}.jam-folder-zip:before{content:"\ea8e"}.jam-folder:before{content:"\ea8f"}.jam-football:before{content:"\ea90"}.jam-fork-f:before{content:"\ea91"}.jam-fork:before{content:"\ea92"}.jam-forward-circle-f:before{content:"\ea93"}.jam-forward-circle:before{content:"\ea94"}.jam-forward-square-f:before{content:"\ea95"}.jam-forward-square:before{content:"\ea96"}.jam-forward:before{content:"\ea97"}.jam-foursquare:before{content:"\ea98"}.jam-gamepad-f:before{content:"\ea99"}.jam-gamepad-retro-f:before{content:"\ea9a"}.jam-gamepad-retro:before{content:"\ea9b"}.jam-gamepad:before{content:"\ea9c"}.jam-ghost-f:before{content:"\ea9d"}.jam-ghost-org-circle:before{content:"\ea9e"}.jam-ghost-org-square:before{content:"\ea9f"}.jam-ghost-org:before{content:"\eaa0"}.jam-ghost:before{content:"\eaa1"}.jam-gift-f:before{content:"\eaa2"}.jam-gift:before{content:"\eaa3"}.jam-github-circle:before{content:"\eaa4"}.jam-github-square:before{content:"\eaa5"}.jam-github:before{content:"\eaa6"}.jam-gitlab-circle:before{content:"\eaa7"}.jam-gitlab-square:before{content:"\eaa8"}.jam-gitlab:before{content:"\eaa9"}.jam-glass-empty:before{content:"\eaaa"}.jam-glass-filled-f:before{content:"\eaab"}.jam-glass-filled:before{content:"\eaac"}.jam-glue-f:before{content:"\eaad"}.jam-glue:before{content:"\eaae"}.jam-google-circle:before{content:"\eaaf"}.jam-google-play-circle:before{content:"\eab0"}.jam-google-play-square:before{content:"\eab1"}.jam-google-play:before{content:"\eab2"}.jam-google-plus-circle:before{content:"\eab3"}.jam-google-plus-square:before{content:"\eab4"}.jam-google-plus:before{content:"\eab5"}.jam-google-square:before{content:"\eab6"}.jam-google:before{content:"\eab7"}.jam-gps-f:before{content:"\eab8"}.jam-gps:before{content:"\eab9"}.jam-grid-f:before{content:"\eaba"}.jam-grid:before{content:"\eabb"}.jam-hairdryer-f:before{content:"\eabc"}.jam-hairdryer:before{content:"\eabd"}.jam-hammer-f:before{content:"\eabe"}.jam-hammer:before{content:"\eabf"}.jam-hashtag:before{content:"\eac0"}.jam-header-1:before{content:"\eac1"}.jam-header-2:before{content:"\eac2"}.jam-header-3:before{content:"\eac3"}.jam-header-4:before{content:"\eac4"}.jam-header-5:before{content:"\eac5"}.jam-header-6:before{content:"\eac6"}.jam-header:before{content:"\eac7"}.jam-headset-f:before{content:"\eac8"}.jam-headset:before{content:"\eac9"}.jam-heart-f:before{content:"\eaca"}.jam-heart:before{content:"\eacb"}.jam-helmet-f:before{content:"\eacc"}.jam-helmet:before{content:"\eacd"}.jam-help-f:before{content:"\eace"}.jam-help:before{content:"\eacf"}.jam-highlighter-f:before{content:"\ead0"}.jam-highlighter:before{content:"\ead1"}.jam-history:before{content:"\ead2"}.jam-home-f:before{content:"\ead3"}.jam-home:before{content:"\ead4"}.jam-hourglass-f:before{content:"\ead5"}.jam-hourglass:before{content:"\ead6"}.jam-ice-cream-f:before{content:"\ead7"}.jam-ice-cream:before{content:"\ead8"}.jam-id-card-f:before{content:"\ead9"}.jam-id-card:before{content:"\eada"}.jam-inbox-f:before{content:"\eadb"}.jam-inbox:before{content:"\eadc"}.jam-inboxes-f:before{content:"\eadd"}.jam-inboxes:before{content:"\eade"}.jam-indent:before{content:"\eadf"}.jam-infinite:before{content:"\eae0"}.jam-info-f:before{content:"\eae1"}.jam-info:before{content:"\eae2"}.jam-instagram:before{content:"\eae3"}.jam-instant-picture-f:before{content:"\eae4"}.jam-instant-picture:before{content:"\eae5"}.jam-italic:before{content:"\eae6"}.jam-joystick-f:before{content:"\eae7"}.jam-joystick:before{content:"\eae8"}.jam-key-f:before{content:"\eae9"}.jam-key:before{content:"\eaea"}.jam-keyboard-f:before{content:"\eaeb"}.jam-keyboard:before{content:"\eaec"}.jam-language:before{content:"\eaed"}.jam-layers-f:before{content:"\eaee"}.jam-layers:before{content:"\eaef"}.jam-layout-f:before{content:"\eaf0"}.jam-layout:before{content:"\eaf1"}.jam-leaf-f:before{content:"\eaf2"}.jam-leaf:before{content:"\eaf3"}.jam-lifebuoy-f:before{content:"\eaf4"}.jam-lifebuoy:before{content:"\eaf5"}.jam-lightbulb-f:before{content:"\eaf6"}.jam-lightbulb:before{content:"\eaf7"}.jam-line:before{content:"\eaf8"}.jam-link:before{content:"\eaf9"}.jam-linkedin-circle:before{content:"\eafa"}.jam-linkedin-square:before{content:"\eafb"}.jam-linkedin:before{content:"\eafc"}.jam-log-in:before{content:"\eafd"}.jam-log-out:before{content:"\eafe"}.jam-luggage-f:before{content:"\eaff"}.jam-luggage:before{content:"\eb00"}.jam-magic-f:before{content:"\eb01"}.jam-magic:before{content:"\eb02"}.jam-magnet-f:before{content:"\eb03"}.jam-magnet:before{content:"\eb04"}.jam-male:before{content:"\eb05"}.jam-map-f:before{content:"\eb06"}.jam-map-marker-f:before{content:"\eb07"}.jam-map-marker:before{content:"\eb08"}.jam-map:before{content:"\eb09"}.jam-mask-f:before{content:"\eb0a"}.jam-mask:before{content:"\eb0b"}.jam-medal-f:before{content:"\eb0c"}.jam-medal:before{content:"\eb0d"}.jam-medical:before{content:"\eb0e"}.jam-medium-circle:before{content:"\eb0f"}.jam-medium-square:before{content:"\eb10"}.jam-medium:before{content:"\eb11"}.jam-menu:before{content:"\eb12"}.jam-merge-f:before{content:"\eb13"}.jam-merge:before{content:"\eb14"}.jam-message-alt-f:before{content:"\eb15"}.jam-message-alt-writing-f:before{content:"\eb16"}.jam-message-alt-writing:before{content:"\eb17"}.jam-message-alt:before{content:"\eb18"}.jam-message-f:before{content:"\eb19"}.jam-message-writing-f:before{content:"\eb1a"}.jam-message-writing:before{content:"\eb1b"}.jam-message:before{content:"\eb1c"}.jam-messages-alt-f:before{content:"\eb1d"}.jam-messages-alt:before{content:"\eb1e"}.jam-messages-f:before{content:"\eb1f"}.jam-messages:before{content:"\eb20"}.jam-messenger:before{content:"\eb21"}.jam-mic-alt:before{content:"\eb22"}.jam-mic-circle-f:before{content:"\eb23"}.jam-mic-circle:before{content:"\eb24"}.jam-mic-f:before{content:"\eb25"}.jam-mic-square-f:before{content:"\eb26"}.jam-mic-square:before{content:"\eb27"}.jam-mic:before{content:"\eb28"}.jam-microchip-f:before{content:"\eb29"}.jam-microchip:before{content:"\eb2a"}.jam-minus-circle-f:before{content:"\eb2b"}.jam-minus-circle:before{content:"\eb2c"}.jam-minus-rectangle-f:before{content:"\eb2d"}.jam-minus-rectangle:before{content:"\eb2e"}.jam-minus:before{content:"\eb2f"}.jam-moon-f:before{content:"\eb30"}.jam-moon:before{content:"\eb31"}.jam-more-horizontal-f:before{content:"\eb32"}.jam-more-horizontal:before{content:"\eb33"}.jam-more-vertical-f:before{content:"\eb34"}.jam-more-vertical:before{content:"\eb35"}.jam-mountain-f:before{content:"\eb36"}.jam-mountain:before{content:"\eb37"}.jam-move-alt:before{content:"\eb38"}.jam-move:before{content:"\eb39"}.jam-movie:before{content:"\eb3a"}.jam-mug-f:before{content:"\eb3b"}.jam-mug:before{content:"\eb3c"}.jam-music-f:before{content:"\eb3d"}.jam-music:before{content:"\eb3e"}.jam-myspace-circle:before{content:"\eb3f"}.jam-myspace-square:before{content:"\eb40"}.jam-myspace:before{content:"\eb41"}.jam-napster-circle:before{content:"\eb42"}.jam-napster-square:before{content:"\eb43"}.jam-napster:before{content:"\eb44"}.jam-newsletter-f:before{content:"\eb45"}.jam-newsletter:before{content:"\eb46"}.jam-newspaper-f:before{content:"\eb47"}.jam-newspaper:before{content:"\eb48"}.jam-npm:before{content:"\eb49"}.jam-odnoklassniki-circle:before{content:"\eb4a"}.jam-odnoklassniki-square:before{content:"\eb4b"}.jam-odnoklassniki:before{content:"\eb4c"}.jam-opera-circle:before{content:"\eb4d"}.jam-opera-square:before{content:"\eb4e"}.jam-opera:before{content:"\eb4f"}.jam-ordered-list:before{content:"\eb50"}.jam-padlock-alt-f:before{content:"\eb51"}.jam-padlock-alt-open-f:before{content:"\eb52"}.jam-padlock-alt-open:before{content:"\eb53"}.jam-padlock-alt:before{content:"\eb54"}.jam-padlock-f:before{content:"\eb55"}.jam-padlock-open-f:before{content:"\eb56"}.jam-padlock-open:before{content:"\eb57"}.jam-padlock:before{content:"\eb58"}.jam-paper-plane-f:before{content:"\eb59"}.jam-paper-plane:before{content:"\eb5a"}.jam-patreon-circle:before{content:"\eb5b"}.jam-patreon-square:before{content:"\eb5c"}.jam-patreon:before{content:"\eb5d"}.jam-pause:before{content:"\eb5e"}.jam-paypal-circle:before{content:"\eb5f"}.jam-paypal-square:before{content:"\eb60"}.jam-paypal:before{content:"\eb61"}.jam-pen-f:before{content:"\eb62"}.jam-pen:before{content:"\eb63"}.jam-pencil-f:before{content:"\eb64"}.jam-pencil:before{content:"\eb65"}.jam-periscope-circle:before{content:"\eb66"}.jam-periscope-square:before{content:"\eb67"}.jam-periscope:before{content:"\eb68"}.jam-phone-f:before{content:"\eb69"}.jam-phone:before{content:"\eb6a"}.jam-picture-f:before{content:"\eb6b"}.jam-picture:before{content:"\eb6c"}.jam-pictures-f:before{content:"\eb6d"}.jam-pictures:before{content:"\eb6e"}.jam-pie-chart-alt:before{content:"\eb6f"}.jam-pie-chart-f:before{content:"\eb70"}.jam-pie-chart:before{content:"\eb71"}.jam-pin-alt-f:before{content:"\eb72"}.jam-pin-alt:before{content:"\eb73"}.jam-pin-f:before{content:"\eb74"}.jam-pin:before{content:"\eb75"}.jam-pinterest-circle:before{content:"\eb76"}.jam-pinterest-square:before{content:"\eb77"}.jam-pinterest:before{content:"\eb78"}.jam-pizza-slice:before{content:"\eb79"}.jam-plane-f:before{content:"\eb7a"}.jam-plane:before{content:"\eb7b"}.jam-play-circle-f:before{content:"\eb7c"}.jam-play-circle:before{content:"\eb7d"}.jam-play-square-f:before{content:"\eb7e"}.jam-play-square:before{content:"\eb7f"}.jam-play:before{content:"\eb80"}.jam-plug-f:before{content:"\eb81"}.jam-plug:before{content:"\eb82"}.jam-plus-circle-f:before{content:"\eb83"}.jam-plus-circle:before{content:"\eb84"}.jam-plus-rectangle-f:before{content:"\eb85"}.jam-plus-rectangle:before{content:"\eb86"}.jam-plus:before{content:"\eb87"}.jam-pocket-watch-f:before{content:"\eb88"}.jam-pocket-watch:before{content:"\eb89"}.jam-podcast:before{content:"\eb8a"}.jam-power:before{content:"\eb8b"}.jam-printer-f:before{content:"\eb8c"}.jam-printer:before{content:"\eb8d"}.jam-qr-code:before{content:"\eb8e"}.jam-quora-circle:before{content:"\eb8f"}.jam-quora-square:before{content:"\eb90"}.jam-quora:before{content:"\eb91"}.jam-rainbow:before{content:"\eb92"}.jam-rec:before{content:"\eb93"}.jam-rectangle-f:before{content:"\eb94"}.jam-rectangle:before{content:"\eb95"}.jam-reddit:before{content:"\eb96"}.jam-redo:before{content:"\eb97"}.jam-refresh-reverse:before{content:"\eb98"}.jam-refresh:before{content:"\eb99"}.jam-repeat:before{content:"\eb9a"}.jam-rocket-f:before{content:"\eb9b"}.jam-rocket:before{content:"\eb9c"}.jam-rss-feed:before{content:"\eb9d"}.jam-rubber:before{content:"\eb9e"}.jam-ruler-f:before{content:"\eb9f"}.jam-ruler:before{content:"\eba0"}.jam-save-f:before{content:"\eba1"}.jam-save:before{content:"\eba2"}.jam-scissors:before{content:"\eba3"}.jam-screen-f:before{content:"\eba4"}.jam-screen:before{content:"\eba5"}.jam-screwdriver-f:before{content:"\eba6"}.jam-screwdriver:before{content:"\eba7"}.jam-search-folder:before{content:"\eba8"}.jam-search-minus:before{content:"\eba9"}.jam-search-plus:before{content:"\ebaa"}.jam-search:before{content:"\ebab"}.jam-set-backward-circle-f:before{content:"\ebac"}.jam-set-backward-circle:before{content:"\ebad"}.jam-set-backward-square-f:before{content:"\ebae"}.jam-set-backward-square:before{content:"\ebaf"}.jam-set-backward:before{content:"\ebb0"}.jam-set-forward-circle-f:before{content:"\ebb1"}.jam-set-forward-circle:before{content:"\ebb2"}.jam-set-forward-square-f:before{content:"\ebb3"}.jam-set-forward-square:before{content:"\ebb4"}.jam-set-forward:before{content:"\ebb5"}.jam-set-square-f:before{content:"\ebb6"}.jam-set-square:before{content:"\ebb7"}.jam-settings-alt:before{content:"\ebb8"}.jam-share-alt-f:before{content:"\ebb9"}.jam-share-alt:before{content:"\ebba"}.jam-share:before{content:"\ebbb"}.jam-shield-check-f:before{content:"\ebbc"}.jam-shield-check:before{content:"\ebbd"}.jam-shield-close-f:before{content:"\ebbe"}.jam-shield-close:before{content:"\ebbf"}.jam-shield-f:before{content:"\ebc0"}.jam-shield-half:before{content:"\ebc1"}.jam-shield-minus-f:before{content:"\ebc2"}.jam-shield-minus:before{content:"\ebc3"}.jam-shield-plus-f:before{content:"\ebc4"}.jam-shield-plus:before{content:"\ebc5"}.jam-shield:before{content:"\ebc6"}.jam-shopify-circle:before{content:"\ebc7"}.jam-shopify-square:before{content:"\ebc8"}.jam-shopify:before{content:"\ebc9"}.jam-shopping-bag-alt-f:before{content:"\ebca"}.jam-shopping-bag-alt:before{content:"\ebcb"}.jam-shopping-bag-f:before{content:"\ebcc"}.jam-shopping-bag:before{content:"\ebcd"}.jam-shopping-cart:before{content:"\ebce"}.jam-shuffle:before{content:"\ebcf"}.jam-signal:before{content:"\ebd0"}.jam-sitemap-f:before{content:"\ebd1"}.jam-sitemap:before{content:"\ebd2"}.jam-skull-f:before{content:"\ebd3"}.jam-skull:before{content:"\ebd4"}.jam-skype-circle:before{content:"\ebd5"}.jam-skype-square:before{content:"\ebd6"}.jam-skype:before{content:"\ebd7"}.jam-slack-circle:before{content:"\ebd8"}.jam-slack-square:before{content:"\ebd9"}.jam-slack:before{content:"\ebda"}.jam-smiley-f:before{content:"\ebdb"}.jam-smiley:before{content:"\ebdc"}.jam-snapchat-circle:before{content:"\ebdd"}.jam-snapchat-square:before{content:"\ebde"}.jam-snapchat:before{content:"\ebdf"}.jam-snowboard-f:before{content:"\ebe0"}.jam-snowboard:before{content:"\ebe1"}.jam-snowflake:before{content:"\ebe2"}.jam-soundcloud:before{content:"\ebe3"}.jam-speaker-f:before{content:"\ebe4"}.jam-speaker:before{content:"\ebe5"}.jam-spotify:before{content:"\ebe6"}.jam-square-f:before{content:"\ebe7"}.jam-square:before{content:"\ebe8"}.jam-squarespace-circle:before{content:"\ebe9"}.jam-squarespace-square:before{content:"\ebea"}.jam-squarespace:before{content:"\ebeb"}.jam-stackoverflow-circle:before{content:"\ebec"}.jam-stackoverflow-square:before{content:"\ebed"}.jam-stackoverflow:before{content:"\ebee"}.jam-stamp-f:before{content:"\ebef"}.jam-stamp:before{content:"\ebf0"}.jam-star-f:before{content:"\ebf1"}.jam-star-full:before{content:"\ebf2"}.jam-star-half:before{content:"\ebf3"}.jam-star:before{content:"\ebf4"}.jam-station:before{content:"\ebf5"}.jam-stop-sign:before{content:"\ebf6"}.jam-stop:before{content:"\ebf7"}.jam-store:before{content:"\ebf8"}.jam-strikethrough:before{content:"\ebf9"}.jam-stumbleupon-circle:before{content:"\ebfa"}.jam-stumbleupon-square:before{content:"\ebfb"}.jam-stumbleupon:before{content:"\ebfc"}.jam-sun-f:before{content:"\ebfd"}.jam-sun:before{content:"\ebfe"}.jam-switch-left-f:before{content:"\ebff"}.jam-switch-left:before{content:"\ec00"}.jam-switch-right-f:before{content:"\ec01"}.jam-switch-right:before{content:"\ec02"}.jam-sword-f:before{content:"\ec03"}.jam-sword:before{content:"\ec04"}.jam-tablet-f:before{content:"\ec05"}.jam-tablet:before{content:"\ec06"}.jam-tag-f:before{content:"\ec07"}.jam-tag:before{content:"\ec08"}.jam-tags-f:before{content:"\ec09"}.jam-tags:before{content:"\ec0a"}.jam-target:before{content:"\ec0b"}.jam-task-list-f:before{content:"\ec0c"}.jam-task-list:before{content:"\ec0d"}.jam-temperature:before{content:"\ec0e"}.jam-terminal:before{content:"\ec0f"}.jam-thunder-f:before{content:"\ec10"}.jam-thunder:before{content:"\ec11"}.jam-ticket-f:before{content:"\ec12"}.jam-ticket:before{content:"\ec13"}.jam-tools-f:before{content:"\ec14"}.jam-tools:before{content:"\ec15"}.jam-torch-f:before{content:"\ec16"}.jam-torch:before{content:"\ec17"}.jam-totem:before{content:"\ec18"}.jam-train-f:before{content:"\ec19"}.jam-train:before{content:"\ec1a"}.jam-transgender:before{content:"\ec1b"}.jam-trash-alt-f:before{content:"\ec1c"}.jam-trash-alt:before{content:"\ec1d"}.jam-trash-f:before{content:"\ec1e"}.jam-trash:before{content:"\ec1f"}.jam-tree-alt-f:before{content:"\ec20"}.jam-tree-alt:before{content:"\ec21"}.jam-tree-f:before{content:"\ec22"}.jam-tree:before{content:"\ec23"}.jam-trello:before{content:"\ec24"}.jam-triangle-danger-f:before{content:"\ec25"}.jam-triangle-danger:before{content:"\ec26"}.jam-triangle-f:before{content:"\ec27"}.jam-triangle:before{content:"\ec28"}.jam-trophy-f:before{content:"\ec29"}.jam-trophy:before{content:"\ec2a"}.jam-tube:before{content:"\ec2b"}.jam-tumblr-circle:before{content:"\ec2c"}.jam-tumblr-square:before{content:"\ec2d"}.jam-tumblr:before{content:"\ec2e"}.jam-twitch:before{content:"\ec2f"}.jam-twitter-circle:before{content:"\ec30"}.jam-twitter-square:before{content:"\ec31"}.jam-twitter:before{content:"\ec32"}.jam-umbrella-closed-f:before{content:"\ec33"}.jam-umbrella-closed:before{content:"\ec34"}.jam-umbrella-f:before{content:"\ec35"}.jam-umbrella:before{content:"\ec36"}.jam-underline:before{content:"\ec37"}.jam-undo:before{content:"\ec38"}.jam-unindent:before{content:"\ec39"}.jam-universe:before{content:"\ec3a"}.jam-unordered-list:before{content:"\ec3b"}.jam-unsplash-circle:before{content:"\ec3c"}.jam-unsplash-square:before{content:"\ec3d"}.jam-unsplash:before{content:"\ec3e"}.jam-upload:before{content:"\ec3f"}.jam-user-circle:before{content:"\ec40"}.jam-user-minus:before{content:"\ec41"}.jam-user-plus:before{content:"\ec42"}.jam-user-remove:before{content:"\ec43"}.jam-user-square:before{content:"\ec44"}.jam-user:before{content:"\ec45"}.jam-users:before{content:"\ec46"}.jam-viadeo:before{content:"\ec47"}.jam-viber-circle:before{content:"\ec48"}.jam-viber-square:before{content:"\ec49"}.jam-viber:before{content:"\ec4a"}.jam-video-camera-f:before{content:"\ec4b"}.jam-video-camera-vintage-f:before{content:"\ec4c"}.jam-video-camera-vintage:before{content:"\ec4d"}.jam-video-camera:before{content:"\ec4e"}.jam-vimeo-circle:before{content:"\ec4f"}.jam-vimeo-square:before{content:"\ec50"}.jam-vimeo:before{content:"\ec51"}.jam-vine-circle:before{content:"\ec52"}.jam-vine-square:before{content:"\ec53"}.jam-vine:before{content:"\ec54"}.jam-voicemail:before{content:"\ec55"}.jam-volume-circle-f:before{content:"\ec56"}.jam-volume-circle:before{content:"\ec57"}.jam-volume-down-circle-f:before{content:"\ec58"}.jam-volume-down-circle:before{content:"\ec59"}.jam-volume-down-square-f:before{content:"\ec5a"}.jam-volume-down-square:before{content:"\ec5b"}.jam-volume-down:before{content:"\ec5c"}.jam-volume-mute-circle-f:before{content:"\ec5d"}.jam-volume-mute-circle:before{content:"\ec5e"}.jam-volume-mute-square-f:before{content:"\ec5f"}.jam-volume-mute-square:before{content:"\ec60"}.jam-volume-mute:before{content:"\ec61"}.jam-volume-square-f:before{content:"\ec62"}.jam-volume-square:before{content:"\ec63"}.jam-volume-up-circle-f:before{content:"\ec64"}.jam-volume-up-circle:before{content:"\ec65"}.jam-volume-up-square-f:before{content:"\ec66"}.jam-volume-up-square:before{content:"\ec67"}.jam-volume-up:before{content:"\ec68"}.jam-volume:before{content:"\ec69"}.jam-watch-f:before{content:"\ec6a"}.jam-watch:before{content:"\ec6b"}.jam-water-drop-f:before{content:"\ec6c"}.jam-water-drop:before{content:"\ec6d"}.jam-whatsapp:before{content:"\ec6e"}.jam-wifi:before{content:"\ec6f"}.jam-wikipedia:before{content:"\ec70"}.jam-wordpress:before{content:"\ec71"}.jam-world:before{content:"\ec72"}.jam-wrench-f:before{content:"\ec73"}.jam-wrench:before{content:"\ec74"}.jam-write-f:before{content:"\ec75"}.jam-write:before{content:"\ec76"}.jam-yahoo-circle:before{content:"\ec77"}.jam-yahoo-square:before{content:"\ec78"}.jam-yahoo:before{content:"\ec79"}.jam-yelp-circle:before{content:"\ec7a"}.jam-yelp-square:before{content:"\ec7b"}.jam-yelp:before{content:"\ec7c"}.jam-youtube-circle:before{content:"\ec7d"}.jam-youtube-square:before{content:"\ec7e"}.jam-youtube:before{content:"\ec7f"}
diff --git a/transformer/src/test/resources/sling.pdf b/transformer/src/test/resources/sling.pdf
deleted file mode 100644
index a443389..0000000
--- a/transformer/src/test/resources/sling.pdf
+++ /dev/null
Binary files differ
diff --git a/transformer/src/test/resources/thumbnail.png b/transformer/src/test/resources/thumbnail.png
deleted file mode 100644
index 62cf067..0000000
--- a/transformer/src/test/resources/thumbnail.png
+++ /dev/null
Binary files differ
diff --git a/ui/bnd.bnd b/ui/bnd.bnd
index bd2763c..98e57a6 100644
--- a/ui/bnd.bnd
+++ b/ui/bnd.bnd
@@ -1,3 +1,3 @@
 Sling-Nodetypes: SLING-INF/nodetypes/nodetypes.cnd
-Sling-Initial-Content: jcr_root;overwriteProperties=true;overwrite=false;ignoreImportProviders:=xml,jcr_root/conf/global;overwrite=true;ignoreImportProviders:=xml;path:=/conf/global,jcr_root/etc/clientlibs;overwrite=true;ignoreImportProviders:=xml;path:=/etc/clientlibs,jcr_root/etc/taxonomy;overwrite:=false;uninstall:=true;path:=/etc/taxonomy,jcr_root/oak%3Aindex;overwrite:=false;uninstall:=true;path:=/oak:index,jcr_root/libs/sling/servlet/errorhandler;overwriteProperties:=true;overwrite:=true;uninstall:=true;path:=/libs/sling/servlet/errorhandler,jcr_root/libs/sling-cms;overwrite:=true;uninstall:=true;path:=/libs/sling-cms,jcr_root/static/clientlibs/sling-cms;overwrite:=true;uninstall:=true;path:=/static/clientlibs/sling-cms;ignoreImportProviders:=xml,jcr_root/static/clientlibs/sling-cms-editor;overwrite:=true;uninstall:=true;path:=/static/clientlibs/sling-cms-editor;ignoreImportProviders:=xml,jcr_root/static/sling-cms;overwrite:=true;uninstall:=true;path:=/static/sling-cms;ignoreImportProviders:=xml
+Sling-Initial-Content: jcr_root;overwriteProperties=true;overwrite=false;ignoreImportProviders:=xml,jcr_root/conf/global;overwrite=true;ignoreImportProviders:=xml;path:=/conf/global,jcr_root/etc/clientlibs;overwrite=true;ignoreImportProviders:=xml;path:=/etc/clientlibs,jcr_root/etc/taxonomy;overwrite:=false;uninstall:=true;path:=/etc/taxonomy,jcr_root/oak%3Aindex;overwrite:=false;uninstall:=true;path:=/oak:index,jcr_root/libs/sling/servlet/errorhandler;overwriteProperties:=true;overwrite:=true;uninstall:=true;path:=/libs/sling/servlet/errorhandler,jcr_root/libs/sling-cms;overwrite:=true;uninstall:=true;path:=/libs/sling-cms,jcr_root/libs/sling/commons/thumbnails;overwrite:=true;uninstall:=true;path:=/libs/sling/commons/thumbnails,jcr_root/static/clientlibs/sling-cms;overwrite:=true;uninstall:=true;path:=/static/clientlibs/sling-cms;ignoreImportProviders:=xml,jcr_root/static/clientlibs/sling-cms-editor;overwrite:=true;uninstall:=true;path:=/static/clientlibs/sling-cms-editor;ignoreImportProviders:=xml,jcr_root/static/sling-cms;overwrite:=true;uninstall:=true;path:=/static/sling-cms;ignoreImportProviders:=xml
 -includeresource: target/frontend/dist
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/conf/global.json b/ui/src/main/resources/jcr_root/conf/global.json
index 46e0eca..1fccaa6 100644
--- a/ui/src/main/resources/jcr_root/conf/global.json
+++ b/ui/src/main/resources/jcr_root/conf/global.json
@@ -78,57 +78,45 @@
             "sling-cms-thumbnail": {
                 "jcr:primaryType": "nt:unstructured",
                 "name": "sling-cms-thumbnail",
-                "sling:resourceType": "sling-cms/components/caconfig/transformation",
+                "sling:resourceType": "sling/commons/thumbnails/transformation",
                 "handlers": {
                     "jcr:primaryType": "nt:unstructured",
-                    "size": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "height": "480",
-                        "width": "600",
-                        "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/size"
-                    },
                     "crop": {
                         "jcr:primaryType": "nt:unstructured",
                         "position": "CENTER",
-                        "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/crop"
+                        "height": "480",
+                        "width": "600",
+                        "sling:resourceType": "sling/commons/thumbnails/transformers/crop"
                     }
                 }
             },
             "sling-cms-thumbnail128": {
                 "jcr:primaryType": "nt:unstructured",
                 "name": "sling-cms-thumbnail128",
-                "sling:resourceType": "sling-cms/components/caconfig/transformation",
+                "sling:resourceType": "sling/commons/thumbnails/transformation",
                 "handlers": {
                     "jcr:primaryType": "nt:unstructured",
-                    "size": {
-                        "jcr:primaryType": "nt:unstructured",
-                        "height": "128",
-                        "width": "128",
-                        "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/size"
-                    },
                     "crop": {
                         "jcr:primaryType": "nt:unstructured",
                         "position": "CENTER",
-                        "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/crop"
+                        "height": "128",
+                        "width": "128",
+                        "sling:resourceType": "sling/commons/thumbnails/transformers/crop"
                     }
                 }
             },
             "sling-cms-thumbnail32": {
                 "jcr:primaryType": "nt:unstructured",
                 "name": "sling-cms-thumbnail32",
-                "sling:resourceType": "sling-cms/components/caconfig/transformation",
+                "sling:resourceType": "sling/commons/thumbnails/transformation",
                 "handlers": {
                     "jcr:primaryType": "nt:unstructured",
-                    "size": {
+                    "crop": {
                         "jcr:primaryType": "nt:unstructured",
                         "height": "32",
                         "width": "32",
-                        "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/size"
-                    },
-                    "crop": {
-                        "jcr:primaryType": "nt:unstructured",
                         "position": "CENTER",
-                        "sling:resourceType": "sling-cms/components/caconfig/transformationhandlers/crop"
+                        "sling:resourceType": "sling/commons/thumbnails/transformers/crop"
                     }
                 }
             }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/config.json b/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/config.json
deleted file mode 100644
index ef57689..0000000
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/config.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
-	"jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Configuration"
-}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop.json b/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop.json
deleted file mode 100644
index 6b9670f..0000000
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Crop Handler",
-    "componentType": "SlingCMS-TransformationHandler"
-}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/create.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/create.json
index 6c15e49..e84613c 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/create.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/create.json
@@ -46,7 +46,7 @@
                         "jcr:primaryType": "nt:unstructured",
                         "sling:resourceType": "sling-cms/components/editor/fields/hidden",
                         "name": "sling:resourceType",
-                        "value": "sling-cms/components/caconfig/transformation"
+                        "value": "sling/commons/thumbnails/transformation"
                     }
                 }
             }
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/edit.json b/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/edit.json
index 8051946..aaaddae 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/edit.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/content/transformations/edit.json
@@ -23,7 +23,7 @@
             },
             "transformationeditor": {
                 "jcr:primaryType": "nt:unstructured",
-                "sling:resourceType": "sling-cms/components/caconfig/transformation"
+                "sling:resourceType": "sling/commons/thumbnails/transformation"
             }
         }
     }
diff --git a/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/config.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/config.json
new file mode 100644
index 0000000..5d133a9
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/config.json
@@ -0,0 +1,4 @@
+{
+	"jcr:primaryType": "sling:Component",
+    "jcr:title": "Transformation Configuration"
+}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/config/config.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/config/config.jsp
similarity index 100%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/config/config.jsp
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/config/config.jsp
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/config/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/config/edit.json
similarity index 100%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/config/edit.json
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/config/edit.json
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/transformation.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/transformation.jsp
similarity index 94%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/transformation.jsp
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/transformation.jsp
index 2534257..ebd6782 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformation/transformation.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformation/transformation.jsp
@@ -20,7 +20,7 @@
 <div class="scroll-container">
     <c:set var="cmsEditEnabled" value="true" scope="request" />
     <sling:call script="/libs/sling-cms/components/editor/scripts/init.jsp" />
-    <sling:include path="${slingRequest.requestPathInfo.suffix}" resourceType="sling-cms/components/caconfig/transformation/config" />
+    <sling:include path="${slingRequest.requestPathInfo.suffix}" resourceType="sling/commons/thumbnails/transformation/config" />
     <sling:call script="/libs/sling-cms/components/editor/scripts/finalize.jsp" />
     <c:set var="cmsEditEnabled" value="false" scope="request" />
 </div>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize.json
similarity index 62%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize.json
index 55709a9..3396d4e 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize.json
@@ -1,5 +1,5 @@
 {
     "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Size Handler",
+    "jcr:title": "Colorize Handler",
     "componentType": "SlingCMS-TransformationHandler"
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize/colorize.jsp
similarity index 71%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize/colorize.jsp
index a25f5ec..75b1a8f 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize/colorize.jsp
@@ -18,8 +18,12 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Width" /></dt>
-    <dd>${properties.width}</dd>
-    <dt><fmt:message key="Height" /></dt>
-    <dd>${properties.height}</dd>
+    <dt>Red</dt>
+    <dd><sling:encode value="${properties.red}" mode="HTML" /></dd>
+    <dt>Green</dt>
+    <dd><sling:encode value="${properties.green}" mode="HTML" /></dd>
+    <dt>Blue</dt>
+    <dd><sling:encode value="${properties.blue}" mode="HTML" /></dd>
+    <dt>Alpha</dt>
+    <dd><sling:encode value="${properties.alpha}" mode="HTML" /></dd>
 </dl>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize/edit.json
new file mode 100644
index 0000000..e3e8dfb
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/colorize/edit.json
@@ -0,0 +1,40 @@
+ {
+    "jcr:primaryType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/editor/slingform",
+    "button": "Save",
+    "fields": {
+        "jcr:primaryType": "nt:unstructured",
+        "sling:resourceType": "sling-cms/components/general/container",
+        "red": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Red",
+            "name": "red",
+            "required": true,
+            "type": "number"
+        },
+        "green": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Green",
+            "name": "green",
+            "required": true,
+            "type": "number"
+        },
+        "blue": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Blue",
+            "name": "blue",
+            "required": true,
+            "type": "number"
+        },
+        "alpha": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Alpha",
+            "required": true,
+            "name": "alpha"
+        }
+    }
+}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop.json
similarity index 62%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop.json
index 55709a9..393ce1f 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop.json
@@ -1,5 +1,5 @@
 {
     "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Size Handler",
+    "jcr:title": "Crop Handler",
     "componentType": "SlingCMS-TransformationHandler"
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop/crop.jsp
similarity index 78%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop/crop.jsp
index a25f5ec..695fc24 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop/crop.jsp
@@ -18,8 +18,10 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Width" /></dt>
-    <dd>${properties.width}</dd>
+    <dt><fmt:message key="Position" /></dt>
+    <dd><sling:encode value="${properties.position}" mode="HTML" /></dd>
     <dt><fmt:message key="Height" /></dt>
-    <dd>${properties.height}</dd>
+    <dd><sling:encode value="${properties.height}" mode="HTML" /></dd>
+    <dt><fmt:message key="Width" /></dt>
+    <dd><sling:encode value="${properties.width}" mode="HTML" /></dd>
 </dl>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop/edit.json
similarity index 76%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/edit.json
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop/edit.json
index 4aa1dbb..29b2db0 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/edit.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/crop/edit.json
@@ -48,6 +48,22 @@
                     "value": "TOP_RIGHT"
                 }
             }
+        },
+        "width": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Width",
+            "name": "width",
+            "required": true,
+            "type": "number"
+        },
+        "height": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Height",
+            "name": "height",
+            "required": true,
+            "type": "number"
         }
     }
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip.json
similarity index 62%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip.json
index 55709a9..f0176e7 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip.json
@@ -1,5 +1,5 @@
 {
     "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Size Handler",
+    "jcr:title": "Flip Handler",
     "componentType": "SlingCMS-TransformationHandler"
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip/edit.json
new file mode 100644
index 0000000..e8e5b1d
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip/edit.json
@@ -0,0 +1,26 @@
+{
+  "jcr:primaryType": "nt:unstructured",
+  "sling:resourceType": "sling-cms/components/editor/slingform",
+  "button": "Save",
+  "fields": {
+    "jcr:primaryType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/general/container",
+    "direction": {
+      "jcr:primaryType": "nt:unstructured",
+      "sling:resourceType": "sling-cms/components/editor/fields/select",
+      "label": "Direction",
+      "name": "direction",
+      "required": true,
+      "options": {
+        "horizontal": {
+          "label": "Horizontal",
+          "value": "horizontal"
+        },
+        "vertical": {
+          "label": "Vertical",
+          "value": "vertical"
+        }
+      }
+    }
+  }
+}
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip/flip.jsp
similarity index 87%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip/flip.jsp
index a8cc28b..54b058e 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/flip/flip.jsp
@@ -18,6 +18,6 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Position" /></dt>
-    <dd>${properties.position}</dd>
+    <dt><fmt:message key="Direction" /></dt>
+    <dd><sling:encode value="${properties.direction}" mode="HTML" /></dd>
 </dl>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale.json
similarity index 61%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale.json
index 55709a9..a9afa5a 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale.json
@@ -1,5 +1,5 @@
 {
     "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Size Handler",
+    "jcr:title": "Greyscale Handler",
     "componentType": "SlingCMS-TransformationHandler"
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale/edit.json
new file mode 100644
index 0000000..774c5d5
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale/edit.json
@@ -0,0 +1,7 @@
+ {
+    "jcr:primaryType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/editor/slingform",
+    "button": "No settings required",
+    "fields": {
+    }
+}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale/greyscale.jsp
similarity index 90%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale/greyscale.jsp
index a8cc28b..f8d3e1a 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/greyscale/greyscale.jsp
@@ -18,6 +18,4 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Position" /></dt>
-    <dd>${properties.position}</dd>
 </dl>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize.json
similarity index 62%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize.json
index 55709a9..0fb0728 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize.json
@@ -1,5 +1,5 @@
 {
     "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Size Handler",
+    "jcr:title": "Resize Handler",
     "componentType": "SlingCMS-TransformationHandler"
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize/edit.json
new file mode 100644
index 0000000..fdb2126
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize/edit.json
@@ -0,0 +1,45 @@
+ {
+    "jcr:primaryType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/editor/slingform",
+    "button": "Save",
+    "fields": {
+        "jcr:primaryType": "nt:unstructured",
+        "sling:resourceType": "sling-cms/components/general/container",
+        "width": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Width",
+            "name": "width",
+            "type": "number"
+        },
+        "height": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Height",
+            "name": "height",
+            "type": "number"
+        },
+        "keepAspectRatio": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/select",
+            "label": "Keep Aspect Ratio",
+            "name": "keepAspectRatio",
+            "options": {
+                "yes": {
+                    "label": "Yes",
+                    "value": true
+                },
+                "no": {
+                    "label": "No",
+                    "value": false
+                }
+            }
+        },
+        "keepAspectRatioTypeHint": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/hidden",
+            "name": "keepAspectRatio@TypeHint",
+            "value": "Boolean"
+        }
+    }
+}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize/resize.jsp
similarity index 74%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize/resize.jsp
index a25f5ec..be0d5c8 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/resize/resize.jsp
@@ -18,8 +18,10 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Width" /></dt>
-    <dd>${properties.width}</dd>
-    <dt><fmt:message key="Height" /></dt>
-    <dd>${properties.height}</dd>
+    <dt>Width</dt>
+    <dd><sling:encode value="${properties.width}" mode="HTML" /></dd>
+    <dt>Height</dt>
+    <dd><sling:encode value="${properties.height}" mode="HTML" /></dd>
+    <dt>Keep Aspect Ratio</dt>
+    <dd><sling:encode value="${properties.keepAspectRatio}" mode="HTML" /></dd>
 </dl>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate.json
similarity index 62%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate.json
index 55709a9..db69efa 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate.json
@@ -1,5 +1,5 @@
 {
     "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Size Handler",
+    "jcr:title": "Rotate Handler",
     "componentType": "SlingCMS-TransformationHandler"
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate/edit.json
new file mode 100644
index 0000000..8a88504
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate/edit.json
@@ -0,0 +1,17 @@
+ {
+    "jcr:primaryType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/editor/slingform",
+    "button": "Save",
+    "fields": {
+        "jcr:primaryType": "nt:unstructured",
+        "sling:resourceType": "sling-cms/components/general/container",
+        "degrees": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Degrees",
+            "name": "degrees",
+            "required": true,
+            "type": "text"
+        }
+    }
+}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate/rotate.jsp
similarity index 89%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate/rotate.jsp
index a8cc28b..5407ba5 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/rotate/rotate.jsp
@@ -18,6 +18,6 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Position" /></dt>
-    <dd>${properties.position}</dd>
+    <dt>Degrees</dt>
+    <dd><sling:encode value="${properties.degrees}" mode="HTML" /></dd>
 </dl>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/scale/edit.json
similarity index 69%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/edit.json
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/scale/edit.json
index 4469a65..f32d19c 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/edit.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/scale/edit.json
@@ -5,19 +5,26 @@
     "fields": {
         "jcr:primaryType": "nt:unstructured",
         "sling:resourceType": "sling-cms/components/general/container",
+        "both": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/select",
+            "label": "Both Width and Height",
+            "name": "both",
+            "type": "text"
+        },
         "width": {
             "jcr:primaryType": "nt:unstructured",
             "sling:resourceType": "sling-cms/components/editor/fields/text",
             "label": "Width",
             "name": "width",
-            "type": "number"
+            "type": "text"
         },
         "height": {
             "jcr:primaryType": "nt:unstructured",
             "sling:resourceType": "sling-cms/components/editor/fields/text",
             "label": "Height",
             "name": "height",
-            "type": "number"
+            "type": "text"
         }
     }
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/scale/scale.jsp
similarity index 76%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/scale/scale.jsp
index a25f5ec..d4f4af6 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size/size.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/scale/scale.jsp
@@ -18,8 +18,10 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Width" /></dt>
-    <dd>${properties.width}</dd>
-    <dt><fmt:message key="Height" /></dt>
-    <dd>${properties.height}</dd>
+    <dt>Both</dt>
+    <dd><sling:encode value="${properties.both}" mode="HTML" /></dd>
+    <dt>Width</dt>
+    <dd><sling:encode value="${properties.width}" mode="HTML" /></dd>
+    <dt>Height</dt>
+    <dd><sling:encode value="${properties.height}" mode="HTML" /></dd>
 </dl>
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency.json
similarity index 61%
copy from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
copy to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency.json
index 55709a9..6b70bb0 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/size.json
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency.json
@@ -1,5 +1,5 @@
 {
     "jcr:primaryType": "sling:Component",
-    "jcr:title": "Sling CMS - Transformation Size Handler",
+    "jcr:title": "Transparency Handler",
     "componentType": "SlingCMS-TransformationHandler"
 }
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency/edit.json b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency/edit.json
new file mode 100644
index 0000000..5fa3d3d
--- /dev/null
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency/edit.json
@@ -0,0 +1,16 @@
+ {
+    "jcr:primaryType": "nt:unstructured",
+    "sling:resourceType": "sling-cms/components/editor/slingform",
+    "button": "Save",
+    "fields": {
+        "jcr:primaryType": "nt:unstructured",
+        "sling:resourceType": "sling-cms/components/general/container",
+        "alpha": {
+            "jcr:primaryType": "nt:unstructured",
+            "sling:resourceType": "sling-cms/components/editor/fields/text",
+            "label": "Alpha",
+            "required": true,
+            "name": "alpha"
+        }
+    }
+}
\ No newline at end of file
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency/transparency.jsp
similarity index 90%
rename from ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
rename to ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency/transparency.jsp
index a8cc28b..2d831f9 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/components/caconfig/transformationhandlers/crop/crop.jsp
+++ b/ui/src/main/resources/jcr_root/libs/sling/commons/thumbnails/transformers/transparency/transparency.jsp
@@ -18,6 +18,6 @@
  */ --%>
  <%@include file="/libs/sling-cms/global.jsp"%>
 <dl>
-    <dt><fmt:message key="Position" /></dt>
-    <dd>${properties.position}</dd>
+    <dt>Alpha</dt>
+    <dd><sling:encode value="${properties.alpha}" mode="HTML" /></dd>
 </dl>
\ No newline at end of file
