From 4019283c33fe2006125ae07196d0af1301fb0dd5 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Tue, 13 Jun 2017 11:30:05 +0100 Subject: [PATCH 01/42] added updated example codes --- .../baeldung/string/StringToCharStream.java | 47 ++++++++++++------- .../string/StringToCharStreamUnitTest.java | 14 +++++- 2 files changed, 41 insertions(+), 20 deletions(-) diff --git a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java b/core-java/src/main/java/com/baeldung/string/StringToCharStream.java index 4dc0455192..cbe4deb9a0 100644 --- a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java +++ b/core-java/src/main/java/com/baeldung/string/StringToCharStream.java @@ -12,29 +12,40 @@ public class StringToCharStream { public StringToCharStream() { - //let's use the Stream API to manipulate a string - //this will count the occurrence of each character in the test string + //let's use the Stream API to manipulate a string + //this will count the occurrence of each character in the test string - System.out.println("Counting Occurrence of Letter"); - String testString = "Noww"; + String testString = "tests"; - //we don't want to use foreach, so . . . + //first get an IntStream + IntStream intStream = testString.chars(); + IntStream intStream1 = testString.codePoints(); - Map map = new HashMap<>(); + //now let's map them + Stream characterStream = intStream.mapToObj(c -> (char) c); + Stream characterStream1 = intStream1.mapToObj(c -> (char) c); - testString.codePoints() - .mapToObj(c -> (char) c) - .filter(c -> Character.isLetter(c)) - .forEach(c -> { - if(map.containsKey(c)) { - map.put(c, map.get(c) + 1); - } else { - map.put(c, 1); - } - }); + System.out.println("Counting Occurrence of Letter"); + testString = "Noww"; + + //we don't want to use foreach, so . . . + + Map map = new HashMap<>(); + + testString.codePoints() + .mapToObj(c -> (char) c) + .filter(c -> Character.isLetter(c)) + .forEach(c -> { + if(map.containsKey(c)) { + map.put(c, map.get(c) + 1); + } else { + map.put(c, 1); + } + }); + + //printing out the result here + System.out.println(map.toString()); - //printing out the result here - System.out.println(map.toString()); } diff --git a/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java b/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java index 0c265d0b1f..9332ae814c 100644 --- a/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java +++ b/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java @@ -5,7 +5,9 @@ import org.junit.Test; import java.util.stream.IntStream; import java.util.stream.Stream; +import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; import static org.junit.Assert.assertTrue; /** @@ -17,12 +19,13 @@ public class StringToCharStreamUnitTest { @Test public void givenTestString_whenChars_thenReturnIntStream() { - assertTrue(testString.chars() instanceof IntStream); + + assertThat(testString.chars(), instanceOf(IntStream.class)); } @Test public void givenTestString_whenCodePoints_thenReturnIntStream() { - assertTrue(testString.codePoints() instanceof IntStream); + assertThat(testString.codePoints(), instanceOf(IntStream.class)); } @Test @@ -33,4 +36,11 @@ public class StringToCharStreamUnitTest { assertNotNull("IntStream returned by codePoints() did not map to Stream", characterStream1); } + @Test + public void givenIntStream_whenMapToObj_thenReturnStringStream(){ + Stream stringStream + = testString.codePoints().mapToObj(c -> String.valueOf((char) c)); + assertNotNull(stringStream); + } + } From 4c0886e3044a78c9062be417f6ff137a039dcc41 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Tue, 13 Jun 2017 17:17:47 +0100 Subject: [PATCH 02/42] updated example code StringToCharStream --- .../com/baeldung/string/StringToCharStream.java | 17 +++++++++++++++++ .../string/StringToCharStreamUnitTest.java | 15 +++++++-------- [B[A[B[B[B[Bssc | 0 3 files changed, 24 insertions(+), 8 deletions(-) create mode 100644 [B[A[B[B[B[Bssc diff --git a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java b/core-java/src/main/java/com/baeldung/string/StringToCharStream.java index 06a3ca6a63..6c2e38a546 100644 --- a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java +++ b/core-java/src/main/java/com/baeldung/string/StringToCharStream.java @@ -28,6 +28,23 @@ public class StringToCharStream { } + public static IntStream getIntStreamFromCodePoints(String test) { + return test.codePoints(); + } + + public static IntStream getIntStreamFromChars(String test) { + return test.chars(); + } + + public static Stream mapIntStreamToCharStream(IntStream intStream) { + return intStream.mapToObj(c -> (char) c); + } + + public static Stream mapIntStreamToStringStream(IntStream intStream) { + return intStream.mapToObj(c -> String.valueOf((char) c)); + } + + public static void main(String[] args) { new StringToCharStream(); diff --git a/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java b/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java index 52e38ff898..eeb3051fc1 100644 --- a/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java +++ b/core-java/src/test/java/com/baeldung/string/StringToCharStreamUnitTest.java @@ -8,27 +8,26 @@ import java.util.stream.Stream; import static org.hamcrest.CoreMatchers.instanceOf; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertThat; -import static org.junit.Assert.assertTrue; public class StringToCharStreamUnitTest { - private String testString = "Tests"; @Test public void givenTestString_whenChars_thenReturnIntStream() { - - assertThat(testString.chars(), instanceOf(IntStream.class)); + assertThat(StringToCharStream.getIntStreamFromChars("test"), instanceOf(IntStream.class)); } @Test public void givenTestString_whenCodePoints_thenReturnIntStream() { - assertThat(testString.codePoints(), instanceOf(IntStream.class)); + assertThat(StringToCharStream.getIntStreamFromCodePoints("test"), instanceOf(IntStream.class)); } @Test public void givenIntStream_whenMapToObj_thenReturnCharacterStream() { - Stream characterStream = testString.chars().mapToObj(c -> (char) c); - Stream characterStream1 = testString.codePoints().mapToObj(c -> (char) c); + Stream characterStream + = StringToCharStream.mapIntStreamToCharStream(StringToCharStream.getIntStreamFromChars("test")); + Stream characterStream1 + = StringToCharStream.mapIntStreamToCharStream(StringToCharStream.getIntStreamFromCodePoints("test")); assertNotNull("IntStream returned by chars() did not map to Stream", characterStream); assertNotNull("IntStream returned by codePoints() did not map to Stream", characterStream1); } @@ -36,7 +35,7 @@ public class StringToCharStreamUnitTest { @Test public void givenIntStream_whenMapToObj_thenReturnStringStream() { Stream stringStream - = testString.codePoints().mapToObj(c -> String.valueOf((char) c)); + = StringToCharStream.mapIntStreamToStringStream(StringToCharStream.getIntStreamFromCodePoints("test")); assertNotNull(stringStream); } diff --git a/[B[A[B[B[B[Bssc b/[B[A[B[B[B[Bssc new file mode 100644 index 0000000000..e69de29bb2 From 562d340b82c9886ea0680f3759fe50d8fa6b95e3 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Fri, 16 Jun 2017 11:21:10 +0100 Subject: [PATCH 03/42] deleted StringToCharStream.java locally --- .../baeldung/string/StringToCharStream.java | 53 ------------------- 1 file changed, 53 deletions(-) delete mode 100644 core-java/src/main/java/com/baeldung/string/StringToCharStream.java diff --git a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java b/core-java/src/main/java/com/baeldung/string/StringToCharStream.java deleted file mode 100644 index 6c2e38a546..0000000000 --- a/core-java/src/main/java/com/baeldung/string/StringToCharStream.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.baeldung.string; - -import java.util.Map; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -public class StringToCharStream { - - private StringToCharStream() { - String testString = "tests"; - - IntStream intStream = testString.chars(); - IntStream intStream1 = testString.codePoints(); - - Stream characterStream = intStream.mapToObj(c -> (char) c); - Stream characterStream1 = intStream1.mapToObj(c -> (char) c); - - System.out.println("Counting Occurrence of Letter"); - - Map map = "Noww".codePoints() - .mapToObj(c -> (char) c) - .filter(Character::isLetter) - .collect(Collectors.toMap(c -> c, c -> 1, Integer::sum)); - - //printing out the result here - System.out.println(map.toString()); - - } - - public static IntStream getIntStreamFromCodePoints(String test) { - return test.codePoints(); - } - - public static IntStream getIntStreamFromChars(String test) { - return test.chars(); - } - - public static Stream mapIntStreamToCharStream(IntStream intStream) { - return intStream.mapToObj(c -> (char) c); - } - - public static Stream mapIntStreamToStringStream(IntStream intStream) { - return intStream.mapToObj(c -> String.valueOf((char) c)); - } - - - public static void main(String[] args) { - - new StringToCharStream(); - - } -} From 6e3d26062aa46c28786762363fe1d9859d1a4d0a Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Fri, 16 Jun 2017 11:34:04 +0100 Subject: [PATCH 04/42] removed redundant file --- [B[A[B[B[B[Bssc | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 [B[A[B[B[B[Bssc diff --git a/[B[A[B[B[B[Bssc b/[B[A[B[B[B[Bssc deleted file mode 100644 index e69de29bb2..0000000000 From 5397d2c97015013bcc29307e88ba6869f953be99 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sun, 25 Jun 2017 19:28:02 +0100 Subject: [PATCH 05/42] added code for apache commons collection SetUtils --- libraries/pom.xml | 14 ++- .../commons/collections/SetUtilsUnitTest.java | 115 ++++++++++++++++++ 2 files changed, 128 insertions(+), 1 deletion(-) create mode 100644 libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index da040c9731..45b371061e 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -85,6 +85,11 @@ commons-lang3 ${commons-lang.version} + + org.apache.commons + commons-collections4 + ${commons.collections.version} + org.jasypt jasypt @@ -345,7 +350,12 @@ opennlp-tools 1.8.0 - + + junit + junit + ${junit.version} + test + 0.7.0 @@ -371,6 +381,8 @@ 1.4.0 1.1.0 4.1.10.Final + 4.1 + 4.12 \ No newline at end of file diff --git a/libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java b/libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java new file mode 100644 index 0000000000..3c2949a9b1 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java @@ -0,0 +1,115 @@ +package com.baeldung.commons.collections; + +import org.apache.commons.collections4.SetUtils; +import org.apache.commons.collections4.set.TransformedSet; +import org.junit.Test; + +import java.util.HashSet; +import java.util.Set; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Created by smatt on 21/06/2017. + */ +public class SetUtilsUnitTest { + + @Test(expected = IllegalArgumentException.class) + public void givenSetAndPredicate_whenPredicatedSet_thenValidateSet_and_throw_IllegalArgumentException() { + Set sourceSet = new HashSet<>(); + sourceSet.add("London"); + sourceSet.add("Lagos"); + sourceSet.add("Error Source1"); + Set validatingSet + = SetUtils.predicatedSet(sourceSet, (s) -> s.startsWith("L")); + validatingSet.add("Error Source2"); + } + + @Test + public void givenTwoSets_whenDifference_thenSetView() { + Set a = new HashSet<>(); + a.add(1); + a.add(2); + a.add(5); + Set b = new HashSet<>(); + b.add(1); + b.add(2); + SetUtils.SetView result = SetUtils.difference(a, b); + assertTrue(result.size() == 1 && result.contains(5)); + } + + @Test + public void givenTwoSets_whenUnion_thenUnionResult() { + Set a = new HashSet<>(); + a.add(1); + a.add(2); + a.add(5); + Set b = new HashSet<>(); + b.add(1); + b.add(2); + Set expected = new HashSet<>(); + expected.addAll(a); + expected.addAll(b); + SetUtils.SetView union = SetUtils.union(a, b); + assertTrue(SetUtils.isEqualSet(expected, union)); + } + + @Test + public void givenTwoSets_whenIntersection_thenIntersectionResult() { + Set a = new HashSet<>(); + a.add(1); + a.add(2); + a.add(5); + Set b = new HashSet<>(); + b.add(1); + b.add(2); + Set expected = new HashSet<>(); + expected.add(1); + expected.add(2); + SetUtils.SetView intersect = SetUtils.intersection(a, b); + assertTrue(SetUtils.isEqualSet(expected, intersect)); + } + + @Test + public void givenSet_whenTransformedSet_thenTransformedResult() { + Set a = SetUtils.transformedSet(new HashSet<>(), (e) -> e * 2 ); + a.add(2); + assertEquals(a.toArray()[0], 4); + + Set source = new HashSet<>(); + source.add(1); + Set newSet = TransformedSet.transformedSet(source, (e) -> e * 2); + assertEquals(newSet.toArray()[0], 2); + assertEquals(source.toArray()[0], 2); + } + + @Test + public void givenTwoSet_whenDisjunction_thenDisjunctionSet() { + Set a = new HashSet<>(); + a.add(1); + a.add(2); + a.add(5); + Set b = new HashSet<>(); + b.add(1); + b.add(2); + b.add(3); + SetUtils.SetView result = SetUtils.disjunction(a, b); + assertTrue(result.toSet().contains(5) && result.toSet().contains(3)); + } + + @Test + public void givenSet_when_OrderedSet_thenMaintainElementOrder() { + Set set = new HashSet<>(); + set.add(10); + set.add(1); + set.add(5); + System.out.println("unordered set: " + set); + + Set orderedSet = SetUtils.orderedSet(new HashSet<>()); + orderedSet.add(10); + orderedSet.add(1); + orderedSet.add(5); + System.out.println("ordered set = " + orderedSet); + } +} \ No newline at end of file From f75d80cd270e4660d3336596c111075447edfc85 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 26 Jun 2017 09:42:21 +0100 Subject: [PATCH 06/42] refactored example code --- .../commons/collections/SetUtilsUnitTest.java | 64 +++++-------------- 1 file changed, 16 insertions(+), 48 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java b/libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java index 3c2949a9b1..4d264e3aea 100644 --- a/libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java +++ b/libraries/src/test/java/com/baeldung/commons/collections/SetUtilsUnitTest.java @@ -4,6 +4,7 @@ import org.apache.commons.collections4.SetUtils; import org.apache.commons.collections4.set.TransformedSet; import org.junit.Test; +import java.util.Arrays; import java.util.HashSet; import java.util.Set; @@ -18,55 +19,34 @@ public class SetUtilsUnitTest { @Test(expected = IllegalArgumentException.class) public void givenSetAndPredicate_whenPredicatedSet_thenValidateSet_and_throw_IllegalArgumentException() { Set sourceSet = new HashSet<>(); - sourceSet.add("London"); - sourceSet.add("Lagos"); - sourceSet.add("Error Source1"); + sourceSet.addAll(Arrays.asList("London", "Lagos", "Err Source1")); Set validatingSet = SetUtils.predicatedSet(sourceSet, (s) -> s.startsWith("L")); - validatingSet.add("Error Source2"); + validatingSet.add("Err Source2"); } @Test public void givenTwoSets_whenDifference_thenSetView() { - Set a = new HashSet<>(); - a.add(1); - a.add(2); - a.add(5); - Set b = new HashSet<>(); - b.add(1); - b.add(2); + Set a = new HashSet<>(Arrays.asList(1,2,5)); + Set b = new HashSet<>(Arrays.asList(1,2)); SetUtils.SetView result = SetUtils.difference(a, b); assertTrue(result.size() == 1 && result.contains(5)); } @Test public void givenTwoSets_whenUnion_thenUnionResult() { - Set a = new HashSet<>(); - a.add(1); - a.add(2); - a.add(5); - Set b = new HashSet<>(); - b.add(1); - b.add(2); - Set expected = new HashSet<>(); - expected.addAll(a); - expected.addAll(b); + Set a = new HashSet<>(Arrays.asList(1,2,5)); + Set b = new HashSet<>(Arrays.asList(1,2)); + Set expected = new HashSet<>(Arrays.asList(1,2,5)); SetUtils.SetView union = SetUtils.union(a, b); assertTrue(SetUtils.isEqualSet(expected, union)); } @Test public void givenTwoSets_whenIntersection_thenIntersectionResult() { - Set a = new HashSet<>(); - a.add(1); - a.add(2); - a.add(5); - Set b = new HashSet<>(); - b.add(1); - b.add(2); - Set expected = new HashSet<>(); - expected.add(1); - expected.add(2); + Set a = new HashSet<>(Arrays.asList(1,2,5)); + Set b = new HashSet<>(Arrays.asList(1,2)); + Set expected = new HashSet<>(Arrays.asList(1,2)); SetUtils.SetView intersect = SetUtils.intersection(a, b); assertTrue(SetUtils.isEqualSet(expected, intersect)); } @@ -77,8 +57,7 @@ public class SetUtilsUnitTest { a.add(2); assertEquals(a.toArray()[0], 4); - Set source = new HashSet<>(); - source.add(1); + Set source = new HashSet<>(Arrays.asList(1)); Set newSet = TransformedSet.transformedSet(source, (e) -> e * 2); assertEquals(newSet.toArray()[0], 2); assertEquals(source.toArray()[0], 2); @@ -86,30 +65,19 @@ public class SetUtilsUnitTest { @Test public void givenTwoSet_whenDisjunction_thenDisjunctionSet() { - Set a = new HashSet<>(); - a.add(1); - a.add(2); - a.add(5); - Set b = new HashSet<>(); - b.add(1); - b.add(2); - b.add(3); + Set a = new HashSet<>(Arrays.asList(1,2,5)); + Set b = new HashSet<>(Arrays.asList(1,2,3)); SetUtils.SetView result = SetUtils.disjunction(a, b); assertTrue(result.toSet().contains(5) && result.toSet().contains(3)); } @Test public void givenSet_when_OrderedSet_thenMaintainElementOrder() { - Set set = new HashSet<>(); - set.add(10); - set.add(1); - set.add(5); + Set set = new HashSet<>(Arrays.asList(10,1,5)); System.out.println("unordered set: " + set); Set orderedSet = SetUtils.orderedSet(new HashSet<>()); - orderedSet.add(10); - orderedSet.add(1); - orderedSet.add(5); + orderedSet.addAll(Arrays.asList(10,1,5)); System.out.println("ordered set = " + orderedSet); } } \ No newline at end of file From 23959fc2c27fd9ef256d687349b68c49beace88b Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sun, 16 Jul 2017 01:13:09 +0100 Subject: [PATCH 07/42] added example code for bytebuddy --- libraries/pom.xml | 11 +++ .../main/java/com/baeldung/bytebuddy/Bar.java | 16 ++++ .../main/java/com/baeldung/bytebuddy/Foo.java | 7 ++ .../baeldung/bytebuddy/ByteBuddyUnitTest.java | 89 +++++++++++++++++++ 4 files changed, 123 insertions(+) create mode 100644 libraries/src/main/java/com/baeldung/bytebuddy/Bar.java create mode 100644 libraries/src/main/java/com/baeldung/bytebuddy/Foo.java create mode 100644 libraries/src/test/java/com/baeldung/bytebuddy/ByteBuddyUnitTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 9093a2db03..eebbdf3f0e 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -525,6 +525,16 @@ hll ${hll.version} + + net.bytebuddy + byte-buddy + ${bytebuddy.version} + + + net.bytebuddy + byte-buddy-agent + ${bytebuddy.version} + 0.7.0 @@ -566,6 +576,7 @@ mytheme 1.6.0 + 1.7.1 diff --git a/libraries/src/main/java/com/baeldung/bytebuddy/Bar.java b/libraries/src/main/java/com/baeldung/bytebuddy/Bar.java new file mode 100644 index 0000000000..d0362a6c92 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/bytebuddy/Bar.java @@ -0,0 +1,16 @@ +package com.baeldung.bytebuddy; + +import net.bytebuddy.implementation.bind.annotation.BindingPriority; + +public class Bar { + + @BindingPriority(3) + public static String sayHelloBar() { return "Holla in Bar!"; } + + @BindingPriority(2) + public static String sayBar() { return "bar"; } + + public String bar() { return Bar.class.getSimpleName() + " - Bar"; } + + +} diff --git a/libraries/src/main/java/com/baeldung/bytebuddy/Foo.java b/libraries/src/main/java/com/baeldung/bytebuddy/Foo.java new file mode 100644 index 0000000000..4be06785b1 --- /dev/null +++ b/libraries/src/main/java/com/baeldung/bytebuddy/Foo.java @@ -0,0 +1,7 @@ +package com.baeldung.bytebuddy; + +public class Foo { + + public String sayHelloFoo() { return "Hello in Foo!"; } + +} diff --git a/libraries/src/test/java/com/baeldung/bytebuddy/ByteBuddyUnitTest.java b/libraries/src/test/java/com/baeldung/bytebuddy/ByteBuddyUnitTest.java new file mode 100644 index 0000000000..6b7364a0a5 --- /dev/null +++ b/libraries/src/test/java/com/baeldung/bytebuddy/ByteBuddyUnitTest.java @@ -0,0 +1,89 @@ +package com.baeldung.bytebuddy; + +import net.bytebuddy.ByteBuddy; +import net.bytebuddy.agent.ByteBuddyAgent; +import net.bytebuddy.dynamic.DynamicType; +import net.bytebuddy.dynamic.loading.ClassLoadingStrategy; +import net.bytebuddy.dynamic.loading.ClassReloadingStrategy; +import net.bytebuddy.implementation.FixedValue; +import net.bytebuddy.implementation.MethodDelegation; +import net.bytebuddy.matcher.ElementMatchers; +import org.junit.Test; + +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; + +import static net.bytebuddy.matcher.ElementMatchers.*; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +public class ByteBuddyUnitTest { + + @Test + public void givenObject_whenToString_thenReturnHelloWorldString() throws InstantiationException, IllegalAccessException { + DynamicType.Unloaded unloadedType = new ByteBuddy() + .subclass(Object.class) + .method(ElementMatchers.isToString()) + .intercept(FixedValue.value("Hello World ByteBuddy!")) + .make(); + + Class dynamicType = unloadedType.load(getClass().getClassLoader()) + .getLoaded(); + + assertEquals(dynamicType.newInstance().toString(), "Hello World ByteBuddy!"); + } + + @Test + public void givenFoo_whenRedefined_thenReturnFooRedefined() throws Exception { + ByteBuddyAgent.install(); + new ByteBuddy() + .redefine(Foo.class) + .method(named("sayHelloFoo")) + .intercept(FixedValue.value("Hello Foo Redefined")) + .make() + .load(Foo.class.getClassLoader(), ClassReloadingStrategy.fromInstalledAgent()); + Foo f = new Foo(); + assertEquals(f.sayHelloFoo(), "Hello Foo Redefined"); + } + + @Test + public void givenSayHelloFoo_whenMethodDelegation_thenSayHelloBar() throws IllegalAccessException, InstantiationException { + + String r = new ByteBuddy() + .subclass(Foo.class) + .method( + named("sayHelloFoo") + .and(isDeclaredBy(Foo.class) + .and(returns(String.class))) + ) + .intercept(MethodDelegation.to(Bar.class)) + .make() + .load(getClass().getClassLoader()) + .getLoaded() + .newInstance() + .sayHelloFoo(); + + assertEquals(r, Bar.sayHelloBar()); + } + + @Test + public void givenMethodName_whenDefineMethod_thenCreateMethod() throws Exception { + Class type = new ByteBuddy() + .subclass(Object.class) + .name("MyClassName") + .defineMethod("custom", String.class, Modifier.PUBLIC) + .intercept(MethodDelegation.to(Bar.class)) + .defineField("x", String.class, Modifier.PUBLIC) + .make() + .load(getClass().getClassLoader(), ClassLoadingStrategy.Default.WRAPPER) + .getLoaded(); + + Method m = type.getDeclaredMethod("custom", null); + + assertEquals(m.invoke(type.newInstance()), Bar.sayHelloBar()); + assertNotNull(type.getDeclaredField("x")); + + } + + +} From 471c1e45bb9a889fcf063732ad1d42b0655cb8f1 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Thu, 27 Jul 2017 10:42:11 +0100 Subject: [PATCH 08/42] added example code for PCollections --- libraries/pom.xml | 6 ++ .../pcollections/PCollectionsUnitTest.java | 91 +++++++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java diff --git a/libraries/pom.xml b/libraries/pom.xml index 6ab312a535..d78d1b28ec 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -458,6 +458,11 @@ byte-buddy-agent ${bytebuddy.version} + + org.pcollections + pcollections + ${pcollections.version} + 0.7.0 @@ -497,5 +502,6 @@ 2.0.0.0 1.6.0 1.7.1 + 2.1.2 diff --git a/libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java b/libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java new file mode 100644 index 0000000000..b2f815074a --- /dev/null +++ b/libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java @@ -0,0 +1,91 @@ +package com.baeldung.pcollections; + +import org.junit.Test; +import org.pcollections.*; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +public class PCollectionsUnitTest { + + @Test + public void whenEmpty_thenCreateEmptyHashPMap() { + HashPMap pmap = HashTreePMap.empty(); + assertEquals(pmap.size(), 0); + } + + @Test + public void givenKeyValue_whenSingleton_thenCreateNonEmptyHashPMap() { + HashPMap pmap1 = HashTreePMap.singleton("key1", "value1"); + assertEquals(pmap1.size(), 1); + } + + @Test + public void givenExistingHashMap_whenFrom_thenCreateHashPMap() { + Map map = new HashMap(); + map.put("mkey1", "mval1"); + map.put("mkey2", "mval2"); + + HashPMap pmap2 = HashTreePMap.from(map); + assertEquals(pmap2.size(), 2); + } + + @Test + public void whenHashPMapMethods_thenPerformOperations() { + + HashPMap pmap = HashTreePMap.empty(); + pmap = pmap.plus("key1", "value1"); + assertEquals(pmap.size(), 1); + + Map map = new HashMap(); + map.put("key2", "val2"); + map.put("key3", "val3"); + pmap = pmap.plusAll(map); + + assertEquals(pmap.size(), 3); + + pmap = pmap.minus("key1"); + assertFalse(pmap.containsKey("key1")); + + pmap = pmap.minusAll(map.keySet()); + assertEquals(pmap.size(), 0); + + } + + @Test + public void whenTreePVectorMethods_thenPerformOperations() { + TreePVector pVector = TreePVector.empty(); + + pVector = pVector.plus("e1"); + pVector = pVector.plusAll(Arrays.asList("e2", "e3", "e4")); + assertEquals(4, pVector.size()); + + TreePVector pSub = pVector.subList(0, 2); + assertTrue(pSub.contains("e1") && pSub.contains("e2")); + + TreePVector pVW = (TreePVector) pVector.with(0, "e10"); + assertEquals(pVW.get(0), "e10"); + + pVector = pVector.minus("e1"); + TreePVector pV1 = pVector.minusAll(Arrays.asList("e2", "e3")); + assertEquals(pV1.size(), 1); + } + + @Test + public void whenMapPSetMethods_thenPerformOperations() { + + MapPSet pSet = HashTreePSet.empty() + .plusAll(Arrays.asList("e1","e2","e3","e4")); + assertEquals(pSet.size(), 4); + + pSet = pSet.minus("e4"); + assertFalse(pSet.contains("e4")); + + } + +} From 759693781a49cfd2b7a97e8e2b4cbb397988aac8 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Thu, 27 Jul 2017 10:44:54 +0100 Subject: [PATCH 09/42] update pom --- libraries/pom.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/libraries/pom.xml b/libraries/pom.xml index d78d1b28ec..a655f5267a 100644 --- a/libraries/pom.xml +++ b/libraries/pom.xml @@ -448,16 +448,6 @@ byte-buddy-agent ${bytebuddy.version} - - net.bytebuddy - byte-buddy - ${bytebuddy.version} - - - net.bytebuddy - byte-buddy-agent - ${bytebuddy.version} - org.pcollections pcollections From cb7dc1b9afeeb8b3e9c0e11d504c83af0dbaf3c8 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sat, 29 Jul 2017 14:55:24 +0100 Subject: [PATCH 10/42] refactored tests for PCollections --- .../pcollections/PCollectionsUnitTest.java | 43 +++++++++---------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java b/libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java index b2f815074a..1fd110ddd8 100644 --- a/libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java +++ b/libraries/src/test/java/com/baeldung/pcollections/PCollectionsUnitTest.java @@ -39,53 +39,52 @@ public class PCollectionsUnitTest { public void whenHashPMapMethods_thenPerformOperations() { HashPMap pmap = HashTreePMap.empty(); - pmap = pmap.plus("key1", "value1"); - assertEquals(pmap.size(), 1); + HashPMap pmap0 = pmap.plus("key1", "value1"); Map map = new HashMap(); map.put("key2", "val2"); map.put("key3", "val3"); - pmap = pmap.plusAll(map); + HashPMap pmap1 = pmap0.plusAll(map); - assertEquals(pmap.size(), 3); + HashPMap pmap2 = pmap1.minus("key1"); - pmap = pmap.minus("key1"); - assertFalse(pmap.containsKey("key1")); - - pmap = pmap.minusAll(map.keySet()); - assertEquals(pmap.size(), 0); + HashPMap pmap3 = pmap2.minusAll(map.keySet()); + assertEquals(pmap0.size(), 1); + assertEquals(pmap1.size(), 3); + assertFalse(pmap2.containsKey("key1")); + assertEquals(pmap3.size(), 0); } @Test public void whenTreePVectorMethods_thenPerformOperations() { TreePVector pVector = TreePVector.empty(); - pVector = pVector.plus("e1"); - pVector = pVector.plusAll(Arrays.asList("e2", "e3", "e4")); - assertEquals(4, pVector.size()); + TreePVector pV1 = pVector.plus("e1"); + TreePVector pV2 = pV1.plusAll(Arrays.asList("e2", "e3", "e4")); + assertEquals(1, pV1.size()); + assertEquals(4, pV2.size()); - TreePVector pSub = pVector.subList(0, 2); + TreePVector pV3 = pV2.minus("e1"); + TreePVector pV4 = pV3.minusAll(Arrays.asList("e2", "e3", "e4")); + assertEquals(pV3.size(), 3); + assertEquals(pV4.size(), 0); + + TreePVector pSub = pV2.subList(0, 2); assertTrue(pSub.contains("e1") && pSub.contains("e2")); - TreePVector pVW = (TreePVector) pVector.with(0, "e10"); + TreePVector pVW = (TreePVector) pV2.with(0, "e10"); assertEquals(pVW.get(0), "e10"); - - pVector = pVector.minus("e1"); - TreePVector pV1 = pVector.minusAll(Arrays.asList("e2", "e3")); - assertEquals(pV1.size(), 1); } @Test public void whenMapPSetMethods_thenPerformOperations() { - MapPSet pSet = HashTreePSet.empty() .plusAll(Arrays.asList("e1","e2","e3","e4")); assertEquals(pSet.size(), 4); - pSet = pSet.minus("e4"); - assertFalse(pSet.contains("e4")); - + MapPSet pSet1 = pSet.minus("e4"); + assertFalse(pSet1.contains("e4")); } } From 4c338e63e0c2f4abca4c770aeeb7b402bdc32071 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Thu, 3 Aug 2017 08:43:19 +0100 Subject: [PATCH 11/42] spring security xml config --- jee7/.gitignore | 5 ++++ jee7/pom.xml | 3 +++ .../main/webapp/WEB-INF/spring/security.xml | 23 ++++++++++++++++ jee7/src/main/webapp/WEB-INF/web.xml | 27 +++++++++++++++++++ jee7/src/main/webapp/index.jsp | 18 +++++++++++++ jee7/src/main/webapp/secure.jsp | 24 +++++++++++++++++ 6 files changed, 100 insertions(+) create mode 100644 jee7/.gitignore create mode 100644 jee7/src/main/webapp/WEB-INF/spring/security.xml create mode 100644 jee7/src/main/webapp/index.jsp create mode 100644 jee7/src/main/webapp/secure.jsp diff --git a/jee7/.gitignore b/jee7/.gitignore new file mode 100644 index 0000000000..067348b3f4 --- /dev/null +++ b/jee7/.gitignore @@ -0,0 +1,5 @@ + +/classes/ +/.idea/ +/target/ +/jee7.iml diff --git a/jee7/pom.xml b/jee7/pom.xml index b5e0d80b6c..6858a05d17 100644 --- a/jee7/pom.xml +++ b/jee7/pom.xml @@ -6,8 +6,10 @@ com.baeldung jee7 1.0-SNAPSHOT + war JavaEE 7 Arquillian Archetype Sample + com.baeldung parent-modules @@ -174,6 +176,7 @@ maven-war-plugin ${maven-war-plugin.version} + webapp false diff --git a/jee7/src/main/webapp/WEB-INF/spring/security.xml b/jee7/src/main/webapp/WEB-INF/spring/security.xml new file mode 100644 index 0000000000..777cd9461f --- /dev/null +++ b/jee7/src/main/webapp/WEB-INF/spring/security.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/jee7/src/main/webapp/WEB-INF/web.xml b/jee7/src/main/webapp/WEB-INF/web.xml index 11bd87cf99..5be1bf8808 100644 --- a/jee7/src/main/webapp/WEB-INF/web.xml +++ b/jee7/src/main/webapp/WEB-INF/web.xml @@ -32,6 +32,33 @@ + + + + + + contextConfigLocation + + /WEB-INF/spring/*.xml + + + + + springSecurityFilterChain + org.springframework.web.filter.DelegatingFilterProxy + + + + springSecurityFilterChain + /* + + + + org.springframework.web.context.ContextLoaderListener + + + + index.jsf welcome.jsf diff --git a/jee7/src/main/webapp/index.jsp b/jee7/src/main/webapp/index.jsp new file mode 100644 index 0000000000..66a47eb7ce --- /dev/null +++ b/jee7/src/main/webapp/index.jsp @@ -0,0 +1,18 @@ +<%-- + Created by IntelliJ IDEA. + User: smatt + Date: 02/08/2017 + Time: 07:03 AM + To change this template use File | Settings | File Templates. +--%> +<%@ page contentType="text/html;charset=UTF-8" language="java" %> + + + Index Page + + + Non-secured Index Page +
+ Login + + diff --git a/jee7/src/main/webapp/secure.jsp b/jee7/src/main/webapp/secure.jsp new file mode 100644 index 0000000000..0cadd2cd4f --- /dev/null +++ b/jee7/src/main/webapp/secure.jsp @@ -0,0 +1,24 @@ +<%@ page language="java" contentType="text/html; charset=UTF-8" + pageEncoding="UTF-8"%> +<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> +<%@ taglib uri="http://www.springframework.org/security/tags" prefix="sec" %> + + + + + Home Page + + +

Home Page

+ +

+ Hello
+ Roles: +

+ +
+ + +
+ + \ No newline at end of file From d6985a389ca92134444687bd4581af8d8b61d158 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Thu, 3 Aug 2017 08:45:17 +0100 Subject: [PATCH 12/42] spring security xml config --- jee7/src/main/webapp/WEB-INF/web.xml | 34 ++++++++++++++-------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/jee7/src/main/webapp/WEB-INF/web.xml b/jee7/src/main/webapp/WEB-INF/web.xml index 5be1bf8808..1bcbb96e24 100644 --- a/jee7/src/main/webapp/WEB-INF/web.xml +++ b/jee7/src/main/webapp/WEB-INF/web.xml @@ -36,26 +36,26 @@ - - contextConfigLocation - - /WEB-INF/spring/*.xml - - + + + + + + - - springSecurityFilterChain - org.springframework.web.filter.DelegatingFilterProxy - + + + + - - springSecurityFilterChain - /* - + + + + - - org.springframework.web.context.ContextLoaderListener - + + + From dedd4c11e82fe5de23d908f0f2e4ea6134dc1294 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Fri, 4 Aug 2017 10:39:21 +0100 Subject: [PATCH 13/42] remove redundant comment --- jee7/src/main/webapp/index.jsp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/jee7/src/main/webapp/index.jsp b/jee7/src/main/webapp/index.jsp index 66a47eb7ce..93fef9713d 100644 --- a/jee7/src/main/webapp/index.jsp +++ b/jee7/src/main/webapp/index.jsp @@ -1,10 +1,3 @@ -<%-- - Created by IntelliJ IDEA. - User: smatt - Date: 02/08/2017 - Time: 07:03 AM - To change this template use File | Settings | File Templates. ---%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> @@ -15,4 +8,4 @@
Login - + \ No newline at end of file From 57ea6593ee142c5ab407f4c1ec65e32bb44c6bf9 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Tue, 15 Aug 2017 05:39:12 +0100 Subject: [PATCH 14/42] example code for apache-shiro --- apache-shiro/.gitignore | 4 + apache-shiro/README.md | 0 apache-shiro/pom.xml | 65 +++++++++++ .../src/main/java/com/baeldung/Main.java | 85 +++++++++++++++ .../main/java/com/baeldung/MyCustomRealm.java | 102 ++++++++++++++++++ .../src/main/resources/log4j.properties | 12 +++ apache-shiro/src/main/resources/shiro.ini | 3 + 7 files changed, 271 insertions(+) create mode 100644 apache-shiro/.gitignore create mode 100644 apache-shiro/README.md create mode 100644 apache-shiro/pom.xml create mode 100644 apache-shiro/src/main/java/com/baeldung/Main.java create mode 100644 apache-shiro/src/main/java/com/baeldung/MyCustomRealm.java create mode 100644 apache-shiro/src/main/resources/log4j.properties create mode 100644 apache-shiro/src/main/resources/shiro.ini diff --git a/apache-shiro/.gitignore b/apache-shiro/.gitignore new file mode 100644 index 0000000000..020cda4898 --- /dev/null +++ b/apache-shiro/.gitignore @@ -0,0 +1,4 @@ + +/.idea/ +/target/ +/apache-shiro.iml \ No newline at end of file diff --git a/apache-shiro/README.md b/apache-shiro/README.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/apache-shiro/pom.xml b/apache-shiro/pom.xml new file mode 100644 index 0000000000..97ed872a26 --- /dev/null +++ b/apache-shiro/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + com.baeldung + apache-shiro + 1.0-SNAPSHOT + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + 1.4.0 + 1.2.17 + 1.7.25 + + + + + org.apache.shiro + shiro-core + ${apache-shiro-core-version} + + + org.slf4j + jcl-over-slf4j + ${slf4j-version} + runtime + + + org.slf4j + slf4j-log4j12 + ${slf4j-version} + runtime + + + log4j + log4j + ${log4j-version} + runtime + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.2 + + 1.8 + 1.8 + + + + + + + \ No newline at end of file diff --git a/apache-shiro/src/main/java/com/baeldung/Main.java b/apache-shiro/src/main/java/com/baeldung/Main.java new file mode 100644 index 0000000000..a584008387 --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/Main.java @@ -0,0 +1,85 @@ +package com.baeldung; + +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.config.IniSecurityManagerFactory; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; +import org.apache.shiro.util.Factory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class Main { + + private static final transient Logger log = LoggerFactory.getLogger(Main.class); + + public static void main(String[] args) { + + Factory factory + = new IniSecurityManagerFactory("classpath:shiro.ini"); + SecurityManager securityManager = factory.getInstance(); + + SecurityUtils.setSecurityManager(securityManager); + Subject currentUser = SecurityUtils.getSubject(); + + if (!currentUser.isAuthenticated()) { + UsernamePasswordToken token + = new UsernamePasswordToken("user", "password"); + token.setRememberMe(true); + try { + currentUser.login(token); + } catch (UnknownAccountException uae) { + log.error("Username Not Found!", uae); + } catch (IncorrectCredentialsException ice) { + log.error("Invalid Credentials!", ice); + } catch (LockedAccountException lae) { + log.error("Your Account is Locked!", lae); + } catch (AuthenticationException ae) { + log.error("Unexpected Error!", ae); + } + } + + log.info("User [" + currentUser.getPrincipal() + "] logged in successfully."); + + if (currentUser.hasRole("admin")) { + log.info("Welcome Admin"); + } else if(currentUser.hasRole("editor")) { + log.info("Welcome, Editor!"); + } else if(currentUser.hasRole("author")) { + log.info("Welcome, Author"); + } else { + log.info("Welcome, Guest"); + } + + if(currentUser.isPermitted("articles:compose")) { + log.info("You can compose an article"); + } else { + log.info("You are not permitted to compose an article!"); + } + + if(currentUser.isPermitted("articles:save")) { + log.info("You can save articles"); + } else { + log.info("You can not save articles"); + } + + if(currentUser.isPermitted("articles:publish")) { + log.info("You can publish articles"); + } else { + log.info("You can not publish articles"); + } + + Session session = currentUser.getSession(); + session.setAttribute("key", "value"); + String value = (String) session.getAttribute("key"); + if (value.equals("value")) { + log.info("Retrieved the correct value! [" + value + "]"); + } + + currentUser.logout(); + + System.exit(0); + } + +} diff --git a/apache-shiro/src/main/java/com/baeldung/MyCustomRealm.java b/apache-shiro/src/main/java/com/baeldung/MyCustomRealm.java new file mode 100644 index 0000000000..8d792c76a5 --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/MyCustomRealm.java @@ -0,0 +1,102 @@ +package com.baeldung; + +import org.apache.shiro.authc.*; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.jdbc.JdbcRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.sql.Connection; +import java.sql.SQLException; +import java.util.*; + +public class MyCustomRealm extends JdbcRealm { + + private Map credentials = new HashMap<>(); + private Map> roles = new HashMap<>(); + private Map> perm = new HashMap<>(); + + { + credentials.put("user", "password"); + credentials.put("user2", "password2"); + credentials.put("user3", "password3"); + + roles.put("user", new HashSet<>(Arrays.asList("admin"))); + roles.put("user2", new HashSet<>(Arrays.asList("editor"))); + roles.put("user3", new HashSet<>(Arrays.asList("author"))); + + perm.put("admin", new HashSet<>(Arrays.asList("*"))); + perm.put("editor", new HashSet<>(Arrays.asList("articles:*"))); + perm.put("author", + new HashSet<>(Arrays.asList("articles:compose", + "articles:save"))); + + } + + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) + throws AuthenticationException { + + UsernamePasswordToken uToken = (UsernamePasswordToken) token; + + if(uToken.getUsername() == null + || uToken.getUsername().isEmpty() + || !credentials.containsKey(uToken.getUsername()) + ) { + throw new UnknownAccountException("username not found!"); + } + + + return new SimpleAuthenticationInfo( + uToken.getUsername(), credentials.get(uToken.getUsername()), + getName()); + } + + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { + Set roleNames = new HashSet<>(); + Set permissions = new HashSet<>(); + + principals.forEach(p -> { + try { + Set roles = getRoleNamesForUser(null, (String) p); + roleNames.addAll(roles); + permissions.addAll(getPermissions(null, null,roles)); + } catch (SQLException e) { + e.printStackTrace(); + } + }); + + SimpleAuthorizationInfo info = new SimpleAuthorizationInfo(roleNames); + info.setStringPermissions(permissions); + return info; + } + + @Override + protected Set getRoleNamesForUser(Connection conn, String username) throws SQLException { + if(!roles.containsKey(username)) { + throw new SQLException("username not found!"); + } + + return roles.get(username); + } + + @Override + protected Set getPermissions(Connection conn, String username, Collection roleNames) throws SQLException { + for (String role : roleNames) { + if (!perm.containsKey(role)) { + throw new SQLException("role not found!"); + } + } + + Set finalSet = new HashSet<>(); + for (String role : roleNames) { + finalSet.addAll(perm.get(role)); + } + + return finalSet; + } + +} diff --git a/apache-shiro/src/main/resources/log4j.properties b/apache-shiro/src/main/resources/log4j.properties new file mode 100644 index 0000000000..897bf08221 --- /dev/null +++ b/apache-shiro/src/main/resources/log4j.properties @@ -0,0 +1,12 @@ +log4j.rootLogger=INFO, stdout + +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m %n + +log4j.logger.org.apache=WARN + +log4j.logger.org.apache.shiro=INFO + +log4j.logger.org.apache.shiro.util.ThreadContext=WARN +log4j.logger.org.apache.shiro.cache.ehcache.EhCache=WARN \ No newline at end of file diff --git a/apache-shiro/src/main/resources/shiro.ini b/apache-shiro/src/main/resources/shiro.ini new file mode 100644 index 0000000000..a75f591015 --- /dev/null +++ b/apache-shiro/src/main/resources/shiro.ini @@ -0,0 +1,3 @@ +jdbcRealm = com.baeldung.MyCustomRealm + +securityManager.realms = $jdbcRealm \ No newline at end of file From e3fed15627ee375562eec33e659d7acb83bd3305 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 21 Aug 2017 09:43:23 +0100 Subject: [PATCH 15/42] updated example code for Vavr Collections --- .../collections/CollectionAPIUnitTest.java | 167 +++++++++++------- 1 file changed, 106 insertions(+), 61 deletions(-) diff --git a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java index 4b4eb55fc5..1de428739d 100644 --- a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java +++ b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java @@ -30,16 +30,68 @@ import static org.junit.Assert.assertTrue; public class CollectionAPIUnitTest { + @Test - public void givenEmptyList_whenStacked_thenCorrect() { + public void givenParams_whenListAPI_thenCorrect() { + + List list = List.of("Java", "PHP", "Jquery", "JavaScript", "JShell", "JAVA"); + + List list1 = list.drop(2); + assertFalse(list1.contains("Java") && list1.contains("PHP")); + + List list2 = list.dropRight(2); + assertFalse(list2.contains("JAVA") && list2.contains("JShell")); + + List list3 = list.dropUntil(s -> s.contains("Shell")); + assertEquals(list3.size(), 2); + + List list4 = list.dropWhile(s -> s.length() > 0); + assertTrue(list4.isEmpty()); + + List list5 = list.take(1); + assertEquals(list5.single(), "Java"); + + List list6 = list.takeRight(1); + assertEquals(list6.single(), "JAVA"); + + List list7 = list.takeUntil(s -> s.length() > 6); + assertEquals(list7.size(), 3); + + //distinct + List list8 = list.distinctBy( (s1, s2) -> s1.startsWith(s2.charAt(0)+"") ? 0 : 1); + assertEquals(list8.size(), 2); + + //groupBY + Iterator> iterator = list.grouped(2); + assertEquals(iterator.head().size(), 2); + + Map> map = list.groupBy(e -> e.startsWith("J")); + assertEquals(map.size(), 2); + assertEquals(map.get(false).get().size(), 1); + assertEquals(map.get(true).get().size(), 5); + + //interperse + String words = List.of("Boys", "Girls") + .intersperse("and") + .reduce((s1, s2) -> s1.concat( " " + s2 )) + .trim(); + + assertEquals(words, "Boys and Girls"); + + } + + @Test + public void givenEmptyList_whenStackAPI_thenCorrect() { + List intList = List.empty(); - List anotherList = intList.push(4) - .push(0); - Iterator iterator = anotherList.iterator(); + List intList1 = intList.pushAll(List.rangeClosed(5,10)); + + assertEquals(intList1.peek(), Integer.valueOf(10)); + + List intList2 = intList1.pop(); + assertEquals(intList2.size(), (intList1.size() - 1) ); - assertEquals(new Integer(0), iterator.next()); - assertEquals(new Integer(4), iterator.next()); } @Test @@ -61,27 +113,33 @@ public class CollectionAPIUnitTest { @Test public void givenQueue_whenEnqueued_thenCorrect() { + Queue queue = Queue.of(1, 2, 3); - Queue secondQueue = queue.enqueue(4) - .enqueue(5); + Queue secondQueue = queue.enqueueAll(List.of(4,5)); assertEquals(3, queue.size()); assertEquals(5, secondQueue.size()); Tuple2> result = secondQueue.dequeue(); - Integer headValue = result.apply((head, tail) -> head); - assertEquals(new Integer(1), headValue); + assertEquals(Integer.valueOf(1), result._1); - Iterator iterator = result.apply((head, tail) -> tail.iterator()); - - assertEquals(new Integer(2), iterator.next()); - assertEquals(new Integer(3), iterator.next()); - assertEquals(new Integer(4), iterator.next()); - assertEquals(new Integer(5), iterator.next()); + Queue tailQueue = result._2; + assertFalse(tailQueue.contains(secondQueue.get(0))); } @Test public void givenStream_whenProcessed_thenCorrect() { + + Stream s1 = Stream.tabulate(5, (i)-> i + 1); + assertEquals(s1.get(2).intValue(), 3); + + Stream s = Stream.of(2,1,3,4); + + Stream> s2 = s.zip(List.of(7,8,9)); + Tuple2 t1 = s2.get(0); + assertEquals(t1._1().intValue(), 2); + assertEquals(t1._2().intValue(), 7); + Stream intStream = Stream.iterate(0, i -> i + 1) .take(10); @@ -92,7 +150,6 @@ public class CollectionAPIUnitTest { .longValue(); assertEquals(20, evenSum); - assertEquals(new Integer(5), intStream.get(5)); } @Test @@ -102,11 +159,12 @@ public class CollectionAPIUnitTest { assertEquals(3, intArray.size()); assertEquals(2, newArray.size()); + assertEquals(3, newArray.get(1).intValue()); + + Array array2 = intArray.replace(1, 5); + assertEquals(array2.get(0).intValue(), 5); + - assertEquals(new Integer(1), intArray.get(0)); - assertEquals(new Integer(2), intArray.get(1)); - assertEquals(new Integer(3), intArray.get(2)); - assertEquals(new Integer(3), newArray.get(1)); } @Test @@ -117,10 +175,8 @@ public class CollectionAPIUnitTest { assertEquals(4, intVector.size()); assertEquals(4, newVector.size()); - assertEquals(new Integer(1), intVector.get(0)); - assertEquals(new Integer(2), intVector.get(1)); - assertEquals(new Integer(3), intVector.get(2)); - assertEquals(new Integer(6), newVector.get(1)); + assertEquals(2, intVector.get(1).intValue()); + assertEquals(6, newVector.get(1).intValue()); } @Test @@ -143,57 +199,48 @@ public class CollectionAPIUnitTest { assertEquals(3, set.size()); assertEquals(4, newSet.size()); - assertFalse(set.contains("Yellow")); assertTrue(newSet.contains("Yellow")); } @Test public void givenSortedSet_whenIterated_thenCorrect() { SortedSet set = TreeSet.of("Red", "Green", "Blue"); + assertEquals("Blue", set.head()); - Iterator iterator = set.iterator(); - assertEquals("Blue", iterator.next()); - assertEquals("Green", iterator.next()); - assertEquals("Red", iterator.next()); + SortedSet intSet = TreeSet.of(1,2,3); + assertEquals(2, intSet.average().get().intValue()); + } @Test public void givenSortedSet_whenReversed_thenCorrect() { - SortedSet set = TreeSet.of(Comparator.reverseOrder(), "Green", "Red", "Blue"); + SortedSet set = TreeSet.of( "Green", "Red", "Blue"); + assertEquals("Blue", set.head()); - Iterator iterator = set.iterator(); - assertEquals("Red", iterator.next()); - assertEquals("Green", iterator.next()); - assertEquals("Blue", iterator.next()); + SortedSet reversedSet = set.toSortedSet(Comparator.reverseOrder()); + assertEquals("Red", reversedSet.head()); + + String str = set.mkString(" and "); + assertEquals("Blue and Green and Red", str); } @Test public void givenMap_whenIterated_thenCorrect() { Map> map = List.rangeClosed(0, 10) .groupBy(i -> i % 2); - + assertEquals(2, map.size()); - - Iterator>> iterator = map.iterator(); - assertEquals(6, iterator.next() - ._2() - .size()); - assertEquals(5, iterator.next() - ._2() - .size()); + assertEquals(6, map.get(0).get().size()); + assertEquals(5, map.get(1).get().size()); } @Test public void givenTreeMap_whenIterated_thenCorrect() { - SortedMap map = TreeMap.of(3, "Three", 2, "Two", 4, "Four", 1, "One"); + SortedMap map + = TreeMap.of(3, "Three", 2, "Two", 4, "Four", 1, "One"); - Iterator> iterator = map.iterator(); - assertEquals(new Integer(1), iterator.next() - ._1()); - assertEquals(new Integer(2), iterator.next() - ._1()); - assertEquals(new Integer(3), iterator.next() - ._1()); + assertEquals(1, map.keySet().toJavaArray()[0]); + assertEquals("Four", map.get(4).get()); } @Test @@ -202,14 +249,13 @@ public class CollectionAPIUnitTest { List vavrList = List.ofAll(javaList); assertEquals(4, vavrList.size()); - assertEquals(new Integer(1), vavrList.head()); + assertEquals(1, vavrList.head().intValue()); java.util.stream.Stream javaStream = javaList.stream(); Set vavrSet = HashSet.ofAll(javaStream); assertEquals(4, vavrSet.size()); - assertEquals(new Integer(2), vavrSet.tail() - .head()); + assertEquals(2, vavrSet.tail().head().intValue()); } @Test @@ -220,7 +266,7 @@ public class CollectionAPIUnitTest { .collect(List.collector()); assertEquals(4, vavrList.size()); - assertEquals(new Integer(2), vavrList.head()); + assertEquals(2, vavrList.head().intValue()); } @Test @@ -231,7 +277,7 @@ public class CollectionAPIUnitTest { java.util.Map map = List.of("1", "2", "3") .toJavaMap(i -> Tuple.of(i, Integer.valueOf(i))); - assertEquals(new Integer(2), map.get("2")); + assertEquals(2, map.get("2").intValue()); } @Test @@ -240,8 +286,7 @@ public class CollectionAPIUnitTest { .collect(Collectors.toSet()); assertEquals(3, javaSet.size()); - assertEquals(new Integer(1), javaSet.iterator() - .next()); + assertEquals(1, javaSet.toArray()[0]); } @Test @@ -250,7 +295,7 @@ public class CollectionAPIUnitTest { .asJavaMutable(); javaList.add(4); - assertEquals(new Integer(4), javaList.get(3)); + assertEquals(4, javaList.get(3).intValue()); } @Test(expected = UnsupportedOperationException.class) @@ -258,7 +303,7 @@ public class CollectionAPIUnitTest { java.util.List javaList = List.of(1, 2, 3) .asJava(); - assertEquals(new Integer(3), javaList.get(2)); + assertEquals(3, javaList.get(2).intValue()); javaList.add(4); } From 17ce271e8d6bd7c0c4c1ff22cfd85d2c2a0399e8 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 21 Aug 2017 12:11:27 +0100 Subject: [PATCH 16/42] updated Vavr's Collection example --- .../vavr/collections/CollectionAPIUnitTest.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java index 1de428739d..3db43148eb 100644 --- a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java +++ b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java @@ -34,7 +34,8 @@ public class CollectionAPIUnitTest { @Test public void givenParams_whenListAPI_thenCorrect() { - List list = List.of("Java", "PHP", "Jquery", "JavaScript", "JShell", "JAVA"); + List list + = List.of("Java", "PHP", "Jquery", "JavaScript", "JShell", "JAVA"); List list1 = list.drop(2); assertFalse(list1.contains("Java") && list1.contains("PHP")); @@ -58,7 +59,8 @@ public class CollectionAPIUnitTest { assertEquals(list7.size(), 3); //distinct - List list8 = list.distinctBy( (s1, s2) -> s1.startsWith(s2.charAt(0)+"") ? 0 : 1); + List list8 + = list.distinctBy( (s1, s2) -> s1.startsWith(s2.charAt(0)+"") ? 0 : 1); assertEquals(list8.size(), 2); //groupBY @@ -214,14 +216,12 @@ public class CollectionAPIUnitTest { @Test public void givenSortedSet_whenReversed_thenCorrect() { - SortedSet set = TreeSet.of( "Green", "Red", "Blue"); - assertEquals("Blue", set.head()); - - SortedSet reversedSet = set.toSortedSet(Comparator.reverseOrder()); + SortedSet reversedSet + = TreeSet.of(Comparator.reverseOrder(), "Green", "Red", "Blue"); assertEquals("Red", reversedSet.head()); - String str = set.mkString(" and "); - assertEquals("Blue and Green and Red", str); + String str = reversedSet.mkString(" and "); + assertEquals("Red and Green and Blue", str); } @Test From 31c5db1aa63d09ce771604eea707f2caf124043a Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Thu, 24 Aug 2017 16:22:38 +0100 Subject: [PATCH 17/42] updated Vavr Collection file --- .../com/baeldung/vavr/collections/CollectionAPIUnitTest.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java index 3db43148eb..cfc789a837 100644 --- a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java +++ b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java @@ -58,12 +58,10 @@ public class CollectionAPIUnitTest { List list7 = list.takeUntil(s -> s.length() > 6); assertEquals(list7.size(), 3); - //distinct List list8 = list.distinctBy( (s1, s2) -> s1.startsWith(s2.charAt(0)+"") ? 0 : 1); assertEquals(list8.size(), 2); - //groupBY Iterator> iterator = list.grouped(2); assertEquals(iterator.head().size(), 2); @@ -72,7 +70,6 @@ public class CollectionAPIUnitTest { assertEquals(map.get(false).get().size(), 1); assertEquals(map.get(true).get().size(), 5); - //interperse String words = List.of("Boys", "Girls") .intersperse("and") .reduce((s1, s2) -> s1.concat( " " + s2 )) From 1bb1dc081584fac798903d7c913ad38a88c47794 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Fri, 25 Aug 2017 14:11:55 +0100 Subject: [PATCH 18/42] updated example code for Apache Shiro --- apache-shiro/pom.xml | 19 +++- .../com/baeldung/ShiroSpringApplication.java | 45 ++++++++ .../controllers/ShiroSpringController.java | 105 ++++++++++++++++++ .../com/baeldung/models/UserCredentials.java | 40 +++++++ .../src/main/resources/application.properties | 11 ++ .../src/main/resources/templates/index.ftl | 10 ++ .../src/main/resources/templates/login.ftl | 27 +++++ .../src/main/resources/templates/secure.ftl | 15 +++ 8 files changed, 269 insertions(+), 3 deletions(-) create mode 100644 apache-shiro/src/main/java/com/baeldung/ShiroSpringApplication.java create mode 100644 apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java create mode 100644 apache-shiro/src/main/java/com/baeldung/models/UserCredentials.java create mode 100644 apache-shiro/src/main/resources/application.properties create mode 100644 apache-shiro/src/main/resources/templates/index.ftl create mode 100644 apache-shiro/src/main/resources/templates/login.ftl create mode 100644 apache-shiro/src/main/resources/templates/secure.ftl diff --git a/apache-shiro/pom.xml b/apache-shiro/pom.xml index 97ed872a26..711ddb5cee 100644 --- a/apache-shiro/pom.xml +++ b/apache-shiro/pom.xml @@ -9,9 +9,9 @@ 1.0-SNAPSHOT - com.baeldung - parent-modules - 1.0.0-SNAPSHOT + org.springframework.boot + spring-boot-starter-parent + 1.5.2.RELEASE @@ -21,6 +21,19 @@ + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-starter-freemarker + + + org.apache.shiro + shiro-spring-boot-web-starter + ${apache-shiro-core-version} + org.apache.shiro shiro-core diff --git a/apache-shiro/src/main/java/com/baeldung/ShiroSpringApplication.java b/apache-shiro/src/main/java/com/baeldung/ShiroSpringApplication.java new file mode 100644 index 0000000000..e12d3ebffa --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/ShiroSpringApplication.java @@ -0,0 +1,45 @@ +package com.baeldung; + +import org.apache.shiro.realm.Realm; +import org.apache.shiro.spring.web.config.DefaultShiroFilterChainDefinition; +import org.apache.shiro.spring.web.config.ShiroFilterChainDefinition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; + +/** + * Created by smatt on 21/08/2017. + */ +@SpringBootApplication +public class ShiroSpringApplication { + + private static final transient Logger log = LoggerFactory.getLogger(ShiroSpringApplication.class); + + public static void main(String... args) { + SpringApplication.run(ShiroSpringApplication.class, args); + } + + + @Bean + public Realm realm() { + return new MyCustomRealm(); + } + + + @Bean + public ShiroFilterChainDefinition shiroFilterChainDefinition() { + DefaultShiroFilterChainDefinition filter + = new DefaultShiroFilterChainDefinition(); + + filter.addPathDefinition("/secure", "authc"); + filter.addPathDefinition("/**", "anon"); + + return filter; + } + + + + +} diff --git a/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java new file mode 100644 index 0000000000..e6e72b2579 --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/controllers/ShiroSpringController.java @@ -0,0 +1,105 @@ +package com.baeldung.controllers; + +import com.baeldung.models.UserCredentials; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.apache.shiro.subject.Subject; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import javax.servlet.http.HttpServletRequest; + +@Controller +public class ShiroSpringController { + + + + @GetMapping("/") + public String index() { + return "index"; + } + + + @RequestMapping( value = "/login", method = {RequestMethod.GET, RequestMethod.POST}) + public String login(HttpServletRequest req, UserCredentials cred, RedirectAttributes attr) { + + if(req.getMethod().equals(RequestMethod.GET.toString())) { + return "login"; + } + else { + + Subject subject = SecurityUtils.getSubject(); + + if(!subject.isAuthenticated()) { + UsernamePasswordToken token = new UsernamePasswordToken( + cred.getUsername(), cred.getPassword(), cred.isRememberMe()); + try { + subject.login(token); + } catch (AuthenticationException ae) { + ae.printStackTrace(); + attr.addFlashAttribute("error", "Invalid Credentials"); + return "redirect:/login"; + } + } + + return "redirect:/secure"; + } + } + + + @GetMapping("/secure") + public String secure(ModelMap modelMap) { + + Subject currentUser = SecurityUtils.getSubject(); + String role = "", permission = ""; + + if(currentUser.hasRole("admin")) { + role = role + "You are an Admin"; + } + else if(currentUser.hasRole("editor")) { + role = role + "You are an Editor"; + } + else if(currentUser.hasRole("author")) { + role = role + "You are an Author"; + } + + if(currentUser.isPermitted("articles:compose")) { + permission = permission + "You can compose an article, "; + } else { + permission = permission + "You are not permitted to compose an article!, "; + } + + if(currentUser.isPermitted("articles:save")) { + permission = permission + "You can save articles, "; + } else { + permission = permission + "\nYou can not save articles, "; + } + + if(currentUser.isPermitted("articles:publish")) { + permission = permission + "\nYou can publish articles"; + } else { + permission = permission + "\nYou can not publish articles"; + } + + modelMap.addAttribute("username", currentUser.getPrincipal()); + modelMap.addAttribute("permission", permission); + modelMap.addAttribute("role", role); + + return "secure"; + } + + + @PostMapping("/logout") + public String logout() { + Subject subject = SecurityUtils.getSubject(); + subject.logout(); + return "redirect:/"; + } + +} diff --git a/apache-shiro/src/main/java/com/baeldung/models/UserCredentials.java b/apache-shiro/src/main/java/com/baeldung/models/UserCredentials.java new file mode 100644 index 0000000000..51b429046a --- /dev/null +++ b/apache-shiro/src/main/java/com/baeldung/models/UserCredentials.java @@ -0,0 +1,40 @@ +package com.baeldung.models; + +public class UserCredentials { + + private String username; + private String password; + private boolean rememberMe = false; + + public UserCredentials() {} + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public boolean isRememberMe() { + return rememberMe; + } + + public void setRememberMe(boolean rememberMe) { + this.rememberMe = rememberMe; + } + + @Override + public String toString() { + return "username = " + getUsername() + + "\nrememberMe = " + isRememberMe(); + } +} diff --git a/apache-shiro/src/main/resources/application.properties b/apache-shiro/src/main/resources/application.properties new file mode 100644 index 0000000000..5bcb6b3352 --- /dev/null +++ b/apache-shiro/src/main/resources/application.properties @@ -0,0 +1,11 @@ +server.port=9000 +server.servlet-path=/ +server.context-path=/ + +#shiro-spring-boot-config +shiro.loginUrl = /login +shiro.successUrl = /secure +shiro.unauthorizedUrl = /login + +#freemarker +spring.freemarker.suffix=.ftl diff --git a/apache-shiro/src/main/resources/templates/index.ftl b/apache-shiro/src/main/resources/templates/index.ftl new file mode 100644 index 0000000000..0210d656fc --- /dev/null +++ b/apache-shiro/src/main/resources/templates/index.ftl @@ -0,0 +1,10 @@ + + + Index + + +

Welcome Guest!

+
+ Login + + \ No newline at end of file diff --git a/apache-shiro/src/main/resources/templates/login.ftl b/apache-shiro/src/main/resources/templates/login.ftl new file mode 100644 index 0000000000..3a0552dc2e --- /dev/null +++ b/apache-shiro/src/main/resources/templates/login.ftl @@ -0,0 +1,27 @@ + + + Login + + +

Login

+
+
+ <#if (error?length > 0)??> +

${error}

+ <#else> + + + +
+ +

+ +
+ +

+ Remember Me +

+ +
+ + \ No newline at end of file diff --git a/apache-shiro/src/main/resources/templates/secure.ftl b/apache-shiro/src/main/resources/templates/secure.ftl new file mode 100644 index 0000000000..4466a0162f --- /dev/null +++ b/apache-shiro/src/main/resources/templates/secure.ftl @@ -0,0 +1,15 @@ + + + Secure + + +

Welcome ${username}!

+

Role: ${role}

+

Permissions

+

${permission}

+
+
+ +
+ + \ No newline at end of file From c578f30d7d57365aa24ce990fafe343df8400016 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sat, 2 Sep 2017 13:51:17 +0100 Subject: [PATCH 19/42] updated Vavr Collections example --- .../collections/CollectionAPIUnitTest.java | 67 ++++++++++++++++--- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java index cfc789a837..b4e7628e84 100644 --- a/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java +++ b/vavr/src/test/java/com/baeldung/vavr/collections/CollectionAPIUnitTest.java @@ -2,8 +2,9 @@ package com.baeldung.vavr.collections; import io.vavr.Tuple; import io.vavr.Tuple2; -import io.vavr.collection.Array; -import io.vavr.collection.CharSeq; +import io.vavr.collection.*; +import io.vavr.collection.BitSet; +import io.vavr.collection.HashMap; import io.vavr.collection.HashSet; import io.vavr.collection.Iterator; import io.vavr.collection.List; @@ -12,13 +13,12 @@ import io.vavr.collection.Queue; import io.vavr.collection.Set; import io.vavr.collection.SortedMap; import io.vavr.collection.SortedSet; -import io.vavr.collection.Stream; import io.vavr.collection.TreeMap; import io.vavr.collection.TreeSet; import io.vavr.collection.Vector; import org.junit.Test; -import java.util.Comparator; +import java.util.*; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -124,6 +124,9 @@ public class CollectionAPIUnitTest { Queue tailQueue = result._2; assertFalse(tailQueue.contains(secondQueue.get(0))); + + Queue> queue1 = queue.combinations(2); + assertEquals(queue1.get(2).toCharSeq(), CharSeq.of("23")); } @Test @@ -153,17 +156,23 @@ public class CollectionAPIUnitTest { @Test public void givenArray_whenQueried_thenCorrect() { + + Array rArray = Array.range(1, 5); + assertFalse(rArray.contains(5)); + + Array rArray2 = Array.rangeClosed(1, 5); + assertTrue(rArray2.contains(5)); + + Array rArray3 = Array.rangeClosedBy(1,6,2); + assertEquals(rArray3.size(), 3); + Array intArray = Array.of(1, 2, 3); Array newArray = intArray.removeAt(1); - - assertEquals(3, intArray.size()); assertEquals(2, newArray.size()); assertEquals(3, newArray.get(1).intValue()); Array array2 = intArray.replace(1, 5); assertEquals(array2.get(0).intValue(), 5); - - } @Test @@ -199,6 +208,15 @@ public class CollectionAPIUnitTest { assertEquals(3, set.size()); assertEquals(4, newSet.size()); assertTrue(newSet.contains("Yellow")); + + HashSet set0 = HashSet.rangeClosed(1,5); + HashSet set1 = HashSet.rangeClosed(3, 6); + + assertEquals(set0.union(set1), HashSet.rangeClosed(1,6)); + assertEquals(set0.diff(set1), HashSet.rangeClosed(1,2)); + assertEquals(set0.intersect(set1), HashSet.rangeClosed(3,5)); + + } @Test @@ -222,13 +240,39 @@ public class CollectionAPIUnitTest { } @Test - public void givenMap_whenIterated_thenCorrect() { + public void giveBitSet_whenApiMethods_thenCorrect() { + + BitSet bitSet = BitSet.of(1,2,3,4,5,6,7,8); + + BitSet bitSet1 = bitSet.takeUntil(i -> i > 4); + assertEquals(bitSet1.size(), 4); + + } + + @Test + public void givenMap_whenMapApi_thenCorrect() { Map> map = List.rangeClosed(0, 10) .groupBy(i -> i % 2); assertEquals(2, map.size()); assertEquals(6, map.get(0).get().size()); assertEquals(5, map.get(1).get().size()); + + Map map1 + = HashMap.of("key1", "val1", "key2", "val2", "key3", "val3"); + + Map fMap + = map1.filterKeys(k -> k.contains("1") || k.contains("2")); + assertFalse(fMap.containsKey("key3")); + + Map fMap2 + = map1.filterValues(v -> v.contains("3")); + assertEquals(fMap2.size(), 1); + assertTrue(fMap2.containsValue("val3")); + + Map map2 = map1.map( + (k, v) -> Tuple.of(k, Integer.valueOf(v.charAt(v.length() - 1) + "") )); + assertEquals(map2.get("key1").get().intValue(), 1); } @Test @@ -238,6 +282,11 @@ public class CollectionAPIUnitTest { assertEquals(1, map.keySet().toJavaArray()[0]); assertEquals("Four", map.get(4).get()); + + TreeMap treeMap2 = + TreeMap.of(Comparator.reverseOrder(), 3,"three", 6, "six", 1, "one"); + assertEquals(treeMap2.keySet().mkString(), "631"); + } @Test From 3f5bef6427dcf197d2b740c473200d0ffb023292 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sat, 16 Sep 2017 09:53:52 +0100 Subject: [PATCH 20/42] added example code for N1QL --- couchbase-sdk/.gitignore | 6 + couchbase-sdk/pom.xml | 16 +- .../baeldung/couchbase/n1ql/CodeSnippets.java | 235 ++++++++++++++++++ 3 files changed, 256 insertions(+), 1 deletion(-) create mode 100644 couchbase-sdk/.gitignore create mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java diff --git a/couchbase-sdk/.gitignore b/couchbase-sdk/.gitignore new file mode 100644 index 0000000000..f6867e01bd --- /dev/null +++ b/couchbase-sdk/.gitignore @@ -0,0 +1,6 @@ +# Created by .ignore support plugin (hsz.mobi) + +# IntelliJ project files +.idea +*.iml +/target/ diff --git a/couchbase-sdk/pom.xml b/couchbase-sdk/pom.xml index fd9e1b08f6..a864b611dc 100644 --- a/couchbase-sdk/pom.xml +++ b/couchbase-sdk/pom.xml @@ -23,6 +23,18 @@ ${couchbase.client.version}
+ + com.fasterxml.jackson.core + jackson-databind + ${jackson-version} + + + io.vavr + vavr + ${vavr-version} + + + org.springframework @@ -67,9 +79,11 @@ 1.8 UTF-8 - 2.4.0 + 2.4.7 4.3.5.RELEASE 3.5 + 0.9.0 + 2.9.1 diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java new file mode 100644 index 0000000000..e297c34d7a --- /dev/null +++ b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java @@ -0,0 +1,235 @@ +package com.baeldung.couchbase.n1ql; + +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.document.json.JsonArray; +import com.couchbase.client.java.document.json.JsonObject; +import com.couchbase.client.java.query.N1qlQuery; +import com.couchbase.client.java.query.N1qlQueryResult; +import com.couchbase.client.java.query.N1qlQueryRow; +import com.couchbase.client.java.query.Statement; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import io.vavr.control.Try; +import rx.Observable; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static com.couchbase.client.java.query.Select.select; +import static com.couchbase.client.java.query.dsl.Expression.i; +import static com.couchbase.client.java.query.dsl.Expression.s; +import static com.couchbase.client.java.query.dsl.Expression.x; + +public class CodeSnippets { + + public static void main(String[] args) { + + Cluster cluster = CouchbaseCluster.create("127.0.0.1"); + Bucket bucket = cluster.openBucket("test", 1, TimeUnit.MINUTES); + Bucket bucket1 = cluster.openBucket("travel-sample", 2, TimeUnit.MINUTES); + + bucket.bucketManager().createN1qlPrimaryIndex(true, false); + bucket1.bucketManager().createN1qlPrimaryIndex(true, false); + + insertDocument(bucket1); + basicSelect(bucket1); + selectStatement1(bucket1); + selectStatement2(bucket1); + selectStatement3DSL(bucket1); + selectStatement4(bucket1); + selectStatement4DSL(bucket1); + insertStatement1(bucket1); + insertStatement2(bucket1); + insertStatement3Bulk(bucket1); + updateStatement1(bucket1); + updateStatement2Upsert(bucket1); + updateStatement3(bucket1); + deleteStatement1(bucket1); + deleteStatement2(bucket1); + + bucket.close(); + bucket1.close(); + cluster.disconnect(); + System.exit(0); + + } + + private static void insertDocument(Bucket bucket) { + + JsonObject personObj = JsonObject.create() + .put("name", "John") + .put("email", "john@doe.com") + .put("interests", JsonArray.from("Java", "Nigerian Jollof")); + + String id = UUID.randomUUID().toString(); + JsonDocument doc = JsonDocument.create(id, personObj); + bucket.insert(doc); + + System.out.println(bucket.get(id)); + } + + private static void basicSelect(Bucket bucket) { + + N1qlQueryResult result + = bucket.query(N1qlQuery.simple("SELECT * FROM test")); + + result.forEach(System.out::println); + + System.out.println("result count: " + result.info().resultCount()); + System.out.println("error count: " + result.info().errorCount()); + } + + private static void selectStatement1(Bucket bucket) { + + N1qlQueryResult result1 = bucket.query( + N1qlQuery.simple("SELECT name FROM `travel-sample` WHERE type = 'airport' LIMIT 100")); + + System.out.println("Result Count " + result1.info().resultCount()); + + N1qlQueryRow row = result1.allRows().get(0); + JsonObject rowJson = row.value(); + System.out.println("Name in First Row " + rowJson.get("name")); + + } + + private static void selectStatement2(Bucket bucket) { + + JsonObject pVal = JsonObject.create().put("type", "airport"); + String query = "SELECT * FROM `travel-sample` WHERE type = $type LIMIT 100"; + N1qlQueryResult r2 = bucket.query(N1qlQuery.parameterized(query, pVal)); + + System.out.println(r2.allRows()); + + List list = extractJsonResult(r2); + System.out.println(list.get(0).get("travel-sample").get("airportname").asText()); + } + + private static void selectStatement3DSL(Bucket bucket) { + + Statement statement + = select("*").from(i("travel-sample")).where(x("type").eq(s("airport"))).limit(100); + N1qlQueryResult r3 = bucket.query(N1qlQuery.simple(statement)); + + List list2 = extractJsonResult(r3); + System.out.println("First Airport Name: " + list2.get(0).get("travel-sample").get("airportname").asText()); + } + + private static void selectStatement4(Bucket bucket) { + + String query2 = "SELECT t.city, " + + "t.airportname || \" (\" || t.faa || \")\" AS portname_faa " + + "FROM `travel-sample` t " + + "WHERE t.type=\"airport\"" + + "AND t.country LIKE '%States'" + + "AND t.geo.lat >= 70 " + + "LIMIT 2"; + N1qlQueryResult r4 = bucket.query(N1qlQuery.simple(query2)); + List list3 = extractJsonResult(r4); + System.out.println("First Doc : " + list3.get(0)); + } + + private static void selectStatement4DSL(Bucket bucket) { + + Statement st2 = select( + x("t.city, t.airportname") + .concat(s(" (")).concat(x("t.faa")).concat(s(")")).as("portname_faa")) + .from(i("travel-sample").as("t")) + .where( x("t.type").eq(s("airport")) + .and(x("t.country").like(s("%States"))) + .and(x("t.geo.lat").gte(70))) + .limit(2); + N1qlQueryResult r5 = bucket.query(N1qlQuery.simple(st2)); + List list5 = extractJsonResult(r5); + System.out.println("First Doc : " + list5.get(0)); + System.out.println("Query from Statement2: " + st2.toString()); + + } + + private static void insertStatement1(Bucket bucket) { + + String query = "INSERT INTO `travel-sample` (KEY, VALUE) " + + " VALUES(\"cust1293\", {\"id\":\"1293\",\"name\":\"Sample Airline\", \"type\":\"airline\"})" + + " RETURNING META().id as docid, *"; + N1qlQueryResult r1 = bucket.query(N1qlQuery.simple(query)); + r1.forEach(System.out::println); + } + + private static void insertStatement2(Bucket bucket) { + + JsonObject ob = JsonObject.create() + .put("id", "1293") + .put("name", "Sample Airline") + .put("type", "airline"); + bucket.insert(JsonDocument.create("cust1295", ob)); + } + + private static void insertStatement3Bulk(Bucket bucket) { + + int docsToCreate = 10; + List documents = new ArrayList<>(); + for (int i = 5; i < docsToCreate; i++) { + JsonObject content = JsonObject.create() + .put("id", i) + .put("type", "airline") + .put("name", "Sample Airline " + i); + documents.add(JsonDocument.create("cust_" + i, content)); + } + + List r5 = Observable + .from(documents) + .flatMap(doc -> bucket.async().insert(doc)) + .toList() + .last() + .toBlocking() + .single(); + + r5.forEach(System.out::println); + } + + private static void updateStatement1(Bucket bucket) { + + String query2 = "UPDATE `travel-sample` USE KEYS \"cust_1\" " + + "SET name=\"Sample Airline Updated\" RETURNING name"; + N1qlQueryResult result = bucket.query(N1qlQuery.simple(query2)); + result.forEach(System.out::println); + } + + private static void updateStatement2Upsert(Bucket bucket) { + + JsonObject o2 = JsonObject.create() + .put("name", "Sample Airline Updated"); + bucket.upsert(JsonDocument.create("cust_1", o2)); + } + + private static void updateStatement3(Bucket bucket) { + + String query3 = "UPDATE `travel-sample` USE KEYS \"cust_2\" " + + "UNSET name RETURNING *"; + N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query3)); + result1.forEach(System.out::println); + } + + private static void deleteStatement1(Bucket bucket) { + String query4 = "DELETE FROM `travel-sample` USE KEYS \"cust_50\""; + N1qlQueryResult result4 = bucket.query(N1qlQuery.simple(query4)); + } + + private static void deleteStatement2(Bucket bucket) { + String query5 = "DELETE FROM `travel-sample` WHERE id = 0 RETURNING *"; + N1qlQueryResult result5 = bucket.query(N1qlQuery.simple(query5)); + } + + private static List extractJsonResult(N1qlQueryResult result) { + ObjectMapper objectMapper = new ObjectMapper(); + return result.allRows().stream() + .map(row -> Try.of(() -> objectMapper.readTree(row.value().toString())).getOrNull()) + .collect(Collectors.toList()); + } + +} From c6cf9546f658001482735e3fdf35a410e709e38b Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sat, 16 Sep 2017 10:20:58 +0100 Subject: [PATCH 21/42] update example code for N1QL --- .../baeldung/couchbase/n1ql/CodeSnippets.java | 31 ++++++++++++------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java index e297c34d7a..19342e16ed 100644 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java +++ b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java @@ -87,8 +87,9 @@ public class CodeSnippets { private static void selectStatement1(Bucket bucket) { - N1qlQueryResult result1 = bucket.query( - N1qlQuery.simple("SELECT name FROM `travel-sample` WHERE type = 'airport' LIMIT 100")); + String query = "SELECT name FROM `travel-sample` " + + "WHERE type = 'airport' LIMIT 100"; + N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query)); System.out.println("Result Count " + result1.info().resultCount()); @@ -101,23 +102,28 @@ public class CodeSnippets { private static void selectStatement2(Bucket bucket) { JsonObject pVal = JsonObject.create().put("type", "airport"); - String query = "SELECT * FROM `travel-sample` WHERE type = $type LIMIT 100"; + String query = "SELECT * FROM `travel-sample` " + + "WHERE type = $type LIMIT 100"; N1qlQueryResult r2 = bucket.query(N1qlQuery.parameterized(query, pVal)); System.out.println(r2.allRows()); List list = extractJsonResult(r2); - System.out.println(list.get(0).get("travel-sample").get("airportname").asText()); + System.out.println( + list.get(0).get("travel-sample").get("airportname").asText()); } private static void selectStatement3DSL(Bucket bucket) { - Statement statement - = select("*").from(i("travel-sample")).where(x("type").eq(s("airport"))).limit(100); + Statement statement = select("*") + .from(i("travel-sample")) + .where(x("type").eq(s("airport"))) + .limit(100); N1qlQueryResult r3 = bucket.query(N1qlQuery.simple(statement)); List list2 = extractJsonResult(r3); System.out.println("First Airport Name: " + list2.get(0).get("travel-sample").get("airportname").asText()); + } private static void selectStatement4(Bucket bucket) { @@ -154,7 +160,9 @@ public class CodeSnippets { private static void insertStatement1(Bucket bucket) { String query = "INSERT INTO `travel-sample` (KEY, VALUE) " + - " VALUES(\"cust1293\", {\"id\":\"1293\",\"name\":\"Sample Airline\", \"type\":\"airline\"})" + + " VALUES(" + + "\"cust1293\", " + + "{\"id\":\"1293\",\"name\":\"Sample Airline\", \"type\":\"airline\"})" + " RETURNING META().id as docid, *"; N1qlQueryResult r1 = bucket.query(N1qlQuery.simple(query)); r1.forEach(System.out::println); @@ -226,10 +234,11 @@ public class CodeSnippets { } private static List extractJsonResult(N1qlQueryResult result) { - ObjectMapper objectMapper = new ObjectMapper(); - return result.allRows().stream() - .map(row -> Try.of(() -> objectMapper.readTree(row.value().toString())).getOrNull()) - .collect(Collectors.toList()); + ObjectMapper objectMapper = new ObjectMapper(); + return result.allRows().stream() + .map(row -> Try.of(() -> objectMapper.readTree(row.value().toString())) + .getOrNull()) + .collect(Collectors.toList()); } } From 4fd110f9d6b2b55124008389e2338d20a9d10dd6 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sat, 16 Sep 2017 23:56:04 +0100 Subject: [PATCH 22/42] added integration test for N1QL --- couchbase-sdk/pom.xml | 8 +- .../couchbase/n1ql/BucketFactory.java | 26 ++ .../baeldung/couchbase/n1ql/CodeSnippets.java | 225 +--------------- .../couchbase/n1ql/IntegrationTestConfig.java | 26 ++ .../couchbase/n1ql/N1QLIntegrationTest.java | 255 ++++++++++++++++++ 5 files changed, 312 insertions(+), 228 deletions(-) create mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java create mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java create mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java diff --git a/couchbase-sdk/pom.xml b/couchbase-sdk/pom.xml index a864b611dc..d78ceb8933 100644 --- a/couchbase-sdk/pom.xml +++ b/couchbase-sdk/pom.xml @@ -24,9 +24,9 @@ - com.fasterxml.jackson.core - jackson-databind - ${jackson-version} + com.fasterxml.jackson.core + jackson-databind + ${jackson-version} io.vavr @@ -79,7 +79,7 @@ 1.8 UTF-8 - 2.4.7 + 2.5.0 4.3.5.RELEASE 3.5 0.9.0 diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java new file mode 100644 index 0000000000..98fbe17e60 --- /dev/null +++ b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java @@ -0,0 +1,26 @@ +package com.baeldung.couchbase.n1ql; + +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class BucketFactory { + + @Autowired + private Cluster cluster; + + private Bucket travelSampleBucket; + private Bucket testBucket; + + public Bucket getTravelSampleBucket() { + return (travelSampleBucket != null) ? + travelSampleBucket : cluster.openBucket("travel-sample"); + } + + public Bucket getTestBucket() { + return (testBucket != null) ? + testBucket : cluster.openBucket("test"); + } +} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java index 19342e16ed..999dcd897f 100644 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java +++ b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java @@ -1,239 +1,16 @@ package com.baeldung.couchbase.n1ql; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.Cluster; -import com.couchbase.client.java.CouchbaseCluster; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.document.json.JsonArray; -import com.couchbase.client.java.document.json.JsonObject; -import com.couchbase.client.java.query.N1qlQuery; import com.couchbase.client.java.query.N1qlQueryResult; -import com.couchbase.client.java.query.N1qlQueryRow; -import com.couchbase.client.java.query.Statement; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.vavr.control.Try; -import rx.Observable; -import java.util.ArrayList; import java.util.List; -import java.util.UUID; -import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; -import static com.couchbase.client.java.query.Select.select; -import static com.couchbase.client.java.query.dsl.Expression.i; -import static com.couchbase.client.java.query.dsl.Expression.s; -import static com.couchbase.client.java.query.dsl.Expression.x; - public class CodeSnippets { - public static void main(String[] args) { - - Cluster cluster = CouchbaseCluster.create("127.0.0.1"); - Bucket bucket = cluster.openBucket("test", 1, TimeUnit.MINUTES); - Bucket bucket1 = cluster.openBucket("travel-sample", 2, TimeUnit.MINUTES); - - bucket.bucketManager().createN1qlPrimaryIndex(true, false); - bucket1.bucketManager().createN1qlPrimaryIndex(true, false); - - insertDocument(bucket1); - basicSelect(bucket1); - selectStatement1(bucket1); - selectStatement2(bucket1); - selectStatement3DSL(bucket1); - selectStatement4(bucket1); - selectStatement4DSL(bucket1); - insertStatement1(bucket1); - insertStatement2(bucket1); - insertStatement3Bulk(bucket1); - updateStatement1(bucket1); - updateStatement2Upsert(bucket1); - updateStatement3(bucket1); - deleteStatement1(bucket1); - deleteStatement2(bucket1); - - bucket.close(); - bucket1.close(); - cluster.disconnect(); - System.exit(0); - - } - - private static void insertDocument(Bucket bucket) { - - JsonObject personObj = JsonObject.create() - .put("name", "John") - .put("email", "john@doe.com") - .put("interests", JsonArray.from("Java", "Nigerian Jollof")); - - String id = UUID.randomUUID().toString(); - JsonDocument doc = JsonDocument.create(id, personObj); - bucket.insert(doc); - - System.out.println(bucket.get(id)); - } - - private static void basicSelect(Bucket bucket) { - - N1qlQueryResult result - = bucket.query(N1qlQuery.simple("SELECT * FROM test")); - - result.forEach(System.out::println); - - System.out.println("result count: " + result.info().resultCount()); - System.out.println("error count: " + result.info().errorCount()); - } - - private static void selectStatement1(Bucket bucket) { - - String query = "SELECT name FROM `travel-sample` " + - "WHERE type = 'airport' LIMIT 100"; - N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query)); - - System.out.println("Result Count " + result1.info().resultCount()); - - N1qlQueryRow row = result1.allRows().get(0); - JsonObject rowJson = row.value(); - System.out.println("Name in First Row " + rowJson.get("name")); - - } - - private static void selectStatement2(Bucket bucket) { - - JsonObject pVal = JsonObject.create().put("type", "airport"); - String query = "SELECT * FROM `travel-sample` " + - "WHERE type = $type LIMIT 100"; - N1qlQueryResult r2 = bucket.query(N1qlQuery.parameterized(query, pVal)); - - System.out.println(r2.allRows()); - - List list = extractJsonResult(r2); - System.out.println( - list.get(0).get("travel-sample").get("airportname").asText()); - } - - private static void selectStatement3DSL(Bucket bucket) { - - Statement statement = select("*") - .from(i("travel-sample")) - .where(x("type").eq(s("airport"))) - .limit(100); - N1qlQueryResult r3 = bucket.query(N1qlQuery.simple(statement)); - - List list2 = extractJsonResult(r3); - System.out.println("First Airport Name: " + list2.get(0).get("travel-sample").get("airportname").asText()); - - } - - private static void selectStatement4(Bucket bucket) { - - String query2 = "SELECT t.city, " + - "t.airportname || \" (\" || t.faa || \")\" AS portname_faa " + - "FROM `travel-sample` t " + - "WHERE t.type=\"airport\"" + - "AND t.country LIKE '%States'" + - "AND t.geo.lat >= 70 " + - "LIMIT 2"; - N1qlQueryResult r4 = bucket.query(N1qlQuery.simple(query2)); - List list3 = extractJsonResult(r4); - System.out.println("First Doc : " + list3.get(0)); - } - - private static void selectStatement4DSL(Bucket bucket) { - - Statement st2 = select( - x("t.city, t.airportname") - .concat(s(" (")).concat(x("t.faa")).concat(s(")")).as("portname_faa")) - .from(i("travel-sample").as("t")) - .where( x("t.type").eq(s("airport")) - .and(x("t.country").like(s("%States"))) - .and(x("t.geo.lat").gte(70))) - .limit(2); - N1qlQueryResult r5 = bucket.query(N1qlQuery.simple(st2)); - List list5 = extractJsonResult(r5); - System.out.println("First Doc : " + list5.get(0)); - System.out.println("Query from Statement2: " + st2.toString()); - - } - - private static void insertStatement1(Bucket bucket) { - - String query = "INSERT INTO `travel-sample` (KEY, VALUE) " + - " VALUES(" + - "\"cust1293\", " + - "{\"id\":\"1293\",\"name\":\"Sample Airline\", \"type\":\"airline\"})" + - " RETURNING META().id as docid, *"; - N1qlQueryResult r1 = bucket.query(N1qlQuery.simple(query)); - r1.forEach(System.out::println); - } - - private static void insertStatement2(Bucket bucket) { - - JsonObject ob = JsonObject.create() - .put("id", "1293") - .put("name", "Sample Airline") - .put("type", "airline"); - bucket.insert(JsonDocument.create("cust1295", ob)); - } - - private static void insertStatement3Bulk(Bucket bucket) { - - int docsToCreate = 10; - List documents = new ArrayList<>(); - for (int i = 5; i < docsToCreate; i++) { - JsonObject content = JsonObject.create() - .put("id", i) - .put("type", "airline") - .put("name", "Sample Airline " + i); - documents.add(JsonDocument.create("cust_" + i, content)); - } - - List r5 = Observable - .from(documents) - .flatMap(doc -> bucket.async().insert(doc)) - .toList() - .last() - .toBlocking() - .single(); - - r5.forEach(System.out::println); - } - - private static void updateStatement1(Bucket bucket) { - - String query2 = "UPDATE `travel-sample` USE KEYS \"cust_1\" " + - "SET name=\"Sample Airline Updated\" RETURNING name"; - N1qlQueryResult result = bucket.query(N1qlQuery.simple(query2)); - result.forEach(System.out::println); - } - - private static void updateStatement2Upsert(Bucket bucket) { - - JsonObject o2 = JsonObject.create() - .put("name", "Sample Airline Updated"); - bucket.upsert(JsonDocument.create("cust_1", o2)); - } - - private static void updateStatement3(Bucket bucket) { - - String query3 = "UPDATE `travel-sample` USE KEYS \"cust_2\" " + - "UNSET name RETURNING *"; - N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query3)); - result1.forEach(System.out::println); - } - - private static void deleteStatement1(Bucket bucket) { - String query4 = "DELETE FROM `travel-sample` USE KEYS \"cust_50\""; - N1qlQueryResult result4 = bucket.query(N1qlQuery.simple(query4)); - } - - private static void deleteStatement2(Bucket bucket) { - String query5 = "DELETE FROM `travel-sample` WHERE id = 0 RETURNING *"; - N1qlQueryResult result5 = bucket.query(N1qlQuery.simple(query5)); - } - - private static List extractJsonResult(N1qlQueryResult result) { + public static List extractJsonResult(N1qlQueryResult result) { ObjectMapper objectMapper = new ObjectMapper(); return result.allRows().stream() .map(row -> Try.of(() -> objectMapper.readTree(row.value().toString())) diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java new file mode 100644 index 0000000000..ef7e31b224 --- /dev/null +++ b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java @@ -0,0 +1,26 @@ +package com.baeldung.couchbase.n1ql; + +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.env.CouchbaseEnvironment; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.TimeUnit; + +@Configuration +@ComponentScan(basePackages = { "com.baeldung.couchbase.n1ql" }) +public class IntegrationTestConfig { + + @Bean + public Cluster cluster() { + CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder() + .connectTimeout(60000) + .build(); + return CouchbaseCluster.create(env, "127.0.0.1"); + } + + +} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java new file mode 100644 index 0000000000..d05b107098 --- /dev/null +++ b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java @@ -0,0 +1,255 @@ +package com.baeldung.couchbase.n1ql; + +import com.baeldung.couchbase.n1ql.IntegrationTestConfig; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.document.json.JsonArray; +import com.couchbase.client.java.document.json.JsonObject; +import com.couchbase.client.java.query.N1qlQuery; +import com.couchbase.client.java.query.N1qlQueryResult; +import com.couchbase.client.java.query.N1qlQueryRow; +import com.couchbase.client.java.query.Statement; +import com.fasterxml.jackson.databind.JsonNode; +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; +import rx.Observable; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import static com.baeldung.couchbase.n1ql.CodeSnippets.extractJsonResult; +import static com.couchbase.client.java.query.Select.select; +import static com.couchbase.client.java.query.dsl.Expression.i; +import static com.couchbase.client.java.query.dsl.Expression.s; +import static com.couchbase.client.java.query.dsl.Expression.x; +import static org.junit.Assert.*; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { IntegrationTestConfig.class }) +public class N1QLIntegrationTest { + + + @Autowired + private Cluster cluster; + + @Autowired + private BucketFactory bucketFactory; + + @Test + public void givenAutowiredCluster_whenNotNull_thenNotNull() { + assertNotNull(cluster); + } + + @Test + public void givenBucketFactory_whenGetTestBucket_thenNotNull() { + assertNotNull(bucketFactory.getTestBucket()); + } + + @Test + public void givenBucketFactory_whenGetTravelSampleBucket_thenNotNull() { + assertNotNull(bucketFactory.getTravelSampleBucket()); + } + + @Test + public void givenDocument_whenInsert_thenResult() { + Bucket bucket = bucketFactory.getTestBucket(); + JsonObject personObj = JsonObject.create() + .put("name", "John") + .put("email", "john@doe.com") + .put("interests", JsonArray.from("Java", "Nigerian Jollof")); + + String id = UUID.randomUUID().toString(); + JsonDocument doc = JsonDocument.create(id, personObj); + bucket.insert(doc); + assertNotNull(bucket.get(id)); + } + + @Test + public void whenBasicSelectQuery_thenGetQueryResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + N1qlQueryResult result + = bucket.query(N1qlQuery.simple("SELECT * FROM test")); + + result.forEach(System.out::println); + + System.out.println("result count: " + result.info().resultCount()); + System.out.println("error count: " + result.info().errorCount()); + } + + @Test + public void givenSelectStatement_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query = "SELECT name FROM `travel-sample` " + + "WHERE type = 'airport' LIMIT 100"; + N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query)); + + System.out.println("Result Count " + result1.info().resultCount()); + + N1qlQueryRow row = result1.allRows().get(0); + JsonObject rowJson = row.value(); + System.out.println("Name in First Row " + rowJson.get("name")); + + } + + @Test + public void givenSelectStatement2_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + JsonObject pVal = JsonObject.create().put("type", "airport"); + String query = "SELECT * FROM `travel-sample` " + + "WHERE type = $type LIMIT 100"; + N1qlQueryResult r2 = bucket.query(N1qlQuery.parameterized(query, pVal)); + + System.out.println(r2.allRows()); + + List list = extractJsonResult(r2); + System.out.println( + list.get(0).get("travel-sample").get("airportname").asText()); + } + + @Test + public void givenSelectDSL_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + Statement statement = select("*") + .from(i("travel-sample")) + .where(x("type").eq(s("airport"))) + .limit(100); + N1qlQueryResult r3 = bucket.query(N1qlQuery.simple(statement)); + + List list2 = extractJsonResult(r3); + System.out.println("First Airport Name: " + list2.get(0).get("travel-sample").get("airportname").asText()); + + } + + @Test + public void givenSelectStatementWithOperators_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query2 = "SELECT t.city, " + + "t.airportname || \" (\" || t.faa || \")\" AS portname_faa " + + "FROM `travel-sample` t " + + "WHERE t.type=\"airport\"" + + "AND t.country LIKE '%States'" + + "AND t.geo.lat >= 70 " + + "LIMIT 2"; + N1qlQueryResult r4 = bucket.query(N1qlQuery.simple(query2)); + List list3 = extractJsonResult(r4); + System.out.println("First Doc : " + list3.get(0)); + } + + @Test + public void givenSelectStatementWithDSL2_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + Statement st2 = select( + x("t.city, t.airportname") + .concat(s(" (")).concat(x("t.faa")).concat(s(")")).as("portname_faa")) + .from(i("travel-sample").as("t")) + .where( x("t.type").eq(s("airport")) + .and(x("t.country").like(s("%States"))) + .and(x("t.geo.lat").gte(70))) + .limit(2); + N1qlQueryResult r5 = bucket.query(N1qlQuery.simple(st2)); + List list5 = extractJsonResult(r5); + System.out.println("First Doc : " + list5.get(0)); + System.out.println("Query from Statement2: " + st2.toString()); + } + + @Test + public void givenInsertStatement_whenQuery_thenUpdate() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query = "INSERT INTO `travel-sample` (KEY, VALUE) " + + " VALUES(" + + "\"cust1293\", " + + "{\"id\":\"1293\",\"name\":\"Sample Airline\", \"type\":\"airline\"})" + + " RETURNING META().id as docid, *"; + N1qlQueryResult r1 = bucket.query(N1qlQuery.simple(query)); + r1.forEach(System.out::println); + } + + @Test + public void givenDocument_whenInsert_thenResults() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + JsonObject ob = JsonObject.create() + .put("id", "1293") + .put("name", "Sample Airline") + .put("type", "airline"); + bucket.insert(JsonDocument.create("cust1295", ob)); + } + + @Test + public void givenDocuments_whenBatchInsert_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + int docsToCreate = 10; + List documents = new ArrayList<>(); + for (int i = 5; i < docsToCreate; i++) { + JsonObject content = JsonObject.create() + .put("id", i) + .put("type", "airline") + .put("name", "Sample Airline " + i); + documents.add(JsonDocument.create("cust_" + i, content)); + } + + List r5 = Observable + .from(documents) + .flatMap(doc -> bucket.async().insert(doc)) + .toList() + .last() + .toBlocking() + .single(); + + r5.forEach(System.out::println); + } + + @Test + public void givenUpdateStatement_whenQuery_thenUpdate() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query2 = "UPDATE `travel-sample` USE KEYS \"cust_1\" " + + "SET name=\"Sample Airline Updated\" RETURNING name"; + N1qlQueryResult result = bucket.query(N1qlQuery.simple(query2)); + result.forEach(System.out::println); + } + + @Test + public void givenDocument_whenUpsert_thenUpdate() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + JsonObject o2 = JsonObject.create() + .put("name", "Sample Airline Updated"); + bucket.upsert(JsonDocument.create("cust_1", o2)); + } + + @Test + public void givenUnestUpdateStatement_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query3 = "UPDATE `travel-sample` USE KEYS \"cust_2\" " + + "UNSET name RETURNING *"; + N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query3)); + result1.forEach(System.out::println); + } + + @Test + public void givenDeleteStatement_whenQuery_thenDelete() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query4 = "DELETE FROM `travel-sample` USE KEYS \"cust_50\""; + N1qlQueryResult result4 = bucket.query(N1qlQuery.simple(query4)); + } + + @Test + public void givenDeleteStatement2_whenQuery_thenDelete() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query5 = "DELETE FROM `travel-sample` WHERE id = 0 RETURNING *"; + N1qlQueryResult result5 = bucket.query(N1qlQuery.simple(query5)); + } + + +} From c70752ee448acfff5937f109850a33e60eb80de6 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sun, 17 Sep 2017 15:30:10 +0100 Subject: [PATCH 23/42] update N1QL Example code --- couchbase-sdk/pom.xml | 6 ++-- .../baeldung/couchbase/n1ql/CodeSnippets.java | 16 ++++++++-- .../couchbase/n1ql/N1QLIntegrationTest.java | 31 ++++++++++--------- 3 files changed, 33 insertions(+), 20 deletions(-) diff --git a/couchbase-sdk/pom.xml b/couchbase-sdk/pom.xml index d78ceb8933..f361b333b4 100644 --- a/couchbase-sdk/pom.xml +++ b/couchbase-sdk/pom.xml @@ -29,9 +29,9 @@ ${jackson-version} - io.vavr - vavr - ${vavr-version} + io.vavr + vavr + ${vavr-version} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java index 999dcd897f..72d48e78c3 100644 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java +++ b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java @@ -5,16 +5,26 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.vavr.control.Try; +import java.io.IOException; import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; public class CodeSnippets { + private static ObjectMapper objectMapper = new ObjectMapper(); + public static List extractJsonResult(N1qlQueryResult result) { - ObjectMapper objectMapper = new ObjectMapper(); return result.allRows().stream() - .map(row -> Try.of(() -> objectMapper.readTree(row.value().toString())) - .getOrNull()) + .map(row -> { + try { + return objectMapper.readTree(row.value().toString()); + }catch (IOException e) { + e.printStackTrace(); + return null; + } + }) + .filter(Objects::nonNull) .collect(Collectors.toList()); } diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java index d05b107098..ab85f14c84 100644 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java +++ b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java @@ -12,6 +12,7 @@ import com.couchbase.client.java.query.N1qlQueryResult; import com.couchbase.client.java.query.N1qlQueryRow; import com.couchbase.client.java.query.Statement; import com.fasterxml.jackson.databind.JsonNode; +import io.vavr.collection.Stream; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; @@ -29,6 +30,7 @@ import rx.Observable; import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import static com.baeldung.couchbase.n1ql.CodeSnippets.extractJsonResult; import static com.couchbase.client.java.query.Select.select; @@ -190,23 +192,24 @@ public class N1QLIntegrationTest { @Test public void givenDocuments_whenBatchInsert_thenResult() { Bucket bucket = bucketFactory.getTravelSampleBucket(); - int docsToCreate = 10; - List documents = new ArrayList<>(); - for (int i = 5; i < docsToCreate; i++) { + + List documents = Stream.rangeClosed(0,10) + .map( i -> { JsonObject content = JsonObject.create() - .put("id", i) - .put("type", "airline") - .put("name", "Sample Airline " + i); - documents.add(JsonDocument.create("cust_" + i, content)); - } + .put("id", i) + .put("type", "airline") + .put("name", "Sample Airline " + i); + return JsonDocument.create("cust_" + i, content); + }) + .collect(Collectors.toList()); List r5 = Observable - .from(documents) - .flatMap(doc -> bucket.async().insert(doc)) - .toList() - .last() - .toBlocking() - .single(); + .from(documents) + .flatMap(doc -> bucket.async().insert(doc)) + .toList() + .last() + .toBlocking() + .single(); r5.forEach(System.out::println); } From a2760396cdc9ee9e4ece3dd61b4e24f4a9c5ef86 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 18 Sep 2017 12:58:06 +0100 Subject: [PATCH 24/42] update the N1QL example Code --- .../main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java index 9e9f204263..337f475784 100644 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java +++ b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java @@ -3,14 +3,18 @@ package com.baeldung.couchbase.n1ql; import com.couchbase.client.java.query.N1qlQueryResult; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; + import java.io.IOException; import java.util.List; import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; import java.util.stream.Collectors; public class CodeSnippets { private static ObjectMapper objectMapper = new ObjectMapper(); + private static final Logger logger = Logger.getLogger(CodeSnippets.class.getName()); public static List extractJsonResult(N1qlQueryResult result) { return result.allRows().stream() @@ -18,7 +22,7 @@ public class CodeSnippets { try { return objectMapper.readTree(row.value().toString()); }catch (IOException e) { - e.printStackTrace(); + logger.log(Level.WARNING, e.getLocalizedMessage()); return null; } }) From 91c57354ccac023cfcd67ff62bd14836c6b6822c Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Tue, 19 Sep 2017 12:23:09 +0100 Subject: [PATCH 25/42] rename module to couchbase --- couchbase/.gitignore | 6 + couchbase/README.md | 51 ++++ couchbase/mvnw | 233 ++++++++++++++++ couchbase/mvnw.cmd | 145 ++++++++++ couchbase/pom.xml | 82 ++++++ .../couchbase/async/CouchbaseEntity.java | 9 + .../couchbase/async/person/Person.java | 90 +++++++ .../async/person/PersonCrudService.java | 24 ++ .../async/person/PersonDocumentConverter.java | 28 ++ .../async/person/RegistrationService.java | 28 ++ .../async/service/AbstractBucketService.java | 27 ++ .../async/service/AbstractCrudService.java | 142 ++++++++++ .../async/service/BucketService.java | 8 + .../async/service/ClusterService.java | 8 + .../async/service/ClusterServiceImpl.java | 36 +++ .../couchbase/async/service/CrudService.java | 26 ++ .../async/service/JsonDocumentConverter.java | 10 + .../async/service/TutorialBucketService.java | 32 +++ .../couchbase/intro/CodeSnippets.java | 87 ++++++ .../mapreduce/CouchbaseKeyGenerator.java | 6 + .../mapreduce/DuplicateKeyException.java | 10 + .../mapreduce/RandomUUIDGenerator.java | 11 + .../couchbase/mapreduce/StudentGrade.java | 50 ++++ .../mapreduce/StudentGradeKeyGenerator.java | 9 + .../mapreduce/StudentGradeQueryBuilder.java | 70 +++++ .../mapreduce/StudentGradeService.java | 169 ++++++++++++ .../couchbase/n1ql/BucketFactory.java | 26 ++ .../baeldung/couchbase/n1ql/CodeSnippets.java | 34 +++ .../couchbase/spring/person/Person.java | 86 ++++++ .../spring/person/PersonCrudService.java | 69 +++++ .../person/PersonDocumentConverter.java | 28 ++ .../spring/person/RegistrationService.java | 28 ++ .../spring/service/BucketService.java | 9 + .../spring/service/ClusterService.java | 17 ++ .../spring/service/ClusterServiceImpl.java | 81 ++++++ .../couchbase/spring/service/CrudService.java | 16 ++ .../spring/service/JsonDocumentConverter.java | 10 + .../spring/service/TutorialBucketService.java | 29 ++ .../src/main/resources/application.properties | 0 couchbase/src/main/resources/logback.xml | 19 ++ .../couchbase/async/AsyncIntegrationTest.java | 13 + .../async/AsyncIntegrationTestConfig.java | 9 + .../PersonCrudServiceIntegrationTest.java | 216 +++++++++++++++ .../ClusterServiceIntegrationTest.java | 35 +++ .../StudentGradeServiceIntegrationTest.java | 150 +++++++++++ .../couchbase/n1ql/IntegrationTestConfig.java | 26 ++ .../couchbase/n1ql/N1QLIntegrationTest.java | 248 ++++++++++++++++++ .../couchbase/spring/IntegrationTest.java | 13 + .../spring/IntegrationTestConfig.java | 9 + .../PersonCrudServiceIntegrationTest.java | 75 ++++++ .../ClusterServiceIntegrationTest.java | 34 +++ couchbase/src/test/resources/logback.xml | 19 ++ 52 files changed, 2696 insertions(+) create mode 100644 couchbase/.gitignore create mode 100644 couchbase/README.md create mode 100644 couchbase/mvnw create mode 100644 couchbase/mvnw.cmd create mode 100644 couchbase/pom.xml create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/person/Person.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/BucketService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/CrudService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/person/Person.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java create mode 100644 couchbase/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java create mode 100644 couchbase/src/main/resources/application.properties create mode 100644 couchbase/src/main/resources/logback.xml create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java create mode 100644 couchbase/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java create mode 100644 couchbase/src/test/resources/logback.xml diff --git a/couchbase/.gitignore b/couchbase/.gitignore new file mode 100644 index 0000000000..f6867e01bd --- /dev/null +++ b/couchbase/.gitignore @@ -0,0 +1,6 @@ +# Created by .ignore support plugin (hsz.mobi) + +# IntelliJ project files +.idea +*.iml +/target/ diff --git a/couchbase/README.md b/couchbase/README.md new file mode 100644 index 0000000000..f124a0192c --- /dev/null +++ b/couchbase/README.md @@ -0,0 +1,51 @@ +## Couchbase SDK Tutorial Project + +### Relevant Articles: +- [Introduction to Couchbase SDK for Java](http://www.baeldung.com/java-couchbase-sdk) +- [Using Couchbase in a Spring Application](http://www.baeldung.com/couchbase-sdk-spring) +- [Asynchronous Batch Opereations in Couchbase](http://www.baeldung.com/async-batch-operations-in-couchbase) +- [Querying Couchbase with MapReduce Views](http://www.baeldung.com/couchbase-query-mapreduce-view) + +### Overview +This Maven project contains the Java code for the Couchbase entities and Spring services +as described in the tutorials, as well as a unit/integration test +for each service implementation. + +### Working with the Code +The project was developed and tested using Java 7 and 8 in the Eclipse-based +Spring Source Toolkit (STS) and therefore should run fine in any +recent version of Eclipse or another IDE of your choice +that supports Java 7 or later. + +### Building the Project +You can also build the project using Maven outside of any IDE: +``` +mvn clean install +``` + +### Package Organization +Java classes for the intro tutorial are in the +org.baeldung.couchbase.intro package. + +Java classes for the Spring service tutorial are in the +org.baeldung.couchbase.spring package hierarchy. + +Java classes for the Asynchronous Couchbase tutorial are in the +org.baeldung.couchbase.async package hierarchy. + + +### Running the tests +The test classes for the Spring service tutorial are: +- org.baeldung.couchbase.spring.service.ClusterServiceTest +- org.baeldung.couchbase.spring.person.PersonCrudServiceTest + +The test classes for the Asynchronous Couchbase tutorial are in the +org.baeldung.couchbase.async package hierarchy: +- org.baeldung.couchbase.async.service.ClusterServiceTest +- org.baeldung.couchbase.async.person.PersonCrudServiceTest + +The test classes may be run as JUnit tests from your IDE +or using the Maven command line: +``` +mvn test +``` diff --git a/couchbase/mvnw b/couchbase/mvnw new file mode 100644 index 0000000000..a1ba1bf554 --- /dev/null +++ b/couchbase/mvnw @@ -0,0 +1,233 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + wdir=$(cd "$wdir/.."; pwd) + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/couchbase/mvnw.cmd b/couchbase/mvnw.cmd new file mode 100644 index 0000000000..2b934e89dd --- /dev/null +++ b/couchbase/mvnw.cmd @@ -0,0 +1,145 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% \ No newline at end of file diff --git a/couchbase/pom.xml b/couchbase/pom.xml new file mode 100644 index 0000000000..819c53b038 --- /dev/null +++ b/couchbase/pom.xml @@ -0,0 +1,82 @@ + + + 4.0.0 + com.baeldung + couchbase-sdk + 0.1-SNAPSHOT + jar + couchbase-sdk + Couchbase SDK Tutorials + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + + com.couchbase.client + java-client + ${couchbase.client.version} + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson-version} + + + + + org.springframework + spring-context + ${spring-framework.version} + + + commons-logging + commons-logging + + + + + org.springframework + spring-context-support + ${spring-framework.version} + + + commons-logging + commons-logging + + + + + + + org.springframework + spring-test + ${spring-framework.version} + test + + + + + org.apache.commons + commons-lang3 + ${commons-lang3.version} + test + + + + + 1.8 + UTF-8 + 2.5.0 + 4.3.5.RELEASE + 3.5 + 2.9.1 + + + diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java b/couchbase/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java new file mode 100644 index 0000000000..8f459e364f --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java @@ -0,0 +1,9 @@ +package com.baeldung.couchbase.async; + +public interface CouchbaseEntity { + + String getId(); + + void setId(String id); + +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/person/Person.java b/couchbase/src/main/java/com/baeldung/couchbase/async/person/Person.java new file mode 100644 index 0000000000..f1135a32a2 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/person/Person.java @@ -0,0 +1,90 @@ +package com.baeldung.couchbase.async.person; + +import com.baeldung.couchbase.async.CouchbaseEntity; + +public class Person implements CouchbaseEntity { + + private String id; + private String type; + private String name; + private String homeTown; + + Person() { + } + + public Person(Builder b) { + this.id = b.id; + this.type = b.type; + this.name = b.name; + this.homeTown = b.homeTown; + } + + @Override + public String getId() { + return id; + } + + @Override + public void setId(String id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getHomeTown() { + return homeTown; + } + + public void setHomeTown(String homeTown) { + this.homeTown = homeTown; + } + + public static class Builder { + private String id; + private String type; + private String name; + private String homeTown; + + public static Builder newInstance() { + return new Builder(); + } + + public Person build() { + return new Person(this); + } + + public Builder id(String id) { + this.id = id; + return this; + } + + public Builder type(String type) { + this.type = type; + return this; + } + + public Builder name(String name) { + this.name = name; + return this; + } + + public Builder homeTown(String homeTown) { + this.homeTown = homeTown; + return this; + } + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java new file mode 100644 index 0000000000..407bc7ee1c --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java @@ -0,0 +1,24 @@ +package com.baeldung.couchbase.async.person; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import com.baeldung.couchbase.async.service.AbstractCrudService; +import com.baeldung.couchbase.async.service.BucketService; + +@Service +public class PersonCrudService extends AbstractCrudService { + + @Autowired + public PersonCrudService(@Qualifier("TutorialBucketService") BucketService bucketService, PersonDocumentConverter converter) { + super(bucketService, converter); + } + + @PostConstruct + private void init() { + loadBucket(); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java b/couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java new file mode 100644 index 0000000000..0f08679ace --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java @@ -0,0 +1,28 @@ +package com.baeldung.couchbase.async.person; + +import org.springframework.stereotype.Service; + +import com.baeldung.couchbase.async.service.JsonDocumentConverter; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.document.json.JsonObject; + +@Service +public class PersonDocumentConverter implements JsonDocumentConverter { + + @Override + public JsonDocument toDocument(Person p) { + JsonObject content = JsonObject.empty().put("type", "Person").put("name", p.getName()).put("homeTown", p.getHomeTown()); + return JsonDocument.create(p.getId(), content); + } + + @Override + public Person fromDocument(JsonDocument doc) { + JsonObject content = doc.content(); + Person p = new Person(); + p.setId(doc.id()); + p.setType("Person"); + p.setName(content.getString("name")); + p.setHomeTown(content.getString("homeTown")); + return p; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java new file mode 100644 index 0000000000..7cbc3625db --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java @@ -0,0 +1,28 @@ +package com.baeldung.couchbase.async.person; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.couchbase.client.core.CouchbaseException; + +@Service +public class RegistrationService { + + @Autowired + private PersonCrudService crud; + + public void registerNewPerson(String name, String homeTown) { + Person person = new Person(); + person.setName(name); + person.setHomeTown(homeTown); + crud.create(person); + } + + public Person findRegistrant(String id) { + try { + return crud.read(id); + } catch (CouchbaseException e) { + return crud.readFromReplica(id); + } + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java new file mode 100644 index 0000000000..1180ea00a6 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java @@ -0,0 +1,27 @@ +package com.baeldung.couchbase.async.service; + +import com.couchbase.client.java.Bucket; + +public abstract class AbstractBucketService implements BucketService { + + private ClusterService clusterService; + + private Bucket bucket; + + protected void openBucket() { + bucket = clusterService.openBucket(getBucketName(), getBucketPassword()); + } + + protected abstract String getBucketName(); + + protected abstract String getBucketPassword(); + + public AbstractBucketService(ClusterService clusterService) { + this.clusterService = clusterService; + } + + @Override + public Bucket getBucket() { + return bucket; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java new file mode 100644 index 0000000000..089cc55d5d --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java @@ -0,0 +1,142 @@ +package com.baeldung.couchbase.async.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import java.util.concurrent.TimeUnit; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.baeldung.couchbase.async.CouchbaseEntity; +import com.couchbase.client.core.BackpressureException; +import com.couchbase.client.core.time.Delay; +import com.couchbase.client.java.AsyncBucket; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.ReplicaMode; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.util.retry.RetryBuilder; + +import rx.Observable; +import rx.functions.Action1; +import rx.functions.Func1; + +public abstract class AbstractCrudService implements CrudService { + + private static final Logger logger = LoggerFactory.getLogger(AbstractCrudService.class); + + private BucketService bucketService; + private Bucket bucket; + private JsonDocumentConverter converter; + + public AbstractCrudService(BucketService bucketService, JsonDocumentConverter converter) { + this.bucketService = bucketService; + this.converter = converter; + } + + protected void loadBucket() { + bucket = bucketService.getBucket(); + } + + @Override + public void create(T t) { + if (t.getId() == null) { + t.setId(UUID.randomUUID().toString()); + } + JsonDocument doc = converter.toDocument(t); + bucket.insert(doc); + } + + @Override + public T read(String id) { + JsonDocument doc = bucket.get(id); + return (doc == null ? null : converter.fromDocument(doc)); + } + + @Override + public T readFromReplica(String id) { + List docs = bucket.getFromReplica(id, ReplicaMode.FIRST); + return (docs.isEmpty() ? null : converter.fromDocument(docs.get(0))); + } + + @Override + public void update(T t) { + JsonDocument doc = converter.toDocument(t); + bucket.upsert(doc); + } + + @Override + public void delete(String id) { + bucket.remove(id); + } + + @Override + public List readBulk(Iterable ids) { + final AsyncBucket asyncBucket = bucket.async(); + Observable asyncOperation = Observable.from(ids).flatMap(new Func1>() { + public Observable call(String key) { + return asyncBucket.get(key); + } + }); + + final List items = new ArrayList(); + try { + asyncOperation.toBlocking().forEach(new Action1() { + public void call(JsonDocument doc) { + T item = converter.fromDocument(doc); + items.add(item); + } + }); + } catch (Exception e) { + logger.error("Error during bulk get", e); + } + + return items; + } + + @Override + public void createBulk(Iterable items) { + final AsyncBucket asyncBucket = bucket.async(); + Observable.from(items).flatMap(new Func1>() { + @SuppressWarnings("unchecked") + @Override + public Observable call(final T t) { + if (t.getId() == null) { + t.setId(UUID.randomUUID().toString()); + } + JsonDocument doc = converter.toDocument(t); + return asyncBucket.insert(doc).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build()); + } + }).last().toBlocking().single(); + } + + @Override + public void updateBulk(Iterable items) { + final AsyncBucket asyncBucket = bucket.async(); + Observable.from(items).flatMap(new Func1>() { + @SuppressWarnings("unchecked") + @Override + public Observable call(final T t) { + JsonDocument doc = converter.toDocument(t); + return asyncBucket.upsert(doc).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build()); + } + }).last().toBlocking().single(); + } + + @Override + public void deleteBulk(Iterable ids) { + final AsyncBucket asyncBucket = bucket.async(); + Observable.from(ids).flatMap(new Func1>() { + @SuppressWarnings("unchecked") + @Override + public Observable call(String key) { + return asyncBucket.remove(key).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build()); + } + }).last().toBlocking().single(); + } + + @Override + public boolean exists(String id) { + return bucket.exists(id); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/BucketService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/BucketService.java new file mode 100644 index 0000000000..28470be99f --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/BucketService.java @@ -0,0 +1,8 @@ +package com.baeldung.couchbase.async.service; + +import com.couchbase.client.java.Bucket; + +public interface BucketService { + + Bucket getBucket(); +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java new file mode 100644 index 0000000000..7bf891244f --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java @@ -0,0 +1,8 @@ +package com.baeldung.couchbase.async.service; + +import com.couchbase.client.java.Bucket; + +public interface ClusterService { + + Bucket openBucket(String name, String password); +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java new file mode 100644 index 0000000000..e708922988 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java @@ -0,0 +1,36 @@ +package com.baeldung.couchbase.async.service; + +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import javax.annotation.PostConstruct; + +import org.springframework.stereotype.Service; + +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.env.CouchbaseEnvironment; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; + +@Service +public class ClusterServiceImpl implements ClusterService { + + private Cluster cluster; + private Map buckets = new ConcurrentHashMap<>(); + + @PostConstruct + private void init() { + CouchbaseEnvironment env = DefaultCouchbaseEnvironment.create(); + cluster = CouchbaseCluster.create(env, "localhost"); + } + + @Override + synchronized public Bucket openBucket(String name, String password) { + if (!buckets.containsKey(name)) { + Bucket bucket = cluster.openBucket(name, password); + buckets.put(name, bucket); + } + return buckets.get(name); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/CrudService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/CrudService.java new file mode 100644 index 0000000000..5bd0e52214 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/CrudService.java @@ -0,0 +1,26 @@ +package com.baeldung.couchbase.async.service; + +import java.util.List; + +public interface CrudService { + + void create(T t); + + T read(String id); + + T readFromReplica(String id); + + void update(T t); + + void delete(String id); + + List readBulk(Iterable ids); + + void createBulk(Iterable items); + + void updateBulk(Iterable items); + + void deleteBulk(Iterable ids); + + boolean exists(String id); +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java new file mode 100644 index 0000000000..193e91016a --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java @@ -0,0 +1,10 @@ +package com.baeldung.couchbase.async.service; + +import com.couchbase.client.java.document.JsonDocument; + +public interface JsonDocumentConverter { + + JsonDocument toDocument(T t); + + T fromDocument(JsonDocument doc); +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java b/couchbase/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java new file mode 100644 index 0000000000..459585d995 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java @@ -0,0 +1,32 @@ +package com.baeldung.couchbase.async.service; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +@Service +@Qualifier("TutorialBucketService") +public class TutorialBucketService extends AbstractBucketService { + + @PostConstruct + void init() { + openBucket(); + } + + @Autowired + public TutorialBucketService(ClusterService clusterService) { + super(clusterService); + } + + @Override + protected String getBucketName() { + return "baeldung-tutorial"; + } + + @Override + protected String getBucketPassword() { + return ""; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java b/couchbase/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java new file mode 100644 index 0000000000..e7bddc6442 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java @@ -0,0 +1,87 @@ +package com.baeldung.couchbase.intro; + +import java.util.List; +import java.util.UUID; + +import com.couchbase.client.core.CouchbaseException; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.ReplicaMode; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.document.json.JsonObject; +import com.couchbase.client.java.env.CouchbaseEnvironment; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; + +public class CodeSnippets { + + static Cluster loadClusterWithDefaultEnvironment() { + return CouchbaseCluster.create("localhost"); + } + + static Cluster loadClusterWithCustomEnvironment() { + CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder().connectTimeout(10000).kvTimeout(3000).build(); + return CouchbaseCluster.create(env, "localhost"); + } + + static Bucket loadDefaultBucketWithBlankPassword(Cluster cluster) { + return cluster.openBucket(); + } + + static Bucket loadBaeldungBucket(Cluster cluster) { + return cluster.openBucket("baeldung", ""); + } + + static JsonDocument insertExample(Bucket bucket) { + JsonObject content = JsonObject.empty().put("name", "John Doe").put("type", "Person").put("email", "john.doe@mydomain.com").put("homeTown", "Chicago"); + String id = UUID.randomUUID().toString(); + JsonDocument document = JsonDocument.create(id, content); + JsonDocument inserted = bucket.insert(document); + return inserted; + } + + static JsonDocument retrieveAndUpsertExample(Bucket bucket, String id) { + JsonDocument document = bucket.get(id); + JsonObject content = document.content(); + content.put("homeTown", "Kansas City"); + JsonDocument upserted = bucket.upsert(document); + return upserted; + } + + static JsonDocument replaceExample(Bucket bucket, String id) { + JsonDocument document = bucket.get(id); + JsonObject content = document.content(); + content.put("homeTown", "Milwaukee"); + JsonDocument replaced = bucket.replace(document); + return replaced; + } + + static JsonDocument removeExample(Bucket bucket, String id) { + JsonDocument removed = bucket.remove(id); + return removed; + } + + static JsonDocument getFirstFromReplicaExample(Bucket bucket, String id) { + try { + return bucket.get(id); + } catch (CouchbaseException e) { + List list = bucket.getFromReplica(id, ReplicaMode.FIRST); + if (!list.isEmpty()) { + return list.get(0); + } + } + return null; + } + + static JsonDocument getLatestReplicaVersion(Bucket bucket, String id) { + long maxCasValue = -1; + JsonDocument latest = null; + for (JsonDocument replica : bucket.getFromReplica(id, ReplicaMode.ALL)) { + if (replica.cas() > maxCasValue) { + latest = replica; + maxCasValue = replica.cas(); + } + } + return latest; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java new file mode 100644 index 0000000000..9ac1bbb3f7 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java @@ -0,0 +1,6 @@ +package com.baeldung.couchbase.mapreduce; + +public interface CouchbaseKeyGenerator { + + String generateKey(T t); +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java new file mode 100644 index 0000000000..78baaa155c --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java @@ -0,0 +1,10 @@ +package com.baeldung.couchbase.mapreduce; + +@SuppressWarnings("serial") +public class DuplicateKeyException extends Exception { + + public DuplicateKeyException(String s) { + super(s); + } + +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java new file mode 100644 index 0000000000..9baf4a4f43 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java @@ -0,0 +1,11 @@ +package com.baeldung.couchbase.mapreduce; + +import java.util.UUID; + +public class RandomUUIDGenerator implements CouchbaseKeyGenerator { + + @Override + public String generateKey(T t) { + return UUID.randomUUID().toString(); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java new file mode 100644 index 0000000000..846aba716a --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java @@ -0,0 +1,50 @@ +package com.baeldung.couchbase.mapreduce; + +public class StudentGrade { + + private String name; + private String course; + private Integer grade; + private Integer hours; + + public StudentGrade() { } + + public StudentGrade(String name, String course, Integer grade, Integer hours) { + this.name = name; + this.course = course; + this.grade = grade; + this.hours = hours; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getCourse() { + return course; + } + + public void setCourse(String course) { + this.course = course; + } + + public Integer getGrade() { + return grade; + } + + public void setGrade(Integer grade) { + this.grade = grade; + } + + public Integer getHours() { + return hours; + } + + public void setHours(Integer hours) { + this.hours = hours; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java new file mode 100644 index 0000000000..680e37ba57 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java @@ -0,0 +1,9 @@ +package com.baeldung.couchbase.mapreduce; + +public class StudentGradeKeyGenerator implements CouchbaseKeyGenerator { + + @Override + public String generateKey(StudentGrade g) { + return g.getName() + ":" + g.getCourse(); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java new file mode 100644 index 0000000000..37bb03645a --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java @@ -0,0 +1,70 @@ +package com.baeldung.couchbase.mapreduce; + +import com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper; +import com.couchbase.client.java.document.json.JsonArray; +import com.couchbase.client.java.view.ViewQuery; + +public class StudentGradeQueryBuilder { + + final ObjectMapper om = new ObjectMapper(); + + public ViewQuery findAll() { + return ViewQuery.from("studentGrades", "findByCourse"); + } + + public ViewQuery findByCourse(String course) { + return ViewQuery.from("studentGrades", "findByCourse") + .key(course); + } + + public ViewQuery findByCourses(String... courses) { + return ViewQuery.from("studentGrades", "findByCourse") + .keys(JsonArray.from(courses)); + } + + public ViewQuery findByGradeInRange(int lower, int upper, boolean inclusiveEnd) { + return ViewQuery.from("studentGrades", "findByGrade") + .startKey(lower) + .endKey(upper) + .inclusiveEnd(inclusiveEnd); + } + + public ViewQuery findByGradeLessThan(int upper) { + return ViewQuery.from("studentGrades", "findByGrade") + .endKey(upper) + .inclusiveEnd(false); + } + + public ViewQuery findByGradeGreaterThan(int lower) { + return ViewQuery.from("studentGrades", "findByGrade") + .startKey(lower); + } + + public ViewQuery findByCourseAndGradeInRange(String course, int minGrade, int maxGrade, boolean inclusiveEnd) { + return ViewQuery.from("studentGrades", "findByCourseAndGrade") + .startKey(JsonArray.from(course, minGrade)) + .endKey(JsonArray.from(course, maxGrade)) + .inclusiveEnd(inclusiveEnd); + } + + public ViewQuery findTopGradesByCourse(String course, int limit) { + return ViewQuery.from("studentGrades", "findByCourseAndGrade") + .startKey(JsonArray.from(course, 100)) + .endKey(JsonArray.from(course, 0)) + .inclusiveEnd(true) + .descending() + .limit(limit); + } + + public ViewQuery countStudentsByCourse() { + return ViewQuery.from("studentGrades", "countStudentsByCourse") + .reduce() + .groupLevel(1); + } + + public ViewQuery sumCreditsByStudent() { + return ViewQuery.from("studentGrades", "sumCreditsByStudent") + .reduce() + .groupLevel(1); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java new file mode 100644 index 0000000000..2d2c63f699 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java @@ -0,0 +1,169 @@ +package com.baeldung.couchbase.mapreduce; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.document.json.JsonArray; +import com.couchbase.client.java.document.json.JsonObject; +import com.couchbase.client.java.view.ViewQuery; +import com.couchbase.client.java.view.ViewResult; +import com.couchbase.client.java.view.ViewRow; + +public class StudentGradeService { + + final CouchbaseKeyGenerator keyGenerator; + final CouchbaseCluster cluster; + final Bucket bucket; + final ObjectMapper om = new ObjectMapper(); + final StudentGradeQueryBuilder queryBuilder; + + public StudentGradeService(CouchbaseKeyGenerator keyGenerator) { + this.keyGenerator = keyGenerator; + this.queryBuilder = new StudentGradeQueryBuilder(); + cluster = CouchbaseCluster.create("127.0.0.1"); + bucket = cluster.openBucket("baeldung-tutorial"); + } + + public String insert(StudentGrade studentGrade) throws DuplicateKeyException { + String id = keyGenerator.generateKey(studentGrade); + if(bucket.exists(id)) { + throw new DuplicateKeyException("document already exists with key " + id); + } + JsonObject content = JsonObject.empty() + .put("type", "StudentGrade") + .put("name", studentGrade.getName()) + .put("course", studentGrade.getCourse()) + .put("grade", studentGrade.getGrade()) + .put("hours", studentGrade.getHours()); + JsonDocument doc = JsonDocument.create(id, content); + bucket.insert(doc); + return id; + } + + public List findAll() { + ViewQuery query = queryBuilder.findAll(); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + private List extractDocuments(ViewResult result) { + List docs = new ArrayList<>(); + for(ViewRow row : result.allRows()) { + JsonDocument doc = row.document(); + docs.add(doc); + } + return docs; + } + + public List findByCourse(String course) { + ViewQuery query = queryBuilder.findByCourse(course); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + public List findByCourses(String... courses) { + ViewQuery query = queryBuilder.findByCourses(courses); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + public List findByGradeInRange(int lower, int upper, boolean inclusiveEnd) { + ViewQuery query = queryBuilder.findByGradeInRange(lower, upper, inclusiveEnd); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + public List findByGradeLessThan(int upper) { + ViewQuery query = queryBuilder.findByGradeLessThan(upper); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + public List findByGradeGreaterThan(int lower) { + ViewQuery query = queryBuilder.findByGradeGreaterThan(lower); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + public List findByCourseAndGradeInRange(String course, int minGrade, int maxGrade, boolean inclusiveEnd) { + ViewQuery query = queryBuilder.findByCourseAndGradeInRange(course, minGrade, maxGrade, inclusiveEnd); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + public List findTopGradesByCourse(String course, int limit) { + ViewQuery query = queryBuilder.findTopGradesByCourse(course, limit); + ViewResult result = bucket.query(query); + return extractDocuments(result); + } + + public Map countStudentsByCourse() { + ViewQuery query = ViewQuery.from("studentGrades", "countStudentsByCourse") + .reduce() + .groupLevel(1); + ViewResult result = bucket.query(query); + + Map numStudentsByCourse = new HashMap<>(); + for(ViewRow row : result.allRows()) { + JsonArray keyArray = (JsonArray) row.key(); + String course = keyArray.getString(0); + long count = Long.valueOf(row.value().toString()); + numStudentsByCourse.put(course, count); + } + + return numStudentsByCourse; + } + + public Map sumCreditHoursByStudent() { + ViewQuery query = ViewQuery.from("studentGrades", "sumHoursByStudent") + .reduce() + .groupLevel(1); + ViewResult result = bucket.query(query); + + Map creditHoursByStudent = new HashMap<>(); + for(ViewRow row : result.allRows()) { + String course = (String) row.key(); + long sum = Long.valueOf(row.value().toString()); + creditHoursByStudent.put(course, sum); + } + + return creditHoursByStudent; + } + + public Map sumGradePointsByStudent() { + ViewQuery query = ViewQuery.from("studentGrades", "sumGradePointsByStudent") + .reduce() + .groupLevel(1); + ViewResult result = bucket.query(query); + + Map gradePointsByStudent = new HashMap<>(); + for(ViewRow row : result.allRows()) { + String course = (String) row.key(); + long sum = Long.valueOf(row.value().toString()); + gradePointsByStudent.put(course, sum); + } + + return gradePointsByStudent; + } + + public Map calculateGpaByStudent() { + Map creditHoursByStudent = sumCreditHoursByStudent(); + Map gradePointsByStudent = sumGradePointsByStudent(); + + Map result = new HashMap<>(); + for(Entry creditHoursEntry : creditHoursByStudent.entrySet()) { + String name = creditHoursEntry.getKey(); + long totalHours = creditHoursEntry.getValue(); + long totalGradePoints = gradePointsByStudent.get(name); + result.put(name, ((float) totalGradePoints / totalHours)); + } + return result; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java b/couchbase/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java new file mode 100644 index 0000000000..98fbe17e60 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java @@ -0,0 +1,26 @@ +package com.baeldung.couchbase.n1ql; + +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class BucketFactory { + + @Autowired + private Cluster cluster; + + private Bucket travelSampleBucket; + private Bucket testBucket; + + public Bucket getTravelSampleBucket() { + return (travelSampleBucket != null) ? + travelSampleBucket : cluster.openBucket("travel-sample"); + } + + public Bucket getTestBucket() { + return (testBucket != null) ? + testBucket : cluster.openBucket("test"); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java b/couchbase/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java new file mode 100644 index 0000000000..45067911cb --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java @@ -0,0 +1,34 @@ +package com.baeldung.couchbase.n1ql; + +import com.couchbase.client.java.query.N1qlQueryResult; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; + +import java.io.IOException; +import java.util.List; +import java.util.Objects; +import java.util.logging.Level; +import java.util.logging.Logger; +import java.util.stream.Collectors; + +public class CodeSnippets { + + private static ObjectMapper objectMapper = new ObjectMapper(); + + private static final Logger logger = Logger.getLogger(CodeSnippets.class.getName()); + + public static List extractJsonResult(N1qlQueryResult result) { + return result.allRows().stream() + .map(row -> { + try { + return objectMapper.readTree(row.value().toString()); + }catch (IOException e) { + logger.log(Level.WARNING, e.getLocalizedMessage()); + return null; + } + }) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + } + +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/person/Person.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/Person.java new file mode 100644 index 0000000000..403b7c8d3b --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/Person.java @@ -0,0 +1,86 @@ +package com.baeldung.couchbase.spring.person; + +public class Person { + + private String id; + private String type; + private String name; + private String homeTown; + + Person() { + } + + public Person(Builder b) { + this.id = b.id; + this.type = b.type; + this.name = b.name; + this.homeTown = b.homeTown; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getHomeTown() { + return homeTown; + } + + public void setHomeTown(String homeTown) { + this.homeTown = homeTown; + } + + public static class Builder { + private String id; + private String type; + private String name; + private String homeTown; + + public static Builder newInstance() { + return new Builder(); + } + + public Person build() { + return new Person(this); + } + + public Builder id(String id) { + this.id = id; + return this; + } + + public Builder type(String type) { + this.type = type; + return this; + } + + public Builder name(String name) { + this.name = name; + return this; + } + + public Builder homeTown(String homeTown) { + this.homeTown = homeTown; + return this; + } + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java new file mode 100644 index 0000000000..163f6417ca --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java @@ -0,0 +1,69 @@ +package com.baeldung.couchbase.spring.person; + +import java.util.List; +import java.util.UUID; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.baeldung.couchbase.spring.service.CrudService; +import com.baeldung.couchbase.spring.service.TutorialBucketService; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.ReplicaMode; +import com.couchbase.client.java.document.JsonDocument; + +@Service +public class PersonCrudService implements CrudService { + + @Autowired + private TutorialBucketService bucketService; + + @Autowired + private PersonDocumentConverter converter; + + private Bucket bucket; + + @PostConstruct + private void init() { + bucket = bucketService.getBucket(); + } + + @Override + public void create(Person person) { + if (person.getId() == null) { + person.setId(UUID.randomUUID().toString()); + } + JsonDocument document = converter.toDocument(person); + bucket.insert(document); + } + + @Override + public Person read(String id) { + JsonDocument doc = bucket.get(id); + return (doc != null ? converter.fromDocument(doc) : null); + } + + @Override + public Person readFromReplica(String id) { + List docs = bucket.getFromReplica(id, ReplicaMode.FIRST); + return (docs.isEmpty() ? null : converter.fromDocument(docs.get(0))); + } + + @Override + public void update(Person person) { + JsonDocument document = converter.toDocument(person); + bucket.upsert(document); + } + + @Override + public void delete(String id) { + bucket.remove(id); + } + + @Override + public boolean exists(String id) { + return bucket.exists(id); + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java new file mode 100644 index 0000000000..71108d16dd --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java @@ -0,0 +1,28 @@ +package com.baeldung.couchbase.spring.person; + +import org.springframework.stereotype.Service; + +import com.baeldung.couchbase.spring.service.JsonDocumentConverter; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.document.json.JsonObject; + +@Service +public class PersonDocumentConverter implements JsonDocumentConverter { + + @Override + public JsonDocument toDocument(Person p) { + JsonObject content = JsonObject.empty().put("type", "Person").put("name", p.getName()).put("homeTown", p.getHomeTown()); + return JsonDocument.create(p.getId(), content); + } + + @Override + public Person fromDocument(JsonDocument doc) { + JsonObject content = doc.content(); + Person p = new Person(); + p.setId(doc.id()); + p.setType("Person"); + p.setName(content.getString("name")); + p.setHomeTown(content.getString("homeTown")); + return p; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java new file mode 100644 index 0000000000..cad3bdd5a5 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java @@ -0,0 +1,28 @@ +package com.baeldung.couchbase.spring.person; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.couchbase.client.core.CouchbaseException; + +@Service +public class RegistrationService { + + @Autowired + private PersonCrudService crud; + + public void registerNewPerson(String name, String homeTown) { + Person person = new Person(); + person.setName(name); + person.setHomeTown(homeTown); + crud.create(person); + } + + public Person findRegistrant(String id) { + try { + return crud.read(id); + } catch (CouchbaseException e) { + return crud.readFromReplica(id); + } + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java new file mode 100644 index 0000000000..1ea9c72114 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java @@ -0,0 +1,9 @@ +package com.baeldung.couchbase.spring.service; + +import com.couchbase.client.java.Bucket; + +public interface BucketService { + + Bucket getBucket(); + +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java new file mode 100644 index 0000000000..da7a10141f --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java @@ -0,0 +1,17 @@ +package com.baeldung.couchbase.spring.service; + +import java.util.List; + +import com.couchbase.client.java.AsyncBucket; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.document.JsonDocument; + +public interface ClusterService { + + Bucket openBucket(String name, String password); + + List getDocuments(Bucket bucket, Iterable keys); + + List getDocumentsAsync(AsyncBucket bucket, Iterable keys); + +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java new file mode 100644 index 0000000000..1cceb11ccc --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java @@ -0,0 +1,81 @@ +package com.baeldung.couchbase.spring.service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; + +import javax.annotation.PostConstruct; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import com.couchbase.client.java.AsyncBucket; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.env.CouchbaseEnvironment; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; + +import rx.Observable; +import rx.functions.Action1; +import rx.functions.Func1; + +@Service +public class ClusterServiceImpl implements ClusterService { + private static final Logger logger = LoggerFactory.getLogger(ClusterServiceImpl.class); + + private Cluster cluster; + private Map buckets = new ConcurrentHashMap<>(); + + @PostConstruct + private void init() { + CouchbaseEnvironment env = DefaultCouchbaseEnvironment.create(); + cluster = CouchbaseCluster.create(env, "localhost"); + } + + @Override + synchronized public Bucket openBucket(String name, String password) { + if (!buckets.containsKey(name)) { + Bucket bucket = cluster.openBucket(name, password); + buckets.put(name, bucket); + } + return buckets.get(name); + } + + @Override + public List getDocuments(Bucket bucket, Iterable keys) { + List docs = new ArrayList<>(); + for (String key : keys) { + JsonDocument doc = bucket.get(key); + if (doc != null) { + docs.add(doc); + } + } + return docs; + } + + @Override + public List getDocumentsAsync(final AsyncBucket asyncBucket, Iterable keys) { + Observable asyncBulkGet = Observable.from(keys).flatMap(new Func1>() { + public Observable call(String key) { + return asyncBucket.get(key); + } + }); + + final List docs = new ArrayList<>(); + try { + asyncBulkGet.toBlocking().forEach(new Action1() { + public void call(JsonDocument doc) { + docs.add(doc); + } + }); + } catch (Exception e) { + logger.error("Error during bulk get", e); + } + + return docs; + } +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java new file mode 100644 index 0000000000..5b12af7003 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java @@ -0,0 +1,16 @@ +package com.baeldung.couchbase.spring.service; + +public interface CrudService { + + void create(T t); + + T read(String id); + + T readFromReplica(String id); + + void update(T t); + + void delete(String id); + + boolean exists(String id); +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java new file mode 100644 index 0000000000..f63bb8691b --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java @@ -0,0 +1,10 @@ +package com.baeldung.couchbase.spring.service; + +import com.couchbase.client.java.document.JsonDocument; + +public interface JsonDocumentConverter { + + JsonDocument toDocument(T t); + + T fromDocument(JsonDocument doc); +} diff --git a/couchbase/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java new file mode 100644 index 0000000000..b91c131912 --- /dev/null +++ b/couchbase/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java @@ -0,0 +1,29 @@ +package com.baeldung.couchbase.spring.service; + +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Service; + +import com.couchbase.client.java.Bucket; + +@Service +@Qualifier("TutorialBucketService") +public class TutorialBucketService implements BucketService { + + @Autowired + private ClusterService couchbase; + + private Bucket bucket; + + @PostConstruct + private void init() { + bucket = couchbase.openBucket("baeldung-tutorial", ""); + } + + @Override + public Bucket getBucket() { + return bucket; + } +} diff --git a/couchbase/src/main/resources/application.properties b/couchbase/src/main/resources/application.properties new file mode 100644 index 0000000000..e69de29bb2 diff --git a/couchbase/src/main/resources/logback.xml b/couchbase/src/main/resources/logback.xml new file mode 100644 index 0000000000..ec0dc2469a --- /dev/null +++ b/couchbase/src/main/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file diff --git a/couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java new file mode 100644 index 0000000000..3079fc928a --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java @@ -0,0 +1,13 @@ +package com.baeldung.couchbase.async; + +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { AsyncIntegrationTestConfig.class }) +@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) +public abstract class AsyncIntegrationTest { +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java b/couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java new file mode 100644 index 0000000000..efc3e9957f --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java @@ -0,0 +1,9 @@ +package com.baeldung.couchbase.async; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan(basePackages = { "com.baeldung.couchbase.async" }) +public class AsyncIntegrationTestConfig { +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java new file mode 100644 index 0000000000..565aaed5da --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java @@ -0,0 +1,216 @@ +package com.baeldung.couchbase.async.person; + +import static org.junit.Assert.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +import javax.annotation.PostConstruct; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; + +import com.baeldung.couchbase.async.AsyncIntegrationTest; +import com.baeldung.couchbase.async.person.Person; +import com.baeldung.couchbase.async.person.PersonCrudService; +import com.baeldung.couchbase.async.person.PersonDocumentConverter; +import com.baeldung.couchbase.async.service.BucketService; +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.document.JsonDocument; + +public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest { + + @Autowired + private PersonCrudService personService; + + @Autowired + @Qualifier("TutorialBucketService") + private BucketService bucketService; + + @Autowired + private PersonDocumentConverter converter; + + private Bucket bucket; + + @PostConstruct + private void init() { + bucket = bucketService.getBucket(); + } + + @Test + public final void givenRandomPerson_whenCreate_thenPersonPersisted() { + // create person + Person person = randomPerson(); + personService.create(person); + + // check results + assertNotNull(person.getId()); + assertNotNull(bucket.get(person.getId())); + + // cleanup + bucket.remove(person.getId()); + } + + @Test + public final void givenId_whenRead_thenReturnsPerson() { + // create and insert person document + String id = insertRandomPersonDocument().id(); + + // read person and check results + assertNotNull(personService.read(id)); + + // cleanup + bucket.remove(id); + } + + @Test + public final void givenNewHometown_whenUpdate_thenNewHometownPersisted() { + // create and insert person document + JsonDocument doc = insertRandomPersonDocument(); + + // update person + Person expected = converter.fromDocument(doc); + String updatedHomeTown = RandomStringUtils.randomAlphabetic(12); + expected.setHomeTown(updatedHomeTown); + personService.update(expected); + + // check results + JsonDocument actual = bucket.get(expected.getId()); + assertNotNull(actual); + assertNotNull(actual.content()); + assertEquals(expected.getHomeTown(), actual.content().getString("homeTown")); + + // cleanup + bucket.remove(expected.getId()); + } + + @Test + public final void givenRandomPerson_whenDelete_thenPersonNotInBucket() { + // create and insert person document + String id = insertRandomPersonDocument().id(); + + // delete person and check results + personService.delete(id); + assertNull(bucket.get(id)); + } + + @Test + public final void givenIds_whenReadBulk_thenReturnsOnlyPersonsWithMatchingIds() { + List ids = new ArrayList<>(); + + // add some person documents + for (int i = 0; i < 5; i++) { + ids.add(insertRandomPersonDocument().id()); + } + + // perform bulk read + List persons = personService.readBulk(ids); + + // check results + for (Person person : persons) { + assertTrue(ids.contains(person.getId())); + } + + // cleanup + for (String id : ids) { + bucket.remove(id); + } + } + + @Test + public final void givenPersons_whenInsertBulk_thenPersonsAreInserted() { + + // create some persons + List persons = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + persons.add(randomPerson()); + } + + // perform bulk insert + personService.createBulk(persons); + + // check results + for (Person person : persons) { + assertNotNull(bucket.get(person.getId())); + } + + // cleanup + for (Person person : persons) { + bucket.remove(person.getId()); + } + } + + @Test + public final void givenPersons_whenUpdateBulk_thenPersonsAreUpdated() { + + List ids = new ArrayList<>(); + + // add some person documents + for (int i = 0; i < 5; i++) { + ids.add(insertRandomPersonDocument().id()); + } + + // load persons from Couchbase + List persons = new ArrayList<>(); + for (String id : ids) { + persons.add(converter.fromDocument(bucket.get(id))); + } + + // modify persons + for (Person person : persons) { + person.setHomeTown(RandomStringUtils.randomAlphabetic(10)); + } + + // perform bulk update + personService.updateBulk(persons); + + // check results + for (Person person : persons) { + JsonDocument doc = bucket.get(person.getId()); + assertEquals(person.getName(), doc.content().getString("name")); + assertEquals(person.getHomeTown(), doc.content().getString("homeTown")); + } + + // cleanup + for (String id : ids) { + bucket.remove(id); + } + } + + @Test + public void givenIds_whenDeleteBulk_thenPersonsAreDeleted() { + + List ids = new ArrayList<>(); + + // add some person documents + for (int i = 0; i < 5; i++) { + ids.add(insertRandomPersonDocument().id()); + } + + // perform bulk delete + personService.deleteBulk(ids); + + // check results + for (String id : ids) { + assertNull(bucket.get(id)); + } + + } + + private JsonDocument insertRandomPersonDocument() { + Person expected = randomPersonWithId(); + JsonDocument doc = converter.toDocument(expected); + return bucket.insert(doc); + } + + private Person randomPerson() { + return Person.Builder.newInstance().name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build(); + } + + private Person randomPersonWithId() { + return Person.Builder.newInstance().id(UUID.randomUUID().toString()).name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build(); + } +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java new file mode 100644 index 0000000000..d0db5d37a3 --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java @@ -0,0 +1,35 @@ +package com.baeldung.couchbase.async.service; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; + +import com.baeldung.couchbase.async.AsyncIntegrationTest; +import com.baeldung.couchbase.async.AsyncIntegrationTestConfig; +import com.baeldung.couchbase.async.service.ClusterService; +import com.couchbase.client.java.Bucket; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { AsyncIntegrationTestConfig.class }) +@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) +public class ClusterServiceIntegrationTest extends AsyncIntegrationTest { + + @Autowired + private ClusterService couchbaseService; + + private Bucket defaultBucket; + + @Test + public void whenOpenBucket_thenBucketIsNotNull() throws Exception { + defaultBucket = couchbaseService.openBucket("default", ""); + assertNotNull(defaultBucket); + assertFalse(defaultBucket.isClosed()); + defaultBucket.close(); + } +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java new file mode 100644 index 0000000000..00d462e32a --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java @@ -0,0 +1,150 @@ +package com.baeldung.couchbase.mapreduce; + +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.view.ViewResult; +import com.couchbase.client.java.view.ViewRow; + +public class StudentGradeServiceIntegrationTest { + private static final Logger logger = LoggerFactory.getLogger(StudentGradeServiceIntegrationTest.class); + + static StudentGradeService studentGradeService; + static Set gradeIds = new HashSet<>(); + + @BeforeClass + public static void setUpBeforeClass() throws Exception { + studentGradeService = new StudentGradeService(new StudentGradeKeyGenerator()); + insertStudentGrade(new StudentGrade("John Doe", "History", 80, 3)); + insertStudentGrade(new StudentGrade("Jane Doe", "History", 89, 3)); + insertStudentGrade(new StudentGrade("Bob Smith", "History", 90, 3)); + insertStudentGrade(new StudentGrade("Mary Jones", "History", 92, 3)); + insertStudentGrade(new StudentGrade("Jane Doe", "Math", 59, 3)); + insertStudentGrade(new StudentGrade("Bob Smith", "Math", 91, 3)); + insertStudentGrade(new StudentGrade("Mary Jones", "Math", 86, 3)); + insertStudentGrade(new StudentGrade("John Doe", "Science", 85, 4)); + insertStudentGrade(new StudentGrade("Bob Smith", "Science", 97, 4)); + insertStudentGrade(new StudentGrade("Mary Jones", "Science", 84, 4)); + } + + private static void insertStudentGrade(StudentGrade studentGrade) { + try { + String id = studentGradeService.insert(studentGrade); + gradeIds.add(id); + } catch (DuplicateKeyException e) { + } + } + + @Test + public final void whenFindAll_thenSuccess() { + List docs = studentGradeService.findAll(); + printDocuments(docs); + } + + @Test + public final void whenFindByCourse_thenSuccess() { + List docs = studentGradeService.findByCourse("History"); + printDocuments(docs); + } + + @Test + public final void whenFindByCourses_thenSuccess() { + List docs = studentGradeService.findByCourses("History", "Science"); + printDocuments(docs); + } + + @Test + public final void whenFindByGradeInRange_thenSuccess() { + List docs = studentGradeService.findByGradeInRange(80, 89, true); + printDocuments(docs); + } + + @Test + public final void whenFindByGradeLessThan_thenSuccess() { + List docs = studentGradeService.findByGradeLessThan(60); + printDocuments(docs); + } + + @Test + public final void whenFindByGradeGreaterThan_thenSuccess() { + List docs = studentGradeService.findByGradeGreaterThan(90); + printDocuments(docs); + } + + @Test + public final void whenFindByCourseAndGradeInRange_thenSuccess() { + List docs = studentGradeService.findByCourseAndGradeInRange("Math", 80, 89, true); + printDocuments(docs); + } + + @Test + public final void whenFindTopGradesByCourse_thenSuccess() { + List docs = studentGradeService.findTopGradesByCourse("Science", 2); + printDocuments(docs); + } + + @Test + public final void whenCountStudentsByCourse_thenSuccess() { + Map map = studentGradeService.countStudentsByCourse(); + printMap(map); + } + + @Test + public final void whenSumCreditHoursByStudent_thenSuccess() { + Map map = studentGradeService.sumCreditHoursByStudent(); + printMap(map); + } + + @Test + public final void whenSumGradePointsByStudent_thenSuccess() { + Map map = studentGradeService.sumGradePointsByStudent(); + printMap(map); + } + + @Test + public final void whenCalculateGpaByStudent_thenSuccess() { + Map map = studentGradeService.calculateGpaByStudent(); + printGpaMap(map); + } + + private void printMap(Map map) { + for(Map.Entry entry : map.entrySet()) { + logger.info(entry.getKey() + "=" + entry.getValue()); + } + } + + private void printGpaMap(Map map) { + for(Map.Entry entry : map.entrySet()) { + logger.info(entry.getKey() + "=" + entry.getValue()); + } + } + + private void printDocuments(List docs) { + for(JsonDocument doc : docs) { + String key = doc.id(); + logger.info(key + " = " + doc.content().toString()); + } + } + + private void printViewResultDocuments(ViewResult result) { + for(ViewRow row : result.allRows()) { + JsonDocument doc = row.document(); + String key = doc.id(); + logger.info(key + "=" + doc.content().toString()); + } + } + + private void printViewResultRows(ViewResult result) { + for(ViewRow row : result.allRows()) { + logger.info(row.toString()); + } + } +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java b/couchbase/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java new file mode 100644 index 0000000000..ef7e31b224 --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java @@ -0,0 +1,26 @@ +package com.baeldung.couchbase.n1ql; + +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.CouchbaseCluster; +import com.couchbase.client.java.env.CouchbaseEnvironment; +import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +import java.util.concurrent.TimeUnit; + +@Configuration +@ComponentScan(basePackages = { "com.baeldung.couchbase.n1ql" }) +public class IntegrationTestConfig { + + @Bean + public Cluster cluster() { + CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder() + .connectTimeout(60000) + .build(); + return CouchbaseCluster.create(env, "127.0.0.1"); + } + + +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java new file mode 100644 index 0000000000..8112d7d222 --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java @@ -0,0 +1,248 @@ +package com.baeldung.couchbase.n1ql; + +import com.couchbase.client.java.Bucket; +import com.couchbase.client.java.Cluster; +import com.couchbase.client.java.document.JsonDocument; +import com.couchbase.client.java.document.json.JsonArray; +import com.couchbase.client.java.document.json.JsonObject; +import com.couchbase.client.java.query.N1qlQuery; +import com.couchbase.client.java.query.N1qlQueryResult; +import com.couchbase.client.java.query.N1qlQueryRow; +import com.couchbase.client.java.query.Statement; +import com.fasterxml.jackson.databind.JsonNode; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import rx.Observable; + +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import static com.baeldung.couchbase.n1ql.CodeSnippets.extractJsonResult; +import static com.couchbase.client.java.query.Select.select; +import static com.couchbase.client.java.query.dsl.Expression.*; +import static org.junit.Assert.assertNotNull; + + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { IntegrationTestConfig.class }) +public class N1QLIntegrationTest { + + + @Autowired + private Cluster cluster; + + @Autowired + private BucketFactory bucketFactory; + + @Test + public void givenAutowiredCluster_whenNotNull_thenNotNull() { + assertNotNull(cluster); + } + + @Test + public void givenBucketFactory_whenGetTestBucket_thenNotNull() { + assertNotNull(bucketFactory.getTestBucket()); + } + + @Test + public void givenBucketFactory_whenGetTravelSampleBucket_thenNotNull() { + assertNotNull(bucketFactory.getTravelSampleBucket()); + } + + @Test + public void givenDocument_whenInsert_thenResult() { + Bucket bucket = bucketFactory.getTestBucket(); + JsonObject personObj = JsonObject.create() + .put("name", "John") + .put("email", "john@doe.com") + .put("interests", JsonArray.from("Java", "Nigerian Jollof")); + + String id = UUID.randomUUID().toString(); + JsonDocument doc = JsonDocument.create(id, personObj); + bucket.insert(doc); + assertNotNull(bucket.get(id)); + } + + @Test + public void whenBasicSelectQuery_thenGetQueryResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + N1qlQueryResult result + = bucket.query(N1qlQuery.simple("SELECT * FROM test")); + + result.forEach(System.out::println); + + System.out.println("result count: " + result.info().resultCount()); + System.out.println("error count: " + result.info().errorCount()); + } + + @Test + public void givenSelectStatement_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query = "SELECT name FROM `travel-sample` " + + "WHERE type = 'airport' LIMIT 100"; + N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query)); + + System.out.println("Result Count " + result1.info().resultCount()); + + N1qlQueryRow row = result1.allRows().get(0); + JsonObject rowJson = row.value(); + System.out.println("Name in First Row " + rowJson.get("name")); + + } + + @Test + public void givenSelectStatement2_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + JsonObject pVal = JsonObject.create().put("type", "airport"); + String query = "SELECT * FROM `travel-sample` " + + "WHERE type = $type LIMIT 100"; + N1qlQueryResult r2 = bucket.query(N1qlQuery.parameterized(query, pVal)); + + System.out.println(r2.allRows()); + + List list = extractJsonResult(r2); + System.out.println( + list.get(0).get("travel-sample").get("airportname").asText()); + } + + @Test + public void givenSelectDSL_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + Statement statement = select("*") + .from(i("travel-sample")) + .where(x("type").eq(s("airport"))) + .limit(100); + N1qlQueryResult r3 = bucket.query(N1qlQuery.simple(statement)); + + List list2 = extractJsonResult(r3); + System.out.println("First Airport Name: " + list2.get(0).get("travel-sample").get("airportname").asText()); + + } + + @Test + public void givenSelectStatementWithOperators_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query2 = "SELECT t.city, " + + "t.airportname || \" (\" || t.faa || \")\" AS portname_faa " + + "FROM `travel-sample` t " + + "WHERE t.type=\"airport\"" + + "AND t.country LIKE '%States'" + + "AND t.geo.lat >= 70 " + + "LIMIT 2"; + N1qlQueryResult r4 = bucket.query(N1qlQuery.simple(query2)); + List list3 = extractJsonResult(r4); + System.out.println("First Doc : " + list3.get(0)); + } + + @Test + public void givenSelectStatementWithDSL2_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + Statement st2 = select( + x("t.city, t.airportname") + .concat(s(" (")).concat(x("t.faa")).concat(s(")")).as("portname_faa")) + .from(i("travel-sample").as("t")) + .where( x("t.type").eq(s("airport")) + .and(x("t.country").like(s("%States"))) + .and(x("t.geo.lat").gte(70))) + .limit(2); + N1qlQueryResult r5 = bucket.query(N1qlQuery.simple(st2)); + List list5 = extractJsonResult(r5); + System.out.println("First Doc : " + list5.get(0)); + System.out.println("Query from Statement2: " + st2.toString()); + } + + @Test + public void givenInsertStatement_whenQuery_thenUpdate() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query = "INSERT INTO `travel-sample` (KEY, VALUE) " + + " VALUES(" + + "\"cust1293\", " + + "{\"id\":\"1293\",\"name\":\"Sample Airline\", \"type\":\"airline\"})" + + " RETURNING META().id as docid, *"; + N1qlQueryResult r1 = bucket.query(N1qlQuery.simple(query)); + r1.forEach(System.out::println); + } + + @Test + public void givenDocument_whenInsert_thenResults() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + JsonObject ob = JsonObject.create() + .put("id", "1293") + .put("name", "Sample Airline") + .put("type", "airline"); + bucket.insert(JsonDocument.create("cust1295", ob)); + } + + @Test + public void givenDocuments_whenBatchInsert_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + + List documents = IntStream.rangeClosed(0,10) + .mapToObj( i -> { + JsonObject content = JsonObject.create() + .put("id", i) + .put("type", "airline") + .put("name", "Sample Airline " + i); + return JsonDocument.create("cust_" + i, content); + }) + .collect(Collectors.toList()); + + List r5 = Observable + .from(documents) + .flatMap(doc -> bucket.async().insert(doc)) + .toList() + .last() + .toBlocking() + .single(); + + r5.forEach(System.out::println); + } + + @Test + public void givenUpdateStatement_whenQuery_thenUpdate() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query2 = "UPDATE `travel-sample` USE KEYS \"cust_1\" " + + "SET name=\"Sample Airline Updated\" RETURNING name"; + N1qlQueryResult result = bucket.query(N1qlQuery.simple(query2)); + result.forEach(System.out::println); + } + + @Test + public void givenDocument_whenUpsert_thenUpdate() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + JsonObject o2 = JsonObject.create() + .put("name", "Sample Airline Updated"); + bucket.upsert(JsonDocument.create("cust_1", o2)); + } + + @Test + public void givenUnestUpdateStatement_whenQuery_thenResult() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query3 = "UPDATE `travel-sample` USE KEYS \"cust_2\" " + + "UNSET name RETURNING *"; + N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query3)); + result1.forEach(System.out::println); + } + + @Test + public void givenDeleteStatement_whenQuery_thenDelete() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query4 = "DELETE FROM `travel-sample` USE KEYS \"cust_50\""; + N1qlQueryResult result4 = bucket.query(N1qlQuery.simple(query4)); + } + + @Test + public void givenDeleteStatement2_whenQuery_thenDelete() { + Bucket bucket = bucketFactory.getTravelSampleBucket(); + String query5 = "DELETE FROM `travel-sample` WHERE id = 0 RETURNING *"; + N1qlQueryResult result5 = bucket.query(N1qlQuery.simple(query5)); + } + + +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java new file mode 100644 index 0000000000..9c0b0a50c1 --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java @@ -0,0 +1,13 @@ +package com.baeldung.couchbase.spring; + +import org.junit.runner.RunWith; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { IntegrationTestConfig.class }) +@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) +public abstract class IntegrationTest { +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java b/couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java new file mode 100644 index 0000000000..d814b31a07 --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java @@ -0,0 +1,9 @@ +package com.baeldung.couchbase.spring; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ComponentScan(basePackages = { "com.baeldung.couchbase.spring" }) +public class IntegrationTestConfig { +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java new file mode 100644 index 0000000000..ec15be1acc --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java @@ -0,0 +1,75 @@ +package com.baeldung.couchbase.spring.person; + +import static org.junit.Assert.*; + +import javax.annotation.PostConstruct; + +import org.apache.commons.lang3.RandomStringUtils; +import org.junit.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import com.baeldung.couchbase.spring.IntegrationTest; + +public class PersonCrudServiceIntegrationTest extends IntegrationTest { + + private static final String CLARK_KENT = "Clark Kent"; + private static final String SMALLVILLE = "Smallville"; + private static final String CLARK_KENT_ID = "Person:ClarkKent"; + + private Person clarkKent; + + @Autowired + private PersonCrudService personService; + + @PostConstruct + private void init() { + clarkKent = personService.read(CLARK_KENT_ID); + if (clarkKent == null) { + clarkKent = buildClarkKent(); + personService.create(clarkKent); + } + } + + @Test + public final void givenRandomPerson_whenCreate_thenPersonPersisted() { + Person person = randomPerson(); + personService.create(person); + String id = person.getId(); + assertNotNull(personService.read(id)); + } + + @Test + public final void givenClarkKentId_whenRead_thenReturnsClarkKent() { + Person person = personService.read(CLARK_KENT_ID); + assertNotNull(person); + } + + @Test + public final void givenNewHometown_whenUpdate_thenNewHometownPersisted() { + Person expected = randomPerson(); + personService.create(expected); + String updatedHomeTown = RandomStringUtils.randomAlphabetic(12); + expected.setHomeTown(updatedHomeTown); + personService.update(expected); + Person actual = personService.read(expected.getId()); + assertNotNull(actual); + assertEquals(expected.getHomeTown(), actual.getHomeTown()); + } + + @Test + public final void givenRandomPerson_whenDelete_thenPersonNotInBucket() { + Person person = randomPerson(); + personService.create(person); + String id = person.getId(); + personService.delete(id); + assertNull(personService.read(id)); + } + + private Person buildClarkKent() { + return Person.Builder.newInstance().id(CLARK_KENT_ID).name(CLARK_KENT).homeTown(SMALLVILLE).build(); + } + + private Person randomPerson() { + return Person.Builder.newInstance().name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build(); + } +} diff --git a/couchbase/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java b/couchbase/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java new file mode 100644 index 0000000000..ead247dfbc --- /dev/null +++ b/couchbase/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java @@ -0,0 +1,34 @@ +package com.baeldung.couchbase.spring.service; + +import static org.junit.Assert.*; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.TestExecutionListeners; +import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; +import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; + +import com.baeldung.couchbase.spring.IntegrationTest; +import com.baeldung.couchbase.spring.IntegrationTestConfig; +import com.couchbase.client.java.Bucket; + +@RunWith(SpringJUnit4ClassRunner.class) +@ContextConfiguration(classes = { IntegrationTestConfig.class }) +@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) +public class ClusterServiceIntegrationTest extends IntegrationTest { + + @Autowired + private ClusterService couchbaseService; + + private Bucket defaultBucket; + + @Test + public void whenOpenBucket_thenBucketIsNotNull() throws Exception { + defaultBucket = couchbaseService.openBucket("default", ""); + assertNotNull(defaultBucket); + assertFalse(defaultBucket.isClosed()); + defaultBucket.close(); + } +} diff --git a/couchbase/src/test/resources/logback.xml b/couchbase/src/test/resources/logback.xml new file mode 100644 index 0000000000..ec0dc2469a --- /dev/null +++ b/couchbase/src/test/resources/logback.xml @@ -0,0 +1,19 @@ + + + + + web - %date [%thread] %-5level %logger{36} - %message%n + + + + + + + + + + + + + + \ No newline at end of file From 2cf7bcfb0018430f70d5d5099e550a410a25afd1 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Tue, 19 Sep 2017 12:25:55 +0100 Subject: [PATCH 26/42] rename module to couchbase --- couchbase-sdk/.gitignore | 6 - couchbase-sdk/README.md | 51 ---- couchbase-sdk/mvnw | 233 ---------------- couchbase-sdk/mvnw.cmd | 145 ---------- couchbase-sdk/pom.xml | 82 ------ .../couchbase/async/CouchbaseEntity.java | 9 - .../couchbase/async/person/Person.java | 90 ------- .../async/person/PersonCrudService.java | 24 -- .../async/person/PersonDocumentConverter.java | 28 -- .../async/person/RegistrationService.java | 28 -- .../async/service/AbstractBucketService.java | 27 -- .../async/service/AbstractCrudService.java | 142 ---------- .../async/service/BucketService.java | 8 - .../async/service/ClusterService.java | 8 - .../async/service/ClusterServiceImpl.java | 36 --- .../couchbase/async/service/CrudService.java | 26 -- .../async/service/JsonDocumentConverter.java | 10 - .../async/service/TutorialBucketService.java | 32 --- .../couchbase/intro/CodeSnippets.java | 87 ------ .../mapreduce/CouchbaseKeyGenerator.java | 6 - .../mapreduce/DuplicateKeyException.java | 10 - .../mapreduce/RandomUUIDGenerator.java | 11 - .../couchbase/mapreduce/StudentGrade.java | 50 ---- .../mapreduce/StudentGradeKeyGenerator.java | 9 - .../mapreduce/StudentGradeQueryBuilder.java | 70 ----- .../mapreduce/StudentGradeService.java | 169 ------------ .../couchbase/n1ql/BucketFactory.java | 26 -- .../baeldung/couchbase/n1ql/CodeSnippets.java | 34 --- .../couchbase/spring/person/Person.java | 86 ------ .../spring/person/PersonCrudService.java | 69 ----- .../person/PersonDocumentConverter.java | 28 -- .../spring/person/RegistrationService.java | 28 -- .../spring/service/BucketService.java | 9 - .../spring/service/ClusterService.java | 17 -- .../spring/service/ClusterServiceImpl.java | 81 ------ .../couchbase/spring/service/CrudService.java | 16 -- .../spring/service/JsonDocumentConverter.java | 10 - .../spring/service/TutorialBucketService.java | 29 -- .../src/main/resources/application.properties | 0 couchbase-sdk/src/main/resources/logback.xml | 19 -- .../couchbase/async/AsyncIntegrationTest.java | 13 - .../async/AsyncIntegrationTestConfig.java | 9 - .../PersonCrudServiceIntegrationTest.java | 216 --------------- .../ClusterServiceIntegrationTest.java | 35 --- .../StudentGradeServiceIntegrationTest.java | 150 ----------- .../couchbase/n1ql/IntegrationTestConfig.java | 26 -- .../couchbase/n1ql/N1QLIntegrationTest.java | 248 ------------------ .../couchbase/spring/IntegrationTest.java | 13 - .../spring/IntegrationTestConfig.java | 9 - .../PersonCrudServiceIntegrationTest.java | 75 ------ .../ClusterServiceIntegrationTest.java | 34 --- couchbase-sdk/src/test/resources/logback.xml | 19 -- 52 files changed, 2696 deletions(-) delete mode 100644 couchbase-sdk/.gitignore delete mode 100644 couchbase-sdk/README.md delete mode 100755 couchbase-sdk/mvnw delete mode 100644 couchbase-sdk/mvnw.cmd delete mode 100644 couchbase-sdk/pom.xml delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/Person.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/BucketService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/CrudService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/Person.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java delete mode 100644 couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java delete mode 100644 couchbase-sdk/src/main/resources/application.properties delete mode 100644 couchbase-sdk/src/main/resources/logback.xml delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java delete mode 100644 couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java delete mode 100644 couchbase-sdk/src/test/resources/logback.xml diff --git a/couchbase-sdk/.gitignore b/couchbase-sdk/.gitignore deleted file mode 100644 index f6867e01bd..0000000000 --- a/couchbase-sdk/.gitignore +++ /dev/null @@ -1,6 +0,0 @@ -# Created by .ignore support plugin (hsz.mobi) - -# IntelliJ project files -.idea -*.iml -/target/ diff --git a/couchbase-sdk/README.md b/couchbase-sdk/README.md deleted file mode 100644 index f124a0192c..0000000000 --- a/couchbase-sdk/README.md +++ /dev/null @@ -1,51 +0,0 @@ -## Couchbase SDK Tutorial Project - -### Relevant Articles: -- [Introduction to Couchbase SDK for Java](http://www.baeldung.com/java-couchbase-sdk) -- [Using Couchbase in a Spring Application](http://www.baeldung.com/couchbase-sdk-spring) -- [Asynchronous Batch Opereations in Couchbase](http://www.baeldung.com/async-batch-operations-in-couchbase) -- [Querying Couchbase with MapReduce Views](http://www.baeldung.com/couchbase-query-mapreduce-view) - -### Overview -This Maven project contains the Java code for the Couchbase entities and Spring services -as described in the tutorials, as well as a unit/integration test -for each service implementation. - -### Working with the Code -The project was developed and tested using Java 7 and 8 in the Eclipse-based -Spring Source Toolkit (STS) and therefore should run fine in any -recent version of Eclipse or another IDE of your choice -that supports Java 7 or later. - -### Building the Project -You can also build the project using Maven outside of any IDE: -``` -mvn clean install -``` - -### Package Organization -Java classes for the intro tutorial are in the -org.baeldung.couchbase.intro package. - -Java classes for the Spring service tutorial are in the -org.baeldung.couchbase.spring package hierarchy. - -Java classes for the Asynchronous Couchbase tutorial are in the -org.baeldung.couchbase.async package hierarchy. - - -### Running the tests -The test classes for the Spring service tutorial are: -- org.baeldung.couchbase.spring.service.ClusterServiceTest -- org.baeldung.couchbase.spring.person.PersonCrudServiceTest - -The test classes for the Asynchronous Couchbase tutorial are in the -org.baeldung.couchbase.async package hierarchy: -- org.baeldung.couchbase.async.service.ClusterServiceTest -- org.baeldung.couchbase.async.person.PersonCrudServiceTest - -The test classes may be run as JUnit tests from your IDE -or using the Maven command line: -``` -mvn test -``` diff --git a/couchbase-sdk/mvnw b/couchbase-sdk/mvnw deleted file mode 100755 index a1ba1bf554..0000000000 --- a/couchbase-sdk/mvnw +++ /dev/null @@ -1,233 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# 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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven2 Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # - # Look for the Apple JDKs first to preserve the existing behaviour, and then look - # for the new JDKs provided by Oracle. - # - if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then - # - # Apple JDKs - # - export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then - # - # Apple JDKs - # - export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then - # - # Oracle JDKs - # - export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home - fi - - if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then - # - # Apple JDKs - # - export JAVA_HOME=`/usr/libexec/java_home` - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi - -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# For Migwn, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="`which java`" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` -fi - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - local basedir=$(pwd) - local wdir=$(pwd) - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - wdir=$(cd "$wdir/.."; pwd) - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# Provide a "standardized" way to retrieve the CLI args that will -# work with both Windows and non-Windows executions. -MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" -export MAVEN_CMD_LINE_ARGS - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} "$@" diff --git a/couchbase-sdk/mvnw.cmd b/couchbase-sdk/mvnw.cmd deleted file mode 100644 index 2b934e89dd..0000000000 --- a/couchbase-sdk/mvnw.cmd +++ /dev/null @@ -1,145 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven2 Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -set MAVEN_CMD_LINE_ARGS=%* - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" - -set WRAPPER_JAR="".\.mvn\wrapper\maven-wrapper.jar"" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% \ No newline at end of file diff --git a/couchbase-sdk/pom.xml b/couchbase-sdk/pom.xml deleted file mode 100644 index 819c53b038..0000000000 --- a/couchbase-sdk/pom.xml +++ /dev/null @@ -1,82 +0,0 @@ - - - 4.0.0 - com.baeldung - couchbase-sdk - 0.1-SNAPSHOT - jar - couchbase-sdk - Couchbase SDK Tutorials - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - - com.couchbase.client - java-client - ${couchbase.client.version} - - - - com.fasterxml.jackson.core - jackson-databind - ${jackson-version} - - - - - org.springframework - spring-context - ${spring-framework.version} - - - commons-logging - commons-logging - - - - - org.springframework - spring-context-support - ${spring-framework.version} - - - commons-logging - commons-logging - - - - - - - org.springframework - spring-test - ${spring-framework.version} - test - - - - - org.apache.commons - commons-lang3 - ${commons-lang3.version} - test - - - - - 1.8 - UTF-8 - 2.5.0 - 4.3.5.RELEASE - 3.5 - 2.9.1 - - - diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java deleted file mode 100644 index 8f459e364f..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/CouchbaseEntity.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.couchbase.async; - -public interface CouchbaseEntity { - - String getId(); - - void setId(String id); - -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/Person.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/Person.java deleted file mode 100644 index f1135a32a2..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/Person.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.baeldung.couchbase.async.person; - -import com.baeldung.couchbase.async.CouchbaseEntity; - -public class Person implements CouchbaseEntity { - - private String id; - private String type; - private String name; - private String homeTown; - - Person() { - } - - public Person(Builder b) { - this.id = b.id; - this.type = b.type; - this.name = b.name; - this.homeTown = b.homeTown; - } - - @Override - public String getId() { - return id; - } - - @Override - public void setId(String id) { - this.id = id; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getHomeTown() { - return homeTown; - } - - public void setHomeTown(String homeTown) { - this.homeTown = homeTown; - } - - public static class Builder { - private String id; - private String type; - private String name; - private String homeTown; - - public static Builder newInstance() { - return new Builder(); - } - - public Person build() { - return new Person(this); - } - - public Builder id(String id) { - this.id = id; - return this; - } - - public Builder type(String type) { - this.type = type; - return this; - } - - public Builder name(String name) { - this.name = name; - return this; - } - - public Builder homeTown(String homeTown) { - this.homeTown = homeTown; - return this; - } - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java deleted file mode 100644 index 407bc7ee1c..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonCrudService.java +++ /dev/null @@ -1,24 +0,0 @@ -package com.baeldung.couchbase.async.person; - -import javax.annotation.PostConstruct; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -import com.baeldung.couchbase.async.service.AbstractCrudService; -import com.baeldung.couchbase.async.service.BucketService; - -@Service -public class PersonCrudService extends AbstractCrudService { - - @Autowired - public PersonCrudService(@Qualifier("TutorialBucketService") BucketService bucketService, PersonDocumentConverter converter) { - super(bucketService, converter); - } - - @PostConstruct - private void init() { - loadBucket(); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java deleted file mode 100644 index 0f08679ace..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/PersonDocumentConverter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.couchbase.async.person; - -import org.springframework.stereotype.Service; - -import com.baeldung.couchbase.async.service.JsonDocumentConverter; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.document.json.JsonObject; - -@Service -public class PersonDocumentConverter implements JsonDocumentConverter { - - @Override - public JsonDocument toDocument(Person p) { - JsonObject content = JsonObject.empty().put("type", "Person").put("name", p.getName()).put("homeTown", p.getHomeTown()); - return JsonDocument.create(p.getId(), content); - } - - @Override - public Person fromDocument(JsonDocument doc) { - JsonObject content = doc.content(); - Person p = new Person(); - p.setId(doc.id()); - p.setType("Person"); - p.setName(content.getString("name")); - p.setHomeTown(content.getString("homeTown")); - return p; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java deleted file mode 100644 index 7cbc3625db..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/person/RegistrationService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.couchbase.async.person; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.couchbase.client.core.CouchbaseException; - -@Service -public class RegistrationService { - - @Autowired - private PersonCrudService crud; - - public void registerNewPerson(String name, String homeTown) { - Person person = new Person(); - person.setName(name); - person.setHomeTown(homeTown); - crud.create(person); - } - - public Person findRegistrant(String id) { - try { - return crud.read(id); - } catch (CouchbaseException e) { - return crud.readFromReplica(id); - } - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java deleted file mode 100644 index 1180ea00a6..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractBucketService.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import com.couchbase.client.java.Bucket; - -public abstract class AbstractBucketService implements BucketService { - - private ClusterService clusterService; - - private Bucket bucket; - - protected void openBucket() { - bucket = clusterService.openBucket(getBucketName(), getBucketPassword()); - } - - protected abstract String getBucketName(); - - protected abstract String getBucketPassword(); - - public AbstractBucketService(ClusterService clusterService) { - this.clusterService = clusterService; - } - - @Override - public Bucket getBucket() { - return bucket; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java deleted file mode 100644 index 089cc55d5d..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/AbstractCrudService.java +++ /dev/null @@ -1,142 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; -import java.util.concurrent.TimeUnit; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.baeldung.couchbase.async.CouchbaseEntity; -import com.couchbase.client.core.BackpressureException; -import com.couchbase.client.core.time.Delay; -import com.couchbase.client.java.AsyncBucket; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.ReplicaMode; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.util.retry.RetryBuilder; - -import rx.Observable; -import rx.functions.Action1; -import rx.functions.Func1; - -public abstract class AbstractCrudService implements CrudService { - - private static final Logger logger = LoggerFactory.getLogger(AbstractCrudService.class); - - private BucketService bucketService; - private Bucket bucket; - private JsonDocumentConverter converter; - - public AbstractCrudService(BucketService bucketService, JsonDocumentConverter converter) { - this.bucketService = bucketService; - this.converter = converter; - } - - protected void loadBucket() { - bucket = bucketService.getBucket(); - } - - @Override - public void create(T t) { - if (t.getId() == null) { - t.setId(UUID.randomUUID().toString()); - } - JsonDocument doc = converter.toDocument(t); - bucket.insert(doc); - } - - @Override - public T read(String id) { - JsonDocument doc = bucket.get(id); - return (doc == null ? null : converter.fromDocument(doc)); - } - - @Override - public T readFromReplica(String id) { - List docs = bucket.getFromReplica(id, ReplicaMode.FIRST); - return (docs.isEmpty() ? null : converter.fromDocument(docs.get(0))); - } - - @Override - public void update(T t) { - JsonDocument doc = converter.toDocument(t); - bucket.upsert(doc); - } - - @Override - public void delete(String id) { - bucket.remove(id); - } - - @Override - public List readBulk(Iterable ids) { - final AsyncBucket asyncBucket = bucket.async(); - Observable asyncOperation = Observable.from(ids).flatMap(new Func1>() { - public Observable call(String key) { - return asyncBucket.get(key); - } - }); - - final List items = new ArrayList(); - try { - asyncOperation.toBlocking().forEach(new Action1() { - public void call(JsonDocument doc) { - T item = converter.fromDocument(doc); - items.add(item); - } - }); - } catch (Exception e) { - logger.error("Error during bulk get", e); - } - - return items; - } - - @Override - public void createBulk(Iterable items) { - final AsyncBucket asyncBucket = bucket.async(); - Observable.from(items).flatMap(new Func1>() { - @SuppressWarnings("unchecked") - @Override - public Observable call(final T t) { - if (t.getId() == null) { - t.setId(UUID.randomUUID().toString()); - } - JsonDocument doc = converter.toDocument(t); - return asyncBucket.insert(doc).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build()); - } - }).last().toBlocking().single(); - } - - @Override - public void updateBulk(Iterable items) { - final AsyncBucket asyncBucket = bucket.async(); - Observable.from(items).flatMap(new Func1>() { - @SuppressWarnings("unchecked") - @Override - public Observable call(final T t) { - JsonDocument doc = converter.toDocument(t); - return asyncBucket.upsert(doc).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build()); - } - }).last().toBlocking().single(); - } - - @Override - public void deleteBulk(Iterable ids) { - final AsyncBucket asyncBucket = bucket.async(); - Observable.from(ids).flatMap(new Func1>() { - @SuppressWarnings("unchecked") - @Override - public Observable call(String key) { - return asyncBucket.remove(key).retryWhen(RetryBuilder.anyOf(BackpressureException.class).delay(Delay.exponential(TimeUnit.MILLISECONDS, 100)).max(10).build()); - } - }).last().toBlocking().single(); - } - - @Override - public boolean exists(String id) { - return bucket.exists(id); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/BucketService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/BucketService.java deleted file mode 100644 index 28470be99f..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/BucketService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import com.couchbase.client.java.Bucket; - -public interface BucketService { - - Bucket getBucket(); -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java deleted file mode 100644 index 7bf891244f..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterService.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import com.couchbase.client.java.Bucket; - -public interface ClusterService { - - Bucket openBucket(String name, String password); -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java deleted file mode 100644 index e708922988..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/ClusterServiceImpl.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import javax.annotation.PostConstruct; - -import org.springframework.stereotype.Service; - -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.Cluster; -import com.couchbase.client.java.CouchbaseCluster; -import com.couchbase.client.java.env.CouchbaseEnvironment; -import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; - -@Service -public class ClusterServiceImpl implements ClusterService { - - private Cluster cluster; - private Map buckets = new ConcurrentHashMap<>(); - - @PostConstruct - private void init() { - CouchbaseEnvironment env = DefaultCouchbaseEnvironment.create(); - cluster = CouchbaseCluster.create(env, "localhost"); - } - - @Override - synchronized public Bucket openBucket(String name, String password) { - if (!buckets.containsKey(name)) { - Bucket bucket = cluster.openBucket(name, password); - buckets.put(name, bucket); - } - return buckets.get(name); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/CrudService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/CrudService.java deleted file mode 100644 index 5bd0e52214..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/CrudService.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import java.util.List; - -public interface CrudService { - - void create(T t); - - T read(String id); - - T readFromReplica(String id); - - void update(T t); - - void delete(String id); - - List readBulk(Iterable ids); - - void createBulk(Iterable items); - - void updateBulk(Iterable items); - - void deleteBulk(Iterable ids); - - boolean exists(String id); -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java deleted file mode 100644 index 193e91016a..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/JsonDocumentConverter.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import com.couchbase.client.java.document.JsonDocument; - -public interface JsonDocumentConverter { - - JsonDocument toDocument(T t); - - T fromDocument(JsonDocument doc); -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java deleted file mode 100644 index 459585d995..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/async/service/TutorialBucketService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import javax.annotation.PostConstruct; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -@Service -@Qualifier("TutorialBucketService") -public class TutorialBucketService extends AbstractBucketService { - - @PostConstruct - void init() { - openBucket(); - } - - @Autowired - public TutorialBucketService(ClusterService clusterService) { - super(clusterService); - } - - @Override - protected String getBucketName() { - return "baeldung-tutorial"; - } - - @Override - protected String getBucketPassword() { - return ""; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java deleted file mode 100644 index e7bddc6442..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/intro/CodeSnippets.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.baeldung.couchbase.intro; - -import java.util.List; -import java.util.UUID; - -import com.couchbase.client.core.CouchbaseException; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.Cluster; -import com.couchbase.client.java.CouchbaseCluster; -import com.couchbase.client.java.ReplicaMode; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.document.json.JsonObject; -import com.couchbase.client.java.env.CouchbaseEnvironment; -import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; - -public class CodeSnippets { - - static Cluster loadClusterWithDefaultEnvironment() { - return CouchbaseCluster.create("localhost"); - } - - static Cluster loadClusterWithCustomEnvironment() { - CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder().connectTimeout(10000).kvTimeout(3000).build(); - return CouchbaseCluster.create(env, "localhost"); - } - - static Bucket loadDefaultBucketWithBlankPassword(Cluster cluster) { - return cluster.openBucket(); - } - - static Bucket loadBaeldungBucket(Cluster cluster) { - return cluster.openBucket("baeldung", ""); - } - - static JsonDocument insertExample(Bucket bucket) { - JsonObject content = JsonObject.empty().put("name", "John Doe").put("type", "Person").put("email", "john.doe@mydomain.com").put("homeTown", "Chicago"); - String id = UUID.randomUUID().toString(); - JsonDocument document = JsonDocument.create(id, content); - JsonDocument inserted = bucket.insert(document); - return inserted; - } - - static JsonDocument retrieveAndUpsertExample(Bucket bucket, String id) { - JsonDocument document = bucket.get(id); - JsonObject content = document.content(); - content.put("homeTown", "Kansas City"); - JsonDocument upserted = bucket.upsert(document); - return upserted; - } - - static JsonDocument replaceExample(Bucket bucket, String id) { - JsonDocument document = bucket.get(id); - JsonObject content = document.content(); - content.put("homeTown", "Milwaukee"); - JsonDocument replaced = bucket.replace(document); - return replaced; - } - - static JsonDocument removeExample(Bucket bucket, String id) { - JsonDocument removed = bucket.remove(id); - return removed; - } - - static JsonDocument getFirstFromReplicaExample(Bucket bucket, String id) { - try { - return bucket.get(id); - } catch (CouchbaseException e) { - List list = bucket.getFromReplica(id, ReplicaMode.FIRST); - if (!list.isEmpty()) { - return list.get(0); - } - } - return null; - } - - static JsonDocument getLatestReplicaVersion(Bucket bucket, String id) { - long maxCasValue = -1; - JsonDocument latest = null; - for (JsonDocument replica : bucket.getFromReplica(id, ReplicaMode.ALL)) { - if (replica.cas() > maxCasValue) { - latest = replica; - maxCasValue = replica.cas(); - } - } - return latest; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java deleted file mode 100644 index 9ac1bbb3f7..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/CouchbaseKeyGenerator.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -public interface CouchbaseKeyGenerator { - - String generateKey(T t); -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java deleted file mode 100644 index 78baaa155c..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/DuplicateKeyException.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -@SuppressWarnings("serial") -public class DuplicateKeyException extends Exception { - - public DuplicateKeyException(String s) { - super(s); - } - -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java deleted file mode 100644 index 9baf4a4f43..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/RandomUUIDGenerator.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -import java.util.UUID; - -public class RandomUUIDGenerator implements CouchbaseKeyGenerator { - - @Override - public String generateKey(T t) { - return UUID.randomUUID().toString(); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java deleted file mode 100644 index 846aba716a..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGrade.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -public class StudentGrade { - - private String name; - private String course; - private Integer grade; - private Integer hours; - - public StudentGrade() { } - - public StudentGrade(String name, String course, Integer grade, Integer hours) { - this.name = name; - this.course = course; - this.grade = grade; - this.hours = hours; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getCourse() { - return course; - } - - public void setCourse(String course) { - this.course = course; - } - - public Integer getGrade() { - return grade; - } - - public void setGrade(Integer grade) { - this.grade = grade; - } - - public Integer getHours() { - return hours; - } - - public void setHours(Integer hours) { - this.hours = hours; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java deleted file mode 100644 index 680e37ba57..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeKeyGenerator.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -public class StudentGradeKeyGenerator implements CouchbaseKeyGenerator { - - @Override - public String generateKey(StudentGrade g) { - return g.getName() + ":" + g.getCourse(); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java deleted file mode 100644 index 37bb03645a..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeQueryBuilder.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -import com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper; -import com.couchbase.client.java.document.json.JsonArray; -import com.couchbase.client.java.view.ViewQuery; - -public class StudentGradeQueryBuilder { - - final ObjectMapper om = new ObjectMapper(); - - public ViewQuery findAll() { - return ViewQuery.from("studentGrades", "findByCourse"); - } - - public ViewQuery findByCourse(String course) { - return ViewQuery.from("studentGrades", "findByCourse") - .key(course); - } - - public ViewQuery findByCourses(String... courses) { - return ViewQuery.from("studentGrades", "findByCourse") - .keys(JsonArray.from(courses)); - } - - public ViewQuery findByGradeInRange(int lower, int upper, boolean inclusiveEnd) { - return ViewQuery.from("studentGrades", "findByGrade") - .startKey(lower) - .endKey(upper) - .inclusiveEnd(inclusiveEnd); - } - - public ViewQuery findByGradeLessThan(int upper) { - return ViewQuery.from("studentGrades", "findByGrade") - .endKey(upper) - .inclusiveEnd(false); - } - - public ViewQuery findByGradeGreaterThan(int lower) { - return ViewQuery.from("studentGrades", "findByGrade") - .startKey(lower); - } - - public ViewQuery findByCourseAndGradeInRange(String course, int minGrade, int maxGrade, boolean inclusiveEnd) { - return ViewQuery.from("studentGrades", "findByCourseAndGrade") - .startKey(JsonArray.from(course, minGrade)) - .endKey(JsonArray.from(course, maxGrade)) - .inclusiveEnd(inclusiveEnd); - } - - public ViewQuery findTopGradesByCourse(String course, int limit) { - return ViewQuery.from("studentGrades", "findByCourseAndGrade") - .startKey(JsonArray.from(course, 100)) - .endKey(JsonArray.from(course, 0)) - .inclusiveEnd(true) - .descending() - .limit(limit); - } - - public ViewQuery countStudentsByCourse() { - return ViewQuery.from("studentGrades", "countStudentsByCourse") - .reduce() - .groupLevel(1); - } - - public ViewQuery sumCreditsByStudent() { - return ViewQuery.from("studentGrades", "sumCreditsByStudent") - .reduce() - .groupLevel(1); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java deleted file mode 100644 index 2d2c63f699..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/mapreduce/StudentGradeService.java +++ /dev/null @@ -1,169 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import com.couchbase.client.deps.com.fasterxml.jackson.databind.ObjectMapper; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.CouchbaseCluster; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.document.json.JsonArray; -import com.couchbase.client.java.document.json.JsonObject; -import com.couchbase.client.java.view.ViewQuery; -import com.couchbase.client.java.view.ViewResult; -import com.couchbase.client.java.view.ViewRow; - -public class StudentGradeService { - - final CouchbaseKeyGenerator keyGenerator; - final CouchbaseCluster cluster; - final Bucket bucket; - final ObjectMapper om = new ObjectMapper(); - final StudentGradeQueryBuilder queryBuilder; - - public StudentGradeService(CouchbaseKeyGenerator keyGenerator) { - this.keyGenerator = keyGenerator; - this.queryBuilder = new StudentGradeQueryBuilder(); - cluster = CouchbaseCluster.create("127.0.0.1"); - bucket = cluster.openBucket("baeldung-tutorial"); - } - - public String insert(StudentGrade studentGrade) throws DuplicateKeyException { - String id = keyGenerator.generateKey(studentGrade); - if(bucket.exists(id)) { - throw new DuplicateKeyException("document already exists with key " + id); - } - JsonObject content = JsonObject.empty() - .put("type", "StudentGrade") - .put("name", studentGrade.getName()) - .put("course", studentGrade.getCourse()) - .put("grade", studentGrade.getGrade()) - .put("hours", studentGrade.getHours()); - JsonDocument doc = JsonDocument.create(id, content); - bucket.insert(doc); - return id; - } - - public List findAll() { - ViewQuery query = queryBuilder.findAll(); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - private List extractDocuments(ViewResult result) { - List docs = new ArrayList<>(); - for(ViewRow row : result.allRows()) { - JsonDocument doc = row.document(); - docs.add(doc); - } - return docs; - } - - public List findByCourse(String course) { - ViewQuery query = queryBuilder.findByCourse(course); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - public List findByCourses(String... courses) { - ViewQuery query = queryBuilder.findByCourses(courses); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - public List findByGradeInRange(int lower, int upper, boolean inclusiveEnd) { - ViewQuery query = queryBuilder.findByGradeInRange(lower, upper, inclusiveEnd); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - public List findByGradeLessThan(int upper) { - ViewQuery query = queryBuilder.findByGradeLessThan(upper); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - public List findByGradeGreaterThan(int lower) { - ViewQuery query = queryBuilder.findByGradeGreaterThan(lower); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - public List findByCourseAndGradeInRange(String course, int minGrade, int maxGrade, boolean inclusiveEnd) { - ViewQuery query = queryBuilder.findByCourseAndGradeInRange(course, minGrade, maxGrade, inclusiveEnd); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - public List findTopGradesByCourse(String course, int limit) { - ViewQuery query = queryBuilder.findTopGradesByCourse(course, limit); - ViewResult result = bucket.query(query); - return extractDocuments(result); - } - - public Map countStudentsByCourse() { - ViewQuery query = ViewQuery.from("studentGrades", "countStudentsByCourse") - .reduce() - .groupLevel(1); - ViewResult result = bucket.query(query); - - Map numStudentsByCourse = new HashMap<>(); - for(ViewRow row : result.allRows()) { - JsonArray keyArray = (JsonArray) row.key(); - String course = keyArray.getString(0); - long count = Long.valueOf(row.value().toString()); - numStudentsByCourse.put(course, count); - } - - return numStudentsByCourse; - } - - public Map sumCreditHoursByStudent() { - ViewQuery query = ViewQuery.from("studentGrades", "sumHoursByStudent") - .reduce() - .groupLevel(1); - ViewResult result = bucket.query(query); - - Map creditHoursByStudent = new HashMap<>(); - for(ViewRow row : result.allRows()) { - String course = (String) row.key(); - long sum = Long.valueOf(row.value().toString()); - creditHoursByStudent.put(course, sum); - } - - return creditHoursByStudent; - } - - public Map sumGradePointsByStudent() { - ViewQuery query = ViewQuery.from("studentGrades", "sumGradePointsByStudent") - .reduce() - .groupLevel(1); - ViewResult result = bucket.query(query); - - Map gradePointsByStudent = new HashMap<>(); - for(ViewRow row : result.allRows()) { - String course = (String) row.key(); - long sum = Long.valueOf(row.value().toString()); - gradePointsByStudent.put(course, sum); - } - - return gradePointsByStudent; - } - - public Map calculateGpaByStudent() { - Map creditHoursByStudent = sumCreditHoursByStudent(); - Map gradePointsByStudent = sumGradePointsByStudent(); - - Map result = new HashMap<>(); - for(Entry creditHoursEntry : creditHoursByStudent.entrySet()) { - String name = creditHoursEntry.getKey(); - long totalHours = creditHoursEntry.getValue(); - long totalGradePoints = gradePointsByStudent.get(name); - result.put(name, ((float) totalGradePoints / totalHours)); - } - return result; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java deleted file mode 100644 index 98fbe17e60..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/BucketFactory.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.couchbase.n1ql; - -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.Cluster; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -@Service -public class BucketFactory { - - @Autowired - private Cluster cluster; - - private Bucket travelSampleBucket; - private Bucket testBucket; - - public Bucket getTravelSampleBucket() { - return (travelSampleBucket != null) ? - travelSampleBucket : cluster.openBucket("travel-sample"); - } - - public Bucket getTestBucket() { - return (testBucket != null) ? - testBucket : cluster.openBucket("test"); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java deleted file mode 100644 index 45067911cb..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/n1ql/CodeSnippets.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.couchbase.n1ql; - -import com.couchbase.client.java.query.N1qlQueryResult; -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; - -import java.io.IOException; -import java.util.List; -import java.util.Objects; -import java.util.logging.Level; -import java.util.logging.Logger; -import java.util.stream.Collectors; - -public class CodeSnippets { - - private static ObjectMapper objectMapper = new ObjectMapper(); - - private static final Logger logger = Logger.getLogger(CodeSnippets.class.getName()); - - public static List extractJsonResult(N1qlQueryResult result) { - return result.allRows().stream() - .map(row -> { - try { - return objectMapper.readTree(row.value().toString()); - }catch (IOException e) { - logger.log(Level.WARNING, e.getLocalizedMessage()); - return null; - } - }) - .filter(Objects::nonNull) - .collect(Collectors.toList()); - } - -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/Person.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/Person.java deleted file mode 100644 index 403b7c8d3b..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/Person.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.baeldung.couchbase.spring.person; - -public class Person { - - private String id; - private String type; - private String name; - private String homeTown; - - Person() { - } - - public Person(Builder b) { - this.id = b.id; - this.type = b.type; - this.name = b.name; - this.homeTown = b.homeTown; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getType() { - return type; - } - - public void setType(String type) { - this.type = type; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getHomeTown() { - return homeTown; - } - - public void setHomeTown(String homeTown) { - this.homeTown = homeTown; - } - - public static class Builder { - private String id; - private String type; - private String name; - private String homeTown; - - public static Builder newInstance() { - return new Builder(); - } - - public Person build() { - return new Person(this); - } - - public Builder id(String id) { - this.id = id; - return this; - } - - public Builder type(String type) { - this.type = type; - return this; - } - - public Builder name(String name) { - this.name = name; - return this; - } - - public Builder homeTown(String homeTown) { - this.homeTown = homeTown; - return this; - } - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java deleted file mode 100644 index 163f6417ca..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonCrudService.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.baeldung.couchbase.spring.person; - -import java.util.List; -import java.util.UUID; - -import javax.annotation.PostConstruct; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.baeldung.couchbase.spring.service.CrudService; -import com.baeldung.couchbase.spring.service.TutorialBucketService; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.ReplicaMode; -import com.couchbase.client.java.document.JsonDocument; - -@Service -public class PersonCrudService implements CrudService { - - @Autowired - private TutorialBucketService bucketService; - - @Autowired - private PersonDocumentConverter converter; - - private Bucket bucket; - - @PostConstruct - private void init() { - bucket = bucketService.getBucket(); - } - - @Override - public void create(Person person) { - if (person.getId() == null) { - person.setId(UUID.randomUUID().toString()); - } - JsonDocument document = converter.toDocument(person); - bucket.insert(document); - } - - @Override - public Person read(String id) { - JsonDocument doc = bucket.get(id); - return (doc != null ? converter.fromDocument(doc) : null); - } - - @Override - public Person readFromReplica(String id) { - List docs = bucket.getFromReplica(id, ReplicaMode.FIRST); - return (docs.isEmpty() ? null : converter.fromDocument(docs.get(0))); - } - - @Override - public void update(Person person) { - JsonDocument document = converter.toDocument(person); - bucket.upsert(document); - } - - @Override - public void delete(String id) { - bucket.remove(id); - } - - @Override - public boolean exists(String id) { - return bucket.exists(id); - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java deleted file mode 100644 index 71108d16dd..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/PersonDocumentConverter.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.couchbase.spring.person; - -import org.springframework.stereotype.Service; - -import com.baeldung.couchbase.spring.service.JsonDocumentConverter; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.document.json.JsonObject; - -@Service -public class PersonDocumentConverter implements JsonDocumentConverter { - - @Override - public JsonDocument toDocument(Person p) { - JsonObject content = JsonObject.empty().put("type", "Person").put("name", p.getName()).put("homeTown", p.getHomeTown()); - return JsonDocument.create(p.getId(), content); - } - - @Override - public Person fromDocument(JsonDocument doc) { - JsonObject content = doc.content(); - Person p = new Person(); - p.setId(doc.id()); - p.setType("Person"); - p.setName(content.getString("name")); - p.setHomeTown(content.getString("homeTown")); - return p; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java deleted file mode 100644 index cad3bdd5a5..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/person/RegistrationService.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.baeldung.couchbase.spring.person; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import com.couchbase.client.core.CouchbaseException; - -@Service -public class RegistrationService { - - @Autowired - private PersonCrudService crud; - - public void registerNewPerson(String name, String homeTown) { - Person person = new Person(); - person.setName(name); - person.setHomeTown(homeTown); - crud.create(person); - } - - public Person findRegistrant(String id) { - try { - return crud.read(id); - } catch (CouchbaseException e) { - return crud.readFromReplica(id); - } - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java deleted file mode 100644 index 1ea9c72114..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/BucketService.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.couchbase.spring.service; - -import com.couchbase.client.java.Bucket; - -public interface BucketService { - - Bucket getBucket(); - -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java deleted file mode 100644 index da7a10141f..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterService.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.baeldung.couchbase.spring.service; - -import java.util.List; - -import com.couchbase.client.java.AsyncBucket; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.document.JsonDocument; - -public interface ClusterService { - - Bucket openBucket(String name, String password); - - List getDocuments(Bucket bucket, Iterable keys); - - List getDocumentsAsync(AsyncBucket bucket, Iterable keys); - -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java deleted file mode 100644 index 1cceb11ccc..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/ClusterServiceImpl.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.baeldung.couchbase.spring.service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.concurrent.ConcurrentHashMap; - -import javax.annotation.PostConstruct; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.stereotype.Service; - -import com.couchbase.client.java.AsyncBucket; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.Cluster; -import com.couchbase.client.java.CouchbaseCluster; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.env.CouchbaseEnvironment; -import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; - -import rx.Observable; -import rx.functions.Action1; -import rx.functions.Func1; - -@Service -public class ClusterServiceImpl implements ClusterService { - private static final Logger logger = LoggerFactory.getLogger(ClusterServiceImpl.class); - - private Cluster cluster; - private Map buckets = new ConcurrentHashMap<>(); - - @PostConstruct - private void init() { - CouchbaseEnvironment env = DefaultCouchbaseEnvironment.create(); - cluster = CouchbaseCluster.create(env, "localhost"); - } - - @Override - synchronized public Bucket openBucket(String name, String password) { - if (!buckets.containsKey(name)) { - Bucket bucket = cluster.openBucket(name, password); - buckets.put(name, bucket); - } - return buckets.get(name); - } - - @Override - public List getDocuments(Bucket bucket, Iterable keys) { - List docs = new ArrayList<>(); - for (String key : keys) { - JsonDocument doc = bucket.get(key); - if (doc != null) { - docs.add(doc); - } - } - return docs; - } - - @Override - public List getDocumentsAsync(final AsyncBucket asyncBucket, Iterable keys) { - Observable asyncBulkGet = Observable.from(keys).flatMap(new Func1>() { - public Observable call(String key) { - return asyncBucket.get(key); - } - }); - - final List docs = new ArrayList<>(); - try { - asyncBulkGet.toBlocking().forEach(new Action1() { - public void call(JsonDocument doc) { - docs.add(doc); - } - }); - } catch (Exception e) { - logger.error("Error during bulk get", e); - } - - return docs; - } -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java deleted file mode 100644 index 5b12af7003..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/CrudService.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.baeldung.couchbase.spring.service; - -public interface CrudService { - - void create(T t); - - T read(String id); - - T readFromReplica(String id); - - void update(T t); - - void delete(String id); - - boolean exists(String id); -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java deleted file mode 100644 index f63bb8691b..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/JsonDocumentConverter.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.baeldung.couchbase.spring.service; - -import com.couchbase.client.java.document.JsonDocument; - -public interface JsonDocumentConverter { - - JsonDocument toDocument(T t); - - T fromDocument(JsonDocument doc); -} diff --git a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java b/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java deleted file mode 100644 index b91c131912..0000000000 --- a/couchbase-sdk/src/main/java/com/baeldung/couchbase/spring/service/TutorialBucketService.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.baeldung.couchbase.spring.service; - -import javax.annotation.PostConstruct; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.stereotype.Service; - -import com.couchbase.client.java.Bucket; - -@Service -@Qualifier("TutorialBucketService") -public class TutorialBucketService implements BucketService { - - @Autowired - private ClusterService couchbase; - - private Bucket bucket; - - @PostConstruct - private void init() { - bucket = couchbase.openBucket("baeldung-tutorial", ""); - } - - @Override - public Bucket getBucket() { - return bucket; - } -} diff --git a/couchbase-sdk/src/main/resources/application.properties b/couchbase-sdk/src/main/resources/application.properties deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/couchbase-sdk/src/main/resources/logback.xml b/couchbase-sdk/src/main/resources/logback.xml deleted file mode 100644 index ec0dc2469a..0000000000 --- a/couchbase-sdk/src/main/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - web - %date [%thread] %-5level %logger{36} - %message%n - - - - - - - - - - - - - - \ No newline at end of file diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java deleted file mode 100644 index 3079fc928a..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.couchbase.async; - -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AsyncIntegrationTestConfig.class }) -@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) -public abstract class AsyncIntegrationTest { -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java deleted file mode 100644 index efc3e9957f..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/AsyncIntegrationTestConfig.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.couchbase.async; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -@Configuration -@ComponentScan(basePackages = { "com.baeldung.couchbase.async" }) -public class AsyncIntegrationTestConfig { -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java deleted file mode 100644 index 565aaed5da..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/person/PersonCrudServiceIntegrationTest.java +++ /dev/null @@ -1,216 +0,0 @@ -package com.baeldung.couchbase.async.person; - -import static org.junit.Assert.*; - -import java.util.ArrayList; -import java.util.List; -import java.util.UUID; - -import javax.annotation.PostConstruct; - -import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Qualifier; - -import com.baeldung.couchbase.async.AsyncIntegrationTest; -import com.baeldung.couchbase.async.person.Person; -import com.baeldung.couchbase.async.person.PersonCrudService; -import com.baeldung.couchbase.async.person.PersonDocumentConverter; -import com.baeldung.couchbase.async.service.BucketService; -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.document.JsonDocument; - -public class PersonCrudServiceIntegrationTest extends AsyncIntegrationTest { - - @Autowired - private PersonCrudService personService; - - @Autowired - @Qualifier("TutorialBucketService") - private BucketService bucketService; - - @Autowired - private PersonDocumentConverter converter; - - private Bucket bucket; - - @PostConstruct - private void init() { - bucket = bucketService.getBucket(); - } - - @Test - public final void givenRandomPerson_whenCreate_thenPersonPersisted() { - // create person - Person person = randomPerson(); - personService.create(person); - - // check results - assertNotNull(person.getId()); - assertNotNull(bucket.get(person.getId())); - - // cleanup - bucket.remove(person.getId()); - } - - @Test - public final void givenId_whenRead_thenReturnsPerson() { - // create and insert person document - String id = insertRandomPersonDocument().id(); - - // read person and check results - assertNotNull(personService.read(id)); - - // cleanup - bucket.remove(id); - } - - @Test - public final void givenNewHometown_whenUpdate_thenNewHometownPersisted() { - // create and insert person document - JsonDocument doc = insertRandomPersonDocument(); - - // update person - Person expected = converter.fromDocument(doc); - String updatedHomeTown = RandomStringUtils.randomAlphabetic(12); - expected.setHomeTown(updatedHomeTown); - personService.update(expected); - - // check results - JsonDocument actual = bucket.get(expected.getId()); - assertNotNull(actual); - assertNotNull(actual.content()); - assertEquals(expected.getHomeTown(), actual.content().getString("homeTown")); - - // cleanup - bucket.remove(expected.getId()); - } - - @Test - public final void givenRandomPerson_whenDelete_thenPersonNotInBucket() { - // create and insert person document - String id = insertRandomPersonDocument().id(); - - // delete person and check results - personService.delete(id); - assertNull(bucket.get(id)); - } - - @Test - public final void givenIds_whenReadBulk_thenReturnsOnlyPersonsWithMatchingIds() { - List ids = new ArrayList<>(); - - // add some person documents - for (int i = 0; i < 5; i++) { - ids.add(insertRandomPersonDocument().id()); - } - - // perform bulk read - List persons = personService.readBulk(ids); - - // check results - for (Person person : persons) { - assertTrue(ids.contains(person.getId())); - } - - // cleanup - for (String id : ids) { - bucket.remove(id); - } - } - - @Test - public final void givenPersons_whenInsertBulk_thenPersonsAreInserted() { - - // create some persons - List persons = new ArrayList<>(); - for (int i = 0; i < 5; i++) { - persons.add(randomPerson()); - } - - // perform bulk insert - personService.createBulk(persons); - - // check results - for (Person person : persons) { - assertNotNull(bucket.get(person.getId())); - } - - // cleanup - for (Person person : persons) { - bucket.remove(person.getId()); - } - } - - @Test - public final void givenPersons_whenUpdateBulk_thenPersonsAreUpdated() { - - List ids = new ArrayList<>(); - - // add some person documents - for (int i = 0; i < 5; i++) { - ids.add(insertRandomPersonDocument().id()); - } - - // load persons from Couchbase - List persons = new ArrayList<>(); - for (String id : ids) { - persons.add(converter.fromDocument(bucket.get(id))); - } - - // modify persons - for (Person person : persons) { - person.setHomeTown(RandomStringUtils.randomAlphabetic(10)); - } - - // perform bulk update - personService.updateBulk(persons); - - // check results - for (Person person : persons) { - JsonDocument doc = bucket.get(person.getId()); - assertEquals(person.getName(), doc.content().getString("name")); - assertEquals(person.getHomeTown(), doc.content().getString("homeTown")); - } - - // cleanup - for (String id : ids) { - bucket.remove(id); - } - } - - @Test - public void givenIds_whenDeleteBulk_thenPersonsAreDeleted() { - - List ids = new ArrayList<>(); - - // add some person documents - for (int i = 0; i < 5; i++) { - ids.add(insertRandomPersonDocument().id()); - } - - // perform bulk delete - personService.deleteBulk(ids); - - // check results - for (String id : ids) { - assertNull(bucket.get(id)); - } - - } - - private JsonDocument insertRandomPersonDocument() { - Person expected = randomPersonWithId(); - JsonDocument doc = converter.toDocument(expected); - return bucket.insert(doc); - } - - private Person randomPerson() { - return Person.Builder.newInstance().name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build(); - } - - private Person randomPersonWithId() { - return Person.Builder.newInstance().id(UUID.randomUUID().toString()).name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build(); - } -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java deleted file mode 100644 index d0db5d37a3..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/async/service/ClusterServiceIntegrationTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.baeldung.couchbase.async.service; - -import static org.junit.Assert.*; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; - -import com.baeldung.couchbase.async.AsyncIntegrationTest; -import com.baeldung.couchbase.async.AsyncIntegrationTestConfig; -import com.baeldung.couchbase.async.service.ClusterService; -import com.couchbase.client.java.Bucket; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { AsyncIntegrationTestConfig.class }) -@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) -public class ClusterServiceIntegrationTest extends AsyncIntegrationTest { - - @Autowired - private ClusterService couchbaseService; - - private Bucket defaultBucket; - - @Test - public void whenOpenBucket_thenBucketIsNotNull() throws Exception { - defaultBucket = couchbaseService.openBucket("default", ""); - assertNotNull(defaultBucket); - assertFalse(defaultBucket.isClosed()); - defaultBucket.close(); - } -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java deleted file mode 100644 index 00d462e32a..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/mapreduce/StudentGradeServiceIntegrationTest.java +++ /dev/null @@ -1,150 +0,0 @@ -package com.baeldung.couchbase.mapreduce; - -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.junit.BeforeClass; -import org.junit.Test; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.view.ViewResult; -import com.couchbase.client.java.view.ViewRow; - -public class StudentGradeServiceIntegrationTest { - private static final Logger logger = LoggerFactory.getLogger(StudentGradeServiceIntegrationTest.class); - - static StudentGradeService studentGradeService; - static Set gradeIds = new HashSet<>(); - - @BeforeClass - public static void setUpBeforeClass() throws Exception { - studentGradeService = new StudentGradeService(new StudentGradeKeyGenerator()); - insertStudentGrade(new StudentGrade("John Doe", "History", 80, 3)); - insertStudentGrade(new StudentGrade("Jane Doe", "History", 89, 3)); - insertStudentGrade(new StudentGrade("Bob Smith", "History", 90, 3)); - insertStudentGrade(new StudentGrade("Mary Jones", "History", 92, 3)); - insertStudentGrade(new StudentGrade("Jane Doe", "Math", 59, 3)); - insertStudentGrade(new StudentGrade("Bob Smith", "Math", 91, 3)); - insertStudentGrade(new StudentGrade("Mary Jones", "Math", 86, 3)); - insertStudentGrade(new StudentGrade("John Doe", "Science", 85, 4)); - insertStudentGrade(new StudentGrade("Bob Smith", "Science", 97, 4)); - insertStudentGrade(new StudentGrade("Mary Jones", "Science", 84, 4)); - } - - private static void insertStudentGrade(StudentGrade studentGrade) { - try { - String id = studentGradeService.insert(studentGrade); - gradeIds.add(id); - } catch (DuplicateKeyException e) { - } - } - - @Test - public final void whenFindAll_thenSuccess() { - List docs = studentGradeService.findAll(); - printDocuments(docs); - } - - @Test - public final void whenFindByCourse_thenSuccess() { - List docs = studentGradeService.findByCourse("History"); - printDocuments(docs); - } - - @Test - public final void whenFindByCourses_thenSuccess() { - List docs = studentGradeService.findByCourses("History", "Science"); - printDocuments(docs); - } - - @Test - public final void whenFindByGradeInRange_thenSuccess() { - List docs = studentGradeService.findByGradeInRange(80, 89, true); - printDocuments(docs); - } - - @Test - public final void whenFindByGradeLessThan_thenSuccess() { - List docs = studentGradeService.findByGradeLessThan(60); - printDocuments(docs); - } - - @Test - public final void whenFindByGradeGreaterThan_thenSuccess() { - List docs = studentGradeService.findByGradeGreaterThan(90); - printDocuments(docs); - } - - @Test - public final void whenFindByCourseAndGradeInRange_thenSuccess() { - List docs = studentGradeService.findByCourseAndGradeInRange("Math", 80, 89, true); - printDocuments(docs); - } - - @Test - public final void whenFindTopGradesByCourse_thenSuccess() { - List docs = studentGradeService.findTopGradesByCourse("Science", 2); - printDocuments(docs); - } - - @Test - public final void whenCountStudentsByCourse_thenSuccess() { - Map map = studentGradeService.countStudentsByCourse(); - printMap(map); - } - - @Test - public final void whenSumCreditHoursByStudent_thenSuccess() { - Map map = studentGradeService.sumCreditHoursByStudent(); - printMap(map); - } - - @Test - public final void whenSumGradePointsByStudent_thenSuccess() { - Map map = studentGradeService.sumGradePointsByStudent(); - printMap(map); - } - - @Test - public final void whenCalculateGpaByStudent_thenSuccess() { - Map map = studentGradeService.calculateGpaByStudent(); - printGpaMap(map); - } - - private void printMap(Map map) { - for(Map.Entry entry : map.entrySet()) { - logger.info(entry.getKey() + "=" + entry.getValue()); - } - } - - private void printGpaMap(Map map) { - for(Map.Entry entry : map.entrySet()) { - logger.info(entry.getKey() + "=" + entry.getValue()); - } - } - - private void printDocuments(List docs) { - for(JsonDocument doc : docs) { - String key = doc.id(); - logger.info(key + " = " + doc.content().toString()); - } - } - - private void printViewResultDocuments(ViewResult result) { - for(ViewRow row : result.allRows()) { - JsonDocument doc = row.document(); - String key = doc.id(); - logger.info(key + "=" + doc.content().toString()); - } - } - - private void printViewResultRows(ViewResult result) { - for(ViewRow row : result.allRows()) { - logger.info(row.toString()); - } - } -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java deleted file mode 100644 index ef7e31b224..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/IntegrationTestConfig.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.baeldung.couchbase.n1ql; - -import com.couchbase.client.java.Cluster; -import com.couchbase.client.java.CouchbaseCluster; -import com.couchbase.client.java.env.CouchbaseEnvironment; -import com.couchbase.client.java.env.DefaultCouchbaseEnvironment; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -import java.util.concurrent.TimeUnit; - -@Configuration -@ComponentScan(basePackages = { "com.baeldung.couchbase.n1ql" }) -public class IntegrationTestConfig { - - @Bean - public Cluster cluster() { - CouchbaseEnvironment env = DefaultCouchbaseEnvironment.builder() - .connectTimeout(60000) - .build(); - return CouchbaseCluster.create(env, "127.0.0.1"); - } - - -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java deleted file mode 100644 index 8112d7d222..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/n1ql/N1QLIntegrationTest.java +++ /dev/null @@ -1,248 +0,0 @@ -package com.baeldung.couchbase.n1ql; - -import com.couchbase.client.java.Bucket; -import com.couchbase.client.java.Cluster; -import com.couchbase.client.java.document.JsonDocument; -import com.couchbase.client.java.document.json.JsonArray; -import com.couchbase.client.java.document.json.JsonObject; -import com.couchbase.client.java.query.N1qlQuery; -import com.couchbase.client.java.query.N1qlQueryResult; -import com.couchbase.client.java.query.N1qlQueryRow; -import com.couchbase.client.java.query.Statement; -import com.fasterxml.jackson.databind.JsonNode; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import rx.Observable; - -import java.util.List; -import java.util.UUID; -import java.util.stream.Collectors; -import java.util.stream.IntStream; -import java.util.stream.Stream; - -import static com.baeldung.couchbase.n1ql.CodeSnippets.extractJsonResult; -import static com.couchbase.client.java.query.Select.select; -import static com.couchbase.client.java.query.dsl.Expression.*; -import static org.junit.Assert.assertNotNull; - - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { IntegrationTestConfig.class }) -public class N1QLIntegrationTest { - - - @Autowired - private Cluster cluster; - - @Autowired - private BucketFactory bucketFactory; - - @Test - public void givenAutowiredCluster_whenNotNull_thenNotNull() { - assertNotNull(cluster); - } - - @Test - public void givenBucketFactory_whenGetTestBucket_thenNotNull() { - assertNotNull(bucketFactory.getTestBucket()); - } - - @Test - public void givenBucketFactory_whenGetTravelSampleBucket_thenNotNull() { - assertNotNull(bucketFactory.getTravelSampleBucket()); - } - - @Test - public void givenDocument_whenInsert_thenResult() { - Bucket bucket = bucketFactory.getTestBucket(); - JsonObject personObj = JsonObject.create() - .put("name", "John") - .put("email", "john@doe.com") - .put("interests", JsonArray.from("Java", "Nigerian Jollof")); - - String id = UUID.randomUUID().toString(); - JsonDocument doc = JsonDocument.create(id, personObj); - bucket.insert(doc); - assertNotNull(bucket.get(id)); - } - - @Test - public void whenBasicSelectQuery_thenGetQueryResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - N1qlQueryResult result - = bucket.query(N1qlQuery.simple("SELECT * FROM test")); - - result.forEach(System.out::println); - - System.out.println("result count: " + result.info().resultCount()); - System.out.println("error count: " + result.info().errorCount()); - } - - @Test - public void givenSelectStatement_whenQuery_thenResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - String query = "SELECT name FROM `travel-sample` " + - "WHERE type = 'airport' LIMIT 100"; - N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query)); - - System.out.println("Result Count " + result1.info().resultCount()); - - N1qlQueryRow row = result1.allRows().get(0); - JsonObject rowJson = row.value(); - System.out.println("Name in First Row " + rowJson.get("name")); - - } - - @Test - public void givenSelectStatement2_whenQuery_thenResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - JsonObject pVal = JsonObject.create().put("type", "airport"); - String query = "SELECT * FROM `travel-sample` " + - "WHERE type = $type LIMIT 100"; - N1qlQueryResult r2 = bucket.query(N1qlQuery.parameterized(query, pVal)); - - System.out.println(r2.allRows()); - - List list = extractJsonResult(r2); - System.out.println( - list.get(0).get("travel-sample").get("airportname").asText()); - } - - @Test - public void givenSelectDSL_whenQuery_thenResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - Statement statement = select("*") - .from(i("travel-sample")) - .where(x("type").eq(s("airport"))) - .limit(100); - N1qlQueryResult r3 = bucket.query(N1qlQuery.simple(statement)); - - List list2 = extractJsonResult(r3); - System.out.println("First Airport Name: " + list2.get(0).get("travel-sample").get("airportname").asText()); - - } - - @Test - public void givenSelectStatementWithOperators_whenQuery_thenResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - String query2 = "SELECT t.city, " + - "t.airportname || \" (\" || t.faa || \")\" AS portname_faa " + - "FROM `travel-sample` t " + - "WHERE t.type=\"airport\"" + - "AND t.country LIKE '%States'" + - "AND t.geo.lat >= 70 " + - "LIMIT 2"; - N1qlQueryResult r4 = bucket.query(N1qlQuery.simple(query2)); - List list3 = extractJsonResult(r4); - System.out.println("First Doc : " + list3.get(0)); - } - - @Test - public void givenSelectStatementWithDSL2_whenQuery_thenResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - Statement st2 = select( - x("t.city, t.airportname") - .concat(s(" (")).concat(x("t.faa")).concat(s(")")).as("portname_faa")) - .from(i("travel-sample").as("t")) - .where( x("t.type").eq(s("airport")) - .and(x("t.country").like(s("%States"))) - .and(x("t.geo.lat").gte(70))) - .limit(2); - N1qlQueryResult r5 = bucket.query(N1qlQuery.simple(st2)); - List list5 = extractJsonResult(r5); - System.out.println("First Doc : " + list5.get(0)); - System.out.println("Query from Statement2: " + st2.toString()); - } - - @Test - public void givenInsertStatement_whenQuery_thenUpdate() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - String query = "INSERT INTO `travel-sample` (KEY, VALUE) " + - " VALUES(" + - "\"cust1293\", " + - "{\"id\":\"1293\",\"name\":\"Sample Airline\", \"type\":\"airline\"})" + - " RETURNING META().id as docid, *"; - N1qlQueryResult r1 = bucket.query(N1qlQuery.simple(query)); - r1.forEach(System.out::println); - } - - @Test - public void givenDocument_whenInsert_thenResults() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - JsonObject ob = JsonObject.create() - .put("id", "1293") - .put("name", "Sample Airline") - .put("type", "airline"); - bucket.insert(JsonDocument.create("cust1295", ob)); - } - - @Test - public void givenDocuments_whenBatchInsert_thenResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - - List documents = IntStream.rangeClosed(0,10) - .mapToObj( i -> { - JsonObject content = JsonObject.create() - .put("id", i) - .put("type", "airline") - .put("name", "Sample Airline " + i); - return JsonDocument.create("cust_" + i, content); - }) - .collect(Collectors.toList()); - - List r5 = Observable - .from(documents) - .flatMap(doc -> bucket.async().insert(doc)) - .toList() - .last() - .toBlocking() - .single(); - - r5.forEach(System.out::println); - } - - @Test - public void givenUpdateStatement_whenQuery_thenUpdate() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - String query2 = "UPDATE `travel-sample` USE KEYS \"cust_1\" " + - "SET name=\"Sample Airline Updated\" RETURNING name"; - N1qlQueryResult result = bucket.query(N1qlQuery.simple(query2)); - result.forEach(System.out::println); - } - - @Test - public void givenDocument_whenUpsert_thenUpdate() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - JsonObject o2 = JsonObject.create() - .put("name", "Sample Airline Updated"); - bucket.upsert(JsonDocument.create("cust_1", o2)); - } - - @Test - public void givenUnestUpdateStatement_whenQuery_thenResult() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - String query3 = "UPDATE `travel-sample` USE KEYS \"cust_2\" " + - "UNSET name RETURNING *"; - N1qlQueryResult result1 = bucket.query(N1qlQuery.simple(query3)); - result1.forEach(System.out::println); - } - - @Test - public void givenDeleteStatement_whenQuery_thenDelete() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - String query4 = "DELETE FROM `travel-sample` USE KEYS \"cust_50\""; - N1qlQueryResult result4 = bucket.query(N1qlQuery.simple(query4)); - } - - @Test - public void givenDeleteStatement2_whenQuery_thenDelete() { - Bucket bucket = bucketFactory.getTravelSampleBucket(); - String query5 = "DELETE FROM `travel-sample` WHERE id = 0 RETURNING *"; - N1qlQueryResult result5 = bucket.query(N1qlQuery.simple(query5)); - } - - -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java deleted file mode 100644 index 9c0b0a50c1..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTest.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.baeldung.couchbase.spring; - -import org.junit.runner.RunWith; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { IntegrationTestConfig.class }) -@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) -public abstract class IntegrationTest { -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java deleted file mode 100644 index d814b31a07..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/IntegrationTestConfig.java +++ /dev/null @@ -1,9 +0,0 @@ -package com.baeldung.couchbase.spring; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; - -@Configuration -@ComponentScan(basePackages = { "com.baeldung.couchbase.spring" }) -public class IntegrationTestConfig { -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java deleted file mode 100644 index ec15be1acc..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/person/PersonCrudServiceIntegrationTest.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.baeldung.couchbase.spring.person; - -import static org.junit.Assert.*; - -import javax.annotation.PostConstruct; - -import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Test; -import org.springframework.beans.factory.annotation.Autowired; - -import com.baeldung.couchbase.spring.IntegrationTest; - -public class PersonCrudServiceIntegrationTest extends IntegrationTest { - - private static final String CLARK_KENT = "Clark Kent"; - private static final String SMALLVILLE = "Smallville"; - private static final String CLARK_KENT_ID = "Person:ClarkKent"; - - private Person clarkKent; - - @Autowired - private PersonCrudService personService; - - @PostConstruct - private void init() { - clarkKent = personService.read(CLARK_KENT_ID); - if (clarkKent == null) { - clarkKent = buildClarkKent(); - personService.create(clarkKent); - } - } - - @Test - public final void givenRandomPerson_whenCreate_thenPersonPersisted() { - Person person = randomPerson(); - personService.create(person); - String id = person.getId(); - assertNotNull(personService.read(id)); - } - - @Test - public final void givenClarkKentId_whenRead_thenReturnsClarkKent() { - Person person = personService.read(CLARK_KENT_ID); - assertNotNull(person); - } - - @Test - public final void givenNewHometown_whenUpdate_thenNewHometownPersisted() { - Person expected = randomPerson(); - personService.create(expected); - String updatedHomeTown = RandomStringUtils.randomAlphabetic(12); - expected.setHomeTown(updatedHomeTown); - personService.update(expected); - Person actual = personService.read(expected.getId()); - assertNotNull(actual); - assertEquals(expected.getHomeTown(), actual.getHomeTown()); - } - - @Test - public final void givenRandomPerson_whenDelete_thenPersonNotInBucket() { - Person person = randomPerson(); - personService.create(person); - String id = person.getId(); - personService.delete(id); - assertNull(personService.read(id)); - } - - private Person buildClarkKent() { - return Person.Builder.newInstance().id(CLARK_KENT_ID).name(CLARK_KENT).homeTown(SMALLVILLE).build(); - } - - private Person randomPerson() { - return Person.Builder.newInstance().name(RandomStringUtils.randomAlphabetic(10)).homeTown(RandomStringUtils.randomAlphabetic(10)).build(); - } -} diff --git a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java b/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java deleted file mode 100644 index ead247dfbc..0000000000 --- a/couchbase-sdk/src/test/java/com/baeldung/couchbase/spring/service/ClusterServiceIntegrationTest.java +++ /dev/null @@ -1,34 +0,0 @@ -package com.baeldung.couchbase.spring.service; - -import static org.junit.Assert.*; - -import org.junit.Test; -import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.test.context.ContextConfiguration; -import org.springframework.test.context.TestExecutionListeners; -import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; -import org.springframework.test.context.support.DependencyInjectionTestExecutionListener; - -import com.baeldung.couchbase.spring.IntegrationTest; -import com.baeldung.couchbase.spring.IntegrationTestConfig; -import com.couchbase.client.java.Bucket; - -@RunWith(SpringJUnit4ClassRunner.class) -@ContextConfiguration(classes = { IntegrationTestConfig.class }) -@TestExecutionListeners(listeners = { DependencyInjectionTestExecutionListener.class }) -public class ClusterServiceIntegrationTest extends IntegrationTest { - - @Autowired - private ClusterService couchbaseService; - - private Bucket defaultBucket; - - @Test - public void whenOpenBucket_thenBucketIsNotNull() throws Exception { - defaultBucket = couchbaseService.openBucket("default", ""); - assertNotNull(defaultBucket); - assertFalse(defaultBucket.isClosed()); - defaultBucket.close(); - } -} diff --git a/couchbase-sdk/src/test/resources/logback.xml b/couchbase-sdk/src/test/resources/logback.xml deleted file mode 100644 index ec0dc2469a..0000000000 --- a/couchbase-sdk/src/test/resources/logback.xml +++ /dev/null @@ -1,19 +0,0 @@ - - - - - web - %date [%thread] %-5level %logger{36} - %message%n - - - - - - - - - - - - - - \ No newline at end of file From ca1d617520745af45678b1e73f9245b6394cd5a7 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Tue, 19 Sep 2017 13:31:08 +0100 Subject: [PATCH 27/42] change module name in parent module and pom --- couchbase/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/couchbase/pom.xml b/couchbase/pom.xml index 819c53b038..c79ce853d0 100644 --- a/couchbase/pom.xml +++ b/couchbase/pom.xml @@ -6,7 +6,7 @@ couchbase-sdk 0.1-SNAPSHOT jar - couchbase-sdk + couchbase Couchbase SDK Tutorials diff --git a/pom.xml b/pom.xml index 11737938a9..fac746f7df 100644 --- a/pom.xml +++ b/pom.xml @@ -45,7 +45,7 @@ core-java core-java-8 core-java-concurrency - couchbase-sdk + couchbase deltaspike dozer From d1c9a5691453eba089a8fc4173183d5fddf96cf2 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sat, 14 Oct 2017 13:41:27 +0100 Subject: [PATCH 28/42] added cas-server module --- cas-server/.gitignore | 14 ++ cas-server/LICENSE.txt | 202 +++++++++++++++ cas-server/README.md | 88 +++++++ cas-server/build.cmd | 82 ++++++ cas-server/build.sh | 97 ++++++++ cas-server/etc/cas/config/application.yml | 2 + cas-server/etc/cas/config/cas.properties | 7 + cas-server/etc/cas/config/log4j2.xml | 117 +++++++++ cas-server/etc/cas/thekeystore | Bin 0 -> 2225 bytes cas-server/etc/cas/thekeystore.crt | Bin 0 -> 808 bytes cas-server/maven/maven-wrapper.properties | 1 + cas-server/mvnw | 234 ++++++++++++++++++ cas-server/mvnw.bat | 174 +++++++++++++ cas-server/pom.xml | 158 ++++++++++++ .../src/main/resources/application.properties | 126 ++++++++++ cas-server/src/main/resources/cas.properties | 41 +++ .../resources/services/casSecuredApp.json | 8 + 17 files changed, 1351 insertions(+) create mode 100644 cas-server/.gitignore create mode 100644 cas-server/LICENSE.txt create mode 100644 cas-server/README.md create mode 100644 cas-server/build.cmd create mode 100644 cas-server/build.sh create mode 100644 cas-server/etc/cas/config/application.yml create mode 100644 cas-server/etc/cas/config/cas.properties create mode 100644 cas-server/etc/cas/config/log4j2.xml create mode 100644 cas-server/etc/cas/thekeystore create mode 100644 cas-server/etc/cas/thekeystore.crt create mode 100644 cas-server/maven/maven-wrapper.properties create mode 100644 cas-server/mvnw create mode 100644 cas-server/mvnw.bat create mode 100644 cas-server/pom.xml create mode 100644 cas-server/src/main/resources/application.properties create mode 100644 cas-server/src/main/resources/cas.properties create mode 100644 cas-server/src/main/resources/services/casSecuredApp.json diff --git a/cas-server/.gitignore b/cas-server/.gitignore new file mode 100644 index 0000000000..5304519922 --- /dev/null +++ b/cas-server/.gitignore @@ -0,0 +1,14 @@ +.classpath +!/.project +.project +.settings +target/ +.idea/ +.DS_Store +.idea +overlays/ +.gradle/ +build/ +bin/ +*.iml +*.log diff --git a/cas-server/LICENSE.txt b/cas-server/LICENSE.txt new file mode 100644 index 0000000000..d645695673 --- /dev/null +++ b/cas-server/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/cas-server/README.md b/cas-server/README.md new file mode 100644 index 0000000000..bae8b648e5 --- /dev/null +++ b/cas-server/README.md @@ -0,0 +1,88 @@ +CAS Overlay Template +============================ + +Generic CAS WAR overlay to exercise the latest versions of CAS. This overlay could be freely used as a starting template for local CAS war overlays. The CAS services management overlay is available [here](https://github.com/apereo/cas-services-management-overlay). + +# Versions + +```xml +5.1.x +``` + +# Requirements +* JDK 1.8+ + +# Configuration + +The `etc` directory contains the configuration files and directories that need to be copied to `/etc/cas/config`. + +# Build + +To see what commands are available to the build script, run: + +```bash +./build.sh help +``` + +To package the final web application, run: + +```bash +./build.sh package +``` + +To update `SNAPSHOT` versions run: + +```bash +./build.sh package -U +``` + +# Deployment + +- Create a keystore file `thekeystore` under `/etc/cas`. Use the password `changeit` for both the keystore and the key/certificate entries. +- Ensure the keystore is loaded up with keys and certificates of the server. + +On a successful deployment via the following methods, CAS will be available at: + +* `http://cas.server.name:8080/cas` +* `https://cas.server.name:8443/cas` + +## Executable WAR + +Run the CAS web application as an executable WAR. + +```bash +./build.sh run +``` + +## Spring Boot + +Run the CAS web application as an executable WAR via Spring Boot. This is most useful during development and testing. + +```bash +./build.sh bootrun +``` + +### Warning! + +Be careful with this method of deployment. `bootRun` is not designed to work with already executable WAR artifacts such that CAS server web application. YMMV. Today, uses of this mode ONLY work when there is **NO OTHER** dependency added to the build script and the `cas-server-webapp` is the only present module. See [this issue](https://github.com/apereo/cas/issues/2334) and [this issue](https://github.com/spring-projects/spring-boot/issues/8320) for more info. + + +## Spring Boot App Server Selection +There is an app.server property in the pom.xml that can be used to select a spring boot application server. +It defaults to "-tomcat" but "-jetty" and "-undertow" are supported. +It can also be set to an empty value (nothing) if you want to deploy CAS to an external application server of your choice and you don't want the spring boot libraries included. + +```xml +-tomcat +``` + +## Windows Build +If you are building on windows, try build.cmd instead of build.sh. Arguments are similar but for usage, run: + +``` +build.cmd help +``` + +## External + +Deploy resultant `target/cas.war` to a servlet container of choice. diff --git a/cas-server/build.cmd b/cas-server/build.cmd new file mode 100644 index 0000000000..f907dcb388 --- /dev/null +++ b/cas-server/build.cmd @@ -0,0 +1,82 @@ +@echo off + +@set JAVA_ARGS=-Xms500m -Xmx1g +@set CAS_DIR=\etc\cas +@set CONFIG_DIR=\etc\cas\config + +@rem Call this script with DNAME and CERT_SUBJ_ALT_NAMES already set to override +@if "%DNAME%" == "" set DNAME=CN=cas.example.org,OU=Example,OU=Org,C=US +@rem List other host names or ip addresses you want in your certificate, may help with host name verification, +@rem if client apps make https connection for ticket validation and compare name in cert (include sub. alt. names) +@rem to name used to access CAS +@if "%CERT_SUBJ_ALT_NAMES%" == "" set CERT_SUBJ_ALT_NAMES=dns:example.org,dns:localhost,dns:%COMPUTERNAME%,ip:127.0.0.1 + +@rem Check for mvn in path, use it if found, otherwise use maven wrapper +@set MAVEN_CMD=mvn +@where /q mvn +@if %ERRORLEVEL% neq 0 set MAVEN_CMD=.\mvnw.bat + +@if "%1" == "" call:help +@if "%1" == "copy" call:copy +@if "%1" == "clean" call:clean %2 %3 %4 +@if "%1" == "package" call:package %2 %3 %4 +@if "%1" == "bootrun" call:bootrun %2 %3 %4 +@if "%1" == "debug" call:debug %2 %3 %4 +@if "%1" == "run" call:run %2 %3 %4 +@if "%1" == "help" call:help +@if "%1" == "gencert" call:gencert + +@rem function section starts here +@goto:eof + +:copy + @echo "Creating configuration directory under %CONFIG_DIR%" + if not exist %CONFIG_DIR% mkdir %CONFIG_DIR% + + @echo "Copying configuration files from etc/cas to /etc/cas" + xcopy /S /Y etc\cas\* \etc\cas +@goto:eof + +:help + @echo "Usage: build.bat [copy|clean|package|run|debug|bootrun|gencert] [optional extra args for maven]" + @echo "To get started on a clean system, run "build.bat copy" and "build.bat gencert", then "build.bat run" + @echo "Note that using the copy or gencert arguments will create and/or overwrite the %CAS_DIR% which is outside this project" +@goto:eof + +:clean + call %MAVEN_CMD% clean %1 %2 %3 + exit /B %ERRORLEVEL% +@goto:eof + +:package + call %MAVEN_CMD% clean package -T 5 %1 %2 %3 + exit /B %ERRORLEVEL% +@goto:eof + +:bootrun + call %MAVEN_CMD% clean package spring-boot:run -T 5 %1 %2 %3 + exit /B %ERRORLEVEL% +@goto:eof + +:debug + call:package %1 %2 %3 & java %JAVA_ARGS% -Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n -jar target/cas.war +@goto:eof + +:run + call:package %1 %2 %3 & java %JAVA_ARGS% -jar target/cas.war +@goto:eof + +:gencert + where /q keytool + if ERRORLEVEL 1 ( + @echo Java keytool.exe not found in path. + exit /b 1 + ) else ( + if not exist %CAS_DIR% mkdir %CAS_DIR% + @echo on + @echo Generating self-signed SSL cert for %DNAME% in %CAS_DIR%\thekeystore + keytool -genkeypair -alias cas -keyalg RSA -keypass changeit -storepass changeit -keystore %CAS_DIR%\thekeystore -dname %DNAME% -ext SAN=%CERT_SUBJ_ALT_NAMES% + @echo Exporting cert for use in trust store (used by cas clients) + keytool -exportcert -alias cas -storepass changeit -keystore %CAS_DIR%\thekeystore -file %CAS_DIR%\cas.cer + ) +@goto:eof diff --git a/cas-server/build.sh b/cas-server/build.sh new file mode 100644 index 0000000000..e33f7de854 --- /dev/null +++ b/cas-server/build.sh @@ -0,0 +1,97 @@ +#!/bin/bash + + +function copy() { + echo -e "Creating configuration directory under /etc/cas" + mkdir -p /etc/cas/config + + echo -e "Copying configuration files from etc/cas to /etc/cas" + cp -rfv etc/cas/* /etc/cas +} + +function help() { + echo "Usage: build.sh [copy|clean|package|run|debug|bootrun|gencert]" + echo " copy: Copy config from ./etc/cas/config to /etc/cas/config" + echo " clean: Clean Maven build directory" + echo " package: Clean and build CAS war, also call copy" + echo " run: Build and run CAS.war via spring boot (java -jar target/cas.war)" + echo " debug: Run CAS.war and listen for Java debugger on port 5000" + echo " bootrun: Run with maven spring boot plugin, doesn't work with multiple dependencies" + echo " gencert: Create keystore with SSL certificate in location where CAS looks by default" +} + +function clean() { + ./mvnw clean "$@" +} + +function package() { + ./mvnw clean package -T 5 "$@" + copy +} + +function bootrun() { + ./mvnw clean package spring-boot:run -T 5 "$@" +} + +function debug() { + package && java -Xdebug -Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n -jar target/cas.war +} + +function run() { + package && java -jar target/cas.war +} + +function gencert() { + if [[ ! -d /etc/cas ]] ; then + copy + fi + which keytool + if [[ $? -ne 0 ]] ; then + echo Error: Java JDK \'keytool\' is not installed or is not in the path + exit 1 + fi + # override DNAME and CERT_SUBJ_ALT_NAMES before calling or use dummy values + DNAME="${DNAME:-CN=cas.example.org,OU=Example,OU=Org,C=US}" + CERT_SUBJ_ALT_NAMES="${CERT_SUBJ_ALT_NAMES:-dns:example.org,dns:localhost,ip:127.0.0.1}" + echo "Generating keystore for CAS with DN ${DNAME}" + keytool -genkeypair -alias cas -keyalg RSA -keypass changeit -storepass changeit -keystore /etc/cas/thekeystore -dname ${DNAME} -ext SAN=${CERT_SUBJ_ALT_NAMES} + keytool -exportcert -alias cas -storepass changeit -keystore /etc/cas/thekeystore -file /etc/cas/cas.cer +} + +if [ $# -eq 0 ]; then + echo -e "No commands provided. Defaulting to [run]\n" + run + exit 0 +fi + + +case "$1" in +"copy") + copy + ;; +"clean") + shift + clean "$@" + ;; +"package") + shift + package "$@" + ;; +"bootrun") + shift + bootrun "$@" + ;; +"debug") + debug "$@" + ;; +"run") + run "$@" + ;; +"gencert") + gencert "$@" + ;; +*) + help + ;; +esac + diff --git a/cas-server/etc/cas/config/application.yml b/cas-server/etc/cas/config/application.yml new file mode 100644 index 0000000000..be1f7c3edd --- /dev/null +++ b/cas-server/etc/cas/config/application.yml @@ -0,0 +1,2 @@ +info: + description: CAS Configuration \ No newline at end of file diff --git a/cas-server/etc/cas/config/cas.properties b/cas-server/etc/cas/config/cas.properties new file mode 100644 index 0000000000..47a1477308 --- /dev/null +++ b/cas-server/etc/cas/config/cas.properties @@ -0,0 +1,7 @@ +cas.server.name: https://cas.example.org:8443 +cas.server.prefix: https://cas.example.org:8443/cas + +cas.adminPagesSecurity.ip=127\.0\.0\.1 + +logging.config: file:/etc/cas/config/log4j2.xml +# cas.serviceRegistry.config.location: classpath:/services diff --git a/cas-server/etc/cas/config/log4j2.xml b/cas-server/etc/cas/config/log4j2.xml new file mode 100644 index 0000000000..53b30b4228 --- /dev/null +++ b/cas-server/etc/cas/config/log4j2.xml @@ -0,0 +1,117 @@ + + + + + + . + + warn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cas-server/etc/cas/thekeystore b/cas-server/etc/cas/thekeystore new file mode 100644 index 0000000000000000000000000000000000000000..15f9af2dae6366804459009361140e8526f811b9 GIT binary patch literal 2225 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 Lt(?_lzc& literal 0 HcmV?d00001 diff --git a/cas-server/maven/maven-wrapper.properties b/cas-server/maven/maven-wrapper.properties new file mode 100644 index 0000000000..b368e4609a --- /dev/null +++ b/cas-server/maven/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https\://repository.apache.org/content/repositories/releases/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip diff --git a/cas-server/mvnw b/cas-server/mvnw new file mode 100644 index 0000000000..2275ac7647 --- /dev/null +++ b/cas-server/mvnw @@ -0,0 +1,234 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # + # Look for the Apple JDKs first to preserve the existing behaviour, and then look + # for the new JDKs provided by Oracle. + # + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L /System/Library/Java/JavaVirtualMachines/CurrentJDK ] ; then + # + # Apple JDKs + # + export JAVA_HOME=/System/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -L "/Library/Java/JavaVirtualMachines/CurrentJDK" ] ; then + # + # Oracle JDKs + # + export JAVA_HOME=/Library/Java/JavaVirtualMachines/CurrentJDK/Contents/Home + fi + + if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then + # + # Apple JDKs + # + export JAVA_HOME=`/usr/libexec/java_home` + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` +fi + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + local basedir=$(pwd) + local wdir=$(pwd) + while [ "$wdir" != '/' ] ; do + wdir=$(cd "$wdir/.."; pwd) + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-$(find_maven_basedir)} +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER="org.apache.maven.wrapper.MavenWrapperMain" + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + -classpath \ +"$MAVEN_PROJECTBASEDIR/maven/maven-wrapper.jar" \ + ${WRAPPER_LAUNCHER} "$@" diff --git a/cas-server/mvnw.bat b/cas-server/mvnw.bat new file mode 100644 index 0000000000..d391151aa7 --- /dev/null +++ b/cas-server/mvnw.bat @@ -0,0 +1,174 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto chkMHome + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:chkMHome +if not "%M2_HOME%"=="" goto valMHome + +SET "M2_HOME=%~dp0.." +if not "%M2_HOME%"=="" goto valMHome + +echo. +echo Error: M2_HOME not found in your environment. >&2 +echo Please set the M2_HOME variable in your environment to match the >&2 +echo location of the Maven installation. >&2 +echo. +goto error + +:valMHome + +:stripMHome +if not "_%M2_HOME:~-1%"=="_\" goto checkMCmd +set "M2_HOME=%M2_HOME:~0,-1%" +goto stripMHome + +:checkMCmd +if exist "%M2_HOME%\bin\mvn.cmd" goto init + +echo. +echo Error: M2_HOME is set to an invalid directory. >&2 +echo M2_HOME = "%M2_HOME%" >&2 +echo Please set the M2_HOME variable in your environment to match the >&2 +echo location of the Maven installation >&2 +echo. +goto error +@REM ==== END VALIDATION ==== + +:init + +set MAVEN_CMD_LINE_ARGS=%* + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\maven\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% %WRAPPER_LAUNCHER% %MAVEN_CMD_LINE_ARGS% + +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/cas-server/pom.xml b/cas-server/pom.xml new file mode 100644 index 0000000000..e8625b48f7 --- /dev/null +++ b/cas-server/pom.xml @@ -0,0 +1,158 @@ + + + 4.0.0 + com.baeldung + cas-server + war + 1.0 + + + + + com.rimerosolutions.maven.plugins + wrapper-maven-plugin + 0.0.4 + + true + MD5 + + + + org.springframework.boot + spring-boot-maven-plugin + ${springboot.version} + + org.springframework.boot.loader.WarLauncher + true + + + + org.apache.maven.plugins + maven-war-plugin + 2.6 + + cas + false + false + + false + ${project.build.directory}/war/work/org.apereo.cas/cas-server-webapp${app.server}/META-INF/MANIFEST.MF + + + + + org.apereo.cas + cas-server-webapp${app.server} + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.3 + + + cas + + + + + org.apereo.cas + cas-server-webapp${app.server} + ${cas.version} + war + runtime + + + org.apereo.cas + cas-server-support-json-service-registry + ${cas.version} + + + org.apereo.cas + cas-server-support-jdbc + ${cas.version} + + + org.apereo.cas + cas-server-support-jdbc-drivers + ${cas.version} + + + + + 5.1.4 + 1.5.3.RELEASE + + -tomcat + 1.8 + 1.8 + UTF-8 + + + + + sonatype-releases + http://oss.sonatype.org/content/repositories/releases/ + + false + + + true + + + + sonatype-snapshots + https://oss.sonatype.org/content/repositories/snapshots/ + + true + + + false + + + + shibboleth-releases + https://build.shibboleth.net/nexus/content/repositories/releases + + + spring-milestones + https://repo.spring.io/milestone + + + + + + + false + + pgp + + + + com.github.s4u.plugins + pgpverify-maven-plugin + 1.1.0 + + + + check + + + + + hkp://pool.sks-keyservers.net + ${settings.localRepository}/pgpkeys-cache + test + true + false + + + + + + + diff --git a/cas-server/src/main/resources/application.properties b/cas-server/src/main/resources/application.properties new file mode 100644 index 0000000000..2d5e9a7277 --- /dev/null +++ b/cas-server/src/main/resources/application.properties @@ -0,0 +1,126 @@ +## +# CAS Server Context Configuration +# +server.context-path=/cas +server.port=8443 + +server.ssl.key-store=file:/etc/cas/thekeystore +server.ssl.key-store-password=changeit +server.ssl.key-password=changeit +# server.ssl.ciphers= +# server.ssl.client-auth= +# server.ssl.enabled= +# server.ssl.key-alias= +# server.ssl.key-store-provider= +# server.ssl.key-store-type= +# server.ssl.protocol= +# server.ssl.trust-store= +# server.ssl.trust-store-password= +# server.ssl.trust-store-provider= +# server.ssl.trust-store-type= + +server.max-http-header-size=2097152 +server.use-forward-headers=true +server.connection-timeout=20000 +server.error.include-stacktrace=NEVER + +server.tomcat.max-http-post-size=2097152 +server.tomcat.basedir=build/tomcat +server.tomcat.accesslog.enabled=true +server.tomcat.accesslog.pattern=%t %a "%r" %s (%D ms) +server.tomcat.accesslog.suffix=.log +server.tomcat.max-threads=10 +server.tomcat.port-header=X-Forwarded-Port +server.tomcat.protocol-header=X-Forwarded-Proto +server.tomcat.protocol-header-https-value=https +server.tomcat.remote-ip-header=X-FORWARDED-FOR +server.tomcat.uri-encoding=UTF-8 + +spring.http.encoding.charset=UTF-8 +spring.http.encoding.enabled=true +spring.http.encoding.force=true + +## +# CAS Cloud Bus Configuration +# +spring.cloud.bus.enabled=false +# spring.cloud.bus.refresh.enabled=true +# spring.cloud.bus.env.enabled=true +# spring.cloud.bus.destination=CasCloudBus +# spring.cloud.bus.ack.enabled=true + +endpoints.enabled=false +endpoints.sensitive=true + +endpoints.restart.enabled=false +endpoints.shutdown.enabled=false + +management.security.enabled=true +management.security.roles=ACTUATOR,ADMIN +management.security.sessions=if_required +management.context-path=/status +management.add-application-context-header=false + +security.basic.authorize-mode=role +security.basic.enabled=false +security.basic.path=/cas/status/** + +## +# CAS Web Application Session Configuration +# +server.session.timeout=300 +server.session.cookie.http-only=true +server.session.tracking-modes=COOKIE + +## +# CAS Thymeleaf View Configuration +# +spring.thymeleaf.encoding=UTF-8 +spring.thymeleaf.cache=true +spring.thymeleaf.mode=HTML +## +# CAS Log4j Configuration +# +# logging.config=file:/etc/cas/log4j2.xml +server.context-parameters.isLog4jAutoInitializationDisabled=true + +## +# CAS AspectJ Configuration +# +spring.aop.auto=true +spring.aop.proxy-target-class=true + +## +# CAS Authentication Credentials +# +#cas.authn.accept.users=casuser::Mellon +cas.authn.accept.users= +cas.authn.accept.name= + +#CAS Database Authentication Property +cas.authn.jdbc.query[0].sql=SELECT * FROM users WHERE email = ? +cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC +cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect +cas.authn.jdbc.query[0].user=root +cas.authn.jdbc.query[0].password= +cas.authn.jdbc.query[0].ddlAuto=none +cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver +cas.authn.jdbc.query[0].fieldPassword=password +cas.authn.jdbc.query[0].passwordEncoder.type=BCRYPT + + +## +# CAS Delegated Authentication +# +cas.authn.pac4j.bitbucket.clientName=Bitbucket +cas.authn.pac4j.dropbox.clientName=Dropbox +cas.authn.pac4j.facebook.clientName=Facebook +cas.authn.pac4j.foursquare.clientName=Foursquare +cas.authn.pac4j.github.clientName=Github +cas.authn.pac4j.google.clientName=Google +cas.authn.pac4j.linkedIn.clientName=LinkedIn +cas.authn.pac4j.paypal.clientName=PayPal +cas.authn.pac4j.twitter.clientName=Twitter +cas.authn.pac4j.yahoo.clientName=Yahoo +cas.authn.pac4j.windowsLive.clientName=Windows Live +cas.authn.pac4j.wordpress.clientName=WordPress diff --git a/cas-server/src/main/resources/cas.properties b/cas-server/src/main/resources/cas.properties new file mode 100644 index 0000000000..be2babcd14 --- /dev/null +++ b/cas-server/src/main/resources/cas.properties @@ -0,0 +1,41 @@ +cas.server.name: https://localhost:8443 +cas.server.prefix: https://localhost:8443/cas + +cas.adminPagesSecurity.ip=127\.0\.0\.1 + +logging.config: file:/etc/cas/config/log4j2.xml + +cas.serviceRegistry.initFromJson=true +cas.serviceRegistry.config.location=classpath:/services + +cas.authn.accept.users= +cas.authn.accept.name= + +#CAS Database Authentication Property + +# cas.authn.jdbc.query[0].healthQuery= +# cas.authn.jdbc.query[0].isolateInternalQueries=false +# cas.authn.jdbc.query[0].failFast=true +# cas.authn.jdbc.query[0].isolationLevelName=ISOLATION_READ_COMMITTED +# cas.authn.jdbc.query[0].leakThreshold=10 +# cas.authn.jdbc.query[0].propagationBehaviorName=PROPAGATION_REQUIRED +# cas.authn.jdbc.query[0].batchSize=1 +# cas.authn.jdbc.query[0].maxAgeDays=180 +# cas.authn.jdbc.query[0].autocommit=false +# cas.authn.jdbc.query[0].idleTimeout=5000 +# cas.authn.jdbc.query[0].credentialCriteria= +# cas.authn.jdbc.query[0].name= +# cas.authn.jdbc.query[0].order=0 +# cas.authn.jdbc.query[0].dataSourceName= +# cas.authn.jdbc.query[0].dataSourceProxy=false +# cas.authn.jdbc.query[0].fieldExpired= +# cas.authn.jdbc.query[0].fieldDisabled= +# cas.authn.jdbc.query[0].principalAttributeList=sn,cn:commonName,givenName +# cas.authn.jdbc.query[0].passwordEncoder.type=NONE|DEFAULT|STANDARD|BCRYPT|SCRYPT|PBKDF2|com.example.CustomPasswordEncoder +# cas.authn.jdbc.query[0].passwordEncoder.characterEncoding= +# cas.authn.jdbc.query[0].passwordEncoder.encodingAlgorithm= +# cas.authn.jdbc.query[0].passwordEncoder.secret= +# cas.authn.jdbc.query[0].passwordEncoder.strength=16 +# cas.authn.jdbc.query[0].principalTransformation.suffix= +# cas.authn.jdbc.query[0].principalTransformation.caseConversion=NONE|UPPERCASE|LOWERCASE +# cas.authn.jdbc.query[0].principalTransformation.prefix= \ No newline at end of file diff --git a/cas-server/src/main/resources/services/casSecuredApp.json b/cas-server/src/main/resources/services/casSecuredApp.json new file mode 100644 index 0000000000..336007e484 --- /dev/null +++ b/cas-server/src/main/resources/services/casSecuredApp.json @@ -0,0 +1,8 @@ +{ + "@class" : "org.apereo.cas.services.RegexRegisteredService", + "serviceId" : "^http://localhost:9000/login/cas", + "name" : "CAS Spring Secured App", + "description": "This is a Spring App that usses the CAS Server for it's authentication", + "id" : 19991, + "evaluationOrder" : 1 +} \ No newline at end of file From e6d985d790f50569d47ee6d60fc4432f8ef1b75c Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Sun, 15 Oct 2017 13:50:31 +0100 Subject: [PATCH 29/42] added cas secured app for Spring SSO with CAS --- cas-secured-app/.gitignore | 24 ++ .../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 47610 bytes .../.mvn/wrapper/maven-wrapper.properties | 1 + cas-secured-app/mvnw | 225 ++++++++++++++++++ cas-secured-app/mvnw.cmd | 143 +++++++++++ cas-secured-app/pom.xml | 110 +++++++++ .../CasSecuredAppApplication.java | 91 +++++++ .../cassecuredapp/config/SecurityConfig.java | 83 +++++++ .../controllers/AuthController.java | 35 +++ .../controllers/IndexController.java | 15 ++ .../controllers/SecuredPageController.java | 24 ++ .../src/main/resources/application.properties | 1 + .../main/resources/templates/auth/logout.ftl | 10 + .../src/main/resources/templates/index.ftl | 11 + .../main/resources/templates/secure/index.ftl | 12 + .../CasSecuredAppApplicationTests.java | 16 ++ pom.xml | 2 + 17 files changed, 803 insertions(+) create mode 100644 cas-secured-app/.gitignore create mode 100644 cas-secured-app/.mvn/wrapper/maven-wrapper.jar create mode 100644 cas-secured-app/.mvn/wrapper/maven-wrapper.properties create mode 100644 cas-secured-app/mvnw create mode 100644 cas-secured-app/mvnw.cmd create mode 100644 cas-secured-app/pom.xml create mode 100644 cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java create mode 100644 cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java create mode 100644 cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java create mode 100644 cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java create mode 100644 cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java create mode 100644 cas-secured-app/src/main/resources/application.properties create mode 100644 cas-secured-app/src/main/resources/templates/auth/logout.ftl create mode 100644 cas-secured-app/src/main/resources/templates/index.ftl create mode 100644 cas-secured-app/src/main/resources/templates/secure/index.ftl create mode 100644 cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java diff --git a/cas-secured-app/.gitignore b/cas-secured-app/.gitignore new file mode 100644 index 0000000000..2af7cefb0a --- /dev/null +++ b/cas-secured-app/.gitignore @@ -0,0 +1,24 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ \ No newline at end of file diff --git a/cas-secured-app/.mvn/wrapper/maven-wrapper.jar b/cas-secured-app/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..9cc84ea9b4d95453115d0c26488d6a78694e0bc6 GIT binary patch literal 47610 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 literal 0 HcmV?d00001 diff --git a/cas-secured-app/.mvn/wrapper/maven-wrapper.properties b/cas-secured-app/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 0000000000..c315043703 --- /dev/null +++ b/cas-secured-app/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1 @@ +distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip diff --git a/cas-secured-app/mvnw b/cas-secured-app/mvnw new file mode 100644 index 0000000000..5bf251c077 --- /dev/null +++ b/cas-secured-app/mvnw @@ -0,0 +1,225 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# 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. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven2 Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Migwn, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" + # TODO classpath? +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`which java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +echo $MAVEN_PROJECTBASEDIR +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/cas-secured-app/mvnw.cmd b/cas-secured-app/mvnw.cmd new file mode 100644 index 0000000000..019bd74d76 --- /dev/null +++ b/cas-secured-app/mvnw.cmd @@ -0,0 +1,143 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM http://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven2 Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" +if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" + +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" +if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%" == "on" pause + +if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% + +exit /B %ERROR_CODE% diff --git a/cas-secured-app/pom.xml b/cas-secured-app/pom.xml new file mode 100644 index 0000000000..f66d54ae67 --- /dev/null +++ b/cas-secured-app/pom.xml @@ -0,0 +1,110 @@ + + + 4.0.0 + + com.baeldung + cas-secured-app + 0.0.1-SNAPSHOT + jar + + cas-secured-app + Demo project for Spring Boot + + + org.springframework.boot + spring-boot-starter-parent + 2.0.0.BUILD-SNAPSHOT + + + + + UTF-8 + UTF-8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.security + spring-security-cas + + + org.springframework.boot + spring-boot-starter-freemarker + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-devtools + runtime + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.security + spring-security-test + test + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + + + spring-milestones + Spring Milestones + https://repo.spring.io/milestone + + false + + + + + + diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java new file mode 100644 index 0000000000..fc05e3b38f --- /dev/null +++ b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java @@ -0,0 +1,91 @@ +package com.baeldung.cassecuredapp; + +import org.jasig.cas.client.session.SingleSignOutFilter; +import org.jasig.cas.client.session.SingleSignOutHttpSessionListener; +import org.jasig.cas.client.validation.Cas30ServiceTicketValidator; +import org.jasig.cas.client.validation.TicketValidator; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Primary; +import org.springframework.context.event.EventListener; +import org.springframework.security.cas.ServiceProperties; +import org.springframework.security.cas.authentication.CasAuthenticationProvider; +import org.springframework.security.cas.web.CasAuthenticationEntryPoint; +import org.springframework.security.core.authority.AuthorityUtils; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.security.web.authentication.logout.LogoutFilter; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; + +import javax.servlet.http.HttpSessionEvent; + +@SpringBootApplication +public class CasSecuredAppApplication { + + public static void main(String[] args) { + SpringApplication.run(CasSecuredAppApplication.class, args); + } + + @Bean + public ServiceProperties serviceProperties() { + ServiceProperties serviceProperties = new ServiceProperties(); + serviceProperties.setService("http://localhost:9000/login/cas"); + serviceProperties.setSendRenew(false); + return serviceProperties; + } + + @Bean + @Primary + public AuthenticationEntryPoint authenticationEntryPoint(ServiceProperties sP) { + CasAuthenticationEntryPoint entryPoint = new CasAuthenticationEntryPoint(); + entryPoint.setLoginUrl("https://localhost:8443/cas/login"); + entryPoint.setServiceProperties(sP); + return entryPoint; + } + + @Bean + public TicketValidator ticketValidator() { + return new Cas30ServiceTicketValidator("https://localhost:8443/cas"); + } + + @Bean + public CasAuthenticationProvider casAuthenticationProvider() { + CasAuthenticationProvider provider = new CasAuthenticationProvider(); + provider.setServiceProperties(serviceProperties()); + provider.setTicketValidator(ticketValidator()); + provider.setUserDetailsService((s) -> new User("test@test.com", "smatt", + true, true, true, true, + AuthorityUtils.createAuthorityList("ROLE_ADMIN"))); + provider.setKey("CAS_PROVIDER_LOCALHOST_9000"); + return provider; + } + + + @Bean + public SecurityContextLogoutHandler securityContextLogoutHandler() { + return new SecurityContextLogoutHandler(); + } + + @Bean + public LogoutFilter logoutFilter() { + LogoutFilter logoutFilter = new LogoutFilter( + "https://localhost:8443/cas/logout", securityContextLogoutHandler()); + logoutFilter.setFilterProcessesUrl("/logout/cas"); + return logoutFilter; + } + + @Bean + public SingleSignOutFilter singleSignOutFilter() { + SingleSignOutFilter singleSignOutFilter = new SingleSignOutFilter(); + singleSignOutFilter.setCasServerUrlPrefix("https://localhost:8443/cas"); + singleSignOutFilter.setIgnoreInitConfiguration(true); + return singleSignOutFilter; + } + + @EventListener + public SingleSignOutHttpSessionListener singleSignOutHttpSessionListener(HttpSessionEvent event) { + return new SingleSignOutHttpSessionListener(); + } +} diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java new file mode 100644 index 0000000000..2eabed49e1 --- /dev/null +++ b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java @@ -0,0 +1,83 @@ +package com.baeldung.cassecuredapp.config; + +import org.jasig.cas.client.session.SingleSignOutFilter; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.AuthenticationProvider; +import org.springframework.security.authentication.ProviderManager; +import org.springframework.security.cas.ServiceProperties; +import org.springframework.security.cas.authentication.CasAuthenticationProvider; +import org.springframework.security.cas.web.CasAuthenticationFilter; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.security.web.authentication.logout.LogoutFilter; + +import java.util.Arrays; + +@EnableWebSecurity +@Configuration +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + private AuthenticationProvider authenticationProvider; + private AuthenticationEntryPoint authenticationEntryPoint; + private SingleSignOutFilter singleSignOutFilter; + private LogoutFilter logoutFilter; + + @Autowired + public SecurityConfig(CasAuthenticationProvider casAuthenticationProvider, AuthenticationEntryPoint eP, + LogoutFilter lF + , SingleSignOutFilter ssF + ) { + this.authenticationProvider = casAuthenticationProvider; + this.authenticationEntryPoint = eP; + + this.logoutFilter = lF; + this.singleSignOutFilter = ssF; + + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + http + .authorizeRequests() + .regexMatchers("/secured.*", "/login") + .authenticated() + .and() + .authorizeRequests() + .regexMatchers("/") + .permitAll() + .and() + .httpBasic() + .authenticationEntryPoint(authenticationEntryPoint) + .and() + .logout().logoutSuccessUrl("/logout") + .and() + .addFilterBefore(singleSignOutFilter, CasAuthenticationFilter.class) + .addFilterBefore(logoutFilter, LogoutFilter.class); + + } + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.authenticationProvider(authenticationProvider); + } + + @Override + protected AuthenticationManager authenticationManager() throws Exception { + return new ProviderManager(Arrays.asList(authenticationProvider)); + } + + @Bean + public CasAuthenticationFilter casAuthenticationFilter(ServiceProperties sP) throws Exception { + CasAuthenticationFilter filter = new CasAuthenticationFilter(); + filter.setServiceProperties(sP); + filter.setAuthenticationManager(authenticationManager()); + return filter; + } + +} diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java new file mode 100644 index 0000000000..703e6abf7a --- /dev/null +++ b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java @@ -0,0 +1,35 @@ +package com.baeldung.cassecuredapp.controllers; + +import org.apache.log4j.Logger; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.web.authentication.logout.CookieClearingLogoutHandler; +import org.springframework.security.web.authentication.logout.SecurityContextLogoutHandler; +import org.springframework.security.web.authentication.rememberme.AbstractRememberMeServices; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +@Controller +public class AuthController { + + private Logger logger = Logger.getLogger(AuthController.class); + + @GetMapping("/logout") + public String logout( + HttpServletRequest request, HttpServletResponse response, SecurityContextLogoutHandler logoutHandler) { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + logoutHandler.logout(request, response, auth ); + new CookieClearingLogoutHandler(AbstractRememberMeServices.SPRING_SECURITY_REMEMBER_ME_COOKIE_KEY).logout(request, response, auth); + return "auth/logout"; + } + + + @GetMapping("/login") + public String login() { + return "redirect:/secured"; + } + +} diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java new file mode 100644 index 0000000000..75956cf493 --- /dev/null +++ b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java @@ -0,0 +1,15 @@ +package com.baeldung.cassecuredapp.controllers; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + + +@Controller +public class IndexController { + + @GetMapping("/") + public String index() { + return "index"; + } +} diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java new file mode 100644 index 0000000000..9a872d1f40 --- /dev/null +++ b/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java @@ -0,0 +1,24 @@ +package com.baeldung.cassecuredapp.controllers; + +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.stereotype.Controller; +import org.springframework.ui.ModelMap; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +@Controller +@RequestMapping(value = "/secured") +public class SecuredPageController { + + @GetMapping + public String index(ModelMap modelMap) { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if( auth != null && auth.getPrincipal() != null + && auth.getPrincipal() instanceof UserDetails) { + modelMap.put("username", ((UserDetails) auth.getPrincipal()).getUsername()); + } + return "secure/index"; + } +} diff --git a/cas-secured-app/src/main/resources/application.properties b/cas-secured-app/src/main/resources/application.properties new file mode 100644 index 0000000000..99802c632f --- /dev/null +++ b/cas-secured-app/src/main/resources/application.properties @@ -0,0 +1 @@ +server.port=9000 \ No newline at end of file diff --git a/cas-secured-app/src/main/resources/templates/auth/logout.ftl b/cas-secured-app/src/main/resources/templates/auth/logout.ftl new file mode 100644 index 0000000000..eac345ec33 --- /dev/null +++ b/cas-secured-app/src/main/resources/templates/auth/logout.ftl @@ -0,0 +1,10 @@ + + + Cas Secured App - Logout + + +

You have logged out of Cas Secured Spring Boot App Successfully

+
+Log out of all other Services + + \ No newline at end of file diff --git a/cas-secured-app/src/main/resources/templates/index.ftl b/cas-secured-app/src/main/resources/templates/index.ftl new file mode 100644 index 0000000000..d407756044 --- /dev/null +++ b/cas-secured-app/src/main/resources/templates/index.ftl @@ -0,0 +1,11 @@ + + + Cas Secured App - Index + + +

Welcome to Cas Secured Spring Boot App

+

This is a Public Page

+
+Login + + \ No newline at end of file diff --git a/cas-secured-app/src/main/resources/templates/secure/index.ftl b/cas-secured-app/src/main/resources/templates/secure/index.ftl new file mode 100644 index 0000000000..210ebecc7b --- /dev/null +++ b/cas-secured-app/src/main/resources/templates/secure/index.ftl @@ -0,0 +1,12 @@ + + + Cas Secured App - Secured + + +

Welcome to Cas Secured Spring Boot App

+

This is a Secured Page

+

Welcome home ${username!""}

+
+Logout + + \ No newline at end of file diff --git a/cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java b/cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java new file mode 100644 index 0000000000..09dbaf0c61 --- /dev/null +++ b/cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java @@ -0,0 +1,16 @@ +package com.baeldung.cassecuredapp; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.junit4.SpringRunner; + +@RunWith(SpringRunner.class) +@SpringBootTest +public class CasSecuredAppApplicationTests { + + @Test + public void contextLoads() { + } + +} diff --git a/pom.xml b/pom.xml index fac746f7df..ed607ec338 100644 --- a/pom.xml +++ b/pom.xml @@ -46,6 +46,8 @@ core-java-8 core-java-concurrency couchbase + cas-server + cas-secured-app deltaspike dozer From bb18eec48d740f69bfa79022edc0bf262c6dcd38 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 30 Oct 2017 15:12:22 +0100 Subject: [PATCH 30/42] refactor cas modules into cas folder --- {cas-secured-app => cas/cas-secured-app}/.gitignore | 0 .../cas-secured-app}/.mvn/wrapper/maven-wrapper.jar | Bin .../.mvn/wrapper/maven-wrapper.properties | 0 {cas-secured-app => cas/cas-secured-app}/mvnw | 0 {cas-secured-app => cas/cas-secured-app}/mvnw.cmd | 0 {cas-secured-app => cas/cas-secured-app}/pom.xml | 0 .../cassecuredapp/CasSecuredAppApplication.java | 0 .../cassecuredapp/config/SecurityConfig.java | 0 .../cassecuredapp/controllers/AuthController.java | 0 .../cassecuredapp/controllers/IndexController.java | 0 .../controllers/SecuredPageController.java | 0 .../src/main/resources/application.properties | 0 .../src/main/resources/templates/auth/logout.ftl | 0 .../src/main/resources/templates/index.ftl | 0 .../src/main/resources/templates/secure/index.ftl | 0 .../CasSecuredAppApplicationTests.java | 0 {cas-server => cas/cas-server}/.gitignore | 0 {cas-server => cas/cas-server}/LICENSE.txt | 0 {cas-server => cas/cas-server}/README.md | 0 {cas-server => cas/cas-server}/build.cmd | 0 {cas-server => cas/cas-server}/build.sh | 0 .../cas-server}/etc/cas/config/application.yml | 0 .../cas-server}/etc/cas/config/cas.properties | 0 .../cas-server}/etc/cas/config/log4j2.xml | 0 {cas-server => cas/cas-server}/etc/cas/thekeystore | Bin .../cas-server}/etc/cas/thekeystore.crt | Bin .../cas-server}/maven/maven-wrapper.properties | 0 {cas-server => cas/cas-server}/mvnw | 0 {cas-server => cas/cas-server}/mvnw.bat | 0 {cas-server => cas/cas-server}/pom.xml | 0 .../src/main/resources/application.properties | 0 .../cas-server}/src/main/resources/cas.properties | 0 .../src/main/resources/services/casSecuredApp.json | 0 pom.xml | 4 ++-- 34 files changed, 2 insertions(+), 2 deletions(-) rename {cas-secured-app => cas/cas-secured-app}/.gitignore (100%) rename {cas-secured-app => cas/cas-secured-app}/.mvn/wrapper/maven-wrapper.jar (100%) rename {cas-secured-app => cas/cas-secured-app}/.mvn/wrapper/maven-wrapper.properties (100%) rename {cas-secured-app => cas/cas-secured-app}/mvnw (100%) rename {cas-secured-app => cas/cas-secured-app}/mvnw.cmd (100%) rename {cas-secured-app => cas/cas-secured-app}/pom.xml (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/resources/application.properties (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/resources/templates/auth/logout.ftl (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/resources/templates/index.ftl (100%) rename {cas-secured-app => cas/cas-secured-app}/src/main/resources/templates/secure/index.ftl (100%) rename {cas-secured-app => cas/cas-secured-app}/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java (100%) rename {cas-server => cas/cas-server}/.gitignore (100%) rename {cas-server => cas/cas-server}/LICENSE.txt (100%) rename {cas-server => cas/cas-server}/README.md (100%) rename {cas-server => cas/cas-server}/build.cmd (100%) rename {cas-server => cas/cas-server}/build.sh (100%) rename {cas-server => cas/cas-server}/etc/cas/config/application.yml (100%) rename {cas-server => cas/cas-server}/etc/cas/config/cas.properties (100%) rename {cas-server => cas/cas-server}/etc/cas/config/log4j2.xml (100%) rename {cas-server => cas/cas-server}/etc/cas/thekeystore (100%) rename {cas-server => cas/cas-server}/etc/cas/thekeystore.crt (100%) rename {cas-server => cas/cas-server}/maven/maven-wrapper.properties (100%) rename {cas-server => cas/cas-server}/mvnw (100%) rename {cas-server => cas/cas-server}/mvnw.bat (100%) rename {cas-server => cas/cas-server}/pom.xml (100%) rename {cas-server => cas/cas-server}/src/main/resources/application.properties (100%) rename {cas-server => cas/cas-server}/src/main/resources/cas.properties (100%) rename {cas-server => cas/cas-server}/src/main/resources/services/casSecuredApp.json (100%) diff --git a/cas-secured-app/.gitignore b/cas/cas-secured-app/.gitignore similarity index 100% rename from cas-secured-app/.gitignore rename to cas/cas-secured-app/.gitignore diff --git a/cas-secured-app/.mvn/wrapper/maven-wrapper.jar b/cas/cas-secured-app/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from cas-secured-app/.mvn/wrapper/maven-wrapper.jar rename to cas/cas-secured-app/.mvn/wrapper/maven-wrapper.jar diff --git a/cas-secured-app/.mvn/wrapper/maven-wrapper.properties b/cas/cas-secured-app/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from cas-secured-app/.mvn/wrapper/maven-wrapper.properties rename to cas/cas-secured-app/.mvn/wrapper/maven-wrapper.properties diff --git a/cas-secured-app/mvnw b/cas/cas-secured-app/mvnw similarity index 100% rename from cas-secured-app/mvnw rename to cas/cas-secured-app/mvnw diff --git a/cas-secured-app/mvnw.cmd b/cas/cas-secured-app/mvnw.cmd similarity index 100% rename from cas-secured-app/mvnw.cmd rename to cas/cas-secured-app/mvnw.cmd diff --git a/cas-secured-app/pom.xml b/cas/cas-secured-app/pom.xml similarity index 100% rename from cas-secured-app/pom.xml rename to cas/cas-secured-app/pom.xml diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java b/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java similarity index 100% rename from cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java rename to cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java b/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java similarity index 100% rename from cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java rename to cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/config/SecurityConfig.java diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java b/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java similarity index 100% rename from cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java rename to cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/AuthController.java diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java b/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java similarity index 100% rename from cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java rename to cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/IndexController.java diff --git a/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java b/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java similarity index 100% rename from cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java rename to cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/controllers/SecuredPageController.java diff --git a/cas-secured-app/src/main/resources/application.properties b/cas/cas-secured-app/src/main/resources/application.properties similarity index 100% rename from cas-secured-app/src/main/resources/application.properties rename to cas/cas-secured-app/src/main/resources/application.properties diff --git a/cas-secured-app/src/main/resources/templates/auth/logout.ftl b/cas/cas-secured-app/src/main/resources/templates/auth/logout.ftl similarity index 100% rename from cas-secured-app/src/main/resources/templates/auth/logout.ftl rename to cas/cas-secured-app/src/main/resources/templates/auth/logout.ftl diff --git a/cas-secured-app/src/main/resources/templates/index.ftl b/cas/cas-secured-app/src/main/resources/templates/index.ftl similarity index 100% rename from cas-secured-app/src/main/resources/templates/index.ftl rename to cas/cas-secured-app/src/main/resources/templates/index.ftl diff --git a/cas-secured-app/src/main/resources/templates/secure/index.ftl b/cas/cas-secured-app/src/main/resources/templates/secure/index.ftl similarity index 100% rename from cas-secured-app/src/main/resources/templates/secure/index.ftl rename to cas/cas-secured-app/src/main/resources/templates/secure/index.ftl diff --git a/cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java b/cas/cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java similarity index 100% rename from cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java rename to cas/cas-secured-app/src/test/java/com/baeldung/cassecuredapp/CasSecuredAppApplicationTests.java diff --git a/cas-server/.gitignore b/cas/cas-server/.gitignore similarity index 100% rename from cas-server/.gitignore rename to cas/cas-server/.gitignore diff --git a/cas-server/LICENSE.txt b/cas/cas-server/LICENSE.txt similarity index 100% rename from cas-server/LICENSE.txt rename to cas/cas-server/LICENSE.txt diff --git a/cas-server/README.md b/cas/cas-server/README.md similarity index 100% rename from cas-server/README.md rename to cas/cas-server/README.md diff --git a/cas-server/build.cmd b/cas/cas-server/build.cmd similarity index 100% rename from cas-server/build.cmd rename to cas/cas-server/build.cmd diff --git a/cas-server/build.sh b/cas/cas-server/build.sh similarity index 100% rename from cas-server/build.sh rename to cas/cas-server/build.sh diff --git a/cas-server/etc/cas/config/application.yml b/cas/cas-server/etc/cas/config/application.yml similarity index 100% rename from cas-server/etc/cas/config/application.yml rename to cas/cas-server/etc/cas/config/application.yml diff --git a/cas-server/etc/cas/config/cas.properties b/cas/cas-server/etc/cas/config/cas.properties similarity index 100% rename from cas-server/etc/cas/config/cas.properties rename to cas/cas-server/etc/cas/config/cas.properties diff --git a/cas-server/etc/cas/config/log4j2.xml b/cas/cas-server/etc/cas/config/log4j2.xml similarity index 100% rename from cas-server/etc/cas/config/log4j2.xml rename to cas/cas-server/etc/cas/config/log4j2.xml diff --git a/cas-server/etc/cas/thekeystore b/cas/cas-server/etc/cas/thekeystore similarity index 100% rename from cas-server/etc/cas/thekeystore rename to cas/cas-server/etc/cas/thekeystore diff --git a/cas-server/etc/cas/thekeystore.crt b/cas/cas-server/etc/cas/thekeystore.crt similarity index 100% rename from cas-server/etc/cas/thekeystore.crt rename to cas/cas-server/etc/cas/thekeystore.crt diff --git a/cas-server/maven/maven-wrapper.properties b/cas/cas-server/maven/maven-wrapper.properties similarity index 100% rename from cas-server/maven/maven-wrapper.properties rename to cas/cas-server/maven/maven-wrapper.properties diff --git a/cas-server/mvnw b/cas/cas-server/mvnw similarity index 100% rename from cas-server/mvnw rename to cas/cas-server/mvnw diff --git a/cas-server/mvnw.bat b/cas/cas-server/mvnw.bat similarity index 100% rename from cas-server/mvnw.bat rename to cas/cas-server/mvnw.bat diff --git a/cas-server/pom.xml b/cas/cas-server/pom.xml similarity index 100% rename from cas-server/pom.xml rename to cas/cas-server/pom.xml diff --git a/cas-server/src/main/resources/application.properties b/cas/cas-server/src/main/resources/application.properties similarity index 100% rename from cas-server/src/main/resources/application.properties rename to cas/cas-server/src/main/resources/application.properties diff --git a/cas-server/src/main/resources/cas.properties b/cas/cas-server/src/main/resources/cas.properties similarity index 100% rename from cas-server/src/main/resources/cas.properties rename to cas/cas-server/src/main/resources/cas.properties diff --git a/cas-server/src/main/resources/services/casSecuredApp.json b/cas/cas-server/src/main/resources/services/casSecuredApp.json similarity index 100% rename from cas-server/src/main/resources/services/casSecuredApp.json rename to cas/cas-server/src/main/resources/services/casSecuredApp.json diff --git a/pom.xml b/pom.xml index 3d28707b5f..d49362db37 100644 --- a/pom.xml +++ b/pom.xml @@ -49,8 +49,8 @@ core-java-8 core-java-concurrency couchbase - cas-server - cas-secured-app + cas/cas-server + cas/cas-secured-app deltaspike dozer From 84191bd7eb6590190d0fff53e514159d526a71a6 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 30 Oct 2017 17:02:28 +0100 Subject: [PATCH 31/42] updated files --- cas/cas-secured-app/.gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cas/cas-secured-app/.gitignore b/cas/cas-secured-app/.gitignore index 2af7cefb0a..ef6a9c0808 100644 --- a/cas/cas-secured-app/.gitignore +++ b/cas/cas-secured-app/.gitignore @@ -21,4 +21,7 @@ build/ nbbuild/ dist/ nbdist/ -.nb-gradle/ \ No newline at end of file +.nb-gradle/ +/.mvn/ +/mvnw +/mvnw.cmd From f7eff22638f1fba7ab882f25e1c41a8a28835d05 Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Tue, 31 Oct 2017 14:16:55 +0100 Subject: [PATCH 32/42] removed redundant files --- .../.mvn/wrapper/maven-wrapper.jar | Bin 47610 -> 0 bytes .../.mvn/wrapper/maven-wrapper.properties | 1 - cas/cas-secured-app/mvnw | 225 ------------------ cas/cas-secured-app/mvnw.cmd | 143 ----------- 4 files changed, 369 deletions(-) delete mode 100644 cas/cas-secured-app/.mvn/wrapper/maven-wrapper.jar delete mode 100644 cas/cas-secured-app/.mvn/wrapper/maven-wrapper.properties delete mode 100644 cas/cas-secured-app/mvnw delete mode 100644 cas/cas-secured-app/mvnw.cmd diff --git a/cas/cas-secured-app/.mvn/wrapper/maven-wrapper.jar b/cas/cas-secured-app/.mvn/wrapper/maven-wrapper.jar deleted file mode 100644 index 9cc84ea9b4d95453115d0c26488d6a78694e0bc6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47610 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 diff --git a/cas/cas-secured-app/.mvn/wrapper/maven-wrapper.properties b/cas/cas-secured-app/.mvn/wrapper/maven-wrapper.properties deleted file mode 100644 index c315043703..0000000000 --- a/cas/cas-secured-app/.mvn/wrapper/maven-wrapper.properties +++ /dev/null @@ -1 +0,0 @@ -distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip diff --git a/cas/cas-secured-app/mvnw b/cas/cas-secured-app/mvnw deleted file mode 100644 index 5bf251c077..0000000000 --- a/cas/cas-secured-app/mvnw +++ /dev/null @@ -1,225 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# 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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Maven2 Start Up Batch script -# -# Required ENV vars: -# ------------------ -# JAVA_HOME - location of a JDK home dir -# -# Optional ENV vars -# ----------------- -# M2_HOME - location of maven2's installed home dir -# MAVEN_OPTS - parameters passed to the Java VM when running Maven -# e.g. to debug Maven itself, use -# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -# MAVEN_SKIP_RC - flag to disable loading of mavenrc files -# ---------------------------------------------------------------------------- - -if [ -z "$MAVEN_SKIP_RC" ] ; then - - if [ -f /etc/mavenrc ] ; then - . /etc/mavenrc - fi - - if [ -f "$HOME/.mavenrc" ] ; then - . "$HOME/.mavenrc" - fi - -fi - -# OS specific support. $var _must_ be set to either true or false. -cygwin=false; -darwin=false; -mingw=false -case "`uname`" in - CYGWIN*) cygwin=true ;; - MINGW*) mingw=true;; - Darwin*) darwin=true - # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home - # See https://developer.apple.com/library/mac/qa/qa1170/_index.html - if [ -z "$JAVA_HOME" ]; then - if [ -x "/usr/libexec/java_home" ]; then - export JAVA_HOME="`/usr/libexec/java_home`" - else - export JAVA_HOME="/Library/Java/Home" - fi - fi - ;; -esac - -if [ -z "$JAVA_HOME" ] ; then - if [ -r /etc/gentoo-release ] ; then - JAVA_HOME=`java-config --jre-home` - fi -fi - -if [ -z "$M2_HOME" ] ; then - ## resolve links - $0 may be a link to maven's home - PRG="$0" - - # need this for relative symlinks - while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG="`dirname "$PRG"`/$link" - fi - done - - saveddir=`pwd` - - M2_HOME=`dirname "$PRG"`/.. - - # make it fully qualified - M2_HOME=`cd "$M2_HOME" && pwd` - - cd "$saveddir" - # echo Using m2 at $M2_HOME -fi - -# For Cygwin, ensure paths are in UNIX format before anything is touched -if $cygwin ; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --unix "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --unix "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --unix "$CLASSPATH"` -fi - -# For Migwn, ensure paths are in UNIX format before anything is touched -if $mingw ; then - [ -n "$M2_HOME" ] && - M2_HOME="`(cd "$M2_HOME"; pwd)`" - [ -n "$JAVA_HOME" ] && - JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? -fi - -if [ -z "$JAVA_HOME" ]; then - javaExecutable="`which javac`" - if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then - # readlink(1) is not available as standard on Solaris 10. - readLink=`which readlink` - if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then - if $darwin ; then - javaHome="`dirname \"$javaExecutable\"`" - javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" - else - javaExecutable="`readlink -f \"$javaExecutable\"`" - fi - javaHome="`dirname \"$javaExecutable\"`" - javaHome=`expr "$javaHome" : '\(.*\)/bin'` - JAVA_HOME="$javaHome" - export JAVA_HOME - fi - fi -fi - -if [ -z "$JAVACMD" ] ; then - if [ -n "$JAVA_HOME" ] ; then - if [ -x "$JAVA_HOME/jre/sh/java" ] ; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - else - JAVACMD="$JAVA_HOME/bin/java" - fi - else - JAVACMD="`which java`" - fi -fi - -if [ ! -x "$JAVACMD" ] ; then - echo "Error: JAVA_HOME is not defined correctly." >&2 - echo " We cannot execute $JAVACMD" >&2 - exit 1 -fi - -if [ -z "$JAVA_HOME" ] ; then - echo "Warning: JAVA_HOME environment variable is not set." -fi - -CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher - -# traverses directory structure from process work directory to filesystem root -# first directory with .mvn subdirectory is considered project base directory -find_maven_basedir() { - - if [ -z "$1" ] - then - echo "Path not specified to find_maven_basedir" - return 1 - fi - - basedir="$1" - wdir="$1" - while [ "$wdir" != '/' ] ; do - if [ -d "$wdir"/.mvn ] ; then - basedir=$wdir - break - fi - # workaround for JBEAP-8937 (on Solaris 10/Sparc) - if [ -d "${wdir}" ]; then - wdir=`cd "$wdir/.."; pwd` - fi - # end of workaround - done - echo "${basedir}" -} - -# concatenates all lines of a file -concat_lines() { - if [ -f "$1" ]; then - echo "$(tr -s '\n' ' ' < "$1")" - fi -} - -BASE_DIR=`find_maven_basedir "$(pwd)"` -if [ -z "$BASE_DIR" ]; then - exit 1; -fi - -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -echo $MAVEN_PROJECTBASEDIR -MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" - -# For Cygwin, switch paths to Windows format before running java -if $cygwin; then - [ -n "$M2_HOME" ] && - M2_HOME=`cygpath --path --windows "$M2_HOME"` - [ -n "$JAVA_HOME" ] && - JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` - [ -n "$CLASSPATH" ] && - CLASSPATH=`cygpath --path --windows "$CLASSPATH"` - [ -n "$MAVEN_PROJECTBASEDIR" ] && - MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` -fi - -WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -exec "$JAVACMD" \ - $MAVEN_OPTS \ - -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ - ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/cas/cas-secured-app/mvnw.cmd b/cas/cas-secured-app/mvnw.cmd deleted file mode 100644 index 019bd74d76..0000000000 --- a/cas/cas-secured-app/mvnw.cmd +++ /dev/null @@ -1,143 +0,0 @@ -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Maven2 Start Up Batch script -@REM -@REM Required ENV vars: -@REM JAVA_HOME - location of a JDK home dir -@REM -@REM Optional ENV vars -@REM M2_HOME - location of maven2's installed home dir -@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands -@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending -@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven -@REM e.g. to debug Maven itself, use -@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 -@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files -@REM ---------------------------------------------------------------------------- - -@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' -@echo off -@REM enable echoing my setting MAVEN_BATCH_ECHO to 'on' -@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% - -@REM set %HOME% to equivalent of $HOME -if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") - -@REM Execute a user defined script before this one -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre -@REM check for pre script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_pre.bat" call "%HOME%\mavenrc_pre.bat" -if exist "%HOME%\mavenrc_pre.cmd" call "%HOME%\mavenrc_pre.cmd" -:skipRcPre - -@setlocal - -set ERROR_CODE=0 - -@REM To isolate internal variables from possible post scripts, we use another setlocal -@setlocal - -@REM ==== START VALIDATION ==== -if not "%JAVA_HOME%" == "" goto OkJHome - -echo. -echo Error: JAVA_HOME not found in your environment. >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -:OkJHome -if exist "%JAVA_HOME%\bin\java.exe" goto init - -echo. -echo Error: JAVA_HOME is set to an invalid directory. >&2 -echo JAVA_HOME = "%JAVA_HOME%" >&2 -echo Please set the JAVA_HOME variable in your environment to match the >&2 -echo location of your Java installation. >&2 -echo. -goto error - -@REM ==== END VALIDATION ==== - -:init - -@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". -@REM Fallback to current working directory if not found. - -set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% -IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir - -set EXEC_DIR=%CD% -set WDIR=%EXEC_DIR% -:findBaseDir -IF EXIST "%WDIR%"\.mvn goto baseDirFound -cd .. -IF "%WDIR%"=="%CD%" goto baseDirNotFound -set WDIR=%CD% -goto findBaseDir - -:baseDirFound -set MAVEN_PROJECTBASEDIR=%WDIR% -cd "%EXEC_DIR%" -goto endDetectBaseDir - -:baseDirNotFound -set MAVEN_PROJECTBASEDIR=%EXEC_DIR% -cd "%EXEC_DIR%" - -:endDetectBaseDir - -IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig - -@setlocal EnableExtensions EnableDelayedExpansion -for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a -@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% - -:endReadAdditionalConfig - -SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" - -set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" -set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain - -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* -if ERRORLEVEL 1 goto error -goto end - -:error -set ERROR_CODE=1 - -:end -@endlocal & set ERROR_CODE=%ERROR_CODE% - -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost -@REM check for post script, once with legacy .bat ending and once with .cmd ending -if exist "%HOME%\mavenrc_post.bat" call "%HOME%\mavenrc_post.bat" -if exist "%HOME%\mavenrc_post.cmd" call "%HOME%\mavenrc_post.cmd" -:skipRcPost - -@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause - -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% - -exit /B %ERROR_CODE% From 490ee197398a64ddac329fed90156f5c1ebce93a Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Mon, 6 Nov 2017 17:10:58 +0100 Subject: [PATCH 33/42] refactor the config for cas-server --- .../CasSecuredAppApplication.java | 8 +- cas/cas-server/etc/cas/thekeystore | Bin 2225 -> 0 bytes cas/cas-server/etc/cas/thekeystore.crt | Bin 808 -> 0 bytes .../src/main/resources/application.properties | 16 ++- .../src/main/resources/cas.properties | 7 +- .../resources/etc/cas/config/application.yml | 2 + .../resources/etc/cas/config/cas.properties | 7 ++ .../main/resources/etc/cas/config/log4j2.xml | 117 ++++++++++++++++++ .../src/main/resources/etc/cas/thekeystore | Bin 0 -> 2243 bytes .../main/resources/etc/cas/thekeystore.crt | Bin 0 -> 885 bytes 10 files changed, 145 insertions(+), 12 deletions(-) delete mode 100644 cas/cas-server/etc/cas/thekeystore delete mode 100644 cas/cas-server/etc/cas/thekeystore.crt create mode 100644 cas/cas-server/src/main/resources/etc/cas/config/application.yml create mode 100644 cas/cas-server/src/main/resources/etc/cas/config/cas.properties create mode 100644 cas/cas-server/src/main/resources/etc/cas/config/log4j2.xml create mode 100644 cas/cas-server/src/main/resources/etc/cas/thekeystore create mode 100644 cas/cas-server/src/main/resources/etc/cas/thekeystore.crt diff --git a/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java b/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java index fc05e3b38f..25cbb9bc9b 100644 --- a/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java +++ b/cas/cas-secured-app/src/main/java/com/baeldung/cassecuredapp/CasSecuredAppApplication.java @@ -40,14 +40,14 @@ public class CasSecuredAppApplication { @Primary public AuthenticationEntryPoint authenticationEntryPoint(ServiceProperties sP) { CasAuthenticationEntryPoint entryPoint = new CasAuthenticationEntryPoint(); - entryPoint.setLoginUrl("https://localhost:8443/cas/login"); + entryPoint.setLoginUrl("https://localhost:6443/cas/login"); entryPoint.setServiceProperties(sP); return entryPoint; } @Bean public TicketValidator ticketValidator() { - return new Cas30ServiceTicketValidator("https://localhost:8443/cas"); + return new Cas30ServiceTicketValidator("https://localhost:6443/cas"); } @Bean @@ -71,7 +71,7 @@ public class CasSecuredAppApplication { @Bean public LogoutFilter logoutFilter() { LogoutFilter logoutFilter = new LogoutFilter( - "https://localhost:8443/cas/logout", securityContextLogoutHandler()); + "https://localhost:6443/cas/logout", securityContextLogoutHandler()); logoutFilter.setFilterProcessesUrl("/logout/cas"); return logoutFilter; } @@ -79,7 +79,7 @@ public class CasSecuredAppApplication { @Bean public SingleSignOutFilter singleSignOutFilter() { SingleSignOutFilter singleSignOutFilter = new SingleSignOutFilter(); - singleSignOutFilter.setCasServerUrlPrefix("https://localhost:8443/cas"); + singleSignOutFilter.setCasServerUrlPrefix("https://localhost:6443/cas"); singleSignOutFilter.setIgnoreInitConfiguration(true); return singleSignOutFilter; } diff --git a/cas/cas-server/etc/cas/thekeystore b/cas/cas-server/etc/cas/thekeystore deleted file mode 100644 index 15f9af2dae6366804459009361140e8526f811b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2225 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 Lt(?_lzc& diff --git a/cas/cas-server/src/main/resources/application.properties b/cas/cas-server/src/main/resources/application.properties index 2d5e9a7277..afacd4cbc1 100644 --- a/cas/cas-server/src/main/resources/application.properties +++ b/cas/cas-server/src/main/resources/application.properties @@ -2,9 +2,9 @@ # CAS Server Context Configuration # server.context-path=/cas -server.port=8443 +server.port=6443 -server.ssl.key-store=file:/etc/cas/thekeystore +server.ssl.key-store=classpath:/etc/cas/thekeystore server.ssl.key-store-password=changeit server.ssl.key-password=changeit # server.ssl.ciphers= @@ -40,6 +40,12 @@ spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true +## +#CAS CONFIG LOCATION +# +cas.standalone.config=classpath:/etc/cas/config + + ## # CAS Cloud Bus Configuration # @@ -82,6 +88,7 @@ spring.thymeleaf.mode=HTML # CAS Log4j Configuration # # logging.config=file:/etc/cas/log4j2.xml + server.context-parameters.isLog4jAutoInitializationDisabled=true ## @@ -104,9 +111,10 @@ cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect cas.authn.jdbc.query[0].user=root cas.authn.jdbc.query[0].password= cas.authn.jdbc.query[0].ddlAuto=none -cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver +#cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver +cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver cas.authn.jdbc.query[0].fieldPassword=password -cas.authn.jdbc.query[0].passwordEncoder.type=BCRYPT +cas.authn.jdbc.query[0].passwordEncoder.type=NONE ## diff --git a/cas/cas-server/src/main/resources/cas.properties b/cas/cas-server/src/main/resources/cas.properties index be2babcd14..f80f22fc11 100644 --- a/cas/cas-server/src/main/resources/cas.properties +++ b/cas/cas-server/src/main/resources/cas.properties @@ -1,16 +1,15 @@ -cas.server.name: https://localhost:8443 -cas.server.prefix: https://localhost:8443/cas +cas.server.name: https://localhost:6443 +cas.server.prefix: https://localhost:643/cas cas.adminPagesSecurity.ip=127\.0\.0\.1 -logging.config: file:/etc/cas/config/log4j2.xml - cas.serviceRegistry.initFromJson=true cas.serviceRegistry.config.location=classpath:/services cas.authn.accept.users= cas.authn.accept.name= + #CAS Database Authentication Property # cas.authn.jdbc.query[0].healthQuery= diff --git a/cas/cas-server/src/main/resources/etc/cas/config/application.yml b/cas/cas-server/src/main/resources/etc/cas/config/application.yml new file mode 100644 index 0000000000..be1f7c3edd --- /dev/null +++ b/cas/cas-server/src/main/resources/etc/cas/config/application.yml @@ -0,0 +1,2 @@ +info: + description: CAS Configuration \ No newline at end of file diff --git a/cas/cas-server/src/main/resources/etc/cas/config/cas.properties b/cas/cas-server/src/main/resources/etc/cas/config/cas.properties new file mode 100644 index 0000000000..47a1477308 --- /dev/null +++ b/cas/cas-server/src/main/resources/etc/cas/config/cas.properties @@ -0,0 +1,7 @@ +cas.server.name: https://cas.example.org:8443 +cas.server.prefix: https://cas.example.org:8443/cas + +cas.adminPagesSecurity.ip=127\.0\.0\.1 + +logging.config: file:/etc/cas/config/log4j2.xml +# cas.serviceRegistry.config.location: classpath:/services diff --git a/cas/cas-server/src/main/resources/etc/cas/config/log4j2.xml b/cas/cas-server/src/main/resources/etc/cas/config/log4j2.xml new file mode 100644 index 0000000000..53b30b4228 --- /dev/null +++ b/cas/cas-server/src/main/resources/etc/cas/config/log4j2.xml @@ -0,0 +1,117 @@ + + + + + + . + + warn + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cas/cas-server/src/main/resources/etc/cas/thekeystore b/cas/cas-server/src/main/resources/etc/cas/thekeystore new file mode 100644 index 0000000000000000000000000000000000000000..86170dff16f95409b7f2857a75cba1094b43b5b1 GIT binary patch literal 2243 zcmchYS5(u962|jSqosf#(j2`+{zbohagVRU` zX+~)a$#-XPQ?gf+s@EGNM>zK8*U@a^mr7E&JTq*02^1?!n9TK5Xg#IOCT5WKz#`Y~y9rm#``uapQiu6@9xUi6XOu^RwqPU1dxY0* z8VcRA0dSERqnHQzLn0I=t!JKz*=z4vN%;={*Fx*`Hs-hnFE|4M;$Z|;0&5bh4^ z;iG`LWUW`KTj3Atd4dGg;~0DICG_3LXeoZS`Zohdi(>2ry=DzYAuA+0?fCYqwy$>K zL9iOCj$FuK`nbQvbB!6(fegNosi^nKqE7Gz!bl;WA-I{5Gew8fE|#HEi6qRX z8VIK&znc=Bed-V+&gibiM^Yks-vivn3A-7Y1n%dC?z5(2nhcJetwJ?(o0I2^#p{RX zqqFA{4S&h$?G7S7yxfd-Txh4y`5L0e$c_ZfS4`ekaL-^WT5C^xj1`l+!ieiQkx9R(x?Jdw0#5Jrd5u8#@BE>3!Ftun{ zV~d@rsPr3)=?-05akqJ~;O7wXr(X~5_gimkE$q)=4|x#Xu!Y6~8&}Rn!Ly$b*ef;M zJxlz(=uV@^pg7_Lvn(&cNu8g?Hf@?*5@T2X_U-;w_vsoD*9X>7q>@BsLaIhV{QYsU zmg5a;s_D*VtsChodeOG|A66SDms(mOil^rB&c+|++8itPMrJqfmRggWqA-$TVYxNO zmTJNnS~3>ULd8SAA{mG?V9K)6dOf|2^7hBPYd>#p?j_sy4V-*vzhIdbWpUhD;lGiK zn9pLz>pZGI5-Zf@Ubvf8OY5|->DaE_D7%J##`o^l{ep7?6p^Xh%z(eoBkb}SWt=() z1i6l*Lws>`Fy$!(41mE4hiRwizY>HBLRR52Ew`Hxo{kC2pJ0J1z#lMQ8>h3 zz|IT1;N(j4|CibR-Ys8@mHhQNg8+`f{LFS(mhLoD9 zzg2z{eRo@Un3XUQCiWlQE+uysveI|}GCIr1Y_l;$kPnDUlRU{D1DFWWU`mx_l*l`y z*Ox9o73yj_ha^4sP$`RzqsTZWuo5PB@~1gUX$g2 zrpmsY-LIQ*&~2=sU7{5!6QPzyaI)_0BHc3)QehGFzq|Wr8`!bs8Oy;2xtvB}RN9&OW6hycj6?#tI{ALz6L_Tu7f!RcrqcYcGeO;*gy8rx%w zkM#Ufy5BjeyKjs3axoD<>$1x6%~_e!DHd7_WSed+F*zS}zwi!R@4w45=MR?hhi$Xg za~v#}+@7xJxABSUT@P11H)McdrC~cz>c=!JX=hx9QvPUtGFQe_PAnZa-$5G3iTJzR zI?T+j+73`#oY9|@yRH-D7D3ATn0v=JJ`fj{bK^F3PE%xB=q-|?_yS_*`PI>wUhQ~; z!D%J)Xb(*CJNTgYnIdcKiSo!9AzIj+rtwwz7==f%Gj>(ZVW-r~hv`)aYO|e%+L8cx r$2(t8yGpIvZ)QewhgS{MlKqldYTq&f_lfyx_^8gsEdFM5g;ms__$ADZ literal 0 HcmV?d00001 diff --git a/cas/cas-server/src/main/resources/etc/cas/thekeystore.crt b/cas/cas-server/src/main/resources/etc/cas/thekeystore.crt new file mode 100644 index 0000000000000000000000000000000000000000..5bd9d5babaa13aeb8f33af053456117325b39d3e GIT binary patch literal 885 zcmXqLVlFgjVv1bA%*4pV#3G-u|AYZA8>d#AN85K^Mn-N{27^pPZUas>=1>+kVJ1I! zLp}o@5QjsU)h97MzZk}6hw+6B1VHj!!kjtz$%#1``NbuMP%&;SV$4Wl26E!OhUSKb z24;rFh6W}kQ9!N*kZTC#($gtTj7rD>!N|(M+{DPwV9>W?gSP!NK<`Xq!w{Q9yl2*P;d4-BQN8_b9XUMLTHU zJ5X@Jh#}x<-*uBiskNKG$zAG{zVV^&ZoN{l{b`fT54@Ybt}x$vvV7jLXcwN)f9`MY z2~NtoBHt)i9l2e#RpyfCuAqnoQl}4ku2W3^AaUxjOYH0J%QoA?S?8EP;kYROJ1uqp zM}OV4WuEi+j`zB*Y*>}6DYn9#)jvUHs~2V$qL-VhrL-@4mG<$#R1C>atUzVF#{EN#v_yOy4&@ccHgJ)+1FW zW=00a#fk><2C~5DmgQp+V-cCqqp7*xcDCS6*Vl!wcb!+0=UwBC9EiZw1Pnw*2H$

6bdcT4uOb$?IYv;P~zpOfaTY@GI<^IM8( z?y(o@)7X;8notTXk6wag=_v%H*Ze0Y9tNxs#7-nQHM+9Q*Iwk-Kcm)Nf5>8%b| z6yMnLSSr8%g|%0*PP_iBj>oavQ|c8gH{NL4&XamLHqhdY1k=yFWs Date: Mon, 20 Nov 2017 17:45:11 +0100 Subject: [PATCH 34/42] added sql file to generate tables and database --- .../src/main/resources/application.properties | 2 +- .../resources/create_test_db_and_users_tbl.sql | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 cas/cas-server/src/main/resources/create_test_db_and_users_tbl.sql diff --git a/cas/cas-server/src/main/resources/application.properties b/cas/cas-server/src/main/resources/application.properties index afacd4cbc1..018fd351ff 100644 --- a/cas/cas-server/src/main/resources/application.properties +++ b/cas/cas-server/src/main/resources/application.properties @@ -109,7 +109,7 @@ cas.authn.jdbc.query[0].sql=SELECT * FROM users WHERE email = ? cas.authn.jdbc.query[0].url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC cas.authn.jdbc.query[0].dialect=org.hibernate.dialect.MySQLDialect cas.authn.jdbc.query[0].user=root -cas.authn.jdbc.query[0].password= +cas.authn.jdbc.query[0].password=root cas.authn.jdbc.query[0].ddlAuto=none #cas.authn.jdbc.query[0].driverClass=com.mysql.jdbc.Driver cas.authn.jdbc.query[0].driverClass=com.mysql.cj.jdbc.Driver diff --git a/cas/cas-server/src/main/resources/create_test_db_and_users_tbl.sql b/cas/cas-server/src/main/resources/create_test_db_and_users_tbl.sql new file mode 100644 index 0000000000..79a4a48a82 --- /dev/null +++ b/cas/cas-server/src/main/resources/create_test_db_and_users_tbl.sql @@ -0,0 +1,16 @@ +-- Dumping database structure for test +CREATE DATABASE IF NOT EXISTS `test` /*!40100 DEFAULT CHARACTER SET latin1 */; +USE `test`; + +-- Dumping structure for table test.users +CREATE TABLE IF NOT EXISTS `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `email` varchar(50) DEFAULT NULL, + `password` text DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; + +/*!40000 ALTER TABLE `users` DISABLE KEYS */; +INSERT INTO `users` (`id`, `email`, `password`) VALUES + (1, 'test@test.com', 'Mellon'); +/*!40000 ALTER TABLE `users` ENABLE KEYS */; \ No newline at end of file From 6b3ba3311953d97302e33808367b49f17e1b0c0d Mon Sep 17 00:00:00 2001 From: Seun Matt Date: Thu, 14 Dec 2017 05:18:00 +0100 Subject: [PATCH 35/42] added source code for VRaptor --- pom.xml | 1 + vraptor/.gitignore | 4 + vraptor/README.md | 13 + vraptor/pom.xml | 134 + .../java/com/baeldung/config/UserInfo.java | 23 + .../baeldung/controllers/AuthController.java | 95 + .../baeldung/controllers/IndexController.java | 40 + .../baeldung/controllers/PostController.java | 84 + .../main/java/com/baeldung/daos/PostDao.java | 54 + .../main/java/com/baeldung/daos/UserDao.java | 51 + .../main/java/com/baeldung/models/Post.java | 105 + .../main/java/com/baeldung/models/User.java | 109 + vraptor/src/main/resources/META-INF/beans.xml | 8 + vraptor/src/main/resources/database.sql | 55 + vraptor/src/main/resources/hibernate.cfg.xml | 31 + vraptor/src/main/resources/log4j.xml | 36 + .../main/resources/templates/auth/login.ftl | 172 + .../resources/templates/auth/register.ftl | 187 + .../src/main/resources/templates/index.ftl | 173 + .../main/resources/templates/posts/add.ftl | 157 + vraptor/src/main/resources/templates/view.ftl | 152 + vraptor/src/main/webapp/META-INF/MANIFEST.MF | 3 + .../main/webapp/WEB-INF/jsp/index/index.jsp | 10 + vraptor/src/main/webapp/WEB-INF/web.xml | 19 + vraptor/src/main/webapp/css/clean-blog.css | 400 + .../src/main/webapp/css/clean-blog.min.css | 5 + vraptor/src/main/webapp/img/about-bg.jpg | Bin 0 -> 33097 bytes vraptor/src/main/webapp/img/contact-bg.jpg | Bin 0 -> 290070 bytes vraptor/src/main/webapp/img/home-bg.jpg | Bin 0 -> 172779 bytes vraptor/src/main/webapp/img/post-bg.jpg | Bin 0 -> 140909 bytes .../src/main/webapp/img/post-sample-image.jpg | Bin 0 -> 115144 bytes vraptor/src/main/webapp/js/clean-blog.js | 40 + vraptor/src/main/webapp/js/clean-blog.min.js | 6 + vraptor/src/main/webapp/js/contact_me.js | 72 + .../main/webapp/js/jqBootstrapValidation.js | 912 ++ .../webapp/vendor/bootstrap/css/bootstrap.css | 6757 ++++++++++ .../vendor/bootstrap/css/bootstrap.min.css | 6 + .../fonts/glyphicons-halflings-regular.eot | Bin 0 -> 20127 bytes .../fonts/glyphicons-halflings-regular.svg | 288 + .../fonts/glyphicons-halflings-regular.ttf | Bin 0 -> 45404 bytes .../fonts/glyphicons-halflings-regular.woff | Bin 0 -> 23424 bytes .../fonts/glyphicons-halflings-regular.woff2 | Bin 0 -> 18028 bytes .../webapp/vendor/bootstrap/js/bootstrap.js | 2377 ++++ .../vendor/bootstrap/js/bootstrap.min.js | 7 + .../vendor/font-awesome/css/font-awesome.css | 2199 +++ .../font-awesome/css/font-awesome.min.css | 4 + .../vendor/font-awesome/fonts/FontAwesome.otf | Bin 0 -> 124988 bytes .../fonts/fontawesome-webfont.eot | Bin 0 -> 76518 bytes .../fonts/fontawesome-webfont.svg | 685 + .../fonts/fontawesome-webfont.ttf | Bin 0 -> 152796 bytes .../fonts/fontawesome-webfont.woff | Bin 0 -> 90412 bytes .../fonts/fontawesome-webfont.woff2 | Bin 0 -> 71896 bytes .../vendor/font-awesome/less/animated.less | 34 + .../font-awesome/less/bordered-pulled.less | 25 + .../webapp/vendor/font-awesome/less/core.less | 12 + .../vendor/font-awesome/less/fixed-width.less | 6 + .../font-awesome/less/font-awesome.less | 18 + .../vendor/font-awesome/less/icons.less | 733 + .../vendor/font-awesome/less/larger.less | 13 + .../webapp/vendor/font-awesome/less/list.less | 19 + .../vendor/font-awesome/less/mixins.less | 60 + .../webapp/vendor/font-awesome/less/path.less | 15 + .../font-awesome/less/rotated-flipped.less | 20 + .../font-awesome/less/screen-reader.less | 5 + .../vendor/font-awesome/less/stacked.less | 20 + .../vendor/font-awesome/less/variables.less | 744 ++ .../vendor/font-awesome/scss/_animated.scss | 34 + .../font-awesome/scss/_bordered-pulled.scss | 25 + .../vendor/font-awesome/scss/_core.scss | 12 + .../font-awesome/scss/_fixed-width.scss | 6 + .../vendor/font-awesome/scss/_icons.scss | 733 + .../vendor/font-awesome/scss/_larger.scss | 13 + .../vendor/font-awesome/scss/_list.scss | 19 + .../vendor/font-awesome/scss/_mixins.scss | 60 + .../vendor/font-awesome/scss/_path.scss | 15 + .../font-awesome/scss/_rotated-flipped.scss | 20 + .../font-awesome/scss/_screen-reader.scss | 5 + .../vendor/font-awesome/scss/_stacked.scss | 20 + .../vendor/font-awesome/scss/_variables.scss | 744 ++ .../font-awesome/scss/font-awesome.scss | 18 + .../src/main/webapp/vendor/jquery/jquery.js | 11008 ++++++++++++++++ .../main/webapp/vendor/jquery/jquery.min.js | 5 + 82 files changed, 29935 insertions(+) create mode 100644 vraptor/.gitignore create mode 100644 vraptor/README.md create mode 100644 vraptor/pom.xml create mode 100644 vraptor/src/main/java/com/baeldung/config/UserInfo.java create mode 100644 vraptor/src/main/java/com/baeldung/controllers/AuthController.java create mode 100644 vraptor/src/main/java/com/baeldung/controllers/IndexController.java create mode 100644 vraptor/src/main/java/com/baeldung/controllers/PostController.java create mode 100644 vraptor/src/main/java/com/baeldung/daos/PostDao.java create mode 100644 vraptor/src/main/java/com/baeldung/daos/UserDao.java create mode 100644 vraptor/src/main/java/com/baeldung/models/Post.java create mode 100644 vraptor/src/main/java/com/baeldung/models/User.java create mode 100644 vraptor/src/main/resources/META-INF/beans.xml create mode 100644 vraptor/src/main/resources/database.sql create mode 100644 vraptor/src/main/resources/hibernate.cfg.xml create mode 100644 vraptor/src/main/resources/log4j.xml create mode 100644 vraptor/src/main/resources/templates/auth/login.ftl create mode 100644 vraptor/src/main/resources/templates/auth/register.ftl create mode 100644 vraptor/src/main/resources/templates/index.ftl create mode 100644 vraptor/src/main/resources/templates/posts/add.ftl create mode 100644 vraptor/src/main/resources/templates/view.ftl create mode 100644 vraptor/src/main/webapp/META-INF/MANIFEST.MF create mode 100644 vraptor/src/main/webapp/WEB-INF/jsp/index/index.jsp create mode 100644 vraptor/src/main/webapp/WEB-INF/web.xml create mode 100644 vraptor/src/main/webapp/css/clean-blog.css create mode 100644 vraptor/src/main/webapp/css/clean-blog.min.css create mode 100644 vraptor/src/main/webapp/img/about-bg.jpg create mode 100644 vraptor/src/main/webapp/img/contact-bg.jpg create mode 100644 vraptor/src/main/webapp/img/home-bg.jpg create mode 100644 vraptor/src/main/webapp/img/post-bg.jpg create mode 100644 vraptor/src/main/webapp/img/post-sample-image.jpg create mode 100644 vraptor/src/main/webapp/js/clean-blog.js create mode 100644 vraptor/src/main/webapp/js/clean-blog.min.js create mode 100644 vraptor/src/main/webapp/js/contact_me.js create mode 100644 vraptor/src/main/webapp/js/jqBootstrapValidation.js create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.css create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.min.css create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.svg create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.js create mode 100644 vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.min.js create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.css create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.min.css create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/fonts/FontAwesome.otf create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.eot create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.svg create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.ttf create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff2 create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/animated.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/bordered-pulled.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/core.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/fixed-width.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/font-awesome.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/icons.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/larger.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/list.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/mixins.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/path.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/rotated-flipped.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/screen-reader.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/stacked.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/less/variables.less create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_animated.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_bordered-pulled.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_core.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_fixed-width.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_icons.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_larger.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_list.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_mixins.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_path.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_rotated-flipped.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_screen-reader.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_stacked.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/_variables.scss create mode 100644 vraptor/src/main/webapp/vendor/font-awesome/scss/font-awesome.scss create mode 100644 vraptor/src/main/webapp/vendor/jquery/jquery.js create mode 100644 vraptor/src/main/webapp/vendor/jquery/jquery.min.js diff --git a/pom.xml b/pom.xml index 2c611e6efe..a5eacf0a7a 100644 --- a/pom.xml +++ b/pom.xml @@ -263,6 +263,7 @@ deeplearning4j spring-boot-admin lucene + vraptor diff --git a/vraptor/.gitignore b/vraptor/.gitignore new file mode 100644 index 0000000000..27dc294cd1 --- /dev/null +++ b/vraptor/.gitignore @@ -0,0 +1,4 @@ + +/target/ +/.idea/ +/src/main/webapp/WEB-INF/classes/ diff --git a/vraptor/README.md b/vraptor/README.md new file mode 100644 index 0000000000..d547fc1274 --- /dev/null +++ b/vraptor/README.md @@ -0,0 +1,13 @@ +# VRaptor blank project + +This is a blank project to help you to use VRaptor. You can easily import in you IDE as Maven project. + +Este é um projeto em branco para ajudar você a usar o VRaptor. Você pode facilmente importá-lo na sua IDE favorita como um projeto Maven. + +Após criar seu projeto você pode rodá-lo com um tomcat7 ou +: + +``` +mvn tomcat7:run +``` + +Cuidado para *jamais* executar `mvn tomcat:run` pois ele usará um tomcat6 (incompatível). diff --git a/vraptor/pom.xml b/vraptor/pom.xml new file mode 100644 index 0000000000..1f094a3465 --- /dev/null +++ b/vraptor/pom.xml @@ -0,0 +1,134 @@ + + 4.0.0 + + com.baeldung + vraptor + 1.0.0 + war + + A demo project to start using VRaptor 4 + + + UTF-8 + 2.1.2.Final + + + + + br.com.caelum + vraptor + 4.2.0-RC3 + + + + org.jboss.weld.servlet + weld-servlet-core + 2.1.2.Final + + + org.jboss.spec.javax.el + jboss-el-api_3.0_spec + + + + + + org.jboss.weld + weld-core-impl + 2.1.2.Final + + + org.jboss.spec.javax.el + jboss-el-api_3.0_spec + + + + + + javax.el + el-api + 2.2 + provided + + + + org.hibernate + hibernate-validator-cdi + 5.1.1.Final + + + + javax.servlet + jstl + 1.2 + + + + javax.servlet + javax.servlet-api + 3.1.0 + provided + + + + org.slf4j + slf4j-log4j12 + 1.7.5 + + + + br.com.caelum.vraptor + vraptor-freemarker + 4.1.0-RC3 + + + + br.com.caelum.vraptor + vraptor-hibernate + 4.0.4 + + + + mysql + mysql-connector-java + 8.0.8-dmr + + + + org.mindrot + jbcrypt + 0.4 + + + + org.freemarker + freemarker + 2.3.27-incubating + + + + + + vraptor + src/main/webapp/WEB-INF/classes + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + org.apache.tomcat.maven + tomcat7-maven-plugin + 2.1 + + / + + + + + diff --git a/vraptor/src/main/java/com/baeldung/config/UserInfo.java b/vraptor/src/main/java/com/baeldung/config/UserInfo.java new file mode 100644 index 0000000000..2613128790 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/config/UserInfo.java @@ -0,0 +1,23 @@ +package com.baeldung.config; + +import com.baeldung.models.User; + +import javax.enterprise.context.SessionScoped; +import java.io.Serializable; + +@SessionScoped +public class UserInfo implements Serializable { + + private User user; + + + public UserInfo() {} + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } +} diff --git a/vraptor/src/main/java/com/baeldung/controllers/AuthController.java b/vraptor/src/main/java/com/baeldung/controllers/AuthController.java new file mode 100644 index 0000000000..7f93e59606 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/controllers/AuthController.java @@ -0,0 +1,95 @@ +package com.baeldung.controllers; + +import br.com.caelum.vraptor.Controller; +import br.com.caelum.vraptor.Path; +import br.com.caelum.vraptor.Result; +import br.com.caelum.vraptor.freemarker.FreemarkerView; +import br.com.caelum.vraptor.validator.Validator; +import com.baeldung.config.UserInfo; +import com.baeldung.daos.UserDao; +import com.baeldung.models.User; +import org.mindrot.jbcrypt.BCrypt; + +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; +import java.util.logging.Logger; + +@Controller +public class AuthController { + + private Validator validator; + private UserDao userDao; + private Result result; + private UserInfo userInfo; + private Logger logger = Logger.getLogger(getClass().getName()); + + public AuthController() { + this(null, null, null, null); + } + + @Inject + public AuthController(Validator validator, UserDao userDao, Result result, UserInfo userInfo) { + this.validator = validator; + this.userDao = userDao; + this.result = result; + this.userInfo = userInfo; + } + + @Path("/register") + public void register(User user, HttpServletRequest request) { + + if(request.getMethod().equals("GET")) { + result.use(FreemarkerView.class).withTemplate("auth/register"); + } + else if(request.getMethod().equals("POST")) { + validator.validate(user); + validator.onErrorRedirectTo(this).register(user, request); + if(!user.getPassword().equals(request.getParameter("password_confirmation"))) { + result.include("error", "Passwords Do Not Match"); + result.redirectTo(this).register(null, request); + } + user.setPassword(BCrypt.hashpw(user.getPassword(), BCrypt.gensalt())); + Object resp = userDao.add(user); + if(resp != null) { + result.include("status", "Registration Successful! Now Login"); + result.redirectTo(this).login(request); + } else { + result.include("error", "There was an error during registration"); + result.redirectTo(this).register(user, request); + } + + } else { + result.notFound(); + } + } + + @Path("/login") + public void login(HttpServletRequest request) { + + if(request.getMethod().equals("GET")) { + result.use(FreemarkerView.class).withTemplate("auth/login"); + } + else if(request.getMethod().equals("POST")) { + + if (request.getParameter("user.email").isEmpty() || request.getParameter("user.password").isEmpty()) { + result.include("error", "Email/Password is Required!"); + result.redirectTo(AuthController.class).login(request); + } + + User user = userDao.findByEmail(request.getParameter("user.email")); + if (Objects.nonNull(user) && BCrypt.checkpw(request.getParameter("user.password"), user.getPassword())) { + userInfo.setUser(user); + result.include("status", "Login Successful!"); + result.redirectTo(IndexController.class).index(); + } else { + result.include("error", "Email/Password Does Not Match!"); + result.redirectTo(AuthController.class).login(request); + } + } + else { + result.include("error", "Invalid Request"); + result.notFound(); + } + } +} diff --git a/vraptor/src/main/java/com/baeldung/controllers/IndexController.java b/vraptor/src/main/java/com/baeldung/controllers/IndexController.java new file mode 100644 index 0000000000..2e3f1f1126 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/controllers/IndexController.java @@ -0,0 +1,40 @@ +package com.baeldung.controllers; + +import br.com.caelum.vraptor.Controller; +import br.com.caelum.vraptor.Path; +import br.com.caelum.vraptor.Result; +import br.com.caelum.vraptor.freemarker.FreemarkerView; +import com.baeldung.daos.PostDao; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; + +@Controller +public class IndexController { + + private PostDao postDao; + private final Result result; + private static final Logger logger = LoggerFactory.getLogger(IndexController.class); + + public IndexController() { + this(null, null); + } + + @Inject + public IndexController(Result result, PostDao postDao) { + this.result = result; + this.postDao = postDao; + } + + @Path("/") + public void index() { + result.include("posts", postDao.all()); + result.use(FreemarkerView.class).withTemplate("index"); + } + + + + + +} \ No newline at end of file diff --git a/vraptor/src/main/java/com/baeldung/controllers/PostController.java b/vraptor/src/main/java/com/baeldung/controllers/PostController.java new file mode 100644 index 0000000000..dfb7589120 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/controllers/PostController.java @@ -0,0 +1,84 @@ +package com.baeldung.controllers; + +import br.com.caelum.vraptor.Controller; +import br.com.caelum.vraptor.Get; +import br.com.caelum.vraptor.Path; +import br.com.caelum.vraptor.Result; +import br.com.caelum.vraptor.freemarker.FreemarkerView; +import br.com.caelum.vraptor.validator.Validator; +import com.baeldung.config.UserInfo; +import com.baeldung.daos.PostDao; +import com.baeldung.models.Post; + +import javax.inject.Inject; +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; +import java.util.logging.Logger; + +@Controller +public class PostController { + + private Result result; + private Logger logger = Logger.getLogger(PostController.class.getName()); + private PostDao postDao; + private UserInfo userInfo; + private Validator validator; + + public PostController() {} + + @Inject + public PostController(Result result, PostDao postDao, UserInfo userInfo, Validator validator) { + this.result = result; + this.postDao = postDao; + this.userInfo = userInfo; + this.validator = validator; + } + + + @Path(value = "/post/add") + public void add(Post post, HttpServletRequest request) { + + if(request.getMethod().equals("GET")) { + + if(Objects.isNull(userInfo.getUser())) { + result.include("error", "Please Login to Proceed"); + result.redirectTo(AuthController.class).login(request); + return; + } + + result.use(FreemarkerView.class).withTemplate("posts/add"); + } + else if(request.getMethod().equals("POST")) { + + post.setAuthor(userInfo.getUser()); + + validator.validate(post); + if(validator.hasErrors()) + result.include("error", "Post's Title (min of 5 chars) and Body (min of 10 chars) is Required"); + validator.onErrorRedirectTo(this).add(post, request); + + Object id = postDao.add(post); + + if(Objects.nonNull(id)) { + result.include("status", "Post Added Successfully"); + result.redirectTo(IndexController.class).index(); + } else { + result.include("error", "There was an error creating the post. Try Again"); + result.redirectTo(this).add(post, request); + } + } + else { + result.include("error", "Invalid Request Type"); + result.redirectTo(IndexController.class).index(); + } + } + + @Get("/posts/{id}") + public void view(int id) { + result.include("post", postDao.findById(id)); + result.use(FreemarkerView.class).withTemplate("view"); + } + + + +} diff --git a/vraptor/src/main/java/com/baeldung/daos/PostDao.java b/vraptor/src/main/java/com/baeldung/daos/PostDao.java new file mode 100644 index 0000000000..d4a8af15b8 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/daos/PostDao.java @@ -0,0 +1,54 @@ +package com.baeldung.daos; + +import com.baeldung.controllers.PostController; +import com.baeldung.models.Post; +import org.hibernate.Session; +import org.hibernate.SessionFactory; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import java.util.List; +import java.util.logging.Logger; + +@RequestScoped +public class PostDao { + + private Logger logger = Logger.getLogger(PostController.class.getName()); + private SessionFactory sessionFactory; + + public PostDao() {} + + @Inject + public PostDao(SessionFactory sessionFactory) { + this.sessionFactory = sessionFactory; + } + + public Object add(Post post) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Object id = session.save(post); + session.getTransaction().commit(); + session.close(); + return id; + } + + public Post findById(int id) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Post post = (Post) session.get(Post.class, id); + session.getTransaction().commit(); + session.close(); + return post; + } + + + public List all() { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + List posts = (List) session.createQuery("FROM Post p").list(); + session.getTransaction().commit(); + session.close(); + return posts; + } + +} diff --git a/vraptor/src/main/java/com/baeldung/daos/UserDao.java b/vraptor/src/main/java/com/baeldung/daos/UserDao.java new file mode 100644 index 0000000000..5e63ff9b26 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/daos/UserDao.java @@ -0,0 +1,51 @@ +package com.baeldung.daos; + +import com.baeldung.models.User; +import org.hibernate.Criteria; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Criterion; +import org.hibernate.criterion.Restrictions; +import org.omg.PortableInterceptor.LOCATION_FORWARD; + +import javax.enterprise.context.RequestScoped; +import javax.inject.Inject; +import java.util.logging.Logger; + +@RequestScoped +public class UserDao { + + SessionFactory sessionFactory; + Logger logger = Logger.getLogger(getClass().getName()); + + public UserDao() { + this(null); + } + + @Inject + public UserDao(SessionFactory sessionFactory) { + this.sessionFactory = sessionFactory; + } + + + public Object add(User user) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Object Id = session.save(user); + session.getTransaction().commit(); + return Id; + } + + public User findByEmail(String email) { + Session session = sessionFactory.openSession(); + session.beginTransaction(); + Criteria criteria = session.createCriteria(User.class); + criteria.add(Restrictions.eq("email", email)); + criteria.setMaxResults(1); + User u = (User) criteria.uniqueResult(); + session.getTransaction().commit(); + session.close(); + return u; + } + +} diff --git a/vraptor/src/main/java/com/baeldung/models/Post.java b/vraptor/src/main/java/com/baeldung/models/Post.java new file mode 100644 index 0000000000..6beb6e1682 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/models/Post.java @@ -0,0 +1,105 @@ +package com.baeldung.models; + + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.logging.Logger; + +@Entity +@Table(name = "posts") +public class Post { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @NotNull @Size(min = 10) + @Column(columnDefinition = "longtext") + private String post; + + @NotNull @Size(min = 5, max = 100) + @Column(unique = true) + private String title; + + @NotNull + @ManyToOne(targetEntity = User.class, optional = false) + private User author; + + @Column(name = "created_at") + private Date createdAt; + + @Column(name = "updated_at") + private Date updatedAt; + + @Transient + private Logger logger = Logger.getLogger(getClass().getName()); + + public Post() { + createdAt = new Date(); + updatedAt = new Date(); + } + + public Post(String title, String post, User author) { + this.title = title; + this.post = post; + this.author = author; + createdAt = new Date(); + updatedAt = new Date(); + } + + public int getId() { + return id; + } + + public String getPost() { + return post; + } + + public void setPost(String post) { + this.post = post; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public User getAuthor() { + return author; + } + + public void setAuthor(User author) { + this.author = author; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + @Override + public String toString() { + return "title: " + this.title + + "\npost: " + this.post + + "\nauthor: " + this.author + +"\ncreatetdAt: " + this.createdAt + + "\nupdatedAt: " + this.updatedAt; + } +} diff --git a/vraptor/src/main/java/com/baeldung/models/User.java b/vraptor/src/main/java/com/baeldung/models/User.java new file mode 100644 index 0000000000..69af299ca6 --- /dev/null +++ b/vraptor/src/main/java/com/baeldung/models/User.java @@ -0,0 +1,109 @@ +package com.baeldung.models; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import javax.validation.constraints.Size; +import java.time.LocalDateTime; +import java.util.Date; + +@Entity +@Table(name = "users") +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int id; + + @NotNull + @Size(min=3, max=255) + private String name; + + @Column(unique = true) + @NotNull @Pattern(regexp = "" + + "(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+" + + "(?:\\\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"" + + "(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\" + + "[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@" + + "(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9]" + + "(?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}" + + "(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]" + + ":(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\" + + "[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])", + message = "Invalid Email Address") + private String email; + + @NotNull + @Size(min=6, max=255) + private String password; + + @Column(name = "created_at") + private Date createdAt; + + @Column(name = "updated_at") + private Date updatedAt; + + public User() { + updatedAt = new Date(); + createdAt = new Date(); + } + + public User(String name, String email, String password) { + this.name = name; + this.email = email; + this.password = password; + createdAt = new Date(); + updatedAt = new Date(); + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + + @Override + public String toString() { + return "Name: " + this.name + + "\nEmail: " + this.email; + } +} diff --git a/vraptor/src/main/resources/META-INF/beans.xml b/vraptor/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000000..9e32823437 --- /dev/null +++ b/vraptor/src/main/resources/META-INF/beans.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/vraptor/src/main/resources/database.sql b/vraptor/src/main/resources/database.sql new file mode 100644 index 0000000000..bd4a1a6bde --- /dev/null +++ b/vraptor/src/main/resources/database.sql @@ -0,0 +1,55 @@ +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET NAMES utf8 */; +/*!50503 SET NAMES utf8mb4 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; + +CREATE DATABASE IF NOT EXISTS `larablog` /*!40100 DEFAULT CHARACTER SET latin1 */; +USE `larablog`; + +CREATE TABLE IF NOT EXISTS `posts` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `title` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `post` longtext COLLATE utf8mb4_unicode_ci NOT NULL, + `author_id` int(11) DEFAULT NULL, + `published` tinyint(1) NOT NULL DEFAULT 0, + `views` int(11) NOT NULL DEFAULT 0, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +DELETE FROM `posts`; +/*!40000 ALTER TABLE `posts` DISABLE KEYS */; +INSERT INTO `posts` (`id`, `title`, `post`, `author_id`, `published`, `views`, `created_at`, `updated_at`) VALUES + (2, 'Sample Post 2', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:19', NULL), + (3, 'Sample Post 3', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:22', NULL), + (4, 'Sample Post 2212', 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc lobortis, ante in pretium volutpat, risus metus molestie odio, non placerat magna diam sit amet augue. Donec ullamcorper ornare mauris, id bibendum lacus viverra vel. Curabitur in pellentesque metus. Quisque gravida molestie turpis, id tincidunt purus viverra vitae. In sollicitudin, arcu at interdum sagittis, massa mi cursus diam, eu sodales purus erat vitae dui. Curabitur tempus urna consequat odio pretium pellentesque. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tincidunt eros orci, sit amet pharetra eros accumsan vitae. Quisque a massa id nisi sodales rhoncus sed ut ante. Duis sed augue non velit feugiat varius eget eu velit. Nam commodo posuere massa sed convallis. Phasellus dapibus commodo lectus, vitae gravida lorem. Donec molestie a nisi ac mattis. Interdum et malesuada fames ac ante ipsum primis in faucibus. Aliquam tempor ante et rutrum consequat.', 11, 1, 100, '2017-12-12 18:48:24', NULL), + (9, 'This is a Test', 'HJh sahjnasj hjas hjashj ashj ashj ashjsa sahjass naskjasnmas', 11, 0, 0, NULL, NULL), + (10, 'Test Title', 'hjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj', 11, 0, 0, NULL, NULL), + (11, 'Test Title 2', 'This is a as as sa asmas as as as as as', 11, 0, 0, NULL, NULL), + (12, 'This is another Test Article', 'There are many variations of passages of Lorem Ipsum available, but the majority have suffered alteration in some form, by injected humour, or randomised words which don\'t look even slightly believable. If you are going to use a passage of Lorem Ipsum, you need to be sure there isn\'t anything embarrassing hidden in the middle of text. All the Lorem Ipsum generators on the Internet tend to repeat predefined chunks as necessary, making this the first true generator on the Internet. It uses a dictionary of over 200 Latin words, combined with a handful of model sentence structures, to generate Lorem Ipsum which looks reasonable. The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.', 11, 0, 0, '2017-12-14 03:48:52', '2017-12-14 03:48:52'); +/*!40000 ALTER TABLE `posts` ENABLE KEYS */; + +CREATE TABLE IF NOT EXISTS `users` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `email` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `password` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, + `is_admin` int(10) unsigned NULL DEFAULT 0, + `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `users_email_unique` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +DELETE FROM `users`; +/*!40000 ALTER TABLE `users` DISABLE KEYS */; +INSERT INTO `users` (`id`, `name`, `email`, `password`, `is_admin`, `remember_token`, `created_at`, `updated_at`) VALUES + (11, 'Test User', 'test@test.com', '$2a$10$i/TgIqC3xRMnqCEbDryfxuZqhfM/qekfsaQUjBVPUKiiB3Nofr/wO', 0, NULL, '2017-12-14 03:40:57', '2017-12-14 03:40:57'); +/*!40000 ALTER TABLE `users` ENABLE KEYS */; + +/*!40101 SET SQL_MODE=IFNULL(@OLD_SQL_MODE, '') */; +/*!40014 SET FOREIGN_KEY_CHECKS=IF(@OLD_FOREIGN_KEY_CHECKS IS NULL, 1, @OLD_FOREIGN_KEY_CHECKS) */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; diff --git a/vraptor/src/main/resources/hibernate.cfg.xml b/vraptor/src/main/resources/hibernate.cfg.xml new file mode 100644 index 0000000000..dad0b44683 --- /dev/null +++ b/vraptor/src/main/resources/hibernate.cfg.xml @@ -0,0 +1,31 @@ + + + + + + org.hibernate.dialect.MySQLDialect + + + com.mysql.cj.jdbc.Driver + + + jdbc:mysql://127.0.0.1:3306/larablog?serverTimezone=UTC + + + root + + + root + + + true + + + true + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/resources/log4j.xml b/vraptor/src/main/resources/log4j.xml new file mode 100644 index 0000000000..4e4c4636bc --- /dev/null +++ b/vraptor/src/main/resources/log4j.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/auth/login.ftl b/vraptor/src/main/resources/templates/auth/login.ftl new file mode 100644 index 0000000000..56ab2900cd --- /dev/null +++ b/vraptor/src/main/resources/templates/auth/login.ftl @@ -0,0 +1,172 @@ + + + + + + + + + + + + Clean Blog - Contact + + + + + + + + + + + + + + + + + + + + + +

+ +
+
+
+
+
+

Clean Blog

+
+ A Clean Blog Theme by Start Bootstrap +
+
+
+
+
+ + +
+
+
+

Login

+
${error!""} ${status!""}
+
+
+
+ + +

+
+
+
+
+
+ + +

+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/auth/register.ftl b/vraptor/src/main/resources/templates/auth/register.ftl new file mode 100644 index 0000000000..9ac8d42621 --- /dev/null +++ b/vraptor/src/main/resources/templates/auth/register.ftl @@ -0,0 +1,187 @@ + + + + + + + + + + + + Clean Blog - Contact + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Clean Blog

+
+ A Clean Blog Theme by Start Bootstrap +
+
+
+
+
+ + +
+
+
+

Register

+
${error!""} ${status!""}
+
+
+
+ + +

+
+
+
+
+ + +

+
+
+
+
+
+ + +

+
+
+
+
+
+ + +

+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/index.ftl b/vraptor/src/main/resources/templates/index.ftl new file mode 100644 index 0000000000..d65d73f534 --- /dev/null +++ b/vraptor/src/main/resources/templates/index.ftl @@ -0,0 +1,173 @@ + + + + + + + + + + + + Clean Blog + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

Clean Blog

+
+ A Clean Blog Theme by Start Bootstrap +
+
+
+
+
+ + +
+
+
+
${error!""} ${status!""}
+ <#list posts as post> +
+ +

+ ${post.title} +

+

+ <#if (post.post?length > 50) >${post.post?substring(0,50)} <#else> ${post.post} +

+
+ +
+
+ <#else> +

+ NO POSTS YET! +

+ + + +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/posts/add.ftl b/vraptor/src/main/resources/templates/posts/add.ftl new file mode 100644 index 0000000000..3ef744a49e --- /dev/null +++ b/vraptor/src/main/resources/templates/posts/add.ftl @@ -0,0 +1,157 @@ + + + + + + + + + + + + Clean Blog - Contact + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

Compose the Next Viral Message!

+
${error!""} ${status!""}
+
+
+
+ + +

+
+
+
+
+ + +

+
+
+
+
+
+
+ +
+
+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + diff --git a/vraptor/src/main/resources/templates/view.ftl b/vraptor/src/main/resources/templates/view.ftl new file mode 100644 index 0000000000..96525cc93a --- /dev/null +++ b/vraptor/src/main/resources/templates/view.ftl @@ -0,0 +1,152 @@ + + + + + + + + + + + + Clean Blog - Sample Post + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
+

${post.title}

+ Posted by Start Bootstrap on ${post.createdAt!''} +
+
+
+
+
+ + +
+
+
+
+

+ ${post.post} +

+
+
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/META-INF/MANIFEST.MF b/vraptor/src/main/webapp/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..254272e1c0 --- /dev/null +++ b/vraptor/src/main/webapp/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/vraptor/src/main/webapp/WEB-INF/jsp/index/index.jsp b/vraptor/src/main/webapp/WEB-INF/jsp/index/index.jsp new file mode 100644 index 0000000000..61efbb9e1d --- /dev/null +++ b/vraptor/src/main/webapp/WEB-INF/jsp/index/index.jsp @@ -0,0 +1,10 @@ + + + + +VRaptor Blank Project + + + It works!! JSP ${variable} ${linkTo[IndexController].index} + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/WEB-INF/web.xml b/vraptor/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000000..f778a0e779 --- /dev/null +++ b/vraptor/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,19 @@ + + + + vraptor-blank-project + + + javax.servlet.jsp.jstl.fmt.localizationContext + messages + + + + org.jboss.weld.environment.servlet.Listener + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/css/clean-blog.css b/vraptor/src/main/webapp/css/clean-blog.css new file mode 100644 index 0000000000..04a94f0e0f --- /dev/null +++ b/vraptor/src/main/webapp/css/clean-blog.css @@ -0,0 +1,400 @@ +/*! + * Start Bootstrap - Clean Blog v3.3.7+1 (http://startbootstrap.com/template-overviews/clean-blog) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ +body { + font-family: 'Lora', 'Times New Roman', serif; + font-size: 20px; + color: #333333; +} +p { + line-height: 1.5; + margin: 30px 0; +} +p a { + text-decoration: underline; +} +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 800; +} +a { + color: #333333; +} +a:hover, +a:focus { + color: #0085A1; +} +a img:hover, +a img:focus { + cursor: zoom-in; +} +blockquote { + color: #777777; + font-style: italic; +} +hr.small { + max-width: 100px; + margin: 15px auto; + border-width: 4px; + border-color: white; +} +.navbar-custom { + position: absolute; + top: 0; + left: 0; + width: 100%; + z-index: 3; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; +} +.navbar-custom .navbar-brand { + font-weight: 800; +} +.navbar-custom .navbar-header .navbar-toggle { + color: #777777; + font-weight: 800; + text-transform: uppercase; + font-size: 12px; +} +.navbar-custom .nav li a { + text-transform: uppercase; + font-size: 12px; + font-weight: 800; + letter-spacing: 1px; +} +@media only screen and (min-width: 768px) { + .navbar-custom { + background: transparent; + border-bottom: 1px solid transparent; + } + .navbar-custom .navbar-brand { + color: white; + padding: 20px; + } + .navbar-custom .navbar-brand:hover, + .navbar-custom .navbar-brand:focus { + color: rgba(255, 255, 255, 0.8); + } + .navbar-custom .nav li a { + color: white; + padding: 20px; + } + .navbar-custom .nav li a:hover, + .navbar-custom .nav li a:focus { + color: rgba(255, 255, 255, 0.8); + } +} +@media only screen and (min-width: 1170px) { + .navbar-custom { + -webkit-transition: background-color 0.3s; + -moz-transition: background-color 0.3s; + transition: background-color 0.3s; + /* Force Hardware Acceleration in WebKit */ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + } + .navbar-custom.is-fixed { + /* when the user scrolls down, we hide the header right above the viewport */ + position: fixed; + top: -61px; + background-color: rgba(255, 255, 255, 0.9); + border-bottom: 1px solid #f2f2f2; + -webkit-transition: -webkit-transform 0.3s; + -moz-transition: -moz-transform 0.3s; + transition: transform 0.3s; + } + .navbar-custom.is-fixed .navbar-brand { + color: #333333; + } + .navbar-custom.is-fixed .navbar-brand:hover, + .navbar-custom.is-fixed .navbar-brand:focus { + color: #0085A1; + } + .navbar-custom.is-fixed .nav li a { + color: #333333; + } + .navbar-custom.is-fixed .nav li a:hover, + .navbar-custom.is-fixed .nav li a:focus { + color: #0085A1; + } + .navbar-custom.is-visible { + /* if the user changes the scrolling direction, we show the header */ + -webkit-transform: translate3d(0, 100%, 0); + -moz-transform: translate3d(0, 100%, 0); + -ms-transform: translate3d(0, 100%, 0); + -o-transform: translate3d(0, 100%, 0); + transform: translate3d(0, 100%, 0); + } +} +.intro-header { + background-color: #777777; + background: no-repeat center center; + background-attachment: scroll; + -webkit-background-size: cover; + -moz-background-size: cover; + background-size: cover; + -o-background-size: cover; + margin-bottom: 50px; +} +.intro-header .site-heading, +.intro-header .post-heading, +.intro-header .page-heading { + padding: 100px 0 50px; + color: white; +} +@media only screen and (min-width: 768px) { + .intro-header .site-heading, + .intro-header .post-heading, + .intro-header .page-heading { + padding: 150px 0; + } +} +.intro-header .site-heading, +.intro-header .page-heading { + text-align: center; +} +.intro-header .site-heading h1, +.intro-header .page-heading h1 { + margin-top: 0; + font-size: 50px; +} +.intro-header .site-heading .subheading, +.intro-header .page-heading .subheading { + font-size: 24px; + line-height: 1.1; + display: block; + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-weight: 300; + margin: 10px 0 0; +} +@media only screen and (min-width: 768px) { + .intro-header .site-heading h1, + .intro-header .page-heading h1 { + font-size: 80px; + } +} +.intro-header .post-heading h1 { + font-size: 35px; +} +.intro-header .post-heading .subheading, +.intro-header .post-heading .meta { + line-height: 1.1; + display: block; +} +.intro-header .post-heading .subheading { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 24px; + margin: 10px 0 30px; + font-weight: 600; +} +.intro-header .post-heading .meta { + font-family: 'Lora', 'Times New Roman', serif; + font-style: italic; + font-weight: 300; + font-size: 20px; +} +.intro-header .post-heading .meta a { + color: white; +} +@media only screen and (min-width: 768px) { + .intro-header .post-heading h1 { + font-size: 55px; + } + .intro-header .post-heading .subheading { + font-size: 30px; + } +} +.post-preview > a { + color: #333333; +} +.post-preview > a:hover, +.post-preview > a:focus { + text-decoration: none; + color: #0085A1; +} +.post-preview > a > .post-title { + font-size: 30px; + margin-top: 30px; + margin-bottom: 10px; +} +.post-preview > a > .post-subtitle { + margin: 0; + font-weight: 300; + margin-bottom: 10px; +} +.post-preview > .post-meta { + color: #777777; + font-size: 18px; + font-style: italic; + margin-top: 0; +} +.post-preview > .post-meta > a { + text-decoration: none; + color: #333333; +} +.post-preview > .post-meta > a:hover, +.post-preview > .post-meta > a:focus { + color: #0085A1; + text-decoration: underline; +} +@media only screen and (min-width: 768px) { + .post-preview > a > .post-title { + font-size: 36px; + } +} +.section-heading { + font-size: 36px; + margin-top: 60px; + font-weight: 700; +} +.caption { + text-align: center; + font-size: 14px; + padding: 10px; + font-style: italic; + margin: 0; + display: block; + border-bottom-right-radius: 5px; + border-bottom-left-radius: 5px; +} +footer { + padding: 50px 0 65px; +} +footer .list-inline { + margin: 0; + padding: 0; +} +footer .copyright { + font-size: 14px; + text-align: center; + margin-bottom: 0; +} +.floating-label-form-group { + font-size: 14px; + position: relative; + margin-bottom: 0; + padding-bottom: 0.5em; + border-bottom: 1px solid #eeeeee; +} +.floating-label-form-group input, +.floating-label-form-group textarea { + z-index: 1; + position: relative; + padding-right: 0; + padding-left: 0; + border: none; + border-radius: 0; + font-size: 1.5em; + background: none; + box-shadow: none !important; + resize: none; +} +.floating-label-form-group label { + display: block; + z-index: 0; + position: relative; + top: 2em; + margin: 0; + font-size: 0.85em; + line-height: 1.764705882em; + vertical-align: middle; + vertical-align: baseline; + opacity: 0; + -webkit-transition: top 0.3s ease,opacity 0.3s ease; + -moz-transition: top 0.3s ease,opacity 0.3s ease; + -ms-transition: top 0.3s ease,opacity 0.3s ease; + transition: top 0.3s ease,opacity 0.3s ease; +} +.floating-label-form-group::not(:first-child) { + padding-left: 14px; + border-left: 1px solid #eeeeee; +} +.floating-label-form-group-with-value label { + top: 0; + opacity: 1; +} +.floating-label-form-group-with-focus label { + color: #0085A1; +} +form .row:first-child .floating-label-form-group { + border-top: 1px solid #eeeeee; +} +.btn { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-transform: uppercase; + font-size: 14px; + font-weight: 800; + letter-spacing: 1px; + border-radius: 0; + padding: 15px 25px; +} +.btn-lg { + font-size: 16px; + padding: 25px 35px; +} +.btn-default:hover, +.btn-default:focus { + background-color: #0085A1; + border: 1px solid #0085A1; + color: white; +} +.pager { + margin: 20px 0 0; +} +.pager li > a, +.pager li > span { + font-family: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif; + text-transform: uppercase; + font-size: 14px; + font-weight: 800; + letter-spacing: 1px; + padding: 15px 25px; + background-color: white; + border-radius: 0; +} +.pager li > a:hover, +.pager li > a:focus { + color: white; + background-color: #0085A1; + border: 1px solid #0085A1; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777777; + background-color: #333333; + cursor: not-allowed; +} +::-moz-selection { + color: white; + text-shadow: none; + background: #0085A1; +} +::selection { + color: white; + text-shadow: none; + background: #0085A1; +} +img::selection { + color: white; + background: transparent; +} +img::-moz-selection { + color: white; + background: transparent; +} +body { + -webkit-tap-highlight-color: #0085A1; +} diff --git a/vraptor/src/main/webapp/css/clean-blog.min.css b/vraptor/src/main/webapp/css/clean-blog.min.css new file mode 100644 index 0000000000..faa3794436 --- /dev/null +++ b/vraptor/src/main/webapp/css/clean-blog.min.css @@ -0,0 +1,5 @@ +/*! + * Start Bootstrap - Clean Blog v3.3.7+1 (http://startbootstrap.com/template-overviews/clean-blog) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */a,body{color:#333}.navbar-custom .nav li a,.navbar-custom .navbar-brand,h1,h2,h3,h4,h5,h6{font-weight:800}.caption,.intro-header .page-heading,.intro-header .site-heading,footer .copyright{text-align:center}body{font-family:Lora,'Times New Roman',serif;font-size:20px;-webkit-tap-highlight-color:#0085A1}.intro-header .page-heading .subheading,.intro-header .post-heading .subheading,.intro-header .site-heading .subheading,.navbar-custom,h1,h2,h3,h4,h5,h6{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif}p{line-height:1.5;margin:30px 0}p a{text-decoration:underline}a:focus,a:hover{color:#0085A1}a img:focus,a img:hover{cursor:zoom-in}blockquote{color:#777;font-style:italic}hr.small{max-width:100px;margin:15px auto;border-width:4px;border-color:#fff}.navbar-custom{position:absolute;top:0;left:0;width:100%;z-index:3}.navbar-custom .navbar-header .navbar-toggle{color:#777;font-weight:800;text-transform:uppercase;font-size:12px}.navbar-custom .nav li a{text-transform:uppercase;font-size:12px;letter-spacing:1px}@media only screen and (min-width:768px){.navbar-custom{background:0 0;border-bottom:1px solid transparent}.navbar-custom .navbar-brand{color:#fff;padding:20px}.navbar-custom .navbar-brand:focus,.navbar-custom .navbar-brand:hover{color:rgba(255,255,255,.8)}.navbar-custom .nav li a{color:#fff;padding:20px}.navbar-custom .nav li a:focus,.navbar-custom .nav li a:hover{color:rgba(255,255,255,.8)}}@media only screen and (min-width:1170px){.navbar-custom{-webkit-transition:background-color .3s;-moz-transition:background-color .3s;transition:background-color .3s;-webkit-transform:translate3d(0,0,0);-moz-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);-o-transform:translate3d(0,0,0);transform:translate3d(0,0,0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.navbar-custom.is-fixed{position:fixed;top:-61px;background-color:rgba(255,255,255,.9);border-bottom:1px solid #f2f2f2;-webkit-transition:-webkit-transform .3s;-moz-transition:-moz-transform .3s;transition:transform .3s}.navbar-custom.is-fixed .navbar-brand{color:#333}.navbar-custom.is-fixed .navbar-brand:focus,.navbar-custom.is-fixed .navbar-brand:hover{color:#0085A1}.navbar-custom.is-fixed .nav li a{color:#333}.navbar-custom.is-fixed .nav li a:focus,.navbar-custom.is-fixed .nav li a:hover{color:#0085A1}.navbar-custom.is-visible{-webkit-transform:translate3d(0,100%,0);-moz-transform:translate3d(0,100%,0);-ms-transform:translate3d(0,100%,0);-o-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.intro-header{background:center center no-repeat;-webkit-background-size:cover;-moz-background-size:cover;background-size:cover;-o-background-size:cover;margin-bottom:50px}.intro-header .page-heading,.intro-header .post-heading,.intro-header .site-heading{padding:100px 0 50px;color:#fff}.intro-header .page-heading h1,.intro-header .site-heading h1{margin-top:0;font-size:50px}.intro-header .page-heading .subheading,.intro-header .site-heading .subheading{font-size:24px;line-height:1.1;display:block;font-weight:300;margin:10px 0 0}@media only screen and (min-width:768px){.intro-header .page-heading,.intro-header .post-heading,.intro-header .site-heading{padding:150px 0}.intro-header .page-heading h1,.intro-header .site-heading h1{font-size:80px}}.intro-header .post-heading h1{font-size:35px}.intro-header .post-heading .meta,.intro-header .post-heading .subheading{line-height:1.1;display:block}.intro-header .post-heading .subheading{font-size:24px;margin:10px 0 30px;font-weight:600}.intro-header .post-heading .meta{font-family:Lora,'Times New Roman',serif;font-style:italic;font-weight:300;font-size:20px}.intro-header .post-heading .meta a{color:#fff}@media only screen and (min-width:768px){.intro-header .post-heading h1{font-size:55px}.intro-header .post-heading .subheading{font-size:30px}}.post-preview>a{color:#333}.post-preview>a:focus,.post-preview>a:hover{text-decoration:none;color:#0085A1}.post-preview>a>.post-title{font-size:30px;margin-top:30px;margin-bottom:10px}.post-preview>a>.post-subtitle{margin:0 0 10px;font-weight:300}.post-preview>.post-meta{color:#777;font-size:18px;font-style:italic;margin-top:0}.post-preview>.post-meta>a{text-decoration:none;color:#333}.post-preview>.post-meta>a:focus,.post-preview>.post-meta>a:hover{color:#0085A1;text-decoration:underline}@media only screen and (min-width:768px){.post-preview>a>.post-title{font-size:36px}}.section-heading{font-size:36px;margin-top:60px;font-weight:700}.btn,.pager li>a,.pager li>span{font-family:'Open Sans','Helvetica Neue',Helvetica,Arial,sans-serif;text-transform:uppercase;font-weight:800;letter-spacing:1px}.caption{font-size:14px;padding:10px;font-style:italic;margin:0;display:block;border-bottom-right-radius:5px;border-bottom-left-radius:5px}footer{padding:50px 0 65px}footer .list-inline{margin:0;padding:0}footer .copyright{font-size:14px;margin-bottom:0}.floating-label-form-group{font-size:14px;position:relative;margin-bottom:0;padding-bottom:.5em;border-bottom:1px solid #eee}.floating-label-form-group input,.floating-label-form-group textarea{z-index:1;position:relative;padding-right:0;padding-left:0;border:none;border-radius:0;font-size:1.5em;background:0 0;box-shadow:none!important;resize:none}.floating-label-form-group label{display:block;z-index:0;position:relative;top:2em;margin:0;font-size:.85em;line-height:1.764705882em;vertical-align:middle;vertical-align:baseline;opacity:0;-webkit-transition:top .3s ease,opacity .3s ease;-moz-transition:top .3s ease,opacity .3s ease;-ms-transition:top .3s ease,opacity .3s ease;transition:top .3s ease,opacity .3s ease}.floating-label-form-group::not(:first-child){padding-left:14px;border-left:1px solid #eee}.floating-label-form-group-with-value label{top:0;opacity:1}.floating-label-form-group-with-focus label{color:#0085A1}form .row:first-child .floating-label-form-group{border-top:1px solid #eee}.btn{font-size:14px;border-radius:0;padding:15px 25px}.btn-lg{font-size:16px;padding:25px 35px}.btn-default:focus,.btn-default:hover{background-color:#0085A1;border:1px solid #0085A1;color:#fff}.pager{margin:20px 0 0}.pager li>a,.pager li>span{font-size:14px;padding:15px 25px;background-color:#fff;border-radius:0}.pager li>a:focus,.pager li>a:hover{color:#fff;background-color:#0085A1;border:1px solid #0085A1}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;background-color:#333;cursor:not-allowed}::-moz-selection{color:#fff;text-shadow:none;background:#0085A1}::selection{color:#fff;text-shadow:none;background:#0085A1}img::selection{color:#fff;background:0 0}img::-moz-selection{color:#fff;background:0 0} \ No newline at end of file diff --git a/vraptor/src/main/webapp/img/about-bg.jpg b/vraptor/src/main/webapp/img/about-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..af6d4d5cd1629f4cd396ced9b6c4302b24ec884b GIT binary patch literal 33097 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

@Z-2a*BRd+m_LKaU|KQH!g_W;; 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

8P(1GQRo*SRA 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

jYdCZgq3z;a905My}?ea1JCc3}Z=Ty_k`y1D3U( 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 z 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 z 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 Sk3UKZ`)&UK?D*cUEC1P4buf(p literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/img/home-bg.jpg b/vraptor/src/main/webapp/img/home-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a4d2108a3fc3c20414a6065d1a019d5bd788b8fd GIT binary patch literal 172779 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�-L^x4&McZ!dP@>a=XL}z6y<)W= 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 literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/img/post-bg.jpg b/vraptor/src/main/webapp/img/post-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..21750a49b05043749df1d71e2ddcc3ee933a02ae GIT binary patch literal 140909 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­rP^1HmX!sBJ94Sf*ma^&0Ax4)M?q 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 z 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⪼1uZQRCHW?a3^Ud0 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 literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/img/post-sample-image.jpg b/vraptor/src/main/webapp/img/post-sample-image.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3fc4282987a99a4e54440480e0e54136e7d241d4 GIT binary patch literal 115144 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�M9e9MSx4n-hEiy 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 literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/js/clean-blog.js b/vraptor/src/main/webapp/js/clean-blog.js new file mode 100644 index 0000000000..26a60cce5f --- /dev/null +++ b/vraptor/src/main/webapp/js/clean-blog.js @@ -0,0 +1,40 @@ +// Floating label headings for the contact form +$(function() { + $("body").on("input propertychange", ".floating-label-form-group", function(e) { + $(this).toggleClass("floating-label-form-group-with-value", !!$(e.target).val()); + }).on("focus", ".floating-label-form-group", function() { + $(this).addClass("floating-label-form-group-with-focus"); + }).on("blur", ".floating-label-form-group", function() { + $(this).removeClass("floating-label-form-group-with-focus"); + }); +}); + +// Navigation Scripts to Show Header on Scroll-Up +jQuery(document).ready(function($) { + var MQL = 1170; + + //primary navigation slide-in effect + if ($(window).width() > MQL) { + var headerHeight = $('.navbar-custom').height(); + $(window).on('scroll', { + previousTop: 0 + }, + function() { + var currentTop = $(window).scrollTop(); + //check if user is scrolling up + if (currentTop < this.previousTop) { + //if scrolling up... + if (currentTop > 0 && $('.navbar-custom').hasClass('is-fixed')) { + $('.navbar-custom').addClass('is-visible'); + } else { + $('.navbar-custom').removeClass('is-visible is-fixed'); + } + } else if (currentTop > this.previousTop) { + //if scrolling down... + $('.navbar-custom').removeClass('is-visible'); + if (currentTop > headerHeight && !$('.navbar-custom').hasClass('is-fixed')) $('.navbar-custom').addClass('is-fixed'); + } + this.previousTop = currentTop; + }); + } +}); diff --git a/vraptor/src/main/webapp/js/clean-blog.min.js b/vraptor/src/main/webapp/js/clean-blog.min.js new file mode 100644 index 0000000000..852db7e938 --- /dev/null +++ b/vraptor/src/main/webapp/js/clean-blog.min.js @@ -0,0 +1,6 @@ +/*! + * Start Bootstrap - Clean Blog v3.3.7+1 (http://startbootstrap.com/template-overviews/clean-blog) + * Copyright 2013-2016 Start Bootstrap + * Licensed under MIT (https://github.com/BlackrockDigital/startbootstrap/blob/gh-pages/LICENSE) + */ +$(function(){$("body").on("input propertychange",".floating-label-form-group",function(o){$(this).toggleClass("floating-label-form-group-with-value",!!$(o.target).val())}).on("focus",".floating-label-form-group",function(){$(this).addClass("floating-label-form-group-with-focus")}).on("blur",".floating-label-form-group",function(){$(this).removeClass("floating-label-form-group-with-focus")})}),jQuery(document).ready(function(o){var s=1170;if(o(window).width()>s){var i=o(".navbar-custom").height();o(window).on("scroll",{previousTop:0},function(){var s=o(window).scrollTop();s0&&o(".navbar-custom").hasClass("is-fixed")?o(".navbar-custom").addClass("is-visible"):o(".navbar-custom").removeClass("is-visible is-fixed"):s>this.previousTop&&(o(".navbar-custom").removeClass("is-visible"),s>i&&!o(".navbar-custom").hasClass("is-fixed")&&o(".navbar-custom").addClass("is-fixed")),this.previousTop=s})}}); \ No newline at end of file diff --git a/vraptor/src/main/webapp/js/contact_me.js b/vraptor/src/main/webapp/js/contact_me.js new file mode 100644 index 0000000000..c3d8ecce26 --- /dev/null +++ b/vraptor/src/main/webapp/js/contact_me.js @@ -0,0 +1,72 @@ +// Contact Form Scripts + +$(function() { + + $("#contactForm input,#contactForm textarea").jqBootstrapValidation({ + preventSubmit: true, + submitError: function($form, event, errors) { + // additional error messages or events + }, + submitSuccess: function($form, event) { + event.preventDefault(); // prevent default submit behaviour + // get values from FORM + var name = $("input#name").val(); + var email = $("input#email").val(); + var phone = $("input#phone").val(); + var message = $("textarea#message").val(); + var firstName = name; // For Success/Failure Message + // Check for white space in name for Success/Fail message + if (firstName.indexOf(' ') >= 0) { + firstName = name.split(' ').slice(0, -1).join(' '); + } + $.ajax({ + url: "././mail/contact_me.php", + type: "POST", + data: { + name: name, + phone: phone, + email: email, + message: message + }, + cache: false, + success: function() { + // Success message + $('#success').html("

'); + + //clear all fields + $('#contactForm').trigger("reset"); + }, + error: function() { + // Fail message + $('#success').html("
"); + $('#success > .alert-danger').html(""); + $('#success > .alert-danger').append("Sorry " + firstName + ", it seems that my mail server is not responding. Please try again later!"); + $('#success > .alert-danger').append('
'); + //clear all fields + $('#contactForm').trigger("reset"); + }, + }); + }, + filter: function() { + return $(this).is(":visible"); + }, + }); + + $("a[data-toggle=\"tab\"]").click(function(e) { + e.preventDefault(); + $(this).tab("show"); + }); +}); + + +/*When clicking on Full hide fail/success boxes */ +$('#name').focus(function() { + $('#success').html(''); +}); diff --git a/vraptor/src/main/webapp/js/jqBootstrapValidation.js b/vraptor/src/main/webapp/js/jqBootstrapValidation.js new file mode 100644 index 0000000000..7b3b922251 --- /dev/null +++ b/vraptor/src/main/webapp/js/jqBootstrapValidation.js @@ -0,0 +1,912 @@ +/* jqBootstrapValidation + * A plugin for automating validation on Twitter Bootstrap formatted forms. + * + * v1.3.6 + * + * License: MIT - see LICENSE file + * + * http://ReactiveRaven.github.com/jqBootstrapValidation/ + */ + +(function( $ ){ + + var createdElements = []; + + var defaults = { + options: { + prependExistingHelpBlock: false, + sniffHtml: true, // sniff for 'required', 'maxlength', etc + preventSubmit: true, // stop the form submit event from firing if validation fails + submitError: false, // function called if there is an error when trying to submit + submitSuccess: false, // function called just before a successful submit event is sent to the server + semanticallyStrict: false, // set to true to tidy up generated HTML output + autoAdd: { + helpBlocks: true + }, + filter: function () { + // return $(this).is(":visible"); // only validate elements you can see + return true; // validate everything + } + }, + methods: { + init : function( options ) { + + var settings = $.extend(true, {}, defaults); + + settings.options = $.extend(true, settings.options, options); + + var $siblingElements = this; + + var uniqueForms = $.unique( + $siblingElements.map( function () { + return $(this).parents("form")[0]; + }).toArray() + ); + + $(uniqueForms).bind("submit", function (e) { + var $form = $(this); + var warningsFound = 0; + var $inputs = $form.find("input,textarea,select").not("[type=submit],[type=image]").filter(settings.options.filter); + $inputs.trigger("submit.validation").trigger("validationLostFocus.validation"); + + $inputs.each(function (i, el) { + var $this = $(el), + $controlGroup = $this.parents(".form-group").first(); + if ( + $controlGroup.hasClass("warning") + ) { + $controlGroup.removeClass("warning").addClass("error"); + warningsFound++; + } + }); + + $inputs.trigger("validationLostFocus.validation"); + + if (warningsFound) { + if (settings.options.preventSubmit) { + e.preventDefault(); + } + $form.addClass("error"); + if ($.isFunction(settings.options.submitError)) { + settings.options.submitError($form, e, $inputs.jqBootstrapValidation("collectErrors", true)); + } + } else { + $form.removeClass("error"); + if ($.isFunction(settings.options.submitSuccess)) { + settings.options.submitSuccess($form, e); + } + } + }); + + return this.each(function(){ + + // Get references to everything we're interested in + var $this = $(this), + $controlGroup = $this.parents(".form-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(), + $form = $this.parents("form").first(), + validatorNames = []; + + // create message container if not exists + if (!$helpBlock.length && settings.options.autoAdd && settings.options.autoAdd.helpBlocks) { + $helpBlock = $('
'); + $controlGroup.find('.controls').append($helpBlock); + createdElements.push($helpBlock[0]); + } + + // ============================================================= + // SNIFF HTML FOR VALIDATORS + // ============================================================= + + // *snort sniff snuffle* + + if (settings.options.sniffHtml) { + var message = ""; + // --------------------------------------------------------- + // PATTERN + // --------------------------------------------------------- + if ($this.attr("pattern") !== undefined) { + message = "Not in the expected format"; + if ($this.data("validationPatternMessage")) { + message = $this.data("validationPatternMessage"); + } + $this.data("validationPatternMessage", message); + $this.data("validationPatternRegex", $this.attr("pattern")); + } + // --------------------------------------------------------- + // MAX + // --------------------------------------------------------- + if ($this.attr("max") !== undefined || $this.attr("aria-valuemax") !== undefined) { + var max = ($this.attr("max") !== undefined ? $this.attr("max") : $this.attr("aria-valuemax")); + message = "Too high: Maximum of '" + max + "'"; + if ($this.data("validationMaxMessage")) { + message = $this.data("validationMaxMessage"); + } + $this.data("validationMaxMessage", message); + $this.data("validationMaxMax", max); + } + // --------------------------------------------------------- + // MIN + // --------------------------------------------------------- + if ($this.attr("min") !== undefined || $this.attr("aria-valuemin") !== undefined) { + var min = ($this.attr("min") !== undefined ? $this.attr("min") : $this.attr("aria-valuemin")); + message = "Too low: Minimum of '" + min + "'"; + if ($this.data("validationMinMessage")) { + message = $this.data("validationMinMessage"); + } + $this.data("validationMinMessage", message); + $this.data("validationMinMin", min); + } + // --------------------------------------------------------- + // MAXLENGTH + // --------------------------------------------------------- + if ($this.attr("maxlength") !== undefined) { + message = "Too long: Maximum of '" + $this.attr("maxlength") + "' characters"; + if ($this.data("validationMaxlengthMessage")) { + message = $this.data("validationMaxlengthMessage"); + } + $this.data("validationMaxlengthMessage", message); + $this.data("validationMaxlengthMaxlength", $this.attr("maxlength")); + } + // --------------------------------------------------------- + // MINLENGTH + // --------------------------------------------------------- + if ($this.attr("minlength") !== undefined) { + message = "Too short: Minimum of '" + $this.attr("minlength") + "' characters"; + if ($this.data("validationMinlengthMessage")) { + message = $this.data("validationMinlengthMessage"); + } + $this.data("validationMinlengthMessage", message); + $this.data("validationMinlengthMinlength", $this.attr("minlength")); + } + // --------------------------------------------------------- + // REQUIRED + // --------------------------------------------------------- + if ($this.attr("required") !== undefined || $this.attr("aria-required") !== undefined) { + message = settings.builtInValidators.required.message; + if ($this.data("validationRequiredMessage")) { + message = $this.data("validationRequiredMessage"); + } + $this.data("validationRequiredMessage", message); + } + // --------------------------------------------------------- + // NUMBER + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "number") { + message = settings.builtInValidators.number.message; + if ($this.data("validationNumberMessage")) { + message = $this.data("validationNumberMessage"); + } + $this.data("validationNumberMessage", message); + } + // --------------------------------------------------------- + // EMAIL + // --------------------------------------------------------- + if ($this.attr("type") !== undefined && $this.attr("type").toLowerCase() === "email") { + message = "Not a valid email address"; + if ($this.data("validationValidemailMessage")) { + message = $this.data("validationValidemailMessage"); + } else if ($this.data("validationEmailMessage")) { + message = $this.data("validationEmailMessage"); + } + $this.data("validationValidemailMessage", message); + } + // --------------------------------------------------------- + // MINCHECKED + // --------------------------------------------------------- + if ($this.attr("minchecked") !== undefined) { + message = "Not enough options checked; Minimum of '" + $this.attr("minchecked") + "' required"; + if ($this.data("validationMincheckedMessage")) { + message = $this.data("validationMincheckedMessage"); + } + $this.data("validationMincheckedMessage", message); + $this.data("validationMincheckedMinchecked", $this.attr("minchecked")); + } + // --------------------------------------------------------- + // MAXCHECKED + // --------------------------------------------------------- + if ($this.attr("maxchecked") !== undefined) { + message = "Too many options checked; Maximum of '" + $this.attr("maxchecked") + "' required"; + if ($this.data("validationMaxcheckedMessage")) { + message = $this.data("validationMaxcheckedMessage"); + } + $this.data("validationMaxcheckedMessage", message); + $this.data("validationMaxcheckedMaxchecked", $this.attr("maxchecked")); + } + } + + // ============================================================= + // COLLECT VALIDATOR NAMES + // ============================================================= + + // Get named validators + if ($this.data("validation") !== undefined) { + validatorNames = $this.data("validation").split(","); + } + + // Get extra ones defined on the element's data attributes + $.each($this.data(), function (i, el) { + var parts = i.replace(/([A-Z])/g, ",$1").split(","); + if (parts[0] === "validation" && parts[1]) { + validatorNames.push(parts[1]); + } + }); + + // ============================================================= + // NORMALISE VALIDATOR NAMES + // ============================================================= + + var validatorNamesToInspect = validatorNames; + var newValidatorNamesToInspect = []; + + do // repeatedly expand 'shortcut' validators into their real validators + { + // Uppercase only the first letter of each name + $.each(validatorNames, function (i, el) { + validatorNames[i] = formatValidatorName(el); + }); + + // Remove duplicate validator names + validatorNames = $.unique(validatorNames); + + // Pull out the new validator names from each shortcut + newValidatorNamesToInspect = []; + $.each(validatorNamesToInspect, function(i, el) { + if ($this.data("validation" + el + "Shortcut") !== undefined) { + // Are these custom validators? + // Pull them out! + $.each($this.data("validation" + el + "Shortcut").split(","), function(i2, el2) { + newValidatorNamesToInspect.push(el2); + }); + } else if (settings.builtInValidators[el.toLowerCase()]) { + // Is this a recognised built-in? + // Pull it out! + var validator = settings.builtInValidators[el.toLowerCase()]; + if (validator.type.toLowerCase() === "shortcut") { + $.each(validator.shortcut.split(","), function (i, el) { + el = formatValidatorName(el); + newValidatorNamesToInspect.push(el); + validatorNames.push(el); + }); + } + } + }); + + validatorNamesToInspect = newValidatorNamesToInspect; + + } while (validatorNamesToInspect.length > 0) + + // ============================================================= + // SET UP VALIDATOR ARRAYS + // ============================================================= + + var validators = {}; + + $.each(validatorNames, function (i, el) { + // Set up the 'override' message + var message = $this.data("validation" + el + "Message"); + var hasOverrideMessage = (message !== undefined); + var foundValidator = false; + message = + ( + message + ? message + : "'" + el + "' validation failed " + ) + ; + + $.each( + settings.validatorTypes, + function (validatorType, validatorTemplate) { + if (validators[validatorType] === undefined) { + validators[validatorType] = []; + } + if (!foundValidator && $this.data("validation" + el + formatValidatorName(validatorTemplate.name)) !== undefined) { + validators[validatorType].push( + $.extend( + true, + { + name: formatValidatorName(validatorTemplate.name), + message: message + }, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + + if (!foundValidator && settings.builtInValidators[el.toLowerCase()]) { + + var validator = $.extend(true, {}, settings.builtInValidators[el.toLowerCase()]); + if (hasOverrideMessage) { + validator.message = message; + } + var validatorType = validator.type.toLowerCase(); + + if (validatorType === "shortcut") { + foundValidator = true; + } else { + $.each( + settings.validatorTypes, + function (validatorTemplateType, validatorTemplate) { + if (validators[validatorTemplateType] === undefined) { + validators[validatorTemplateType] = []; + } + if (!foundValidator && validatorType === validatorTemplateType.toLowerCase()) { + $this.data("validation" + el + formatValidatorName(validatorTemplate.name), validator[validatorTemplate.name.toLowerCase()]); + validators[validatorType].push( + $.extend( + validator, + validatorTemplate.init($this, el) + ) + ); + foundValidator = true; + } + } + ); + } + } + + if (! foundValidator) { + $.error("Cannot find validation info for '" + el + "'"); + } + }); + + // ============================================================= + // STORE FALLBACK VALUES + // ============================================================= + + $helpBlock.data( + "original-contents", + ( + $helpBlock.data("original-contents") + ? $helpBlock.data("original-contents") + : $helpBlock.html() + ) + ); + + $helpBlock.data( + "original-role", + ( + $helpBlock.data("original-role") + ? $helpBlock.data("original-role") + : $helpBlock.attr("role") + ) + ); + + $controlGroup.data( + "original-classes", + ( + $controlGroup.data("original-clases") + ? $controlGroup.data("original-classes") + : $controlGroup.attr("class") + ) + ); + + $this.data( + "original-aria-invalid", + ( + $this.data("original-aria-invalid") + ? $this.data("original-aria-invalid") + : $this.attr("aria-invalid") + ) + ); + + // ============================================================= + // VALIDATION + // ============================================================= + + $this.bind( + "validation.validation", + function (event, params) { + + var value = getValue($this); + + // Get a list of the errors to apply + var errorsFound = []; + + $.each(validators, function (validatorType, validatorTypeArray) { + if (value || value.length || (params && params.includeEmpty) || (!!settings.validatorTypes[validatorType].blockSubmit && params && !!params.submitting)) { + $.each(validatorTypeArray, function (i, validator) { + if (settings.validatorTypes[validatorType].validate($this, value, validator)) { + errorsFound.push(validator.message); + } + }); + } + }); + + return errorsFound; + } + ); + + $this.bind( + "getValidators.validation", + function () { + return validators; + } + ); + + // ============================================================= + // WATCH FOR CHANGES + // ============================================================= + $this.bind( + "submit.validation", + function () { + return $this.triggerHandler("change.validation", {submitting: true}); + } + ); + $this.bind( + [ + "keyup", + "focus", + "blur", + "click", + "keydown", + "keypress", + "change" + ].join(".validation ") + ".validation", + function (e, params) { + + var value = getValue($this); + + var errorsFound = []; + + $controlGroup.find("input,textarea,select").each(function (i, el) { + var oldCount = errorsFound.length; + $.each($(el).triggerHandler("validation.validation", params), function (j, message) { + errorsFound.push(message); + }); + if (errorsFound.length > oldCount) { + $(el).attr("aria-invalid", "true"); + } else { + var original = $this.data("original-aria-invalid"); + $(el).attr("aria-invalid", (original !== undefined ? original : false)); + } + }); + + $form.find("input,select,textarea").not($this).not("[name=\"" + $this.attr("name") + "\"]").trigger("validationLostFocus.validation"); + + errorsFound = $.unique(errorsFound.sort()); + + // Were there any errors? + if (errorsFound.length) { + // Better flag it up as a warning. + $controlGroup.removeClass("success error").addClass("warning"); + + // How many errors did we find? + if (settings.options.semanticallyStrict && errorsFound.length === 1) { + // Only one? Being strict? Just output it. + $helpBlock.html(errorsFound[0] + + ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); + } else { + // Multiple? Being sloppy? Glue them together into an UL. + $helpBlock.html("
  • " + errorsFound.join("
  • ") + "
" + + ( settings.options.prependExistingHelpBlock ? $helpBlock.data("original-contents") : "" )); + } + } else { + $controlGroup.removeClass("warning error success"); + if (value.length > 0) { + $controlGroup.addClass("success"); + } + $helpBlock.html($helpBlock.data("original-contents")); + } + + if (e.type === "blur") { + $controlGroup.removeClass("success"); + } + } + ); + $this.bind("validationLostFocus.validation", function () { + $controlGroup.removeClass("success"); + }); + }); + }, + destroy : function( ) { + + return this.each( + function() { + + var + $this = $(this), + $controlGroup = $this.parents(".form-group").first(), + $helpBlock = $controlGroup.find(".help-block").first(); + + // remove our events + $this.unbind('.validation'); // events are namespaced. + // reset help text + $helpBlock.html($helpBlock.data("original-contents")); + // reset classes + $controlGroup.attr("class", $controlGroup.data("original-classes")); + // reset aria + $this.attr("aria-invalid", $this.data("original-aria-invalid")); + // reset role + $helpBlock.attr("role", $this.data("original-role")); + // remove all elements we created + if (createdElements.indexOf($helpBlock[0]) > -1) { + $helpBlock.remove(); + } + + } + ); + + }, + collectErrors : function(includeEmpty) { + + var errorMessages = {}; + this.each(function (i, el) { + var $el = $(el); + var name = $el.attr("name"); + var errors = $el.triggerHandler("validation.validation", {includeEmpty: true}); + errorMessages[name] = $.extend(true, errors, errorMessages[name]); + }); + + $.each(errorMessages, function (i, el) { + if (el.length === 0) { + delete errorMessages[i]; + } + }); + + return errorMessages; + + }, + hasErrors: function() { + + var errorMessages = []; + + this.each(function (i, el) { + errorMessages = errorMessages.concat( + $(el).triggerHandler("getValidators.validation") ? $(el).triggerHandler("validation.validation", {submitting: true}) : [] + ); + }); + + return (errorMessages.length > 0); + }, + override : function (newDefaults) { + defaults = $.extend(true, defaults, newDefaults); + } + }, + validatorTypes: { + callback: { + name: "callback", + init: function ($this, name) { + return { + validatorName: name, + callback: $this.data("validation" + name + "Callback"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function ($this, value, validator) { + if (validator.lastValue === value && validator.lastFinished) { + return !validator.lastValid; + } + + if (validator.lastFinished === true) + { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + + var rrjqbvValidator = validator; + var rrjqbvThis = $this; + executeFunctionByName( + validator.callback, + window, + $this, + value, + function (data) { + if (rrjqbvValidator.lastValue === data.value) { + rrjqbvValidator.lastValid = data.valid; + if (data.message) { + rrjqbvValidator.message = data.message; + } + rrjqbvValidator.lastFinished = true; + rrjqbvThis.data("validation" + rrjqbvValidator.validatorName + "Message", rrjqbvValidator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + rrjqbvThis.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + } + ); + } + + return false; + + } + }, + ajax: { + name: "ajax", + init: function ($this, name) { + return { + validatorName: name, + url: $this.data("validation" + name + "Ajax"), + lastValue: $this.val(), + lastValid: true, + lastFinished: true + }; + }, + validate: function ($this, value, validator) { + if (""+validator.lastValue === ""+value && validator.lastFinished === true) { + return validator.lastValid === false; + } + + if (validator.lastFinished === true) + { + validator.lastValue = value; + validator.lastValid = true; + validator.lastFinished = false; + $.ajax({ + url: validator.url, + data: "value=" + value + "&field=" + $this.attr("name"), + dataType: "json", + success: function (data) { + if (""+validator.lastValue === ""+data.value) { + validator.lastValid = !!(data.valid); + if (data.message) { + validator.message = data.message; + } + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }, + failure: function () { + validator.lastValid = true; + validator.message = "ajax call failed"; + validator.lastFinished = true; + $this.data("validation" + validator.validatorName + "Message", validator.message); + // Timeout is set to avoid problems with the events being considered 'already fired' + setTimeout(function () { + $this.trigger("change.validation"); + }, 1); // doesn't need a long timeout, just long enough for the event bubble to burst + } + }); + } + + return false; + + } + }, + regex: { + name: "regex", + init: function ($this, name) { + return {regex: regexFromString($this.data("validation" + name + "Regex"))}; + }, + validate: function ($this, value, validator) { + return (!validator.regex.test(value) && ! validator.negative) + || (validator.regex.test(value) && validator.negative); + } + }, + required: { + name: "required", + init: function ($this, name) { + return {}; + }, + validate: function ($this, value, validator) { + return !!(value.length === 0 && ! validator.negative) + || !!(value.length > 0 && validator.negative); + }, + blockSubmit: true + }, + match: { + name: "match", + init: function ($this, name) { + var element = $this.parents("form").first().find("[name=\"" + $this.data("validation" + name + "Match") + "\"]").first(); + element.bind("validation.validation", function () { + $this.trigger("change.validation", {submitting: true}); + }); + return {"element": element}; + }, + validate: function ($this, value, validator) { + return (value !== validator.element.val() && ! validator.negative) + || (value === validator.element.val() && validator.negative); + }, + blockSubmit: true + }, + max: { + name: "max", + init: function ($this, name) { + return {max: $this.data("validation" + name + "Max")}; + }, + validate: function ($this, value, validator) { + return (parseFloat(value, 10) > parseFloat(validator.max, 10) && ! validator.negative) + || (parseFloat(value, 10) <= parseFloat(validator.max, 10) && validator.negative); + } + }, + min: { + name: "min", + init: function ($this, name) { + return {min: $this.data("validation" + name + "Min")}; + }, + validate: function ($this, value, validator) { + return (parseFloat(value) < parseFloat(validator.min) && ! validator.negative) + || (parseFloat(value) >= parseFloat(validator.min) && validator.negative); + } + }, + maxlength: { + name: "maxlength", + init: function ($this, name) { + return {maxlength: $this.data("validation" + name + "Maxlength")}; + }, + validate: function ($this, value, validator) { + return ((value.length > validator.maxlength) && ! validator.negative) + || ((value.length <= validator.maxlength) && validator.negative); + } + }, + minlength: { + name: "minlength", + init: function ($this, name) { + return {minlength: $this.data("validation" + name + "Minlength")}; + }, + validate: function ($this, value, validator) { + return ((value.length < validator.minlength) && ! validator.negative) + || ((value.length >= validator.minlength) && validator.negative); + } + }, + maxchecked: { + name: "maxchecked", + init: function ($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function () { + $this.trigger("change.validation", {includeEmpty: true}); + }); + return {maxchecked: $this.data("validation" + name + "Maxchecked"), elements: elements}; + }, + validate: function ($this, value, validator) { + return (validator.elements.filter(":checked").length > validator.maxchecked && ! validator.negative) + || (validator.elements.filter(":checked").length <= validator.maxchecked && validator.negative); + }, + blockSubmit: true + }, + minchecked: { + name: "minchecked", + init: function ($this, name) { + var elements = $this.parents("form").first().find("[name=\"" + $this.attr("name") + "\"]"); + elements.bind("click.validation", function () { + $this.trigger("change.validation", {includeEmpty: true}); + }); + return {minchecked: $this.data("validation" + name + "Minchecked"), elements: elements}; + }, + validate: function ($this, value, validator) { + return (validator.elements.filter(":checked").length < validator.minchecked && ! validator.negative) + || (validator.elements.filter(":checked").length >= validator.minchecked && validator.negative); + }, + blockSubmit: true + } + }, + builtInValidators: { + email: { + name: "Email", + type: "shortcut", + shortcut: "validemail" + }, + validemail: { + name: "Validemail", + type: "regex", + regex: "[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\\.[A-Za-z]{2,4}", + message: "Not a valid email address" + }, + passwordagain: { + name: "Passwordagain", + type: "match", + match: "password", + message: "Does not match the given password" + }, + positive: { + name: "Positive", + type: "shortcut", + shortcut: "number,positivenumber" + }, + negative: { + name: "Negative", + type: "shortcut", + shortcut: "number,negativenumber" + }, + number: { + name: "Number", + type: "regex", + regex: "([+-]?\\\d+(\\\.\\\d*)?([eE][+-]?[0-9]+)?)?", + message: "Must be a number" + }, + integer: { + name: "Integer", + type: "regex", + regex: "[+-]?\\\d+", + message: "No decimal places allowed" + }, + positivenumber: { + name: "Positivenumber", + type: "min", + min: 0, + message: "Must be a positive number" + }, + negativenumber: { + name: "Negativenumber", + type: "max", + max: 0, + message: "Must be a negative number" + }, + required: { + name: "Required", + type: "required", + message: "This is required" + }, + checkone: { + name: "Checkone", + type: "minchecked", + minchecked: 1, + message: "Check at least one option" + } + } + }; + + var formatValidatorName = function (name) { + return name + .toLowerCase() + .replace( + /(^|\s)([a-z])/g , + function(m,p1,p2) { + return p1+p2.toUpperCase(); + } + ) + ; + }; + + var getValue = function ($this) { + // Extract the value we're talking about + var value = $this.val(); + var type = $this.attr("type"); + if (type === "checkbox") { + value = ($this.is(":checked") ? value : ""); + } + if (type === "radio") { + value = ($('input[name="' + $this.attr("name") + '"]:checked').length > 0 ? value : ""); + } + return value; + }; + + function regexFromString(inputstring) { + return new RegExp("^" + inputstring + "$"); + } + + /** + * Thanks to Jason Bunting via StackOverflow.com + * + * http://stackoverflow.com/questions/359788/how-to-execute-a-javascript-function-when-i-have-its-name-as-a-string#answer-359910 + * Short link: http://tinyurl.com/executeFunctionByName + **/ + function executeFunctionByName(functionName, context /*, args*/) { + var args = Array.prototype.slice.call(arguments).splice(2); + var namespaces = functionName.split("."); + var func = namespaces.pop(); + for(var i = 0; i < namespaces.length; i++) { + context = context[namespaces[i]]; + } + return context[func].apply(this, args); + } + + $.fn.jqBootstrapValidation = function( method ) { + + if ( defaults.methods[method] ) { + return defaults.methods[method].apply( this, Array.prototype.slice.call( arguments, 1 )); + } else if ( typeof method === 'object' || ! method ) { + return defaults.methods.init.apply( this, arguments ); + } else { + $.error( 'Method ' + method + ' does not exist on jQuery.jqBootstrapValidation' ); + return null; + } + + }; + + $.jqBootstrapValidation = function (options) { + $(":input").not("[type=image],[type=submit]").jqBootstrapValidation.apply(this,arguments); + }; + +})( jQuery ); diff --git a/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.css b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.css new file mode 100644 index 0000000000..6167622cec --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.css @@ -0,0 +1,6757 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + */ +/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */ +html { + font-family: sans-serif; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; +} +body { + margin: 0; +} +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block; +} +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline; +} +audio:not([controls]) { + display: none; + height: 0; +} +[hidden], +template { + display: none; +} +a { + background-color: transparent; +} +a:active, +a:hover { + outline: 0; +} +abbr[title] { + border-bottom: 1px dotted; +} +b, +strong { + font-weight: bold; +} +dfn { + font-style: italic; +} +h1 { + margin: .67em 0; + font-size: 2em; +} +mark { + color: #000; + background: #ff0; +} +small { + font-size: 80%; +} +sub, +sup { + position: relative; + font-size: 75%; + line-height: 0; + vertical-align: baseline; +} +sup { + top: -.5em; +} +sub { + bottom: -.25em; +} +img { + border: 0; +} +svg:not(:root) { + overflow: hidden; +} +figure { + margin: 1em 40px; +} +hr { + height: 0; + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; +} +pre { + overflow: auto; +} +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em; +} +button, +input, +optgroup, +select, +textarea { + margin: 0; + font: inherit; + color: inherit; +} +button { + overflow: visible; +} +button, +select { + text-transform: none; +} +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer; +} +button[disabled], +html input[disabled] { + cursor: default; +} +button::-moz-focus-inner, +input::-moz-focus-inner { + padding: 0; + border: 0; +} +input { + line-height: normal; +} +input[type="checkbox"], +input[type="radio"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; + padding: 0; +} +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto; +} +input[type="search"] { + -webkit-box-sizing: content-box; + -moz-box-sizing: content-box; + box-sizing: content-box; + -webkit-appearance: textfield; +} +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none; +} +fieldset { + padding: .35em .625em .75em; + margin: 0 2px; + border: 1px solid #c0c0c0; +} +legend { + padding: 0; + border: 0; +} +textarea { + overflow: auto; +} +optgroup { + font-weight: bold; +} +table { + border-spacing: 0; + border-collapse: collapse; +} +td, +th { + padding: 0; +} +/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */ +@media print { + *, + *:before, + *:after { + color: #000 !important; + text-shadow: none !important; + background: transparent !important; + -webkit-box-shadow: none !important; + box-shadow: none !important; + } + a, + a:visited { + text-decoration: underline; + } + a[href]:after { + content: " (" attr(href) ")"; + } + abbr[title]:after { + content: " (" attr(title) ")"; + } + a[href^="#"]:after, + a[href^="javascript:"]:after { + content: ""; + } + pre, + blockquote { + border: 1px solid #999; + + page-break-inside: avoid; + } + thead { + display: table-header-group; + } + tr, + img { + page-break-inside: avoid; + } + img { + max-width: 100% !important; + } + p, + h2, + h3 { + orphans: 3; + widows: 3; + } + h2, + h3 { + page-break-after: avoid; + } + .navbar { + display: none; + } + .btn > .caret, + .dropup > .btn > .caret { + border-top-color: #000 !important; + } + .label { + border: 1px solid #000; + } + .table { + border-collapse: collapse !important; + } + .table td, + .table th { + background-color: #fff !important; + } + .table-bordered th, + .table-bordered td { + border: 1px solid #ddd !important; + } +} +@font-face { + font-family: 'Glyphicons Halflings'; + + src: url('../fonts/glyphicons-halflings-regular.eot'); + src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg'); +} +.glyphicon { + position: relative; + top: 1px; + display: inline-block; + font-family: 'Glyphicons Halflings'; + font-style: normal; + font-weight: normal; + line-height: 1; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.glyphicon-asterisk:before { + content: "\002a"; +} +.glyphicon-plus:before { + content: "\002b"; +} +.glyphicon-euro:before, +.glyphicon-eur:before { + content: "\20ac"; +} +.glyphicon-minus:before { + content: "\2212"; +} +.glyphicon-cloud:before { + content: "\2601"; +} +.glyphicon-envelope:before { + content: "\2709"; +} +.glyphicon-pencil:before { + content: "\270f"; +} +.glyphicon-glass:before { + content: "\e001"; +} +.glyphicon-music:before { + content: "\e002"; +} +.glyphicon-search:before { + content: "\e003"; +} +.glyphicon-heart:before { + content: "\e005"; +} +.glyphicon-star:before { + content: "\e006"; +} +.glyphicon-star-empty:before { + content: "\e007"; +} +.glyphicon-user:before { + content: "\e008"; +} +.glyphicon-film:before { + content: "\e009"; +} +.glyphicon-th-large:before { + content: "\e010"; +} +.glyphicon-th:before { + content: "\e011"; +} +.glyphicon-th-list:before { + content: "\e012"; +} +.glyphicon-ok:before { + content: "\e013"; +} +.glyphicon-remove:before { + content: "\e014"; +} +.glyphicon-zoom-in:before { + content: "\e015"; +} +.glyphicon-zoom-out:before { + content: "\e016"; +} +.glyphicon-off:before { + content: "\e017"; +} +.glyphicon-signal:before { + content: "\e018"; +} +.glyphicon-cog:before { + content: "\e019"; +} +.glyphicon-trash:before { + content: "\e020"; +} +.glyphicon-home:before { + content: "\e021"; +} +.glyphicon-file:before { + content: "\e022"; +} +.glyphicon-time:before { + content: "\e023"; +} +.glyphicon-road:before { + content: "\e024"; +} +.glyphicon-download-alt:before { + content: "\e025"; +} +.glyphicon-download:before { + content: "\e026"; +} +.glyphicon-upload:before { + content: "\e027"; +} +.glyphicon-inbox:before { + content: "\e028"; +} +.glyphicon-play-circle:before { + content: "\e029"; +} +.glyphicon-repeat:before { + content: "\e030"; +} +.glyphicon-refresh:before { + content: "\e031"; +} +.glyphicon-list-alt:before { + content: "\e032"; +} +.glyphicon-lock:before { + content: "\e033"; +} +.glyphicon-flag:before { + content: "\e034"; +} +.glyphicon-headphones:before { + content: "\e035"; +} +.glyphicon-volume-off:before { + content: "\e036"; +} +.glyphicon-volume-down:before { + content: "\e037"; +} +.glyphicon-volume-up:before { + content: "\e038"; +} +.glyphicon-qrcode:before { + content: "\e039"; +} +.glyphicon-barcode:before { + content: "\e040"; +} +.glyphicon-tag:before { + content: "\e041"; +} +.glyphicon-tags:before { + content: "\e042"; +} +.glyphicon-book:before { + content: "\e043"; +} +.glyphicon-bookmark:before { + content: "\e044"; +} +.glyphicon-print:before { + content: "\e045"; +} +.glyphicon-camera:before { + content: "\e046"; +} +.glyphicon-font:before { + content: "\e047"; +} +.glyphicon-bold:before { + content: "\e048"; +} +.glyphicon-italic:before { + content: "\e049"; +} +.glyphicon-text-height:before { + content: "\e050"; +} +.glyphicon-text-width:before { + content: "\e051"; +} +.glyphicon-align-left:before { + content: "\e052"; +} +.glyphicon-align-center:before { + content: "\e053"; +} +.glyphicon-align-right:before { + content: "\e054"; +} +.glyphicon-align-justify:before { + content: "\e055"; +} +.glyphicon-list:before { + content: "\e056"; +} +.glyphicon-indent-left:before { + content: "\e057"; +} +.glyphicon-indent-right:before { + content: "\e058"; +} +.glyphicon-facetime-video:before { + content: "\e059"; +} +.glyphicon-picture:before { + content: "\e060"; +} +.glyphicon-map-marker:before { + content: "\e062"; +} +.glyphicon-adjust:before { + content: "\e063"; +} +.glyphicon-tint:before { + content: "\e064"; +} +.glyphicon-edit:before { + content: "\e065"; +} +.glyphicon-share:before { + content: "\e066"; +} +.glyphicon-check:before { + content: "\e067"; +} +.glyphicon-move:before { + content: "\e068"; +} +.glyphicon-step-backward:before { + content: "\e069"; +} +.glyphicon-fast-backward:before { + content: "\e070"; +} +.glyphicon-backward:before { + content: "\e071"; +} +.glyphicon-play:before { + content: "\e072"; +} +.glyphicon-pause:before { + content: "\e073"; +} +.glyphicon-stop:before { + content: "\e074"; +} +.glyphicon-forward:before { + content: "\e075"; +} +.glyphicon-fast-forward:before { + content: "\e076"; +} +.glyphicon-step-forward:before { + content: "\e077"; +} +.glyphicon-eject:before { + content: "\e078"; +} +.glyphicon-chevron-left:before { + content: "\e079"; +} +.glyphicon-chevron-right:before { + content: "\e080"; +} +.glyphicon-plus-sign:before { + content: "\e081"; +} +.glyphicon-minus-sign:before { + content: "\e082"; +} +.glyphicon-remove-sign:before { + content: "\e083"; +} +.glyphicon-ok-sign:before { + content: "\e084"; +} +.glyphicon-question-sign:before { + content: "\e085"; +} +.glyphicon-info-sign:before { + content: "\e086"; +} +.glyphicon-screenshot:before { + content: "\e087"; +} +.glyphicon-remove-circle:before { + content: "\e088"; +} +.glyphicon-ok-circle:before { + content: "\e089"; +} +.glyphicon-ban-circle:before { + content: "\e090"; +} +.glyphicon-arrow-left:before { + content: "\e091"; +} +.glyphicon-arrow-right:before { + content: "\e092"; +} +.glyphicon-arrow-up:before { + content: "\e093"; +} +.glyphicon-arrow-down:before { + content: "\e094"; +} +.glyphicon-share-alt:before { + content: "\e095"; +} +.glyphicon-resize-full:before { + content: "\e096"; +} +.glyphicon-resize-small:before { + content: "\e097"; +} +.glyphicon-exclamation-sign:before { + content: "\e101"; +} +.glyphicon-gift:before { + content: "\e102"; +} +.glyphicon-leaf:before { + content: "\e103"; +} +.glyphicon-fire:before { + content: "\e104"; +} +.glyphicon-eye-open:before { + content: "\e105"; +} +.glyphicon-eye-close:before { + content: "\e106"; +} +.glyphicon-warning-sign:before { + content: "\e107"; +} +.glyphicon-plane:before { + content: "\e108"; +} +.glyphicon-calendar:before { + content: "\e109"; +} +.glyphicon-random:before { + content: "\e110"; +} +.glyphicon-comment:before { + content: "\e111"; +} +.glyphicon-magnet:before { + content: "\e112"; +} +.glyphicon-chevron-up:before { + content: "\e113"; +} +.glyphicon-chevron-down:before { + content: "\e114"; +} +.glyphicon-retweet:before { + content: "\e115"; +} +.glyphicon-shopping-cart:before { + content: "\e116"; +} +.glyphicon-folder-close:before { + content: "\e117"; +} +.glyphicon-folder-open:before { + content: "\e118"; +} +.glyphicon-resize-vertical:before { + content: "\e119"; +} +.glyphicon-resize-horizontal:before { + content: "\e120"; +} +.glyphicon-hdd:before { + content: "\e121"; +} +.glyphicon-bullhorn:before { + content: "\e122"; +} +.glyphicon-bell:before { + content: "\e123"; +} +.glyphicon-certificate:before { + content: "\e124"; +} +.glyphicon-thumbs-up:before { + content: "\e125"; +} +.glyphicon-thumbs-down:before { + content: "\e126"; +} +.glyphicon-hand-right:before { + content: "\e127"; +} +.glyphicon-hand-left:before { + content: "\e128"; +} +.glyphicon-hand-up:before { + content: "\e129"; +} +.glyphicon-hand-down:before { + content: "\e130"; +} +.glyphicon-circle-arrow-right:before { + content: "\e131"; +} +.glyphicon-circle-arrow-left:before { + content: "\e132"; +} +.glyphicon-circle-arrow-up:before { + content: "\e133"; +} +.glyphicon-circle-arrow-down:before { + content: "\e134"; +} +.glyphicon-globe:before { + content: "\e135"; +} +.glyphicon-wrench:before { + content: "\e136"; +} +.glyphicon-tasks:before { + content: "\e137"; +} +.glyphicon-filter:before { + content: "\e138"; +} +.glyphicon-briefcase:before { + content: "\e139"; +} +.glyphicon-fullscreen:before { + content: "\e140"; +} +.glyphicon-dashboard:before { + content: "\e141"; +} +.glyphicon-paperclip:before { + content: "\e142"; +} +.glyphicon-heart-empty:before { + content: "\e143"; +} +.glyphicon-link:before { + content: "\e144"; +} +.glyphicon-phone:before { + content: "\e145"; +} +.glyphicon-pushpin:before { + content: "\e146"; +} +.glyphicon-usd:before { + content: "\e148"; +} +.glyphicon-gbp:before { + content: "\e149"; +} +.glyphicon-sort:before { + content: "\e150"; +} +.glyphicon-sort-by-alphabet:before { + content: "\e151"; +} +.glyphicon-sort-by-alphabet-alt:before { + content: "\e152"; +} +.glyphicon-sort-by-order:before { + content: "\e153"; +} +.glyphicon-sort-by-order-alt:before { + content: "\e154"; +} +.glyphicon-sort-by-attributes:before { + content: "\e155"; +} +.glyphicon-sort-by-attributes-alt:before { + content: "\e156"; +} +.glyphicon-unchecked:before { + content: "\e157"; +} +.glyphicon-expand:before { + content: "\e158"; +} +.glyphicon-collapse-down:before { + content: "\e159"; +} +.glyphicon-collapse-up:before { + content: "\e160"; +} +.glyphicon-log-in:before { + content: "\e161"; +} +.glyphicon-flash:before { + content: "\e162"; +} +.glyphicon-log-out:before { + content: "\e163"; +} +.glyphicon-new-window:before { + content: "\e164"; +} +.glyphicon-record:before { + content: "\e165"; +} +.glyphicon-save:before { + content: "\e166"; +} +.glyphicon-open:before { + content: "\e167"; +} +.glyphicon-saved:before { + content: "\e168"; +} +.glyphicon-import:before { + content: "\e169"; +} +.glyphicon-export:before { + content: "\e170"; +} +.glyphicon-send:before { + content: "\e171"; +} +.glyphicon-floppy-disk:before { + content: "\e172"; +} +.glyphicon-floppy-saved:before { + content: "\e173"; +} +.glyphicon-floppy-remove:before { + content: "\e174"; +} +.glyphicon-floppy-save:before { + content: "\e175"; +} +.glyphicon-floppy-open:before { + content: "\e176"; +} +.glyphicon-credit-card:before { + content: "\e177"; +} +.glyphicon-transfer:before { + content: "\e178"; +} +.glyphicon-cutlery:before { + content: "\e179"; +} +.glyphicon-header:before { + content: "\e180"; +} +.glyphicon-compressed:before { + content: "\e181"; +} +.glyphicon-earphone:before { + content: "\e182"; +} +.glyphicon-phone-alt:before { + content: "\e183"; +} +.glyphicon-tower:before { + content: "\e184"; +} +.glyphicon-stats:before { + content: "\e185"; +} +.glyphicon-sd-video:before { + content: "\e186"; +} +.glyphicon-hd-video:before { + content: "\e187"; +} +.glyphicon-subtitles:before { + content: "\e188"; +} +.glyphicon-sound-stereo:before { + content: "\e189"; +} +.glyphicon-sound-dolby:before { + content: "\e190"; +} +.glyphicon-sound-5-1:before { + content: "\e191"; +} +.glyphicon-sound-6-1:before { + content: "\e192"; +} +.glyphicon-sound-7-1:before { + content: "\e193"; +} +.glyphicon-copyright-mark:before { + content: "\e194"; +} +.glyphicon-registration-mark:before { + content: "\e195"; +} +.glyphicon-cloud-download:before { + content: "\e197"; +} +.glyphicon-cloud-upload:before { + content: "\e198"; +} +.glyphicon-tree-conifer:before { + content: "\e199"; +} +.glyphicon-tree-deciduous:before { + content: "\e200"; +} +.glyphicon-cd:before { + content: "\e201"; +} +.glyphicon-save-file:before { + content: "\e202"; +} +.glyphicon-open-file:before { + content: "\e203"; +} +.glyphicon-level-up:before { + content: "\e204"; +} +.glyphicon-copy:before { + content: "\e205"; +} +.glyphicon-paste:before { + content: "\e206"; +} +.glyphicon-alert:before { + content: "\e209"; +} +.glyphicon-equalizer:before { + content: "\e210"; +} +.glyphicon-king:before { + content: "\e211"; +} +.glyphicon-queen:before { + content: "\e212"; +} +.glyphicon-pawn:before { + content: "\e213"; +} +.glyphicon-bishop:before { + content: "\e214"; +} +.glyphicon-knight:before { + content: "\e215"; +} +.glyphicon-baby-formula:before { + content: "\e216"; +} +.glyphicon-tent:before { + content: "\26fa"; +} +.glyphicon-blackboard:before { + content: "\e218"; +} +.glyphicon-bed:before { + content: "\e219"; +} +.glyphicon-apple:before { + content: "\f8ff"; +} +.glyphicon-erase:before { + content: "\e221"; +} +.glyphicon-hourglass:before { + content: "\231b"; +} +.glyphicon-lamp:before { + content: "\e223"; +} +.glyphicon-duplicate:before { + content: "\e224"; +} +.glyphicon-piggy-bank:before { + content: "\e225"; +} +.glyphicon-scissors:before { + content: "\e226"; +} +.glyphicon-bitcoin:before { + content: "\e227"; +} +.glyphicon-btc:before { + content: "\e227"; +} +.glyphicon-xbt:before { + content: "\e227"; +} +.glyphicon-yen:before { + content: "\00a5"; +} +.glyphicon-jpy:before { + content: "\00a5"; +} +.glyphicon-ruble:before { + content: "\20bd"; +} +.glyphicon-rub:before { + content: "\20bd"; +} +.glyphicon-scale:before { + content: "\e230"; +} +.glyphicon-ice-lolly:before { + content: "\e231"; +} +.glyphicon-ice-lolly-tasted:before { + content: "\e232"; +} +.glyphicon-education:before { + content: "\e233"; +} +.glyphicon-option-horizontal:before { + content: "\e234"; +} +.glyphicon-option-vertical:before { + content: "\e235"; +} +.glyphicon-menu-hamburger:before { + content: "\e236"; +} +.glyphicon-modal-window:before { + content: "\e237"; +} +.glyphicon-oil:before { + content: "\e238"; +} +.glyphicon-grain:before { + content: "\e239"; +} +.glyphicon-sunglasses:before { + content: "\e240"; +} +.glyphicon-text-size:before { + content: "\e241"; +} +.glyphicon-text-color:before { + content: "\e242"; +} +.glyphicon-text-background:before { + content: "\e243"; +} +.glyphicon-object-align-top:before { + content: "\e244"; +} +.glyphicon-object-align-bottom:before { + content: "\e245"; +} +.glyphicon-object-align-horizontal:before { + content: "\e246"; +} +.glyphicon-object-align-left:before { + content: "\e247"; +} +.glyphicon-object-align-vertical:before { + content: "\e248"; +} +.glyphicon-object-align-right:before { + content: "\e249"; +} +.glyphicon-triangle-right:before { + content: "\e250"; +} +.glyphicon-triangle-left:before { + content: "\e251"; +} +.glyphicon-triangle-bottom:before { + content: "\e252"; +} +.glyphicon-triangle-top:before { + content: "\e253"; +} +.glyphicon-console:before { + content: "\e254"; +} +.glyphicon-superscript:before { + content: "\e255"; +} +.glyphicon-subscript:before { + content: "\e256"; +} +.glyphicon-menu-left:before { + content: "\e257"; +} +.glyphicon-menu-right:before { + content: "\e258"; +} +.glyphicon-menu-down:before { + content: "\e259"; +} +.glyphicon-menu-up:before { + content: "\e260"; +} +* { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +*:before, +*:after { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +html { + font-size: 10px; + + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + line-height: 1.42857143; + color: #333; + background-color: #fff; +} +input, +button, +select, +textarea { + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +a { + color: #337ab7; + text-decoration: none; +} +a:hover, +a:focus { + color: #23527c; + text-decoration: underline; +} +a:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +figure { + margin: 0; +} +img { + vertical-align: middle; +} +.img-responsive, +.thumbnail > img, +.thumbnail a > img, +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + display: block; + max-width: 100%; + height: auto; +} +.img-rounded { + border-radius: 6px; +} +.img-thumbnail { + display: inline-block; + max-width: 100%; + height: auto; + padding: 4px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: all .2s ease-in-out; + -o-transition: all .2s ease-in-out; + transition: all .2s ease-in-out; +} +.img-circle { + border-radius: 50%; +} +hr { + margin-top: 20px; + margin-bottom: 20px; + border: 0; + border-top: 1px solid #eee; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} +[role="button"] { + cursor: pointer; +} +h1, +h2, +h3, +h4, +h5, +h6, +.h1, +.h2, +.h3, +.h4, +.h5, +.h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} +h1 small, +h2 small, +h3 small, +h4 small, +h5 small, +h6 small, +.h1 small, +.h2 small, +.h3 small, +.h4 small, +.h5 small, +.h6 small, +h1 .small, +h2 .small, +h3 .small, +h4 .small, +h5 .small, +h6 .small, +.h1 .small, +.h2 .small, +.h3 .small, +.h4 .small, +.h5 .small, +.h6 .small { + font-weight: normal; + line-height: 1; + color: #777; +} +h1, +.h1, +h2, +.h2, +h3, +.h3 { + margin-top: 20px; + margin-bottom: 10px; +} +h1 small, +.h1 small, +h2 small, +.h2 small, +h3 small, +.h3 small, +h1 .small, +.h1 .small, +h2 .small, +.h2 .small, +h3 .small, +.h3 .small { + font-size: 65%; +} +h4, +.h4, +h5, +.h5, +h6, +.h6 { + margin-top: 10px; + margin-bottom: 10px; +} +h4 small, +.h4 small, +h5 small, +.h5 small, +h6 small, +.h6 small, +h4 .small, +.h4 .small, +h5 .small, +.h5 .small, +h6 .small, +.h6 .small { + font-size: 75%; +} +h1, +.h1 { + font-size: 36px; +} +h2, +.h2 { + font-size: 30px; +} +h3, +.h3 { + font-size: 24px; +} +h4, +.h4 { + font-size: 18px; +} +h5, +.h5 { + font-size: 14px; +} +h6, +.h6 { + font-size: 12px; +} +p { + margin: 0 0 10px; +} +.lead { + margin-bottom: 20px; + font-size: 16px; + font-weight: 300; + line-height: 1.4; +} +@media (min-width: 768px) { + .lead { + font-size: 21px; + } +} +small, +.small { + font-size: 85%; +} +mark, +.mark { + padding: .2em; + background-color: #fcf8e3; +} +.text-left { + text-align: left; +} +.text-right { + text-align: right; +} +.text-center { + text-align: center; +} +.text-justify { + text-align: justify; +} +.text-nowrap { + white-space: nowrap; +} +.text-lowercase { + text-transform: lowercase; +} +.text-uppercase { + text-transform: uppercase; +} +.text-capitalize { + text-transform: capitalize; +} +.text-muted { + color: #777; +} +.text-primary { + color: #337ab7; +} +a.text-primary:hover, +a.text-primary:focus { + color: #286090; +} +.text-success { + color: #3c763d; +} +a.text-success:hover, +a.text-success:focus { + color: #2b542c; +} +.text-info { + color: #31708f; +} +a.text-info:hover, +a.text-info:focus { + color: #245269; +} +.text-warning { + color: #8a6d3b; +} +a.text-warning:hover, +a.text-warning:focus { + color: #66512c; +} +.text-danger { + color: #a94442; +} +a.text-danger:hover, +a.text-danger:focus { + color: #843534; +} +.bg-primary { + color: #fff; + background-color: #337ab7; +} +a.bg-primary:hover, +a.bg-primary:focus { + background-color: #286090; +} +.bg-success { + background-color: #dff0d8; +} +a.bg-success:hover, +a.bg-success:focus { + background-color: #c1e2b3; +} +.bg-info { + background-color: #d9edf7; +} +a.bg-info:hover, +a.bg-info:focus { + background-color: #afd9ee; +} +.bg-warning { + background-color: #fcf8e3; +} +a.bg-warning:hover, +a.bg-warning:focus { + background-color: #f7ecb5; +} +.bg-danger { + background-color: #f2dede; +} +a.bg-danger:hover, +a.bg-danger:focus { + background-color: #e4b9b9; +} +.page-header { + padding-bottom: 9px; + margin: 40px 0 20px; + border-bottom: 1px solid #eee; +} +ul, +ol { + margin-top: 0; + margin-bottom: 10px; +} +ul ul, +ol ul, +ul ol, +ol ol { + margin-bottom: 0; +} +.list-unstyled { + padding-left: 0; + list-style: none; +} +.list-inline { + padding-left: 0; + margin-left: -5px; + list-style: none; +} +.list-inline > li { + display: inline-block; + padding-right: 5px; + padding-left: 5px; +} +dl { + margin-top: 0; + margin-bottom: 20px; +} +dt, +dd { + line-height: 1.42857143; +} +dt { + font-weight: bold; +} +dd { + margin-left: 0; +} +@media (min-width: 768px) { + .dl-horizontal dt { + float: left; + width: 160px; + overflow: hidden; + clear: left; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; + } + .dl-horizontal dd { + margin-left: 180px; + } +} +abbr[title], +abbr[data-original-title] { + cursor: help; + border-bottom: 1px dotted #777; +} +.initialism { + font-size: 90%; + text-transform: uppercase; +} +blockquote { + padding: 10px 20px; + margin: 0 0 20px; + font-size: 17.5px; + border-left: 5px solid #eee; +} +blockquote p:last-child, +blockquote ul:last-child, +blockquote ol:last-child { + margin-bottom: 0; +} +blockquote footer, +blockquote small, +blockquote .small { + display: block; + font-size: 80%; + line-height: 1.42857143; + color: #777; +} +blockquote footer:before, +blockquote small:before, +blockquote .small:before { + content: '\2014 \00A0'; +} +.blockquote-reverse, +blockquote.pull-right { + padding-right: 15px; + padding-left: 0; + text-align: right; + border-right: 5px solid #eee; + border-left: 0; +} +.blockquote-reverse footer:before, +blockquote.pull-right footer:before, +.blockquote-reverse small:before, +blockquote.pull-right small:before, +.blockquote-reverse .small:before, +blockquote.pull-right .small:before { + content: ''; +} +.blockquote-reverse footer:after, +blockquote.pull-right footer:after, +.blockquote-reverse small:after, +blockquote.pull-right small:after, +.blockquote-reverse .small:after, +blockquote.pull-right .small:after { + content: '\00A0 \2014'; +} +address { + margin-bottom: 20px; + font-style: normal; + line-height: 1.42857143; +} +code, +kbd, +pre, +samp { + font-family: Menlo, Monaco, Consolas, "Courier New", monospace; +} +code { + padding: 2px 4px; + font-size: 90%; + color: #c7254e; + background-color: #f9f2f4; + border-radius: 4px; +} +kbd { + padding: 2px 4px; + font-size: 90%; + color: #fff; + background-color: #333; + border-radius: 3px; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25); +} +kbd kbd { + padding: 0; + font-size: 100%; + font-weight: bold; + -webkit-box-shadow: none; + box-shadow: none; +} +pre { + display: block; + padding: 9.5px; + margin: 0 0 10px; + font-size: 13px; + line-height: 1.42857143; + color: #333; + word-break: break-all; + word-wrap: break-word; + background-color: #f5f5f5; + border: 1px solid #ccc; + border-radius: 4px; +} +pre code { + padding: 0; + font-size: inherit; + color: inherit; + white-space: pre-wrap; + background-color: transparent; + border-radius: 0; +} +.pre-scrollable { + max-height: 340px; + overflow-y: scroll; +} +.container { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +@media (min-width: 768px) { + .container { + width: 750px; + } +} +@media (min-width: 992px) { + .container { + width: 970px; + } +} +@media (min-width: 1200px) { + .container { + width: 1170px; + } +} +.container-fluid { + padding-right: 15px; + padding-left: 15px; + margin-right: auto; + margin-left: auto; +} +.row { + margin-right: -15px; + margin-left: -15px; +} +.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 { + position: relative; + min-height: 1px; + padding-right: 15px; + padding-left: 15px; +} +.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 { + float: left; +} +.col-xs-12 { + width: 100%; +} +.col-xs-11 { + width: 91.66666667%; +} +.col-xs-10 { + width: 83.33333333%; +} +.col-xs-9 { + width: 75%; +} +.col-xs-8 { + width: 66.66666667%; +} +.col-xs-7 { + width: 58.33333333%; +} +.col-xs-6 { + width: 50%; +} +.col-xs-5 { + width: 41.66666667%; +} +.col-xs-4 { + width: 33.33333333%; +} +.col-xs-3 { + width: 25%; +} +.col-xs-2 { + width: 16.66666667%; +} +.col-xs-1 { + width: 8.33333333%; +} +.col-xs-pull-12 { + right: 100%; +} +.col-xs-pull-11 { + right: 91.66666667%; +} +.col-xs-pull-10 { + right: 83.33333333%; +} +.col-xs-pull-9 { + right: 75%; +} +.col-xs-pull-8 { + right: 66.66666667%; +} +.col-xs-pull-7 { + right: 58.33333333%; +} +.col-xs-pull-6 { + right: 50%; +} +.col-xs-pull-5 { + right: 41.66666667%; +} +.col-xs-pull-4 { + right: 33.33333333%; +} +.col-xs-pull-3 { + right: 25%; +} +.col-xs-pull-2 { + right: 16.66666667%; +} +.col-xs-pull-1 { + right: 8.33333333%; +} +.col-xs-pull-0 { + right: auto; +} +.col-xs-push-12 { + left: 100%; +} +.col-xs-push-11 { + left: 91.66666667%; +} +.col-xs-push-10 { + left: 83.33333333%; +} +.col-xs-push-9 { + left: 75%; +} +.col-xs-push-8 { + left: 66.66666667%; +} +.col-xs-push-7 { + left: 58.33333333%; +} +.col-xs-push-6 { + left: 50%; +} +.col-xs-push-5 { + left: 41.66666667%; +} +.col-xs-push-4 { + left: 33.33333333%; +} +.col-xs-push-3 { + left: 25%; +} +.col-xs-push-2 { + left: 16.66666667%; +} +.col-xs-push-1 { + left: 8.33333333%; +} +.col-xs-push-0 { + left: auto; +} +.col-xs-offset-12 { + margin-left: 100%; +} +.col-xs-offset-11 { + margin-left: 91.66666667%; +} +.col-xs-offset-10 { + margin-left: 83.33333333%; +} +.col-xs-offset-9 { + margin-left: 75%; +} +.col-xs-offset-8 { + margin-left: 66.66666667%; +} +.col-xs-offset-7 { + margin-left: 58.33333333%; +} +.col-xs-offset-6 { + margin-left: 50%; +} +.col-xs-offset-5 { + margin-left: 41.66666667%; +} +.col-xs-offset-4 { + margin-left: 33.33333333%; +} +.col-xs-offset-3 { + margin-left: 25%; +} +.col-xs-offset-2 { + margin-left: 16.66666667%; +} +.col-xs-offset-1 { + margin-left: 8.33333333%; +} +.col-xs-offset-0 { + margin-left: 0; +} +@media (min-width: 768px) { + .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 { + float: left; + } + .col-sm-12 { + width: 100%; + } + .col-sm-11 { + width: 91.66666667%; + } + .col-sm-10 { + width: 83.33333333%; + } + .col-sm-9 { + width: 75%; + } + .col-sm-8 { + width: 66.66666667%; + } + .col-sm-7 { + width: 58.33333333%; + } + .col-sm-6 { + width: 50%; + } + .col-sm-5 { + width: 41.66666667%; + } + .col-sm-4 { + width: 33.33333333%; + } + .col-sm-3 { + width: 25%; + } + .col-sm-2 { + width: 16.66666667%; + } + .col-sm-1 { + width: 8.33333333%; + } + .col-sm-pull-12 { + right: 100%; + } + .col-sm-pull-11 { + right: 91.66666667%; + } + .col-sm-pull-10 { + right: 83.33333333%; + } + .col-sm-pull-9 { + right: 75%; + } + .col-sm-pull-8 { + right: 66.66666667%; + } + .col-sm-pull-7 { + right: 58.33333333%; + } + .col-sm-pull-6 { + right: 50%; + } + .col-sm-pull-5 { + right: 41.66666667%; + } + .col-sm-pull-4 { + right: 33.33333333%; + } + .col-sm-pull-3 { + right: 25%; + } + .col-sm-pull-2 { + right: 16.66666667%; + } + .col-sm-pull-1 { + right: 8.33333333%; + } + .col-sm-pull-0 { + right: auto; + } + .col-sm-push-12 { + left: 100%; + } + .col-sm-push-11 { + left: 91.66666667%; + } + .col-sm-push-10 { + left: 83.33333333%; + } + .col-sm-push-9 { + left: 75%; + } + .col-sm-push-8 { + left: 66.66666667%; + } + .col-sm-push-7 { + left: 58.33333333%; + } + .col-sm-push-6 { + left: 50%; + } + .col-sm-push-5 { + left: 41.66666667%; + } + .col-sm-push-4 { + left: 33.33333333%; + } + .col-sm-push-3 { + left: 25%; + } + .col-sm-push-2 { + left: 16.66666667%; + } + .col-sm-push-1 { + left: 8.33333333%; + } + .col-sm-push-0 { + left: auto; + } + .col-sm-offset-12 { + margin-left: 100%; + } + .col-sm-offset-11 { + margin-left: 91.66666667%; + } + .col-sm-offset-10 { + margin-left: 83.33333333%; + } + .col-sm-offset-9 { + margin-left: 75%; + } + .col-sm-offset-8 { + margin-left: 66.66666667%; + } + .col-sm-offset-7 { + margin-left: 58.33333333%; + } + .col-sm-offset-6 { + margin-left: 50%; + } + .col-sm-offset-5 { + margin-left: 41.66666667%; + } + .col-sm-offset-4 { + margin-left: 33.33333333%; + } + .col-sm-offset-3 { + margin-left: 25%; + } + .col-sm-offset-2 { + margin-left: 16.66666667%; + } + .col-sm-offset-1 { + margin-left: 8.33333333%; + } + .col-sm-offset-0 { + margin-left: 0; + } +} +@media (min-width: 992px) { + .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 { + float: left; + } + .col-md-12 { + width: 100%; + } + .col-md-11 { + width: 91.66666667%; + } + .col-md-10 { + width: 83.33333333%; + } + .col-md-9 { + width: 75%; + } + .col-md-8 { + width: 66.66666667%; + } + .col-md-7 { + width: 58.33333333%; + } + .col-md-6 { + width: 50%; + } + .col-md-5 { + width: 41.66666667%; + } + .col-md-4 { + width: 33.33333333%; + } + .col-md-3 { + width: 25%; + } + .col-md-2 { + width: 16.66666667%; + } + .col-md-1 { + width: 8.33333333%; + } + .col-md-pull-12 { + right: 100%; + } + .col-md-pull-11 { + right: 91.66666667%; + } + .col-md-pull-10 { + right: 83.33333333%; + } + .col-md-pull-9 { + right: 75%; + } + .col-md-pull-8 { + right: 66.66666667%; + } + .col-md-pull-7 { + right: 58.33333333%; + } + .col-md-pull-6 { + right: 50%; + } + .col-md-pull-5 { + right: 41.66666667%; + } + .col-md-pull-4 { + right: 33.33333333%; + } + .col-md-pull-3 { + right: 25%; + } + .col-md-pull-2 { + right: 16.66666667%; + } + .col-md-pull-1 { + right: 8.33333333%; + } + .col-md-pull-0 { + right: auto; + } + .col-md-push-12 { + left: 100%; + } + .col-md-push-11 { + left: 91.66666667%; + } + .col-md-push-10 { + left: 83.33333333%; + } + .col-md-push-9 { + left: 75%; + } + .col-md-push-8 { + left: 66.66666667%; + } + .col-md-push-7 { + left: 58.33333333%; + } + .col-md-push-6 { + left: 50%; + } + .col-md-push-5 { + left: 41.66666667%; + } + .col-md-push-4 { + left: 33.33333333%; + } + .col-md-push-3 { + left: 25%; + } + .col-md-push-2 { + left: 16.66666667%; + } + .col-md-push-1 { + left: 8.33333333%; + } + .col-md-push-0 { + left: auto; + } + .col-md-offset-12 { + margin-left: 100%; + } + .col-md-offset-11 { + margin-left: 91.66666667%; + } + .col-md-offset-10 { + margin-left: 83.33333333%; + } + .col-md-offset-9 { + margin-left: 75%; + } + .col-md-offset-8 { + margin-left: 66.66666667%; + } + .col-md-offset-7 { + margin-left: 58.33333333%; + } + .col-md-offset-6 { + margin-left: 50%; + } + .col-md-offset-5 { + margin-left: 41.66666667%; + } + .col-md-offset-4 { + margin-left: 33.33333333%; + } + .col-md-offset-3 { + margin-left: 25%; + } + .col-md-offset-2 { + margin-left: 16.66666667%; + } + .col-md-offset-1 { + margin-left: 8.33333333%; + } + .col-md-offset-0 { + margin-left: 0; + } +} +@media (min-width: 1200px) { + .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 { + float: left; + } + .col-lg-12 { + width: 100%; + } + .col-lg-11 { + width: 91.66666667%; + } + .col-lg-10 { + width: 83.33333333%; + } + .col-lg-9 { + width: 75%; + } + .col-lg-8 { + width: 66.66666667%; + } + .col-lg-7 { + width: 58.33333333%; + } + .col-lg-6 { + width: 50%; + } + .col-lg-5 { + width: 41.66666667%; + } + .col-lg-4 { + width: 33.33333333%; + } + .col-lg-3 { + width: 25%; + } + .col-lg-2 { + width: 16.66666667%; + } + .col-lg-1 { + width: 8.33333333%; + } + .col-lg-pull-12 { + right: 100%; + } + .col-lg-pull-11 { + right: 91.66666667%; + } + .col-lg-pull-10 { + right: 83.33333333%; + } + .col-lg-pull-9 { + right: 75%; + } + .col-lg-pull-8 { + right: 66.66666667%; + } + .col-lg-pull-7 { + right: 58.33333333%; + } + .col-lg-pull-6 { + right: 50%; + } + .col-lg-pull-5 { + right: 41.66666667%; + } + .col-lg-pull-4 { + right: 33.33333333%; + } + .col-lg-pull-3 { + right: 25%; + } + .col-lg-pull-2 { + right: 16.66666667%; + } + .col-lg-pull-1 { + right: 8.33333333%; + } + .col-lg-pull-0 { + right: auto; + } + .col-lg-push-12 { + left: 100%; + } + .col-lg-push-11 { + left: 91.66666667%; + } + .col-lg-push-10 { + left: 83.33333333%; + } + .col-lg-push-9 { + left: 75%; + } + .col-lg-push-8 { + left: 66.66666667%; + } + .col-lg-push-7 { + left: 58.33333333%; + } + .col-lg-push-6 { + left: 50%; + } + .col-lg-push-5 { + left: 41.66666667%; + } + .col-lg-push-4 { + left: 33.33333333%; + } + .col-lg-push-3 { + left: 25%; + } + .col-lg-push-2 { + left: 16.66666667%; + } + .col-lg-push-1 { + left: 8.33333333%; + } + .col-lg-push-0 { + left: auto; + } + .col-lg-offset-12 { + margin-left: 100%; + } + .col-lg-offset-11 { + margin-left: 91.66666667%; + } + .col-lg-offset-10 { + margin-left: 83.33333333%; + } + .col-lg-offset-9 { + margin-left: 75%; + } + .col-lg-offset-8 { + margin-left: 66.66666667%; + } + .col-lg-offset-7 { + margin-left: 58.33333333%; + } + .col-lg-offset-6 { + margin-left: 50%; + } + .col-lg-offset-5 { + margin-left: 41.66666667%; + } + .col-lg-offset-4 { + margin-left: 33.33333333%; + } + .col-lg-offset-3 { + margin-left: 25%; + } + .col-lg-offset-2 { + margin-left: 16.66666667%; + } + .col-lg-offset-1 { + margin-left: 8.33333333%; + } + .col-lg-offset-0 { + margin-left: 0; + } +} +table { + background-color: transparent; +} +caption { + padding-top: 8px; + padding-bottom: 8px; + color: #777; + text-align: left; +} +th { + text-align: left; +} +.table { + width: 100%; + max-width: 100%; + margin-bottom: 20px; +} +.table > thead > tr > th, +.table > tbody > tr > th, +.table > tfoot > tr > th, +.table > thead > tr > td, +.table > tbody > tr > td, +.table > tfoot > tr > td { + padding: 8px; + line-height: 1.42857143; + vertical-align: top; + border-top: 1px solid #ddd; +} +.table > thead > tr > th { + vertical-align: bottom; + border-bottom: 2px solid #ddd; +} +.table > caption + thead > tr:first-child > th, +.table > colgroup + thead > tr:first-child > th, +.table > thead:first-child > tr:first-child > th, +.table > caption + thead > tr:first-child > td, +.table > colgroup + thead > tr:first-child > td, +.table > thead:first-child > tr:first-child > td { + border-top: 0; +} +.table > tbody + tbody { + border-top: 2px solid #ddd; +} +.table .table { + background-color: #fff; +} +.table-condensed > thead > tr > th, +.table-condensed > tbody > tr > th, +.table-condensed > tfoot > tr > th, +.table-condensed > thead > tr > td, +.table-condensed > tbody > tr > td, +.table-condensed > tfoot > tr > td { + padding: 5px; +} +.table-bordered { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > tbody > tr > th, +.table-bordered > tfoot > tr > th, +.table-bordered > thead > tr > td, +.table-bordered > tbody > tr > td, +.table-bordered > tfoot > tr > td { + border: 1px solid #ddd; +} +.table-bordered > thead > tr > th, +.table-bordered > thead > tr > td { + border-bottom-width: 2px; +} +.table-striped > tbody > tr:nth-of-type(odd) { + background-color: #f9f9f9; +} +.table-hover > tbody > tr:hover { + background-color: #f5f5f5; +} +table col[class*="col-"] { + position: static; + display: table-column; + float: none; +} +table td[class*="col-"], +table th[class*="col-"] { + position: static; + display: table-cell; + float: none; +} +.table > thead > tr > td.active, +.table > tbody > tr > td.active, +.table > tfoot > tr > td.active, +.table > thead > tr > th.active, +.table > tbody > tr > th.active, +.table > tfoot > tr > th.active, +.table > thead > tr.active > td, +.table > tbody > tr.active > td, +.table > tfoot > tr.active > td, +.table > thead > tr.active > th, +.table > tbody > tr.active > th, +.table > tfoot > tr.active > th { + background-color: #f5f5f5; +} +.table-hover > tbody > tr > td.active:hover, +.table-hover > tbody > tr > th.active:hover, +.table-hover > tbody > tr.active:hover > td, +.table-hover > tbody > tr:hover > .active, +.table-hover > tbody > tr.active:hover > th { + background-color: #e8e8e8; +} +.table > thead > tr > td.success, +.table > tbody > tr > td.success, +.table > tfoot > tr > td.success, +.table > thead > tr > th.success, +.table > tbody > tr > th.success, +.table > tfoot > tr > th.success, +.table > thead > tr.success > td, +.table > tbody > tr.success > td, +.table > tfoot > tr.success > td, +.table > thead > tr.success > th, +.table > tbody > tr.success > th, +.table > tfoot > tr.success > th { + background-color: #dff0d8; +} +.table-hover > tbody > tr > td.success:hover, +.table-hover > tbody > tr > th.success:hover, +.table-hover > tbody > tr.success:hover > td, +.table-hover > tbody > tr:hover > .success, +.table-hover > tbody > tr.success:hover > th { + background-color: #d0e9c6; +} +.table > thead > tr > td.info, +.table > tbody > tr > td.info, +.table > tfoot > tr > td.info, +.table > thead > tr > th.info, +.table > tbody > tr > th.info, +.table > tfoot > tr > th.info, +.table > thead > tr.info > td, +.table > tbody > tr.info > td, +.table > tfoot > tr.info > td, +.table > thead > tr.info > th, +.table > tbody > tr.info > th, +.table > tfoot > tr.info > th { + background-color: #d9edf7; +} +.table-hover > tbody > tr > td.info:hover, +.table-hover > tbody > tr > th.info:hover, +.table-hover > tbody > tr.info:hover > td, +.table-hover > tbody > tr:hover > .info, +.table-hover > tbody > tr.info:hover > th { + background-color: #c4e3f3; +} +.table > thead > tr > td.warning, +.table > tbody > tr > td.warning, +.table > tfoot > tr > td.warning, +.table > thead > tr > th.warning, +.table > tbody > tr > th.warning, +.table > tfoot > tr > th.warning, +.table > thead > tr.warning > td, +.table > tbody > tr.warning > td, +.table > tfoot > tr.warning > td, +.table > thead > tr.warning > th, +.table > tbody > tr.warning > th, +.table > tfoot > tr.warning > th { + background-color: #fcf8e3; +} +.table-hover > tbody > tr > td.warning:hover, +.table-hover > tbody > tr > th.warning:hover, +.table-hover > tbody > tr.warning:hover > td, +.table-hover > tbody > tr:hover > .warning, +.table-hover > tbody > tr.warning:hover > th { + background-color: #faf2cc; +} +.table > thead > tr > td.danger, +.table > tbody > tr > td.danger, +.table > tfoot > tr > td.danger, +.table > thead > tr > th.danger, +.table > tbody > tr > th.danger, +.table > tfoot > tr > th.danger, +.table > thead > tr.danger > td, +.table > tbody > tr.danger > td, +.table > tfoot > tr.danger > td, +.table > thead > tr.danger > th, +.table > tbody > tr.danger > th, +.table > tfoot > tr.danger > th { + background-color: #f2dede; +} +.table-hover > tbody > tr > td.danger:hover, +.table-hover > tbody > tr > th.danger:hover, +.table-hover > tbody > tr.danger:hover > td, +.table-hover > tbody > tr:hover > .danger, +.table-hover > tbody > tr.danger:hover > th { + background-color: #ebcccc; +} +.table-responsive { + min-height: .01%; + overflow-x: auto; +} +@media screen and (max-width: 767px) { + .table-responsive { + width: 100%; + margin-bottom: 15px; + overflow-y: hidden; + -ms-overflow-style: -ms-autohiding-scrollbar; + border: 1px solid #ddd; + } + .table-responsive > .table { + margin-bottom: 0; + } + .table-responsive > .table > thead > tr > th, + .table-responsive > .table > tbody > tr > th, + .table-responsive > .table > tfoot > tr > th, + .table-responsive > .table > thead > tr > td, + .table-responsive > .table > tbody > tr > td, + .table-responsive > .table > tfoot > tr > td { + white-space: nowrap; + } + .table-responsive > .table-bordered { + border: 0; + } + .table-responsive > .table-bordered > thead > tr > th:first-child, + .table-responsive > .table-bordered > tbody > tr > th:first-child, + .table-responsive > .table-bordered > tfoot > tr > th:first-child, + .table-responsive > .table-bordered > thead > tr > td:first-child, + .table-responsive > .table-bordered > tbody > tr > td:first-child, + .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; + } + .table-responsive > .table-bordered > thead > tr > th:last-child, + .table-responsive > .table-bordered > tbody > tr > th:last-child, + .table-responsive > .table-bordered > tfoot > tr > th:last-child, + .table-responsive > .table-bordered > thead > tr > td:last-child, + .table-responsive > .table-bordered > tbody > tr > td:last-child, + .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; + } + .table-responsive > .table-bordered > tbody > tr:last-child > th, + .table-responsive > .table-bordered > tfoot > tr:last-child > th, + .table-responsive > .table-bordered > tbody > tr:last-child > td, + .table-responsive > .table-bordered > tfoot > tr:last-child > td { + border-bottom: 0; + } +} +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} +label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: bold; +} +input[type="search"] { + -webkit-box-sizing: border-box; + -moz-box-sizing: border-box; + box-sizing: border-box; +} +input[type="radio"], +input[type="checkbox"] { + margin: 4px 0 0; + margin-top: 1px \9; + line-height: normal; +} +input[type="file"] { + display: block; +} +input[type="range"] { + display: block; + width: 100%; +} +select[multiple], +select[size] { + height: auto; +} +input[type="file"]:focus, +input[type="radio"]:focus, +input[type="checkbox"]:focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +output { + display: block; + padding-top: 7px; + font-size: 14px; + line-height: 1.42857143; + color: #555; +} +.form-control { + display: block; + width: 100%; + height: 34px; + padding: 6px 12px; + font-size: 14px; + line-height: 1.42857143; + color: #555; + background-color: #fff; + background-image: none; + border: 1px solid #ccc; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s; + -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; + transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s; +} +.form-control:focus { + border-color: #66afe9; + outline: 0; + -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6); +} +.form-control::-moz-placeholder { + color: #999; + opacity: 1; +} +.form-control:-ms-input-placeholder { + color: #999; +} +.form-control::-webkit-input-placeholder { + color: #999; +} +.form-control::-ms-expand { + background-color: transparent; + border: 0; +} +.form-control[disabled], +.form-control[readonly], +fieldset[disabled] .form-control { + background-color: #eee; + opacity: 1; +} +.form-control[disabled], +fieldset[disabled] .form-control { + cursor: not-allowed; +} +textarea.form-control { + height: auto; +} +input[type="search"] { + -webkit-appearance: none; +} +@media screen and (-webkit-min-device-pixel-ratio: 0) { + input[type="date"].form-control, + input[type="time"].form-control, + input[type="datetime-local"].form-control, + input[type="month"].form-control { + line-height: 34px; + } + input[type="date"].input-sm, + input[type="time"].input-sm, + input[type="datetime-local"].input-sm, + input[type="month"].input-sm, + .input-group-sm input[type="date"], + .input-group-sm input[type="time"], + .input-group-sm input[type="datetime-local"], + .input-group-sm input[type="month"] { + line-height: 30px; + } + input[type="date"].input-lg, + input[type="time"].input-lg, + input[type="datetime-local"].input-lg, + input[type="month"].input-lg, + .input-group-lg input[type="date"], + .input-group-lg input[type="time"], + .input-group-lg input[type="datetime-local"], + .input-group-lg input[type="month"] { + line-height: 46px; + } +} +.form-group { + margin-bottom: 15px; +} +.radio, +.checkbox { + position: relative; + display: block; + margin-top: 10px; + margin-bottom: 10px; +} +.radio label, +.checkbox label { + min-height: 20px; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + cursor: pointer; +} +.radio input[type="radio"], +.radio-inline input[type="radio"], +.checkbox input[type="checkbox"], +.checkbox-inline input[type="checkbox"] { + position: absolute; + margin-top: 4px \9; + margin-left: -20px; +} +.radio + .radio, +.checkbox + .checkbox { + margin-top: -5px; +} +.radio-inline, +.checkbox-inline { + position: relative; + display: inline-block; + padding-left: 20px; + margin-bottom: 0; + font-weight: normal; + vertical-align: middle; + cursor: pointer; +} +.radio-inline + .radio-inline, +.checkbox-inline + .checkbox-inline { + margin-top: 0; + margin-left: 10px; +} +input[type="radio"][disabled], +input[type="checkbox"][disabled], +input[type="radio"].disabled, +input[type="checkbox"].disabled, +fieldset[disabled] input[type="radio"], +fieldset[disabled] input[type="checkbox"] { + cursor: not-allowed; +} +.radio-inline.disabled, +.checkbox-inline.disabled, +fieldset[disabled] .radio-inline, +fieldset[disabled] .checkbox-inline { + cursor: not-allowed; +} +.radio.disabled label, +.checkbox.disabled label, +fieldset[disabled] .radio label, +fieldset[disabled] .checkbox label { + cursor: not-allowed; +} +.form-control-static { + min-height: 34px; + padding-top: 7px; + padding-bottom: 7px; + margin-bottom: 0; +} +.form-control-static.input-lg, +.form-control-static.input-sm { + padding-right: 0; + padding-left: 0; +} +.input-sm { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-sm { + height: 30px; + line-height: 30px; +} +textarea.input-sm, +select[multiple].input-sm { + height: auto; +} +.form-group-sm .form-control { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.form-group-sm select.form-control { + height: 30px; + line-height: 30px; +} +.form-group-sm textarea.form-control, +.form-group-sm select[multiple].form-control { + height: auto; +} +.form-group-sm .form-control-static { + height: 30px; + min-height: 32px; + padding: 6px 10px; + font-size: 12px; + line-height: 1.5; +} +.input-lg { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-lg { + height: 46px; + line-height: 46px; +} +textarea.input-lg, +select[multiple].input-lg { + height: auto; +} +.form-group-lg .form-control { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.form-group-lg select.form-control { + height: 46px; + line-height: 46px; +} +.form-group-lg textarea.form-control, +.form-group-lg select[multiple].form-control { + height: auto; +} +.form-group-lg .form-control-static { + height: 46px; + min-height: 38px; + padding: 11px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.has-feedback { + position: relative; +} +.has-feedback .form-control { + padding-right: 42.5px; +} +.form-control-feedback { + position: absolute; + top: 0; + right: 0; + z-index: 2; + display: block; + width: 34px; + height: 34px; + line-height: 34px; + text-align: center; + pointer-events: none; +} +.input-lg + .form-control-feedback, +.input-group-lg + .form-control-feedback, +.form-group-lg .form-control + .form-control-feedback { + width: 46px; + height: 46px; + line-height: 46px; +} +.input-sm + .form-control-feedback, +.input-group-sm + .form-control-feedback, +.form-group-sm .form-control + .form-control-feedback { + width: 30px; + height: 30px; + line-height: 30px; +} +.has-success .help-block, +.has-success .control-label, +.has-success .radio, +.has-success .checkbox, +.has-success .radio-inline, +.has-success .checkbox-inline, +.has-success.radio label, +.has-success.checkbox label, +.has-success.radio-inline label, +.has-success.checkbox-inline label { + color: #3c763d; +} +.has-success .form-control { + border-color: #3c763d; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-success .form-control:focus { + border-color: #2b542c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168; +} +.has-success .input-group-addon { + color: #3c763d; + background-color: #dff0d8; + border-color: #3c763d; +} +.has-success .form-control-feedback { + color: #3c763d; +} +.has-warning .help-block, +.has-warning .control-label, +.has-warning .radio, +.has-warning .checkbox, +.has-warning .radio-inline, +.has-warning .checkbox-inline, +.has-warning.radio label, +.has-warning.checkbox label, +.has-warning.radio-inline label, +.has-warning.checkbox-inline label { + color: #8a6d3b; +} +.has-warning .form-control { + border-color: #8a6d3b; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-warning .form-control:focus { + border-color: #66512c; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b; +} +.has-warning .input-group-addon { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #8a6d3b; +} +.has-warning .form-control-feedback { + color: #8a6d3b; +} +.has-error .help-block, +.has-error .control-label, +.has-error .radio, +.has-error .checkbox, +.has-error .radio-inline, +.has-error .checkbox-inline, +.has-error.radio label, +.has-error.checkbox label, +.has-error.radio-inline label, +.has-error.checkbox-inline label { + color: #a94442; +} +.has-error .form-control { + border-color: #a94442; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075); +} +.has-error .form-control:focus { + border-color: #843534; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483; +} +.has-error .input-group-addon { + color: #a94442; + background-color: #f2dede; + border-color: #a94442; +} +.has-error .form-control-feedback { + color: #a94442; +} +.has-feedback label ~ .form-control-feedback { + top: 25px; +} +.has-feedback label.sr-only ~ .form-control-feedback { + top: 0; +} +.help-block { + display: block; + margin-top: 5px; + margin-bottom: 10px; + color: #737373; +} +@media (min-width: 768px) { + .form-inline .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .form-inline .form-control-static { + display: inline-block; + } + .form-inline .input-group { + display: inline-table; + vertical-align: middle; + } + .form-inline .input-group .input-group-addon, + .form-inline .input-group .input-group-btn, + .form-inline .input-group .form-control { + width: auto; + } + .form-inline .input-group > .form-control { + width: 100%; + } + .form-inline .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio, + .form-inline .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .form-inline .radio label, + .form-inline .checkbox label { + padding-left: 0; + } + .form-inline .radio input[type="radio"], + .form-inline .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .form-inline .has-feedback .form-control-feedback { + top: 0; + } +} +.form-horizontal .radio, +.form-horizontal .checkbox, +.form-horizontal .radio-inline, +.form-horizontal .checkbox-inline { + padding-top: 7px; + margin-top: 0; + margin-bottom: 0; +} +.form-horizontal .radio, +.form-horizontal .checkbox { + min-height: 27px; +} +.form-horizontal .form-group { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .form-horizontal .control-label { + padding-top: 7px; + margin-bottom: 0; + text-align: right; + } +} +.form-horizontal .has-feedback .form-control-feedback { + right: 15px; +} +@media (min-width: 768px) { + .form-horizontal .form-group-lg .control-label { + padding-top: 11px; + font-size: 18px; + } +} +@media (min-width: 768px) { + .form-horizontal .form-group-sm .control-label { + padding-top: 6px; + font-size: 12px; + } +} +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 14px; + font-weight: normal; + line-height: 1.42857143; + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=65); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .65; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + color: #333; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #e6e6e6; + border-color: #8c8c8c; +} +.btn-default:hover { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} +.btn-primary { + color: #fff; + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary:focus, +.btn-primary.focus { + color: #fff; + background-color: #286090; + border-color: #122b40; +} +.btn-primary:hover { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + color: #fff; + background-color: #286090; + border-color: #204d74; +} +.btn-primary:active:hover, +.btn-primary.active:hover, +.open > .dropdown-toggle.btn-primary:hover, +.btn-primary:active:focus, +.btn-primary.active:focus, +.open > .dropdown-toggle.btn-primary:focus, +.btn-primary:active.focus, +.btn-primary.active.focus, +.open > .dropdown-toggle.btn-primary.focus { + color: #fff; + background-color: #204d74; + border-color: #122b40; +} +.btn-primary:active, +.btn-primary.active, +.open > .dropdown-toggle.btn-primary { + background-image: none; +} +.btn-primary.disabled:hover, +.btn-primary[disabled]:hover, +fieldset[disabled] .btn-primary:hover, +.btn-primary.disabled:focus, +.btn-primary[disabled]:focus, +fieldset[disabled] .btn-primary:focus, +.btn-primary.disabled.focus, +.btn-primary[disabled].focus, +fieldset[disabled] .btn-primary.focus { + background-color: #337ab7; + border-color: #2e6da4; +} +.btn-primary .badge { + color: #337ab7; + background-color: #fff; +} +.btn-success { + color: #fff; + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success:focus, +.btn-success.focus { + color: #fff; + background-color: #449d44; + border-color: #255625; +} +.btn-success:hover { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + color: #fff; + background-color: #449d44; + border-color: #398439; +} +.btn-success:active:hover, +.btn-success.active:hover, +.open > .dropdown-toggle.btn-success:hover, +.btn-success:active:focus, +.btn-success.active:focus, +.open > .dropdown-toggle.btn-success:focus, +.btn-success:active.focus, +.btn-success.active.focus, +.open > .dropdown-toggle.btn-success.focus { + color: #fff; + background-color: #398439; + border-color: #255625; +} +.btn-success:active, +.btn-success.active, +.open > .dropdown-toggle.btn-success { + background-image: none; +} +.btn-success.disabled:hover, +.btn-success[disabled]:hover, +fieldset[disabled] .btn-success:hover, +.btn-success.disabled:focus, +.btn-success[disabled]:focus, +fieldset[disabled] .btn-success:focus, +.btn-success.disabled.focus, +.btn-success[disabled].focus, +fieldset[disabled] .btn-success.focus { + background-color: #5cb85c; + border-color: #4cae4c; +} +.btn-success .badge { + color: #5cb85c; + background-color: #fff; +} +.btn-info { + color: #fff; + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info:focus, +.btn-info.focus { + color: #fff; + background-color: #31b0d5; + border-color: #1b6d85; +} +.btn-info:hover { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + color: #fff; + background-color: #31b0d5; + border-color: #269abc; +} +.btn-info:active:hover, +.btn-info.active:hover, +.open > .dropdown-toggle.btn-info:hover, +.btn-info:active:focus, +.btn-info.active:focus, +.open > .dropdown-toggle.btn-info:focus, +.btn-info:active.focus, +.btn-info.active.focus, +.open > .dropdown-toggle.btn-info.focus { + color: #fff; + background-color: #269abc; + border-color: #1b6d85; +} +.btn-info:active, +.btn-info.active, +.open > .dropdown-toggle.btn-info { + background-image: none; +} +.btn-info.disabled:hover, +.btn-info[disabled]:hover, +fieldset[disabled] .btn-info:hover, +.btn-info.disabled:focus, +.btn-info[disabled]:focus, +fieldset[disabled] .btn-info:focus, +.btn-info.disabled.focus, +.btn-info[disabled].focus, +fieldset[disabled] .btn-info.focus { + background-color: #5bc0de; + border-color: #46b8da; +} +.btn-info .badge { + color: #5bc0de; + background-color: #fff; +} +.btn-warning { + color: #fff; + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning:focus, +.btn-warning.focus { + color: #fff; + background-color: #ec971f; + border-color: #985f0d; +} +.btn-warning:hover { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + color: #fff; + background-color: #ec971f; + border-color: #d58512; +} +.btn-warning:active:hover, +.btn-warning.active:hover, +.open > .dropdown-toggle.btn-warning:hover, +.btn-warning:active:focus, +.btn-warning.active:focus, +.open > .dropdown-toggle.btn-warning:focus, +.btn-warning:active.focus, +.btn-warning.active.focus, +.open > .dropdown-toggle.btn-warning.focus { + color: #fff; + background-color: #d58512; + border-color: #985f0d; +} +.btn-warning:active, +.btn-warning.active, +.open > .dropdown-toggle.btn-warning { + background-image: none; +} +.btn-warning.disabled:hover, +.btn-warning[disabled]:hover, +fieldset[disabled] .btn-warning:hover, +.btn-warning.disabled:focus, +.btn-warning[disabled]:focus, +fieldset[disabled] .btn-warning:focus, +.btn-warning.disabled.focus, +.btn-warning[disabled].focus, +fieldset[disabled] .btn-warning.focus { + background-color: #f0ad4e; + border-color: #eea236; +} +.btn-warning .badge { + color: #f0ad4e; + background-color: #fff; +} +.btn-danger { + color: #fff; + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger:focus, +.btn-danger.focus { + color: #fff; + background-color: #c9302c; + border-color: #761c19; +} +.btn-danger:hover { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + color: #fff; + background-color: #c9302c; + border-color: #ac2925; +} +.btn-danger:active:hover, +.btn-danger.active:hover, +.open > .dropdown-toggle.btn-danger:hover, +.btn-danger:active:focus, +.btn-danger.active:focus, +.open > .dropdown-toggle.btn-danger:focus, +.btn-danger:active.focus, +.btn-danger.active.focus, +.open > .dropdown-toggle.btn-danger.focus { + color: #fff; + background-color: #ac2925; + border-color: #761c19; +} +.btn-danger:active, +.btn-danger.active, +.open > .dropdown-toggle.btn-danger { + background-image: none; +} +.btn-danger.disabled:hover, +.btn-danger[disabled]:hover, +fieldset[disabled] .btn-danger:hover, +.btn-danger.disabled:focus, +.btn-danger[disabled]:focus, +fieldset[disabled] .btn-danger:focus, +.btn-danger.disabled.focus, +.btn-danger[disabled].focus, +fieldset[disabled] .btn-danger.focus { + background-color: #d9534f; + border-color: #d43f3a; +} +.btn-danger .badge { + color: #d9534f; + background-color: #fff; +} +.btn-link { + font-weight: normal; + color: #337ab7; + border-radius: 0; +} +.btn-link, +.btn-link:active, +.btn-link.active, +.btn-link[disabled], +fieldset[disabled] .btn-link { + background-color: transparent; + -webkit-box-shadow: none; + box-shadow: none; +} +.btn-link, +.btn-link:hover, +.btn-link:focus, +.btn-link:active { + border-color: transparent; +} +.btn-link:hover, +.btn-link:focus { + color: #23527c; + text-decoration: underline; + background-color: transparent; +} +.btn-link[disabled]:hover, +fieldset[disabled] .btn-link:hover, +.btn-link[disabled]:focus, +fieldset[disabled] .btn-link:focus { + color: #777; + text-decoration: none; +} +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 1px 5px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} +input[type="submit"].btn-block, +input[type="reset"].btn-block, +input[type="button"].btn-block { + width: 100%; +} +.fade { + opacity: 0; + -webkit-transition: opacity .15s linear; + -o-transition: opacity .15s linear; + transition: opacity .15s linear; +} +.fade.in { + opacity: 1; +} +.collapse { + display: none; +} +.collapse.in { + display: block; +} +tr.collapse.in { + display: table-row; +} +tbody.collapse.in { + display: table-row-group; +} +.collapsing { + position: relative; + height: 0; + overflow: hidden; + -webkit-transition-timing-function: ease; + -o-transition-timing-function: ease; + transition-timing-function: ease; + -webkit-transition-duration: .35s; + -o-transition-duration: .35s; + transition-duration: .35s; + -webkit-transition-property: height, visibility; + -o-transition-property: height, visibility; + transition-property: height, visibility; +} +.caret { + display: inline-block; + width: 0; + height: 0; + margin-left: 2px; + vertical-align: middle; + border-top: 4px dashed; + border-top: 4px solid \9; + border-right: 4px solid transparent; + border-left: 4px solid transparent; +} +.dropup, +.dropdown { + position: relative; +} +.dropdown-toggle:focus { + outline: 0; +} +.dropdown-menu { + position: absolute; + top: 100%; + left: 0; + z-index: 1000; + display: none; + float: left; + min-width: 160px; + padding: 5px 0; + margin: 2px 0 0; + font-size: 14px; + text-align: left; + list-style: none; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .15); + border-radius: 4px; + -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175); + box-shadow: 0 6px 12px rgba(0, 0, 0, .175); +} +.dropdown-menu.pull-right { + right: 0; + left: auto; +} +.dropdown-menu .divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.dropdown-menu > li > a { + display: block; + padding: 3px 20px; + clear: both; + font-weight: normal; + line-height: 1.42857143; + color: #333; + white-space: nowrap; +} +.dropdown-menu > li > a:hover, +.dropdown-menu > li > a:focus { + color: #262626; + text-decoration: none; + background-color: #f5f5f5; +} +.dropdown-menu > .active > a, +.dropdown-menu > .active > a:hover, +.dropdown-menu > .active > a:focus { + color: #fff; + text-decoration: none; + background-color: #337ab7; + outline: 0; +} +.dropdown-menu > .disabled > a, +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + color: #777; +} +.dropdown-menu > .disabled > a:hover, +.dropdown-menu > .disabled > a:focus { + text-decoration: none; + cursor: not-allowed; + background-color: transparent; + background-image: none; + filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); +} +.open > .dropdown-menu { + display: block; +} +.open > a { + outline: 0; +} +.dropdown-menu-right { + right: 0; + left: auto; +} +.dropdown-menu-left { + right: auto; + left: 0; +} +.dropdown-header { + display: block; + padding: 3px 20px; + font-size: 12px; + line-height: 1.42857143; + color: #777; + white-space: nowrap; +} +.dropdown-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 990; +} +.pull-right > .dropdown-menu { + right: 0; + left: auto; +} +.dropup .caret, +.navbar-fixed-bottom .dropdown .caret { + content: ""; + border-top: 0; + border-bottom: 4px dashed; + border-bottom: 4px solid \9; +} +.dropup .dropdown-menu, +.navbar-fixed-bottom .dropdown .dropdown-menu { + top: auto; + bottom: 100%; + margin-bottom: 2px; +} +@media (min-width: 768px) { + .navbar-right .dropdown-menu { + right: 0; + left: auto; + } + .navbar-right .dropdown-menu-left { + right: auto; + left: 0; + } +} +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-block; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + float: left; +} +.btn-group > .btn:hover, +.btn-group-vertical > .btn:hover, +.btn-group > .btn:focus, +.btn-group-vertical > .btn:focus, +.btn-group > .btn:active, +.btn-group-vertical > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn.active { + z-index: 2; +} +.btn-group .btn + .btn, +.btn-group .btn + .btn-group, +.btn-group .btn-group + .btn, +.btn-group .btn-group + .btn-group { + margin-left: -1px; +} +.btn-toolbar { + margin-left: -5px; +} +.btn-toolbar .btn, +.btn-toolbar .btn-group, +.btn-toolbar .input-group { + float: left; +} +.btn-toolbar > .btn, +.btn-toolbar > .btn-group, +.btn-toolbar > .input-group { + margin-left: 5px; +} +.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { + border-radius: 0; +} +.btn-group > .btn:first-child { + margin-left: 0; +} +.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:last-child:not(:first-child), +.btn-group > .dropdown-toggle:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group > .btn-group { + float: left; +} +.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group .dropdown-toggle:active, +.btn-group.open .dropdown-toggle { + outline: 0; +} +.btn-group > .btn + .dropdown-toggle { + padding-right: 8px; + padding-left: 8px; +} +.btn-group > .btn-lg + .dropdown-toggle { + padding-right: 12px; + padding-left: 12px; +} +.btn-group.open .dropdown-toggle { + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn-group.open .dropdown-toggle.btn-link { + -webkit-box-shadow: none; + box-shadow: none; +} +.btn .caret { + margin-left: 0; +} +.btn-lg .caret { + border-width: 5px 5px 0; + border-bottom-width: 0; +} +.dropup .btn-lg .caret { + border-width: 0 5px 5px; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group, +.btn-group-vertical > .btn-group > .btn { + display: block; + float: none; + width: 100%; + max-width: 100%; +} +.btn-group-vertical > .btn-group > .btn { + float: none; +} +.btn-group-vertical > .btn + .btn, +.btn-group-vertical > .btn + .btn-group, +.btn-group-vertical > .btn-group + .btn, +.btn-group-vertical > .btn-group + .btn-group { + margin-top: -1px; + margin-left: 0; +} +.btn-group-vertical > .btn:not(:first-child):not(:last-child) { + border-radius: 0; +} +.btn-group-vertical > .btn:first-child:not(:last-child) { + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn:last-child:not(:first-child) { + border-top-left-radius: 0; + border-top-right-radius: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { + border-radius: 0; +} +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child, +.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.btn-group-justified { + display: table; + width: 100%; + table-layout: fixed; + border-collapse: separate; +} +.btn-group-justified > .btn, +.btn-group-justified > .btn-group { + display: table-cell; + float: none; + width: 1%; +} +.btn-group-justified > .btn-group .btn { + width: 100%; +} +.btn-group-justified > .btn-group .dropdown-menu { + left: auto; +} +[data-toggle="buttons"] > .btn input[type="radio"], +[data-toggle="buttons"] > .btn-group > .btn input[type="radio"], +[data-toggle="buttons"] > .btn input[type="checkbox"], +[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.input-group { + position: relative; + display: table; + border-collapse: separate; +} +.input-group[class*="col-"] { + float: none; + padding-right: 0; + padding-left: 0; +} +.input-group .form-control { + position: relative; + z-index: 2; + float: left; + width: 100%; + margin-bottom: 0; +} +.input-group .form-control:focus { + z-index: 3; +} +.input-group-lg > .form-control, +.input-group-lg > .input-group-addon, +.input-group-lg > .input-group-btn > .btn { + height: 46px; + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +select.input-group-lg > .form-control, +select.input-group-lg > .input-group-addon, +select.input-group-lg > .input-group-btn > .btn { + height: 46px; + line-height: 46px; +} +textarea.input-group-lg > .form-control, +textarea.input-group-lg > .input-group-addon, +textarea.input-group-lg > .input-group-btn > .btn, +select[multiple].input-group-lg > .form-control, +select[multiple].input-group-lg > .input-group-addon, +select[multiple].input-group-lg > .input-group-btn > .btn { + height: auto; +} +.input-group-sm > .form-control, +.input-group-sm > .input-group-addon, +.input-group-sm > .input-group-btn > .btn { + height: 30px; + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +select.input-group-sm > .form-control, +select.input-group-sm > .input-group-addon, +select.input-group-sm > .input-group-btn > .btn { + height: 30px; + line-height: 30px; +} +textarea.input-group-sm > .form-control, +textarea.input-group-sm > .input-group-addon, +textarea.input-group-sm > .input-group-btn > .btn, +select[multiple].input-group-sm > .form-control, +select[multiple].input-group-sm > .input-group-addon, +select[multiple].input-group-sm > .input-group-btn > .btn { + height: auto; +} +.input-group-addon, +.input-group-btn, +.input-group .form-control { + display: table-cell; +} +.input-group-addon:not(:first-child):not(:last-child), +.input-group-btn:not(:first-child):not(:last-child), +.input-group .form-control:not(:first-child):not(:last-child) { + border-radius: 0; +} +.input-group-addon, +.input-group-btn { + width: 1%; + white-space: nowrap; + vertical-align: middle; +} +.input-group-addon { + padding: 6px 12px; + font-size: 14px; + font-weight: normal; + line-height: 1; + color: #555; + text-align: center; + background-color: #eee; + border: 1px solid #ccc; + border-radius: 4px; +} +.input-group-addon.input-sm { + padding: 5px 10px; + font-size: 12px; + border-radius: 3px; +} +.input-group-addon.input-lg { + padding: 10px 16px; + font-size: 18px; + border-radius: 6px; +} +.input-group-addon input[type="radio"], +.input-group-addon input[type="checkbox"] { + margin-top: 0; +} +.input-group .form-control:first-child, +.input-group-addon:first-child, +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group > .btn, +.input-group-btn:first-child > .dropdown-toggle, +.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), +.input-group-btn:last-child > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group-addon:first-child { + border-right: 0; +} +.input-group .form-control:last-child, +.input-group-addon:last-child, +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group > .btn, +.input-group-btn:last-child > .dropdown-toggle, +.input-group-btn:first-child > .btn:not(:first-child), +.input-group-btn:first-child > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.input-group-addon:last-child { + border-left: 0; +} +.input-group-btn { + position: relative; + font-size: 0; + white-space: nowrap; +} +.input-group-btn > .btn { + position: relative; +} +.input-group-btn > .btn + .btn { + margin-left: -1px; +} +.input-group-btn > .btn:hover, +.input-group-btn > .btn:focus, +.input-group-btn > .btn:active { + z-index: 2; +} +.input-group-btn:first-child > .btn, +.input-group-btn:first-child > .btn-group { + margin-right: -1px; +} +.input-group-btn:last-child > .btn, +.input-group-btn:last-child > .btn-group { + z-index: 2; + margin-left: -1px; +} +.nav { + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.nav > li { + position: relative; + display: block; +} +.nav > li > a { + position: relative; + display: block; + padding: 10px 15px; +} +.nav > li > a:hover, +.nav > li > a:focus { + text-decoration: none; + background-color: #eee; +} +.nav > li.disabled > a { + color: #777; +} +.nav > li.disabled > a:hover, +.nav > li.disabled > a:focus { + color: #777; + text-decoration: none; + cursor: not-allowed; + background-color: transparent; +} +.nav .open > a, +.nav .open > a:hover, +.nav .open > a:focus { + background-color: #eee; + border-color: #337ab7; +} +.nav .nav-divider { + height: 1px; + margin: 9px 0; + overflow: hidden; + background-color: #e5e5e5; +} +.nav > li > a > img { + max-width: none; +} +.nav-tabs { + border-bottom: 1px solid #ddd; +} +.nav-tabs > li { + float: left; + margin-bottom: -1px; +} +.nav-tabs > li > a { + margin-right: 2px; + line-height: 1.42857143; + border: 1px solid transparent; + border-radius: 4px 4px 0 0; +} +.nav-tabs > li > a:hover { + border-color: #eee #eee #ddd; +} +.nav-tabs > li.active > a, +.nav-tabs > li.active > a:hover, +.nav-tabs > li.active > a:focus { + color: #555; + cursor: default; + background-color: #fff; + border: 1px solid #ddd; + border-bottom-color: transparent; +} +.nav-tabs.nav-justified { + width: 100%; + border-bottom: 0; +} +.nav-tabs.nav-justified > li { + float: none; +} +.nav-tabs.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-tabs.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-tabs.nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs.nav-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs.nav-justified > .active > a, +.nav-tabs.nav-justified > .active > a:hover, +.nav-tabs.nav-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs.nav-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs.nav-justified > .active > a, + .nav-tabs.nav-justified > .active > a:hover, + .nav-tabs.nav-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.nav-pills > li { + float: left; +} +.nav-pills > li > a { + border-radius: 4px; +} +.nav-pills > li + li { + margin-left: 2px; +} +.nav-pills > li.active > a, +.nav-pills > li.active > a:hover, +.nav-pills > li.active > a:focus { + color: #fff; + background-color: #337ab7; +} +.nav-stacked > li { + float: none; +} +.nav-stacked > li + li { + margin-top: 2px; + margin-left: 0; +} +.nav-justified { + width: 100%; +} +.nav-justified > li { + float: none; +} +.nav-justified > li > a { + margin-bottom: 5px; + text-align: center; +} +.nav-justified > .dropdown .dropdown-menu { + top: auto; + left: auto; +} +@media (min-width: 768px) { + .nav-justified > li { + display: table-cell; + width: 1%; + } + .nav-justified > li > a { + margin-bottom: 0; + } +} +.nav-tabs-justified { + border-bottom: 0; +} +.nav-tabs-justified > li > a { + margin-right: 0; + border-radius: 4px; +} +.nav-tabs-justified > .active > a, +.nav-tabs-justified > .active > a:hover, +.nav-tabs-justified > .active > a:focus { + border: 1px solid #ddd; +} +@media (min-width: 768px) { + .nav-tabs-justified > li > a { + border-bottom: 1px solid #ddd; + border-radius: 4px 4px 0 0; + } + .nav-tabs-justified > .active > a, + .nav-tabs-justified > .active > a:hover, + .nav-tabs-justified > .active > a:focus { + border-bottom-color: #fff; + } +} +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar { + position: relative; + min-height: 50px; + margin-bottom: 20px; + border: 1px solid transparent; +} +@media (min-width: 768px) { + .navbar { + border-radius: 4px; + } +} +@media (min-width: 768px) { + .navbar-header { + float: left; + } +} +.navbar-collapse { + padding-right: 15px; + padding-left: 15px; + overflow-x: visible; + -webkit-overflow-scrolling: touch; + border-top: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1); +} +.navbar-collapse.in { + overflow-y: auto; +} +@media (min-width: 768px) { + .navbar-collapse { + width: auto; + border-top: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-collapse.collapse { + display: block !important; + height: auto !important; + padding-bottom: 0; + overflow: visible !important; + } + .navbar-collapse.in { + overflow-y: visible; + } + .navbar-fixed-top .navbar-collapse, + .navbar-static-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + padding-right: 0; + padding-left: 0; + } +} +.navbar-fixed-top .navbar-collapse, +.navbar-fixed-bottom .navbar-collapse { + max-height: 340px; +} +@media (max-device-width: 480px) and (orientation: landscape) { + .navbar-fixed-top .navbar-collapse, + .navbar-fixed-bottom .navbar-collapse { + max-height: 200px; + } +} +.container > .navbar-header, +.container-fluid > .navbar-header, +.container > .navbar-collapse, +.container-fluid > .navbar-collapse { + margin-right: -15px; + margin-left: -15px; +} +@media (min-width: 768px) { + .container > .navbar-header, + .container-fluid > .navbar-header, + .container > .navbar-collapse, + .container-fluid > .navbar-collapse { + margin-right: 0; + margin-left: 0; + } +} +.navbar-static-top { + z-index: 1000; + border-width: 0 0 1px; +} +@media (min-width: 768px) { + .navbar-static-top { + border-radius: 0; + } +} +.navbar-fixed-top, +.navbar-fixed-bottom { + position: fixed; + right: 0; + left: 0; + z-index: 1030; +} +@media (min-width: 768px) { + .navbar-fixed-top, + .navbar-fixed-bottom { + border-radius: 0; + } +} +.navbar-fixed-top { + top: 0; + border-width: 0 0 1px; +} +.navbar-fixed-bottom { + bottom: 0; + margin-bottom: 0; + border-width: 1px 0 0; +} +.navbar-brand { + float: left; + height: 50px; + padding: 15px 15px; + font-size: 18px; + line-height: 20px; +} +.navbar-brand:hover, +.navbar-brand:focus { + text-decoration: none; +} +.navbar-brand > img { + display: block; +} +@media (min-width: 768px) { + .navbar > .container .navbar-brand, + .navbar > .container-fluid .navbar-brand { + margin-left: -15px; + } +} +.navbar-toggle { + position: relative; + float: right; + padding: 9px 10px; + margin-top: 8px; + margin-right: 15px; + margin-bottom: 8px; + background-color: transparent; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.navbar-toggle:focus { + outline: 0; +} +.navbar-toggle .icon-bar { + display: block; + width: 22px; + height: 2px; + border-radius: 1px; +} +.navbar-toggle .icon-bar + .icon-bar { + margin-top: 4px; +} +@media (min-width: 768px) { + .navbar-toggle { + display: none; + } +} +.navbar-nav { + margin: 7.5px -15px; +} +.navbar-nav > li > a { + padding-top: 10px; + padding-bottom: 10px; + line-height: 20px; +} +@media (max-width: 767px) { + .navbar-nav .open .dropdown-menu { + position: static; + float: none; + width: auto; + margin-top: 0; + background-color: transparent; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } + .navbar-nav .open .dropdown-menu > li > a, + .navbar-nav .open .dropdown-menu .dropdown-header { + padding: 5px 15px 5px 25px; + } + .navbar-nav .open .dropdown-menu > li > a { + line-height: 20px; + } + .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-nav .open .dropdown-menu > li > a:focus { + background-image: none; + } +} +@media (min-width: 768px) { + .navbar-nav { + float: left; + margin: 0; + } + .navbar-nav > li { + float: left; + } + .navbar-nav > li > a { + padding-top: 15px; + padding-bottom: 15px; + } +} +.navbar-form { + padding: 10px 15px; + margin-top: 8px; + margin-right: -15px; + margin-bottom: 8px; + margin-left: -15px; + border-top: 1px solid transparent; + border-bottom: 1px solid transparent; + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1); +} +@media (min-width: 768px) { + .navbar-form .form-group { + display: inline-block; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .form-control { + display: inline-block; + width: auto; + vertical-align: middle; + } + .navbar-form .form-control-static { + display: inline-block; + } + .navbar-form .input-group { + display: inline-table; + vertical-align: middle; + } + .navbar-form .input-group .input-group-addon, + .navbar-form .input-group .input-group-btn, + .navbar-form .input-group .form-control { + width: auto; + } + .navbar-form .input-group > .form-control { + width: 100%; + } + .navbar-form .control-label { + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio, + .navbar-form .checkbox { + display: inline-block; + margin-top: 0; + margin-bottom: 0; + vertical-align: middle; + } + .navbar-form .radio label, + .navbar-form .checkbox label { + padding-left: 0; + } + .navbar-form .radio input[type="radio"], + .navbar-form .checkbox input[type="checkbox"] { + position: relative; + margin-left: 0; + } + .navbar-form .has-feedback .form-control-feedback { + top: 0; + } +} +@media (max-width: 767px) { + .navbar-form .form-group { + margin-bottom: 5px; + } + .navbar-form .form-group:last-child { + margin-bottom: 0; + } +} +@media (min-width: 768px) { + .navbar-form { + width: auto; + padding-top: 0; + padding-bottom: 0; + margin-right: 0; + margin-left: 0; + border: 0; + -webkit-box-shadow: none; + box-shadow: none; + } +} +.navbar-nav > li > .dropdown-menu { + margin-top: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu { + margin-bottom: 0; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.navbar-btn { + margin-top: 8px; + margin-bottom: 8px; +} +.navbar-btn.btn-sm { + margin-top: 10px; + margin-bottom: 10px; +} +.navbar-btn.btn-xs { + margin-top: 14px; + margin-bottom: 14px; +} +.navbar-text { + margin-top: 15px; + margin-bottom: 15px; +} +@media (min-width: 768px) { + .navbar-text { + float: left; + margin-right: 15px; + margin-left: 15px; + } +} +@media (min-width: 768px) { + .navbar-left { + float: left !important; + } + .navbar-right { + float: right !important; + margin-right: -15px; + } + .navbar-right ~ .navbar-right { + margin-right: 0; + } +} +.navbar-default { + background-color: #f8f8f8; + border-color: #e7e7e7; +} +.navbar-default .navbar-brand { + color: #777; +} +.navbar-default .navbar-brand:hover, +.navbar-default .navbar-brand:focus { + color: #5e5e5e; + background-color: transparent; +} +.navbar-default .navbar-text { + color: #777; +} +.navbar-default .navbar-nav > li > a { + color: #777; +} +.navbar-default .navbar-nav > li > a:hover, +.navbar-default .navbar-nav > li > a:focus { + color: #333; + background-color: transparent; +} +.navbar-default .navbar-nav > .active > a, +.navbar-default .navbar-nav > .active > a:hover, +.navbar-default .navbar-nav > .active > a:focus { + color: #555; + background-color: #e7e7e7; +} +.navbar-default .navbar-nav > .disabled > a, +.navbar-default .navbar-nav > .disabled > a:hover, +.navbar-default .navbar-nav > .disabled > a:focus { + color: #ccc; + background-color: transparent; +} +.navbar-default .navbar-toggle { + border-color: #ddd; +} +.navbar-default .navbar-toggle:hover, +.navbar-default .navbar-toggle:focus { + background-color: #ddd; +} +.navbar-default .navbar-toggle .icon-bar { + background-color: #888; +} +.navbar-default .navbar-collapse, +.navbar-default .navbar-form { + border-color: #e7e7e7; +} +.navbar-default .navbar-nav > .open > a, +.navbar-default .navbar-nav > .open > a:hover, +.navbar-default .navbar-nav > .open > a:focus { + color: #555; + background-color: #e7e7e7; +} +@media (max-width: 767px) { + .navbar-default .navbar-nav .open .dropdown-menu > li > a { + color: #777; + } + .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus { + color: #333; + background-color: transparent; + } + .navbar-default .navbar-nav .open .dropdown-menu > .active > a, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #555; + background-color: #e7e7e7; + } + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #ccc; + background-color: transparent; + } +} +.navbar-default .navbar-link { + color: #777; +} +.navbar-default .navbar-link:hover { + color: #333; +} +.navbar-default .btn-link { + color: #777; +} +.navbar-default .btn-link:hover, +.navbar-default .btn-link:focus { + color: #333; +} +.navbar-default .btn-link[disabled]:hover, +fieldset[disabled] .navbar-default .btn-link:hover, +.navbar-default .btn-link[disabled]:focus, +fieldset[disabled] .navbar-default .btn-link:focus { + color: #ccc; +} +.navbar-inverse { + background-color: #222; + border-color: #080808; +} +.navbar-inverse .navbar-brand { + color: #9d9d9d; +} +.navbar-inverse .navbar-brand:hover, +.navbar-inverse .navbar-brand:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-text { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a { + color: #9d9d9d; +} +.navbar-inverse .navbar-nav > li > a:hover, +.navbar-inverse .navbar-nav > li > a:focus { + color: #fff; + background-color: transparent; +} +.navbar-inverse .navbar-nav > .active > a, +.navbar-inverse .navbar-nav > .active > a:hover, +.navbar-inverse .navbar-nav > .active > a:focus { + color: #fff; + background-color: #080808; +} +.navbar-inverse .navbar-nav > .disabled > a, +.navbar-inverse .navbar-nav > .disabled > a:hover, +.navbar-inverse .navbar-nav > .disabled > a:focus { + color: #444; + background-color: transparent; +} +.navbar-inverse .navbar-toggle { + border-color: #333; +} +.navbar-inverse .navbar-toggle:hover, +.navbar-inverse .navbar-toggle:focus { + background-color: #333; +} +.navbar-inverse .navbar-toggle .icon-bar { + background-color: #fff; +} +.navbar-inverse .navbar-collapse, +.navbar-inverse .navbar-form { + border-color: #101010; +} +.navbar-inverse .navbar-nav > .open > a, +.navbar-inverse .navbar-nav > .open > a:hover, +.navbar-inverse .navbar-nav > .open > a:focus { + color: #fff; + background-color: #080808; +} +@media (max-width: 767px) { + .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { + border-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu .divider { + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a { + color: #9d9d9d; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus { + color: #fff; + background-color: transparent; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus { + color: #fff; + background-color: #080808; + } + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, + .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus { + color: #444; + background-color: transparent; + } +} +.navbar-inverse .navbar-link { + color: #9d9d9d; +} +.navbar-inverse .navbar-link:hover { + color: #fff; +} +.navbar-inverse .btn-link { + color: #9d9d9d; +} +.navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link:focus { + color: #fff; +} +.navbar-inverse .btn-link[disabled]:hover, +fieldset[disabled] .navbar-inverse .btn-link:hover, +.navbar-inverse .btn-link[disabled]:focus, +fieldset[disabled] .navbar-inverse .btn-link:focus { + color: #444; +} +.breadcrumb { + padding: 8px 15px; + margin-bottom: 20px; + list-style: none; + background-color: #f5f5f5; + border-radius: 4px; +} +.breadcrumb > li { + display: inline-block; +} +.breadcrumb > li + li:before { + padding: 0 5px; + color: #ccc; + content: "/\00a0"; +} +.breadcrumb > .active { + color: #777; +} +.pagination { + display: inline-block; + padding-left: 0; + margin: 20px 0; + border-radius: 4px; +} +.pagination > li { + display: inline; +} +.pagination > li > a, +.pagination > li > span { + position: relative; + float: left; + padding: 6px 12px; + margin-left: -1px; + line-height: 1.42857143; + color: #337ab7; + text-decoration: none; + background-color: #fff; + border: 1px solid #ddd; +} +.pagination > li:first-child > a, +.pagination > li:first-child > span { + margin-left: 0; + border-top-left-radius: 4px; + border-bottom-left-radius: 4px; +} +.pagination > li:last-child > a, +.pagination > li:last-child > span { + border-top-right-radius: 4px; + border-bottom-right-radius: 4px; +} +.pagination > li > a:hover, +.pagination > li > span:hover, +.pagination > li > a:focus, +.pagination > li > span:focus { + z-index: 2; + color: #23527c; + background-color: #eee; + border-color: #ddd; +} +.pagination > .active > a, +.pagination > .active > span, +.pagination > .active > a:hover, +.pagination > .active > span:hover, +.pagination > .active > a:focus, +.pagination > .active > span:focus { + z-index: 3; + color: #fff; + cursor: default; + background-color: #337ab7; + border-color: #337ab7; +} +.pagination > .disabled > span, +.pagination > .disabled > span:hover, +.pagination > .disabled > span:focus, +.pagination > .disabled > a, +.pagination > .disabled > a:hover, +.pagination > .disabled > a:focus { + color: #777; + cursor: not-allowed; + background-color: #fff; + border-color: #ddd; +} +.pagination-lg > li > a, +.pagination-lg > li > span { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; +} +.pagination-lg > li:first-child > a, +.pagination-lg > li:first-child > span { + border-top-left-radius: 6px; + border-bottom-left-radius: 6px; +} +.pagination-lg > li:last-child > a, +.pagination-lg > li:last-child > span { + border-top-right-radius: 6px; + border-bottom-right-radius: 6px; +} +.pagination-sm > li > a, +.pagination-sm > li > span { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; +} +.pagination-sm > li:first-child > a, +.pagination-sm > li:first-child > span { + border-top-left-radius: 3px; + border-bottom-left-radius: 3px; +} +.pagination-sm > li:last-child > a, +.pagination-sm > li:last-child > span { + border-top-right-radius: 3px; + border-bottom-right-radius: 3px; +} +.pager { + padding-left: 0; + margin: 20px 0; + text-align: center; + list-style: none; +} +.pager li { + display: inline; +} +.pager li > a, +.pager li > span { + display: inline-block; + padding: 5px 14px; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 15px; +} +.pager li > a:hover, +.pager li > a:focus { + text-decoration: none; + background-color: #eee; +} +.pager .next > a, +.pager .next > span { + float: right; +} +.pager .previous > a, +.pager .previous > span { + float: left; +} +.pager .disabled > a, +.pager .disabled > a:hover, +.pager .disabled > a:focus, +.pager .disabled > span { + color: #777; + cursor: not-allowed; + background-color: #fff; +} +.label { + display: inline; + padding: .2em .6em .3em; + font-size: 75%; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: .25em; +} +a.label:hover, +a.label:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.label:empty { + display: none; +} +.btn .label { + position: relative; + top: -1px; +} +.label-default { + background-color: #777; +} +.label-default[href]:hover, +.label-default[href]:focus { + background-color: #5e5e5e; +} +.label-primary { + background-color: #337ab7; +} +.label-primary[href]:hover, +.label-primary[href]:focus { + background-color: #286090; +} +.label-success { + background-color: #5cb85c; +} +.label-success[href]:hover, +.label-success[href]:focus { + background-color: #449d44; +} +.label-info { + background-color: #5bc0de; +} +.label-info[href]:hover, +.label-info[href]:focus { + background-color: #31b0d5; +} +.label-warning { + background-color: #f0ad4e; +} +.label-warning[href]:hover, +.label-warning[href]:focus { + background-color: #ec971f; +} +.label-danger { + background-color: #d9534f; +} +.label-danger[href]:hover, +.label-danger[href]:focus { + background-color: #c9302c; +} +.badge { + display: inline-block; + min-width: 10px; + padding: 3px 7px; + font-size: 12px; + font-weight: bold; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: middle; + background-color: #777; + border-radius: 10px; +} +.badge:empty { + display: none; +} +.btn .badge { + position: relative; + top: -1px; +} +.btn-xs .badge, +.btn-group-xs > .btn .badge { + top: 0; + padding: 1px 5px; +} +a.badge:hover, +a.badge:focus { + color: #fff; + text-decoration: none; + cursor: pointer; +} +.list-group-item.active > .badge, +.nav-pills > .active > a > .badge { + color: #337ab7; + background-color: #fff; +} +.list-group-item > .badge { + float: right; +} +.list-group-item > .badge + .badge { + margin-right: 5px; +} +.nav-pills > li > a > .badge { + margin-left: 3px; +} +.jumbotron { + padding-top: 30px; + padding-bottom: 30px; + margin-bottom: 30px; + color: inherit; + background-color: #eee; +} +.jumbotron h1, +.jumbotron .h1 { + color: inherit; +} +.jumbotron p { + margin-bottom: 15px; + font-size: 21px; + font-weight: 200; +} +.jumbotron > hr { + border-top-color: #d5d5d5; +} +.container .jumbotron, +.container-fluid .jumbotron { + padding-right: 15px; + padding-left: 15px; + border-radius: 6px; +} +.jumbotron .container { + max-width: 100%; +} +@media screen and (min-width: 768px) { + .jumbotron { + padding-top: 48px; + padding-bottom: 48px; + } + .container .jumbotron, + .container-fluid .jumbotron { + padding-right: 60px; + padding-left: 60px; + } + .jumbotron h1, + .jumbotron .h1 { + font-size: 63px; + } +} +.thumbnail { + display: block; + padding: 4px; + margin-bottom: 20px; + line-height: 1.42857143; + background-color: #fff; + border: 1px solid #ddd; + border-radius: 4px; + -webkit-transition: border .2s ease-in-out; + -o-transition: border .2s ease-in-out; + transition: border .2s ease-in-out; +} +.thumbnail > img, +.thumbnail a > img { + margin-right: auto; + margin-left: auto; +} +a.thumbnail:hover, +a.thumbnail:focus, +a.thumbnail.active { + border-color: #337ab7; +} +.thumbnail .caption { + padding: 9px; + color: #333; +} +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin-bottom: 0; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable, +.alert-dismissible { + padding-right: 35px; +} +.alert-dismissable .close, +.alert-dismissible .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} +@-webkit-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@-o-keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +@keyframes progress-bar-stripes { + from { + background-position: 40px 0; + } + to { + background-position: 0 0; + } +} +.progress { + height: 20px; + margin-bottom: 20px; + overflow: hidden; + background-color: #f5f5f5; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); + box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1); +} +.progress-bar { + float: left; + width: 0; + height: 100%; + font-size: 12px; + line-height: 20px; + color: #fff; + text-align: center; + background-color: #337ab7; + -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15); + -webkit-transition: width .6s ease; + -o-transition: width .6s ease; + transition: width .6s ease; +} +.progress-striped .progress-bar, +.progress-bar-striped { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + -webkit-background-size: 40px 40px; + background-size: 40px 40px; +} +.progress.active .progress-bar, +.progress-bar.active { + -webkit-animation: progress-bar-stripes 2s linear infinite; + -o-animation: progress-bar-stripes 2s linear infinite; + animation: progress-bar-stripes 2s linear infinite; +} +.progress-bar-success { + background-color: #5cb85c; +} +.progress-striped .progress-bar-success { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-info { + background-color: #5bc0de; +} +.progress-striped .progress-bar-info { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-warning { + background-color: #f0ad4e; +} +.progress-striped .progress-bar-warning { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.progress-bar-danger { + background-color: #d9534f; +} +.progress-striped .progress-bar-danger { + background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); + background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent); +} +.media { + margin-top: 15px; +} +.media:first-child { + margin-top: 0; +} +.media, +.media-body { + overflow: hidden; + zoom: 1; +} +.media-body { + width: 10000px; +} +.media-object { + display: block; +} +.media-object.img-thumbnail { + max-width: none; +} +.media-right, +.media > .pull-right { + padding-left: 10px; +} +.media-left, +.media > .pull-left { + padding-right: 10px; +} +.media-left, +.media-right, +.media-body { + display: table-cell; + vertical-align: top; +} +.media-middle { + vertical-align: middle; +} +.media-bottom { + vertical-align: bottom; +} +.media-heading { + margin-top: 0; + margin-bottom: 5px; +} +.media-list { + padding-left: 0; + list-style: none; +} +.list-group { + padding-left: 0; + margin-bottom: 20px; +} +.list-group-item { + position: relative; + display: block; + padding: 10px 15px; + margin-bottom: -1px; + background-color: #fff; + border: 1px solid #ddd; +} +.list-group-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} +.list-group-item:last-child { + margin-bottom: 0; + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} +a.list-group-item, +button.list-group-item { + color: #555; +} +a.list-group-item .list-group-item-heading, +button.list-group-item .list-group-item-heading { + color: #333; +} +a.list-group-item:hover, +button.list-group-item:hover, +a.list-group-item:focus, +button.list-group-item:focus { + color: #555; + text-decoration: none; + background-color: #f5f5f5; +} +button.list-group-item { + width: 100%; + text-align: left; +} +.list-group-item.disabled, +.list-group-item.disabled:hover, +.list-group-item.disabled:focus { + color: #777; + cursor: not-allowed; + background-color: #eee; +} +.list-group-item.disabled .list-group-item-heading, +.list-group-item.disabled:hover .list-group-item-heading, +.list-group-item.disabled:focus .list-group-item-heading { + color: inherit; +} +.list-group-item.disabled .list-group-item-text, +.list-group-item.disabled:hover .list-group-item-text, +.list-group-item.disabled:focus .list-group-item-text { + color: #777; +} +.list-group-item.active, +.list-group-item.active:hover, +.list-group-item.active:focus { + z-index: 2; + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.list-group-item.active .list-group-item-heading, +.list-group-item.active:hover .list-group-item-heading, +.list-group-item.active:focus .list-group-item-heading, +.list-group-item.active .list-group-item-heading > small, +.list-group-item.active:hover .list-group-item-heading > small, +.list-group-item.active:focus .list-group-item-heading > small, +.list-group-item.active .list-group-item-heading > .small, +.list-group-item.active:hover .list-group-item-heading > .small, +.list-group-item.active:focus .list-group-item-heading > .small { + color: inherit; +} +.list-group-item.active .list-group-item-text, +.list-group-item.active:hover .list-group-item-text, +.list-group-item.active:focus .list-group-item-text { + color: #c7ddef; +} +.list-group-item-success { + color: #3c763d; + background-color: #dff0d8; +} +a.list-group-item-success, +button.list-group-item-success { + color: #3c763d; +} +a.list-group-item-success .list-group-item-heading, +button.list-group-item-success .list-group-item-heading { + color: inherit; +} +a.list-group-item-success:hover, +button.list-group-item-success:hover, +a.list-group-item-success:focus, +button.list-group-item-success:focus { + color: #3c763d; + background-color: #d0e9c6; +} +a.list-group-item-success.active, +button.list-group-item-success.active, +a.list-group-item-success.active:hover, +button.list-group-item-success.active:hover, +a.list-group-item-success.active:focus, +button.list-group-item-success.active:focus { + color: #fff; + background-color: #3c763d; + border-color: #3c763d; +} +.list-group-item-info { + color: #31708f; + background-color: #d9edf7; +} +a.list-group-item-info, +button.list-group-item-info { + color: #31708f; +} +a.list-group-item-info .list-group-item-heading, +button.list-group-item-info .list-group-item-heading { + color: inherit; +} +a.list-group-item-info:hover, +button.list-group-item-info:hover, +a.list-group-item-info:focus, +button.list-group-item-info:focus { + color: #31708f; + background-color: #c4e3f3; +} +a.list-group-item-info.active, +button.list-group-item-info.active, +a.list-group-item-info.active:hover, +button.list-group-item-info.active:hover, +a.list-group-item-info.active:focus, +button.list-group-item-info.active:focus { + color: #fff; + background-color: #31708f; + border-color: #31708f; +} +.list-group-item-warning { + color: #8a6d3b; + background-color: #fcf8e3; +} +a.list-group-item-warning, +button.list-group-item-warning { + color: #8a6d3b; +} +a.list-group-item-warning .list-group-item-heading, +button.list-group-item-warning .list-group-item-heading { + color: inherit; +} +a.list-group-item-warning:hover, +button.list-group-item-warning:hover, +a.list-group-item-warning:focus, +button.list-group-item-warning:focus { + color: #8a6d3b; + background-color: #faf2cc; +} +a.list-group-item-warning.active, +button.list-group-item-warning.active, +a.list-group-item-warning.active:hover, +button.list-group-item-warning.active:hover, +a.list-group-item-warning.active:focus, +button.list-group-item-warning.active:focus { + color: #fff; + background-color: #8a6d3b; + border-color: #8a6d3b; +} +.list-group-item-danger { + color: #a94442; + background-color: #f2dede; +} +a.list-group-item-danger, +button.list-group-item-danger { + color: #a94442; +} +a.list-group-item-danger .list-group-item-heading, +button.list-group-item-danger .list-group-item-heading { + color: inherit; +} +a.list-group-item-danger:hover, +button.list-group-item-danger:hover, +a.list-group-item-danger:focus, +button.list-group-item-danger:focus { + color: #a94442; + background-color: #ebcccc; +} +a.list-group-item-danger.active, +button.list-group-item-danger.active, +a.list-group-item-danger.active:hover, +button.list-group-item-danger.active:hover, +a.list-group-item-danger.active:focus, +button.list-group-item-danger.active:focus { + color: #fff; + background-color: #a94442; + border-color: #a94442; +} +.list-group-item-heading { + margin-top: 0; + margin-bottom: 5px; +} +.list-group-item-text { + margin-bottom: 0; + line-height: 1.3; +} +.panel { + margin-bottom: 20px; + background-color: #fff; + border: 1px solid transparent; + border-radius: 4px; + -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: 0 1px 1px rgba(0, 0, 0, .05); +} +.panel-body { + padding: 15px; +} +.panel-heading { + padding: 10px 15px; + border-bottom: 1px solid transparent; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel-heading > .dropdown .dropdown-toggle { + color: inherit; +} +.panel-title { + margin-top: 0; + margin-bottom: 0; + font-size: 16px; + color: inherit; +} +.panel-title > a, +.panel-title > small, +.panel-title > .small, +.panel-title > small > a, +.panel-title > .small > a { + color: inherit; +} +.panel-footer { + padding: 10px 15px; + background-color: #f5f5f5; + border-top: 1px solid #ddd; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .list-group, +.panel > .panel-collapse > .list-group { + margin-bottom: 0; +} +.panel > .list-group .list-group-item, +.panel > .panel-collapse > .list-group .list-group-item { + border-width: 1px 0; + border-radius: 0; +} +.panel > .list-group:first-child .list-group-item:first-child, +.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child { + border-top: 0; + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .list-group:last-child .list-group-item:last-child, +.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child { + border-bottom: 0; + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.panel-heading + .list-group .list-group-item:first-child { + border-top-width: 0; +} +.list-group + .panel-footer { + border-top-width: 0; +} +.panel > .table, +.panel > .table-responsive > .table, +.panel > .panel-collapse > .table { + margin-bottom: 0; +} +.panel > .table caption, +.panel > .table-responsive > .table caption, +.panel > .panel-collapse > .table caption { + padding-right: 15px; + padding-left: 15px; +} +.panel > .table:first-child, +.panel > .table-responsive:first-child > .table:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child { + border-top-left-radius: 3px; + border-top-right-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child { + border-top-left-radius: 3px; +} +.panel > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child, +.panel > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child, +.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child, +.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child { + border-top-right-radius: 3px; +} +.panel > .table:last-child, +.panel > .table-responsive:last-child > .table:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child { + border-bottom-right-radius: 3px; + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child { + border-bottom-left-radius: 3px; +} +.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child, +.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child, +.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child, +.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child { + border-bottom-right-radius: 3px; +} +.panel > .panel-body + .table, +.panel > .panel-body + .table-responsive, +.panel > .table + .panel-body, +.panel > .table-responsive + .panel-body { + border-top: 1px solid #ddd; +} +.panel > .table > tbody:first-child > tr:first-child th, +.panel > .table > tbody:first-child > tr:first-child td { + border-top: 0; +} +.panel > .table-bordered, +.panel > .table-responsive > .table-bordered { + border: 0; +} +.panel > .table-bordered > thead > tr > th:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:first-child, +.panel > .table-bordered > tbody > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child, +.panel > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child, +.panel > .table-bordered > thead > tr > td:first-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:first-child, +.panel > .table-bordered > tbody > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child, +.panel > .table-bordered > tfoot > tr > td:first-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child { + border-left: 0; +} +.panel > .table-bordered > thead > tr > th:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > th:last-child, +.panel > .table-bordered > tbody > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child, +.panel > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child, +.panel > .table-bordered > thead > tr > td:last-child, +.panel > .table-responsive > .table-bordered > thead > tr > td:last-child, +.panel > .table-bordered > tbody > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child, +.panel > .table-bordered > tfoot > tr > td:last-child, +.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child { + border-right: 0; +} +.panel > .table-bordered > thead > tr:first-child > td, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > td, +.panel > .table-bordered > tbody > tr:first-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td, +.panel > .table-bordered > thead > tr:first-child > th, +.panel > .table-responsive > .table-bordered > thead > tr:first-child > th, +.panel > .table-bordered > tbody > tr:first-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th { + border-bottom: 0; +} +.panel > .table-bordered > tbody > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td, +.panel > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td, +.panel > .table-bordered > tbody > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th, +.panel > .table-bordered > tfoot > tr:last-child > th, +.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th { + border-bottom: 0; +} +.panel > .table-responsive { + margin-bottom: 0; + border: 0; +} +.panel-group { + margin-bottom: 20px; +} +.panel-group .panel { + margin-bottom: 0; + border-radius: 4px; +} +.panel-group .panel + .panel { + margin-top: 5px; +} +.panel-group .panel-heading { + border-bottom: 0; +} +.panel-group .panel-heading + .panel-collapse > .panel-body, +.panel-group .panel-heading + .panel-collapse > .list-group { + border-top: 1px solid #ddd; +} +.panel-group .panel-footer { + border-top: 0; +} +.panel-group .panel-footer + .panel-collapse .panel-body { + border-bottom: 1px solid #ddd; +} +.panel-default { + border-color: #ddd; +} +.panel-default > .panel-heading { + color: #333; + background-color: #f5f5f5; + border-color: #ddd; +} +.panel-default > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ddd; +} +.panel-default > .panel-heading .badge { + color: #f5f5f5; + background-color: #333; +} +.panel-default > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ddd; +} +.panel-primary { + border-color: #337ab7; +} +.panel-primary > .panel-heading { + color: #fff; + background-color: #337ab7; + border-color: #337ab7; +} +.panel-primary > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #337ab7; +} +.panel-primary > .panel-heading .badge { + color: #337ab7; + background-color: #fff; +} +.panel-primary > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #337ab7; +} +.panel-success { + border-color: #d6e9c6; +} +.panel-success > .panel-heading { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.panel-success > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #d6e9c6; +} +.panel-success > .panel-heading .badge { + color: #dff0d8; + background-color: #3c763d; +} +.panel-success > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #d6e9c6; +} +.panel-info { + border-color: #bce8f1; +} +.panel-info > .panel-heading { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.panel-info > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #bce8f1; +} +.panel-info > .panel-heading .badge { + color: #d9edf7; + background-color: #31708f; +} +.panel-info > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #bce8f1; +} +.panel-warning { + border-color: #faebcc; +} +.panel-warning > .panel-heading { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #faebcc; +} +.panel-warning > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #faebcc; +} +.panel-warning > .panel-heading .badge { + color: #fcf8e3; + background-color: #8a6d3b; +} +.panel-warning > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #faebcc; +} +.panel-danger { + border-color: #ebccd1; +} +.panel-danger > .panel-heading { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.panel-danger > .panel-heading + .panel-collapse > .panel-body { + border-top-color: #ebccd1; +} +.panel-danger > .panel-heading .badge { + color: #f2dede; + background-color: #a94442; +} +.panel-danger > .panel-footer + .panel-collapse > .panel-body { + border-bottom-color: #ebccd1; +} +.embed-responsive { + position: relative; + display: block; + height: 0; + padding: 0; + overflow: hidden; +} +.embed-responsive .embed-responsive-item, +.embed-responsive iframe, +.embed-responsive embed, +.embed-responsive object, +.embed-responsive video { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 100%; + height: 100%; + border: 0; +} +.embed-responsive-16by9 { + padding-bottom: 56.25%; +} +.embed-responsive-4by3 { + padding-bottom: 75%; +} +.well { + min-height: 20px; + padding: 19px; + margin-bottom: 20px; + background-color: #f5f5f5; + border: 1px solid #e3e3e3; + border-radius: 4px; + -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05); +} +.well blockquote { + border-color: #ddd; + border-color: rgba(0, 0, 0, .15); +} +.well-lg { + padding: 24px; + border-radius: 6px; +} +.well-sm { + padding: 9px; + border-radius: 3px; +} +.close { + float: right; + font-size: 21px; + font-weight: bold; + line-height: 1; + color: #000; + text-shadow: 0 1px 0 #fff; + filter: alpha(opacity=20); + opacity: .2; +} +.close:hover, +.close:focus { + color: #000; + text-decoration: none; + cursor: pointer; + filter: alpha(opacity=50); + opacity: .5; +} +button.close { + -webkit-appearance: none; + padding: 0; + cursor: pointer; + background: transparent; + border: 0; +} +.modal-open { + overflow: hidden; +} +.modal { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1050; + display: none; + overflow: hidden; + -webkit-overflow-scrolling: touch; + outline: 0; +} +.modal.fade .modal-dialog { + -webkit-transition: -webkit-transform .3s ease-out; + -o-transition: -o-transform .3s ease-out; + transition: transform .3s ease-out; + -webkit-transform: translate(0, -25%); + -ms-transform: translate(0, -25%); + -o-transform: translate(0, -25%); + transform: translate(0, -25%); +} +.modal.in .modal-dialog { + -webkit-transform: translate(0, 0); + -ms-transform: translate(0, 0); + -o-transform: translate(0, 0); + transform: translate(0, 0); +} +.modal-open .modal { + overflow-x: hidden; + overflow-y: auto; +} +.modal-dialog { + position: relative; + width: auto; + margin: 10px; +} +.modal-content { + position: relative; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #999; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + outline: 0; + -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5); + box-shadow: 0 3px 9px rgba(0, 0, 0, .5); +} +.modal-backdrop { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1040; + background-color: #000; +} +.modal-backdrop.fade { + filter: alpha(opacity=0); + opacity: 0; +} +.modal-backdrop.in { + filter: alpha(opacity=50); + opacity: .5; +} +.modal-header { + padding: 15px; + border-bottom: 1px solid #e5e5e5; +} +.modal-header .close { + margin-top: -2px; +} +.modal-title { + margin: 0; + line-height: 1.42857143; +} +.modal-body { + position: relative; + padding: 15px; +} +.modal-footer { + padding: 15px; + text-align: right; + border-top: 1px solid #e5e5e5; +} +.modal-footer .btn + .btn { + margin-bottom: 0; + margin-left: 5px; +} +.modal-footer .btn-group .btn + .btn { + margin-left: -1px; +} +.modal-footer .btn-block + .btn-block { + margin-left: 0; +} +.modal-scrollbar-measure { + position: absolute; + top: -9999px; + width: 50px; + height: 50px; + overflow: scroll; +} +@media (min-width: 768px) { + .modal-dialog { + width: 600px; + margin: 30px auto; + } + .modal-content { + -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + box-shadow: 0 5px 15px rgba(0, 0, 0, .5); + } + .modal-sm { + width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg { + width: 900px; + } +} +.tooltip { + position: absolute; + z-index: 1070; + display: block; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 12px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + filter: alpha(opacity=0); + opacity: 0; + + line-break: auto; +} +.tooltip.in { + filter: alpha(opacity=90); + opacity: .9; +} +.tooltip.top { + padding: 5px 0; + margin-top: -3px; +} +.tooltip.right { + padding: 0 5px; + margin-left: 3px; +} +.tooltip.bottom { + padding: 5px 0; + margin-top: 3px; +} +.tooltip.left { + padding: 0 5px; + margin-left: -3px; +} +.tooltip-inner { + max-width: 200px; + padding: 3px 8px; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 4px; +} +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.tooltip.top .tooltip-arrow { + bottom: 0; + left: 50%; + margin-left: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-left .tooltip-arrow { + right: 5px; + bottom: 0; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.top-right .tooltip-arrow { + bottom: 0; + left: 5px; + margin-bottom: -5px; + border-width: 5px 5px 0; + border-top-color: #000; +} +.tooltip.right .tooltip-arrow { + top: 50%; + left: 0; + margin-top: -5px; + border-width: 5px 5px 5px 0; + border-right-color: #000; +} +.tooltip.left .tooltip-arrow { + top: 50%; + right: 0; + margin-top: -5px; + border-width: 5px 0 5px 5px; + border-left-color: #000; +} +.tooltip.bottom .tooltip-arrow { + top: 0; + left: 50%; + margin-left: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-left .tooltip-arrow { + top: 0; + right: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.tooltip.bottom-right .tooltip-arrow { + top: 0; + left: 5px; + margin-top: -5px; + border-width: 0 5px 5px; + border-bottom-color: #000; +} +.popover { + position: absolute; + top: 0; + left: 0; + z-index: 1060; + display: none; + max-width: 276px; + padding: 1px; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-size: 14px; + font-style: normal; + font-weight: normal; + line-height: 1.42857143; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + word-wrap: normal; + white-space: normal; + background-color: #fff; + -webkit-background-clip: padding-box; + background-clip: padding-box; + border: 1px solid #ccc; + border: 1px solid rgba(0, 0, 0, .2); + border-radius: 6px; + -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + box-shadow: 0 5px 10px rgba(0, 0, 0, .2); + + line-break: auto; +} +.popover.top { + margin-top: -10px; +} +.popover.right { + margin-left: 10px; +} +.popover.bottom { + margin-top: 10px; +} +.popover.left { + margin-left: -10px; +} +.popover-title { + padding: 8px 14px; + margin: 0; + font-size: 14px; + background-color: #f7f7f7; + border-bottom: 1px solid #ebebeb; + border-radius: 5px 5px 0 0; +} +.popover-content { + padding: 9px 14px; +} +.popover > .arrow, +.popover > .arrow:after { + position: absolute; + display: block; + width: 0; + height: 0; + border-color: transparent; + border-style: solid; +} +.popover > .arrow { + border-width: 11px; +} +.popover > .arrow:after { + content: ""; + border-width: 10px; +} +.popover.top > .arrow { + bottom: -11px; + left: 50%; + margin-left: -11px; + border-top-color: #999; + border-top-color: rgba(0, 0, 0, .25); + border-bottom-width: 0; +} +.popover.top > .arrow:after { + bottom: 1px; + margin-left: -10px; + content: " "; + border-top-color: #fff; + border-bottom-width: 0; +} +.popover.right > .arrow { + top: 50%; + left: -11px; + margin-top: -11px; + border-right-color: #999; + border-right-color: rgba(0, 0, 0, .25); + border-left-width: 0; +} +.popover.right > .arrow:after { + bottom: -10px; + left: 1px; + content: " "; + border-right-color: #fff; + border-left-width: 0; +} +.popover.bottom > .arrow { + top: -11px; + left: 50%; + margin-left: -11px; + border-top-width: 0; + border-bottom-color: #999; + border-bottom-color: rgba(0, 0, 0, .25); +} +.popover.bottom > .arrow:after { + top: 1px; + margin-left: -10px; + content: " "; + border-top-width: 0; + border-bottom-color: #fff; +} +.popover.left > .arrow { + top: 50%; + right: -11px; + margin-top: -11px; + border-right-width: 0; + border-left-color: #999; + border-left-color: rgba(0, 0, 0, .25); +} +.popover.left > .arrow:after { + right: 1px; + bottom: -10px; + content: " "; + border-right-width: 0; + border-left-color: #fff; +} +.carousel { + position: relative; +} +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner > .item { + position: relative; + display: none; + -webkit-transition: .6s ease-in-out left; + -o-transition: .6s ease-in-out left; + transition: .6s ease-in-out left; +} +.carousel-inner > .item > img, +.carousel-inner > .item > a > img { + line-height: 1; +} +@media all and (transform-3d), (-webkit-transform-3d) { + .carousel-inner > .item { + -webkit-transition: -webkit-transform .6s ease-in-out; + -o-transition: -o-transform .6s ease-in-out; + transition: transform .6s ease-in-out; + + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-perspective: 1000px; + perspective: 1000px; + } + .carousel-inner > .item.next, + .carousel-inner > .item.active.right { + left: 0; + -webkit-transform: translate3d(100%, 0, 0); + transform: translate3d(100%, 0, 0); + } + .carousel-inner > .item.prev, + .carousel-inner > .item.active.left { + left: 0; + -webkit-transform: translate3d(-100%, 0, 0); + transform: translate3d(-100%, 0, 0); + } + .carousel-inner > .item.next.left, + .carousel-inner > .item.prev.right, + .carousel-inner > .item.active { + left: 0; + -webkit-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); + } +} +.carousel-inner > .active, +.carousel-inner > .next, +.carousel-inner > .prev { + display: block; +} +.carousel-inner > .active { + left: 0; +} +.carousel-inner > .next, +.carousel-inner > .prev { + position: absolute; + top: 0; + width: 100%; +} +.carousel-inner > .next { + left: 100%; +} +.carousel-inner > .prev { + left: -100%; +} +.carousel-inner > .next.left, +.carousel-inner > .prev.right { + left: 0; +} +.carousel-inner > .active.left { + left: -100%; +} +.carousel-inner > .active.right { + left: 100%; +} +.carousel-control { + position: absolute; + top: 0; + bottom: 0; + left: 0; + width: 15%; + font-size: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); + background-color: rgba(0, 0, 0, 0); + filter: alpha(opacity=50); + opacity: .5; +} +.carousel-control.left { + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control.right { + right: 0; + left: auto; + background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5))); + background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1); + background-repeat: repeat-x; +} +.carousel-control:hover, +.carousel-control:focus { + color: #fff; + text-decoration: none; + filter: alpha(opacity=90); + outline: 0; + opacity: .9; +} +.carousel-control .icon-prev, +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-left, +.carousel-control .glyphicon-chevron-right { + position: absolute; + top: 50%; + z-index: 5; + display: inline-block; + margin-top: -10px; +} +.carousel-control .icon-prev, +.carousel-control .glyphicon-chevron-left { + left: 50%; + margin-left: -10px; +} +.carousel-control .icon-next, +.carousel-control .glyphicon-chevron-right { + right: 50%; + margin-right: -10px; +} +.carousel-control .icon-prev, +.carousel-control .icon-next { + width: 20px; + height: 20px; + font-family: serif; + line-height: 1; +} +.carousel-control .icon-prev:before { + content: '\2039'; +} +.carousel-control .icon-next:before { + content: '\203a'; +} +.carousel-indicators { + position: absolute; + bottom: 10px; + left: 50%; + z-index: 15; + width: 60%; + padding-left: 0; + margin-left: -30%; + text-align: center; + list-style: none; +} +.carousel-indicators li { + display: inline-block; + width: 10px; + height: 10px; + margin: 1px; + text-indent: -999px; + cursor: pointer; + background-color: #000 \9; + background-color: rgba(0, 0, 0, 0); + border: 1px solid #fff; + border-radius: 10px; +} +.carousel-indicators .active { + width: 12px; + height: 12px; + margin: 0; + background-color: #fff; +} +.carousel-caption { + position: absolute; + right: 15%; + bottom: 20px; + left: 15%; + z-index: 10; + padding-top: 20px; + padding-bottom: 20px; + color: #fff; + text-align: center; + text-shadow: 0 1px 2px rgba(0, 0, 0, .6); +} +.carousel-caption .btn { + text-shadow: none; +} +@media screen and (min-width: 768px) { + .carousel-control .glyphicon-chevron-left, + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-prev, + .carousel-control .icon-next { + width: 30px; + height: 30px; + margin-top: -10px; + font-size: 30px; + } + .carousel-control .glyphicon-chevron-left, + .carousel-control .icon-prev { + margin-left: -10px; + } + .carousel-control .glyphicon-chevron-right, + .carousel-control .icon-next { + margin-right: -10px; + } + .carousel-caption { + right: 20%; + left: 20%; + padding-bottom: 30px; + } + .carousel-indicators { + bottom: 20px; + } +} +.clearfix:before, +.clearfix:after, +.dl-horizontal dd:before, +.dl-horizontal dd:after, +.container:before, +.container:after, +.container-fluid:before, +.container-fluid:after, +.row:before, +.row:after, +.form-horizontal .form-group:before, +.form-horizontal .form-group:after, +.btn-toolbar:before, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:before, +.btn-group-vertical > .btn-group:after, +.nav:before, +.nav:after, +.navbar:before, +.navbar:after, +.navbar-header:before, +.navbar-header:after, +.navbar-collapse:before, +.navbar-collapse:after, +.pager:before, +.pager:after, +.panel-body:before, +.panel-body:after, +.modal-header:before, +.modal-header:after, +.modal-footer:before, +.modal-footer:after { + display: table; + content: " "; +} +.clearfix:after, +.dl-horizontal dd:after, +.container:after, +.container-fluid:after, +.row:after, +.form-horizontal .form-group:after, +.btn-toolbar:after, +.btn-group-vertical > .btn-group:after, +.nav:after, +.navbar:after, +.navbar-header:after, +.navbar-collapse:after, +.pager:after, +.panel-body:after, +.modal-header:after, +.modal-footer:after { + clear: both; +} +.center-block { + display: block; + margin-right: auto; + margin-left: auto; +} +.pull-right { + float: right !important; +} +.pull-left { + float: left !important; +} +.hide { + display: none !important; +} +.show { + display: block !important; +} +.invisible { + visibility: hidden; +} +.text-hide { + font: 0/0 a; + color: transparent; + text-shadow: none; + background-color: transparent; + border: 0; +} +.hidden { + display: none !important; +} +.affix { + position: fixed; +} +@-ms-viewport { + width: device-width; +} +.visible-xs, +.visible-sm, +.visible-md, +.visible-lg { + display: none !important; +} +.visible-xs-block, +.visible-xs-inline, +.visible-xs-inline-block, +.visible-sm-block, +.visible-sm-inline, +.visible-sm-inline-block, +.visible-md-block, +.visible-md-inline, +.visible-md-inline-block, +.visible-lg-block, +.visible-lg-inline, +.visible-lg-inline-block { + display: none !important; +} +@media (max-width: 767px) { + .visible-xs { + display: block !important; + } + table.visible-xs { + display: table !important; + } + tr.visible-xs { + display: table-row !important; + } + th.visible-xs, + td.visible-xs { + display: table-cell !important; + } +} +@media (max-width: 767px) { + .visible-xs-block { + display: block !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline { + display: inline !important; + } +} +@media (max-width: 767px) { + .visible-xs-inline-block { + display: inline-block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm { + display: block !important; + } + table.visible-sm { + display: table !important; + } + tr.visible-sm { + display: table-row !important; + } + th.visible-sm, + td.visible-sm { + display: table-cell !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-block { + display: block !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline { + display: inline !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .visible-sm-inline-block { + display: inline-block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md { + display: block !important; + } + table.visible-md { + display: table !important; + } + tr.visible-md { + display: table-row !important; + } + th.visible-md, + td.visible-md { + display: table-cell !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-block { + display: block !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline { + display: inline !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .visible-md-inline-block { + display: inline-block !important; + } +} +@media (min-width: 1200px) { + .visible-lg { + display: block !important; + } + table.visible-lg { + display: table !important; + } + tr.visible-lg { + display: table-row !important; + } + th.visible-lg, + td.visible-lg { + display: table-cell !important; + } +} +@media (min-width: 1200px) { + .visible-lg-block { + display: block !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline { + display: inline !important; + } +} +@media (min-width: 1200px) { + .visible-lg-inline-block { + display: inline-block !important; + } +} +@media (max-width: 767px) { + .hidden-xs { + display: none !important; + } +} +@media (min-width: 768px) and (max-width: 991px) { + .hidden-sm { + display: none !important; + } +} +@media (min-width: 992px) and (max-width: 1199px) { + .hidden-md { + display: none !important; + } +} +@media (min-width: 1200px) { + .hidden-lg { + display: none !important; + } +} +.visible-print { + display: none !important; +} +@media print { + .visible-print { + display: block !important; + } + table.visible-print { + display: table !important; + } + tr.visible-print { + display: table-row !important; + } + th.visible-print, + td.visible-print { + display: table-cell !important; + } +} +.visible-print-block { + display: none !important; +} +@media print { + .visible-print-block { + display: block !important; + } +} +.visible-print-inline { + display: none !important; +} +@media print { + .visible-print-inline { + display: inline !important; + } +} +.visible-print-inline-block { + display: none !important; +} +@media print { + .visible-print-inline-block { + display: inline-block !important; + } +} +@media print { + .hidden-print { + display: none !important; + } +} +/*# sourceMappingURL=bootstrap.css.map */ diff --git a/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.min.css b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000000..ed3905e0e0 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/css/bootstrap.min.css @@ -0,0 +1,6 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,:after,:before{color:#000!important;text-shadow:none!important;background:0 0!important;-webkit-box-shadow:none!important;box-shadow:none!important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="javascript:"]:after,a[href^="#"]:after{content:""}blockquote,pre{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}img{max-width:100%!important}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000!important}.label{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #ddd!important}}@font-face{font-family:'Glyphicons Halflings';src:url(../fonts/glyphicons-halflings-regular.eot);src:url(../fonts/glyphicons-halflings-regular.eot?#iefix) format('embedded-opentype'),url(../fonts/glyphicons-halflings-regular.woff2) format('woff2'),url(../fonts/glyphicons-halflings-regular.woff) format('woff'),url(../fonts/glyphicons-halflings-regular.ttf) format('truetype'),url(../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular) format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-eur:before,.glyphicon-euro:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}:after,:before{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}button,input,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:focus,a:hover{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.carousel-inner>.item>a>img,.carousel-inner>.item>img,.img-responsive,.thumbnail a>img,.thumbnail>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-weight:400;line-height:1;color:#777}.h1,.h2,.h3,h1,h2,h3{margin-top:20px;margin-bottom:10px}.h1 .small,.h1 small,.h2 .small,.h2 small,.h3 .small,.h3 small,h1 .small,h1 small,h2 .small,h2 small,h3 .small,h3 small{font-size:65%}.h4,.h5,.h6,h4,h5,h6{margin-top:10px;margin-bottom:10px}.h4 .small,.h4 small,.h5 .small,.h5 small,.h6 .small,.h6 small,h4 .small,h4 small,h5 .small,h5 small,h6 .small,h6 small{font-size:75%}.h1,h1{font-size:36px}.h2,h2{font-size:30px}.h3,h3{font-size:24px}.h4,h4{font-size:18px}.h5,h5{font-size:14px}.h6,h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}.small,small{font-size:85%}.mark,mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:focus,a.text-primary:hover{color:#286090}.text-success{color:#3c763d}a.text-success:focus,a.text-success:hover{color:#2b542c}.text-info{color:#31708f}a.text-info:focus,a.text-info:hover{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:focus,a.text-warning:hover{color:#66512c}.text-danger{color:#a94442}a.text-danger:focus,a.text-danger:hover{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:focus,a.bg-primary:hover{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:focus,a.bg-success:hover{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:focus,a.bg-info:hover{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:focus,a.bg-warning:hover{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:focus,a.bg-danger:hover{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ol,ul{margin-top:0;margin-bottom:10px}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dd,dt{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote ol:last-child,blockquote p:last-child,blockquote ul:last-child{margin-bottom:0}blockquote .small,blockquote footer,blockquote small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote .small:before,blockquote footer:before,blockquote small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse .small:before,.blockquote-reverse footer:before,.blockquote-reverse small:before,blockquote.pull-right .small:before,blockquote.pull-right footer:before,blockquote.pull-right small:before{content:''}.blockquote-reverse .small:after,.blockquote-reverse footer:after,.blockquote-reverse small:after,blockquote.pull-right .small:after,blockquote.pull-right footer:after,blockquote.pull-right small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-10,.col-xs-11,.col-xs-12,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>td,.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>td,.table>thead:first-child>tr:first-child>th{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>tbody>tr>td,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>td,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>thead>tr>th{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>tbody>tr>td,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>td,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border:1px solid #ddd}.table-bordered>thead>tr>td,.table-bordered>thead>tr>th{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>tbody>tr.active>td,.table>tbody>tr.active>th,.table>tbody>tr>td.active,.table>tbody>tr>th.active,.table>tfoot>tr.active>td,.table>tfoot>tr.active>th,.table>tfoot>tr>td.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>thead>tr.active>th,.table>thead>tr>td.active,.table>thead>tr>th.active{background-color:#f5f5f5}.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr.active:hover>th,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover{background-color:#e8e8e8}.table>tbody>tr.success>td,.table>tbody>tr.success>th,.table>tbody>tr>td.success,.table>tbody>tr>th.success,.table>tfoot>tr.success>td,.table>tfoot>tr.success>th,.table>tfoot>tr>td.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>thead>tr.success>th,.table>thead>tr>td.success,.table>thead>tr>th.success{background-color:#dff0d8}.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr.success:hover>th,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover{background-color:#d0e9c6}.table>tbody>tr.info>td,.table>tbody>tr.info>th,.table>tbody>tr>td.info,.table>tbody>tr>th.info,.table>tfoot>tr.info>td,.table>tfoot>tr.info>th,.table>tfoot>tr>td.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>thead>tr.info>th,.table>thead>tr>td.info,.table>thead>tr>th.info{background-color:#d9edf7}.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr.info:hover>th,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover{background-color:#c4e3f3}.table>tbody>tr.warning>td,.table>tbody>tr.warning>th,.table>tbody>tr>td.warning,.table>tbody>tr>th.warning,.table>tfoot>tr.warning>td,.table>tfoot>tr.warning>th,.table>tfoot>tr>td.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>thead>tr.warning>th,.table>thead>tr>td.warning,.table>thead>tr>th.warning{background-color:#fcf8e3}.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr.warning:hover>th,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover{background-color:#faf2cc}.table>tbody>tr.danger>td,.table>tbody>tr.danger>th,.table>tbody>tr>td.danger,.table>tbody>tr>th.danger,.table>tfoot>tr.danger>td,.table>tfoot>tr.danger>th,.table>tfoot>tr>td.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>thead>tr.danger>th,.table>thead>tr>td.danger,.table>thead>tr>th.danger{background-color:#f2dede}.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr.danger:hover>th,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>td,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>thead>tr>th{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=checkbox],input[type=radio]{margin:4px 0 0;margin-top:1px\9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=checkbox]:focus,input[type=radio]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month],input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm{line-height:30px}.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month],input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg{line-height:46px}}.form-group{margin-bottom:15px}.checkbox,.radio{position:relative;display:block;margin-top:10px;margin-bottom:10px}.checkbox label,.radio label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox],.radio input[type=radio],.radio-inline input[type=radio]{position:absolute;margin-top:4px\9;margin-left:-20px}.checkbox+.checkbox,.radio+.radio{margin-top:-5px}.checkbox-inline,.radio-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.checkbox-inline+.checkbox-inline,.radio-inline+.radio-inline{margin-top:0;margin-left:10px}fieldset[disabled] input[type=checkbox],fieldset[disabled] input[type=radio],input[type=checkbox].disabled,input[type=checkbox][disabled],input[type=radio].disabled,input[type=radio][disabled]{cursor:not-allowed}.checkbox-inline.disabled,.radio-inline.disabled,fieldset[disabled] .checkbox-inline,fieldset[disabled] .radio-inline{cursor:not-allowed}.checkbox.disabled label,.radio.disabled label,fieldset[disabled] .checkbox label,fieldset[disabled] .radio label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}select[multiple].input-sm,textarea.input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm select[multiple].form-control,.form-group-sm textarea.form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}select[multiple].input-lg,textarea.input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg select[multiple].form-control,.form-group-lg textarea.form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.form-group-lg .form-control+.form-control-feedback,.input-group-lg+.form-control-feedback,.input-lg+.form-control-feedback{width:46px;height:46px;line-height:46px}.form-group-sm .form-control+.form-control-feedback,.input-group-sm+.form-control-feedback,.input-sm+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .checkbox,.has-success .checkbox-inline,.has-success .control-label,.has-success .help-block,.has-success .radio,.has-success .radio-inline,.has-success.checkbox label,.has-success.checkbox-inline label,.has-success.radio label,.has-success.radio-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .checkbox,.has-warning .checkbox-inline,.has-warning .control-label,.has-warning .help-block,.has-warning .radio,.has-warning .radio-inline,.has-warning.checkbox label,.has-warning.checkbox-inline label,.has-warning.radio label,.has-warning.radio-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .checkbox,.has-error .checkbox-inline,.has-error .control-label,.has-error .help-block,.has-error .radio,.has-error .radio-inline,.has-error.checkbox label,.has-error.checkbox-inline label,.has-error.radio label,.has-error.radio-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .form-control,.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .checkbox,.form-inline .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox label,.form-inline .radio label{padding-left:0}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .checkbox,.form-horizontal .checkbox-inline,.form-horizontal .radio,.form-horizontal .radio-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .checkbox,.form-horizontal .radio{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.focus,.btn:focus,.btn:hover{color:#333;text-decoration:none}.btn.active,.btn:active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default.focus,.btn-default:focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default.active.focus,.btn-default.active:focus,.btn-default.active:hover,.btn-default:active.focus,.btn-default:active:focus,.btn-default:active:hover,.open>.dropdown-toggle.btn-default.focus,.open>.dropdown-toggle.btn-default:focus,.open>.dropdown-toggle.btn-default:hover{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default.active,.btn-default:active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled.focus,.btn-default.disabled:focus,.btn-default.disabled:hover,.btn-default[disabled].focus,.btn-default[disabled]:focus,.btn-default[disabled]:hover,fieldset[disabled] .btn-default.focus,fieldset[disabled] .btn-default:focus,fieldset[disabled] .btn-default:hover{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary.focus,.btn-primary:focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary.active.focus,.btn-primary.active:focus,.btn-primary.active:hover,.btn-primary:active.focus,.btn-primary:active:focus,.btn-primary:active:hover,.open>.dropdown-toggle.btn-primary.focus,.open>.dropdown-toggle.btn-primary:focus,.open>.dropdown-toggle.btn-primary:hover{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary.active,.btn-primary:active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled.focus,.btn-primary.disabled:focus,.btn-primary.disabled:hover,.btn-primary[disabled].focus,.btn-primary[disabled]:focus,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary.focus,fieldset[disabled] .btn-primary:focus,fieldset[disabled] .btn-primary:hover{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success.focus,.btn-success:focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success.active.focus,.btn-success.active:focus,.btn-success.active:hover,.btn-success:active.focus,.btn-success:active:focus,.btn-success:active:hover,.open>.dropdown-toggle.btn-success.focus,.open>.dropdown-toggle.btn-success:focus,.open>.dropdown-toggle.btn-success:hover{color:#fff;background-color:#398439;border-color:#255625}.btn-success.active,.btn-success:active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled.focus,.btn-success.disabled:focus,.btn-success.disabled:hover,.btn-success[disabled].focus,.btn-success[disabled]:focus,.btn-success[disabled]:hover,fieldset[disabled] .btn-success.focus,fieldset[disabled] .btn-success:focus,fieldset[disabled] .btn-success:hover{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info.focus,.btn-info:focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info.active.focus,.btn-info.active:focus,.btn-info.active:hover,.btn-info:active.focus,.btn-info:active:focus,.btn-info:active:hover,.open>.dropdown-toggle.btn-info.focus,.open>.dropdown-toggle.btn-info:focus,.open>.dropdown-toggle.btn-info:hover{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info.active,.btn-info:active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled.focus,.btn-info.disabled:focus,.btn-info.disabled:hover,.btn-info[disabled].focus,.btn-info[disabled]:focus,.btn-info[disabled]:hover,fieldset[disabled] .btn-info.focus,fieldset[disabled] .btn-info:focus,fieldset[disabled] .btn-info:hover{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning.focus,.btn-warning:focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning.active.focus,.btn-warning.active:focus,.btn-warning.active:hover,.btn-warning:active.focus,.btn-warning:active:focus,.btn-warning:active:hover,.open>.dropdown-toggle.btn-warning.focus,.open>.dropdown-toggle.btn-warning:focus,.open>.dropdown-toggle.btn-warning:hover{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning.active,.btn-warning:active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled.focus,.btn-warning.disabled:focus,.btn-warning.disabled:hover,.btn-warning[disabled].focus,.btn-warning[disabled]:focus,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning.focus,fieldset[disabled] .btn-warning:focus,fieldset[disabled] .btn-warning:hover{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger.focus,.btn-danger:focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger.active.focus,.btn-danger.active:focus,.btn-danger.active:hover,.btn-danger:active.focus,.btn-danger:active:focus,.btn-danger:active:hover,.open>.dropdown-toggle.btn-danger.focus,.open>.dropdown-toggle.btn-danger:focus,.open>.dropdown-toggle.btn-danger:hover{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger.active,.btn-danger:active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled.focus,.btn-danger.disabled:focus,.btn-danger.disabled:hover,.btn-danger[disabled].focus,.btn-danger[disabled]:focus,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger.focus,fieldset[disabled] .btn-danger:focus,fieldset[disabled] .btn-danger:hover{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link.active,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:active,.btn-link:focus,.btn-link:hover{border-color:transparent}.btn-link:focus,.btn-link:hover{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover,fieldset[disabled] .btn-link:focus,fieldset[disabled] .btn-link:hover{color:#777;text-decoration:none}.btn-group-lg>.btn,.btn-lg{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-group-sm>.btn,.btn-sm{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-group-xs>.btn,.btn-xs{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid\9;border-right:4px solid transparent;border-left:4px solid transparent}.dropdown,.dropup{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#777}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid\9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;float:left}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group-vertical>.btn:hover,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn,textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn,textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn{height:auto}.input-group .form-control,.input-group-addon,.input-group-btn{display:table-cell}.input-group .form-control:not(:first-child):not(:last-child),.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=checkbox],.input-group-addon input[type=radio]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn-group:not(:last-child)>.btn,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:first-child>.btn-group:not(:first-child)>.btn,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:active,.input-group-btn>.btn:focus,.input-group-btn>.btn:hover{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:focus,.nav>li.disabled>a:hover{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:focus,.nav .open>a:hover{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:focus,.nav-tabs>li.active>a:hover{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:focus,.nav-tabs.nav-justified>.active>a:hover{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:focus,.nav-pills>li.active>a:hover{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:focus,.nav-tabs-justified>.active>a:hover{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block!important;height:auto!important;padding-bottom:0;overflow:visible!important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-bottom .navbar-collapse,.navbar-fixed-top .navbar-collapse{max-height:200px}}.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container-fluid>.navbar-collapse,.container-fluid>.navbar-header,.container>.navbar-collapse,.container>.navbar-header{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-bottom,.navbar-fixed-top{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px 15px;font-size:18px;line-height:20px}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu .dropdown-header,.navbar-nav .open .dropdown-menu>li>a{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:focus,.navbar-nav .open .dropdown-menu>li>a:hover{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .form-control,.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .checkbox,.navbar-form .radio{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .checkbox label,.navbar-form .radio label{padding-left:0}.navbar-form .checkbox input[type=checkbox],.navbar-form .radio input[type=radio]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left!important}.navbar-right{float:right!important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:focus,.navbar-default .navbar-brand:hover{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:focus,.navbar-default .navbar-nav>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:focus,.navbar-default .navbar-nav>.disabled>a:hover{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:focus,.navbar-default .navbar-toggle:hover{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:focus,.navbar-default .btn-link:hover{color:#333}.navbar-default .btn-link[disabled]:focus,.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:focus,fieldset[disabled] .navbar-default .btn-link:hover{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:focus,.navbar-inverse .navbar-brand:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:focus,.navbar-inverse .navbar-nav>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:focus,.navbar-inverse .navbar-nav>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:focus,.navbar-inverse .navbar-nav>.disabled>a:hover{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:focus,.navbar-inverse .navbar-toggle:hover{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:focus,.navbar-inverse .btn-link:hover{color:#fff}.navbar-inverse .btn-link[disabled]:focus,.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:focus,fieldset[disabled] .navbar-inverse .btn-link:hover{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:focus,.pagination>li>a:hover,.pagination>li>span:focus,.pagination>li>span:hover{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>a:focus,.pagination>.active>a:hover,.pagination>.active>span,.pagination>.active>span:focus,.pagination>.active>span:hover{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>a,.pagination>.disabled>a:focus,.pagination>.disabled>a:hover,.pagination>.disabled>span,.pagination>.disabled>span:focus,.pagination>.disabled>span:hover{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:focus,.label-default[href]:hover{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:focus,.label-primary[href]:hover{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:focus,.label-success[href]:hover{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:focus,.label-info[href]:hover{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:focus,.label-warning[href]:hover{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:focus,.label-danger[href]:hover{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-group-xs>.btn .badge,.btn-xs .badge{top:0;padding:1px 5px}a.badge:focus,a.badge:hover{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron .h1,.jumbotron h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron .h1,.jumbotron h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail a>img,.thumbnail>img{margin-right:auto;margin-left:auto}a.thumbnail.active,a.thumbnail:focus,a.thumbnail:hover{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-bar-striped,.progress-striped .progress-bar{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress-bar.active,.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-body,.media-left,.media-right{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:focus,a.list-group-item:hover,button.list-group-item:focus,button.list-group-item:hover{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:focus,.list-group-item.disabled:hover{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:focus,.list-group-item.active:hover{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:focus .list-group-item-text,.list-group-item.active:hover .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:focus,a.list-group-item-success:hover,button.list-group-item-success:focus,button.list-group-item-success:hover{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,a.list-group-item-success.active:focus,a.list-group-item-success.active:hover,button.list-group-item-success.active,button.list-group-item-success.active:focus,button.list-group-item-success.active:hover{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:focus,a.list-group-item-info:hover,button.list-group-item-info:focus,button.list-group-item-info:hover{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,a.list-group-item-info.active:focus,a.list-group-item-info.active:hover,button.list-group-item-info.active,button.list-group-item-info.active:focus,button.list-group-item-info.active:hover{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:focus,a.list-group-item-warning:hover,button.list-group-item-warning:focus,button.list-group-item-warning:hover{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,a.list-group-item-warning.active:focus,a.list-group-item-warning.active:hover,button.list-group-item-warning.active,button.list-group-item-warning.active:focus,button.list-group-item-warning.active:hover{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:focus,a.list-group-item-danger:hover,button.list-group-item-danger:focus,button.list-group-item-danger:hover{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,a.list-group-item-danger.active:focus,a.list-group-item-danger.active:hover,button.list-group-item-danger.active,button.list-group-item-danger.active:focus,button.list-group-item-danger.active:hover{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>.small,.panel-title>.small>a,.panel-title>a,.panel-title>small,.panel-title>small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.panel-collapse>.table,.panel>.table,.panel>.table-responsive>.table{margin-bottom:0}.panel>.panel-collapse>.table caption,.panel>.table caption,.panel>.table-responsive>.table caption{padding-right:15px;padding-left:15px}.panel>.table-responsive:first-child>.table:first-child,.panel>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table:first-child>thead:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table-responsive:last-child>.table:last-child,.panel>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child td,.panel>.table>tbody:first-child>tr:first-child th{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child{border-left:0}.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child{border-right:0}.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.list-group,.panel-group .panel-heading+.panel-collapse>.panel-body{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>a>img,.carousel-inner>.item>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.active.right,.carousel-inner>.item.next{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.active.left,.carousel-inner>.item.prev{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.active,.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);background-repeat:repeat-x}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{left:50%;margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{right:50%;margin-right:-10px}.carousel-control .icon-next,.carousel-control .icon-prev{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000\9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next,.carousel-control .icon-prev{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.btn-group-vertical>.btn-group:after,.btn-group-vertical>.btn-group:before,.btn-toolbar:after,.btn-toolbar:before,.clearfix:after,.clearfix:before,.container-fluid:after,.container-fluid:before,.container:after,.container:before,.dl-horizontal dd:after,.dl-horizontal dd:before,.form-horizontal .form-group:after,.form-horizontal .form-group:before,.modal-footer:after,.modal-footer:before,.modal-header:after,.modal-header:before,.nav:after,.nav:before,.navbar-collapse:after,.navbar-collapse:before,.navbar-header:after,.navbar-header:before,.navbar:after,.navbar:before,.pager:after,.pager:before,.panel-body:after,.panel-body:before,.row:after,.row:before{display:table;content:" "}.btn-group-vertical>.btn-group:after,.btn-toolbar:after,.clearfix:after,.container-fluid:after,.container:after,.dl-horizontal dd:after,.form-horizontal .form-group:after,.modal-footer:after,.modal-header:after,.nav:after,.navbar-collapse:after,.navbar-header:after,.navbar:after,.pager:after,.panel-body:after,.row:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-lg,.visible-md,.visible-sm,.visible-xs{display:none!important}.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block{display:none!important}@media (max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table!important}tr.visible-xs{display:table-row!important}td.visible-xs,th.visible-xs{display:table-cell!important}}@media (max-width:767px){.visible-xs-block{display:block!important}}@media (max-width:767px){.visible-xs-inline{display:inline!important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table!important}tr.visible-sm{display:table-row!important}td.visible-sm,th.visible-sm{display:table-cell!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline!important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table!important}tr.visible-md{display:table-row!important}td.visible-md,th.visible-md{display:table-cell!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline!important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block!important}}@media (min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table!important}tr.visible-lg{display:table-row!important}td.visible-lg,th.visible-lg{display:table-cell!important}}@media (min-width:1200px){.visible-lg-block{display:block!important}}@media (min-width:1200px){.visible-lg-inline{display:inline!important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block!important}}@media (max-width:767px){.hidden-xs{display:none!important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media (min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table!important}tr.visible-print{display:table-row!important}td.visible-print,th.visible-print{display:table-cell!important}}.visible-print-block{display:none!important}@media print{.visible-print-block{display:block!important}}.visible-print-inline{display:none!important}@media print{.visible-print-inline{display:inline!important}}.visible-print-inline-block{display:none!important}@media print{.visible-print-inline-block{display:inline-block!important}}@media print{.hidden-print{display:none!important}} +/*# sourceMappingURL=bootstrap.min.css.map */ \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 0000000000000000000000000000000000000000..b93a4953fff68df523aa7656497ee339d6026d64 GIT binary patch literal 20127 zcma%hV{j!vx9y2-`@~L8?1^pLwlPU2wr$&<*tR|KBoo`2;LUg6eW-eW-tKDb)vH%` z^`A!Vd<6hNSRMcX|Cb;E|1qflDggj6Kmr)xA10^t-vIc3*Z+F{r%|K(GyE^?|I{=9 zNq`(c8=wS`0!RZy0g3{M(8^tv41d}oRU?8#IBFtJy*9zAN5dcxqGlMZGL>GG%R#)4J zDJ2;)4*E1pyHia%>lMv3X7Q`UoFyoB@|xvh^)kOE3)IL&0(G&i;g08s>c%~pHkN&6 z($7!kyv|A2DsV2mq-5Ku)D#$Kn$CzqD-wm5Q*OtEOEZe^&T$xIb0NUL}$)W)Ck`6oter6KcQG9Zcy>lXip)%e&!lQgtQ*N`#abOlytt!&i3fo)cKV zP0BWmLxS1gQv(r_r|?9>rR0ZeEJPx;Vi|h1!Eo*dohr&^lJgqJZns>&vexP@fs zkPv93Nyw$-kM5Mw^{@wPU47Y1dSkiHyl3dtHLwV&6Tm1iv{ve;sYA}Z&kmH802s9Z zyJEn+cfl7yFu#1^#DbtP7k&aR06|n{LnYFYEphKd@dJEq@)s#S)UA&8VJY@S2+{~> z(4?M();zvayyd^j`@4>xCqH|Au>Sfzb$mEOcD7e4z8pPVRTiMUWiw;|gXHw7LS#U< zsT(}Z5SJ)CRMXloh$qPnK77w_)ctHmgh}QAe<2S{DU^`!uwptCoq!Owz$u6bF)vnb zL`bM$%>baN7l#)vtS3y6h*2?xCk z>w+s)@`O4(4_I{L-!+b%)NZcQ&ND=2lyP+xI#9OzsiY8$c)ys-MI?TG6 zEP6f=vuLo!G>J7F4v|s#lJ+7A`^nEQScH3e?B_jC&{sj>m zYD?!1z4nDG_Afi$!J(<{>z{~Q)$SaXWjj~%ZvF152Hd^VoG14rFykR=_TO)mCn&K$ z-TfZ!vMBvnToyBoKRkD{3=&=qD|L!vb#jf1f}2338z)e)g>7#NPe!FoaY*jY{f)Bf>ohk-K z4{>fVS}ZCicCqgLuYR_fYx2;*-4k>kffuywghn?15s1dIOOYfl+XLf5w?wtU2Og*f z%X5x`H55F6g1>m~%F`655-W1wFJtY>>qNSdVT`M`1Mlh!5Q6#3j={n5#za;!X&^OJ zgq;d4UJV-F>gg?c3Y?d=kvn3eV)Jb^ zO5vg0G0yN0%}xy#(6oTDSVw8l=_*2k;zTP?+N=*18H5wp`s90K-C67q{W3d8vQGmr zhpW^>1HEQV2TG#8_P_0q91h8QgHT~8=-Ij5snJ3cj?Jn5_66uV=*pq(j}yHnf$Ft;5VVC?bz%9X31asJeQF2jEa47H#j` zk&uxf3t?g!tltVP|B#G_UfDD}`<#B#iY^i>oDd-LGF}A@Fno~dR72c&hs6bR z2F}9(i8+PR%R|~FV$;Ke^Q_E_Bc;$)xN4Ti>Lgg4vaip!%M z06oxAF_*)LH57w|gCW3SwoEHwjO{}}U=pKhjKSZ{u!K?1zm1q? zXyA6y@)}_sONiJopF}_}(~}d4FDyp|(@w}Vb;Fl5bZL%{1`}gdw#i{KMjp2@Fb9pg ziO|u7qP{$kxH$qh8%L+)AvwZNgUT6^zsZq-MRyZid{D?t`f|KzSAD~C?WT3d0rO`0 z=qQ6{)&UXXuHY{9g|P7l_nd-%eh}4%VVaK#Nik*tOu9lBM$<%FS@`NwGEbP0&;Xbo zObCq=y%a`jSJmx_uTLa{@2@}^&F4c%z6oe-TN&idjv+8E|$FHOvBqg5hT zMB=7SHq`_-E?5g=()*!V>rIa&LcX(RU}aLm*38U_V$C_g4)7GrW5$GnvTwJZdBmy6 z*X)wi3=R8L=esOhY0a&eH`^fSpUHV8h$J1|o^3fKO|9QzaiKu>yZ9wmRkW?HTkc<*v7i*ylJ#u#j zD1-n&{B`04oG>0Jn{5PKP*4Qsz{~`VVA3578gA+JUkiPc$Iq!^K|}*p_z3(-c&5z@ zKxmdNpp2&wg&%xL3xZNzG-5Xt7jnI@{?c z25=M>-VF|;an2Os$Nn%HgQz7m(ujC}Ii0Oesa(y#8>D+P*_m^X##E|h$M6tJr%#=P zWP*)Px>7z`E~U^2LNCNiy%Z7!!6RI%6fF@#ZY3z`CK91}^J$F!EB0YF1je9hJKU7!S5MnXV{+#K;y zF~s*H%p@vj&-ru7#(F2L+_;IH46X(z{~HTfcThqD%b{>~u@lSc<+f5#xgt9L7$gSK ziDJ6D*R%4&YeUB@yu@4+&70MBNTnjRyqMRd+@&lU#rV%0t3OmouhC`mkN}pL>tXin zY*p)mt=}$EGT2E<4Q>E2`6)gZ`QJhGDNpI}bZL9}m+R>q?l`OzFjW?)Y)P`fUH(_4 zCb?sm1=DD0+Q5v}BW#0n5;Nm(@RTEa3(Y17H2H67La+>ptQHJ@WMy2xRQT$|7l`8c zYHCxYw2o-rI?(fR2-%}pbs$I%w_&LPYE{4bo}vRoAW>3!SY_zH3`ofx3F1PsQ?&iq z*BRG>?<6%z=x#`NhlEq{K~&rU7Kc7Y-90aRnoj~rVoKae)L$3^z*Utppk?I`)CX&& zZ^@Go9fm&fN`b`XY zt0xE5aw4t@qTg_k=!-5LXU+_~DlW?53!afv6W(k@FPPX-`nA!FBMp7b!ODbL1zh58 z*69I}P_-?qSLKj}JW7gP!la}K@M}L>v?rDD!DY-tu+onu9kLoJz20M4urX_xf2dfZ zORd9Zp&28_ff=wdMpXi%IiTTNegC}~RLkdYjA39kWqlA?jO~o1`*B&85Hd%VPkYZT z48MPe62;TOq#c%H(`wX5(Bu>nlh4Fbd*Npasdhh?oRy8a;NB2(eb}6DgwXtx=n}fE zx67rYw=(s0r?EsPjaya}^Qc-_UT5|*@|$Q}*|>V3O~USkIe6a0_>vd~6kHuP8=m}_ zo2IGKbv;yA+TBtlCpnw)8hDn&eq?26gN$Bh;SdxaS04Fsaih_Cfb98s39xbv)=mS0 z6M<@pM2#pe32w*lYSWG>DYqB95XhgAA)*9dOxHr{t)er0Xugoy)!Vz#2C3FaUMzYl zCxy{igFB901*R2*F4>grPF}+G`;Yh zGi@nRjWyG3mR(BVOeBPOF=_&}2IWT%)pqdNAcL{eP`L*^FDv#Rzql5U&Suq_X%JfR_lC!S|y|xd5mQ0{0!G#9hV46S~A` z0B!{yI-4FZEtol5)mNWXcX(`x&Pc*&gh4k{w%0S#EI>rqqlH2xv7mR=9XNCI$V#NG z4wb-@u{PfQP;tTbzK>(DF(~bKp3;L1-A*HS!VB)Ae>Acnvde15Anb`h;I&0)aZBS6 z55ZS7mL5Wp!LCt45^{2_70YiI_Py=X{I3>$Px5Ez0ahLQ+ z9EWUWSyzA|+g-Axp*Lx-M{!ReQO07EG7r4^)K(xbj@%ZU=0tBC5shl)1a!ifM5OkF z0w2xQ-<+r-h1fi7B6waX15|*GGqfva)S)dVcgea`lQ~SQ$KXPR+(3Tn2I2R<0 z9tK`L*pa^+*n%>tZPiqt{_`%v?Bb7CR-!GhMON_Fbs0$#|H}G?rW|{q5fQhvw!FxI zs-5ZK>hAbnCS#ZQVi5K0X3PjL1JRdQO+&)*!oRCqB{wen60P6!7bGiWn@vD|+E@Xq zb!!_WiU^I|@1M}Hz6fN-m04x=>Exm{b@>UCW|c8vC`aNbtA@KCHujh^2RWZC}iYhL^<*Z93chIBJYU&w>$CGZDRcHuIgF&oyesDZ#&mA;?wxx4Cm#c0V$xYG?9OL(Smh}#fFuX(K;otJmvRP{h ze^f-qv;)HKC7geB92_@3a9@MGijS(hNNVd%-rZ;%@F_f7?Fjinbe1( zn#jQ*jKZTqE+AUTEd3y6t>*=;AO##cmdwU4gc2&rT8l`rtKW2JF<`_M#p>cj+)yCG zgKF)y8jrfxTjGO&ccm8RU>qn|HxQ7Z#sUo$q)P5H%8iBF$({0Ya51-rA@!It#NHN8MxqK zrYyl_&=}WVfQ?+ykV4*@F6)=u_~3BebR2G2>>mKaEBPmSW3(qYGGXj??m3L zHec{@jWCsSD8`xUy0pqT?Sw0oD?AUK*WxZn#D>-$`eI+IT)6ki>ic}W)t$V32^ITD zR497@LO}S|re%A+#vdv-?fXsQGVnP?QB_d0cGE+U84Q=aM=XrOwGFN3`Lpl@P0fL$ zKN1PqOwojH*($uaQFh8_)H#>Acl&UBSZ>!2W1Dinei`R4dJGX$;~60X=|SG6#jci} z&t4*dVDR*;+6Y(G{KGj1B2!qjvDYOyPC}%hnPbJ@g(4yBJrViG1#$$X75y+Ul1{%x zBAuD}Q@w?MFNqF-m39FGpq7RGI?%Bvyyig&oGv)lR>d<`Bqh=p>urib5DE;u$c|$J zwim~nPb19t?LJZsm{<(Iyyt@~H!a4yywmHKW&=1r5+oj*Fx6c89heW@(2R`i!Uiy* zp)=`Vr8sR!)KChE-6SEIyi(dvG3<1KoVt>kGV=zZiG7LGonH1+~yOK-`g0)r#+O|Q>)a`I2FVW%wr3lhO(P{ksNQuR!G_d zeTx(M!%brW_vS9?IF>bzZ2A3mWX-MEaOk^V|4d38{1D|KOlZSjBKrj7Fgf^>JyL0k zLoI$adZJ0T+8i_Idsuj}C;6jgx9LY#Ukh;!8eJ^B1N}q=Gn4onF*a2vY7~`x$r@rJ z`*hi&Z2lazgu{&nz>gjd>#eq*IFlXed(%$s5!HRXKNm zDZld+DwDI`O6hyn2uJ)F^{^;ESf9sjJ)wMSKD~R=DqPBHyP!?cGAvL<1|7K-(=?VO zGcKcF1spUa+ki<`6K#@QxOTsd847N8WSWztG~?~ z!gUJn>z0O=_)VCE|56hkT~n5xXTp}Ucx$Ii%bQ{5;-a4~I2e|{l9ur#*ghd*hSqO= z)GD@ev^w&5%k}YYB~!A%3*XbPPU-N6&3Lp1LxyP@|C<{qcn&?l54+zyMk&I3YDT|E z{lXH-e?C{huu<@~li+73lMOk&k)3s7Asn$t6!PtXJV!RkA`qdo4|OC_a?vR!kE_}k zK5R9KB%V@R7gt@9=TGL{=#r2gl!@3G;k-6sXp&E4u20DgvbY$iE**Xqj3TyxK>3AU z!b9}NXuINqt>Htt6fXIy5mj7oZ{A&$XJ&thR5ySE{mkxq_YooME#VCHm2+3D!f`{) zvR^WSjy_h4v^|!RJV-RaIT2Ctv=)UMMn@fAgjQV$2G+4?&dGA8vK35c-8r)z9Qqa=%k(FU)?iec14<^olkOU3p zF-6`zHiDKPafKK^USUU+D01>C&Wh{{q?>5m zGQp|z*+#>IIo=|ae8CtrN@@t~uLFOeT{}vX(IY*;>wAU=u1Qo4c+a&R);$^VCr>;! zv4L{`lHgc9$BeM)pQ#XA_(Q#=_iSZL4>L~8Hx}NmOC$&*Q*bq|9Aq}rWgFnMDl~d*;7c44GipcpH9PWaBy-G$*MI^F0 z?Tdxir1D<2ui+Q#^c4?uKvq=p>)lq56=Eb|N^qz~w7rsZu)@E4$;~snz+wIxi+980O6M#RmtgLYh@|2}9BiHSpTs zacjGKvwkUwR3lwTSsCHlwb&*(onU;)$yvdhikonn|B44JMgs*&Lo!jn`6AE>XvBiO z*LKNX3FVz9yLcsnmL!cRVO_qv=yIM#X|u&}#f%_?Tj0>8)8P_0r0!AjWNw;S44tst zv+NXY1{zRLf9OYMr6H-z?4CF$Y%MdbpFIN@a-LEnmkcOF>h16cH_;A|e)pJTuCJ4O zY7!4FxT4>4aFT8a92}84>q0&?46h>&0Vv0p>u~k&qd5$C1A6Q$I4V(5X~6{15;PD@ ze6!s9xh#^QI`J+%8*=^(-!P!@9%~buBmN2VSAp@TOo6}C?az+ALP8~&a0FWZk*F5N z^8P8IREnN`N0i@>O0?{i-FoFShYbUB`D7O4HB`Im2{yzXmyrg$k>cY6A@>bf7i3n0 z5y&cf2#`zctT>dz+hNF&+d3g;2)U!#vsb-%LC+pqKRTiiSn#FH#e!bVwR1nAf*TG^ z!RKcCy$P>?Sfq6n<%M{T0I8?p@HlgwC!HoWO>~mT+X<{Ylm+$Vtj9};H3$EB}P2wR$3y!TO#$iY8eO-!}+F&jMu4%E6S>m zB(N4w9O@2=<`WNJay5PwP8javDp~o~xkSbd4t4t8)9jqu@bHmJHq=MV~Pt|(TghCA}fhMS?s-{klV>~=VrT$nsp7mf{?cze~KKOD4 z_1Y!F)*7^W+BBTt1R2h4f1X4Oy2%?=IMhZU8c{qk3xI1=!na*Sg<=A$?K=Y=GUR9@ zQ(ylIm4Lgm>pt#%p`zHxok%vx_=8Fap1|?OM02|N%X-g5_#S~sT@A!x&8k#wVI2lo z1Uyj{tDQRpb*>c}mjU^gYA9{7mNhFAlM=wZkXcA#MHXWMEs^3>p9X)Oa?dx7b%N*y zLz@K^%1JaArjgri;8ptNHwz1<0y8tcURSbHsm=26^@CYJ3hwMaEvC7 z3Wi-@AaXIQ)%F6#i@%M>?Mw7$6(kW@?et@wbk-APcvMCC{>iew#vkZej8%9h0JSc? zCb~K|!9cBU+))^q*co(E^9jRl7gR4Jihyqa(Z(P&ID#TPyysVNL7(^;?Gan!OU>au zN}miBc&XX-M$mSv%3xs)bh>Jq9#aD_l|zO?I+p4_5qI0Ms*OZyyxA`sXcyiy>-{YN zA70%HmibZYcHW&YOHk6S&PQ+$rJ3(utuUra3V0~@=_~QZy&nc~)AS>v&<6$gErZC3 zcbC=eVkV4Vu0#}E*r=&{X)Kgq|8MGCh(wsH4geLj@#8EGYa})K2;n z{1~=ghoz=9TSCxgzr5x3@sQZZ0FZ+t{?klSI_IZa16pSx6*;=O%n!uXVZ@1IL;JEV zfOS&yyfE9dtS*^jmgt6>jQDOIJM5Gx#Y2eAcC3l^lmoJ{o0T>IHpECTbfYgPI4#LZq0PKqnPCD}_ zyKxz;(`fE0z~nA1s?d{X2!#ZP8wUHzFSOoTWQrk%;wCnBV_3D%3@EC|u$Ao)tO|AO z$4&aa!wbf}rbNcP{6=ajgg(`p5kTeu$ji20`zw)X1SH*x zN?T36{d9TY*S896Ijc^!35LLUByY4QO=ARCQ#MMCjudFc7s!z%P$6DESz%zZ#>H|i zw3Mc@v4~{Eke;FWs`5i@ifeYPh-Sb#vCa#qJPL|&quSKF%sp8*n#t?vIE7kFWjNFh zJC@u^bRQ^?ra|%39Ux^Dn4I}QICyDKF0mpe+Bk}!lFlqS^WpYm&xwIYxUoS-rJ)N9 z1Tz*6Rl9;x`4lwS1cgW^H_M*)Dt*DX*W?ArBf?-t|1~ge&S}xM0K;U9Ibf{okZHf~ z#4v4qc6s6Zgm8iKch5VMbQc~_V-ZviirnKCi*ouN^c_2lo&-M;YSA>W>>^5tlXObg zacX$k0=9Tf$Eg+#9k6yV(R5-&F{=DHP8!yvSQ`Y~XRnUx@{O$-bGCksk~3&qH^dqX zkf+ZZ?Nv5u>LBM@2?k%k&_aUb5Xjqf#!&7%zN#VZwmv65ezo^Y4S#(ed0yUn4tFOB zh1f1SJ6_s?a{)u6VdwUC!Hv=8`%T9(^c`2hc9nt$(q{Dm2X)dK49ba+KEheQ;7^0) ziFKw$%EHy_B1)M>=yK^=Z$U-LT36yX>EKT zvD8IAom2&2?bTmX@_PBR4W|p?6?LQ+&UMzXxqHC5VHzf@Eb1u)kwyfy+NOM8Wa2y@ zNNDL0PE$F;yFyf^jy&RGwDXQwYw6yz>OMWvJt98X@;yr!*RQDBE- zE*l*u=($Zi1}0-Y4lGaK?J$yQjgb+*ljUvNQ!;QYAoCq@>70=sJ{o{^21^?zT@r~hhf&O;Qiq+ ziGQQLG*D@5;LZ%09mwMiE4Q{IPUx-emo*;a6#DrmWr(zY27d@ezre)Z1BGZdo&pXn z+);gOFelKDmnjq#8dL7CTiVH)dHOqWi~uE|NM^QI3EqxE6+_n>IW67~UB#J==QOGF zp_S)c8TJ}uiaEiaER}MyB(grNn=2m&0yztA=!%3xUREyuG_jmadN*D&1nxvjZ6^+2 zORi7iX1iPi$tKasppaR9$a3IUmrrX)m*)fg1>H+$KpqeB*G>AQV((-G{}h=qItj|d zz~{5@{?&Dab6;0c7!!%Se>w($RmlG7Jlv_zV3Ru8b2rugY0MVPOOYGlokI7%nhIy& z-B&wE=lh2dtD!F?noD{z^O1~Tq4MhxvchzuT_oF3-t4YyA*MJ*n&+1X3~6quEN z@m~aEp=b2~mP+}TUP^FmkRS_PDMA{B zaSy(P=$T~R!yc^Ye0*pl5xcpm_JWI;@-di+nruhqZ4gy7cq-)I&s&Bt3BkgT(Zdjf zTvvv0)8xzntEtp4iXm}~cT+pi5k{w{(Z@l2XU9lHr4Vy~3ycA_T?V(QS{qwt?v|}k z_ST!s;C4!jyV5)^6xC#v!o*uS%a-jQ6< z)>o?z7=+zNNtIz1*F_HJ(w@=`E+T|9TqhC(g7kKDc8z~?RbKQ)LRMn7A1p*PcX2YR zUAr{);~c7I#3Ssv<0i-Woj0&Z4a!u|@Xt2J1>N-|ED<3$o2V?OwL4oQ%$@!zLamVz zB)K&Ik^~GOmDAa143{I4?XUk1<3-k{<%?&OID&>Ud%z*Rkt*)mko0RwC2=qFf-^OV z=d@47?tY=A;=2VAh0mF(3x;!#X!%{|vn;U2XW{(nu5b&8kOr)Kop3-5_xnK5oO_3y z!EaIb{r%D{7zwtGgFVri4_!yUIGwR(xEV3YWSI_+E}Gdl>TINWsIrfj+7DE?xp+5^ zlr3pM-Cbse*WGKOd3+*Qen^*uHk)+EpH-{u@i%y}Z!YSid<}~kA*IRSk|nf+I1N=2 zIKi+&ej%Al-M5`cP^XU>9A(m7G>58>o|}j0ZWbMg&x`*$B9j#Rnyo0#=BMLdo%=ks zLa3(2EinQLXQ(3zDe7Bce%Oszu%?8PO648TNst4SMFvj=+{b%)ELyB!0`B?9R6aO{i-63|s@|raSQGL~s)9R#J#duFaTSZ2M{X z1?YuM*a!!|jP^QJ(hAisJuPOM`8Y-Hzl~%d@latwj}t&0{DNNC+zJARnuQfiN`HQ# z?boY_2?*q;Qk)LUB)s8(Lz5elaW56p&fDH*AWAq7Zrbeq1!?FBGYHCnFgRu5y1jwD zc|yBz+UW|X`zDsc{W~8m$sh@VVnZD$lLnKlq@Hg^;ky!}ZuPdKNi2BI70;hrpvaA4+Q_+K)I@|)q1N-H zrycZU`*YUW``Qi^`bDX-j7j^&bO+-Xg$cz2#i##($uyW{Nl&{DK{=lLWV3|=<&si||2)l=8^8_z+Vho-#5LB0EqQ3v5U#*DF7 zxT)1j^`m+lW}p$>WSIG1eZ>L|YR-@Feu!YNWiw*IZYh03mq+2QVtQ}1ezRJM?0PA< z;mK(J5@N8>u@<6Y$QAHWNE};rR|)U_&bv8dsnsza7{=zD1VBcxrALqnOf-qW(zzTn zTAp|pEo#FsQ$~*$j|~Q;$Zy&Liu9OM;VF@#_&*nL!N2hH!Q6l*OeTxq!l>dEc{;Hw zCQni{iN%jHU*C;?M-VUaXxf0FEJ_G=C8)C-wD!DvhY+qQ#FT3}Th8;GgV&AV94F`D ztT6=w_Xm8)*)dBnDkZd~UWL|W=Glu!$hc|1w7_7l!3MAt95oIp4Xp{M%clu&TXehO z+L-1#{mjkpTF@?|w1P98OCky~S%@OR&o75P&ZHvC}Y=(2_{ib(-Al_7aZ^U?s34#H}= zGfFi5%KnFVCKtdO^>Htpb07#BeCXMDO8U}crpe1Gm`>Q=6qB4i=nLoLZ%p$TY=OcP z)r}Et-Ed??u~f09d3Nx3bS@ja!fV(Dfa5lXxRs#;8?Y8G+Qvz+iv7fiRkL3liip}) z&G0u8RdEC9c$$rdU53=MH`p!Jn|DHjhOxHK$tW_pw9wCTf0Eo<){HoN=zG!!Gq4z4 z7PwGh)VNPXW-cE#MtofE`-$9~nmmj}m zlzZscQ2+Jq%gaB9rMgVJkbhup0Ggpb)&L01T=%>n7-?v@I8!Q(p&+!fd+Y^Pu9l+u zek(_$^HYFVRRIFt@0Fp52g5Q#I`tC3li`;UtDLP*rA{-#Yoa5qp{cD)QYhldihWe+ zG~zuaqLY~$-1sjh2lkbXCX;lq+p~!2Z=76cvuQe*Fl>IFwpUBP+d^&E4BGc{m#l%Kuo6#{XGoRyFc%Hqhf|%nYd<;yiC>tyEyk z4I+a`(%%Ie=-*n z-{mg=j&t12)LH3R?@-B1tEb7FLMePI1HK0`Ae@#)KcS%!Qt9p4_fmBl5zhO10n401 zBSfnfJ;?_r{%R)hh}BBNSl=$BiAKbuWrNGQUZ)+0=Mt&5!X*D@yGCSaMNY&@`;^a4 z;v=%D_!K!WXV1!3%4P-M*s%V2b#2jF2bk!)#2GLVuGKd#vNpRMyg`kstw0GQ8@^k^ zuqK5uR<>FeRZ#3{%!|4X!hh7hgirQ@Mwg%%ez8pF!N$xhMNQN((yS(F2-OfduxxKE zxY#7O(VGfNuLv-ImAw5+h@gwn%!ER;*Q+001;W7W^waWT%@(T+5k!c3A-j)a8y11t zx4~rSN0s$M8HEOzkcWW4YbKK9GQez2XJ|Nq?TFy;jmGbg;`m&%U4hIiarKmdTHt#l zL=H;ZHE?fYxKQQXKnC+K!TAU}r086{4m}r()-QaFmU(qWhJlc$eas&y?=H9EYQy8N$8^bni9TpDp zkA^WRs?KgYgjxX4T6?`SMs$`s3vlut(YU~f2F+id(Rf_)$BIMibk9lACI~LA+i7xn z%-+=DHV*0TCTJp~-|$VZ@g2vmd*|2QXV;HeTzt530KyK>v&253N1l}bP_J#UjLy4) zBJili9#-ey8Kj(dxmW^ctorxd;te|xo)%46l%5qE-YhAjP`Cc03vT)vV&GAV%#Cgb zX~2}uWNvh`2<*AuxuJpq>SyNtZwzuU)r@@dqC@v=Ocd(HnnzytN+M&|Qi#f4Q8D=h ziE<3ziFW%+!yy(q{il8H44g^5{_+pH60Mx5Z*FgC_3hKxmeJ+wVuX?T#ZfOOD3E4C zRJsj#wA@3uvwZwHKKGN{{Ag+8^cs?S4N@6(Wkd$CkoCst(Z&hp+l=ffZ?2m%%ffI3 zdV7coR`R+*dPbNx=*ivWeNJK=Iy_vKd`-_Hng{l?hmp=|T3U&epbmgXXWs9ySE|=G zeQ|^ioL}tveN{s72_&h+F+W;G}?;?_s@h5>DX(rp#eaZ!E=NivgLI zWykLKev+}sHH41NCRm7W>K+_qdoJ8x9o5Cf!)|qLtF7Izxk*p|fX8UqEY)_sI_45O zL2u>x=r5xLE%s|d%MO>zU%KV6QKFiEeo12g#bhei4!Hm+`~Fo~4h|BJ)%ENxy9)Up zOxupSf1QZWun=)gF{L0YWJ<(r0?$bPFANrmphJ>kG`&7E+RgrWQi}ZS#-CQJ*i#8j zM_A0?w@4Mq@xvk^>QSvEU|VYQoVI=TaOrsLTa`RZfe8{9F~mM{L+C`9YP9?OknLw| zmkvz>cS6`pF0FYeLdY%>u&XpPj5$*iYkj=m7wMzHqzZ5SG~$i_^f@QEPEC+<2nf-{ zE7W+n%)q$!5@2pBuXMxhUSi*%F>e_g!$T-_`ovjBh(3jK9Q^~OR{)}!0}vdTE^M+m z9QWsA?xG>EW;U~5gEuKR)Ubfi&YWnXV;3H6Zt^NE725*`;lpSK4HS1sN?{~9a4JkD z%}23oAovytUKfRN87XTH2c=kq1)O5(fH_M3M-o{{@&~KD`~TRot-gqg7Q2U2o-iiF}K>m?CokhmODaLB z1p6(6JYGntNOg(s!(>ZU&lzDf+Ur)^Lirm%*}Z>T)9)fAZ9>k(kvnM;ab$ptA=hoh zVgsVaveXbMpm{|4*d<0>?l_JUFOO8A3xNLQOh%nVXjYI6X8h?a@6kDe5-m&;M0xqx z+1U$s>(P9P)f0!{z%M@E7|9nn#IWgEx6A6JNJ(7dk`%6$3@!C!l;JK-p2?gg+W|d- ziEzgk$w7k48NMqg$CM*4O~Abj3+_yUKTyK1p6GDsGEs;}=E_q>^LI-~pym$qhXPJf z2`!PJDp4l(TTm#|n@bN!j;-FFOM__eLl!6{*}z=)UAcGYloj?bv!-XY1TA6Xz;82J zLRaF{8ayzGa|}c--}|^xh)xgX>6R(sZD|Z|qX50gu=d`gEwHqC@WYU7{%<5VOnf9+ zB@FX?|UL%`8EIAe!*UdYl|6wRz6Y>(#8x92$#y}wMeE|ZM2X*c}dKJ^4NIf;Fm zNwzq%QcO?$NR-7`su!*$dlIKo2y(N;qgH@1|8QNo$0wbyyJ2^}$iZ>M{BhBjTdMjK z>gPEzgX4;g3$rU?jvDeOq`X=>)zdt|jk1Lv3u~bjHI=EGLfIR&+K3ldcc4D&Um&04 z3^F*}WaxR(ZyaB>DlmF_UP@+Q*h$&nsOB#gwLt{1#F4i-{A5J@`>B9@{^i?g_Ce&O z<<}_We-RUFU&&MHa1#t56u_oM(Ljn7djja!T|gcxSoR=)@?owC*NkDarpBj=W4}=i1@)@L|C) zQKA+o<(pMVp*Su(`zBC0l1yTa$MRfQ#uby|$mlOMs=G`4J|?apMzKei%jZql#gP@IkOaOjB7MJM=@1j(&!jNnyVkn5;4lvro1!vq ztXiV8HYj5%)r1PPpIOj)f!>pc^3#LvfZ(hz}C@-3R(Cx7R427*Fwd!XO z4~j&IkPHcBm0h_|iG;ZNrYdJ4HI!$rSyo&sibmwIgm1|J#g6%>=ML1r!kcEhm(XY& zD@mIJt;!O%WP7CE&wwE3?1-dt;RTHdm~LvP7K`ccWXkZ0kfFa2S;wGtx_a}S2lslw z$<4^Jg-n#Ypc(3t2N67Juasu=h)j&UNTPNDil4MQMTlnI81kY46uMH5B^U{~nmc6+ z9>(lGhhvRK9ITfpAD!XQ&BPphL3p8B4PVBN0NF6U49;ZA0Tr75AgGw7(S=Yio+xg_ zepZ*?V#KD;sHH+15ix&yCs0eSB-Z%D%uujlXvT#V$Rz@$+w!u#3GIo*AwMI#Bm^oO zLr1e}k5W~G0xaO!C%Mb{sarxWZ4%Dn9vG`KHmPC9GWZwOOm11XJp#o0-P-${3m4g( z6~)X9FXw%Xm~&99tj>a-ri})ZcnsfJtc10F@t9xF5vq6E)X!iUXHq-ohlO`gQdS&k zZl})3k||u)!_=nNlvMbz%AuIr89l#I$;rG}qvDGiK?xTd5HzMQkw*p$YvFLGyQM!J zNC^gD!kP{A84nGosi~@MLKqWQNacfs7O$dkZtm4-BZ~iA8xWZPkTK!HpA5zr!9Z&+icfAJ1)NWkTd!-9`NWU>9uXXUr;`Js#NbKFgrNhTcY4GNv*71}}T zFJh?>=EcbUd2<|fiL+H=wMw8hbX6?+_cl4XnCB#ddwdG>bki* zt*&6Dy&EIPluL@A3_;R%)shA-tDQA1!Tw4ffBRyy;2n)vm_JV06(4Or&QAOKNZB5f(MVC}&_!B>098R{Simr!UG}?CW1Ah+X+0#~0`X)od zLYablwmFxN21L))!_zc`IfzWi`5>MxPe(DmjjO1}HHt7TJtAW+VXHt!aKZk>y6PoMsbDXRJnov;D~Ur~2R_7(Xr)aa%wJwZhS3gr7IGgt%@;`jpL@gyc6bGCVx!9CE7NgIbUNZ!Ur1RHror0~ zr(j$^yM4j`#c2KxSP61;(Tk^pe7b~}LWj~SZC=MEpdKf;B@on9=?_n|R|0q;Y*1_@ z>nGq>)&q!;u-8H)WCwtL&7F4vbnnfSAlK1mwnRq2&gZrEr!b1MA z(3%vAbh3aU-IX`d7b@q`-WiT6eitu}ZH9x#d&qx}?CtDuAXak%5<-P!{a`V=$|XmJ zUn@4lX6#ulB@a=&-9HG)a>KkH=jE7>&S&N~0X0zD=Q=t|7w;kuh#cU=NN7gBGbQTT z;?bdSt8V&IIi}sDTzA0dkU}Z-Qvg;RDe8v>468p3*&hbGT1I3hi9hh~Z(!H}{+>eUyF)H&gdrX=k$aB%J6I;6+^^kn1mL+E+?A!A}@xV(Qa@M%HD5C@+-4Mb4lI=Xp=@9+^x+jhtOc zYgF2aVa(uSR*n(O)e6tf3JEg2xs#dJfhEmi1iOmDYWk|wXNHU?g23^IGKB&yHnsm7 zm_+;p?YpA#N*7vXCkeN2LTNG`{QDa#U3fcFz7SB)83=<8rF)|udrEbrZL$o6W?oDR zQx!178Ih9B#D9Ko$H(jD{4MME&<|6%MPu|TfOc#E0B}!j^MMpV69D#h2`vsEQ{(?c zJ3Lh!3&=yS5fWL~;1wCZ?)%nmK`Eqgcu)O6rD^3%ijcxL50^z?OI(LaVDvfL0#zjZ z2?cPvC$QCzpxpt5jMFp05OxhK0F!Q`rPhDi5)y=-0C} zIM~ku&S@pl1&0=jl+rlS<4`riV~LC-#pqNde@44MB(j%)On$0Ko(@q?4`1?4149Z_ zZi!5aU@2vM$dHR6WSZpj+VboK+>u-CbNi7*lw4K^ZxxM#24_Yc`jvb9NPVi75L+MlM^U~`;a7`4H0L|TYK>%hfEfXLsu1JGM zbh|8{wuc7ucV+`Ys1kqxsj`dajwyM;^X^`)#<+a~$WFy8b2t_RS{8yNYKKlnv+>vB zX(QTf$kqrJ;%I@EwEs{cIcH@Z3|#^S@M+5jsP<^`@8^I4_8MlBb`~cE^n+{{;qW2q z=p1=&+fUo%T{GhVX@;56kH8K_%?X=;$OTYqW1L*)hzelm^$*?_K;9JyIWhsn4SK(| zSmXLTUE8VQX{se#8#Rj*lz`xHtT<61V~fb;WZUpu(M)f#;I+2_zR+)y5Jv?l`CxAinx|EY!`IJ*x9_gf_k&Gx2alL!hK zUWj1T_pk|?iv}4EP#PZvYD_-LpzU!NfcLL%fK&r$W8O1KH9c2&GV~N#T$kaXGvAOl)|T zuF9%6(i=Y3q?X%VK-D2YIYFPH3f|g$TrXW->&^Ab`WT z7>Oo!u1u40?jAJ8Hy`bv}qbgs8)cF0&qeVjD?e+3Ggn1Im>K77ZSpbU*08 zfZkIFcv?y)!*B{|>nx@cE{KoutP+seQU?bCGE`tS0GKUO3PN~t=2u7q_6$l;uw^4c zVu^f{uaqsZ{*a-N?2B8ngrLS8E&s6}Xtv9rR9C^b`@q8*iH)pFzf1|kCfiLw6u{Z%aC z!X^5CzF6qofFJgklJV3oc|Qc2XdFl+y5M9*P8}A>Kh{ zWRgRwMSZ(?Jw;m%0etU5BsWT-Dj-5F;Q$OQJrQd+lv`i6>MhVo^p*^w6{~=fhe|bN z*37oV0kji)4an^%3ABbg5RC;CS50@PV5_hKfXjYx+(DqQdKC^JIEMo6X66$qDdLRc z!YJPSKnbY`#Ht6`g@xGzJmKzzn|abYbP+_Q(v?~~ z96%cd{E0BCsH^0HaWt{y(Cuto4VE7jhB1Z??#UaU(*R&Eo+J`UN+8mcb51F|I|n*J zJCZ3R*OdyeS9hWkc_mA7-br>3Tw=CX2bl(=TpVt#WP8Bg^vE_9bP&6ccAf3lFMgr` z{3=h@?Ftb$RTe&@IQtiJfV;O&4fzh)e1>7seG; z=%mA4@c7{aXeJnhEg2J@Bm;=)j=O=cl#^NNkQ<{r;Bm|8Hg}bJ-S^g4`|itx)~!LN zXtL}?f1Hs6UQ+f0-X6&TBCW=A4>bU0{rv8C4T!(wD-h>VCK4YJk`6C9$by!fxOYw- zV#n+0{E(0ttq_#16B} ze8$E#X9o{B!0vbq#WUwmv5Xz6{(!^~+}sBW{xctdNHL4^vDk!0E}(g|W_q;jR|ZK< z8w>H-8G{%R#%f!E7cO_^B?yFRKLOH)RT9GJsb+kAKq~}WIF)NRLwKZ^Q;>!2MNa|} z-mh?=B;*&D{Nd-mQRcfVnHkChI=DRHU4ga%xJ%+QkBd|-d9uRI76@BT(bjsjwS+r) zvx=lGNLv1?SzZ;P)Gnn>04fO7Culg*?LmbEF0fATG8S@)oJ>NT3pYAXa*vX!eUTDF ziBrp(QyDqr0ZMTr?4uG_Nqs6f%S0g?h`1vO5fo=5S&u#wI2d4+3hWiolEU!=3_oFo zfie?+4W#`;1dd#X@g9Yj<53S<6OB!TM8w8})7k-$&q5(smc%;r z(BlXkTp`C47+%4JA{2X}MIaPbVF!35P#p;u7+fR*46{T+LR8+j25oduCfDzDv6R-hU{TVVo9fz?^N3ShMt!t0NsH)pB zRK8-S{Dn*y3b|k^*?_B70<2gHt==l7c&cT>r`C#{S}J2;s#d{M)ncW(#Y$C*lByLQ z&?+{dR7*gpdT~(1;M(FfF==3z`^eW)=5a9RqvF-)2?S-(G zhS;p(u~_qBum*q}On@$#08}ynd0+spzyVco0%G6;<-i5&016cV5UKzhQ~)fX03|>L z8ej+HzzgVr6_5ZUpa4HW0Ca!=r1%*}Oo;2no&Zz8DfR)L!@r<5 z2viSZpmvo5XqXyAz{Ms7`7kX>fnr1gi4X~7KpznRT0{Xc5Cfz@43PjBMBoH@z_{~( z(Wd}IPJ9hH+%)Fc)0!hrV+(A;76rhtI|YHbEDeERV~Ya>SQg^IvlazFkSK(KG9&{q zkPIR~EeQaaBmwA<20}mBO?)N$(z1@p)5?%}rM| zGF()~Z&Kx@OIDRI$d0T8;JX@vj3^2%pd_+@l9~a4lntZ;AvUIjqIZbuNTR6@hNJoV zk4F;ut)LN4ARuyn2M6F~eg-e#UH%2P;8uPGFW^vq1vj8mdIayFOZo(tphk8C7hpT~ z1Fv8?b_LNR3QD9J+!v=p%}# + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..1413fc609ab6f21774de0cb7e01360095584f65b GIT binary patch literal 45404 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 G`u_lkUM?>H literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 b/vraptor/src/main/webapp/vendor/bootstrap/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..64539b54c3751a6d9adb44c8e3a45ba5a73b77f0 GIT binary patch literal 18028 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 literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.js b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.js new file mode 100644 index 0000000000..8a2e99a535 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.js @@ -0,0 +1,2377 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ + +if (typeof jQuery === 'undefined') { + throw new Error('Bootstrap\'s JavaScript requires jQuery') +} + ++function ($) { + 'use strict'; + var version = $.fn.jquery.split(' ')[0].split('.') + if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 3)) { + throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4') + } +}(jQuery); + +/* ======================================================================== + * Bootstrap: transition.js v3.3.7 + * http://getbootstrap.com/javascript/#transitions + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/) + // ============================================================ + + function transitionEnd() { + var el = document.createElement('bootstrap') + + var transEndEventNames = { + WebkitTransition : 'webkitTransitionEnd', + MozTransition : 'transitionend', + OTransition : 'oTransitionEnd otransitionend', + transition : 'transitionend' + } + + for (var name in transEndEventNames) { + if (el.style[name] !== undefined) { + return { end: transEndEventNames[name] } + } + } + + return false // explicit for ie8 ( ._.) + } + + // http://blog.alexmaccaw.com/css-transitions + $.fn.emulateTransitionEnd = function (duration) { + var called = false + var $el = this + $(this).one('bsTransitionEnd', function () { called = true }) + var callback = function () { if (!called) $($el).trigger($.support.transition.end) } + setTimeout(callback, duration) + return this + } + + $(function () { + $.support.transition = transitionEnd() + + if (!$.support.transition) return + + $.event.special.bsTransitionEnd = { + bindType: $.support.transition.end, + delegateType: $.support.transition.end, + handle: function (e) { + if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments) + } + } + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: alert.js v3.3.7 + * http://getbootstrap.com/javascript/#alerts + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // ALERT CLASS DEFINITION + // ====================== + + var dismiss = '[data-dismiss="alert"]' + var Alert = function (el) { + $(el).on('click', dismiss, this.close) + } + + Alert.VERSION = '3.3.7' + + Alert.TRANSITION_DURATION = 150 + + Alert.prototype.close = function (e) { + var $this = $(this) + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = $(selector === '#' ? [] : selector) + + if (e) e.preventDefault() + + if (!$parent.length) { + $parent = $this.closest('.alert') + } + + $parent.trigger(e = $.Event('close.bs.alert')) + + if (e.isDefaultPrevented()) return + + $parent.removeClass('in') + + function removeElement() { + // detach from parent, fire event then clean up data + $parent.detach().trigger('closed.bs.alert').remove() + } + + $.support.transition && $parent.hasClass('fade') ? + $parent + .one('bsTransitionEnd', removeElement) + .emulateTransitionEnd(Alert.TRANSITION_DURATION) : + removeElement() + } + + + // ALERT PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.alert') + + if (!data) $this.data('bs.alert', (data = new Alert(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.alert + + $.fn.alert = Plugin + $.fn.alert.Constructor = Alert + + + // ALERT NO CONFLICT + // ================= + + $.fn.alert.noConflict = function () { + $.fn.alert = old + return this + } + + + // ALERT DATA-API + // ============== + + $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: button.js v3.3.7 + * http://getbootstrap.com/javascript/#buttons + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // BUTTON PUBLIC CLASS DEFINITION + // ============================== + + var Button = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Button.DEFAULTS, options) + this.isLoading = false + } + + Button.VERSION = '3.3.7' + + Button.DEFAULTS = { + loadingText: 'loading...' + } + + Button.prototype.setState = function (state) { + var d = 'disabled' + var $el = this.$element + var val = $el.is('input') ? 'val' : 'html' + var data = $el.data() + + state += 'Text' + + if (data.resetText == null) $el.data('resetText', $el[val]()) + + // push to event loop to allow forms to submit + setTimeout($.proxy(function () { + $el[val](data[state] == null ? this.options[state] : data[state]) + + if (state == 'loadingText') { + this.isLoading = true + $el.addClass(d).attr(d, d).prop(d, true) + } else if (this.isLoading) { + this.isLoading = false + $el.removeClass(d).removeAttr(d).prop(d, false) + } + }, this), 0) + } + + Button.prototype.toggle = function () { + var changed = true + var $parent = this.$element.closest('[data-toggle="buttons"]') + + if ($parent.length) { + var $input = this.$element.find('input') + if ($input.prop('type') == 'radio') { + if ($input.prop('checked')) changed = false + $parent.find('.active').removeClass('active') + this.$element.addClass('active') + } else if ($input.prop('type') == 'checkbox') { + if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false + this.$element.toggleClass('active') + } + $input.prop('checked', this.$element.hasClass('active')) + if (changed) $input.trigger('change') + } else { + this.$element.attr('aria-pressed', !this.$element.hasClass('active')) + this.$element.toggleClass('active') + } + } + + + // BUTTON PLUGIN DEFINITION + // ======================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.button') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.button', (data = new Button(this, options))) + + if (option == 'toggle') data.toggle() + else if (option) data.setState(option) + }) + } + + var old = $.fn.button + + $.fn.button = Plugin + $.fn.button.Constructor = Button + + + // BUTTON NO CONFLICT + // ================== + + $.fn.button.noConflict = function () { + $.fn.button = old + return this + } + + + // BUTTON DATA-API + // =============== + + $(document) + .on('click.bs.button.data-api', '[data-toggle^="button"]', function (e) { + var $btn = $(e.target).closest('.btn') + Plugin.call($btn, 'toggle') + if (!($(e.target).is('input[type="radio"], input[type="checkbox"]'))) { + // Prevent double click on radios, and the double selections (so cancellation) on checkboxes + e.preventDefault() + // The target component still receive the focus + if ($btn.is('input,button')) $btn.trigger('focus') + else $btn.find('input:visible,button:visible').first().trigger('focus') + } + }) + .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { + $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: carousel.js v3.3.7 + * http://getbootstrap.com/javascript/#carousel + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // CAROUSEL CLASS DEFINITION + // ========================= + + var Carousel = function (element, options) { + this.$element = $(element) + this.$indicators = this.$element.find('.carousel-indicators') + this.options = options + this.paused = null + this.sliding = null + this.interval = null + this.$active = null + this.$items = null + + this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this)) + + this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element + .on('mouseenter.bs.carousel', $.proxy(this.pause, this)) + .on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) + } + + Carousel.VERSION = '3.3.7' + + Carousel.TRANSITION_DURATION = 600 + + Carousel.DEFAULTS = { + interval: 5000, + pause: 'hover', + wrap: true, + keyboard: true + } + + Carousel.prototype.keydown = function (e) { + if (/input|textarea/i.test(e.target.tagName)) return + switch (e.which) { + case 37: this.prev(); break + case 39: this.next(); break + default: return + } + + e.preventDefault() + } + + Carousel.prototype.cycle = function (e) { + e || (this.paused = false) + + this.interval && clearInterval(this.interval) + + this.options.interval + && !this.paused + && (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) + + return this + } + + Carousel.prototype.getItemIndex = function (item) { + this.$items = item.parent().children('.item') + return this.$items.index(item || this.$active) + } + + Carousel.prototype.getItemForDirection = function (direction, active) { + var activeIndex = this.getItemIndex(active) + var willWrap = (direction == 'prev' && activeIndex === 0) + || (direction == 'next' && activeIndex == (this.$items.length - 1)) + if (willWrap && !this.options.wrap) return active + var delta = direction == 'prev' ? -1 : 1 + var itemIndex = (activeIndex + delta) % this.$items.length + return this.$items.eq(itemIndex) + } + + Carousel.prototype.to = function (pos) { + var that = this + var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active')) + + if (pos > (this.$items.length - 1) || pos < 0) return + + if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid" + if (activeIndex == pos) return this.pause().cycle() + + return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos)) + } + + Carousel.prototype.pause = function (e) { + e || (this.paused = true) + + if (this.$element.find('.next, .prev').length && $.support.transition) { + this.$element.trigger($.support.transition.end) + this.cycle(true) + } + + this.interval = clearInterval(this.interval) + + return this + } + + Carousel.prototype.next = function () { + if (this.sliding) return + return this.slide('next') + } + + Carousel.prototype.prev = function () { + if (this.sliding) return + return this.slide('prev') + } + + Carousel.prototype.slide = function (type, next) { + var $active = this.$element.find('.item.active') + var $next = next || this.getItemForDirection(type, $active) + var isCycling = this.interval + var direction = type == 'next' ? 'left' : 'right' + var that = this + + if ($next.hasClass('active')) return (this.sliding = false) + + var relatedTarget = $next[0] + var slideEvent = $.Event('slide.bs.carousel', { + relatedTarget: relatedTarget, + direction: direction + }) + this.$element.trigger(slideEvent) + if (slideEvent.isDefaultPrevented()) return + + this.sliding = true + + isCycling && this.pause() + + if (this.$indicators.length) { + this.$indicators.find('.active').removeClass('active') + var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)]) + $nextIndicator && $nextIndicator.addClass('active') + } + + var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid" + if ($.support.transition && this.$element.hasClass('slide')) { + $next.addClass(type) + $next[0].offsetWidth // force reflow + $active.addClass(direction) + $next.addClass(direction) + $active + .one('bsTransitionEnd', function () { + $next.removeClass([type, direction].join(' ')).addClass('active') + $active.removeClass(['active', direction].join(' ')) + that.sliding = false + setTimeout(function () { + that.$element.trigger(slidEvent) + }, 0) + }) + .emulateTransitionEnd(Carousel.TRANSITION_DURATION) + } else { + $active.removeClass('active') + $next.addClass('active') + this.sliding = false + this.$element.trigger(slidEvent) + } + + isCycling && this.cycle() + + return this + } + + + // CAROUSEL PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.carousel') + var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option) + var action = typeof option == 'string' ? option : options.slide + + if (!data) $this.data('bs.carousel', (data = new Carousel(this, options))) + if (typeof option == 'number') data.to(option) + else if (action) data[action]() + else if (options.interval) data.pause().cycle() + }) + } + + var old = $.fn.carousel + + $.fn.carousel = Plugin + $.fn.carousel.Constructor = Carousel + + + // CAROUSEL NO CONFLICT + // ==================== + + $.fn.carousel.noConflict = function () { + $.fn.carousel = old + return this + } + + + // CAROUSEL DATA-API + // ================= + + var clickHandler = function (e) { + var href + var $this = $(this) + var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7 + if (!$target.hasClass('carousel')) return + var options = $.extend({}, $target.data(), $this.data()) + var slideIndex = $this.attr('data-slide-to') + if (slideIndex) options.interval = false + + Plugin.call($target, options) + + if (slideIndex) { + $target.data('bs.carousel').to(slideIndex) + } + + e.preventDefault() + } + + $(document) + .on('click.bs.carousel.data-api', '[data-slide]', clickHandler) + .on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler) + + $(window).on('load', function () { + $('[data-ride="carousel"]').each(function () { + var $carousel = $(this) + Plugin.call($carousel, $carousel.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: collapse.js v3.3.7 + * http://getbootstrap.com/javascript/#collapse + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + +/* jshint latedef: false */ + ++function ($) { + 'use strict'; + + // COLLAPSE PUBLIC CLASS DEFINITION + // ================================ + + var Collapse = function (element, options) { + this.$element = $(element) + this.options = $.extend({}, Collapse.DEFAULTS, options) + this.$trigger = $('[data-toggle="collapse"][href="#' + element.id + '"],' + + '[data-toggle="collapse"][data-target="#' + element.id + '"]') + this.transitioning = null + + if (this.options.parent) { + this.$parent = this.getParent() + } else { + this.addAriaAndCollapsedClass(this.$element, this.$trigger) + } + + if (this.options.toggle) this.toggle() + } + + Collapse.VERSION = '3.3.7' + + Collapse.TRANSITION_DURATION = 350 + + Collapse.DEFAULTS = { + toggle: true + } + + Collapse.prototype.dimension = function () { + var hasWidth = this.$element.hasClass('width') + return hasWidth ? 'width' : 'height' + } + + Collapse.prototype.show = function () { + if (this.transitioning || this.$element.hasClass('in')) return + + var activesData + var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing') + + if (actives && actives.length) { + activesData = actives.data('bs.collapse') + if (activesData && activesData.transitioning) return + } + + var startEvent = $.Event('show.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + if (actives && actives.length) { + Plugin.call(actives, 'hide') + activesData || actives.data('bs.collapse', null) + } + + var dimension = this.dimension() + + this.$element + .removeClass('collapse') + .addClass('collapsing')[dimension](0) + .attr('aria-expanded', true) + + this.$trigger + .removeClass('collapsed') + .attr('aria-expanded', true) + + this.transitioning = 1 + + var complete = function () { + this.$element + .removeClass('collapsing') + .addClass('collapse in')[dimension]('') + this.transitioning = 0 + this.$element + .trigger('shown.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + var scrollSize = $.camelCase(['scroll', dimension].join('-')) + + this.$element + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize]) + } + + Collapse.prototype.hide = function () { + if (this.transitioning || !this.$element.hasClass('in')) return + + var startEvent = $.Event('hide.bs.collapse') + this.$element.trigger(startEvent) + if (startEvent.isDefaultPrevented()) return + + var dimension = this.dimension() + + this.$element[dimension](this.$element[dimension]())[0].offsetHeight + + this.$element + .addClass('collapsing') + .removeClass('collapse in') + .attr('aria-expanded', false) + + this.$trigger + .addClass('collapsed') + .attr('aria-expanded', false) + + this.transitioning = 1 + + var complete = function () { + this.transitioning = 0 + this.$element + .removeClass('collapsing') + .addClass('collapse') + .trigger('hidden.bs.collapse') + } + + if (!$.support.transition) return complete.call(this) + + this.$element + [dimension](0) + .one('bsTransitionEnd', $.proxy(complete, this)) + .emulateTransitionEnd(Collapse.TRANSITION_DURATION) + } + + Collapse.prototype.toggle = function () { + this[this.$element.hasClass('in') ? 'hide' : 'show']() + } + + Collapse.prototype.getParent = function () { + return $(this.options.parent) + .find('[data-toggle="collapse"][data-parent="' + this.options.parent + '"]') + .each($.proxy(function (i, element) { + var $element = $(element) + this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element) + }, this)) + .end() + } + + Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) { + var isOpen = $element.hasClass('in') + + $element.attr('aria-expanded', isOpen) + $trigger + .toggleClass('collapsed', !isOpen) + .attr('aria-expanded', isOpen) + } + + function getTargetFromTrigger($trigger) { + var href + var target = $trigger.attr('data-target') + || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') // strip for ie7 + + return $(target) + } + + + // COLLAPSE PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.collapse') + var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false + if (!data) $this.data('bs.collapse', (data = new Collapse(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.collapse + + $.fn.collapse = Plugin + $.fn.collapse.Constructor = Collapse + + + // COLLAPSE NO CONFLICT + // ==================== + + $.fn.collapse.noConflict = function () { + $.fn.collapse = old + return this + } + + + // COLLAPSE DATA-API + // ================= + + $(document).on('click.bs.collapse.data-api', '[data-toggle="collapse"]', function (e) { + var $this = $(this) + + if (!$this.attr('data-target')) e.preventDefault() + + var $target = getTargetFromTrigger($this) + var data = $target.data('bs.collapse') + var option = data ? 'toggle' : $this.data() + + Plugin.call($target, option) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: dropdown.js v3.3.7 + * http://getbootstrap.com/javascript/#dropdowns + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // DROPDOWN CLASS DEFINITION + // ========================= + + var backdrop = '.dropdown-backdrop' + var toggle = '[data-toggle="dropdown"]' + var Dropdown = function (element) { + $(element).on('click.bs.dropdown', this.toggle) + } + + Dropdown.VERSION = '3.3.7' + + function getParent($this) { + var selector = $this.attr('data-target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + var $parent = selector && $(selector) + + return $parent && $parent.length ? $parent : $this.parent() + } + + function clearMenus(e) { + if (e && e.which === 3) return + $(backdrop).remove() + $(toggle).each(function () { + var $this = $(this) + var $parent = getParent($this) + var relatedTarget = { relatedTarget: this } + + if (!$parent.hasClass('open')) return + + if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return + + $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this.attr('aria-expanded', 'false') + $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget)) + }) + } + + Dropdown.prototype.toggle = function (e) { + var $this = $(this) + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + clearMenus() + + if (!isActive) { + if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { + // if mobile we use a backdrop because click events don't delegate + $(document.createElement('div')) + .addClass('dropdown-backdrop') + .insertAfter($(this)) + .on('click', clearMenus) + } + + var relatedTarget = { relatedTarget: this } + $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget)) + + if (e.isDefaultPrevented()) return + + $this + .trigger('focus') + .attr('aria-expanded', 'true') + + $parent + .toggleClass('open') + .trigger($.Event('shown.bs.dropdown', relatedTarget)) + } + + return false + } + + Dropdown.prototype.keydown = function (e) { + if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return + + var $this = $(this) + + e.preventDefault() + e.stopPropagation() + + if ($this.is('.disabled, :disabled')) return + + var $parent = getParent($this) + var isActive = $parent.hasClass('open') + + if (!isActive && e.which != 27 || isActive && e.which == 27) { + if (e.which == 27) $parent.find(toggle).trigger('focus') + return $this.trigger('click') + } + + var desc = ' li:not(.disabled):visible a' + var $items = $parent.find('.dropdown-menu' + desc) + + if (!$items.length) return + + var index = $items.index(e.target) + + if (e.which == 38 && index > 0) index-- // up + if (e.which == 40 && index < $items.length - 1) index++ // down + if (!~index) index = 0 + + $items.eq(index).trigger('focus') + } + + + // DROPDOWN PLUGIN DEFINITION + // ========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.dropdown') + + if (!data) $this.data('bs.dropdown', (data = new Dropdown(this))) + if (typeof option == 'string') data[option].call($this) + }) + } + + var old = $.fn.dropdown + + $.fn.dropdown = Plugin + $.fn.dropdown.Constructor = Dropdown + + + // DROPDOWN NO CONFLICT + // ==================== + + $.fn.dropdown.noConflict = function () { + $.fn.dropdown = old + return this + } + + + // APPLY TO STANDARD DROPDOWN ELEMENTS + // =================================== + + $(document) + .on('click.bs.dropdown.data-api', clearMenus) + .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) + .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) + .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) + .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: modal.js v3.3.7 + * http://getbootstrap.com/javascript/#modals + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // MODAL CLASS DEFINITION + // ====================== + + var Modal = function (element, options) { + this.options = options + this.$body = $(document.body) + this.$element = $(element) + this.$dialog = this.$element.find('.modal-dialog') + this.$backdrop = null + this.isShown = null + this.originalBodyPad = null + this.scrollbarWidth = 0 + this.ignoreBackdropClick = false + + if (this.options.remote) { + this.$element + .find('.modal-content') + .load(this.options.remote, $.proxy(function () { + this.$element.trigger('loaded.bs.modal') + }, this)) + } + } + + Modal.VERSION = '3.3.7' + + Modal.TRANSITION_DURATION = 300 + Modal.BACKDROP_TRANSITION_DURATION = 150 + + Modal.DEFAULTS = { + backdrop: true, + keyboard: true, + show: true + } + + Modal.prototype.toggle = function (_relatedTarget) { + return this.isShown ? this.hide() : this.show(_relatedTarget) + } + + Modal.prototype.show = function (_relatedTarget) { + var that = this + var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget }) + + this.$element.trigger(e) + + if (this.isShown || e.isDefaultPrevented()) return + + this.isShown = true + + this.checkScrollbar() + this.setScrollbar() + this.$body.addClass('modal-open') + + this.escape() + this.resize() + + this.$element.on('click.dismiss.bs.modal', '[data-dismiss="modal"]', $.proxy(this.hide, this)) + + this.$dialog.on('mousedown.dismiss.bs.modal', function () { + that.$element.one('mouseup.dismiss.bs.modal', function (e) { + if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true + }) + }) + + this.backdrop(function () { + var transition = $.support.transition && that.$element.hasClass('fade') + + if (!that.$element.parent().length) { + that.$element.appendTo(that.$body) // don't move modals dom position + } + + that.$element + .show() + .scrollTop(0) + + that.adjustDialog() + + if (transition) { + that.$element[0].offsetWidth // force reflow + } + + that.$element.addClass('in') + + that.enforceFocus() + + var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget }) + + transition ? + that.$dialog // wait for modal to slide in + .one('bsTransitionEnd', function () { + that.$element.trigger('focus').trigger(e) + }) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + that.$element.trigger('focus').trigger(e) + }) + } + + Modal.prototype.hide = function (e) { + if (e) e.preventDefault() + + e = $.Event('hide.bs.modal') + + this.$element.trigger(e) + + if (!this.isShown || e.isDefaultPrevented()) return + + this.isShown = false + + this.escape() + this.resize() + + $(document).off('focusin.bs.modal') + + this.$element + .removeClass('in') + .off('click.dismiss.bs.modal') + .off('mouseup.dismiss.bs.modal') + + this.$dialog.off('mousedown.dismiss.bs.modal') + + $.support.transition && this.$element.hasClass('fade') ? + this.$element + .one('bsTransitionEnd', $.proxy(this.hideModal, this)) + .emulateTransitionEnd(Modal.TRANSITION_DURATION) : + this.hideModal() + } + + Modal.prototype.enforceFocus = function () { + $(document) + .off('focusin.bs.modal') // guard against infinite focus loop + .on('focusin.bs.modal', $.proxy(function (e) { + if (document !== e.target && + this.$element[0] !== e.target && + !this.$element.has(e.target).length) { + this.$element.trigger('focus') + } + }, this)) + } + + Modal.prototype.escape = function () { + if (this.isShown && this.options.keyboard) { + this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) { + e.which == 27 && this.hide() + }, this)) + } else if (!this.isShown) { + this.$element.off('keydown.dismiss.bs.modal') + } + } + + Modal.prototype.resize = function () { + if (this.isShown) { + $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this)) + } else { + $(window).off('resize.bs.modal') + } + } + + Modal.prototype.hideModal = function () { + var that = this + this.$element.hide() + this.backdrop(function () { + that.$body.removeClass('modal-open') + that.resetAdjustments() + that.resetScrollbar() + that.$element.trigger('hidden.bs.modal') + }) + } + + Modal.prototype.removeBackdrop = function () { + this.$backdrop && this.$backdrop.remove() + this.$backdrop = null + } + + Modal.prototype.backdrop = function (callback) { + var that = this + var animate = this.$element.hasClass('fade') ? 'fade' : '' + + if (this.isShown && this.options.backdrop) { + var doAnimate = $.support.transition && animate + + this.$backdrop = $(document.createElement('div')) + .addClass('modal-backdrop ' + animate) + .appendTo(this.$body) + + this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { + if (this.ignoreBackdropClick) { + this.ignoreBackdropClick = false + return + } + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus() + : this.hide() + }, this)) + + if (doAnimate) this.$backdrop[0].offsetWidth // force reflow + + this.$backdrop.addClass('in') + + if (!callback) return + + doAnimate ? + this.$backdrop + .one('bsTransitionEnd', callback) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callback() + + } else if (!this.isShown && this.$backdrop) { + this.$backdrop.removeClass('in') + + var callbackRemove = function () { + that.removeBackdrop() + callback && callback() + } + $.support.transition && this.$element.hasClass('fade') ? + this.$backdrop + .one('bsTransitionEnd', callbackRemove) + .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) : + callbackRemove() + + } else if (callback) { + callback() + } + } + + // these following methods are used to handle overflowing modals + + Modal.prototype.handleUpdate = function () { + this.adjustDialog() + } + + Modal.prototype.adjustDialog = function () { + var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight + + this.$element.css({ + paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '', + paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : '' + }) + } + + Modal.prototype.resetAdjustments = function () { + this.$element.css({ + paddingLeft: '', + paddingRight: '' + }) + } + + Modal.prototype.checkScrollbar = function () { + var fullWindowWidth = window.innerWidth + if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8 + var documentElementRect = document.documentElement.getBoundingClientRect() + fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left) + } + this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth + this.scrollbarWidth = this.measureScrollbar() + } + + Modal.prototype.setScrollbar = function () { + var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10) + this.originalBodyPad = document.body.style.paddingRight || '' + if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth) + } + + Modal.prototype.resetScrollbar = function () { + this.$body.css('padding-right', this.originalBodyPad) + } + + Modal.prototype.measureScrollbar = function () { // thx walsh + var scrollDiv = document.createElement('div') + scrollDiv.className = 'modal-scrollbar-measure' + this.$body.append(scrollDiv) + var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth + this.$body[0].removeChild(scrollDiv) + return scrollbarWidth + } + + + // MODAL PLUGIN DEFINITION + // ======================= + + function Plugin(option, _relatedTarget) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.modal') + var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option) + + if (!data) $this.data('bs.modal', (data = new Modal(this, options))) + if (typeof option == 'string') data[option](_relatedTarget) + else if (options.show) data.show(_relatedTarget) + }) + } + + var old = $.fn.modal + + $.fn.modal = Plugin + $.fn.modal.Constructor = Modal + + + // MODAL NO CONFLICT + // ================= + + $.fn.modal.noConflict = function () { + $.fn.modal = old + return this + } + + + // MODAL DATA-API + // ============== + + $(document).on('click.bs.modal.data-api', '[data-toggle="modal"]', function (e) { + var $this = $(this) + var href = $this.attr('href') + var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7 + var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data()) + + if ($this.is('a')) e.preventDefault() + + $target.one('show.bs.modal', function (showEvent) { + if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown + $target.one('hidden.bs.modal', function () { + $this.is(':visible') && $this.trigger('focus') + }) + }) + Plugin.call($target, option, this) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tooltip.js v3.3.7 + * http://getbootstrap.com/javascript/#tooltip + * Inspired by the original jQuery.tipsy by Jason Frame + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TOOLTIP PUBLIC CLASS DEFINITION + // =============================== + + var Tooltip = function (element, options) { + this.type = null + this.options = null + this.enabled = null + this.timeout = null + this.hoverState = null + this.$element = null + this.inState = null + + this.init('tooltip', element, options) + } + + Tooltip.VERSION = '3.3.7' + + Tooltip.TRANSITION_DURATION = 150 + + Tooltip.DEFAULTS = { + animation: true, + placement: 'top', + selector: false, + template: '', + trigger: 'hover focus', + title: '', + delay: 0, + html: false, + container: false, + viewport: { + selector: 'body', + padding: 0 + } + } + + Tooltip.prototype.init = function (type, element, options) { + this.enabled = true + this.type = type + this.$element = $(element) + this.options = this.getOptions(options) + this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport)) + this.inState = { click: false, hover: false, focus: false } + + if (this.$element[0] instanceof document.constructor && !this.options.selector) { + throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') + } + + var triggers = this.options.trigger.split(' ') + + for (var i = triggers.length; i--;) { + var trigger = triggers[i] + + if (trigger == 'click') { + this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) + } else if (trigger != 'manual') { + var eventIn = trigger == 'hover' ? 'mouseenter' : 'focusin' + var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout' + + this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) + this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) + } + } + + this.options.selector ? + (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : + this.fixTitle() + } + + Tooltip.prototype.getDefaults = function () { + return Tooltip.DEFAULTS + } + + Tooltip.prototype.getOptions = function (options) { + options = $.extend({}, this.getDefaults(), this.$element.data(), options) + + if (options.delay && typeof options.delay == 'number') { + options.delay = { + show: options.delay, + hide: options.delay + } + } + + return options + } + + Tooltip.prototype.getDelegateOptions = function () { + var options = {} + var defaults = this.getDefaults() + + this._options && $.each(this._options, function (key, value) { + if (defaults[key] != value) options[key] = value + }) + + return options + } + + Tooltip.prototype.enter = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true + } + + if (self.tip().hasClass('in') || self.hoverState == 'in') { + self.hoverState = 'in' + return + } + + clearTimeout(self.timeout) + + self.hoverState = 'in' + + if (!self.options.delay || !self.options.delay.show) return self.show() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'in') self.show() + }, self.options.delay.show) + } + + Tooltip.prototype.isInStateTrue = function () { + for (var key in this.inState) { + if (this.inState[key]) return true + } + + return false + } + + Tooltip.prototype.leave = function (obj) { + var self = obj instanceof this.constructor ? + obj : $(obj.currentTarget).data('bs.' + this.type) + + if (!self) { + self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) + $(obj.currentTarget).data('bs.' + this.type, self) + } + + if (obj instanceof $.Event) { + self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false + } + + if (self.isInStateTrue()) return + + clearTimeout(self.timeout) + + self.hoverState = 'out' + + if (!self.options.delay || !self.options.delay.hide) return self.hide() + + self.timeout = setTimeout(function () { + if (self.hoverState == 'out') self.hide() + }, self.options.delay.hide) + } + + Tooltip.prototype.show = function () { + var e = $.Event('show.bs.' + this.type) + + if (this.hasContent() && this.enabled) { + this.$element.trigger(e) + + var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0]) + if (e.isDefaultPrevented() || !inDom) return + var that = this + + var $tip = this.tip() + + var tipId = this.getUID(this.type) + + this.setContent() + $tip.attr('id', tipId) + this.$element.attr('aria-describedby', tipId) + + if (this.options.animation) $tip.addClass('fade') + + var placement = typeof this.options.placement == 'function' ? + this.options.placement.call(this, $tip[0], this.$element[0]) : + this.options.placement + + var autoToken = /\s?auto?\s?/i + var autoPlace = autoToken.test(placement) + if (autoPlace) placement = placement.replace(autoToken, '') || 'top' + + $tip + .detach() + .css({ top: 0, left: 0, display: 'block' }) + .addClass(placement) + .data('bs.' + this.type, this) + + this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) + this.$element.trigger('inserted.bs.' + this.type) + + var pos = this.getPosition() + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (autoPlace) { + var orgPlacement = placement + var viewportDim = this.getPosition(this.$viewport) + + placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' : + placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' : + placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' : + placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' : + placement + + $tip + .removeClass(orgPlacement) + .addClass(placement) + } + + var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight) + + this.applyPlacement(calculatedOffset, placement) + + var complete = function () { + var prevHoverState = that.hoverState + that.$element.trigger('shown.bs.' + that.type) + that.hoverState = null + + if (prevHoverState == 'out') that.leave(that) + } + + $.support.transition && this.$tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + } + } + + Tooltip.prototype.applyPlacement = function (offset, placement) { + var $tip = this.tip() + var width = $tip[0].offsetWidth + var height = $tip[0].offsetHeight + + // manually read margins because getBoundingClientRect includes difference + var marginTop = parseInt($tip.css('margin-top'), 10) + var marginLeft = parseInt($tip.css('margin-left'), 10) + + // we must check for NaN for ie 8/9 + if (isNaN(marginTop)) marginTop = 0 + if (isNaN(marginLeft)) marginLeft = 0 + + offset.top += marginTop + offset.left += marginLeft + + // $.fn.offset doesn't round pixel values + // so we use setOffset directly with our own function B-0 + $.offset.setOffset($tip[0], $.extend({ + using: function (props) { + $tip.css({ + top: Math.round(props.top), + left: Math.round(props.left) + }) + } + }, offset), 0) + + $tip.addClass('in') + + // check to see if placing tip in new offset caused the tip to resize itself + var actualWidth = $tip[0].offsetWidth + var actualHeight = $tip[0].offsetHeight + + if (placement == 'top' && actualHeight != height) { + offset.top = offset.top + height - actualHeight + } + + var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight) + + if (delta.left) offset.left += delta.left + else offset.top += delta.top + + var isVertical = /top|bottom/.test(placement) + var arrowDelta = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight + var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight' + + $tip.offset(offset) + this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical) + } + + Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) { + this.arrow() + .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%') + .css(isVertical ? 'top' : 'left', '') + } + + Tooltip.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + + $tip.find('.tooltip-inner')[this.options.html ? 'html' : 'text'](title) + $tip.removeClass('fade in top bottom left right') + } + + Tooltip.prototype.hide = function (callback) { + var that = this + var $tip = $(this.$tip) + var e = $.Event('hide.bs.' + this.type) + + function complete() { + if (that.hoverState != 'in') $tip.detach() + if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary. + that.$element + .removeAttr('aria-describedby') + .trigger('hidden.bs.' + that.type) + } + callback && callback() + } + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + $tip.removeClass('in') + + $.support.transition && $tip.hasClass('fade') ? + $tip + .one('bsTransitionEnd', complete) + .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) : + complete() + + this.hoverState = null + + return this + } + + Tooltip.prototype.fixTitle = function () { + var $e = this.$element + if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') { + $e.attr('data-original-title', $e.attr('title') || '').attr('title', '') + } + } + + Tooltip.prototype.hasContent = function () { + return this.getTitle() + } + + Tooltip.prototype.getPosition = function ($element) { + $element = $element || this.$element + + var el = $element[0] + var isBody = el.tagName == 'BODY' + + var elRect = el.getBoundingClientRect() + if (elRect.width == null) { + // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093 + elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top }) + } + var isSvg = window.SVGElement && el instanceof window.SVGElement + // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3. + // See https://github.com/twbs/bootstrap/issues/20280 + var elOffset = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset()) + var scroll = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() } + var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null + + return $.extend({}, elRect, scroll, outerDims, elOffset) + } + + Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) { + return placement == 'bottom' ? { top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'top' ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } : + placement == 'left' ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } : + /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width } + + } + + Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) { + var delta = { top: 0, left: 0 } + if (!this.$viewport) return delta + + var viewportPadding = this.options.viewport && this.options.viewport.padding || 0 + var viewportDimensions = this.getPosition(this.$viewport) + + if (/right|left/.test(placement)) { + var topEdgeOffset = pos.top - viewportPadding - viewportDimensions.scroll + var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight + if (topEdgeOffset < viewportDimensions.top) { // top overflow + delta.top = viewportDimensions.top - topEdgeOffset + } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow + delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset + } + } else { + var leftEdgeOffset = pos.left - viewportPadding + var rightEdgeOffset = pos.left + viewportPadding + actualWidth + if (leftEdgeOffset < viewportDimensions.left) { // left overflow + delta.left = viewportDimensions.left - leftEdgeOffset + } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow + delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset + } + } + + return delta + } + + Tooltip.prototype.getTitle = function () { + var title + var $e = this.$element + var o = this.options + + title = $e.attr('data-original-title') + || (typeof o.title == 'function' ? o.title.call($e[0]) : o.title) + + return title + } + + Tooltip.prototype.getUID = function (prefix) { + do prefix += ~~(Math.random() * 1000000) + while (document.getElementById(prefix)) + return prefix + } + + Tooltip.prototype.tip = function () { + if (!this.$tip) { + this.$tip = $(this.options.template) + if (this.$tip.length != 1) { + throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!') + } + } + return this.$tip + } + + Tooltip.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow')) + } + + Tooltip.prototype.enable = function () { + this.enabled = true + } + + Tooltip.prototype.disable = function () { + this.enabled = false + } + + Tooltip.prototype.toggleEnabled = function () { + this.enabled = !this.enabled + } + + Tooltip.prototype.toggle = function (e) { + var self = this + if (e) { + self = $(e.currentTarget).data('bs.' + this.type) + if (!self) { + self = new this.constructor(e.currentTarget, this.getDelegateOptions()) + $(e.currentTarget).data('bs.' + this.type, self) + } + } + + if (e) { + self.inState.click = !self.inState.click + if (self.isInStateTrue()) self.enter(self) + else self.leave(self) + } else { + self.tip().hasClass('in') ? self.leave(self) : self.enter(self) + } + } + + Tooltip.prototype.destroy = function () { + var that = this + clearTimeout(this.timeout) + this.hide(function () { + that.$element.off('.' + that.type).removeData('bs.' + that.type) + if (that.$tip) { + that.$tip.detach() + } + that.$tip = null + that.$arrow = null + that.$viewport = null + that.$element = null + }) + } + + + // TOOLTIP PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tooltip') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tooltip + + $.fn.tooltip = Plugin + $.fn.tooltip.Constructor = Tooltip + + + // TOOLTIP NO CONFLICT + // =================== + + $.fn.tooltip.noConflict = function () { + $.fn.tooltip = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: popover.js v3.3.7 + * http://getbootstrap.com/javascript/#popovers + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // POPOVER PUBLIC CLASS DEFINITION + // =============================== + + var Popover = function (element, options) { + this.init('popover', element, options) + } + + if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') + + Popover.VERSION = '3.3.7' + + Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }) + + + // NOTE: POPOVER EXTENDS tooltip.js + // ================================ + + Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype) + + Popover.prototype.constructor = Popover + + Popover.prototype.getDefaults = function () { + return Popover.DEFAULTS + } + + Popover.prototype.setContent = function () { + var $tip = this.tip() + var title = this.getTitle() + var content = this.getContent() + + $tip.find('.popover-title')[this.options.html ? 'html' : 'text'](title) + $tip.find('.popover-content').children().detach().end()[ // we use append for html objects to maintain js events + this.options.html ? (typeof content == 'string' ? 'html' : 'append') : 'text' + ](content) + + $tip.removeClass('fade top bottom left right in') + + // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do + // this manually by checking the contents. + if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide() + } + + Popover.prototype.hasContent = function () { + return this.getTitle() || this.getContent() + } + + Popover.prototype.getContent = function () { + var $e = this.$element + var o = this.options + + return $e.attr('data-content') + || (typeof o.content == 'function' ? + o.content.call($e[0]) : + o.content) + } + + Popover.prototype.arrow = function () { + return (this.$arrow = this.$arrow || this.tip().find('.arrow')) + } + + + // POPOVER PLUGIN DEFINITION + // ========================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.popover') + var options = typeof option == 'object' && option + + if (!data && /destroy|hide/.test(option)) return + if (!data) $this.data('bs.popover', (data = new Popover(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.popover + + $.fn.popover = Plugin + $.fn.popover.Constructor = Popover + + + // POPOVER NO CONFLICT + // =================== + + $.fn.popover.noConflict = function () { + $.fn.popover = old + return this + } + +}(jQuery); + +/* ======================================================================== + * Bootstrap: scrollspy.js v3.3.7 + * http://getbootstrap.com/javascript/#scrollspy + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // SCROLLSPY CLASS DEFINITION + // ========================== + + function ScrollSpy(element, options) { + this.$body = $(document.body) + this.$scrollElement = $(element).is(document.body) ? $(window) : $(element) + this.options = $.extend({}, ScrollSpy.DEFAULTS, options) + this.selector = (this.options.target || '') + ' .nav li > a' + this.offsets = [] + this.targets = [] + this.activeTarget = null + this.scrollHeight = 0 + + this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this)) + this.refresh() + this.process() + } + + ScrollSpy.VERSION = '3.3.7' + + ScrollSpy.DEFAULTS = { + offset: 10 + } + + ScrollSpy.prototype.getScrollHeight = function () { + return this.$scrollElement[0].scrollHeight || Math.max(this.$body[0].scrollHeight, document.documentElement.scrollHeight) + } + + ScrollSpy.prototype.refresh = function () { + var that = this + var offsetMethod = 'offset' + var offsetBase = 0 + + this.offsets = [] + this.targets = [] + this.scrollHeight = this.getScrollHeight() + + if (!$.isWindow(this.$scrollElement[0])) { + offsetMethod = 'position' + offsetBase = this.$scrollElement.scrollTop() + } + + this.$body + .find(this.selector) + .map(function () { + var $el = $(this) + var href = $el.data('target') || $el.attr('href') + var $href = /^#./.test(href) && $(href) + + return ($href + && $href.length + && $href.is(':visible') + && [[$href[offsetMethod]().top + offsetBase, href]]) || null + }) + .sort(function (a, b) { return a[0] - b[0] }) + .each(function () { + that.offsets.push(this[0]) + that.targets.push(this[1]) + }) + } + + ScrollSpy.prototype.process = function () { + var scrollTop = this.$scrollElement.scrollTop() + this.options.offset + var scrollHeight = this.getScrollHeight() + var maxScroll = this.options.offset + scrollHeight - this.$scrollElement.height() + var offsets = this.offsets + var targets = this.targets + var activeTarget = this.activeTarget + var i + + if (this.scrollHeight != scrollHeight) { + this.refresh() + } + + if (scrollTop >= maxScroll) { + return activeTarget != (i = targets[targets.length - 1]) && this.activate(i) + } + + if (activeTarget && scrollTop < offsets[0]) { + this.activeTarget = null + return this.clear() + } + + for (i = offsets.length; i--;) { + activeTarget != targets[i] + && scrollTop >= offsets[i] + && (offsets[i + 1] === undefined || scrollTop < offsets[i + 1]) + && this.activate(targets[i]) + } + } + + ScrollSpy.prototype.activate = function (target) { + this.activeTarget = target + + this.clear() + + var selector = this.selector + + '[data-target="' + target + '"],' + + this.selector + '[href="' + target + '"]' + + var active = $(selector) + .parents('li') + .addClass('active') + + if (active.parent('.dropdown-menu').length) { + active = active + .closest('li.dropdown') + .addClass('active') + } + + active.trigger('activate.bs.scrollspy') + } + + ScrollSpy.prototype.clear = function () { + $(this.selector) + .parentsUntil(this.options.target, '.active') + .removeClass('active') + } + + + // SCROLLSPY PLUGIN DEFINITION + // =========================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.scrollspy') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.scrollspy', (data = new ScrollSpy(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.scrollspy + + $.fn.scrollspy = Plugin + $.fn.scrollspy.Constructor = ScrollSpy + + + // SCROLLSPY NO CONFLICT + // ===================== + + $.fn.scrollspy.noConflict = function () { + $.fn.scrollspy = old + return this + } + + + // SCROLLSPY DATA-API + // ================== + + $(window).on('load.bs.scrollspy.data-api', function () { + $('[data-spy="scroll"]').each(function () { + var $spy = $(this) + Plugin.call($spy, $spy.data()) + }) + }) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: tab.js v3.3.7 + * http://getbootstrap.com/javascript/#tabs + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // TAB CLASS DEFINITION + // ==================== + + var Tab = function (element) { + // jscs:disable requireDollarBeforejQueryAssignment + this.element = $(element) + // jscs:enable requireDollarBeforejQueryAssignment + } + + Tab.VERSION = '3.3.7' + + Tab.TRANSITION_DURATION = 150 + + Tab.prototype.show = function () { + var $this = this.element + var $ul = $this.closest('ul:not(.dropdown-menu)') + var selector = $this.data('target') + + if (!selector) { + selector = $this.attr('href') + selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7 + } + + if ($this.parent('li').hasClass('active')) return + + var $previous = $ul.find('.active:last a') + var hideEvent = $.Event('hide.bs.tab', { + relatedTarget: $this[0] + }) + var showEvent = $.Event('show.bs.tab', { + relatedTarget: $previous[0] + }) + + $previous.trigger(hideEvent) + $this.trigger(showEvent) + + if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return + + var $target = $(selector) + + this.activate($this.closest('li'), $ul) + this.activate($target, $target.parent(), function () { + $previous.trigger({ + type: 'hidden.bs.tab', + relatedTarget: $this[0] + }) + $this.trigger({ + type: 'shown.bs.tab', + relatedTarget: $previous[0] + }) + }) + } + + Tab.prototype.activate = function (element, container, callback) { + var $active = container.find('> .active') + var transition = callback + && $.support.transition + && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length) + + function next() { + $active + .removeClass('active') + .find('> .dropdown-menu > .active') + .removeClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', false) + + element + .addClass('active') + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + + if (transition) { + element[0].offsetWidth // reflow for transition + element.addClass('in') + } else { + element.removeClass('fade') + } + + if (element.parent('.dropdown-menu').length) { + element + .closest('li.dropdown') + .addClass('active') + .end() + .find('[data-toggle="tab"]') + .attr('aria-expanded', true) + } + + callback && callback() + } + + $active.length && transition ? + $active + .one('bsTransitionEnd', next) + .emulateTransitionEnd(Tab.TRANSITION_DURATION) : + next() + + $active.removeClass('in') + } + + + // TAB PLUGIN DEFINITION + // ===================== + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.tab') + + if (!data) $this.data('bs.tab', (data = new Tab(this))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.tab + + $.fn.tab = Plugin + $.fn.tab.Constructor = Tab + + + // TAB NO CONFLICT + // =============== + + $.fn.tab.noConflict = function () { + $.fn.tab = old + return this + } + + + // TAB DATA-API + // ============ + + var clickHandler = function (e) { + e.preventDefault() + Plugin.call($(this), 'show') + } + + $(document) + .on('click.bs.tab.data-api', '[data-toggle="tab"]', clickHandler) + .on('click.bs.tab.data-api', '[data-toggle="pill"]', clickHandler) + +}(jQuery); + +/* ======================================================================== + * Bootstrap: affix.js v3.3.7 + * http://getbootstrap.com/javascript/#affix + * ======================================================================== + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * ======================================================================== */ + + ++function ($) { + 'use strict'; + + // AFFIX CLASS DEFINITION + // ====================== + + var Affix = function (element, options) { + this.options = $.extend({}, Affix.DEFAULTS, options) + + this.$target = $(this.options.target) + .on('scroll.bs.affix.data-api', $.proxy(this.checkPosition, this)) + .on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this)) + + this.$element = $(element) + this.affixed = null + this.unpin = null + this.pinnedOffset = null + + this.checkPosition() + } + + Affix.VERSION = '3.3.7' + + Affix.RESET = 'affix affix-top affix-bottom' + + Affix.DEFAULTS = { + offset: 0, + target: window + } + + Affix.prototype.getState = function (scrollHeight, height, offsetTop, offsetBottom) { + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + var targetHeight = this.$target.height() + + if (offsetTop != null && this.affixed == 'top') return scrollTop < offsetTop ? 'top' : false + + if (this.affixed == 'bottom') { + if (offsetTop != null) return (scrollTop + this.unpin <= position.top) ? false : 'bottom' + return (scrollTop + targetHeight <= scrollHeight - offsetBottom) ? false : 'bottom' + } + + var initializing = this.affixed == null + var colliderTop = initializing ? scrollTop : position.top + var colliderHeight = initializing ? targetHeight : height + + if (offsetTop != null && scrollTop <= offsetTop) return 'top' + if (offsetBottom != null && (colliderTop + colliderHeight >= scrollHeight - offsetBottom)) return 'bottom' + + return false + } + + Affix.prototype.getPinnedOffset = function () { + if (this.pinnedOffset) return this.pinnedOffset + this.$element.removeClass(Affix.RESET).addClass('affix') + var scrollTop = this.$target.scrollTop() + var position = this.$element.offset() + return (this.pinnedOffset = position.top - scrollTop) + } + + Affix.prototype.checkPositionWithEventLoop = function () { + setTimeout($.proxy(this.checkPosition, this), 1) + } + + Affix.prototype.checkPosition = function () { + if (!this.$element.is(':visible')) return + + var height = this.$element.height() + var offset = this.options.offset + var offsetTop = offset.top + var offsetBottom = offset.bottom + var scrollHeight = Math.max($(document).height(), $(document.body).height()) + + if (typeof offset != 'object') offsetBottom = offsetTop = offset + if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) + if (typeof offsetBottom == 'function') offsetBottom = offset.bottom(this.$element) + + var affix = this.getState(scrollHeight, height, offsetTop, offsetBottom) + + if (this.affixed != affix) { + if (this.unpin != null) this.$element.css('top', '') + + var affixType = 'affix' + (affix ? '-' + affix : '') + var e = $.Event(affixType + '.bs.affix') + + this.$element.trigger(e) + + if (e.isDefaultPrevented()) return + + this.affixed = affix + this.unpin = affix == 'bottom' ? this.getPinnedOffset() : null + + this.$element + .removeClass(Affix.RESET) + .addClass(affixType) + .trigger(affixType.replace('affix', 'affixed') + '.bs.affix') + } + + if (affix == 'bottom') { + this.$element.offset({ + top: scrollHeight - height - offsetBottom + }) + } + } + + + // AFFIX PLUGIN DEFINITION + // ======================= + + function Plugin(option) { + return this.each(function () { + var $this = $(this) + var data = $this.data('bs.affix') + var options = typeof option == 'object' && option + + if (!data) $this.data('bs.affix', (data = new Affix(this, options))) + if (typeof option == 'string') data[option]() + }) + } + + var old = $.fn.affix + + $.fn.affix = Plugin + $.fn.affix.Constructor = Affix + + + // AFFIX NO CONFLICT + // ================= + + $.fn.affix.noConflict = function () { + $.fn.affix = old + return this + } + + + // AFFIX DATA-API + // ============== + + $(window).on('load', function () { + $('[data-spy="affix"]').each(function () { + var $spy = $(this) + var data = $spy.data() + + data.offset = data.offset || {} + + if (data.offsetBottom != null) data.offset.bottom = data.offsetBottom + if (data.offsetTop != null) data.offset.top = data.offsetTop + + Plugin.call($spy, data) + }) + }) + +}(jQuery); diff --git a/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.min.js b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.min.js new file mode 100644 index 0000000000..9bcd2fccae --- /dev/null +++ b/vraptor/src/main/webapp/vendor/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.css b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.css new file mode 100644 index 0000000000..a0b879fa00 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.css @@ -0,0 +1,2199 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.eot?v=4.6.3'); + src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.min.css b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000000..9b27f8ea8f --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.6.3');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/FontAwesome.otf b/vraptor/src/main/webapp/vendor/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000000000000000000000000000000000000..d4de13e832d567ff29c5b4e9561b8c370348cc9c GIT binary patch literal 124988 zcmbUJd0Z36|2U4%l4KKha{x&!By57#qh9rZpm?<2TJKtFy^$jj1QJZbecwX32_PVX zV7f9YgpFlkhA%W0jjEMtS0Jd_fh znd;+QjS%$}-ydy`PBA{D96bW+QiO!EREy0H^Md=|1;cL$g@gh`QIvF%#cZFOVYFFN zjC_5*%MT6qP=mcbgS`S*kkBC&IHbZV(j4qd1=EyB*Nq-84FB8V_@^Kh2T!&rf+x57 z_i>22@LYgTr4OPIjacN5f{+f4Koihp6ozJ@htNW_7_C5&XcLM;Mr1-MXgkV6d8i20 zpk~y8y3t{D0zHi`p_kAV^fvk!eT#lYf1x1?Q9?>W`B7?0OX;cmsj*ZT^$@j$ilm~b zWGa=)p(?0mY8TZ*9idKAXQ*@3bJR=J73v-8OX_>-XX+0MQ+IqApJ6^)pD{jRKC^um z`>gR&v{exJ{Me)YNS& zBwQ_gT)07K6xxJ&!ct+iuu-^E*el#8JSaRNd`fspcvW~q_@VHo@V1B+sYRnj<3&?M z;i6fhg`!oWCqz*qlPE>BU6d}$6%~j|L^YxYQHQ8Uv{$rGbV_tV^t|Y@=$fcs^rh%` z(GcxJOKBCYqsP*d=`eaWy?|a#ucJ57(eyStjV_|g=xW+Yx6!@yVfq>RW%@PxJ^C~H zTly#ZH~Nm47R$x=i8=8D;tArZ;&Aa|@p`dIoFy(1*NR)j-QxY?qvBKI=fu~zm-4?3?PF?px@)!?(lti0^UVXMCUYecktc z-_L!&_r2{q#83>&1TY$AG&7Ew$V_HJnQ$h8nZ-QJ%wrZYtC%PzmPunA%uePYbCfy3 zTx4Eit}t&gpDVg;<2RkK=lG;3hzv5&IRY&@I7+Sx3&kS$~D*k-na?P8x~ z53onrQ|uY`Y4#%fBKr#a4*LQ7GyA&~Nrh5BsY*IrI!ZcLI#D`BYLG@qXG`Zwmq?dO zS4$(M>!h2cTcvSQlQdbHDz!^9rMc2VX@%4wt&=uMTcsV+E@`iHzx1&5nDmtNtn|F} zIq7BT>(aNR??^w8ej@!s`nB|y^e5?W(m$mG(jgfolgJdZVKR+OCmSW3APbdElg*Sp zESoP|EL$d9C0i@oAlo8~k;Til$;>jVEM1l@%a;|)%4JouT3NHKP1Y&fBYRSIP8~OM0 zpXI;H|B?^N?M0`Iba;j3qNQIXWvUHqjcJY_u9v zjnQ_iG2UvlnfPJ(N0KeEN%6_i3A|xSHCfC?Te>AVEyWlGgWoOjz1}URrEa&zTH=f` z@TPFFM<>9aEyiL=;?I<5Yf`E;(QJ?bZQhoGw3&t?+CiE8(~s5Q?%6x^omX5QE#&wQ=?*{W0NwX zt#R?ufSh}kdsiNlsnI|~pjT?V#rhB6-Lj{LyJh1xW2_zePPbaTuXnHPnQUrunk|Z_ zY)Yc}Zpll3PopKtbJ?B-10}-aJYb?Z-r_0PVy#A_*=Di;9rdfKqU8?E+480T))WU(e@ z1LH*}1CK_<0*&qVj6`5Lt7ld`pYW{esd(8m3dXcrl8jj(WwyIhwAoE*DKWOFv{a9% zc`N+<_^L;sfpz0OBJLG!o=70E$%*D9;4LrFQqycEcnRQpqZNc0B;B0kB_@oQYRXDT zgi&HVGw}+nM;?K!W{)6xSkv44J>l}!Ja;{h-F>rrFXinp4b(ww67UJ|IFG+LtIcML zi;Drm0&>hT#^mH!9%u1@HM`LSl!@~2hNr}fqNk9S>bdam?B%DZe;Mk38a&VbPYY1g z!-037;JZjjw!|1StRRmd(zYZUC^0}vj5X019~*5m@=WLDY_r8~+@1zfZ;nqiC)%@; zjW(O7A;D?^BmoA2(bD2#jL{&^v1#^LODYIus)s!iQ*F^8$h;nj0ptfCIPKrQXqBz6g)^yuvij6<^ChI|EUA1 zfNemH*rPm%@|589Jy#x;-jWwZyjnHeY!<@U%qG@8$$} zDwS9B(J3%sv^mz8VvI{lw8!&vfUdV0?J-89)#Slv{N#9JoFxrV9|g05Umj8a)8N6^ z|Foo~{!f)h_P@`1OP+_kMbK}aj(M;+qb&*aH6R6kJp{L>SYmh^>J>6Cr+WBhdm1pG zXExrFr$=}%vl&?Jo&`<5C${kR|5Z#plK!Kd_^L4z=Hao+u@;^xHjmx5rNH3vpqtGp zMpFV9%GBsMP(B_K^M=^d5r6f_Kk#E5U=R!i?*#zg8dHa>Xe=yDryofSkbG1YEMi}4nsrcMt{P0P;aag%5S8Yc4n z@IJx6CEhKtnG%i3aracacYNL)M1iIQUPw!{nT%j(VnN_w`5GGsLhm(%9?|rO#eW;T z((&Jxe@%kt37(85drGn))@BO@<^nC|)p0zkc(rB&0|a~u@}Fpn`qu#b({#^7M1@Wc z_4q@4w_r5*3I1b&`Ods5*VC441epZ=@4b4Yn|BpF9PH7oo~eaSnd&v5d<~=$BoD;L zOYD2sC}6y(&?(c5Y1V`oun8b9)@`X-*0h);YetMcmKUghgvz54Vt5LJ{*3{>5;`^F zpEf&av6wVFs6<|Y@KFD>@Uy?y>d|`tQ{nGMg@%T~X~+UIl@??4yvW^hCQyw(|Jw%o zE;=g?=np<5@EYLit`1=(<3Cki0sV82=Z*hVy&|0oG{^v7&yrySak5$x2OA*nG+XHnL9atO7xVd& z@V16~FVI^UJQ)Tfguw`5FhUsL1`mXJA6N*37+??s^kV=}1ArO;)BvCc05t%p0VWd; zaNz(K4shWB7w(7ehiRYUEbQ-ix1JG#zIt|*UL6_5@%W2^N6AM@9avH!* z2e|0~2Q&)_Z2$)Z zGfbWg=M*@n!Wjx@7@P(;!{M9;=X5wD(vAE&zyRbjz{3V0mjTFS0CE|CTm~SQ0mx;T z0v%3;4yOVf5Xu0AG610rKqvzc$^e8i0HF*(C<7460E99Cp$tGM0|>t%6yQPuE)?K^ zK88?$3j???fC~dSAd3OWVgRxjfGh?eivh@D2m?3+zyVDRKobMd!~irg08I=)69dr1 z05mZGO$N16+7S{M7Kta01-4sc;22Acz47VweVS z(*O<#VgP~|fFK4Shye&<0D>5RAO;|a0SICMf*61x1|Wz52x0(&7=R!KAc!FX;6Q>5 zAVCI@AVb9T_^F_RLD;5F_b}^J=rtV35)Nbu_sY@K=^jp<3VnwIal(N(;UG%kK-h4g zO*qgd9B2~`vXcG>!2?yGQ18u^AHsL^N=&iTIO;(voLcUQ2^Uc1l!I!dTB#1Ii#h<2;p0?4 z^*;5rkJyLx@$(t)Gu`K5pZPw^eAfAF@rm&%@M-jE@!98dSTI%ah~RNSmteo3PjFiB z48(UY3EmfcEcjgTgWwmzZNY#rP#7YdAPg1G5Y7=U6h0zcAzUYn7A6Sug&zq&7ZMRA z5{Z08deJ12S(G8l7nO-BMYWetHfIIaPcVd zIPrrJcbz7lBYs>QC60yIt3!NDd{+FS_zUqj;_t93X{&1Gquc<%n^u}zRY|Nane5-!u-t&S(a6?GuWl<?qg4~ z&p<@|1$tKBG%ASzL z$+kmmvP{-1I|k9mcOmll4a6M(f{3FJL>$#}y?l~IG5Hg6qr5=gChwH* zl^^!R4$sT`;RkRqIqys(4kBDpi%Is#LY8dR50&7gaB* zuBcv9-B5j?`dsz3>U-5Ms@p1}7ORzNy?U&Al6t0kv3iyIarGv3oH|);SLdpW)jQPH z>IQX-xwc0zXE-rZBl6VcH3l`0Jh{0XVrQ~_y ztKkUMvm}(L;eb+BUS1YEEQC?xFs$c-U6|qX< zFzU4&ehA)5^#I3DT(^wQ%4_S?UlVt>wRP&Q(VcC1S$Z5Pd<4c%;@DXX>3@*HFiG6M znPEd2q8iV!eFqNov7;FhIg(-f%m+;D0!Gh@=P)e1MK^Z{rb|y@SaAuA>=^{!*fR>e zqGuSax;u_a7zHpRId&owJWv?H1=EESfCRg8+p}S2*}1vd`eowm_S{`Cvt8}&yY$3~ z`yXN06)+xum%YKcIs6;r;zSK)#dRgx;*!rfSG+sEm0>L~ZQ>xr6ZB>I)Ek;`3X!Go*{wbSU@{na^1^OM8RXZv**-wpjX6OoXin2v%D&g-hwHDxwux8_KSGonXlYbvXE)K=Cuig3XFYV3x<|;Uv zo2#3pBXgVI9kWx*l0V5QIR50XcoB#H#QcSI@=PyY`0}G~>F(k?cwmkf42Ht34F5+gaP45^#VZbN{-#dyvwj4qAGU4 z87%Bpzt52`$QL5g9?H0Z5pg?>q5dq#{sDr7;US#M6>_2TZ`^F-*tgfbv|tm*b~|2R z>N#N7Wx%a;BXGdARU9i`!m!UXz!ota84f7;)9}Uc<-h_r=idm`vEMT~ccd$_lfyzz z?~ZgwmT-fr%^aRdeDDKg_IJAW4NdEw(2&KGNCcTlu5!fHk zSdSmkUb)=R{G$HT)wj0(x_w{if%1bD9hL1n>pCS^z|`%|Z!O#zcQ)!|;-?b!=8YRS z*)7~1)f^5F2bBS%Iyw9RUvfpBU_j<^7{_kn7O*r37ItzD@p4XonV0NijLuVGK?U8u z0-6M?0BP4jwD2OLz>~O_B$@GID9y>nt3i*9=2+q&n_0a108q#-7;s`W;|5hnK-IZtVYuRE2LI@q zHICB<4}LBLy?aju>)FA6+{F#4=rWGnPZsL$sKjJ0evE|R(lQ-MBwIuo>20P1+QHNG zfwsP`bUjJLTSU0D0Y8RA@LbIxsNRKSGrpfVKrJ2Q0LAV|FN*O(;evx1PCl=?wmZ*}4`O1g8)c9tLWE%y1$iIx_5gLgP`FFLxi@udAW& z&s;HvNVVqe4UHN4!rH>R;<`8@3T!QJEAJ?m6hC>q^l2?F#y;4Bx9C}3>9QmW2a-o{ z4Dr=(A~WZ&TD~ARD?7K|Dsea*RhqQ=&YZ658b^)xWc|s;W6gN(Sv>g@d>@ub%FkWc zaY5@UagD+!@n3p*GJ`p=2NWL530N8!AB*vDHWe6M)CIc9S-`QAflJ&fE5kPJz-t(C z1K$uel$O*LYk4KkX0_#EiUTXa+Myp%u__kVGw#!_)6a3_v^!Efh0*ik=87bz=~o#S z+yH(A4kUJ(N0R<9ewV|C!TNl_>4ze52cvVTX#5#4L2E%yW44yX&ydA+zE45U5Cu)?{#u;@WCx#9!y6lVSUKr98b;^qRuyg)JN;(DwD)8dL3vEpffRu%sK zJ#OHl>wucPJsQ6+CLOLK5th;*ZLf(OJ)3uL)^(ljJ@3%qDd3-AA?=E0yBWM2jO6sF zxVWgo{QQEtOkNFS*R~b3S64f#wFm1C)bDHj^~qajKD{g{dhv4E6|E}>zlpQ(F&3{N zd&zooRzy@}CT@XoaBXvkv!kIksJ5}Lv8GW{OV^avmNu03MhD_hQZK^QG}v#TM+7qv z3C0^-9F^KNll+8#a?gaW9-BpiK=+YhSe>=oQg1H`vK8gnw`<&yJgI3`O~eUUO#jJX z1HJ%i_*=3G=i*KHVH$71a*Xi8&-%-Dbn8g0n8>R{DE0 z%_ckp?t=?r2S)pv!*CHl>~%)$*bWnX1uO&@@S55teNS^o&yyP7U+VYxOZgmFt1xb` zKc8d&qaoc+mot@P$8rCweq6KI{h&5keEKl918ZE+u*sbKO%FS);#nOI4_m#*V3mOP zCU~>KHZh-m`swul`wP7!Gv9)(;r%ueNSxv(Za_u915Sa*wP4j3uy1W$Q$s^_5PplU zuX2{vR-7lkfi8Q}8jie5FT^uN?3)a4C|UK#9BBSoAeZU`FcB3aU}y1G33~1$*>Lo+ z>h5cz&W7D>yR@#`bZ2v3R+&D1nJB9)GcQ}~zD;KpwRJY=S$vjpHkKC8dTr^4{FMc3 zh&426B8{wgCn#wr1DY{-u#n~v4_deor!y60W%~8&=fk)yFs|A)4u48Mb&qq8BmZ3S zr>=2)JAc))`#3xfUK-5MtDL(Zh!MtnkdY7a=AgB#W0z)ELq}^X0JJcagC)mE797Xe zW{zU9V)U;>!HRY?HB~lgTUu)Co%&tPtsS+yv2!^SShu&RH@#iL;>Vby+;|$l2`mCX zI{X#a=+tAo7>{LiKhXTE>48mLPFC#VuuRle?`&<;faBR*-dxh4D`_aKDc<2`i6oH4 zkvN_)!#u$+Aj61!0tragk8n>DS!m)nW(@HIr8koKffW=0`9LA!KRM8cDz>$`x~56r zP*+{2-61Y4E-x=BDk%tZi`-9&rno)^MWmU_y~(j}03tRpz$N&chqZ<;1=a?`3$8DF zi*vAMlMXt|&M7S@U_ML5*ca^~G8c zh1~q2ybApc^05eX*7ssC_0vV<4Y4~Cx2xR`;JGf(N#=@J9QyI3idwz1usWxtVD0R{ z@{;0ma67At>q;9X4)#0{d=B2i$n#rwm33%4b~Ws5)w2Z!Ic3?}?3{+y0zLa=PLI7= zXKS{UXJvvMfNFKZGAKTq2(cg8q$Nwighr5EWH-K#%)rTbE(>}&5+n~tCczS5->OGi zAJGzuB&;LD$#9&o4nuYvPIwj%=e06U2805}oEJf^SUj1*w;2qK0j!NrGx%%ZJPUJx zozGlczXFyWJkU%=-W|<2a5kKPA{@ei&<78C7JVQeyr9Aj?;kq=TBo6*uA#Ou2sHK_ zj@_Bx<=DA1h!t<=*u8rlr>uKf@dAbgvFoSDaFaMaHZkllM+GhiO*UJ%mBzuuR7o~C zG>#plo+Z8$CJQmnedv7khqu$Xax`Gr>(v-;+O z!p0med1fv7g`|^de~rgs`hhz%i@))_iVB1Rrp@A|uznO1SZNYiX+qCm;Q>)gZC6LD zcECxucI6b->c1ibV1`y)T>mOAdmifOpSAPsduVu?`@#2G-OKjde{< z4fsm@v`>=XTz9s9pzA73+iBO@)ABP4^=!1xnvs#7WxYKquw`d!+s+nA_g-G1_2V!Q zG+qG0V6}t8V0EKy%xI75i0X;$sqJap(<||%^SC{kA83o-onXab;|F)EsRa>JE_OC_~fCZr%nMwcG!E1bUPZIp#6BSpCw^* zacQFy3mF{d(QDw);LYI4zQ@QzrU%oZ_!`IlfMqb>V`agf{ zJ$GrSA3p;Ntc5hm9vCMg;cy)qCt3)qY5^Vz#{!Tt@C()8W3ihVa+-DZtET|v2Ay6k zvu+iz!_mAW_FnL*ceTSZogD;Huo^6MU|}T|>WYi1i?z{J?Ae54QBesAQBlVd&YnGX z?5vL6I-C6Fz7wZ$h)E1S5rL<%;{V4OM|MUYiGrw!+bLRp{{6U*fRQ@51ZLng2LIq5 z(Y;rAN4^Cd!}`|Roo$*+ThFWodI95rkGIC%MG4Hlp_JmcqsmwW1F0{ z4Gk=rLrmZns@VlEt$CXzKzbHua3C9i(w)qJvl7NoVGHMxEDOgbFv8$L2$d~o#H=`R zU+PgEM)c8r`;LMw=J0q89={rM6MoknW1~!`^(jYtGN08xyJz=7R@2th+*Ygmw(E_n zCqI+0-t{6@!FsWssM|7XbS0fdodq2d_E}Dz3G*p}vw_(UQy1BLF~#)s=-Dz!Sy@R1 z7(f-Bod+6w**NfyW>ksXO7YI@y*ZtQEZF_gFk?IY00bI13^o`?Zh@Z`h>o#hqWE<* zR)AvrfN}7uONGJvBo42|83WO~-+}jZvih>JijrcD4UZxt+4{e(HMZ(&YpQE%HEdMEF%R3HJ(du~=50&VB(|~Q z+2C%0nx-$E;a5BqSbPDSU*JgJSpe?rt`6v%?t{fL7(zbQ3$@WAlVWmyN2Y^NNz#$6G+j4{5Bwe_}h&9 zpF{z*C}0m#LL9#ksn#L&T%>*r4LgDEt4H@;K=*xy0$CKup}-X=Fdqe;M1ceaMWLY2 zkVcC%laS^qq%B6lD-b6}TrA>p5Z8>j=MncC(kYQH80i)u-A1IdB3&=ieU0=wq~D12 zg(&1c6k(D2XDh*@Za8I5=!-9HE2e;kbrMk9;R$RE*2f<`IPsCqPd2^#$; z8uK`MfI?%nXzT$rE*gywL*qY16K0_a4m9BvG~sVF@i=;LGJ0?&dhj%Q(1j)ip-Cn* zS%fC*(BvL8WhI*WJqis#VdIe@4;flexDN_njKZ&>X*1EZ5;W~Hnr=fgXf(r!W>%qD zlhCYqG^+{C4n(t`M-Q>+;a2qURWxS`n)3~sn}_BhG_MoQ??wx%(ZaoG(FL^lJG5j0 zT5=RE8A6XNMJxT$$||(-U9>6?tumw4zGyXzR?E<81zLR-tr>yVSkRiQC~_})d?i|Y zKU#Yft$hlueG@%#KU!x%>o=nf*U-i(XyYqr(;Bo{hc>@~wlHW*4~mLFQHxR3<0vW* zMeRXR-=HWL+A2a@m1yfe6g?3|Z$dH4P|OD?<_?P8hGM@!agQRS7#WLEd=84gjuM8W z1S>KPN2Y5iF#si|qQsZcwvlLC3`z<{N#{`VHkAA>O0lDqkC9n`%oC6~8ksYZxf+?f zk@W{r6QEN9;L>h)LfL>ind3f?eoy~r;xP>S+5|Q8QD^i&5CR< zBD)INCnNg{DD7F4o{BQ^P{uBlDMgtDD2ql}>rmDOl)VMzY(+V{QO*}AcL~ZpjB@`* zdEcV^DJcIcDhNRZ6Hvj|sL+ZEuc0C_Dw>0ea#7J~R2+zkO{ioJDzTxGQ>f%^RPqxl zO+=+HqcRIBbD*-9QTZrTUWUpqqKb!5#ZI(CjdnbOcI-ww{y>$BQPpTvbs9M`P_+tG zA3-&fQSAy;w;0vcqPm|^{Y+F}f$A@y1`0KdK@BTWqYO1(N6n*9YbDw_1?~I1N@Q;*JGMNiK{Pd|sAsYB<4=-hU6-hwVXiY|PDF6N_)XV9}N z(X&6I=Q;GkM)cx!^zun`c_zC22YO{Cx*|qb;P)zeH3wZyLf2-Y*QTS_$DubSqBn}r z8*idFr=sh_(Di6^Lyc~1LH)PTJ4NVS33@jdy?X(@cNo2&iQfMReb9tH9FIP{jXt`8 zK5jrC-$tK2hd#T7zL<%=Jcz#RLpSr#R~Gd3TJ-gC^v!+fn|Sn11^V_F`feopt`>ba zfNoWx?=PVrQqhld(U0fRPm|EkLFnfy^vgHs*G}|X9r}F~`a_BScn9774!I7Z!AA7A zgM!U;pKmC^QcCa{C0tJl2Pm4R=tfE`r^Kfy@f(!Hmy)cae8VY5Mlo3w^E}1ANJ;IK zY!jteO!Qqz=rD>clIx^Faf-%Tp$5~X>Z(k`L28I<-VD%ePIeU$DM zO8+|*l0yyGQNy#T;rpo(8fwHUYQ(G5{ky4=J=CaTYSa~Kw1FCZo*MlLHAYB{p{X$v zYRp1v%s12n-%w+hQDd)D<6fY~OR4cG)c7uH{MXckG-^UA6`DeYzDI=}r3_liFqJYa zp$uCnLn383M}>z{(^gQ^FH_SA6|s?;VWnoOsF|CoSs~P{<a!)?cDFh^YL~2Vq6$M|q?W49nOhpG!(NR>)Nh;Px#nw=<`>EK= zRO}B_oQ*POQSnQt`0G@{L@MDpWg1DDUZ)a!sBJT;Bm#Q>9TjehQh#erRBkc@5njNLFaTY1X50h_=>xPSd)%aXP|WYUMm66yU!rr9D+YfJR> z-Lvb-J$i@u!13#skLtd^gw_3cjYi)6pM(7Ea>5+bxL`78A_sooLlC-=<7ke84Isci z-5V@gq`t7i8L#8xj`1ssH<)|OT^V}#6iq4`a>62~i5v6;PWvJ9F#w;aiMqOa4jh1C z(kWO5fdemC4wMX0^NYTs;;J3R;E58aC^p{`AFa8w5&Lli>%}lyk;r`%D)JBqcEUnc z2HnC8G9fNLn}Hocc{jMg(1KL}yNuh*9PZ;IW0l;1Q`~LqN!yzN+ebdIH6+A(B9SbA z_q&Jw&{o68jemUi{?&K&SdS&JY8K-AvCrPFo;}^Yk|C#f@R%?>f(Vwb(-F-Gq8Uzt zhD)}t9Y1NIwu-Kz7mok-%vwDO`jcqj@3v&h+iQNtv}OUsLCTmDWl>h}a*wOG^V6XD zy*B-wep~_ggPm0|5)7({N{ydjc5^`1RI<6LR6ihe{|rIa4v6E)@n(33L7DnsQmd^_ z=dS7}X|9c;-No5^>{=7!dYlxBN?Y5?+q4H-d!NJ$8GsKKZilUm8}10V3~zMH$;N(H z1i6eax@NqJA9V%bN8JIg87oA1`z!yy^xCrzdL@6agIyaz0)y{U`*GEDrE2NT4SP?K!byyG18PVGtn1-0Sj>BOsX#W@p4oZ{LRPSbgZ(ca zu!r*i_COc`9{oQ(!Rq}f=1%0jr|~F0#tYr9hS0?Sy#voj{x7V&yDeC_m%_4OS`K1U zF}Oty!L_VT9SO$4Uo%4^henZe`25!l35J&G9KJ*DK-@AI&*k>+ZSL&UV}Khl4VXlo zoy~jqYC!MQf&lqIr=SA^@V0y1ox`5vF4%v^Am{i4pZj+VPXjc;aQ`!urw3^N@7VXo z<;Bm)fliQdo{LlEhLF-Tp6DcfH+zNO>=ApjSojSex*OK9Net+92nj+Q{qSta#nF2N z`EF0VD62mA^yBtK3?cu;)en!{g9X`k0_*U)=o+I+^=yOT3Xo+xc><5tJ$7bBVf31< zkG0NtFPdd;N_xSl{q`Jw8RQQ zp@N(Wea@<~rKKyAi<0xrxkUF@U_%N2U?S0y(c5hL^3saZVhv>0G?eO&Z#lN*=*FCs z{FI_3veFWmyQ3frQd6vANJ!bWLx-28HYc`i+m#fQxG6p=akHenbO$_JQd3f2s(b3u zw^m%*D1mrpg;VQ<;8UX>5C7{x?!kgXMM3+?a#40oM}DUkTOnNB+EJ(Pc%|XB#w&-K z5A8hA4*SFiY!v_GQLM#d4)^LCJTD9_WsSP{rxVU5Ug$W`da&g%Ua>#0qqeoPo#*jr zP!XOO##UYz@W*wK?t#ZIAWUCwj5Vs1SVzABijJjoKWp{oHvEZeFt_fz2JRyb<{?_Qe#g1rG z&`_-Vhy23I^p^afSLfE3HB~fK1v#slY8&eZmbl&t99ZIhM^xU>SlQ&+H*TtKs;h5! z^_@U@J8;Wi5V`w;8_v1HXgTn{9h?i5>$EqD0#_B(?O;I$?f4`|ZWDVP1DhVMupiX- zb9gN1$9^1X*1CKSfTYRpYhCv*dm5Z~kBy1*dAFnghwE->m@)p@X?33pF4oju^u0H1Q8 zJ+r|(I>)%x?^W?GYEZuAS7SZmS{^# zc9fOs$qjNtR94Cd5J$lVP$anxFMS(Fig&g)wbtv&@2+kG)15vDWOu&+7{nC1pd+o?RhoWXq@mU6I{st&}ET0kEAkgV6@A`Ui< zl7EH0h0*%vosQiFEri25z(H{>XsD{z z!WuGyJoW)ur*(_Sc~V8NL0{?M)AQPLVHbBJ-QMhMtJm*3)q0}$qy$g+4o7^87inPt z{|%wv>-m|N07Gr&x*=qI_ZY+Tt4aXc|Mm#TrxXrnJU^K*JM|g9eD6m!q`K#T_QT!) zSOYUR)Gvm8p8o&WC3M3g0$d3kNkP;ftVE;$)(1{CFwkvSQiyT?c-S;af_-OPMYiBA z@G5YHqY7fnNpFEm3Cp49V00i}BDZ;O%t^a0n8+cAGzmE3ck#)dy{Dhiz#Nus;iAZF zkg_S-WOIF+MgJOja*F4m3YePs*fJ8J-=1&Iv*k!K^9r(UnxSlQDA(Ft+t8wW2kY?6 z8{pcRZ$jSIaxGBU|Ai}9q(9K!({@}V2mR@N17Lrc2*m4w*#&!<0iD`4$?cDSaX$fv zKl#NyiBMg`Pd%XP+JIMV6A|jb&oeNqO`6NO`d9Hg0!iZW)7Q?9(l2fmWxiT;?F|in z0Y3+^^h@Klhs9OQVKHWZ{uomS^mxUQt_z}5KX?6! zDUJM2!C{ycUkDNuERMpgf^@~4T%b#*1h)g@Y!*^;1t7)!c|3=T>6 z!{I6ZOP3o$tlk( zk=XKbbIh7h&dDd>=rG?AbckQ!ZLb3aK?!XC={?iS%fP|^R#eK*TwoE^_%((eR0;VD ztmiz{JI*^wwMz+ZyiyDveUlpCAj#0B8s;qwsfbfO1VRE?HLwiyJi{;E)Q}nlxz!1MzQs_$-D-rb$PCq2M%_0Zv~ zhj755?_d4?&|x@kUA=Xc|99x>_qU*WRax-&rK`hSNe)+{%cMz9ccg3Gi4ONRccP}d z%dtm$wOU=y6c#xO?M$oF(W1Ro%(XN-nzeXJG1uzE`6mBSLV2kM4b>mJg;8RcD{xNpl zv-*Lkp)H~wTN}ThmAB1q*TG9~6Pb=aX?sq4^hjGzuijPQD#UYOqZ*tr-~!GQsk!hO ztX>iZ&!}^|(%bCL>MTb_Sthx3#}b%OxHUaqduI|Ixv2H!41LL-YG+fcq}AC`yHh(b zKx5^TNAZK_^myN(uI*gex$Vb-`mE92o3ukUbar-mMYg`WmMD*v5H5N}P>$V}QIWYL zt2w(eyKHUj1lzXUjI^Rsds$Aiy)wOglWA(|=Ax|3yz)#*d3JMJd1m1gi8E5x=cJ}* zSJ)~GocUEbRkn(Z%8WdtBdTMI=*LvmOh&bD{D> zZaQ&(22iIzc!XQF)dYO1cSl9@? zJ8TOqi%1wA4T-^?)e%sw8!|J3#f5^w$bsANb%OUBg?qUq_r6|$>_D)C@a@7tq$^Af zR9y#-((BgQ&o9)vo%F)lk3VA7uLEZa?rdQAgxhpRm%z|VIX%$wTW$z);S0y}ulM7G z&s~pVmd{yI9v?^?G^&-UZu#4fd^`8@gY8_0`&ztNNO@ zu7)-UnD}O3iMHBV?R09o9J{M_>((@pF}3e&PW+17pL|*8T3adVh=FNdOwh!yElq`F z-}@}09owt6Z`ag;0lBXQew0|5gOyrmH6(TH-T{YhQ|F|HZBOR4puPuK_ zl*b>&3l`zUb07~m+GP)fghV(bYw0;OIWlA-MQ(RA>|k|GGzV4A5`pp}f?ETIpIqmE z55PA3mMa#&N1E{0N|)=ocD3zgCth{^cJ-fsYMS?-aU9e_a-^n&jQdW1WNp*Z6&m<# zH4+g*IzY_XU;U7)#90W?h;r^=8!Ru zl9+_}>V^cp`@|iYx)CqJk96S0H*c2R)Z%CG>#)Q7BaSDt0UvA5z|!d&4t@hK*5I9_ z1|yQLQ{LXPxq6G16p`ZW3R0}En=Vqij#S_=rR`=(@21K-tJ5?~>hCwL)~(pSv}##S z<-|aUBo6;<7wEY`r*bO^5Z2%Pvi&Qqvir^JRaMvZRWDu6d}&X2?H+B@k%l8RM^-ei zXk6J=)frgv)CIh;`TQl^d=0mr$F0pT)nDH8{G0pwTdwyu9cVmQcTiF`e0b4tEx1wl zH8&8oK6B(NMQ=2{kP@WaY8BVcB<4Gb`HM?Uh4FUts^mo_%Q7U&?(A?8ER+?v4$Na6 znTS=y5Bmo=FzX7$Ed#AsrR)o)uY-!8Iq3X|KHIjxFIBI6g9PC4)V?T3DgU8Hh7>YSok+S#YvRAU#WB8 zP3MnDx)1!d>$r9ozOOd7P2ZYVF+WQ~e8pr-1Me+qme-Qrv<(14mm9%{QeZ@E0Lp}A|yY)4dy?8BmvJay;j|PA0ORR=a z1ncU=4T6t@MFlX0SL&QSqrjehOo|je~yNqTEF6@Wc?b4Zyb+F`UaOgwKNRb?2?!>+bHof4YPE z0{(%!KXU$~4?gAt@fK`XV+Ht!Lho-UKPUJ)Ox?*q+ppdq`8M$A2JPx67*Ed5X>yv+ z*(om3l++eClnQjC+hIAL6?&a-ioS6*3ayMJhfdx|d&645$VpQ(^J%R;k@#uxsFSJHa%B zdD4$aWCA1p0h}FArWQow#o&q603%$&KSOd^609j4!SLB!3}AcCy+|pZ#R>4=!$QDU z`iuVN8(csNM6Lw`AE?VJ%gW1j?vw75qVjU6X!DDmI~!^m>g)BcldhAZ`g*8ncRGvn z^^e1sJVX6M{UUx!;(`8wei81%{qQXXM+$JhsMofwEm51eEzf4xlNls}-|fIN-~i8I zr~o1=G7jJ5;Cqol2!Qb}Ya;UUt*iy!QMv`_6XjU1*?P^yCYT zSFdPb@ea@Ypk4&Vs~^Ju;Hrl({Jx2k6o9^iui!xCtyb3a+Y{=gj856Tx2d*2ew=5k21>|Szd@y-lMYetjJs!^`yz0F@!Zms)Bx9%gd4foE#J(4p8 zG2Kbpq}cSW`H+*_1A8pJ>t;%nTi4G_o;VtwA&@mmAZrrOT!Rif^kQ`(gZxG#Ex$O_B*B{J!f~wX?V?x44-6PJRz8F3zngb{0FU+nrAQJN`Y; z>1?ld7E3;If1}=6(o#^bE2z(}EGk;IED%_?q(lSCaRDS1)9vk*744uHT5Fxo3l{<* zRMA}7QrTSUEUuI6ijQrIg_yuHX8d57dMIotOhkZf#RFjjVIn*kPgWm4?szr+IPZf5 z#vfndh>xE%DUcV3Z@(4sL0HI!g2efRf#=~RAoz7wy|dUmmAs1L;+)*9{ET8rVOeQm zfdh&jjp6e5X>ruY4Nb z=l8p)t*NM}uHfS}rKS31%Xr#NSO)qJkyqz(x&s2 zwn^F~ZJMO%JWrI;maz)RR3=cn6_1KTJ&u*N)0N`)th8{v_n!Ove@2>QXYaLF zR`y=&9iHcT#k2d9k=<4B3iAAYK44chaPlwvM#*{-dJ=p;leyVbUF0EaT^*bHe6fS4 zL1^$5@JDpNg>TS6_qXn+*x@}1?gSi;`SN8PE;M)=d_DMs0Vdd#hX&mVuwoUY1J-&6 z76|V%&fi8tKtZ7{@g_zDmXLjHiFS!svFk;0A2Hj}j=6Ff0x<00zJq#PAcgGSi;N_x zWq5t!-Dw3@vSi@}Wr86gHI*AZ8ic?%WPaqn@n%dv3z}4;V(*nb59Vi^& zKhmM=q@;hYhW3}xp>KiQC|*Z~Vhf0Uw7>W*B)GAO41G&V`zOmte+e17j?pIHqC>Ie zB@O8>Cf}07AZdzMkWhFk6KLphDH(zWhe&AX3WN?Pte~M%It2R;5g(_a*kb|-U4boV zZ-|719w#{JI0?m3t2Onq?$3nPjFX3GF<5x`gV%m^7#RkBo*xDW4{T$vhhZxydc?a8 zTiI*2jbl6DflYXcBSj>X1R>ACg57!Ut?YJs@>g~_+;N8o#B)?lUza6hJ`XW;3X!BXx2Wb@gvoZI9!iq4E{8b{7MF>$Z4?2%%qJB_$_3?mz=Q8vr;Kc0N?drjQI)%?7ut{JQKly{TE}v{!5t1 zLDnEBwtqVUuD~`RL~wP@g{fQ*qPIuMQBiGeadV3b!276LZt{n)pF;cWrzpOM@8Lu` zvQ86HqvPCsPXO7k`RInIw&wm3H5@%k-WDN&^1+b{SNY!aVD4?hH)=yxp(Uj`s)p;~ z-TZyKEHpVPil01L6r}^PAf#5ufyVi^2z{Bl1}I!i1T&7z`+((Z=uvu96vfV68^wJz z8JO)RGDd?iklWi@Z4o-n!k?34`?vXv2V-pr65eH2;Qg}|F)J_yRv^9w?`?n%7uH;bc!Bupg(Dvzd?CT_gfn}0s^vfWNK{i>+{Df`*@>Y!Du7w20F3}t zfC)AP3^7a!pv<}i7bs#bWU%Qi&xi%!4)FZ?$Mp!!`hdg#J`FlY6lT@cWkWErpz5Z{GHBtD}$05y-l;G7eNGbtDV4tn{5zR#8%Sm4(>J)4Yu2t@u~wRzl5B`qlQvDcv$(K`CwU~1#F3}TUD%TvUT~2W z%G+CTV~EB_tXih!kQ4Fs%)Ck0&ydpn&rt`BrPo#4Y}*{cTyAXrlJo_1#mhrfF;1f^ zfm^++V*90kULfmEs1J3{PCUkMzw=XKr<#l)!w+30Y97IK4t(1+?WA2=)b708&LZn2 zNYci5*)TLvIfY?c`ZPaqdxe6h)!n5ecc>n0>)k}oWm~ecMSJG%9XXxmd9=YExr*K) zdODTtrgF}boof+=UflNG`y@}$wg_?ntMDs!`;eji1uYqh3=HN4WKAZ~-E=nnP)$EX zqq7M%@IR2J$Y8`&Mtv&XI3s4lt4ub4SYJ>2M2mL^wlJ;zZi?uU4dM6b> z_Z-#~h?aZ}7qu<}X-1BmL95@8^^~Y7q2JK;m{e!;sWBNku+Z{ARpaOxoDLrlq9%lV zL)MYAWHw(|l~)543;W>=_q!^bBCC~j+D%O2>LFz8|LPtcat(Pu>3EK`3-|8#Xe5=O zN90ekNLgUaPjhgEG0&ZkSEr^K(~SJ$XGI0`=Q`%G1mL@LEj>q9@F}r|$S75$GpZ<- z1IcP88Bd=jOU6jk5`q^es!|W2m8Ah0^}9sKdH$yVVXWV7&J?AZ@lMthEG zzh{xMA*;dEz|m%pMMS1t0b&1TGFK&NsX|$As7k5kSfKAw@+f`e^V!tLmxw0(FziFj zBBQ7YN($5I;m9e}*B6UR4VJfPvW!1?GgGR&q`*qNCymfhzpSsI_* zcbgZNfbEZ4oGz4@1(`C%l9bkWm**Gp3BqcT!RqJ+ch~|4-uymt0Wv{H+l*)s8wH){{p@HGdsk3}Dp;*w=nvnT<} z%sTw93~Hx=LBogBKpN=V^BftIW=qY?F!-@-jlqzm&rbIP4JzGb6700emloo&q)n7< z&a!5y5uD+NKZ{&>I`+y2P9@I-3vGcfQet*TMqXyV#V^|m9zDV@d}k*(PM|sZEg?%t zAs$U0J3GK-_OsZSu7cB})52LG6A618}Rgw!_#( zB*&|((bV1q`zsJ116$;MjlAi5$Uo(2+6NP-tOt83G3~VixrhxN3>*Lu3GM*wA!vJa zO16{M?S1ZjpQpKhQ18C(uDzNdGtPTW){dkv*j;X2&x1yL+j7d#cpjD+LH9p*78LCt z!BpuK@6-exK|HM!ibQyUrFtpiR+r%K!0cnDpIze~*?mY!o)|_S`<&&>b%C%j#bkIp z%U_=74}IVI-Ptdt-Q7Khl!Z8zgboivr12jM_>IqP7^xjArA1^83EE3es4Fd_fU;sa1SV*wRGXeqs!6CV-|OGS`$k4uH`GPKF?*@c$760Cd^=A=o(%W=ONe@h;#l|gzGLAV zzJz0$LkF);Xn;M+0%N_+_`z3<_d0m-@cW-3=U8sdH6Tsaq;zKGWjZ(-2uKKM;s9`Y zIuH%e!bdJKm82B_PAMov#i{Xmaq77EjO0{o@F+xSdQ(yoBwC2p6DWqi5NX=9pX&y3 z+pQ1+*8n{r1d8E2)Y%Vi;ecM8p)uGp;IFViiUr!(Kya5wxD|u%1Ll|z5x{cY|9uN5-wkvwgFQf+fX)*i zOEZ6p72PGy(-2Uzr}wmr61T6Jyd7Tw5$X>$_eO~GD~o|ksm-V{)o|Ur$v}~OTT^ab zLle%AE2^F0Vgt!G+;#PuK0+XKjDN+V%4R9a(gFA<+)^G{R`%}M<}rjPR#k)6JJo+n=m0ix3KlG<7o?L>}d8xnN&nv873j_nTe4Lk z!T$0+-0v{jo_~={O_yetSjtLOMEd>rM0(*&G1rmu*4o4sA?w%fe9LjD;6Rxa z3*3?bje8y`B4H${zrW~FlF=y>b|2M{`DCQ5YOm~F;jQn9;tDw_YiD6{#9HywGkX+w z{!IBZ;BNjp)9 z+yEzuDWWI};!;A}4Z|p21@$6GHxy%X5i^i#6}ts7+iG!o@ACk62Y!S)P52IH;ZCk_ zr*lWR3UXv)zpR$+ZZM?QbE)-)hTST15@Ez|d$h{kw272LzOGl>O!xfrx}D#@TouD( z^@KSj`lPE3r}tHna5|hkOT*}`zDF3|4JY9QK!~&5i)G=fBQ zc8X%EZar78uKD)c8XnWhdRb=7(HLeoAj-|21|bmYl27c$MYIF{gvX_vzHq^`=?l(X zhg3_q%jdzne`@5;_s=hw4!sP|OUmN3qGVuHN7SS@r0z=D<=1eqao_HPQiw1(oT>&Y zBmH*Pa&{x85`;g@Ccsl=FGLka7VOOP(}6KjY)0}{P3MY}Q<=&|$_kU#v^*j`GA%NN zO1|;U^&S`w?Cn1yVtM2r;CevyCfCR{ZEoDsurVc4ADOX}J|E?aV0coBiq4TF=cg2# zIWi*3wWBbiIKnS{Q`na9&C*OG(08hEA`7UG;((<@a>tpMgDeJ-eO;Scr?1cOs{sKd zIj2}(tR{2C#fACBh%FztpRu3Zl~aRtk~C=+Ysh(xd}8_fpVKQjvK#S;Y#(fvzqVK- zPsc~SAIRt8BZegh_Z^qnJ_;=$j~~&?xK{Wc3cz5ZG-TZOzauy^UWEjs6@UYFsVfM6 zy9;odHsRNNgD6H4#TW#&m)hk^tH{?fM&_3nw!x{1(eQE1$ltPK^ePKi6;-?{R3+bG zC!1up_?);n;E7&cLq#0@2d;H0-g|&P#8)hSe%~T>s9Vt_MuRuW!(`I=BYfSS+C2@s zfBZFsJlB3%N;EZ-p=(8D!^hFTseoquMZ;R<@azALavYr|ZhW`=!uzWCGS6?n$o;tD zsr^IL!J)};x}SQciM}u|X!C|`>w?!x(aEq)Ge&RPDW$vE?bV~e-393fe2s=%VQIVh z)wsre*OMpI=*oBEePZ&OtnP5pi4&@ttXg9=*L1Ax+)o?+Vo5^#}{<>p# z)Sk#a((`L5#^F_Us8~L)4MQV2`|ZAp)BFJ_eu?)I8DNe0po$Fma5;uWKF=O!2112< zQ&+QawF)PWGDfAwa4n$~8&|19lUKz=aoFc=OT*|bfLL0TIP`qNxzJ;rquN$mqrxdp zq@0L6%;gkkmlUhoW7;>J;Or9l;Wjca8^nr!be5X>i0MfB=;q~gD4!Poa@YoZ`_KD-JkIaAkbB{Z>izf&VefKe znwX6bNALp@jvv_bCsUvRHVzD=4u8>YrB$*`CbCKfR{4wic_}pAla;Wo=Fo{*S)Au% z&sonW!a0#Sht44rNsx-PkcIESj(&!`O2^JQ#npzNu-5LDzI%$i3LE?x_||0MeAoQcp5{H?^#~ROE zBabi#U;H!;<~>hHNLqIS0{(xpsg}Wn0tW~>M3b>Fae}r;hP4UERd*omQUZ?m2pL6v zIl(1y%9!1RyFu&~&w}m5dtjpb(nsJSzBmR`!_(p$o_JBBtw>+0#(HZlEh;L_;Z6#% zB4J7|CKYEq1D`}pM;pWv!^h^-L`$3fk#vw#p z1K_Im3QPzc43$q5iWh}7?#GpMc`JYg{{K>S5`4AMO?2R!&vV_ENQ3ejpcVY-@(tXZ z-!=ixI2vF^2tq0F7!8Ms`97Ww_&lwBJUWGhE+h$b3%Q)c9a^?OtUOuTwz7D6kSZt? zZs_o!;T)u}+#RpT+9jRC+lLPiZEtTcKGAlJD=*&Pc<7{*TrMFAWD8@rk?Kp|mAY55 zwDj}!2u9>#qIC@rO3ByCtSn=;DK|6M;>fYtYz~V(GdDBaXwH&aB|BP`Hj~wuWyb3) zvneOjo|S8L*m81n>}Ff0bi*N~B`ed41Y?fbmSfAdrAN|cJVk zw)jQnBfL26^oJ3=XVSm%|ErYwHKvBRawhHRTa=pMNJK)&3%<~Lw7{8zouMU&d1-OQ z)z_5P=JRZJU@}Y`?N1)__t_6`pKzn0IfdYi;&FsgeU1_ZV5M?rfcymnxKrILl!%qB zK(MHEBp3c7^)bAF%*ud0RJ?pu^a{0nK|okyO#^?p`pu&%xxMOEz2B+jrU0z1qLt*~g9lv))wy=7C6|{wC%Y1}W8>DOty!&FTo6&Q zk}KWlqW`rD>qL&ST~GXU=Q;EywJE)L-;w;IM^wLWxJAX>rp;-aAzURoMjuwoEtBbh zp<6aQiPi#M-9B#1jHOblr!xZSdvw1Fr+umJ)t6UCuV1A?cSn5m!cW|ZW4n(LXc&eQ zvHExNU#`7BfmI5VCz1S4zQk?uBkU7$T_hgf%7Bb0KH9pAS8kRvCRf25N=| zgVmtkIz2HdgkKR8x+rpuG<1I4yqT(z2gdIi$5qeWHNQpMMJFPBxSmXW;!N;65f`JS z+i!od`8)M{7b=?G;g8gvZK^shEom-&e;`uT^jF9ZsqWo~i|?tf9V3ITG;;a1 zCkyM3i!H_crK4xg9d4HbUEqG094B9r-TeV*d1pZPB7aerGB;vm z9_^>b6!bhu6b_z-L!ep6B~Sg-9?QM?_|6F#vC`v<8)uAHfj}~I7M&EwHAK~}o;uX> zVx%gzIO?F2BjOIA-uns@I-8h{wk$hV2ph;fW=EFIWX_cC3C6?? za*y5QusCyVxw%fW-DEdr8#1$`jcb&dSs6By)8w?~*=_dRysTV<-C)fyWlG;%k7Xb| z+u$@f%r1LwuH9w9OJh!YW~TI9q|$6m$C2qdMrRIyTP|Ck*_Gumn2pj)CZ*9}O6Srn z2D?**<-^4RXlpX4&gUz$jYea-Io+Ir1<&GiI9xgS2n(L{-&_t1zZRhi#^dPLD#;@< z9Sd^j`#O}puN zX^3rCWV4#6#pPvA#JCEJ9A%brso*jzJWs6GQGH=AaY9Qqk~ivCtEwOFhc)@o`h zp8`>2v^qo*Qop0c%n6?a3mZKfn?0XMgL4{owy2RAFE4chl~lx9Et9gW8YbF6{9|r8 zi(|MAB(Sr0%Yg1WhNc6_8Q3`d^`U`mf&y`!Fy0Wx4CB-x@ux2cIwct`#E8o56-DK0 zca6BbA|(N??r2Yp2pZ9W%3T>X8Fd_8F8n5XUpMpk6m?IHc*@Kb(~&4$?)goW5t*Tj zP|*&c1JUYZvZ`)1`A2^;SB4)KqOuB>Mh%3?&_Q(`h1#Rr0$>E9TLZ<@Y4n%$_4D-g zZ^w~>oOj8<$3Gu^>wO}b@M$Y(^A8^)KZlb;kV1Z)J}pJ84=wGHG2w2c@jSmMX)#$v z9YjQ(4N_7gAq{2VxE;56z;mEAPP%U z2tuLGUB)^;LtSiTq=U{s=G#W*I_nI(;>!KvD)oH?@Q;lMLHv}i(g#40f)EIxxRG%O16U`($9#`D&k?V06>O6 zY!^qQpEI&Dw$4cAuk>9)=Ni1b_?5@)GSoTA+&151biO09BDUV(S7+SiEU!Sajq^oL zjuRypRb*7C9nS1*2Vdu`taQ{JBlCU9+$HEfcJyOk%}}?5%=IPnkJULUE1h+I4)0f! z4kUi~ad5c?5(Ux@BjHw^z>lLxgbKr4O92A7qc*zqF1)XEuOHiz?DTZ3D}-j;s1U>%u6Rcgi% z38WL&I@gtK;4wtFWMnWCIk5DklzlUNOWXRQja6Hu=&l)nfMiurRnVd3fWI%Zm_&4u zg{X!wM&CnSP5XbvcY3k<;!pc8sp0am2q-dW|MLlai`%Z0e>)#Pt^x_> zsjAQ(giZb!ef_m|4qxTKlIEDA=)&kisjh%ZPd2D-H+|H}$?x1Iip#? zu2s_sfvorkRgp>SzFWY*9fo1uDn)0S!@r!dQU%|W^%T+tZUq|$AZjn||Ec;Sci{Iu ze-IxP8<+oZxnO8=dv6IkV8v^c#prg&#bw*#`SrSmy4C8aC`Vxo9~`G)jHJmEc!$Uv1y^DxW)D-eHg*AoM#cj>FUs|Od?cZGgL)9da zU)}FkAXb$d0Vse1*CqO_K!ouV*&!KD%8(7{3UT#doE{48+VU$GeR0cAmsG4A04}J) z-MGSVm*9J@96KWe*ffyzA6aazzgw1F-9m=pXE;WtH{bj$ zz54Bjde^bayi+liMCy`%_Ed}hznRh19G{RQ&9g)%WvkLnsa8XJhQ1&!Dc6{ybEYL1q(&#`OVTp!`ZQy% zF&jvLob19hn?(xyIMbxIr|6T@p~kJt$TG(#q((Lwq}kRGOE#aAYTp)9lx8L-Aiq@OCG;>^4Zh<8; zD=W*KR+!*OFEraCS{*sb#vS=7&X|I%-8(bmvrLAVJZZ8$H9y&z=-S~jRvJrlD$+}& z`NsIl6m_Al(U!&Qi#G1ftIV-Q!#>YV%hub|?Z8(!(hA~BqRr7MnYk62d4{4mtEpI; z12qZ!D~l}7Ele)3R;3lE7bQ7TTqfJrqeZq@Q`+0MLaEhk%~s_W8s06<)?2c6+2E#> zBxReC-pMl~iK2&Zk(INt-eSphTAW6^G%hKBcbX01EyS(Pe|ziW&NgYbBhQ+rE;r{V z6{Y9cGxM_Sw!Fd|Cwz#aoV-k<%aCWtv!E7^#jJP5q^4y`GcpaPj4TsCAeq_hH~UQA zSh}aUxd3?6e^1S@Kf(o0x zSejQ8npLLCFS1z*x%{NcLMNB+IF{xzx{M7OIqAJli}wc0GdPoyGhI3LY4JvU7qcVR z2`|xQ%CQtwJ1qEKDY?en^n$G1bg45TE3wAtG*=W@lBBtCG_zIN$&SRb9F!l4GiPze z^rW10Q*5@Suk)doVXAtN&bUoR`u6mPQR=hzGKSch>F)A9HED=l_QezwX| zT2^2w!Oc{VQoRMzjb%AN5#YzRJCPKG(`nClRMiwF=ch)d z6zOyGG7IzaO3MpkOHE}ahp|YXnOo`1$(B~+=IM*liqonM=Gc6=#CbqG6y!LJ&p%5C z&Y+qoc%C%XUmV)M%3mA|jfM7&8n>_TqLMy#>WQwUKE^Q`u&mLZPM!KuAcs`ZGG@p)s#dRFn^&@qw?*efN2^AKk6t>N`#tOXHSfJ5#hHKp{utm- zR3ZGa9C<8gQ7xv6{l)9<1>(in-nhx2Qh1}<-i?ds3uKY}wSIEQ_=@&3pZ{B#C?P&F zJyH!GN;$B68^}gz?x#WBtFf@As*($7ZrF5E9i)*z+VAA1hLC2is~o}JU%~ar>bX>d$BSsRTmS>HHYjtxJ=Dl-em`OG>7mpvAVSIzV>l$x(V6jB{C$w z@3*pnZe*>XW}MVbj?& z{8wW{i?pGWUscJg`%T*Y+Udm{YA0z>ExLsv3$@W}Ra?a6Jx(Jj^>#EYW2o17Gu%XY`{3UrRR{490Z7%C*Z17O9_mI&ASc zp7x*q`qSx88Yb+XbZ&`s+1VQr->BvD`hEYe#?!ZX^3eO&{^k13)|}a#z6Zrp5X~eH zUGa6JVVzTA>k?DjJ$~+@5H9@(MMewi;z;?!*Pgr^tzvoZ;{l!&4S$P7*o0cc&Hu2;Z z9N76<88$4LvVF@I-ZKIXY}vAX$`VzNS0Mt&2(7dgat{c>A%yB_rNK)1PuEaE>y(6k z@1CUez7jG3FzG#xA-@=s53->`AgF(V613q~-0M;@@d;r2fE`iJaSv+87YhuC6%UCRjUr}Za7d~ot{*Rc&FzRXj#-P)vCtLo;_~ylDY$% zxt=n2xoG9F9ha}F$m0M^NXQdcFNdu<#tFZ9e)qQOQdgZl+uQ1|2vC0T+B2F!`^)6`c&Rs-cu%;^X~1<&`W?;KOUpJ**iAo-tiYulLg^uNWduu3-EOzCl3#Yl)k_0iHQZGftV3p&-{xh ze%ei36?m)oX;9N26`^naS5{i^6Qf-$|_3=Fj=IEU$(sbvMN9< zS4@7Id?f*xvGqqR$on+d9YJtXf?rAEmFr?7Czt9cc*Pk15cc50hFq&1T+Z8=RQ=tP z$Kz!i;1B+EK)ceND2^x(E!$c)qj6#N%3}IN>&Um(9+9p+5`FZz>U{O_BL}&IM=n<0 zP=9(oZ0Qc_3c0{@UE6Uqsya@3dd04#i&U!<*KOa( zg>BprzAQl+zkF5tdiAO`&XSG%hT?4%;kDtl5qqKz>dO;OZn^!W*>|lZHgj9faxQnc zd1;0!MWW9&HOrwKT^h?Q5`>O?7uH==5S%;P%T7F@}&F#|dH-AVX52=5=T~OV@cT`_!JihvHG&%IiyLOpyso z_z=USSo$$86Vaj|xfLrkBRe4@#e*UNFC;X&%3!I&_cj;P%sr?`7Uf zCe6MU5-%#TRMe_I$vy1K=gNxe^A4%sYPC5I@h*wEJ-b+BNeZ{DSFf|IFfTSs<@sjq zBFjQ`;-Vb;bG&WS=Im|izRJHX;7hW)1PtE0=RD|rjiN?3iz zd>Pv{pB*)d1zvl_;@XlJYno}_4)Ygp?!OCvfYsU6Jx>{MmyrtZ28hVW!KnY0TFB8A zWCcP^i4InPhUKgLySwo};#5Y&vH+MUOy$T5x`KHCMlf|9g@wGo2)C>l++7E#y#C!s z$wKm|473biQHFSD1jN&arj*D17##gY&?^GxB6Sw<$Nj0S2v=|i8%&S9P4sc ziYd<9<;T%wi0GLz}9N=7r#!n$f2=Q?jE2#X4-Gq&-Ki-im4q-en0{$ z(ru=1si}>wBO7taxq#-{2+L>44|A8oiC9S%p_V5S6EA&0f!aCld4>X8?Rm!Y48gPT zjPMEoj3$s_>!CP*n(G^(Ftrp!uc6o&q&n@t?UWTgF|!uoc9V(Vge;_ zNwAf)nk9*mN&2XmiJ$u7XVQp>*rO#1FQg5Df?3doNI~mcAOewsa(lA~o^ggPu#{5B zEWiP=YCxt7Xnirt?f@MKoi4Z@(Ch*x5Gx(yPPqGx!P=%Dj-qI*HBdL`5IV?Yjk_b7 z>B)Oxcfk5}C?hrZ{$yB}{_O&Aor>-bs9}1v9xd*F)bfROhW7Cm$iKe*tk_TJ!0ij} zt5(pS(!f9hX%#O)T7~wT7uJYDz#j8t07?Z8Zq#&lxj{eG!-9s&x~B^w?23C`!0%y^ zM%V#-#w~q$fA6H#lZweJ7M&He(Hcx_k?4MqxA$xVdf)f4oAn-!6k;cHH17A5VIjfc zTO(m1ig2%pLFkl8=ZqgRiT3xZuhafRZoE65r{l@P^i`ynUnZh0b-}yCnx#E^5e(_> z@cHVs4+0@eKUo~GWc)Luexai4D|wW5?MFuAA5{MtQ4Nk6|AMLrh;E&HfazW+zd z^be^BnB6H;o*i+05+VaRRxy!$aN`FH@9$&l2~(1DbR2nthH>%;`uc>YXRPDp`*RR& z`Alrh9hrG=FlQy72`40tw%vKv+&i_WFWym;hmV1D#d~&<&m;pOp9xRdts5P$W)l_;=&rMcN|sM*W{O1@cUYh?K`dN6%qH05Jn(WfYO5M#amZy z4d&zH(oku3bwhMx80Sida*aAA)s&9XoxjjuMCl0pr>Ky1ccpWUVbKk%)jM@i?Bllv zuiU!0uRfsw_XwPZ)BBF?YvIc)@=^Tt=#J{JMlRh|Xev?{71~{JEzv&~CyR(k+`bv5 zx4azoKRx{(P`U5o*J4a=@0A+F6q=`k3?*o%YJ|z2XyxTKEic8q9P#86bB6AEa@U-$ zUB6Y|x_0KK;}>C&ud8KmRZBV$lP&3$+cJWs!dd$3R1Fi8#KBsMCcuW$Dur~|CT&?oIv@gkAutV5Om|7&_fKhj{yhl zrk4bFklwXrwoF;mqB^+0iA$v1+KD}T)?|8`O_WB2dsi9++=@J7mCYSyX6DA z{|51S{9uk0b!Mi;lF54lo*|QjjUpScLk?9(7Q5Y&t1d6iFUjMD{r)~iXGvC>zR(Z!nGQB- zVlHIy%p^#+rvm#AkS_xdvC`v2+c^Z3hy_3Tu1@Sc`j^(iszz8?BCx$uz|9o{uFn=gyrubMD3WUPXms z$|I-wH(*%sj0ewQLO-Fjd9}ZVfulVl65^4nJu**!8sZuFJZ~{u%~`4{jmwFkH+TB{ z=>wmufB1}8G)3xSQZKvp&JXGzZsBdQx(IJS!`shKZ(e+!H#(i**-g;&xZI&ic4F=s zNmX`rc2!lirRwiPSv?I#2v365$HEL4F$nhDw<6sxpr1hSQ1rRAfympUOo6Csucikc zZ2L9%OK@O=pkdMzs3fN(5Xn6yBEdMS*PCTGuD$@Gn0bDPP@pbB2V7c&A(-kUCg1K> zMuvr=$PmCg;)wiZ_EsUkBky+W80c#NeeC$i8Ja3h+uexQt2C^-Md09|oio?3;NqgA z5n!A)Zr)RAR3xQw;xrvj6UnN7IeMpooN8GDbq7Ej0TSWP7woP z5IuEzhRp%C6!7&3iey1nuB?~|Ht0wf!U8BP%pwt8-ZHPqH|P>^S>Q^z-=I5CnUI_m z&jGj8C2oYJjQB+t)k&B?;X*BH=<)wfeurKi0Dx*&UY60pwc@*Y8@Xj@6(@ zW=*xTpn~@d!`{L$iN2!RP^0bztgT!hu_>BI>)9sAucHK`my)pqtI^2`yae6&Xjj|&U$E;57~@v2x({YL9k`Y-m@uU)yg8emuE9ZMlcrtV&49~P zfxHY1sD9lp2{@gtV4McwT{}3eReu4%xz7Or_kSVV9>ChTf5Y1T1E}pU&JrMP1md#n zXJ-HUBfI4Vc0$SlR48QI#H?^84@hQ@O9|66%_|q%4#yRtgDWz+4VvQmF|r;V3eRH7 zIU#FmmmGwl0juI64Fs`a5{lY-r#DPhU(3RGZ^KOYmzO;X$;+o+yAi?lRHCAiyHavv z*Qt(MDyG{EqOwa&UXk%Vt!prPOu`n77_4lU@Byht!0j&;5$?Hw5oCmqUbf4#GPjQE zls($<=oSJ%)aCQwHH(S%9`C*ApYmdv@REfPiSE9FyQ>|V7A~yxWl1FoT#z^+38hwp z7$v@pYe#Kd-1umvW4h-5$4>u`HeSF4ipEgcip&JZG>(x@Vc`Q0%jnU}#COBQPlLXu zx94m2>!IH8r*@)DZV)vQ#sLNw7StZE z(m*GWbpY5hfdb%5nLxpCcsAE$a+%hvR?s1lXHFMfP54Eif*_Vh>_M0sRjp_%JaBj@ z{d#)`ue#UgXS2v({C-8RYz5njnM>}jLJ(l;{UAWL!;YHpEC}E$zuRWdEdXmpN?yQE z&!PaZwiNEb(;6}s1^`wwp;d|FnS3a&I@*D-z_u0Mu)y6mZ(JZUGIqr_6|OHZ$-RL9 zF|eCY;30Mbz^Q=u)c2Y&3I8hm!mL-`D836G9XvTJL*b&6m`VhkSbkTJbK@;ekJqpR zbu7t?^;d$8_Y{LeaSJzzF_P>a4#Yhi$nN0|3F-3Q!=ZTB9@xv4G@-s{>) zSCa@j7}h4MmqU*Ws2!RxPm{Rj}CVm1ue9sQZ~>_q|hoMRM+8gVaH9d zg*W4OL{zL}vkXoqVm^TZ8t-lpwdd0q?0a`6A!2J?m;RD^?sZ!!2Oxa|k0$WRD?Jl?&6K)*q! zoPljVGrZfTc(-AhoypwPnVNz3{`8(xxQTOi>y)m{ytSIYo}_PwBJAL8zg@F@Iac~i zEVmiCOm$Y!cr@f!S>HBRgU867SYGHoTeWbL^`HwqU>!Q`ed}(;$zew@Ivzucdm#v^ z7yzXIbFkn+?bWLQ+k<27Pc_CA1=52>YQER&x+b zKmtxMh}{90A{6p9LLf-*-5m}#mGhc=9b05QKzoO}yOc0Qx;rp0fa}*NyVqg%S~xm{ z*xPW04i_)^VBJ?7<|~v#N7<}SiTva}pW!eVkW>ZL=1(im)J{S*ShWY>-rtCkBuKXO zpq*|lY}F330?C>r_Tn+wy;SQl5_k+kuTAXhb_yMx0|fA$m8{%2c?T5GP3&Ng3uWAJ zFfJW$x2V?rH3NyGh6hrqt)(AfkIyytT)j1^1=l5r!?}^%N6{59Y4CmjfyIek>@K0B z440vxDC?~w*B>%^eV-t7QOXSJ%&-f1eXfbc1pd2G6avNrIR#LW0aRa{|WWwFzl@8n9V3YrRPqzHPwkJ=Ccm_VrF2V9yu zOrbEK15t{&VUfL-bL@`0wf8hh3vDsDo!DOrES-=vq*&<%UzAjR5-&Q_%qh^x>1kI7E0g zf>KAy)R39@vmWBbzWj+_3lNnZfbW7^tXpvxca8V{K!g}G0yC{RB;lBv8Q-lXGuS3C(W zsV1$8YY&^TX9mQ3FyoUcG7m&c`t(rH(l@04srS$E0DJx^+SO9==3$tqcwjy+)Ck(k zxah)#^~!>lxV<3-!3A66^uf}Akf*0oAB3=;{@`v1uW#8}5uy*)$89SJmeR2&z=P>W zCa9tB_!J^8V^8p&bYaF=4eHfsQMAU}Ai1CXe@`L)PV+$dc`%V3 zzxfRh#k^O)A+i-@FqHo_Omo9Zz^cZgiGI6q74(^DY>WI}6EG`+kJ4purgJFKr~o{q zNJDjEOqIhW44VPh??V}m?7F`X7TrMXBY(VKzn-qY?C0+KP}cL8{r-K-Z!&r0roH)BN`bsP#**h{@Nqt(1&8e*LN$33C7i6 zCXV9PGr0IYFQdYw@oJ-xTA~1H5_*SEk zC>FH^Jav+eRLegH{rlCWbEz*cbV7;+HsB?q1W|@amo2%=N56GEt&MbOJRS)`$?is_ zd`&QzJSnT{Hyns&g^i|Y(!YHC}5+$=-@Ar8hE~928eI$(zT}`EnrDTqTNY0U`j+21} zQe05NI3N0mi9WHE%H~SR0ttEOB6<29GRPsNC{Wtr+4$i528THc5L}%vNy$yIr#PhN zAp7>nX*%3!1Ra({N^;6dvrE-v`1gw!5D8yoEHV{kO5w;8)dn)=y*o#wbhbp8E3DLDS z_)ATIFUFHCApAYgfrSi>feyO6LP|>7z&3;cZ35wz-5&7^^=Y9q!)d)G$(3AUl0wMa zYEu^$I122%vj`FXcgQAy%UI3S8sUa=#j3(LE&%a(oxD1KkEna81d8MzHO{+|Muepz zvb0cn_^sqO=ebaY)z@2wbyspialG0piH}c?Na1O;XQjvT+Pw7S^>3~76Z+A+V?9}- zwT9B2d(;KRxp^hLu$bt*C0jE}fSXtEDXl+j;KvGC!dPocD#SCb zzCGVUNN%PKfhL^on62&N&yto9X7q*V4K3S0pV? zSQaUj6Tv7s*L?8Z>ngMsBJ=LV^;`tLYGKHxInz{+e>t{Vc74;k3!Axm$&aUM$(R!y znTRj@sg3kVdyn*DGPUz#gur$IzU|joG62UUU*CTxPt*%Rr2LAEOxQrCVmM$iKcSK9 z_5MD;pwl0ReXtl%$gj!Q31x9bv4wu|AXo3A4Sk?Xpf|T}4a(lS&yUt)b4Gk&Y*AcU zf*)EX|D<2_VH!XF-~piV%<0AtK2~{p+}o7$zxPY6OsPmHqyHpd`SzkHCr*6;q0}x8 zn>tZ7v2p5YKq$YaUza6Rq*SJ|mdl9&oX1^&aMtG6tLtmMK+t+@$|x7P|1loj_q5_$ zAbT;KOt>P0dtzlanwDvZyA{k%JFG$G4N|O{F^JxI6hTmP4c`V3D|s5LB6MGrsHunu zJC?@PNDzXC{x4zv09ZDy-Vb#6;2{~`2>*9)_Kw}#SV_%oJHoeR^9?;N(YEZyaLB2@ zr)k{17hBve5ilsP2w`N6U#qF{!Sx#Q{#Tr z{ZAzw^a@Q97b6;dyOJ1G#BbPb`sBE|p&>-8X(>OTZhL#%QXU6(YT|N|Ia`ECD1g41 z3rV8Ei2A*b6j%m%6(?HUccKotfD?7#MC>eLoaO%`>^^(Em%-&yF-&*qJ|Jg}jaVN?D*@^!a>|{sjp3a?M7tw||E~|4F z;zSP@1x~ypTpPCCBn538IK&`oJ;6GQJs9C#zg&g2n|xxohGLq0WAfdY{AIbft9Ql0 zz@sW`x2vhRt_t!?Hq(yXdB-CUf}OG?q9y_u>N(woa56_8gh_KY`)bjzRK`)c=b+D3 zKK_+eVSM2B)C2pJ_bm4c?s7(R?%B*N#we5TN<~go8cb!X=~L_O0jfzHL8YQ3UB;a4 z*J}_YHqyY-#&X2a1t9O>GK%DiqW(&g-fKY4hCxWEP=`GZ7p8zO`y;9NtT&YO4> zJ?t_BX*<@qUq=*6FtJE#Rk|aaIk6-CjVB^-d^*_#?TwCjuma#laze~SR|${Uq~_G! zdqADh*~=$I(`sjNfBYe_{Vx12&R7%fDKJa9(P8*iV4k`+K~a!Ut}iGcxg=L{ea)S~ z`$^1o7&)Eo=Q~gRtgLZ92Wqv%ox4(YtFT+7D`bE{v`g&o5e2G{S5fDmC+B;`kj8}z@iXN{xkKS zJ%E0hrit|{*tk8GNi&(XX0TF-^N7&^qWG=EM};p^N_(syitoLTvb_c41foI6o_EF6 z+rNQ(37(ZWOG04=Pz8e}|6yg#&OvfJFDJ`n7X8IAAmFy(C9SCmWWm8ij+iStXX|&j-pe!2eY^#lPC4}MLg$N zTA!iLOw3DiMI`E(a}IF3kgsteVWylMv%&0IF1&l=+~u=pPP>8wD(NXeJNID$f^c{q zxr30L^bY-=d@sN6CcSRWV(W+^kho6#jrna7efJcQ|88L4B17pN((Fw3pg<6_gtWOK zF`|SojmY*(_MxA*w<*X&DU$Ewtyvvn4VlOwWrEkg7wN^41@3k)!Ak+-Md(;Abbi@S zK}I^$bM%}7x{c@X+*PO)dUcdAl7HG-*LJoAqdi)J{_UIsTb>h5pqDSnLbUL*dv&zz z(u#)5oI4u=3}!@6*r~WRnqaZO-L>D#4%-R)|L>-x68reCwh(^N{P*#`#J(3|-yO$^ zePgdL`-%G`mCM9~{U1U7NYpkX)8M-nyW8H_K4II(N{gW4U{y$$+gm98P@+qh(Kj!` z$#w~uCM`fM^0F_<^5c~xN@5qJD+L%?jMR;$kwb{Ey4ltVH|SX578#2dk}_bft&V_f zEg?s{L7&=V=otIQWK2C7AfZR4)2U#c zPs^>X@b$~wBxA(>U<|=e6`jTp1vLUvYes&%J8yHxjx(bYq=YMo#Z7s;xAVt$A zz2ZC!`KFKE!PK||NH~9y)BgN zgMn`nmyQU%!2|zmC~HVcPf8`b-3v-|d>p8NCXfkqZ4nb=NFaNhb4*z#9l01oAbDFt zFERqC^bE+Prl3Kg*gzNsHuNX7tH5{nBLxn7MrLyh{2%xn!GnV*Ou)9NDImS0hx&y`!MA$*L)d7GkKosSZO zu*8T+HT0n9YB#Bw?j!rUpAco0{&^wKwwY|#So<~mHFAw!6Y!AOtJ)DNeXFCkx8v4) zBfP1q+NZAybrmawJ8rV7GWN(3{XMUv@NV8$czDomdXHNkxAdgjty@sp6Dh@)ADy80 zTJ9?MdBeZqmM_;&IO^pJ{)_InZjo;KTOO{rJoL1ihX(+P-4#c??&*&nvGKN^3Vio& zQiq))ipUozFR|*`hX0-6b!73pJGe>2S;pl)X6mrT?(J>Jsex8alpkV)F?n~Az_oS8 zo}qIF)hRdv_)5h{s-rE_Hi5NNrq{-nAG?LayrU{FHpigHMF7fm^M*vT&OPJcWs*4A~0w-w3-iF)>*U zG}jG-Xdu#YfsWRxodY4Y5t}&t{xcA6rkfSQW?}Px4TKs}2@N0@BzI2X zx+=jn{m(N;;X}cLUAj~v3W3SK0uG}{*u$pe#cLq}c7Ps$1ei7+C7#KJMw5vgAO|1; zW-Lt31vh5<=PYeO#!YAuuz*w670SR_XNj=g+Uz)YFnZ%T~0wF4{OT4-M;<5W`ym)&sVxfm8R91t6aC4w-wi@ zgfOkMJxolynL2tNE!s1qJMPw3pft2;P-2NvcL?x6@h&rk4>iXEuLWjlx}aCU=kxhb zCq&Uf4K&plpB$f%#(>gJm##`m%F0XOQ}a*{x0HA*iT*MmZZ`lRk<}D$t1@%j%yns{ zQ6fk|oEjOBy*%jY?&~a4!5}t=5u_uyjNl%u3^6t*L9l5(i*%AnV&5afC4sCK>BIIx z7Rk*i+WL~kms=33YIl)_h9}@cP)8Vp3&jh;QxTJ2rm0X>l$lEqb8Qnm3(Jf(>Izq) zYG2fZphstR!X^SR-gt_sDNivqg-(TWtffL*6E9xTo{EyhD074=B1#j}LBH)8AEgbp zM7V}qDif+yRu^ff6As>${QrBWwl+lWD>P*>`5=abM0;VdF+%Mcu1*LKRl+_DEeNkv za~0|uV_6}ltTshSzPYRdv^MrI#5mtTEy(7%*4^gmjpzRysCWlP!Jhr>73Sp>64B*% zlI3XIK%!Y~URqvqb~0+llQS6I^w7~N5JmL;4K+i&@PV|bz*3aSR}m+pNo!8cbInaf zUAfA>TB_Zn+nL$O2yxQle>RaCO&R9YT-UtRq%3UWBP9c`kX}#7q#IXb462f}5_49` zelkj7%+s0D!C;k=lWb%R>0>JUs8G^mqVwsFk^Df2cS!p>Uy*8k^cxL+%q+3KL(*B_ z@r#rm`VqRJ3(40i^7hY-z?c>lgDARGl)=-4`2?RA%4=A-(Dq>KOW4`8MvG@2tY!xRs?YUN#qK1 zfeu>sOm-@`E&xnY(Ok$`OrTLb4ILswhadEH{>3gIBp&CWzRtFVh>Nv@|NAP*{hh3M z1p!doCh`|cQt5`fbnXp~_C86w9eS;N^5`PKRD;MnJ+aTcRD5(svmq}h+jN)oSLEhv zLFb;Hg>ZUTx_TQ!rsFtO03C=`05fHD<9YzJhtRo7nnl7!keSoLKlBB0UO8AvCB2po zgmgqtqBLkZh=gV)>F`KTOX&-)prk}Yj5#qo6`|;!B*B-V(`4Y`FF|Vz;L~KprwPvS z7_vs$t-T#q@OU5<`;w0V3GCr$>tQ>FPw^9}`eejmzZQnXPjr5{0K-4NFxSrShx7wi z&f|?9yLtPFLC*d9It!mjX_r9Sbs>eSw3GM=$z}h5rWV1q`;dM{#?UXA5Y1C>_B_vIwPt4YkoAz4@TxCV>efnYq z8vE3_uehW?AoN8%r10=?Tw#c%IFl{7FSm$Pud%{$P|VuuY^zzS95RCT;>1w`;Py7u zcmFbiDtV&mLCkbMnMunzy}cRNRQtb3i#r{NzQaIB6NXRNrQ^A$xSxsmsyqdwc=fu# zgD_%eKTBc8q5}ddOL#A^WDlW6+QCtS`zboEcWFG{N#_UQ9ZIDm z#CI|h#CP1K8ciCe{8aENWNLn*zba^#aqgtIbO(-&PQ%j;Krh(slK4!}1gLN}MID6Q z2qFQCxlu|!7T?SI=e@!Lk<6Qn7vI~03&)#=DVKVs=s+Fx@r_-(DiC%m?hi1!kzP@^Ygm|fsK_Z_= z$0ONbgj=n=Siad0jD~wr(W2MofW2Iwrn2{!MP?-WuTklZS}HMe{&bE+K8LK7?rPRG zt7x7~uEzmnOLhBN^m|k^3wyxpJSnjhl9^v`Bk84N=|>M~|0YJh?@{ZiI|;;y# zEO^eouk6E-C$hiD_uwSurwc(W>d&gnM|0$y>>;VHrL&NPLe;#~0Zaup1bh9ZNrg%I z8nX!dRA|hJrg#$rA~pjnw6y=jr;Aj+2oZwkFvZ!{Vi(sU)7h09K6vo?v3*Gh~si-pVta#;4K`%ktvWTU%O-tIwW zA$?E(tCN5Ct8o4ceI@_9E87UFLlbO1(#`1^I@O`m3`wTUVn(Mjv8OocpMYDq!rFa4 z06aVHwifCl+P$M;?2<&}AMwNmPwbwf#YAT!B2-XWF^TyRS25S+hdZTX%|uvFq^+Y5 z>u3RebhZ%hXR9ZA?C9t}ui85LSD-EVRZK%lg)Na}g)_9umtq|4>?P@%!9Bpb_9A>X zY+&mxZn*;c{1Mx@QBCJY8)(u+=LR=PjX^{-fPQhbqe#xSIdH4b=B;(jO?CCnV1k0h z1zBd=0`#5>LbxqMkoSO3%>Fg%Q6G*rNb?%aW=kbg`&Ip!d&=8-uPU9{$smaOU|d>s;(;AVcuogtKX{zDRa>w?NO#My+Pf`?c7sw`Z(f5 zHW#wS8EVf!9XAKo;rO?1_NfbO-U~#5-6Zne)0SJ}w^4v$S&K7~+1klK*3y{OP^dH> zjXM;u*Rl(p@73&z+7VKfb1UZj#@02*X4Q-`FzNC7Xw@gu7%A;TRVz192Yzn&f(RcS zvqcxM)ki!L-@2`!h}@O&oW6BnQM32XHQW97Y_KfIUu0RBKX3n9rX1rnKA7A00?q_~ z#j7hd=Hy0(G)Vt?_~~#MmfZ+Xx)4Xw^E_cr-amKjI&rxor2c}CLm(M_^YP_X zPx7xMUdq0bb~696`fS$a%UAA^KzVc9F56%d&-!X&qtxnbiyA3mT=bS~i>k~V_+0Lus6eZPHey6>)XR(S<>((6IR6 z2%e0YY1dq7mIYOAi{GZIEiJ6eq*zs$x@0H+HF5n` zwkM@7zKpAm4l3|fZ3#*UiQ?m(yHi~n5w3~e0;Gp*i#evU!cwx66B_I%kdVK*W~_dA!?2|Ct=72s(DCt#JnOGZs%Tk)-z6!k_cQEE)+(G6$>2bRB7%CQTNy!TP zJM4y(fOwomRB!@LFu0&PnvX9_sYmR&2MD?A3vuqHH3d6WJ8BX_%J{;l+(4Xr52%yT zx7oe2fS{1L5LHB+sWgR8&)1f~cRF~5R?FmF8HZSXGVD3E0oJLipwL`V#FOSLcBxF5 zNlwEVGok46le4#o^wzCsWa?btvV(=&>Kh8eyg9l_W?kQ&%n}CSm0;q;MSnm0%oGz-4liK7 zp3Z}CB9@WRaGjhqXHnE7CWJca5D8~+)liw9zFPxo%hE|-FS?z~MBo;kuP5_VD7Kuh zuYktg?Yv88%D!i+iIV{nolN;A#?8sj&Y;E9NwK7tv|?W6+{$^4!^%H1K|r{G|US~jE-EOWTF}iBAiY7zIB@KphipCJ1n*g)EQK5q% zflftp?4BtJhJ+lAt0u<+DNK?qZ7P8i3`0toV=mDvt%sn#V@_3P$E#?nbaPyISORai zyy+VgpjV;?^0d7R7hx$2Z5EprTC&Z#e2!UPm{LH05~xC_HyBhxwe92F0<1H;b|Y?> zBW<@xD1tTCd{&>50MO42{LI!iWO z+-y@;zKYD1))hv_0wL0!2J3Y=OeZ0g%}&;9(lqv=?VA-iG-Rd<>_IsitV?!HPD@IM zTQOG}7++S561O5D43Z2=eZe-NxAjY|)SO>Zt0D`emb~<2Q1V974|{f$ca=Gdnv|Gn z!_^T{YE*L~#F(N<%t%zJH60;FOG0I5h_L`AWE~;K@&q7`+Z1JL3*an*sR!w!Cqw*E zoD}}sK*o>qdiaffKuwJ0cFJ>=1HYU0OwELl z5E2etg$nLVxW1Z%@XsvYeN*up(@1#qP5K}$B7XhOT`pBSI|}`+P!D)QtAqsl4f%!a zmI!K^$2tCR7MV_`Gf1>D`U~Af2RxTh2bmBL1y`NSU@+(;2APl`>b%}^bNY$3 zi(NdS+k_-?S|TLT(=4jz&XDJHw-8Uhk=Wy{;0G38;Vq0v+a%q-CZoE*&KreH(Z2?> z0zihSb+WC)tUp?ePE8joSZfs>zk>{KuY&a2brQf@x6mh7NWbD7an31`~*M=KODb| zlpogvl1$T4p%jP*q%y>1hh#<|rgN+(fgEuVhOx)iwJckxlc zAWV{CTK@;%6kiil8&n%q5?tuR?CqZ0ZCxm%N)py3{?!PaWx! zL*8X_Uh7`HR*C`CT456DiN9Kxpv~^~L+wc7_H`G|_rQNq_||0Wj|rBZl?eT%5J3rJ z`;gHRdzrKk9W5Cu6;@kk2&>y?NRaC=b!3>pX!;lmKciqxh2t*=x3W_g;V}sjdR94F zPgy6h-wir3a~(H%v!2TD_}p0Y^0N9zhB#KRMYP)xNSSq0i@(f^G}0~o=Tnb<*hM}# zOU4W>rM(%FjEL;Kc^@T@*U%56=nw<_uxx^PxM|M0J*Tc)E||%J9mG>d76e>Y-_jgd z#GHOp&Kh<$onBdpK-O~m7(G2kmPaQkQe%q;77wf*?0R}2>E`=a6j|;=0xV?4?|+?+ zC5pP=7&6QD1)JTJwaXfsL4+Kg44#Wv9~-$+UNkN5QD7bvL4~sc$4+&(2rm=MaC| zn;h2@KhoQErzT`wD2yebB|_+^Ad2g6M6&nl;Ej<~HG_^&(+`UWSo+p}d|_jQ{%G>P z5Hc{342UL!Oqbf~PE;`8)Z8w(olC|RlZmNhr1$BVb78wzl!T`RriU`5~)Ii^F6I>W+j*qA?*)LkLnDNQI*ukt}mI z^2|nL7G0rDh|;2e_h+kPv-7nD$!1EB{Sfu%lEhX?Ab(8d=%03%WQ|tL zx+G>>QVK9PV0VCbVb^d#3M_dD)^#HnoiCw3Xk&}nAZ!3wSV6Kyoz0=#TdPU3yU@QC zV!cC>k~lhdmNy74^iOkgfi^$eH9tGoQlLc7=o5%B^oF$ialoRFLwy|$P*0JX!`WTP zpPIY`V`7?XVp@tCdT-*P0C$FFK%6DysV!+73c^7jgQVi$iX6ZSOrjVF$w9GiFlLHi za+6(H`sF_F%Z&Hsuv_<(-&S7Re}SuN+P&wi16%g_?DVN(_RpJMIZ@@cC^38%A2w@+ zI#3nnZ7%iz==c|73HJly+Z_4kbZZ8s+~o2!FHo-Rk5t2I$3Xq?yb zY0IYtkI{a3C~IfVw%q3Y=BnoAefzc_EI-PW9Wftlf#aJhs#;p72(_%feTw~r%sOSL z#7z?7)Q+Y7f^~|_<~xpk!?zEV+IafDq}ti(jks(dVdF*CFB{^9xc}E;tXvBpXC0>b zwT^AZa#Rt7l zpKd*PniD>io$@}ogtN6qv2O;o50lP6;&q<8DK*eY2{t-)`XDwUksxP}>}=He`j+h6 zkt64M8fQDj-XI@9-@=rV<(iV2q)ktm2EF6j`7?^9siw_{3!2YQBZ~CgBx6d3Yf8En z{J}Tq2MXG2+7Q6^M=5P1q-4|(bl>wEP6)Qgv8TOT7ccQ%wV3NX%FY8oXynN1mO~Yh z&&h)l;pmkE zozvzp@*WQ79nzP?dL}OkFl1Jkwlngs4(~abY72H48VwB@rO8nJP(w6ni|5qP&y!~) z&B@)eTU`(tqlJi6VUi`1kvj~RIuvg$TD>vS@P}WH?*$x!{9jD(YnO6OSN-clt10)= zXKzetm?^0u{BYd0+9NP})6=7wj^haLeRWLH0ZW7CM9u+pr>Qm!PDcyQv#Fxlh+#O7>gRbYZ7v^%1cVkrs|x63dWdO zTvA}l%G7_i0j#`T9eTdE#h?i`1T(?L!f=zS)DRP?$%spfyqMWwY%D&tSJ$koS*4rI zB%CQLkKhX9=fQC0EX^rRiG}0Rk_#7wrvxR%n2T%7HJZzw=}R*5J}lA}X?F+JrZEp= z<}A0&XXNiWWIGhhXf17_v-8wDH9Kg}diwslkFMtx8>+I+%{5Qg6UX(p!VZMjCz=li zogG~`hbbMKzd2|GQ=GB~LL%*q^(vbIXcZ^-aLRB<(t+@pHyP7%(h(<4)oM%gMK<8* z^bkfEN0+miP`*kuMrN%%T(OOjGhG}U@HH`A9UO9Vvm(n9i#3J0Sy2rAoNQq;H0egA zwkWv}Ni%e1OwTER_gayt3uR6qHk76ggL+INsr*LO#03@p?89guA&2%;q-9?1GmIzCeNNUi#pd-;Nxq{ zIU9X3sUdxDPOarceR2J=Qs117moganLMI1@7wP4HG-g+1R-TXjE&A0wGGWq>j9l&D z;56&{y7R#g!*3?u$hwyE$cwx?`HWZdl=9DY%!W;=aa(!H%#9sk>}wpHNxNG5B&?V* ze9e+Yivy|S#zB$Gd_yy4>7ooPN(!%jb)PDLB3p%%soL-m{4PTxmZeN+o>V@)00V8xu;@HR_s-a+8J0F%@QR)7ED+<&@=bFDu#;f0$Vr8?!N-+Z^dx z5*!u~-12$GvW$)ESC?++yevyM+)sNHO}YoSd7shV&nUQ06q$PryN$aI%>Mm)-2whl zMu7L}z#}0K%@yT!wclPkU5{&C?cmY2i%h;q-~G13=5i7qy^KYqwv;%*WpHu>&xDiw zuFcfU`c4`XHCz;8=y&>OD&_U2)SNU9h}2pE>UYpV10T2QDNWf;SDF_wbe`}Ro16jV z9SFW5I_GURd=ay$7C@`NwjRJy5n6VsCbIed3Ky-I5{ zV^sUWs^ErVoH-9niR2wRo=EXQT0Q7DYyh3phmNEJK1|u;L%tXT@SD#LGG|d?I@5m8 z8qLCe)AJw+hsHV-RQj>njA67l)qjK>-a7C{j?)w{`A5IXJ+6`?J4lAi>xU8r5^9fT zlMOWV2#pA2G^4v_{O-#xa}nW^(!*OXnabYPSQR``Vm8%Qeef;At|=WVy-q& zBugV-TX&PMfVOio3jr)$O_vR&3&AP1@CAAIHxgW>2iR~vBjAjZE?1TY(#oc zc&JJrqNg`EYz^ALt(9%4+q#F8)gkIoTN@CFTvy;$+CL+fiOq=G>Z{TR>8a1^#8jUE zP9M057SXF5*x?PCO4|d#UFsXHQ)|VRRUv*UJXu@^?U_2Co3w|j9ex>XR@!azM~hIT zyU5Mfs+`pnTAs|6C!a{!u^S_f5R;pyS6a*louz_|)q_J*T6*tLK5uRzj>6?#WG16` z+C*nkNBd>Xx{eFF#nwj7IRkCtg1^x&u9U#N2J^Ue*ykP<1AuN!q~FZGEET&5U-2m?D~0!r>g8O(y8-SEL@K|Hc_iQ zE){yTi=7)AifcV=OaMA0fkh~=3isI(!r5d_Kh(bkp>XW0K82SWh%59{~^64zvHBPL{Dq}A@c zeKh$6^|qJZ^d%p;3mY!kH(+V&dx^fndfH-rmEjCuwU8vR^ra9Gw9AjY^~V+0ho|nX z*}t5LF0Kv#O7&G;Woa?L|LDE_50<=~=||rR+QbMWX5w-OPp6yoe-Q5YraOsx8s+>{ zzROK=9FZS-gIe&oAufr9+`!{MOL0AvgJ}Z`&>E7fbS5z6BatwR;!#)-vS^@*{r_*xCL^_eD1qfJV6O-@bIXq5Di1-*9?sTf&s`v8_M+OpR-%CNIU5L0ShZurac_d8wQ!6&TrivL*=Wjf1)9NZR^qTo>vM@b2$UlL-Z9WGhV==YJit4zIs`?3 z$NU8-^xJgSDEftpzNUN0=kCblFD4nJ?0bG@uT8MH8ArdPkL{zB zq}7=mLy^QZ6nni7cpk0_&yL6zfH$5UX(W>rvdI8)nzYVB8%iR;Q#uN0n!zAs9pZk; zO`--q+vX4tegWsAPR7LxJ zDaD#lXV-hqL|idTKY+TxqY>rq!=#kiHnIsqNvmjNSP%pjLS5AbMQKGUQH2aK(>Wjj z*AoS1#aSGR48$7wDIhX@ThD{Aak+#zyJJ@%=iaE;d!zOlc^|G7DkH-HHYcCaKBNyI z7l)liy&9AyRz}$L^~t&2-DF#fgM5rvG`_JUtP*g{_(lu9Bo zX*S*`p){W46eBkylQluy2dj!pbvrmM8TQRKz4ChHWBSSSS&Y7I`AG|;LbD`9Wtc;p z^vX1o-!;q@eHi&Q3jN`VQ1T`2DQ7a`(DS$!sEUnw*@o=$46p(A>)?8uO6rMwccJI6 zWSQkASuAWK&aVk4C-<%6NH!bjJulL`VpT=_@%q-f1Lw+HqYgzDeYw?}c}Cu0HPKEwa1DLzutqr!W1roafXkN_HumA-i->8VGMNHeMW-I2W42(U zP068~^ETye+7-Ghk4US?yFNb-`|+bnD&I^U@wR$%`NrnN=EU9Q`OOH>IUgm%{UH?R zOnQh@kelSsZ{g+#Y+-TfI^hzYyn=YG1iMEcoW*Cb+ILDk)@+wP0hdSG)CK4a;3q==rPkMzpMN7cU+zhLx& zzJHMr&(R04IwsKX^h#rs{;oC$iKAFyrhNq&!J&%bp`f6ZdSyl`{UCKdE`7jog%$Q0 zbQ;%epDpCx(JNzm2M^jj@-v`y=a9Ab-mu$7fQhL202y=!M439e7M%5oIwmACDkKDY zZ#-!-V4(B_spMBUh6s9+cnj$qOp*e!?FPwf6MwfsFT?2;!c)&lGwVhN&5}~dBM=yJ zLJh5yA}&}dIV~j)$O}q%!Hqm~7Ve1ucqigC>Irq=+8;{6JTsg+@iWm6hz5I$8H;>i z;X!W&aOOYkR;cUm1F()WIp~ZT(^Fa!R|Kjok?JB-q`ClA);Ir9WsL;r0mJ`!pb?&T zfHQ$ifo0*IkdU5?B#0-HATf!W$Vg>`IjSTPl_OY@Y$-@DP>F-GD1i9?4#=#5T_PgY zVPLd?+Mx(Fsu-OA2JkqKykx1l6vTN!6lgObPCf@}m5lp_k0BpOXykY#M*L}-l3pkI z;2paTn$Qq3jwIdYgvEcc)ayeUC9IHCXu=9ZRrVFqSRkKJLg!+iDBVQ%NuFx%eD|cI zc4qpVRi8(3aM!{On&<813cswnkVX|SHze5}EQv60i?70L*+Gd9{Ax#4NDDxvEtnAJ z*q)IL1gqY*^`xamAlDsCT?Y11&HmyXd21CPK)MEyF8I%ow|qCB+o(zo zjNY=GUwY-_;p0b69CH2U(y7MgtcQ8W7nalRmDIgxTpr5vB{elm8dTewnr|NB54KgG z%G}Ld$_;5;q6!L1N!-exAT$1YNQR{mY5IvzQ)oX1*Hnn8S*|DHbWMZ^k_rR5B}^V9 z-v#71@G5k)bbve1kY4ymGh=um_ILN6e+QBV=)2K?tY!Y@O#CiOhJofcNPJ=^${I=CW7|q&#lin=2VmX+{5YNU-ml~Cgb1s1`hx5*xX_;EUy!lPK z_w%7uy+KPe$LPL!H7{?C&Wy>5=cZ^ECB!OY&m`Q|a`M~h@fq;$R~K$Bu&Nky;M&F zcGKj29CB38_59%Hn9xT1H8PEUU=>&CXY2jBVd%D7PXs%WoO6@Buo~F7*o?F|o{nGA z8=v=x6OvP9hrha@yfgF6md zq$EpxXXx>hbev>C`N<6zRd+63`K~ylIIW2HB;(1&*C*)&ymJcge1GZk_r+TAoh2yF z^f)UySFxk@lJef%a}&7sCR)VyCYQ;@zh8mlqMHzQ33rLf1{>aSvwP#4mX5Mv^4Pr- zW;Ro{Ev7VlTinlcep~$W9LD$1nayVrcIkYaJ=4775dZU~U(YR#w3fccA%9b?ux1_DQQ_^OsCI;HK1+K}qCLK+AD^Q0DqX3E>~+-hE#G<50pk@yC6!9L zkp|dLaP?eZDFcgp(%BIMZ8>HRIGSsnWj@;jcLU-0w{-XR`X*Fx;=Trj1x0a`X`yVR zKZ>5`R6AdiHTlnU zLN@mXL!czxkfBE$K%f40-#4$o*qD%(lo+p!HzgJzj`X0sDIsm|PQe0Cy6GEO+lPN1VhtJ8)H0ex>gwGUB+qUg#RUQi2yRnkXBdWcm z>*-c&Pr6Q#g|gpF6jNrs-Pb1WzaZO`UkE+~v%7UTS?*|k0Zs%EqOQT;YVsCYeU1F< zGI{$BCMEHHOWL#{ZKG=Q=4=xx$CcpU9zjzvo27yHB?Ds2sYnwUnB>hHQ#PqKZO*|) zDC)XErlFQ{KE0XHzEqLZ)Rf(%YHmtP-HEBf1-9vrq(pd&G-Cj01xu4PiKQh1pzxAt zgvSEuX%!+Rz9aw^UIh`CMP%TMIi9C^vXOX8aFZ$Nr{B``D*I%B37*?0+b08J@LZTI zEPyrmwJ`fw+U}G+eESy2^pN@k5Ga`e`nru>gx7fDPi8pU?g$b#IWJzHoXl+6G$qkf zRfl^sJM<~k+<2ELF+d}a@oaIj_zIO<+Xkt z_Otg0-6gJ-l?{bERhLhEIg2N@0Jhe7tTWe*+}%aq!M z(>{mH>@WbAhGBWm(e{Zj7{y9ZY)oeS{b#Cyyqam*?$39wN=eZt=B6-SN1mnEsp_6( z9XZ11=IZlPP`p%3hC{;InLL4nH4KA4+4W&QzA;=@tPzys2<*(54pUDP)c6YZ4>NxNC=h-u`FSIZ~lOWmK*?gDhIBs41u^X;AHJ@>#pq2Y*|3 z?$hz~lRaP1^glD6`Cnh*T2@w*U#B{K5VOD_%j)VU-H<|`nPo+ zyP!^TLRJ$|5fU5`5zNsYvYsQy^rT%zJtSQ?1VYI>N=S&mEe$S@sHv%_sNqPn?DgXx zU%!4lwigE$m~zhy@?G3W-~aP>*U@&!`ZY^Fm`|3Tkq|c-iKRp9kc(mnKU`#hoE<|mW;JJ2=l=g59kRg>{7S=&C3u9e#SoXA?Kd@0_eYh`5b z1h##iO#bLNxjTX0rQ?JK+ow{x*4`jC+lyxHDB+$!@8F$!+o!UB-og3&WPPtp5Xek? z=m*JWTx^@k3RJOIIoh@h1?&Uzx$}J<1A_;9A5S0f!dd$?7Ot`i0jiJJY{)6_fwY;7 zZeAy`z9+krb*uT*`CWTz4i+6_j0FV-a@Cc0+Fd|897f%$IH3 zf280D_yPXeTCkCs_|(dCBlZ`AV7>>5KahD5lw&fkx_8YM|pr>hf{^7quAl7Sa{ zD(4`A({Jup)YW|2WZ(?NWcFT3c~*W&nQ~iXad-lC_e%@sN>ie?hoim~Rj#~zklHWl z6Wxvl_LyFZsPx3>C}l)hOhuhA_4k5PoJpOlwj?vluOq@?Jfr%NIDdEbAa6mz9zbjc+ zpSF|RQ+~v--%K>8Q70sSO+qRTlpi!6Nl8+CNI#ABhDLx3bp#s2llEASY?nIRAo*67 zsPoE*JGZ6Eb@sGXpAFf(Iwmwad>zwx^`_;P>YMGE>MDMlrX+mNDh5DE8vJG`TSZ4m zQd;(bX|tgC^2NS1_OM@q#sU@?z2(5M&80r_Q1_4;kdk7ei}6_%UNSerY13w zkyj@tPyXVgq~Xc*z0|2!6Z5l5@^YD66Npw-X01Lwn-AW3EQ~m)h{Lzrt9SD9w&HvQ zkW-iqM8@XEq-f$(5>s`ViIq%cqNZ}8YGG7FSRlVORGo}8ki1$`m|0L(QdZJXTaUW+ z`XX(usicHGH+88dYK0&d;Hknj~*^RrO4zGQMHlQ|GNCmZM_ zRe%4&ZCiMG^|GeWlZKl{+?DUb^c`*>UPeG|ynaWW;C)zyAKy{Qcii7LYAG)cL|{w0 zPgZ}igBy8jY~|QfOPfBuKfet}q^AG!S+Ul4?2IoWJk~RFed*71m3^ktK1*<)N9dY$Ks=IUa zh{d81-%U&$H7bCB0gFmVl!9yT;62(}gdI|*dl zrm&+Q(08^|$6)5y*m1Y|s;K0nkEnFu)d^1{c^~?(I{LxW;SB)_n77z3@Ux@E)}p6} zS3?5py^iSb9y#KAWGs+d3W@~zy^ibptB*K zjm9$+1vdm7@zPK9@^bAwpTvBe2pwWc#BsZBB}}ucUN*Gshv_d=MDp}0k@8v_iYTQY zJ*AR9W2Ov%yU6UMJpzXh4-7!}c;NUXI8;0pPf$FVhK9~#bM4$wA`TII$j^WBq@J+8 zMCSUU@Vf_pVMa0SwhhMc^>r8h9_#D_!u36l*51M@)|jV0m}*Ql(zlMr6f&;OBp zG559VM``_zoSb?d!OFdNzuG%XaRS#S*>AfIu7p!y1aYurY@1Tzz$C7cfnkY~Z>%QSv!y?La)4_OdlURAB7yBL|Nj3Rz|c1?qT57AUqe_?+6}=! zL<&GcP2Lg_yok2p@s_jvt3O0S4D|b7WZFaAtDXIw+uLXh>)|Y)S}|ugIIf%)Im<^J z|J=Rvg@^OMm-5y3#iuTC6*~mG=5*?HUFwwUy40!Gg{ro(?jYZ>9cRabv=}esQ-%}M zo3{VIHi+EP6gTNYQJ^9WNlHX*t8GE-uHE``n|5#9wLrgd6X1wZ3cHh(MvKE+VNLp#DqWxA28K7g2uzDk zwC8WoNE%DnGYA179Po=hk|q71e6buOVV9--2GM>H!dQlTz3Z_*e&qzNmZe(yBO-Os zb$HCp-R*?o8fr@NM2v|Ll=WeO2*?&lhP(W@( z7r{hS!aGQ(L;TI^GMLERtsdbFQtP*V?4k2D zhf&MLfk12RsQJ`gCC_z0`rQdm_~+0ce+!rGQ~<_lFFFZjCOQpo|42Ig@E1=xxyC^w zbY(r3uk=XcNv`x(%7#OeRq~!5P>?EPr;u-M%fyn6$3n*AFUTO_Z!)O6o79&KlDE1^ zhaq-`Ii@S=g0P4RB57UlA53g8R>dqD))N(i-tCt57#1qoj(G5c$DjCqEhukWVq0Qb zVqdN$%+Z#YEiac7S-+M(`xIHFrN&Z`p0#6R-g*NtA|&YCA?7(rTy_AFz^;eKWONPl z+#PRD;>n;M;NZ=|*t3RaAx^XgiEpEpqr2>bB?fh(AyGAVVT}JW9?+W+68lsciTOwZ zHo&1f&|XHys!(Oo9|!GG%nP$nE`kus8pNZ3OGeCS^o^53+)<&&A$*LG`?-FWe0oIq zKzs$>WvB0L@31{blN;_2NB83Ff7|b~r0b|hv}=5vHY0(%=X=+0&qsa}U41|PXv4%t z-$K6v-vVatj>~JlRgtcb9zp)p=4L&|4s<57o$Wp{a+JO$soHy};Hb)M((52f6;5tR z$Z{j-6h@QfDoEUnfz>1?F2~TZ(6^z#(QFBIOQ5ozw5Ldl@9>1Y6Uj<$%FjiHce*G4E<4b|WsmEV6sCoAkas$a-6F zWbM<7r{wFE0V9{vu6u`-t={kTRk|=fP+_br5}YLV4}>3B`)4Jj=NQQ(`o7Ox1e1N{ z?pef<#ndW6h1wFFhM6M+K9bm)DaY#Rl;QMg3zq`m!e;u0#Mm8^FYPZ_+tL~0stiN!KmFwP5b6im^+Dc=b91n0o#^9+x{P`#oQx#Z@>$L zGYG1MP0~LwsY}Uxce2`D{O>|mq4K*yk1pM0JrR$^R=BSAp>Uf_!KSi5+~;a17a#Q* zpB|T-9Z53*G;}+XN)3YW%Xg($%en}A4xRjpsE+P_^6I*ywHiUB1f52cpi0z$ z1BQ<$sfGWGvG)Lr;%eWovug+DNBcCfrVXq z?*a;_2=-oL)Wj&Z6ia%nd1E=VoW=LM2hIC?f8YQ5uIul*?36QS&dixP<$3PszQtlD zCo3yECsP}t=kqPa4B127I32_`5@X}y`S^GQj6lFCEhA1y!0bL<)e&2$C6Q7jV5WFm zpUz|&OhyB5NHsu6&5&g1(#IGNL3dTQj!y(Rk`PL53TO`|UZ0v^ zP#aRy40@p$QhZktxnj`4V4{vsNQg)DqCed%l+pD}Tv~#`kcMP@C2?U$2GwzrF`h04 z(RN0>AubLD)bW8dsf0!`ae701x;ote9>xk11$_|%XVk?RV%4~k7$J}vN@ya$UGW(i z=?0^oFC&S}b>QBNI#5%oV`5`tgdiGGOmz%M%8ka143nNOAvy*mWpQuMdeGd7%ZxEb zN5z7>3kJpH5KA|{5C=r*Gh#BKK4r`VeqK7JRoup9MH{2En6Y%E++}g&^Kp8u-WUTb zg~^zOltn1PccOvI)VVs_iJnTjw88 zC3Lkpg3Hxrg@D;LM*kr?Ja?o_@`n~gzUWaKWL5NXk7 zQ!Nvw&yLJf=VfQ-Azd!fGGw)FxLFB2US_nxJ~bgOB_6i~btc3j(nS|7Pn1QrcT1=5 zr^5{us?QBCP#5Ip7T{p%@Lf#XlOhhVBPCJN&$euf33um-(H}PcwKP{fe_>>RlMoOS z7Za*_^RX->H=-bkmnK)0P@Gia)&2}t`d3opBu!}Wh0ZwqAto*oEtqwr0+_A>jL{-XXXd1f*IeoDDqVu(%UQ&RM)`qcEg z#L~!IIgZPWi8O>kh%=B43Jdd%6+-4_QtLX}$#1ON$o0cFPjH>*EuRv#E-@%gYlu%t(kG?r$|LRKO~81oFMjus%=lY)-AMY?5+P6Sa{tNp%j#2k z#f7OryXup9gq8wComCF>Ri?bjcZ_k4+I34({6@j6a7UqUu^dA~ORHrVm$&!G)m!K1 z_uH_+J6taIZW{tinm$FPwC01A59IQy@~ZQ&+D+bYz4}VgmwTtTEIPIUyRA(znX#EMQo?~D19yyc zlbcofoW5h`tix-IHg|ny;c9_&stk_DfJNeQeXS5DWRTwv`dAK12~s2M^|2{2ajG;nr9_{TBBgmI z&SQqZMm959I<9>nLr1b06Nkj->+%zG?GwwH1U5#851+IP(G+1If(fyc(u^|?WM)dU z=r$7`jPG6yfAI~;f@X6^+1|Le*K*&ma5OZ4iL!#3{hBoQoXWnUBaP99*tA&tl*E)o zeS$oN)tU0Li}=6ENM_n=QrB}13yfPm92J$!H@#RTr7f>+vpvb^*vz=}1fxA1)TwY# zC$WifVZo6?A3B=3)r;=!n9N7OT#nFp5|82(k?aVmH0|2A#qmdReiu&;do5bChYu%& z?Gx^~ogPa&sc5HVpAPrpBk(M2kjNk={?Utq3FDP$%YjU$w$hMUA{;C!Za%9z71ZQf z!e#eXsKKs@QKrNpwBByt6D1!#lGReIG9dJ&=Np$Ic$mA!gmDtQVK zf>sL@n00;(2=q1SscM(evs`tIZ_#%3B(Mf!z@wb*IDq~XxDcqxPzmM&US_KaFp3T! zRzHx=g^8eUS04ZJwI zeI^$kZpe%jc9bR@D65uV`M&R9k$j|SeiGNq}ayt2GWSH4qz zc2Vt=@v8A&Qzn<3d0oX~S7;?rC5e>(HMQZM>v0-)@ES zwWv+v^a%<21T}f65ojSTVus6z^n-XzaI(I;z}9ych*OZhfo*pGEn7DVxx)#1I!2qk z%c!*{Sj-A9PRz}+Kd~=2E45ggYY+OW1Wd>ivT_rP!?Wz2_l0K#Vf18gZl*+V%f8*pvXT2L zsvxl-E49#`@a7w-1=@m;RQm;)uqtR1L+mNvej_n7D-;CaUBxi6S^Sx#b~1;Md`u8Z zFq*we2bsJa*b$lBjA4&HJ6lEWqll&S zSJdbh7|+%ZWj*sO8g^u1DnF?p-Xp| z&B)Lhp)dlN?kxB{$M=EWbl;1DL)#UKG0AwMc?8uAa^)P1hwkcIXOG?acJ7h6OV|5u z*(`W9csF|1%ddUgT8#<92x317Z}K>5H;{fN(AKqx>h)32`eM!WXWU|opp`y(O=GQTbD$ou?nAnzlW;<9Tl=7%4xA`N#?S`6}%X1 zdCKAPKiYE+Bu?m|u=~{6sPpOzXEF;Q<-Pa ztIkKA4LOB;rIS-DglSS+u=IG)k8qS^-u5T{o$81`IC5c|WglQ(D9%D}KrN##@iZ9b z*2TmJinW(iQYZsHul@;XxI}zNHaT>GC&4nysD-qZQp+rrWvBQtCgMBs`52#_IE4c< zH>fnIM-d4G3u_p@AJmWQ22S7!DYIFBs_rIv4r&1x@H2G8@vhWU zad}Cx+>jcVgeh1doetb;K@{B&pglFUv;Y_c!^GO4Jy%;=dL*|rlc7>%+|cG0B{^k& z)0f+%-(=X5QSi`?_S;QuZV!DuZ>gP6t?!<|dbnSfxD&{yfOT&OsgJR@JQDxl{I5pb zxT(6CeWUCuKfXF=f5E<@di$k&n1z&e1&l;cN%LE~OO)l$?Fnw!)fm3t{$4eh!GEDM zxj;8x4xNoNm7@?06IHv$7U1jeiYIo&Eg-~zsK zKeyo+haKS8NR0Ioj?&o0k~ z>`C}UCfX-{hqubxu)_p-*szHu3-&H;1{X6DHEuZJeIe3*4UJ>sYWF0NpA~88wZa+_ zcOm;kO=C0C&@s)&_MR*G%ASUO&zPzV)itV``08j#=@*>W%WbvL;>q`cZ6Km{?FJH04l zqs#JWr)8I8n=vM_YB`pDT5!cg@`(RI=cPegSFSAeJcD72)#>8;;{us*i`x|+ny@QD zo*tTpF;4G!lllhnUhyH}9xAt^LDlj6y|CZB`>SZL!E32aFZy8vQQkb%{7osJD%)NV zS+z%1m%hI)7i$YkHa)zgBJyAF6L$Z;sNg;P;lnxk&4{*_U9gPhQY(_tgo_TcvgC@y zG9G#&N&deW<#XS8`1|s_v+&b3{Yu0Q# zc;sk9^RZ*~E^C4OISO_mj4r1kj%vLa3s~J$GPlP!u(B=(c;Y>PEI&akXMeIDt*Zyz zbl%E89*Dn}a-$}POrO;!>(^g?%Deu}lgN<(J|=JzJeQ3c>3Z_s{kkuIzt=F^kw>q3 zhx3^=Eyz(_yL@4O2MJbR46YaTyGn(>+=T?$N`LJFXVvl&m%}@F@cegjoj!|pQPE9g z>(itN(dxBWQcD=W^O4(aGb+8P^bh=cQT2!1`oDDtI>+^&PL=(DTmuZ*K`*_iKIu zTs~5i{oS_oMUQhYoL{tQUMTM<|1jTcbLL);df2Py=+QlW3_G*@_>C^>m#?3Lj%7Yx z+pqRp=E;3h%YrIX^vNme>eP~oq}|@+?lp1{(4VCJ=MNlf*e?&L+ZWM4+>{h>1{GjHcG#!w6f zh;yxKo5?%ZgHK9Nj4`V9?D_PQXG%}V4JoO48EQjf-sex~^lQ5?0b~+&$vPdci%-zS zt6h`)L%rhUTU;Y|Ekkcgj>O-7NCp;u{Uu+S*pOBpD|aWdXPyv*`JD{SdU#GSW`Q0g zEA-K@_@!sAT&llYch8V!hnQrYUf7x2JY>K6Y!T^NPex28{Ai*CiCLU6rM$4JN_BeY z$?Yu=yjn#fSC9oX@|peK@q_ae=2M_%Hcwu{_yS68RyP7SBeoWZxj)rmLnvZQg_u+`PIp|Jt~u+^2P zS}{#ZyWD9x(w%O=e<|%pQrc~<*zq>)=|(ASktD@&Xd%4{j}!XyPw02F93Fu+@WG5j zAFLEU2bEMhQ8FRF-3a+jT~?}3DHFnu#+(3$+ck_(Gs%a~TZEJK=5bOU7b^=?S`;e`ECWiv#nD%ZP#s9S~oM zaZ!@C_Zz3c$Vh*^pM8pNUSL_YD4^eKJKZ+C{pFh$hW<_6q@2AkU0YfD#GCX(P5mq$8*YW@*yQQ~5)S zhA0$r7C5sgj*r46!OU&Q>G|v&cYlDckZloK&N(4uZ6st(r9;k;@a|uaNu6JNF zFmm1Frn&(XpdPj?5UT zb`9U`J?8m=mL5WgNz5i{}KC#x<2fjW-^P{gO@XJ_T7$x7sVHW)oHTIIlvZ);Gu%Zpujx9iuKtdOL{jt{{$o-ygumdY*fA)f%dX9o_& zBmng3WD33?Y9MZ5^8iohpB#OE@L+%>6oVg=_l;miHS#o$bYa}KItMIMW9K7;xGEk$ zBJZC)5#Y8@Akt19-czHBypIqg1^&K09)FiPmo{w0@w5x0$LJ$DCOJkI8-r_*wlwTJ zQF<0$ZX{Pg^VD37;Y1szi%@Px%o2uX;~lJzl3|9+1_(XD)v9b2ziFGz<$CPe<`GV< z*AE}Q9X?|6)EL1dC#*4N&v~#q%kk-RUap+CC#Nwi$3xyWoroM}w28C7 z@vYdD?CWbke?D`zAANrhAWasqG9Zf6{vYlI@MVCd0e`!DkoTAUC0xE-QIXu_TVb!< zI{O>MtR*m8|Hb8GCznKI5C6?BqC>DSG9o!BJL0$D;KhQ5mfC0}BNZf+hH`IZ4L|$U zE;1)DIWmG=(fsh2mJQQLYO#Zx z-evIiEW&Fn!X*iLSuPO1I2-bXLVRW30yi`Lg(0B0?gZt&17r&$zO?R` z3yc4DXgk7rBf9&$%@`M)Ao5v^uj7R9vFfoCaw{Bxg}sI`_zC*m0dH!@3?(*B@CZ!N zg8)ZP${u>iAHRt zPD?bTt3nxTH9~>VmY1BUWE*zxZV(7($pXo*>+bE1JV2_JrX?EXC9D7Yu%8@9pdlBZ za9;x;dbd5ly#RLDyL0#mF)LHnSa+HHtp}G`O5L1oswgo_W)Z9*Kna4Rf}8kLO|s0=iUZy>Ij|*&glvL4n7jlJ z1_1}!KWiObAz1hw*zXZ-wd(kUA-aBSNX z_EqD0Dihj=$;em(S9jFy#ENaP@zO_bo+o?!`P~r^ftRcn_Ygp0f z=3KYt@+8uA5cy&%UDZC)JfWwSJdwxg;Wz$7RhW>Mke4W@z4dfix=Kr*m?ylZtIQ+G z7q>~*Czrp2W#Jc+-nN(Y?erW2rM_hD4g8T7@CB|5#4EHfU{ZZqv9~zupJn=;wWT*p zy{R{Yf!B9!dmXH6+Z$x0Z<{0M&^8)s74#r5nW18D>P@_52qQwm?^tn`IE(4}rv`-g zD>|EVVJOnqgj9Rvcx1cA1o_Gr&(tM@9AO=ej@HJ9C&na2>!VX(>dw?20e)iKjqD0T zVXm>nkb_>8)XPctN<(n1ceZ@Y9t><%L_wP))5FvO`XFt1!1i?!w13vX zRL^uD&{b?m zsE8{I$@fj4Tue`nby^w{66bFSlqY9~iq@99{MnH$Ik{yo5m=NYOpj%AVaH?z~S zjYT=8lB5dICjw*vBRdI%i=;*x%-LW}r=)*%=oLs_7Q_@nQK}uCwGBFJ8@A2HI=LO| zW*eaQB$K=eJ}naqbKd`JiB&RMqyU(-y_F*i6m3rMgyIyC$f;1+f;wJ$05XcxN=sF3 ztqT-yT5&$9op3N)vC24ug!YsvgEzcsCHZLkp?Q5D!^RpERcb0bzMT#_$oAMgXfx$- zm9R_qtU5+*sagJ`4Q+}mho8_ zbGeZ-80ZpVDthJdLIUFcVC^l(Y0Lg|TEMN+EuCOhd#$FgEuGNSU;|EGW;CW5z!vF3 zc99f#+Mu#?g`{BKgbhMGx=y1S(Q!Q_FHZ-3%Nc3BEZW!-Cq*9(P%EEn%qEM?=WiGP z?{y5OP29{SOJ>5{GjqxLZz017+dCT4Z_h8838)LiAj~GH(xRP~2w32@0ushVav((p z(2Yq(Tdi>t)b}mmfwlJ}Q1Dv^jH}`+O(s_VCb>OK4$Lz|h$xh32A{Wezz02Hmm)1MffEOA=EmAcJBCV z9V#tb%XcIc`d6z-8oRf;VsD0!l6QtYODkgbrejsz!V(a!qBFmDMaaFCdM)B2OqO7q zsOQL#$>6K#eTJ``GoWaL+VY6q;=X+=#LU7R+NLqv6H0g1U@*uUQ&ThaLjLnJ>qZMA!nZwtCM6f7}u(97v234Al5%M4brS!TxfpDS>9)N z?(z=I7szC^Sqhr*J*}0COWAp(jzX>jG`TVI{K%lpAhmdwnz^xLGr)yj00aaj(qUnA z;7$O06?Dl1>U@fBJx-wh{qY{6mOq0($1yg!a2zPEg|t_EpW>u$JTj~p?u_-7{9QsdcFNh+Bp!(G7(vFs`Avj& zTkeI~mLU_^Pugu6Isx6fndSVc5N7nw-JG>tXFtz-hmUuC;Q8&sqjiUzrmK>Gvtvfl z>3X^2jQqka0^Y(>E#rHtA?9oKk&{Ku)qy4RYJ~;0<4)**M~ki}P+A$MzI-w~VvitB z&IepiI?<u%IUUfEqE!2vu!er4ehS8HqUL z=$g~3nl>F~*U2eAb!#^QX^{ zVaHCMC-T#04tbs0e{$~yguEsw&-B0i%sf(j&Uxx~1^BBYVof zxgjUFP+b@2o*;<6uJ4jX#&jgB6O`S1mRO}pX~~UBZbR_)ox#z$)dvfAR}^K1`=G5{ z1BFm0IyQ-nWhSsLG!MZ}R*qJupa`@!jjm<(v)9QwPr8md%eIg_-1(kdlW)oDpy0%q z9ek`yast9MOr;ss>W&jtW`e8$OIC{$b&0xIULPHk9H(Bm%^Nz--K?y7x|jIXRumZv zb9r3=v)>5*1bu$iRYR>jr7$HYOGQ3A&vhJ~8Wy0BP%jAd-0YJRQWGweYSR*<08r6d zSw}?01%&QOHH7f7Ym*_;lbD^IxL18aS6y~YwL7wKM-K0onUtET$}*)FX65OU@_6Gh z=4adVI>w0w1*VmC0PT?&l&ne!NbrqTdFk_Z?N;Yxrx@}C;}J-i#_M3djWcAWXP!tu zAnax{PD0gmI(NjoX5F$)E2b~3^Z2T$C>7IJ(`hCuC?p|B?HQC)3vHs#tf3?&9||18 zP0r5%=krc|R%(_mOYY3Z&ehJ*&P@!rJIfXmTSG-{VtSRSEF)V^7Bz7l7nK^bJ=0I^ zxN_dmnfo?e%+Eywa+>l~sOjLR7I}I>(SP z{iO<76Br^@h|;lVH>;SATEU{+Dix=xQcJahp!1|yK_3IUPPGyYoK_26y;r&y`_)!T z)gegLk%8(+$thP*b3K)y73L1SN{1T~X!MRFapGpU)=-GpE>QJWXe)EeE16 z%oyou7*Uy~Ys1j1+_`@Kx0-*+SFzs1S4^0-aMq<2KY0I&)tbKNKf5ynP#!BQw9T`I zQDzhUNR1;C$OsMIr$llZ9z|x;tlxpp8t=GhAZRG%$JyP_&ir)q>zi}VjM_Z_tJ_KE zMNh}yLJrq{CrlIhNR7j!62POF0LGb)7x=RH^VJiWSq6X`-M`&3`+RtL9|X%GH0u56_?fAbltF z7Z7+hjdNo`9R7$=TFb4jv%gUPUx`0+o!t#(4DygHSV}*bMr6yVY&iK~nT%|<9Zu|- zXlg%?JY=Q(p0Kx?T^Bg}c&v^Rz}0H?lJ-OprFk-UbMeLLyn`rbr!QVKO>m%HWYaDz zYULedBHMc5B8=i<4JmJMJ-_G7+B56UtUPlR_SMyAPyalU42(UyjL4}RQ4QP3HtKlR z<;=csmY(a8e0|1UGP(5hmBU4sFNYN$xq9>pS$Ji|<-??NpW^-3mfVs@kR$31(^Kv)IA;lnwp zQM1C=H$>}?#v$>&XsnLAcAqURjP?`A!8Fb%5YfOBq}C5@u$9%9Kgx41xzoRi9>sK zlmYIjOlB}v@rGJigOi_@LyWHCBFNm>3c$tfh#UJSbpu1ypTv!!ZdYaEDY}pQW=#nQ zw5+Nq4URG8CGUZ|{S!t~bi}t2fsQ=kcW(KeY zWi0+M1wl4nip9lGi>4HTqyGx*-FqtjI3*4)h<8b8Ef~$Pb5#6H|Shv~JEQ!Hbfi=jR?l!JyQ3CxC!6zP)(PvcoR-zcmb>QgHQD(!H7Z&oy5czF zN}dkYGqn8j({E)r!Zt6_3&`W$lXFVe5LdP>hgT{(UWvuKvkPi!Rbr*(72<~V%s)@h z;Ip6-D<@tu%M^1UHCVgmmbi8>f&byeUELqG9peC3$5WhBv9Y)=m?d(cz-Qhnjg?*zFE-a7@+qCwx zQ3uxjBHZeD=TvNE$2;f3lCBiB?5LHVsl~su5>md249Fwz*D1uUWJsGAFcL?Bj0-b| zn_-;RR0TF3+uwMM2U2+;qBfehrnvJVY;1fÐT?>-5aYhU|+1c>&YMpPK5x#-mbV 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'NS^o{z1ZKlHsAybrl=JE7AP369ntV%vB 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 CDx5C> literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.eot b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000000000000000000000000000000000..c7b00d2ba8896fd29de846b19f89fcf0d56ad152 GIT binary patch literal 76518 zcmZ^JRZtvU(B;hF?rsAN?(R0YJHg%EL-4`f-QC?GxVuBJBzSNO0TKw=Z@2d0uiDz~ z>N?%0@9pZhTXpN4G6MmC{{r-%!vp@O0Rbuhwcr6N8vm31-}!&^|1owS^ws~H{tqAo z$N}5{t^jX<6yPJk2H^Ey%R&Bp#T5O1phx10RX7B{Qt8t9Pl**$n*kadIQ|f;xC*hEUn@g zl*^#1p2$%G{Blbw#9Q*e6@DYa223V18Ij|2&2%cPTvx@iNioUoZ)_KE6Q5=~WJfZ6 z@6#n=xTLp0OA@il+i|so^fL%AHC3|sOKFq@_?XQai){2qkS}rMNBrJi`>xR3*k)Ld4_O*y=YyU9%ULX8Mt|3PGQJ(= zu5_-C{h(64@}ws=y4%mO#^-0|S)8jKTS}tyTCRrQ#rm0C*{&43?>G$we1bThm2RqW zr0DH!n;Ru#`mDbNA2wM$;x!?!a`4fw?Fo~yus67&r1abr>%F0xMWMH?N|{wiNZ+FY zi_q&l)sRzB{O=MeHnz?|4E!7NzLgZx?>wKfMy~TrDUE27f?^!K0pcyz zKgVg~jz3oin*6AlFIecSs@o*bYRurv(wa@E+g$K~!LjVYF|>8*mz38zvT0|~_Z9-@ zFpwD~_2L(!Y&LKA6%F~|!5SJ(mBsg47{V^nyZ*x17OEqVyB;cG?Qs2f_ZtmwuJ*$; zrV4&09S>ZcsCt|3)l&E7&8T&q9=-bJiHDK3=i=dX9doW52uEMp^BA|^$Stu z_bobQ9n=z83Z~xpsct18Hw06@v%p4TXJGmaJEDy&(-v74j^{YHE3)iSLyj)+MAzaq zSB+BK=7$bIV5~T@od+AQJY2H9n&J;sL(S53?(5d<&xHEKF#(AEjDF0n9Jl27)uNRn z=Zqk(EM~|62JY~o@N;`C!oum~!C=AiA|~s%&&Ik>G**GymPqvB`PYqZ;u*QIa+@iL!)+*8P-7K zBA6oelJuQCvn?-o2%~luo8?Xb+G!NZ!7(~d1g2ttZM_#V^1$i{p!Qb*N$?!^+u*hF zV7O^eAoMadrY~~UdHTy?%pjJPqalWC^&_g56Y~m9&?E}nU5>dTmN*NFuSg;4cIJNE z2^EiW?@vNZ#r%d;BJ`>nq>m?N?9aCRC>Eh zlV6Ugn6XebS>cYT-zx{MC|>X&wjrrzRb@<5rN9sBgK3+zcK*f~#(jWcq}V82ZaN6! z3x!(uoZC?rX`+`TZExW@B_Jd`o0*~rUKsn%1&5+DXP_)=VVN6Rw_<%|IIeJXU{K?4 zkvpJ6ee4r5g*02SaFM0f$+GrDNoKlJ$fXCjeyCd_b;&|GDk?G#%7IhpGA~XrsRNoT zSn_IST!)8|RdNz{EK?$GHsh7BU%UL{N}W5${L)#YgMB{m(WaRfq+Ozk=>6yo6i(u{ zf(b&PyZaNLrRm8d?nLwm4RCW`F=y{wXwBU<1oh#53u%tXKBrZtC;g$CQwJ|3=?DCD zerFLv5RFMpC{V>kQ+TCYW{$YVXPdLvhk1i?2BH7*5zlBC=Eg2pWli#0yzi%PDl04! zX&Dv67bLYow-X+mpm<KPeKlSsQEOh60QCqd>_Y|7@=xfK+ngw^ zD9o5yHpH4sx!(oAf3Z~ut%84X+V41Y!;?fEQq#q#+CzZ?=oBqWXmCht%;@0qn-pXU z6&ZLq5MdGq=bNj3NOl3&${$YR2TE&Oh0hG0G2EOV^jo8A(1&RttcnDJzR-h1D#R0}zqpfOicY zzq2MeIM+kW>E-B>q$uKRN2tGiHnK}WNo6&OL>_t; zV1rZISSu}XgE-OkNg2_I@hb}1C?6<}M=_hc-{W8hM8NN;GYL+>#KK0dwCHrBex*Uqk)i)Dqd zU#lhxdi%Txp@ah5XeFm?k7_Yodp z-!k}ec>%eSm}S5O#=xIi$W$Rq_rR|K6>k|OA9X3z72fKks33U6BPZizFb_rTqPa<4 z;wu%~I7|kQWi{Idir_c6&L3<@%aS;uJbxr9td_oX+ztx@{eMop15cA&f zZiD^v=IYY`&qlv@6!HQpzSQKsQBb<*bcP;=jaHWhB2F^2tHq%Km@FhCs z{w($Y`FD&xEyPe52lc_;IpIF-4O|#a2C?nfX+bMIXiumj=O%J`M;E)dMDr)&@>{8C z3)nyTY?5I}>~fhpzYH!hfU7Dx2qW9CttqrJKu+NeWg8bK1ldYw%># z7D=t1FVzX${`^Rx_Q-`n#>5qB3-9K1!*Xpt%P!%+rm=Mzdi@Jv-Mdm(4nCkDi1#eo>L7qH7Xc{4y>=Zeb+Acl}PCs zP|AstTnUNT8LcRAh$XiY&;YtB)*~5^(DOj|p#-~{ESml1S>;0Ihcen0Y@f$jkYvz2 zlW{_1tCm4;RV=Sq@*X zmZs7>+b|O^;)AHk%5D8>7yOUqk}r&jH`_jC_&4rN32Uik1G+>)%Ej{3OW%M*irgZsH)L#PyqEESx$?Bw z(TuNjVL(pLO3PO3^)xyaV&7$hStYhzf%C&8Z|?JwE{VP%s5F$D11$(l8@ST;pbV_A!S5i<$-LImWb|qUoY( zgN-4291V9tZkzizQhq=oU!hNIw6!x{8rpt=AC4u-pxG>Xjeqc9#7@E!m<4@k`?Xc3L zGW*|?jHH~P{52A-aV(Q#{5es%%#G>8C-I`9`^(zDzJgCtLZ*03KIvH6jYvVe~m9=u?k})-Q$0N@CYmQMic;bnk2iJ>Vm8OKV6M&st{n4thcQ|8w z7ghMeK(fX}mM?x8ly1=nqrOKo4P7{=2?9!(bUPhZ*cvf1)bY705uSXn9{deye9Jvelcco2b>1-ZJ}k zFmR^35d_{lz01HTCO8%h4`fhpf)ySyi8hqDTcE(`V1*98k+0cyKPG&K99MoPzY8H%gq4+vdug@>y;9pP%`0(vW5A;I|G%#vZOyK?F z*(Px`vSR3C5JU%x4YH49uOow^77PJrF!ST?xHI~)rAc748p=xY%*3S*Qe3gKQg@pK z49qeg8DkFigyGW>y@|>zttBjSBN$SjknA5 z{#6t?XWP<2GvG6%gog<3*CmZL3)K(*_U>y|O^fpiv&bA|&5RY{7dxl^*^+goJg2=$S8q^swAAT(IoKD~`el<+KI_b*qBp>Acw-d+=MRc4pnDWkV_ zE<-7i*`{-C#UsdI++oxdg-81&2=U7rtwb-4H(MnnJFYlY>jaoE&5kQC`6+!hPo3Y= zbuYPeeaqMB&TtQ&zTJL@@s|{*iX`!P3ws)`oD8McaxEUl1P{3{P07T?i$-JOq)JIq zgRQ`>ilyi5qi{KImy=g-y`U>FT$K`LUty3n>wG0d8N(dMSlmUn^@~JG65S6ak|v%X z>G(IGs&}$r%!vWT1Fm@Eha|%nDG3II4qI;L3SHk4It}(`fHB3W@{Sx7Sz$$dK@)6~ zEMrYY=)_JoWHFc&Jy?*ozRL{n7UPAF_`8^_cxG5<(O0-YRVl5KkW}e?m3H!uh08E4 zcuqC?kiQ;5F5;Uerw;!g2G^M+XHOwy8XWG2d~gLlX^queZie2A3fFhiW7Jlz$8JSG zZRy9o7nLFKFwK`I7JA_bG3~WM_|p1alZ)@~b;MwEwv72`+N5ZECd|CyvsQNlYuxb%h{b6L)Yd4j zJr90~RK>_YG^dJlW#khv(r~oQlosf#7ncRUWMR-q=P~X_f_i#ftf&oHchD~dt_g2A z%SjtjfmS3Prw1h?V=Cl(OvJnPtL6{wwiNU}Qf(Vpe;`IjHGyRu^~q>>+p0uU2lw$x zzX{EKe%A>2&+cpPB+z2=wR_UL_kp=Ktw&-BlZ(aDP&&}Rk9}#xnfy``eTj|gL?Rz; zq5Rvq?aipr>Vy{d#RXNkh3YsJ+s}1u62e(X+T!j+fEOV-9x?NQ(Bk{uiNF@>*)Y@8 zK5|n2^0F4<(YBlU((CA|SGy|XtPpi{lvjSEv=Alv4>(f+IrX7c@bO2+5m;?P0&{fX zxMlz*4#ik)>qCBM1YKaeT#(BXZ9Hf^y#EuDS{@-PIFz=<>Z4a zaIz;#wAF~((i*{OJl~6H8L-h5knI+m*+y3Y)%XfVBDmPk^kz}>xpPodw4Vy%M+srn zfa$)D7(JGeS`AZy<*vyv5lX1n@N`g>rDmI+t#5>9;vOmnHoYtg7Yv}5p7P2yCcRW| zzlUBs$qrUX{3nw|v~_f`>(SgZ`Qa4+Tx1c*l+IzVLbwvDr;P1?$^^UUn!-^}@8Xnm z%fd~=#ZUe-g`*?%S`N1GieL}Lb3o(#AsixR+*z4YGbFTgCQQT#pN*A}NAQIru4^_Q zfGfqz&^(HDzlOh9nRMIRoK5pphXL(PjR^nzg-K|CT`_RkoAZ+(ni{!)1(8u4%#Ssa zc8wPx(53`h2TV}su1f_>Xz;<;0JgxwSB_oVqd;c2Dhi)MZS6Xd44JM+PmT7)IS6ju zrIlm;LReLX))zEtCvMC)>Sk4~wk0I`<4^kT@r8PsP{OfG?uC<28Hf$2oSF$cn$F+o zG1)UiCyfq0t*RJBr7TA_ry@;aEmIS=;e)hq8My+vN-x70gEOKQIsIlGhsWQBCQ^h) zW^)Cxr9?04EB4#0R0d^BS)IEzHm03mqmV4k(Y&49K$a)lfPC7}=$Pb{vS!aGJUz8u{xMruX(ZtQ$Vupj8u)z@a(< zp2!MSE5l0Ph1{$p_A^p{yDwt=0Nu%Y} zF5A7rB?;Mo@{eMwB!WE>5v-n-LtHT*sF}nfV1vaYt2(D26~VK_9Aos3VD(LL+qC( zi;TPVQDWu#gBs})2zSe}9{sPpWd8|~1u=Jd*KFN%4FR`%Whxfr#}0H@%bbCFGAM^X*lh$E+~aZQ zXaUMlg<>2!by_7y1^eYlKdJos+F357hHF;RLdIlp@q3ddq;(KnP;bE{U5|d;1@D=w zV>w)+K=!izn^)|>yBED~ z5=r>LT7R54^@n!+@L61Y(Pw%uI-+@hw1~cV^8&2|fKr~4B(av!>$7 zrC(%zIs2pNRwxiKNbtMy$> zWtRM|L$1SJq!e6jiW^Rw%*s1-A{;-ulF{wX!>~nrl)Gi7bim2+gGp_F6|cOET9-MC zIR7|-f0wiM>m?Oe^MJ*h^Gy_KK5cFLI_lfek(OL?t(NJUzeC$3`DCWWB6oxc?t)4SW$=c1L-XR?gKjR6Z z%?e3HKEkP$k8_FS8)D)1M++Ye?E;^@B2atFY;JXYNvE_jX|4nLe+4`QlIoU#r7-ZN z9w%ORF!TdEE32>(PP*9f!4+1ypjF8X34VRdCG>HWCXSZ+4n3H)>6&dLmDWrcEa$2m$ z<{P|tfdhbDou2!+3#eDom0vm@rRTzdaNf?nr%1`}2fuAx?vw1XxNjyCVu`X4lfCPO zQw{A&4#6$$$uk_U2))K_Xp5H)Ynj;M%OG+#5wovXa41ut|FriC zZ5?nF#JuH|{ni@Rb1?Wt0L4ckFaEV!VW!ox)2vWV@m0ortHgG<(|&aztcf*qm+?!L z)zAGm9oxG%PF6M%JF9lvlniIsGlaGwZ)XwlR?d=41aBnzLpe1FoItFRR;`$mDLx}A zXs(tnZMYsu$8goUuhiJ6uK@{%@GO~1CH!K6;^W6x_<&#;VzU=8n&L{Tu=AvTmmg1Y z%U|1*!pwm5>I!81otTNe4X4)T`r@h)MLmIfania|o4YiMP_|=}*4 zm_pWIwxkEH#`m|aw5Oj2cV-uB#SJ`daQMf&=~kRF@3xsN+UR(DDz5Yk8lDcaoW=`$ z;qNA4Vl#=JGw=*2{Zi7KlpC7JONZ1XD_bq&cHo~j$03Xtp1(JuD@k*#UgfxYMp_f1 zHeEc9Kcgq&|B5(vDZy+(Etf2hJ>k|_^m5d}rVF#m0M#V`Q9`v_-A*{>_qn*375dUg z20xPEwUamwFwVaNtLQZ3gYac3D)sy^c<-eomp&)JqaRT_aA6r=N2r6`KOM+GMJ=uR zJJSx}{}`IzagvLgClXz7Op`%JxJVWdnAdVtZ1L!MfIpFd5$mbn)VtpZ2Dq#c};nB58w+tL1@BkvVm+h71i)f_rIG$a3$o)nd2gZCgqZg~DGttbCOjwn?T1fRRA~iA+N6zr-;& z7UpcL;{pJJf)iyuS*g7~6!ti&x@hgZ#xgHB8ZB0#Wgu+Hz!hHcArgMW)f)z%?s16( zJeG`Z`(w!uZJjB~*T>P26oGK0$6Ra+4CRgGJkwbG9@u7+)h--#OMaS^94%|>j;>R~ zT%qfgW0)@wi&e~`^<*MZCoDx~+mYuARSCYEm>;`|buUuX)z=r)Q}WwRB&Vel;HOqY zt?1$U*XyTspA5UDMs;VDIKkBMCB~1`(9)wALGvaW59!Wb3>nh!}Np-waLby1tarvXP0A|3ysMqsnTY z7IT-5SgV|NZN3<9`r9|e9fK*l^~72~4KML@f2-=7XWD<6>M0GD5j6}OvWt#l46g@+ zBn=-(Fs@xS?n)J$Xr>RwZ_#oKk$->E5KPBlHq*q3&L}J6YBw6pbza1XN073{97~#q zTReDJZ>6J@;i^yfR}+Lp_`&iT@`z?ozx07)PYkFJXy~x!aMN}S`gwL~_GHQp#>HGX zc~A1Bx|bR2FLSL3hpVg$;3TbFS7q&}#y9$O_!03nh!J87!{4e)7zFtHXwl@hB7Ltnv=C{#bIp5A)l^z}mW$@fR7r0bAlUmCVRMlibs5x5Fq4U26 zSFZIg+>*5IGz!0zBUOpKJ^_PQ{#c44>MBlmvZ+1}#mCe>UnZt2iU;`b4=Ks`%8=u9 z$TmiTS2eHRY>QENc*e&d zSDHMkA*D}>uf!<*^B@wSh{4gG$_){w<$pQR|-hgLw&6qP`8Ot%3y;b<*UB2J;84$BC@z( z0JW2)PBTCCKjX|mU582DgEFE<$JPnr*zT}0k1YqgH^4CNNRbg-kp)`adn6aOvc~Tn zZ**XdG-;klXk22VA)~sxk zl~ViCm}zxxbQj#Q`nC&yi@#^Z4_kTje7HHX#Z9r)ohqOEbpwy|I29~GU6A64V_oa- zLeTsWwy=D=%p;5cn~o;lcCmBai2-3vZ%ow2_$y+$xZE9a9NyBP=T&sy)Ht&2m;fC*D$x5eeA zk|-3we#iLoM>`ak;r{MPxn_C^#s}X4GPjq<$1sEism9i!lz}3?-rmuB8BWatzqo_u zwojq@6^6W+?#sB(9A-t6S&x7YT$vmtWaS;So$z-~JKO2G?-jkjqh>t+a_WEt+UFN2 zX@i+V!X=T>N6gbBpMIqWgnj>PP)q5?JS)9!FEc|KN!IE{ij84)nbj-Fp?IQ>I3o*tsg#=d zduJ2{dC>k_+kw1CyPEmT_g$u?`dcCuf3qeu{4TTVg=R*}j9DycOo`bl2sfcvQuTPx z?po`60aA%Z<-w~g69NG@P}incHlH&rU9IM^nT~4%9$7g^@?rS!(MqgRJAhv=01gvcsK9^v8!{G&A@>6m%IkksPO8n*BL%HvD+ z#1N7N*nuKngpyM}cTkz$mIui*s@j$rcOKW;h8LAWl|eNQQ+A}^V=lrg45+OX9s2t8 zAYKBQRcHvp{l_zqn{q94ZJm+Q9>$`T9V9WCTy`4=i*k~7emc>orp&GxoJ`xJ@4OpD z*Rn@(dYy_9^u3@7bxh7W)JC(!q&=JLC9+=wxj+;eROQ*+{T{CIb;eL{Yt^8Zu`zc< z6ptq)CN(2r-zo;gjze{^RT84YICcamlGLO+%Gl7MtQj`-vwL7&?an*?+sn~_ zt`vD-=Lpc(ZfZb7+HU?4^Om-*0Q>zK1gOU&R;H*WI9<0)Hmhh?85x07-0Ho$td7vV z(N&g`doL6KXLkkXfHP59hvX-7jiW1H`QI3|tb3JWmwKYdXIJ_(}J1UBkge6&iZ6@DsuDW^%3T)knHF{CVE z%`NIrU76*s&S;^Ux)-wRNNKGyW0@S~o%L&f=^6HwcK7Zq?`uX^n3EUiTSg#O631ZK zhePX`V<*B=tqBB-E2jueWZP5*2ZYJqU~6 zBthp-#yiU7$bn-vlO{XhsQf+=_^5EWB&PL>(qQ{5(}N~^_l1F9M0crNEp74zU!CK* z5+0OcMd~LgQO6}Z{I{s$OauK+_pEI+*`E%*Qhn)cU&#&3uVg2pro5A_Js>f_SFWf| zcNd_qX(H_|;#0s#1?X5;oeHPuVm^XdAWkDlU6o`E4+fXA(tI=sV*EvvJr^BUTjg;L zRc>*Ov4>gW1(e#kqZJaVa=D$r3@~-;gkt_7CDSb-BI5{CVU1xd=d>b)(K?zRSwgi; z`Ov)Xqi6P9&?ZzD^ZS5DaAU6Ejbx1W#ue3tB)PPgx}pxCWbnu{7TB zT5)79g_Sw+<3?74^>ArZ=-u%^Ox&LRnZA_Wv>%$&R=L83HBq0j6kvSW#Y`0dvfYAc zwucJsR2@!xnRV+ksY}=3*80R548sDS$t9ZDG;8|8%B_QsRz7bpV@d6C#Pe>TJ17NV zPS3X<+Dsc$rV!d}7La2q#0e-;nkB=jzDzIWm*iXVnd2wUjl266^DEuOIvAzaYfAwS zMT;_^d3Wa)Pky!*tkS+&(k!z>7*v2O5{HaDz>TOYWc__NV^L^s&?A|2sO6nge%=ZY z0|*A1n5qp&3XBKw*I0a1{O6+qroT(KmtZX$cGrM3Cg$8Q|BoVSrxnyM{uJ1TS$$|R;P07KaK|`q;h~KgahRhdM`*O!*o`&YmZ&TQ zqx;X%9TI=&7eKZ$4H7tc@D6&*;=-7Vy_b6lfPYR&;r=jkYmHTbNnt8oB5s9!;m~48 z$T{?_x9Q>K5M&bdQD-N^4`e&2_iG-nl?uBCnu2-7t7;W(f&r*Faq}WFqxK}fGayft z)2xxKu59kD-q$3x{4Id}%C@T?h4XV#XZE-RCr=F1}H^Y)jtRPPxHA0Uo&r+>O z0g7T-m&;kfeyy1b(v1=qefXt98L}400}2#KTYOa9QP!$zVVa@l5Y3dB@kZoAmfX;R zV>upE4WL$a_v6;N{@Q_c2W1j3eW!$A88^N)*fdVT@zQkh3 zD*h+>;mydfvTvZwH$P2qyUz32NAK$g^se~NX6Bn};&&J>)-!r#zd!ES@T-VVcuNTs z#3gC0WlM5X0whJV-AePkU&L%;{d8M7f7)W0Ay~S2(YrCc*DcM5v;mz_CebG?Xs89k zw05F#M-qY;kE59naU7lOpeuO=QLnK{-i<-p@Ay#T@|5$}Fj$R~H?NH10z49&!d6^B z7n)z_l=cXO)^NZr8Dw;KfXn!?50wcGz&ra9b@*Wu5y+`MMSa;Q)WzaIzhKO+lgsA< ztmylLs$4O^cLMW=H_M;8?{_5F@j7rXnqGDvw!>?tPW}heo1^k*f(ZXkR-y z&s+%>H#vA}82FR_f(62_G4ts@x96YP>D3#@P#f~cVJ~wNclR8P|^=TnxtH0 z!SXNPWDbP}(x}4cl|*h>{AkXKosER(+hLI#U!h1gw-EpNa#Cs03vcWxb6)|ux6snx z?6YA;_4JOl@3*v+FocRkjV?s`#Gq{Lt)Am#mh`=sS>v82BBS)aD=Pp z56y9Gct{k#+V=4#Ai|?q1q~N!V(!DfRu2XB3#SdAvc@ILjAo9ZvL44{LX`_S{@}91 zfLN7!wAQV06aYK5yr|AwF1hQ8*Ewn1{%4(E%WPGXFcIMpF`Z8vXejimaC6#84x0ML*)wNq|d{d@v1!m zby#$pb&l6P)aA0emeBo4ba?37pl?(#?p1N&$x@}a$)IVs@2S(xN+5tI-GG8^&y&&n z&A+pD{IhPB&D{;zMrD{lhNURjPETasrX4R1uGuLkEib=3f#TY9&6! ze2&2$z}3R(a8k&G6q^`8kSig0ykqA9hf^5A)l7B5PH;+|14qC6xgA6)^odb+ z!cfr{LF%gp?8;5^x?{MkYt0&vvASrI^3q}VHY7l`GoV_y#EF83~NB0Ubl)E6~1Q=JFOq0Z6T44Kw#3WLy5tGrJ*^95D?mxR(m zE0S>-2bJ0m-;E(Wn5@XSWW!OlRRWDCRcLhp1%O$TK<9~AWI4mt>f^K$i8Mmm>e&-{ zE=KIM7Jz!v>+P#6pfhH~uEF9u)Qb`C_Z6W#$yrOb z??i}Sau93jat+Q&t}qG42(E7Aes*_2m#Z7i#}&C(4Pd4G(7vGts2nLsO-cK05Z@pC zEfQs7vPJeA(b|qp_uq{$D8QCtCHB!Y=~=D46fj)#H5Z^gh*DREuh2?`K+vw+R>}C$ zR%n>vs4tlj)fF;u+q2R6IKG(`&tV5&(~*NG%!iXnPdh6ACF@j{+M~gq0^vTifT`DzkCqV)_^*;_t z?%X=Gw?Q~DzH^#b`oxYO=scL@~qpi;O&x;(<7Sj z_1rYs5pajTzTPm~H$)6JQxH5^NRQWJA;k&&xH03VVec6yQgAMZly zFbO9!{1N&0s`b>i!5KWMewhlKV}y|>tMMcbvWb(=HnL1Z(po8oTFR#YKc9{)O=9NY zD1awJo$R7)(V-0=pp!o&o`%NU4wGJx=ltqD?$!2{&Du^P69~sB)Jk=M&=N|3Oi*c! zY`Ot%&<(AGrt5X*p|&NiGTw$O-uG-Z&BD*c7!vO1?-c_7C1-ePl&M^NZ z@sV%Dh(*wq1~%oo%N|$$&$;`_rnx_Pu0Q&7GkswF1nI~y>t#ElK(6*9#$uK>sej#e z<`2ZEq^EAM&sdme`&eIKG2d+o2>ulmh#=la54V{Ho+GpZO9 zaAzHB%$GQuL;t#}c3v)y8h(F-P?ezCBiW#90Ou^qX_yY*u8HiYdx47YA~HkP9NOB+JY2 ztxPT;X?H>ES(<}W0z3Xp=1|T(b;$`f9{fb?bpVf`q8S?;`D3jgk9cQ?-~G#k_>ad0 zpaR9ya?fYn05QYxp_78F^0)M)k+9wMYdzg+x=fJe_~J2pEz75!`W!*iTY7&~^ODkB zSr`xUC;-j2#MtCVK5d3`(%M@u^2iRkvJ$Z!3eq3D99duVFa!VKM4 zTtt=2VgVw8tiWbn9u{zx=3$P<6mxLF8zWLpDsy|F&xIs$s=&&=(%sD1gsB3mPwW@? z0W<{G-)JN;CjPK6df$c(Sno(3zZ8g9i}vLm4ud~Gpvqr&eim_#c+S8wt-QW8+a#F> zE&OC*u%p6Gsj=$Q=*uT3E;`ZCQGL?LNPHJ+G}k5M@?k8^>XZH_=rT4(CdTLIGhNLQ z`~-J{`z=&^-b5=(vC}&jk5p8o?SLAj%@@4)#HJNNLQk=Lch<&^g@FC%PDAa6JP|J^ zSZMpiOprq3QzV+Nx(K88S5XNIS?oK40@+?U*t zzI?Bk#)1L50E!au_7e16j8_urA2D4l`QOGA#^hP-YMSlKH6RJY3o91sPXDkB;vm(v zTG~b~JW^K5r4U7qd{iTKBS-~fn5kcl_zZpbdHA>h$RPM zhAGVabHg-B!$YQbocLrTH1fzsPpgbh&J#}cVkrmM>PiCf&0`32@81ZEV{z705cex9 zo8y#4k#|Rh%$^?I(qt~3#xpY z`ga*dx}*Qe=m0eTrFx!M*~5bE1b!2cDV5MEvukT}Kukems{D+PZZ1$lqBL{qoQg{v zSdoWv+CjVvCTUjtN)`q(b@W1h)6EKzTep)p+Jsz1?v;PPNn0a!Cz|jd$e}8GPfQ`v z!deRYNY{)rR_U@y_cuXj8w>?YZv>h~hx1p*m@XbVW3&v=+4kM0@{^DGESiWsG}?#a zj+!6QJoxL2G70jbu(DNe=(;V8*r5iVSEm`Vmo|>yhpEL?_})!wX;4do?(->kenzh| zEglV5Vg9fgOSn#X@Dj#m-iOJ!))PzWU?X5(N-s2-T$*wl=2m=>ViWiw(fzYb^jy&# zRP*+blhO{`KD~w!(Bk^jyy3ziqZr8wZCWN($i?z_)3&hV6E6HC76k;S?AKK2)? zC^`K=9B-KOdI~i-a`&uJi<`uWx_G~Xi5}{8{9ybvoWz=fgq9no*8Ffqb9`)SL}u*I zVHBft;EZjVy$=KocSUB+SSuoK9eH;G6ZHbV+v{DLD>ksJ+oDEv%^GTl^%!?m&7#%$v&m{2N~mV3zVocl-e zV$E)08eyW|u{O@|LNL4Pedz3z;q|e8$opdQJ>bM850y4<3a4$@UU;i@Z^2okY9_X9 zInWaI#=Ds1KXsqr*t{U&L&)}d(Ganur`4Et)Gk^}a@5fe?SEHtRIR|K@S`?(3dR;G zQ85L%VQXlZGd3PeRfD^rql`8>*#k8tMD?7JIFlR5&;G=RQvE5bB`R~AQ&zey&)M8N zEmm^+TeHNfcGz}HDa}l81`7#$k8*O&WVdxLJXe|@VX(6D^?z@B?u;uJ(olj{z7>su zC#}J{XiIxi)Ox>Qq_!s&`LXCxOJJT0UX{!{smJz^cpN~UvmoD*uOL9MJ&X>=S@LO4 zF}!``sYN>GQOKYinj)}6efP7(#vq?rzR$0z(tvmmivrvTCX*)a50Puil%3zZx9 zC}pf?tOP5ly5v^a`zReScF^$gfDS>Vh|snQuCA4q$_But2oqTIdM9uYK(A=}%kIqA zWU6Ym^qE!W#saA+-t2HcC>Z%ILxNZ?of8*M(756UfpyxbWXKf_xmr`}@Q!ues=l3i zd`2dIZf*su00o8FDgyHR3i_#~yam8aa+NGS-_g|%*;QsEbH^vRD!% z8azp}Uq^dJIqoBJP!RN8;(y^m{qks;&CwDzBpzX~DvzYDP~1Oh76FOElR5{Rrb!3w-4fvF@7eof?Fh#GzcMlmaC^$4%N3nv%yb*Qre+m zOpR57XcKI+1X9nd=poXR_~gI}VA7pWp=PGAuhu0X$y59FM|{~NUQYzm=*GF?!fnp2 z)((Y}BQ#t}Mtf(E2%7>oXDMDMFHpLfX22S99VnI|a5XwQ_aN}Je)*kZPo64HYEmrG z8u3Yp&HG1$G*gi|{SXY|Nvp>tj>h5*JexR(ezb^gl$FISb|d>ZNkR&xFi)}Nm;;71 z;Gmf1O%R{V;{Rc4Qb*#b->^1(NgTwg(}FhHFlHL?*S!l;XZK~<=x9CK?kCV58c@H|y(ETCdqd9|^8 z1u7`r7(XTk`dPjJ2G)Ug6;-F1{b+vym)!KCR6yX(G5J%!ouIwIFqzVV*S9h2!0a>0;YjB?@cm!8IXljZR!dmD2>tN<@_GK`1>0Z_Q;vNx4u}=)CBN ziwPa99Dh<=X;EOYJ!Hf|TV!XGVFSYz&fzIB(J%*&ihBz*7J32D!+iPn$st7oSYakZ zEO5d;MuUf7sgad}f&i*^2jjWVvLHSH4BIzb|b0A3fI07mknVqp&{Ax0Z&&JY&E#eg&ErHdwv zw>B(=v+Uy9Vco6p)c{gO280b~lyn=KI5k0`%M>1JO>uuuzhyVoy9Q-G+`ptjp>h zo44w;?o6>{>g87d0KaU9htDJdlXSI=ql_e5u-#E`y}U{Y@nzMmFov+-!qy=PBi*~_ znq!TaZ~u6VKmj$~mY3aP`UuT~_JEfWCZba;;EVv;-BYi=%G9O{U6u;pA;~@GLO3UP zgo>XDyFd=*Z;)kvCP&hf36EFSE^e)O8Pk!OUzl*Lx8q^o`_ufSMG;rAfHJP{7*H%} zv_t~gAOM_70j?r9>BaQPPp8Hn)2x$82DKGSe@6Lwj8t7@<5__U66x>?N}IpQWTHIQ z`cF&b>xtF0J2*MjML45y^-WQ)!31em$JWst0kS>&*smKjE9{jdr;I2ZP!3k_;LFtQGLQx}6bWvynfH6MW#_8+lh z1rrb}PhtBCCvbcS#Km0|4$Yh3iZOdzlg;714m5YeQC9p*wlGXjd?*z1T?4UJ!Tc19 zb{W(8&?&X?6kPhof$EA8-NI!~H*hlY7%eipd53rjJ$;7px-5AOmzNcVOgbDEL)+p7 z!x(0*t|Ee>4@N+SR&BxX_G++9QVv8B5e`-s7AOD|Ee5sgBE%-1r7Vo2Qp&(4H$J<- zFF&E>-P4#&+jM{|0FS{4a!jD*ZjP128{+qHvoJ1ZL*y3};TacT)BZ)TsSelUdF4N< z?F)(+%(bq8ajUARy9&)QFbQ#C;ax=@tIEMf*9}6^VQNakjPbcsA z=%~tnDTyuWJk-;v`4J$Ru*|kBI@zoTWG%eVf4#j|l-~n1P$QsSL;$8A!9S%=!`9H} za0x5~2cgdTg9$r5AsStY7$y80DT-dWEgaF-%_mp6C$eCazB$%4D^`17Dy5hVv=d=aDRFjsnBzTD*sju)@q~_|wDb@)WxsaENW1K4>-w zJ}KoiwT13~^-$|Xq{0U~qoGvhC-Y{5Gs*zp(}ZX)NGBG}>dU%*(S|M-3P3F!9fyG_ z*z)9WG#e4i>9Or1{=|WSC4|qyXZMp;cCIT->1WBV=0DG|7PHTAb5jAeYH?bytEr-Z zat#7~;Xw#LH7GvL0|p3AFqX_Bz)pPwq@BjGX5jtGfWRO!V)=PRZG0Ye#} zUKE|PqCwaV2hYnccj*E^itgl5@Y1EWxGr)oL-iWhAclQFic#`DA@qeyc8R$dS$>c^ zq-x=D-j|HioIsBZMqFV!EclL?*<`5~ZDE=6F$zhx{5s;*c0@EaMBpN(ie;p1h#IIW z*SnSo0kVxC0?Sy)RPh!83B?BT(N}aC2#XC-sQx2MLPSY7Ye0&5jZU(gfiHMVmse9eny}OWE|_ss`HBl+m3WYr zgNf-bi)Zw8+Y&8s0d?7ao717BRtpn#y2BS7B-DdJbG8m5!toU}12^UvAP~Y4C@oBt z_VKw-4cI_nE)RK}Zan<9HK)en$NeugoFm$U4`-4B1ya|*xMd>6J87B|5d@+7`LESV z^sk_GpIYwFB3}gn1!EwRuFBoF7*7HSD^h`BvFw6TxX@rO66y?DWUtl(oK6U_#(fv* z<}ZntO77Prb--aU{TE1kK@!}ulUcyF3u@6{cheLxLa%MsfsF8e2Ucj~OJ=?n%ThT( z@WneCLW~cHAwy>~_U)jeR6`SBqX0xMC!8b+k>%m9xbQ-PK1Di5@(V(B9{FUdkdgBU zR6ww0h*M~bKq8C**wwK8QvL2L->5Q=BO4((Ig*SGqL51*^7&6hJfEaeFh|&$$$*bB zn#J28P-jL65un5eHG|Ml>GTChl-6hrPS*=AY)dfdkb=S{L6I%;2p`RFN-ZbymsW~n zpg4pZ2zwbmgz_{S7Cuu738@d`qHYkW62j9$^l>6AViD%Sw*T$O!qb~@GRw5v!z(^4~ zDO+V>5DQY3ZE(c(d_TTcfGVZwOHI{fbS(ou7UOymr_hcK>~3$hqA zsJlPVTAVE+lzT?|$^tW>T*fQPg6DXPJ_C$^%{3HSHRT&@4V?lyizRW*bS}qLA!zwo zb=>kits?_nscSE9;;`<=Gv(>uRE26gV7|L+69YEbcUnxP9`XU`-c#Q zy}>AzqxiGcwAC61DO)7YRgxJsy~C$M5PO73!il3ZkPaxY`$^n+V>;qxg>{vTc~lj} zU{rCL6!&94Vc5zkvf`4z`A;M>VE7HA;zWo(*7=*K?t9_lm|lR9N04|fIxsq+T{IN| zf&MLru8%{Ch%C|87E1`O_n>XtipEGZ8H(~24)8*gmD_3O{wf>7DdLqm)$(Lu_2~vF zYHvBColR*ebHraLdAz-*bZS@l$#lkLMWEg1pJ2K^weak6X2;+rlDkIEvsOj*` ztPGBiwg^tv2(%6iTp`=;pQX{iqKu+^0i` zl{ za_YycuGTRZAz?+i3obzpw2O3ATAI#)eLfBH^$W5pzhYC4gkA_qnI;~^fe{ife|57; zYzKn7nz()A$(=HV!Xhm}u;7q63P8d9qeaEywQSv#Ie1Iq zk|Or<2`8;U#0x|vYZ+n48YbdRYb=@$L_?POJFFrpC^{ebT+YK#5}>zva-F6vbTCqU z3u5p#4k)$M%qb==Q~*NK7{G4sFkE2{-P>?jbh0ENcQ>RV>O_K&OCCTI0<2_VPK}Jh zS`r74775h?Bg9V<6^X(Fb|k@|qhJ`MB1S3{E?XfrnVW%}C++Xf;mh)&(B<51J|G(u zM3B(E6j+@*|2BxxERh(i?3_glJ~R2tc%*He2*r8&2SM3*Yd{K<5+Nv8wbbXrD{}PG^a|s5;iDU(;+#tQ&&&Ej+7j_~{ zpab$i28w|oY=yd!{K{?RM&)sESTUv+MBNS=5(QB65LN3-!Q&NuqCj?2TQC&tv(j80 z+%kYd$ovu(s4$5p?vnva4StrRQ3l7sML2`t7Z@=DaiEC~1wxw-*dI=EN6q#@NmD3Z zaThw^U20ho?SLzwCpT}1ZxDde%oZnTS!4@3>ca}0U2zNKqh&LLT0lrx)-Q)XUY9xlM%4alfrTq9*-7VEvfT+ zQQ^WwH&Flh7R7IPcMK~3Ubc|3Tz>O*1}#iAwQEcF+K>I2|Srnufix`i;$h= z278e4xamMjL`qFLB}M{Myqi|ZnvYBrn0Y2=wY&)pihxe*hL!=s%LQgQ2ne>KQ0oVd z0Gg-ZqjMzU`cs9F>LW5w{Km2!6gmbV4oaO0n{4JVI8*0bjd=nBem_f3jvRXclU>k7 z4pY({B@+*jmu)SP_Nn6}ofJ|Zf7~KrEaFklgcT&DEHsMpGfQ15d?D;w7iqYngT85I z{5eEq)X*%?!?T62FLphO%ZNZa&Rc1mR6GBQdxT3{6Jv9Mv-VQ>)XzjX~S2@JT8;#0jz2yDszST58KF5u+FhS97` z7ma&gJyXC$29ei}lQaHkVsW~D@Z6^4Vvg`dbFdR{w zaUR@M$C7w0T!+f4@{H$!pvZ`nMf%Niyxs?P5^iEW0BBYA8)gTIaPlZ8WsuE`N$*KH zFoeFF^6m|yHszEC>acYgZULelP%qn}K)kolyJ^4~Ll@E#?$td66J(mpdx0XwBP|tE>8I`D1{ArPL$il`H7v6fQn>uulX0AP!Ih9Y=*tAE*k1{ zCGhzv*%pKExmPAvle^ggwl)apq5&F~?U^308=hL);s3-74Is|y3I>6+E*nxHJ}cB4 zSJLpI&ue-h`mt$yoo!kg0A-v@c0(D9+!gu|2t|zFZF}PcVZKZNd>Av%uO~Y;h__)l zAc+a|{ys!i~p#5)`C_;Vp({i>(aS zbV@0)UfEv)R)DR&V00)%mOS#dRb@d}TY``Y9fI2;Qnd{!@yIO|w3Qg`EauL};)SEp zEg4qjVK04QbJ#Qk*c2?0x30v;W65clhOu7rsbm94Yi_+1VDK~(1vFgieL(b=tPE`5 zxaMOeAY$m6F}!%L8-Wp`8A;UcfRiB)qAs;dwdQDQZ`7hXF4ATCi7|j06lyY8ti}4~ zso(Js72tm6=3K_*d@`t} za{`FT;rZ}Fzw&ardlq&lkfQiACE}Rb%CUneo)Ew$i^n_wfC)XxR+R0NVBIPD0HV^8 zpqg-xgM`EyWA8x*qdu$_j1|Rz>>OEAlp8*aE#?c*2?$LOQ35htvM%x6v~Cj?Ia`=S z827upiUD#9Fe*-fZ4D)SSf1WzH_{$`v>Sz_*vsdNqw z^Qen9qhv&mU-s?p!nJCMCpQEOFM`0r#6Nr%2Ttav$@VMCZOE3Vu4}P37J+-mBL-+c;G8|42x>NL3`Y@M9hV9hD$y=X2~N!7u=N-Qe9&ejSO3kJl$t;mp~Kt zGHBgyP?1-qOmR5XBSxZuW^@Wd2oz`OK91B-R8 zkxcBe1{s@}035)UU^v{N8bfuT#Vjoa$r1`1KG*la9GkXRy3?vzBPqrbXz42CXWTs<##xGy6XdzUMzlenhIWCP=ZfU3x3kI4Ir zVriKO%Lj!jB&uC7qypuBDRfkVW=5Ht+?|1swi$Ify+~#R?Mg`mWy=0E z24+m-47sWxo1uC>57?Z4eOLfpw}LVfbUXkk6+4J&!57o%fd{;-WP+y-ON^yV!T~vw z9t$w<=uQJX3bqI))jnifF;J#uSt7$S%SeYjH6$eRndvsNp)$f^)9BtUWw4=;Nwaw9 zdrp35%RvCaZj`)3Pr##Xw%TbU3<(yWm=T1esa=isE^)k+Ig(f#K3m}4azEnWgp{o? zpDhicM>^D&GSR?-a6~+G-0Co3E;yn3o6d~@AYYGtc z@KG9NspyGX%WZHKHxbuAFWdlNyGEtbXV=b)0 z#r(@F&Pu1uD;fED#{$tI+D;&4(Sl*6_+HzU>F$b#-0Iqu&DS<$J()e7Owy#okQNpI z&|qKGk*iYm1`f_h1fik5I#5wE*F;(_2oKL{8ibgR5FZ~b9|_QbVu}$I^7b$nwm=5I zWB9YTcrT=gIzu(qh6onU3y8JZM{ZV*p~CX|01XY53= zb1yVdB)3+?FGTqem7QQbK(NG@#E_0a=NOb9Igx`{~Xe8N_BW(-RdZsOwG?8SWVW)5ioDaBGGhj8} zGeWvScYqEnt;*a1Drzn8vM;n&<%ufrg`W${UD$3UoiO+(f-0Ce?F@xzYiLNdm!UXT zhPvp7VnqP{igU{^7nj}9HZdtainm+f0e~gMlavNlvy!yE$b@Uj_M}tur5I?)P@OGb zZ7;QS6ep)#@Gnwx5RMGijzxdbLxah~p!`I+hAz7&t1bsH zH!{kw>6yDdLa z)WNxw)?mzm4T3ffui_Ng#Ttjh4--dqa@0q%9N}kG3d_ry9V%7YnD9g-EGBFeTE%kzu1PNKRh;5!J-Y*e>c@Bhbp|PdG{36+lFdLUHqbLIC4!qU z>d^OgH^F7GwYpq9EDk{+E{-7w$tC^6`}0{1ur@y9#@u;QH|6c1M;djPaCj0UA+5l$ zgU~usjSW*kTOJ*T+fx#^c=H1B6v?I7U$AP{nR!U17|&-PNJuVN3(@X2YQz)ohwYxt zAQHf9D82q=lIR!sWkw)pV5(Q9tr*)9f86Qv}Qfa#B^7m8ltY%M&s zu-}`6Ms)(M^%yX~Zgs_AqzN0oM9kB1i1%n)dAxaUI)$oR616uqxKp>G#DfBx`N2sI z2Vjw9dd*;f1GXrNg{D|%A^s=+SfGt&JNKQ66`zA9SIU#fOpshIrZ(2aV2HHiFo8fZ zbm3n?I0kF+kMb`S3wWwRCYJMH+GK@3xv($h@7Zx86XHpO5-o_8i5!3|)u+fA3`BCd z8feA!AR6Vc9j;j9XJEi8nCR>z+9%gG!^_cO{YKLqHCN|s?vor-tm5GG0$e4t(r8*u_CFKhweh}19V24;x??DQaM1UBL{Gk}jWGGn1;?NL z6`ThLooCqdGU^{WT)piy!&v2|)XD*%ie3N&1F2aZ&h|pRP2gUXV+RB@AcZ53`JYN1 z4+Akpwo3CqJx&31AZ3EP&xRSD_-}v<^f*CPIE^*?@JYMKus|dL5E}i{Y5LDziHKR7 zU?5L~&>=((g__SXBc)SmzB0f<5jNlD+rDd#xlFq=z?|q^bvk3Mu%Lwd_&)7KTrxVq zS{^NxNmdqAifA?x$8S<2e5p!|^_abY$KJ*Mj##+kiu^gu(GhJG`f~@0ErzZj^1;Oj zY@U9sxu$?;--I}h_!MY^x6Xucab^nu==L;SLV}lz#Kl;EF^`H5CT0sH6&PO?*fBH^ zZVXXTku5%LdG1k&jFEEE3
az+|x<6q$uZ*sLnxM_k>EXg6<_Lio+SCr3@;lKlrK zf~)JKw3s92!`aA=O&WxF}CvMA~mU{UTF4*T3zr@%@j?FWVf{vQd|gR$TuCDf>o zbf^y!jF`Mo9;3MoE>4|EBY>H#7gy9pzv5UG&L*aEL9FhzEfN&6z zq-q|!5Udh=9PExVuqo}vXqnL8W<6-sLrxG3@{1G@ig6s!Yh>#d9TEhQ+QfjsNq`va zZd^3Lg%*JrRE@7{N>$;IX#O!19?iA@MNFY;%NVcd84>(R>p`_qxVve;xAp#0-G2|@%nMr`(JAbof zx4%(oZ3855zl9w%$|2WodQm%67&Zg~V{`b?U^1tJCxrbvl)I!lM1q_!woy{Pq$?W9 zgxe>O=Q1*j$Mx$F>}R_3U02QIB)5?be2xViCwQmFHSVBdp?}+7p`>p}i$Rz*WV~^9 z{>nxBAp8;yu*|$VyfKaN5zb?8YX~=IZ z-4%9~acKW`ft&SYhX4wj*epuwKGEXgmCyeLfe`*>-TgkX?CcB{V7is-|C*s_z(8j_8&>s*>Qb`KsAxw)43(q7$nAWWztby(uG?d4&+W%#=SkTb`=$?F- zM(E)Nm9l-?BP^7l-7+SQ3YbhH{=v|wNOtoK94Z_6Sw$pMxBoXo35l>%IS7*oOn*Nt zG`LMKEQ&0S2O;>M**Xb)FYJW*7ibcpOHd)x;hFHk^R~`+8&ObOqA=^kSgfn+t}GjV zrNkCOmhga0(&qbPo%*AjG}K?Jh*}6MlA6)IGvHBZ%TVC+2nz@Z7iA|0<@rQFaMvxS z?pKy9fd%FO)(aTsOgl5g@IJS0SKlC=4z7Yxt$tDODjWAt8$rKH+?Cm?pe*K$Lh3Zu zveYdTaf7i<@^3e4Zp>tIvPnsKJ4rgR0#$uO<;T;c=)a zZc_ZYJs?8!h%u9sXyN7SH$qn9p|+Oxk@Qjq#FVf5pjNO&W_FYlCdK+Q0=W(R|DD2o z*g{|CKG07|`zD_Fi&)S=#(?ksXRbDum><{&+?FfL2x z_#@qjGlkrZjE4iYNO-UY@PfDQ3e!Wg1PqPOknyGa>jjM-yz> zVmL35PlSOUl!)M@L7uI9zkJ_7*M%%hrZMID?OmX7FE80dJ<)tfnfPL0sV(hwV(_s3 z=k4cidnlv5X;^(fN0j3tL>1mX9Lwa=~z$%BrPPwKc*=#GBLzGSOo4MDI~yI?XQ&&4Clvqm6za%WjF|%;3-jB!X=O% zwrBGAgVSj;eiRcOz#zD+K)4y4b&PeHkhkb6c{ijAal#KeP%v8_k6u$PLRLweXk>9G zy9Zdf*3t~lDFtqS_6R`f*hj5(Tq154uBv_SXch>tMko?g4ho&ON|d;zc3RVB;~=Q) z4q5R`JV4h5rQzmpz7CA;CDu75G~l-&EBdUlKaki9x&?Y$_kUa%W^?gKZPk;35c8fK=Qnc!rKL9LPQAX%>WxG$+U=6%Ja< zVTdd{_ypl<~iodFM`+>#TVP`@tif|MHx^p z+!0*zKu)b9dV-4gu|hwW1>a1VySJy@C37LiNoYXpWm5bx3|fm_y2FN@Di zKYV~n|2qbx8ab*VgDQaG=qzGpE(4hG6Q8M|c#_e0stYJ%MMBeBw^^xcGM})U;!sZY zXk~b2-y8WE_h*iw0>W6luRl*FH4X5O+}qz3J7VvS;F~%#0zhVPD|98u1zBG~c#!tS zfR+XNj8UKPTcU>l#aUpXLih#Z*QB9QFzRkTidwp=ol=t^Zf=WpsyF(7XHa$ zLzP^u?Vykq8a8Z!$L+AYtzkSiQ>bVMEAL@8v!H0j%Eo~&t}PQ))f&%1U?f-?+7>x3 zt_)ZlC3{)4FZVC-J79rh2_K*fLt{vW)~FW{n=O#2Iduwd9b}~PaEpi29N{?T)B%`6 z46>^YsPR0JUshrLB6MLE!X}Qhk~edz6uIdEw>vMWK`5YS8;vLZEXFuW{Tg0;PRg=R z0-sQP^QqXHpsWDZRdanUC3`W%1ZbreFqkBRK^|gW*n6KuE%nw-bIpwmZ9}zA^VNJa zLSQp;4IV8){Vgw;wcm_+Siy$k4?o<)}A0ggcC?A z{CK6Zoq33EaLtOFD$s>x3>weGiXcPI9Aqmzf$*h!xSUsP3Md+|4hbAQC&)2q5h@IX z;TZUJSEft}RZXKTU}uR!M1tfrfWXW2(y2a%xJ^XbP!{96qL&{SsC0eC|nwtb%ZkUzs|6lynd>89PrB#BqDu? z1}{Q#EAP$*1ZE3Ro&uCWpWFUTJ@Mw6nai2Sm*p<1D{KYP8Nm6Nggld;J3b*J1X1AN z|4+g2_c9p|{2alWsKJt&j7S*r>7*=GZw87^NFs67N>Nd`g|dX9qtA|8MeX{cu4N&Hg;{7sA?B;1Ydbtg>~vkil*0i_OvUq%AGMQc-_ zK_X;{o09>V7W&9p%gqDoqsn(sbhRLlaqD4JGoUom!lSk$Og6Z`)#fD%M^Pm;h*FDP zDrrO!y4bbQNU=MEz(_n@j(A*Mut6ZXjrX}@GpeRh0FMtm-CTruC{o+s7ZL~h4UJbF zG;@5PyT+!>i_b2%Dii^~hI@Wb}!y=DL4de&- z@JkAl)i4?n9T-c-$g1Z|dC7XU`c4-l4q&-bn*YO>j!(Pcm_B4UXy}c7(yl#Qa=>x1YIFE zLl0RL*u)}i%yjjMSXLHfpT!3y=Ab5CxFdw5)(tKY0f~U#xIh6$EffKCajU&rIa^g(U^0VgJs?Z~$4vEX3Bu?& zvdLsGRg^u|N7dj5UN%P_hJXUi(u^}T^$e|eN z;6ud2oE!{&r|a*F3Ji2mpZaQ z!GI@i3WT9SbZQ!1t6g%}zTB@|^WV{Mc56#QHXMBSZ#msxfnnU?CV~j47v2+DK`)n0 z(d|C=g3azCSLE5Rnt2&ySyqXcK*Tm1hZRKVdZrer@g(?Kp~+MknWB^xM4X~W6N7|) z)6L}ftVbRPS##4mZ^wrtGp7Q*4iaKhVW+E5v&%to9>0<1k|MQ+U@!4b?`iW~4UEyd zJ%aD5NHX0NLItNM`iNb@P*CQ~2&#uEPCHqsxPA|cGF8c(-6Hlh;Fq9i0hkIYxqocW zoD{CvWK+&ewFv&iX^M~mO7f?#4AP(P0E6x!D1#UqIM#!xlWVs7*W=vRtwvp%kJJM8 zkI(Szj(A76L$qUO?t3&`o%Zc1fNe`520gp8qCU*_)21N@i5)l*Hz?|AqoC!zmEA1? z1Ly=e@O+5BNyduzNRj$Pkukq<&x5Ojd-BII@JTZG?2xblooet`ga_QJHWVY^nxHTn zD@`tqF8AgoI*YXbeiWorUts_T5la>>7Zqq*!V|1Qju&J=5Mvg*3R>gDk|07rg5o?Y z&@Pj8)UR|CQmt%7;mT}?QMumNj}@Cd2!BQ{TWx~g^N*_NILR9gzF-g&jNtk?gOO%K z1)|AAi!7IZ=&VUGRcH8Fv5MS3GtS~KKZeW`|FUT z`_%9Rc>OTc6e0lZ8Zfx1S8t3+c>4wCQkJp}Z`ws_2nd1_0)#sn1{4RH2v6}+Uj-?{ zc9{eU&6v|ku$U~wjc`l^(zk5AvY2Ge0ZpIm6-DJ3s)Y;w--!IN!G*aQe@~-Ho0>A% zYS=1Eibv&~U+|#a>wM~o=^V(^msntciqw_Rh%r7i6y&Rb1=LMr^!ZLRl_wajU@jhA z5*FcDg9W~c&`batC|Lkn0#E|47y=SFjF+1dE(L0}+GcZ(6$}DFS4SLTu%ZaF8}Jc> zoO5I*!^JH9^I0-H+hTc?k>t4RTS=ln8GwR0v7rp`P+g@PggksQY6^*kR=cpsrb()- z$ZzOnw?huSN9k-7nI2l6#S`j?+Hs6WKz!GQKIQ|z$qM!)9*!&(FUJGIaI5Z2-9Yo_6 zF+YZxBnkvTTJ4Q#$a%h4-9q#^iR5sP1(3F8@R|6Nx)I<8#&ias%NvQ5 zB?@AKZV3qrNh%RSfH))h3yZ6<9`~YwX>cpC02pqCzU4g%p#W8QCCaB!%0DyT{kunD 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⋙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 z + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.ttf b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f221e50a2ef60738ba30932d834530cdfe55cb3e GIT binary patch literal 152796 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

=v_rA!CPE#mM^4@)}X7qf;At+v)G*FZd&; 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 ALjV8( literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000000000000000000000000000000000..6e7483cf61b490c08ed644d6ef802c69472eb247 GIT binary patch literal 90412 zcmZ6RQ;;T2u!hIBZQJ<9wr7Vswr$(CwPV}1ZQJ(j;Ou|mT%C$|J1d{g?CP%SsEdkp zQxF#i0tNyC0ydxnLilGvRJZ=u|JVKhO7@3X;RV7Pd`6E zpk~${rvI2E5U>ab5D5Mee)_Dxxru=>5U{xaznFi|1>!(h1v)hU2mi6AfBt{tk|Bb^ zWSQGIyZ>WL|2|?D2nfbsl?t=W+Ro@-oYcQKh>CwK9VAXv*2ciy9tc=b|NnA{KoLOj zYz=Ho{xSc5?^pV7d~fF3V0?Q!CubmFWhx*bgug&Q*s|!Oyr6C-hNl1KitJx5#DA)& zQ)l~U|C>ReDZawl|Lmj!FVlZ^QA?Y_eZxrKSYLk+)DRj1N#F2a-&hNTOtX&{0tnU? zXdURk`=*Zu*?oNzeFF=FhEsiga}Wg?k=R&RomhANffI#>5RecdwQ$yOKLOqx5aRJn zq=_it5aK|ixlq4={^d_6_R3^AAdTF{%xevAl~*s*oM#EDqdOn~zsC0$ix@$i#`kj{ zF+#n=3Wp+GqXcqELONVf#gbrw7Os5Py=M2apKPjw3d8CE!XaPr5P7#CV@V4cE}pzPm9K9+ulXz&umnC-T(6)MS@OS5J!2BtO@ zvg@qC+nm+6APb=-NfL#?Ia1{Z!&qtzLf~+TZ<1g%2N%;Banovy)2KBzvpO>5?9JT2=#@M}M*SjazyW`Hgr_QTm)_BMKIU@Yb>AgqxI~L*J`wBqJnH2E#;Cu3a z5e^9cMsU_Wq+V*wo!_}xo&7uVodNZ;y0dFL&=>ySDgy!k`)@(qH@do^{Z*G!m_Bd1 z?aI3^mMg0(|Fw>lo6wt*m6FxM^>b4RK|yOJw0>}OFoy!P!oaowlKHY~@nkwyQ)WHG zp>k`0CK&~>>0?%{oMB=_rh}|6YQg1wj+fpq7nenPz~d~W&h54j-|LRk4Bsg)f|E9P z?3$>%J<6y_kYoIqkOvm}(v});(=Vv(4I0N%t`9_qUq2;EKj3Cu_teC*%K@Xr#N6rj z+(U|W#F-OhK`fCaDtuJfvTq4*s!sRv$&cbiI|;l#g}?7-PVBenkGAjYm?**K#TYUp z2MG7?W=`Te)k-T(T!iuQmgeCI)(!gM>A9AJlAv4ZqMu7xG?S$$ev@!oEt*&{Y_h@X zsxa#P!n=(5keV@$YK0A06p0Xh z{G)X=v7L4k$+D9r&0F?Mn=C&)Bv4Z*(0n0hA|pj)*HiAwe5{2F$+5{87cjKilhRJq z+jFa0WB2vJUoh9oFW6T1GqiKkVzIc9`I>td7L~23^v2b4X_6zPI5lg_^U%aJja$D- zx??f0D3N(f$g7jz?x7XRG1_G3F*EAG3ughF7m7jgxwb8$FMOV!7^d=a;1fD0s9p)! za=KiW8Q3RR-`!xX>iN|rU^i;zybsIRZgztEW1gD_8|L(w^>aV+<6HSwrS^hpa1+`N z0WXeD6+5FX>Q4z|u2!I*8AFv3tc|QM+jS8{o3L2GwXEBWNwE~6UV*sORD`&r+L6pT z4|#nAk*4k=%PwVVmUEutChH0u>>Ifct1-S5qJ6U=F=f*Q*O-_t|btQW@;uQ zN#11kV12Vv6xMP2Z0mp^KPl2VgLs0mQa?PJ9za-H3$j(RyHxTksPQ>QH>BcZy+^M8 zV*@r8T3>r=2=t2_O6nQP`4iRIg+*KVG5O#}D~^CoDN(m?(Yn_0+P5l_)cqp0c4UU_g;F?HRuP@zF_cO54W|E4F`z>v34o>|M9}G>3TJ7@ZjI`ZI_l;H#m;RJx($q4{_(65PXT zxsK&`QFe1K4D#XtifFqMUq@f$bQ5lr8?s;gc^|ai0`3J{l{24Wb&rtkNTVV6YGfQk zPvNQfawgA4lWyE(d?;5{#?Px4watl&Xupd$6q{5(YKfmnjeJs+*}TO!8HMdRW)@7_ zG`;35pe>vhp*LB0QEC8SkjOL!x?9HSn6uO;2E%aXlT7(UMKjEA8h)NE-f)O{DM^4I z#gIRIz3qM|WYrxCYBST#IpEENwO_*^)##`Enw6Sf0Bt!GKur`m z4Q8wituo1UbDp8Vef^kLLjD3BI<6gNRy=IOjcz%Lezo6~AAeChbGg>MJ$(8$nhYiv zzDD(Udi>5);pJ8YzfMYm6wn?)vmo{mPX$C&ZU6z^dG9zEoh_`LvX?cy>Fc>^u z`Ja?dh^hE5R=-X}x!rs8jBRDN&o+=h8jx^;cLaucL7t;$Ad8r5K>TPnhycH#VT9`V z$t zfyFB6B?E~B`nLCz!VvR@!fZ0)5aV8q${WCmcO!wBfJ-JZaFmQN3;zS zX8^OhR_}VIS<`QU#T5LD`L8>-ELo!zJrZ{8S+?+vL%OtNBMe%D2F}O58Nb)kBFNOT zxeWeiCXMavLFy~QC z6I>9awXet&!NpUhw!{S9FUElSy72Zftyhhz{Ez}AAX0bhe7N5Mm0uZ>H0T~9HPwEM zaBIaN`)DoSnydMTrIz1td%yiF4|KPp zz7^tTWT!d~1ReT}SuQ=D*ZlqPH1OYWwQ+ix_3;!z(dvuC8F0jTg?rVC+($t8QtzS< zde4wn7@3wX?r3UXC3XvZR5*QN9)O#=Q{?MG=);^~^H;bL0-R+WnQ($wB`(DjF?64X zHxEnKGNd2wg?4qD7WI|&m#?C& zhe4_@i)J5slEw{;ip^eS?{^0AMRPp=PSgtB-8wO^SbyDU$19cDxB9IE@y}T}W zd(>zGAvJsj{53V|gaQsAI>EW3m!YEB!$SVbuU2CJH zt}Nx?JI0N`-R0@XCh+OAeNMh5VQy6X!&TQ=ruMnMrKPeG;b_oJj>t8*Ovwwn8osnf zCEM51PYcUozfp#b6xn1n6>tQ(j`fA-+N7x_bR~fCuo6Rk9VJH105_tw!<)-?6VH}2 zx%HLpo|?A8f|bbU!_jyYXbqjgunDp_WB$1ArLcVFIt~G zlN+fKAUH8x#$r)_#k+pe&1K|QZxEE)gyLui8U~s_wA9pE763mBH!971EXG-1fFihr z+c*ZfMvVu1K6^InixB#XsxSvZM}nlUPawABV?m>Ebp_t&8>8VgM7H2|qGNIgbsz~* zM(I%QhjcKAa`R$6=LW`9oG^wqr5$xy4C-0h$6`TwDl{9QGVqpvV4FR(@@;eJF3u^c ze44l|V`;W)O%NBjbMZJ^gkWQ3Nu}}$piv=cn`F@=L9HD2NicYRK7n*<&0Qu#%}Ahi z7Gn6mDOD2u+DNXt600|7j10x0!?JHN4$OUp_Np6};wxDVJ;b-TM=8 zo0d?EPkAcC5#^9aa9*S8cNe0hdX1#qvIT*}U~f5t8#DU(_ccYaOAZsK&bPN_r0&%> z6Q!ASH$q3}5YuZkMEww4e(=>-Jw#^XGvnrB_*hm!oWd7V(Tw{fjiq3%-IB&vdEp&>LAm`J$79 z#_Eqb#zI5EtG?yFCVr*uRG5p2s!a6sc(m%!>K&+s3pa|4efwznYYI~|A$639Qd3<} z9Any>xF|imKa*_dtd6Q9jLsz39XotUC zK-BMR3Gs8truc*}4>8qP1J-d)*$KS(bPg>#HhC&NM3XUsAJdcr88l|lOvu|==J5pq zP3Y$!_pSrz9EAK`n)nP2UpOMp`rB-(^0uCbFq)N5~sy~|F&X=WNJ;eP?u9fJ}WVPi}cx)Z?4amvlV9+9(!Sk zOS~*%XfYFg&(w2S;(zK3{ZYYc!MSo?T0HCu%uF$WGY5m~ra?|O?3uiWU+q~gT07gi z#5G;!EBzM!YWRpcy)b3}E#Ssx`^>+}iKo+wScHZnSiZk`|6PPA3(K&Jf+fZe>eMNV zY3mLYk@p_$c@Y4Qnb~myA)c_%mwMc9fr#e=<)ORXeEI8HL8})e_%IAO%;+x$UKILT zNYIGbUX|KXZCU9WKV4x+o$7nRqH{=52$JypRLBO-pF5Pj$EvDw)U*)`RH=-0vSs15 zlt8ZmfZ}%-H$)}pg@yUuoZgZZ`&350;j*uBoI>~#;4+(?zER6^PX`y-68mhx_Z2?9 zvAv4#v7J8ekDUFVRN-|#__@t!cU(e9Gy^8QJ&K$pl41Ovr|AN%;mb4(7SDZKQa3l_6=isKA%cs6_iVcrAW^scrGhbDtdl2 zM%7M3Kp#B4B_&JSR>TxnC)3_BZuAWWU=7vJEB>qap=4IvsH6|nQ;S}bq*qlir=h5= z1oEG1T&HJRE};uBpMiHG(P{}nPw;0w(bD^Zoy8)Kk_dn#i$CNEN(A2tyz#opSNQ@1 z^QYJ~>8Fn#IMpZXolrmEZ}UV0^VXzL*W$(AY#67%Fy!B-kis>Eab*4QI&tap;LTo1 zN7&Oo7Np(}$K$hAzj1qY-!P%7YHR(_zCAr{%WH2<{Ni3-26pMM?0oEQ@1HL%8g_Jv z{VvoDUj5D`PQ`c@3DI^;y_|K>;|hb3fx(puhT>t-^_{MEr}PMwa_Ut9%CZuRpww*1 zGZOcRq+JQ(FO}`iqAsE&ZxRXKIPk>~3-g8)Y9n%l$t}qj(s`8}La^W$h%cfzn9{z{ zYWcjd2(54Pm&iD23W$EuFU1=9wFE3eCU21QO)J&|*g&W4z#CnGoxz(BNU&@XAqzTn z*^Sg1o%7a+rjuOKd58E&TgWqRZg2Pphk(!^-bf{yvuJ7bqg%w0*jS13%P?|JdOFCr`>EaKgG~9 zTv&-76RRcSEVG2Pij6yTw*ui4rH=r;bFHK!S?lEPQXPiL_!YaZrhT35 z$@m^aYy7M}htaI)VENjP2wmK1m~3zL8)yV#k+p5E4`jyb+kX=~dN@#8PFpgkat6ND z(zjH5>~i`VzVv%%&UOWSuJPi6=o!}Y?sC%0LwD(g1aRc2g1R5 z)*=oOoqdC~6d^N(IC2^e7@Du?4F@lODw4FP{|);lGtt^#oE5TN{0ta<5Qw)U7%rMb z5#9Ay1fmV;tzf1RWIzrR;svh!mHG0b&}=+Yc<2g($%xbdT%i3^a=}kj zK4AcOn6@Zb)rdl3vWyhzaD2Gmcl%ykDee3(Qh~mko)+V!Cx(ZoQkSFUy?*h_2|(Dd zbvtyW+Du%IHuv&(1%q+p)!ZV^mknK6YW0s>5l8a+B}c!Gjz8?djKika9#?`1rFm|Ul7)y8$(Do3xvVcw0U5YjlpVpCIc953zC9OQp zsVMlphf?6i$~9o;bWxmVh(C}G+DM(@7nxSfAhqB4yfLLWiEL;K$#BRX zQA-Df$$$vlL)OOjPQZQ4&5W+EdSFl8re2AooedYKOgcHpco^1K(liQ1hIfrF1L};? zz>f|F&r|>O*$MXU9_n6ZK9*;#G((owoJk3MUSwa#33S>{IH_<{s%wIp-#7cHbOf^4 zN#@C(yVA7*^)h&PwN|G)d6dp(zX>(CHny4=UwZBsvA>h{sF?{9)pA}=c?L*K)(3Xs z)7suBRA=rW-v#UX-X)GQ=3Jxd;MhzoK6B?BW|JomM;V@D;7uwopb4LC2ZHgTG4oPO zXeHyEo!}Qf(nTSL_?R|Xu|7C6Dktv=Y;VoC+}q~q-|yniXNdCEbPJ6zbb=GVYZ`KJ z;9j=8zsySeex*LzPZ3-s*~8$9u$vYMG7NeO%^hkCAl1`U_ai)l4s)uXankY3TAo^! z8b^R`PS$zCY-mqz!?C8>Yc^*wb;K6Pb#KsPnM4ys{-^-_843vC>MjiTsHOd5_cdS( zeDeR+Z5o8V(}Qv*W0u^(@_=34VRMI2GfNm`Be!F~t()98=Wjbi6@mJ`>?M*f=OX$g zGIxVGVf1iDlN9crHJxR;L&k+@=*Z#MXC#;_{{hhHWow|#k?JDB-J1=9SYRpo34od= zjGgN3D~Ses7gau5pte+=g6B-PwDlW`tr;kg_}KJWSqPunh$32V#aeCiL)txPOz|)b z>hf$<$1odo`A4-ua?4Z47^S;)j=&oNq#;A#4f&*b&QQ{g@x1I|?(``1Ib6w*(QymY z$m^W7^z#>m!X}06M(-nod4QsI*KI` z^ap0y|0d@X0>NkAc~d;xwcc2R@l{dh81?G*X4o`g(FSK3K<>9BAe>lKG~kTp7UzXg zg?}I59-}jyf|Y5MP+m{V%jUd~-)#AM#MdKI&XLz*va=9pTE>y%;izX8aG~HJ7sNmjQ2bO31IbH9K@FQyfsC0jN!E=DdDq=aC_t>BO}EPFywlN?%;HOBq0 z8kv;G6mOaBL zS!jt276#zlgy&>Ex_FjPGKQ`tyxAw5QF<_~HykcfnTF6cCfF=vy4xW6~i1PFvIl8xrymkr*Y9h3OT z-juzFFJ%b$7_=p!{p&F$mpgN=q}U$(09EY=<1sN6?B8t5h)ewmAUFeq=VMB2PtI%~ zry9^dN9^s0uNn+t;7Y#Y$;{mm6!`%Nkjs$P-H)Et7X?I_fw^KTl2SE+osKhO<@#(m zWCz)_3Wd}coWDP=J_yW^f2a0}k>5 zQ?=Tq2(^#&z{>dW!pzq}ZHm;TZ-;43%C2~o3DzuVq>-6OV;?=*Q;L!By%h+U1yons zVIY^@iW7+wZ;d<;rnb}W+?y8A@Hr);DlW5B_$RK^8`~zFFyLfL4)wnjim$!MJUa)- zg7PPYd$z=GqBZXstU1HAC%YT}c5w{9*JPSi`bqNnZpW4nRUg_w1X+2iNIHfBFm<|r z-ls+COx)4e#vLT-Q~#EyTY=kw>fIb)M)qITpFf?!vm^c$Q!$w3f97sQ&Z37;gTJxK zYcaGRf566P#@y5=lB(Ex-DX;?mbFyOHP^DhoXyqfNTS}*`P6_Ooxf2tUDBsGSmS0- z7n{EyO~~{7;JsjpJEd_ah290Ot>ks@{}SX7?GPlPjXKC~Yupy_F1ZS#v4r~)(DfS1bL)jB&nMP42LB=bZoD|iv(vhsjt`q|(kp3mY>2bZs1po-X zl?mx>r!!j_T5FGR7AkwWbQ@XWsUv6El?jOkLfI=%Iz+Zm*R2cwVimruj~>7Z;oCp1 zu;^Er6uF}R7D@_=^qlQe!JQ48<((o#{|3TBEgfZ$bL?s&oR3KsQ1!;7jdV<&3C7I- zMBL-5xD%l5(e_T`ZYFY{W7Ep8%Ab;vG07zlmWS0r5VP<=rwTzw0N)d7f;b8I(E`b| zhr3$r6p6Kb2@Y&1={Zae%0y6Lp|XnPwZN7SXHMh+-!S30G1K@-I57}5XumJyX;+?F z_fULXca;6rAX@C2qV430Tk+&iQPnK^$e}=ls!>y#v7J?-g^Z4FUaZWnHbU2^{MkYv zb#*RH;fZaBD()?dYpa&)r>nF=)vSAQw-Wexh16vBdvnf+Fr^DEP+k_mVM}o+rVVS( zm7h{oZMz{&)2Ok`AJAGG;-Sv@g^_D@?b?)~7I1k@dT2s}>+M>m+5Oq7*t`uHJY^74 zqRmtTzucgUzlGPAK6)8ltc8RGNrKy$s0fuko(P_z()XTqy+3$3BtZLcu(d3q{>5(R za+@N{;R9HUx4evNeb${J$qEVxjs3t$CS3g}h}7r)E?o{w``R+<6=j=#a98d(kD6@t zF-;ez-HzPmu67Z6b=SwbMlJ3JO!y>92*usE(+WzCxOhZ25t_BarG{uivP+rRtGgiO zEx!>%9huW{ErEEgkMoHXBmHe1X>~(G(8}0R5JUU}K1{=l37eRR23+VX;Ha)D>KQ+h z7VsvmHKtBo1ZhHRK}?w3?{_cV5nltx>j17Tug;5%Md)7><#`*^^#%6GfA4yvizC1Q z{oiYx`4DBkf@{!OKQ;&%uD&3h#r9`Qw(H=Wx%o6^Hh|?A7^LNi- zPH;EW;agomng-d&??4vaZ(1UXB9ET4x^|%FQt5myUDf{~z9W?3R*!a~_>MpLjKZ(H z;gS@b+7H454b6mF6C?9=Y1I0(l#9>I%yXa|%kb3&B&i%MKQPqdgPGh0pSZ5Ve4W$z z`4zDSue{%{`_O`@D5S4OeR;S1r{X&nhPOX;F7`rq*ekcK+nmpDxu38nd{@uQ{wRP_ zsrIAcLz_b9Tmru=w&RRDohK=j<7rSb5LL;15ja7LVFH*GVOBJl3 zjSr>YZT@fkx4G&UJi{N;J#YT)+HZijm^;t`0+Ue4*Zf)FnW^Ml?LMhRfntTip-p`e z<}Y{E4N>MuMJmzAO`~#SxCw~_Lk4yuaTv^{UBRz;RY2rzIv=DP z!kZQQ80W0BB0293H*OwGGTRkoyf zT`Kj8ZG(W}x6~7J#cn+{KOzMg${wH|^9$U0 zpk>h}7Sb*T6fx(`%N)E7wQejZ4kj?A$y3lp**B6F6f8;*jY5JLIVv70!ZSB!RJlOC z_OF~^Q(nYbR8eJC*ywTfnjV%EgF-TA<*Hsh&ZfAfb9- z3I(crCYH*Q@=yvO<2Hbg%p8UFumGDl|rVzk&B5Tana&4Ed>;igZ%)kU0&F!LQ`&@Qs7$^2|rv8FS7f70>-_Fj1QP2Bl8Q ztRac^3B=7vFX-L|&0jpN?pX#WcZ{2d(>qzc_!6_g1mKIXi{%C?dcFFyxv(wHr;pp( zWw1WmhCh}(08Oegl?^LPtML)ai_NsALA@_j5j1$(!Q>K~w$l(k*gRiP;;t*4yy*EJ zc~>tX+?l9o0oXEH^hqd6>NL$GHUgr;4$!9&Uh#h$d$EFNXKeYLJfcF35S0Isw~)`F zTc^H5nA}u~e zHM`jPXWpxUb*pJOC@89Q`e;5A^zVu>yB^`Zw+Q;Ui>_wVYvA$YNwplp39{wy`s)=& zYpSrS-fA@E0rIo9N7WwQvFIaFqqHxXnHM=u z@1P1;zr#?u&0UY@TEF4N!=Bo$tGjnRTDNk69Q2Q%4-Us}^h|V5*!CrX-eG6UFfy9B z>Ql=$TU!b@0zuyv@cNRC(NR3$~1%4WpjB_Zm+AY%*%=jJD>OM&t*G=+X62>`(JFtq%$`07fDCn zZN*iO@@PQoZ6xE^TDASj8R6u|;dz_r;)^KPv9Dtfthvt`z@7|m0I^PKf7(b7cgi;O40e)V4lA739UKxIa7f7=88u8K z`cfo-U9jK_v$Yh%Mmq1AoKDY^?Ab(}Dn*Jc+2Tu3Vl^xR<|UH}C36fnF5jPh+IyZQ zy@bNm?1)Aijvc9(K#q$7UqTh}1c52;rQs2yy%Wd_uwj1n!z!>EQG)P7o<9%dzu-~L zGuP#Y7~~r^Y_Y56DOm1T4xvrBt!+bvXJRm?j(@xxE2@wRzDOG*#e!%Iq*_8l(sZO= zBh!}O59+|`d>c3TO)#n0@R5gmHVfW1f@W>5{((U8DUaQlQAVi%)=_&dlA5u%iR#GY z4M^=6$=I%BSmTzVHTtd3jj7jr^IpF05#tg)%w%{!udMGwEJ_yDSy0U5+OMw3yDX&I zE9RPv`qt^G?OAiB-RLwvVH|HlfLcgS*zFf^9bZ`DAKw>=0=_m_Snte+T5OgdUtEIh ziS(;5sqJ-1=9{DR$K-jb3EPog0nE6Mg07hxm(TaGXmQ>O=EcJ#Y2v zQ8o&p^D4acUd^z-qp7poMEBF1jG*Uwo6-97QzKJgyvaQWArw7Dfo09_lWbmuhH{g; z{e4#@Pw})|!CPT*!~9xnWnrnIs`A&P@}WqDX-Ktky7^KV?E7scBi|42#owM0Ls@uH z9p2l*V5DP2JwRp?Ks!R9E7U1c;vMMtSp1J=CCM>Qg-A5JHwNe1a_QvOc4O9t>LZdMI78RnIbFig`1xKxx zB<6*%(R`Cg-!c+x3Jh^O@*%%*TsdYL!VN;|vTRCWR~Kw+ z8`bD-E9!V=@(Bk)ksGp=WRT*UBYE%T?yaYj>UEtuh$xpyCIRwm&5{+$0QIR zh!?e+q2gbPu>-~L>H0`+r)FP1uZGP5yBEb4z@CLmQ;6`9{c4KUN&D~q@L2G)oi>KWDg|-s;R%(8gSWKH?+1J1L-P2@mnsVI*d5Kj%j_9*Rt_JFY15r5?tKJbtVI^@g@#=60n z|EmmZu9sh2=9*|UKXkl$ngAlGATF>KC~LnR`Q;MXbX_R=w|Tn^;?=J8>}|)y99~nvZIpCWZS7eFnPA$*dP>JU{h}n9 z;rYmzL$o#08Zhy8MQqk!Z9+PZxcJG~bKqC$vQo2idEbAM1U|{S>~zM4{aL z(PiokZ!Sf1WMCJky<^5AK^j*6rNFP(aLxHZu^bv?8|%%f-X%5lTB_i1{{7tqrSNHz z=i@`jH+gssph#tVxaO^p;Imtp;+^u_|M+_Uv`7`oSKv5(91@9^&(TiwD_oo!v)KR# z^iM6A!p2J7pn%FH4auwzl3&KJH_#O4QMOl$Xs3*nkZa4>J>1PELYbPjwmSA-40?PAfty5fNxkQV$gK>c7E8JTd9`G#7U_xZk-s%1+nK6JaJzn zA@ud0tyF+77?P>wclqRgo)=nx3(M~6Ct~>BQlel)YHwDhtm}?wDjDjrK8=4WuRiW# z@fDOij;@{(LwG8I_5OZD;adUsNkoA5$*if4_`M3BlSJseQxjzk+(!P#k0>;KS< zlK<<$kCJtqm5L;6U-I8sUM=5pm)KAE{Q4Y&)D3>*yuA*YEt}L0X0+>(t$CL&3oiVt zR475#rt^?~Iho7#A1U0-%A^Zfw(|1H3l3rBY`-~Ug@?{M+r9&PE;>*^SCqnr93sDY zY7+16qHd%lN93nGKXn%2=bv*K)94u{GCZJkg*3bipIs)ZF;q+IEDNS|vL6JC7{iXj zWg~X)jXhqy1)mBvyE-~Yxd_jA>nbw#3pv2g^8!xiabzm9lnrQ23j}9s)F7nw%0{M@ zr8|pTH>%O;M|&`&UG*{qvWqQFz+eC@k)ia+%0U9_0st&qNfv_IpU7>tFg1vf<~i1TnLFpa^rGO7?`#qMWXij}P=S2mG2 zIOswwI0*@{b)^%IZO5q?8}4?X>0ynREeqGBwE=L1sycEaw`|1SAZN8^`SBkz4UD-B8b zk(d$*25#ch{c=n9XD0gPPN$E-&(S09!illP5_`4IN>1 z28wO;ItZ}SpPJ=uicjlVc<_G0hEn_$K_}l#ewej$%o_wfrnhO_*7hZX4nGnvccW3Z zIGznWnVL2q`Aw&+So0T4d;a#i!>}CO6|dSK)kd$>c&I-j242jJ(rP);rviu1n0~zwGBOz{l%+1_8c_Z)6y=Dr29VemPatYXfTlMVkk!uY7BE}P4 zRkG%P@n}U)yFlP!#~6@kg4y(eRUCwEI}^s0loQbMAx(DTCE*mGG}DwK0>N+hlbM-_ z(he@;)d3b>;`P?*XnIf0gtI!E84MA?tm{Yak~69DT-e2Vb+HuK(lwF=8qV8W6whAJ z$2CN@&XhI)oT1CTb>8)WR=YqoN$F|=~&pXe!0Kc_*CWrNeD8@G5l`HIoz0hOYoQM!F-i@;1Qdtk{ zygK`$Np2?tt~S9&K3T_T0!ZF-I+) z-BZaseaq2627lTlr<1|L3d>JP@vLv-8;-5dy{4u9I)B3Xu@d$&&=sjep+B8T6DETG?u%L6)pvjjW{A@8tnZM~2#WB*A z=he`PEm#?tSWvQT*l)0{DjI0ogUbqLxsg}X7UgKwTmp-- z;3<3P4Isk;iax_&C4r1Tze%pBnkfen*x=UiKMnGkmyf0BvJ|VC@^$xP_&ptlj|?vk zB<_(64e_T4GCmXpgI6++w4T(KybfQPO6T2aUb|tg#a`#vL|y$Z**bfcg}>1+qfocs zV)yK1Bg0q)(|TCX7n-YbIS(F)9FKi zQ-AJ;^1~B{f1@8A1VXd};Hzkx_*1+%ogUA1L~y7C)XDIjCGA12nb+G-biu`PGSCiQoQkrAMKTn-hrt1&p-YEvqPdr#Xx(o_Q;!FrKvP)na2JSQOr_> zPWSL@#-!B7LvE_KQYKl@;2dt&gm31ZK2v?B6f*sCo!YB~W#o-0e{EPMee&FNw_@6E zqH@k2r`+{W(YyXArimz>95A<{H+$(u7=r`!u)E6p!gGk%G0fz&3w} zZq9GtG-Sheh5)Tq$KdYxURw8FpL+3Og>X}-bny6{8)aG2%l-8}Y5Vma`x%fRVf)el zwA&)G_8C)?dH4A_A%^JZrM^nYlMFn%01h$r=xN<}m{z*=>+)6Zxns41#PyGzlh^MI zi^rcY0oxcv_6~Kqa;N36(r*y%8&9pTlk=X!*;WEe{`3pmzY(S!Q2^%U zIiv@KBB#R-m*(-`UnpOpAs){H7_A}UyXI+$*Abb&nlZ)+Sj0iql+7~uojQaZ3j=O% z2H{h+y1V)2kL#A$@7WhmshmUu51K12QLd%NZJ&}9Hx0>7F>U7<%V){0R;zc<*Z|>B z=OwFmaxNGW>V?}iwasjMKD+pW^5Z}z+85#MNbI3k%I|oUYjMXj#pxr6u@_-gKdnmW ziTI;nHQq0CZ3XjC*HFyz`6m7L$Y9+##E zGUHloSSF0J^%T}wzGLS&tYR@4>)WkSZfVw5O5aA}znLF}+3vefqDr>>S9+>=eE$aY(?XJ_>Gj!dFl`=m%F%xx z`{{TH^b+oRC+Iu-S?~~&tK4Yzbo}(!VioRh#_3&T`|8vNG+z&}dOR@t^DuvN9wI?V zg>PggGcw9$?1^1T!q;uZ3eM}Y-{NNA!eGOD*);wmIt##Gx zt@O_{hjhkn4sVZamrJd4;b)UsZYouUl`i4nWvbB_Zi7$-YH!9;Rm>ro0L>G9ARpuQ z$32m>%=c?4lwL_6uT}fT-7g$+le2T-uZyORq=36E?S7W8L@6(>>arC%I2c#hInjCc zPhzeutbUY;V{o1@Xz}ow+P6GU+tcPCge_8Jl8rB0Go^c-OgpzHw7w`@*vV&0z(EMZ zeZ>Fa48McDd_0uhi*(VVL(7a=WCA&>STmpQ8nMB5hNBX(ai`ZThK7o8 zomP>tjZy&8lziMPYKX&QKwij?N{rbmVG0BUcwc=$`X^I62-L|g@MV0t!d_hy2m735 z+_{n4&Nd2_)ayitBkSPO0PH0t*RZK4;p;9i{S7y2Km8x)$VQV%1;8UW5 z2dD|1UCs(M*#5ym(_^;M^m~1Wu_{Fs3lBL8aVkH7@=j^cwPI%ObLN4z%;X^G%2^Xk z8s>D^xRH!>cuzTEEW6>z?wi<5CfD*^?@EfZ9^huN==u zMoVFY&NL$AuRP42cfdkZ@bc|D-i-dVws{L|nAJ^LR?Q#o>SaUjclE@C$^koS2Um$HyxHPIGF=j#w}IWJ9~V zOoZ&rGTGgSvz}hZn{i+cuoo6%L5K{qd44kSXInVU{&$m-PjAG1j-we@!cH+Z zu&)`AL$0CwFVJEO#rPx@dVeha(imjUt3xp7@N)vQSxXE)YQk}OPAc_4=lgFr4 zScK=G7WO>f{Y9&dHxOqsNLbnFVhEH;HMi04&%_!Zsm_~Xfzb|iMlS|?-O_1}AC{%i z5`Bq>Nciq<+!{%YT_uGQh_eb@N%m@8$REaPh3QxYr8nqtw&6tA#=)?gMPl-!BN2&*7%> zo|^j*4v`|M3b!qXu-fwZxffw0oo?zc!!6^xTf(%8`kPpu3!KrC{&$DfdHsssONQQgCJMP@TodP<(ssGS_j1{?_=;J{;!XGo;$WZJ%sj0Ve7Pwo*>ksrV)gdLw) zgvQxR3iv}vVC2|j9sn(;0Sm*XL}yX=*hQ0nabnrqxOhi#I|EA|Xi zSOrVESbP!nNj}~1Er^jG?P8w$m`3S|UG$iS8Bny0FIw$m+EQco<3*>Nym-E!Zcm)0~+<4`R zlx2av8>I<28>4pYJTFbp@2rHjakGJX(KXA*ZTf?pfAh|Gp~wjdi*~V{f?N<`xwy?* z>*nU(Xr#-+tFBe%_IXS?wwqfx{|^8$K+eC5Fj$?lA2}clTTb$WksjW^E+8<7vZC*=w*Oy(ExtSw)LcUgYGC)olC0f+%FKMP_60olpB-Phl0S$)*7Q47?$`!si|o5T4WyIw2c|o`ch-OqYZ`B>ZH1wrFO+M zJx!!Fr59B+YuU#c!eezd&+2)lGGrOws!LgG?UVGSc&>J}vf-)-h-%8D4mV=W8e<2A z>XJ^-b2}TAv)gsa=qyhF1KgR9(uFgkUt-TV-3JSj5}K(*IOC&~mC}pEXv`s{qGGH} zlv4^l3ac3sQ)(*{jU`!>1hksdMNbGC1+OQo#VAA!GDdr@Wu6 zOUf_|g|^F;g)K#L!&@vdh7fqDu}8)W%4Re})(JmU#9~7Um&P$-HvcHA0gB3Mag-Q$ zWix3p1}Gn8V6(h*ltgC(y@>50QO1{}a+{Qn??EgSxtO3t$d#dVX*BD~vdUrCqwVZL zfPAIWkU_htjU}=TfUjq0R?20juS|+fNG8PC&M-#w9VHni0w2qiY(GjC;-<_(X5BIh z2`oHyK}-A$zjA{GQB+APrq8M_Jb5Nt9cQE$NpgNU#dBSHjGCm|xj z;Yy6eYBPv>A_>UqAi5O1C1m#T#0w;;gpnxl#HdjIv?zpYf}$vy2qt=Dl1RuZn0dWH z5iCS+(hJ07)ftd%(;>Z}(-EIRsg-I)0T~TuY!R{905uANjz|Fm?~w(bM})VKmNroo zY`8%uSVRdrBw^la(b>d<=Su>QfjAdYvx12k*$|N=XdNc9*&KwH+f6)g(qT731d$qo zFfU@Sm0~4W2f2vB;=rO!r+0~hh_Tt^AVRIqV3Gx^PYNqoFiKeP3XssDv((!Kf-$eh zB0>%}G?FnDj)(R+oJI#Qj7eb`eQ>8^H$N zC`xpyFmhT2linx_7#5R2ta=M?#xQqS!90;%y?Y*I_}=i+Y8K7D1BDIvcNZitIiB#>QGB z==5f@UO*Nr5#4lRttQ?ocwj6IRKday73g7v+yHkq$f~m-lNH8H(n}C%;1SF#@8E?R zUQZB@B^?YX47b$_P0%BYB-r#k5k-?oEHIKw?vW6(K^Kh3C-X387MMm9i1ElYm5{g& zVahWJiK0&rn;Ff69Zfa7;N%I^COK^`EY>;?7YrH^cbKRAOLU$o7n^{P>5AW2q}a>REE_LV9vxQI2*^lMd6SHr(63Rg@#(;&lOivJ=M+8C_WZ@2*2TO zefw@rA*f^b6q`-`&9{UHZq!@l(w)ffA$jBqs>zCvZFmSBh|RqH8I7?N^cx$D$A-6% zwR0U@^*1>+U5;8fT|0q#38sUn{5!|DT*v!)j-vi*p65ouMI{RH$Fc^=%=E+GNUqHK zq9!o@Fqwza-vZFzHwqk+Rdq=fQ+HJ9n0+fMA>1g}s|vGlcZO3`g?P$!3nqUbeFDl~j#E&{?)S6>H`v10lK0gf+yTZLZ5 z(~qMMo`JGII z26P{~7y=Zp$rPt|X)F!87&5UhX%)OtW(AD=ZsL6Y*tlHO2pG*pQ?R;O3R<_IXtI?Y zvvV$U)41u}3~o8MmT~kcfnw9R30Z1bd*ZKHmpF9guURwm5lm)@2@ykHTuOnLK6%;g z%eLMm_V4VR*(dO0KYMNHTXOrIw=d~4ls@07jZW?q0KC^tgCjP zxK((M3vx5L%S#qhfE4!gjBEo^Y}B|*29=G!l*6)R5h3EvaGEy0w$H>$b^uBWWR%b1 zW-j45-)p{jlb-~Piqsyr)_6_zBjHaA?457|BgPRXG-uf)cKmI1{p?iOm@mWuzDbL;0b9i%qum2}NZ(Ij!&dhY| zgVgFfgSxCH-CvTpX{N_O5XI7RNOlT;Z=b#Sbbj;fcJ%jL*}PWNn^WIW-^2f^zURoV zK7aS_^GOZ5w z^yXc=%=%f&5AI#IK@u99&)awZ-sKx4NU6IDf7v42%z3{+e5cp7B$lqbWI;@OwJc4v z#1>q#PJ1ECV9>JIODqE5NxvAx!?0rx=>g}n@Ln>QFaG08*od`5(yLzU2#0JrK>7Cc z@n~Ax!n@Ne7Ol8(;GXn~db581e7(7TMf#qB&MRVzSETM)*ftIEeQ1wP%Gp9;$Nr|h z$<8o+6g!i9o5JjYhdPX5hpyF2Y=9P_e-GeXPF;GY{o@^s5z! ziw}=kYjZeo_89c9ZJn)Qy7kbX&X12JY(s><&imtMH(vF&$UGV=Fp z-gx}6>+l7JZkyRqd~)%nn-2~UUGK8oir(Tky$yBI8uYNC$7V99m-b$}Y;`xDeaS=H zAG?I;uKUd6|8`CBNrTDOZNL{UJiPhxfsw!WuE;Ix#j`!px{(8JxUmt6~m zZ5SitNA)hb;F~Kuvme8wN(9+Z}8l< z_^Pki`N6SQ- z(!Xzd}?xmkFpI;MKGRxDZ9w|Z)wFQ;oa%xttH zoIbMpI@1E2dpvAUu1Gacao5y#bS9@SpPN|TlC9}dzom_t#jcR+FTS|($+$_54D42~ zP;ah8j2l-{r301bHnP2RjF4kQQ;^AMhGDgjNKl0ucCb}02S~7FF}Hjprzy2iyg8lK zB$nJIdv8<D9Zgoi($s@8`2Obwu7l zk4TN~w#d9C^OxLs?a~9&tvX6KUTXDQh0xUIp3eEX{)JOpmp0)1=(qQBp{WW`ZtSwx0!{f~``XTq)$?c0>~XaCJZHFA`s$6@X`z-jyVD)FnRFKO6>a`#WD0Ir z5Yr%`JS;VQK?$zgS zTGig%CWmFGWCfaAX=uL0f>*pcuoGzgsj>N@mFO&@)9Q^b=-+bX!DqJb=<0UaoHYQ#$fXnadfudlIOZ;pv?seig@QD?B#XAg#b?H%(!vv|Xym7O!4A%w|F z12N;MS@M{WQM7ucxKUB>_|BCBEi*c%2ZAlF{R2CeJc<^+SQ9>VTX}Bm9A~J=ag6`2 zz`fk#n$?KvzRTnM=zrKhzP|C_2&LaCulhuNm3wTA%1s{k@l#g2DY?t!5dO%QWJqJ4G)- zlf3z(D6&QU4Q{fZI%Ut;U$)x?k-ks;@c%OR9`J1xY5(}nY*AlHyK0tfS;dkZ7df^p z$=!!rIL*cGMgkotJRvj&dA5yl@2{AXrY#U%;%{{O$<=MS-Vc6WAnW_EVwdFFYZ?|1ofw;TO|^Im+hsR{kje^8F3 zZ&woZv*g0T}kk?WdXO!p{9pj%0hwTDDj{x?w$YI>fP9pgb` z6)zi_W47>2&@VehkY6N#$%-EmWLjtp3Pm6?BDsKX>2;92-Jp3v!^$rHpi3?CUVVth zN-5T46Ld)L@R`; z0H8Iz-H35b)iGO@%ZF~_OvxYuIT>bZ7K;H7L|C=QVMYX~h{iF%vJpaI!IVWx%%K-m z;$Q7FXUCWg*t)}EOWcw5Ya2yPrKP|5+@JSt`_q+co;-hXdG~a;8tNfujvTrFhWq!f zZJx@j1NK-=%lv{BX68*PgCIJKtkZgyPWJsQRKNF|1Djsi)zG{1;`YAVJ$jF7JZHBw zpLW9scVGCxR|}f`TNf4Av~8N#SuOQUTDusW_tzt`6)0D?t~|LvQ#(N>2U99X2H%rb z&Oa=MI9)!^uBouDX?o%>lXg7W-}l7M)5>Q~H&_`h%b9E5y7&5fFX?Z>m9s^wo98)} zJIqhz#~E*5=zBO+2SR_Ed)v94^}RbTYFmA)ht={GX1mz3@W6X_UU1(R3z~de7Zg`d z*f?iOwX}TY&Dmh&oNdcRa|9A1yZ2K9>=9NVL>MliTa~R#<51Mk&zNAeLW`~ z_<(kepBGzk`QIyQa|ZV~YGeK@U%9ez)k?hj z^3FD#?JRiFFzFW0e|KppcBz5~Y=L>C*dDuzxO7`c52NGWsMi*-Vlm7gjYK0>_O_o& zKY#mr>6;g~YmN!xvr0@k2`K1#%&Y+-zH^3nMhB9QL zWeBDLDh5M|QUW7(CPYG*M4v{|B1nm~8LS7SHd1s#zE~jxd68ZNLGknTPm|*hCEQ1N!0ZfoG%g@4LIGMr+ zmFEtRu_>ach?n?B1~4Dw=(%+O_NJ2}duBQbdu8hE?0m;0j|~_^57T=rDKc;5bCKZw znPO!8IoHTm6-Knv@HP&PXtv+wwZs^0NS=cpcglA+>_*D9G^LdB6z`56`P^Jgu@fVb z<9pnvnSU-0H)NJ zFYlBtU80>(-W;=|={eS1K0&)!dcfCm)|}~VYQi$QVdzuhiSMiq{(D7PRdsb$*^WPi z!2Fq4N2Fs3RaH@mAe0nUsS;m0%C2pl(bq%X`6FmNTSwym$`yQz^wg~Rt@Erp=_w@kgHC8En|wy=gKyJU z4SDH5f|}0d%R8r@e)`Zy=~tkzX4}MwJCc4MTm`-vKmKaZ_`2dh569TAC37MU$u0>6 zF$6#auexEM9x``usu9cl803#Zs`>UerB7~sNP6{56;SWh8cnLscenLDw{O<0eb4nR ze|*y3yp{RgYk_#}t)TEtx=?yW`sB^+*X+?2sP}20c3B_F{x-U5a@)SVmHP`;t>6A8 zDr4z!EB80{w-|TII}ErM2dTO_9Q4a7$66Q?63yC`E)?c4dH}1e9q|kaFJVI%|2BgM z`?tVa!n=EYu>3f+i!bG&l`%1Dx{!A1oPyI(S}64uYBV;Tn|24aCbQPeSs>4YC1Yg; zH;$2Y7of`VD%ILRG_WoZ0N65C4$!lBXyH&MlQxJh(AhK^vQlP1x6--LP1We;R)`*h zo;5lvD%BWScO9q7QC&hg91q#27_+xx%f_@^e05fs6Jue3BiV_+2j&tk8IdF75eG~v z+3sV`Fu#K&VL=8udGp;W&Q%jut!nBqS-NlDXE9a4<>XBIHL`(9zRRu<{YNkMi&tPo zE3gi9eRCxsXQn}g9{C{H<*ejgPH8tgy=nTs((dU^n|L|LYh<%k&X07$-YNd&%Uv)ZmvZv*7ALizW(TE zd%rjZ+`_T%PmQ#&ylAwyJE0seFdnJmj$d0+!RSV^P5`b9R z3o&|MXu^M@m5vxsH z#uS9T$-szRGMUNv1ThNF8rUQRtU;fO+>TD(`1Xy#+Te_pGrTRdS2XDK)e9Rs&M8+} z8J$_sF;-RiwoA8>UBOIt&*^AbSgqF?L{Lc`2lIY@IWP>~;{|D|tfCCN{=S$#+;`)R zeOQF4nK7dVcIbizQ5z0VZPJ!-W;0i!ZJL^&4u`d(frU>2^QGO_{&^pS?<|LKITlKp ztX)NoG-4OlKv=JAOYx3cEb(SzxtoU*qmb2m8cDWz-CaszhQ>5m&4ejb2MUx+??EbO zY^f_{P|9k=b3qa><%0p>$>PPP&qVp>rO7)VkeBJPX~kef^FeP`t|WXgCaRQLLTr;H zyj;y!mWnNf`Tfhsj>2mMb|v_ z^QW#^M3a@*a1FYfr>l0#c{3|3XP!4@)l6N5?xt(5xe0A%uDWGob=T&a!dSrN3e*}eH%vhT* zKO0+{Zv}MY8PBxM}naZONuy`C2&(#D`yl)gMcA*pdjen*sQMx9Y%iv4#@de8EGwJ4H*Dx`UTJx)rMR!JxFvC*e^F5x{fV>Zj0$TNiUAnAG3w=lwi^lg=UnPeaIJq-lZod`{I)| zA^Gj$kYTHQhDZ`M*|3Gl^)iI?-5&;>oYvgr$8PW5;=@3FxY&!+{wA}Qa|S=W8y~8l zj9Q15oemN$%dOJZgCBo1nDfYdbeLdJ0)(2Il`{~tz{26c$sy1 z3u+pL?^Cv`Vr@1c`$n-jh;*boMY66?3XXat;}Ind5M)PYV2Db}E>Mu#vm}8IGD!>^ zw`U2B(#MdzC3`*%4yBgtVW~Z+O>=Q#kr7d1KRz;yPW;GVupbrtCCi2hMYi{mH%%%F zymF^U9kzS~=PH-n(49zh|L~29I?#WN>OY`Le0(smX9-5U#EUQo>G1;_q+~jUp3i7d zpYq`Lf`gc$D~E?(Nwvw+fGQhhDt9T;Wo$AA%kVUt&FRnQUY%S|!2jzf=ff%BC>Dww zN5jP7J=oQbO{J6Qvl#joe+0A+eJD_di0viLcmpHTKM>vwh(>SPv*)mE_m$&UL^K=7 zIJk2NtATZ-kzHl>VqR3B%4*b;X9;Di}avge^g*7EDju{=-!Och#$yV z_l{G!G>-btV%U$iB|S_%PrXI`k@^}*P)1M;DnavT?&|1>eRjltU<|J6lbsLz|Lpox zVXHv*7FNgk-~QkKO8z&! zH0zg<*Ix@jhI7Cl9qw(^3?kOi821rxR)hIJ(z}0b?>mk)VKffnwA>5Hsl4(emHTD- zCP<)B5_91s{y*!Zr|3~b*D^^D9A%y;;X9IbE6id;qyZ8Vn+#Ba!7Y z$F|odYQ=EtD}iy%h;t%&eOU$xe}+cFnthu!F&PA6n1MD(tg|uMHk+M>$+DaD8c5#G zt6xw-mLdmUL()1ib<6nqnIz_`Ol9n~OV>2A#4?lhN5w7$c)A# zc62n_2xVVi5V5n2-KI(c>0@bNFd_YZB5wZPfka{;)$8#jQ>moK)0@KkL>QU~0tw7M z!8!pIT0O0r!_o7)U>krPzvW^|i>{&S{FlMXeFB!-<4?j^_z(C85 zmBYhZO%@Oa2Tmt%yVUBu?TmZ6eVwb(qPxN$1nxGMkq%i<*6Hp}TIFjlpQb+Wg z!c8y$#&^|9l)U;-+qF!_P9jYpulLi_Js!^x$-v;>{P{ zwEOpuqNZgA@`!7n8w=|}nbW<50Vr3W7T5?fWXD-5vV6*)u`|%rhHfd@y#br}$!wPB zKTuaX*u8;Hp5O#b;KLibVG6qjkg4xLKN5cB>|-3K#w<4v^VA$9>yddnpQ`BO8E9%$ z!8UY*Brf*}PB5u-Vq}Q{De(!8Qv@$BaXdlR3pJFPAfw^$uThCLkfC&HvJr!s=mLwp z{F;k57(0jTwFmiW(b}$Q{jga!u3ttrOq$RI^iLaV>eOJo%x?H*osd-q-1?`^r%6BwPvlnhzJ#((#GkeDBEemE14F9g|_$?^o9{y@hI{M0tNk|n>CvxUzOdLCk zL}?I`bBQdhApC43tCGxRxs}CSmLVJ=1!`p=JJiAiycfg*-ss4JA;p!=u`lJ9i&)I< zHtyT#u~g||r}R4^$|Opc6o8;`>@u3l;1}XT1FGU`wmvL(R}_P_w#Nr@Re2CJMkn6Y(jZ+QotUf4l7Z^5C(B`^aFQ2NB~&e88X_jt zAb}epxX>-Y4Mqa{QKm5T@X+LjXyh02iOSCkyehpKP&=FjRqBFE?z^NwJ-)^vX=PuU zX|gZPwABxODGh!3;A*r5%$E;-I+AStjdQQN?p$;OberxKE4rNyQx$ltU%r}r`Vziu zb?!E3xE}G{j$Jn!f%22>{n+CIe=h$)-PDen@k*_#3Y-o#uB#OP&*~N_s4``$rAD_w zRfU@WZQXRlcfTB4`7?fqxQqSxDkX!?G|@L<(kTW1vzo|8LGZ+XRCqO!*edKdK=vErjT zq2U14Bc7KI<)u*`^xjY!)go}>Jf}Q7JW6ETJc_vHP1XSc4rujkOG-yV*iz9Jqktf)Wd*qQz!V(%*QqrSza z{94uTZdf>}FfnOE!)ocyw_d0utB311MpM7#aiARY>A5-^sGs+ z;Mku`-C5Lw%cvS^6153`hn&h96Ui@1hoWex)S%|Dl1kaFs9xwKs;kxZ|EgKpT* z@z_J}zEA)4Z`WHyw$4x^hMg7u3Y*<2u6|;zXep~c=g|FoE4|kpd+2}FR?v|$t$L;x zJo1wI?B~`?bx&`p9ON`~A?HwuoQ`4WKQu%&++j0RJ-1l>Vj1}Af7g(BZ3)RGWc{E- zX5<{PeqghVj6a2)V=X9XnM#2lB8E^Jk6Po#UPX~A^CItXAFe!pt!fVQC3$|m!ZSL2 zdCg|gpcx$#rQtw&3}ZcJG2xoAR@=02qI4N!*S8o94A?3s;1y$5VDH!~QH=NKx9DOs zV>hrmIg#!gyK*_-_-83A#?%4U3_K045XP+}fOVLVLiUpsu)E%fOjh&+B+3#58(G{g z8W)l_iy~+6l}8IXwS}V#VEOfl_wE>;2i$V_e(>@njIN@{-q;a*qO=J|0!(kXVdu^| zy&0&T;OcuO&omqxkxx2W_=`ibtO}1G;&!ovl$I(*b*MybPn+#59nt`iV7LYd_Yr13 ziecg-B!P>p8!&eQAl=&LKG+Can)KjX>H7Js&2F|!tx_x6*x32fbsnJ-{QF}|QK9u? z@b5|iwjZt4Hi5RG=HmOniZ&3HZkP1lfc}dw^Z_sCO!CB4m@;XcRNtwJXYqHF#K)M* z0qc8x81N0q*ca@%>7==o)!JO?l+CXdEG%U(xdfw%x$79^hpgWQ6RwI7memSV%R}he~12h^Q;?mZ=QwYJBi$VwA?z1Fv4dX`yR<$ zF-3qZfDv^so*Cz?cqgLzJ z!0ejsy0)-T`bzLyLHFGB4PQ%ND}XvcK*yv<6wDkj!wRp=yG{BZ@~y!Q$0?m7`#_*M zPLaL<$R?5(kUL2751fO6a==WhUy#0X0U2Hgh+kXLqvpdN0SF4@j`YGWs^e-?STZYUQI}$aKA#$;^tsTYBUS zmz39mgU&=ELy3(NNtu^M1|!QtUx1`y980Hy%xYp>l7n9%wH*Dpv-~3?9wO4RP936y zN*s6o?cIeSgm*)r5CpJwHUK<>_$2;exHQQ~6HqifYEi7juBCijOdI{)3B-RSORzEEQtCu(wGnqFOlG$uXtWG3KU-11whnl7}TH`H}lzi!#y})uA zw4x)ly5MpEc0T<&{5&nuOzn)*X4E#0i-dXG8fRe6nzJsgp0=09Zy@ZL9Fg+ijgy*1q84OWMAt|ft@3ENiG^)xn=H+j3| z{>EbeF?u(u)1)6$C-%g3qJLzazDP?9J-klc>(07#;)<11nNw8hgEw83V04Yz*0eWt zgt|$60MfV4XJw2zDuDggZFuR0^nf6lyYOmh5_G32=@IT*qpn~m8Ei;X!B!JW(sFBuSEMU*&B z9hSa7jD2qDMDio)8OI*kp>mG{O#Vn7B4o@)f{e3TqV^m`{wkna#wx*@seu-F?>D&ibgRYQlQMOQlUE$|lI z0oU;CtZ%f;kK~hm8_;(tnk_s_$S$+^<4i(IZ0q@3s(r=YExV#7eWBhI-L+-!igww_ z1twtf*j24lpQay4Q}ge?@VwcbPR!Qk?3{hxh4;^w2SPsE5y!^yVD$~@*-3zk@E%)m!bdysmOP2uv#VSv8jW$;*cbS1aNx8syCI{S#uU%g;xT4k;k?c8vn~ zp8tIK26~))J9JwRk=`H$p(l-eJ}wn5nq15`P(FOcsh$twu}p-E412E`@qFfryxNGl zN`jFM0OS@JSy=G?Xzcbe+JH2_Cesij-$CW5ddV+geys5{qyuM=?5Q9 zfBs1{db#xZO0WWYo&fJ1U4G}Cr2p!VC%AtpxN%+$6ul}I-BlCf-?TR=PmP)n!eQE9bB%^0*xw@DkNT5039r5c`5ThNHvYg4O@ zE8D-lUKXw!CLMV9z@!Fw=lXBkR~pr78|dW)=2J2@4Gl;GHZ{~Nz3Se3uUe{s@=1$m zTDf?q1ztj=^}BpqCt(lBNn3q)kpt;-Ejt&lG>H~L{{D&F;2*`Ug?%^)3#o!0K$vTFIf?20fg~=AlfK@^>OThzwf` zY)ZTnI9(kTnz}vM1>bhSn$zkv*0F zbh56Lv{MRueU6=`J(<*)KUqH)ki+sCRSxqh_Vddz)(^;)0sMBXWIo@tigHm=Y-!E< zyI_J%VjCj72!O~QK^O)ln7M%*w=sfzVl*!!l--2E0|x2o&v=X3aPx;cAQ+Mc3pk%$ z{j6&9}UQuZzO#HjobY~jJ|AWYhZ0)SKWqzx}AXleHq%>iFbAdm?r7PG{#rOSJmR& z_^MibJ-ljYO8{LoumR;;8=&_E&_!rxXJGBHc9C`ckzvYX_^--NvUGAxk5zd|VYr7X zJ&ez^YK#?yQ}}Y>Madzu%0tWOZ8;~dWIo?19L%oKOErWJRnAH8&Zj;_<0L8(eUv?) zD#X6kc(ii8y&)m4rp^@FHyi>ahJE9Xv1=4;R+6)u|Bjaelxa)4Lt?LEv z@Mh^Fvw=4Qzgap4JyKo5{7{(2cddb>P1Y_!8cLFG(k$2cU0L z8ic(|&=ofp7B1;M(RW{feQFh7OBGj~VF`)@c>!TePi+r@gin7iHw3g@Ex7cC(1>o| z3y=~K8drq#k(NXGMAi(;@=KB{M*zo1YchjQ5%BS>yhIU?g&-y`miI=Xl6?t!(MuU{ zhf25o^1{>WyxM!UMipnHEBeFtU0$l!J7I8Gb3KOgqmiH&n@9#it;>41uWEYYk9u0; z0L!=4Rt=PyS(qBuSh?{ZqBkp0Zel|LW?)8>H&DC{hfz=A;0+vTBT=*`&#iEj(;-MD zlVE20Psb^wk$*%S6Xo1+*@!7Qhv9}%t|}Fb4*8=&%`kGL7}-k9xq@9viEW~kvJ2)? zm@K_f@$EFw1U@0ZiRh*NVkzNrfmE^IpY{xM1RXJcjVO~mTquLYsmo+8O(#puf*s8g zZ6Zk6x1P96;4Z)4Ukp+%my{@$e)r?cM0}HFn{UhxPFbb|zQ137*6;J}pCdZ=9eGV@ z#%-Jaf+iy|xq^N(zf45_r2mP^)Qd(WyNxpfUgh^up{z(9jAxTEim-Gep_`aUSq%Ik z3*o4soLx@hg=T^)#k67rBmK6Y*6UctAUa&=1&E(ZceXCW4b%qdc3i0C?cnsm)k}05 zjxMKd28J*IP*PlIH8HHgp#RH3 zy%kfla4gF*5U?MKhK&ZXe!ReM;)QnrWk=699KoMq1PKX=!{$U z(hRx~Kvtzv^l^F!wMT2tlXmz@zKraGjej^~3v+DA%*&ZjVRL3BhaN&r-oXo^;q+y= zrpvy2{+Rpqd1ay#;O;_&d>yyh^$T=RAPA*!iO2LSFdegMZkm zF3_H@15m>jmh^PJFYp%{MCqa@WFTWe)gGtlcaZ+DT;^BLikR4Qu@!?o*~iPUym-Bp z4u#d&IG0^(!ra_SH53L(3@1dt^Q(gbe~CeC+tJ-oz?zL`s7yu;+_*asn6<+l=&p^0 zDrZ!+jSCl;U%X8;T*3?WYulRy&a9uMHu47A9&cGtw(J~pSzubYDq7bYpBQk0WjB4~ zd>FUJ!^A~hOAG!Y`}_`PMabnB1&h5Z*fL?E^3Hanch-`T!FiyvDGb3ODwK5?j%Nj!U`7tl zgnyRsU+&Yvyt=)^|Ra1qXnlFf4j0%V9p4Z@>NdHo7_ zzXDB??QXKjQG-#Hk@_l3OwUEBsQ_zApx} z<5bV9tW5u`W5LR z@B>+}REdUrGiK?Gts1&sq0e~bJShS0kaqp+?2*oE=)m=;>|1#uk8?;(>5;TkfJWQ1 zP|pzkqRnEjjfruu-5Uw{@d2a+$p>T|ktRKc_R}(hG@UJNZakzj@5L()+uBrgcELe~ z?elQf!D#@1Eq>`k54htp|0Hm5#+|d!k@a5beS+Ej-rXw4L5J!mNA5*iof!_ijqCHU z_e#7ua}lf6n)W)`)4&<0s~o!=s^#F!rL1$WNvmZSug6)g@jZsdjCr6Osm}~%^?E3o zOs0`4Exm_!(4j-gqzCoV^o_fl27WNTYTV7cP3ylW7L%I?4Ipklx!6@CQWWf4u z-EoTf47Fo~nnG}fY?$nXXH-^y)EBb)%|7%Q#gP<6H6L+TOm13OGgGZ@2zFFY2v@ts$ps}%HJ#-XRBWTKt)eklBGAbvy9y6nHhJBo zDjReB7#O0CgQp^3KLEuYcLOl=9sG7kRor-b`nHm~k^(&krJn+t)tj8YF!P&OXi$n)v@>Pn#}3k%^v>fmpAUh3m* zp3=HwgBg?unZqM{-%|A5Ou=nx_nI+~{P4JJi%mQQH227T_Aq*8sg3W*FG}4jW5G|1 zOfx0C4Hr56Vy?6prz-8q>Sll+D~aV#AF9(%4kMeFP;Jy~RHF!{1M;iTWCUdFrHuL{ zPdY@aVllZ@tQBC|0_^#MnF|0CKCC!nRK%oL2SEs%g^4lRmxkQ>O2C zRVKy)eEMVV4Dgdlw6FwjLgdfzszcH#+JAzSS~ja6%DC|5n^{83GyMe^4+ z)PH>nRvOmJ>ZwkQ8y7gqD;~aLK>vsPaB%D@GoJjF1+3~PNk>kS9Z4ovNRgf66xl() zy<^on5AOXRr%1}vU8erVT>VGZGH{YtKVk*t6#LAu3P_%@TLTV^sPnMa$hDIvTa`^? zH3iso>INWvo_$m4^X=FRI6#d2#BzV)J|D1PIPXv}6qn`DxF2&7Dv?h31HhmKNJhX8 z7np;DZClt_+tS%lGbw%h2`c@Sv#xvV#Fnr_2pLU*;M`RvXq{EjfAQ64?zr16mEQ}X zN-ea^PVM+(YyZ?uU9tIN)j8g>?abNLCbep#iZN_mU@yFC)tdd!!KzK0z#}RLYtkEp zhWXE=H&LVN9w#2qxw@ZxoEuR+@np^MBkKNke*IoJNkcG7<&QluR_%vIR+Ej4*&Z3J z$b_;EyCn10WrvNC>wYXo7PP5sgg=Z^VLWC)sCtRnn7|NX2v#Vg_*yNP2n?$5@)8wv zx&i^0GdK`*O2ozsJkB695I53cv)LHZG$bx6=`y$7x?uVazcW};;OMLF@Cr_iMx`sX zh|X|lmDi{NqA1Y3ngP}sn~2p0-4nX9K^y3I07pQ$zkX|lr>nWHxjwLAVizoSIm-bE zIN=2a0SGrG7I=lGKv}4w$s$^dYf78kj$l`Xk8@b~O;naEJwf8iTnhGL_T`P#-~%=* z(T1TNJHZeLV@&u9W$I$3NpO2K(wH}m{HZJ_YKS#)uyKa;H%86Vf?xp}qqnLv>=Z49 zI+aG_6ucePeU5^Xpwqu&`hr{A%v~iHB^op#quCs$=}b$c|01^mX^)4S7tYwkTO3@V zbb8R?ZYr%Qwu+XficndgN$@U6Y=SUQ055O`04R65iecBp4S{;pa9tjZJfB(1&=5OP zIn|6>V?$z1ewTU+|2?x{1t&)P!)uZC*_fVbE{t4cr4 z?`?1Ql#J7>jzL=Qiq;lcEk&zc){A@&4oDXy63{AY+sZGMzL37Wv|@tRV$n`0-wT6# z%TYRQIBi-aIz#PI`E^r)*IHB^aapadNOh6*iS~8^VcpK@(A~jz`3pRMy{*PHXnN2W ziF`ImS_JN$v`f0Cw6f3?1U~5>4rnX}j`jO%t!3j%z?XNFmRX}jYMv(P18S{Q_;v8jcjAZfkn>1RcO6{XQVLDuH_V8ZP=e(0KV55+j@GAB(9K)J|$Ibqn<{ z(bF+9A$r#=5_)QD0uhX%YmRuwcrBTi7e&1zN?u+d>L(qh8AL|C*f?gj@uA%s!g{OX zJfw?Ym~hl9Jfw$!2#xNJ0h1$Qrtiu94EMdj7(JAJEo8UZ>>)7ww9|$f)=ICeSqVIg z7P(yl4Hl{O;qftWNMnxGlrLITIX-6AfZ2=DuoiyI6>9GY6&8giPC<$aOb^VT58ra~ z3mcwJJD+Y?WN@N%<5Tcck{)udK6fQw6)5bV44y0uOl%Jp76#iV1`5H<#nGCuLA@Bz zg3Ap`{=3}T+r5U%oSO;yaVl3qIe{*v(n3TzBJ!uW(vrv8Yg*;iZkz-+^)J zzBA@ZKTLXf7P>mv{ctzF$!y6GZwWXeV4rl27uw3fPT7YNbLIY<5^=;o;A9OtF4lxH z3Nv06wq_P(Kn&o6aGv%%SMY1AMVkiT4!ure|GLykzpB%vzX9Dkt=9H+nL|1xKu{3+ zyNzBYNK?Z;%vFG1q0v|gR+_9sr-AfM7PGMup5>vhtfYoP%@r5!Iz+hn>Rs; zMJCLY`!eSC0J+|bL0H`qRqXS6O-2h3Dd>hqqp5%LABJ}QVe(oNZ-mM|y<6E|Jk<;m z7C{K6lR-hP1&ITxb@xo@T&XT7P_OKqaL>BoyOfMy#iiJN#6F6di;K~x%~*joq>3WF zAN`A4HF~6Ue8FxFH%o6x ze+I46C+no&6CU-zx?WI-S&pEk=-9qIFX;RQ$UICyXj|B0E@8F_g7 z3W#h5pSHvoM6wNjbF|IEVKD%`EIL+W!x9jBfpn0d&*C>qQ>MJJ%9MM#8CMI>r_$4( zehQ|5*|DxztV^2AUpD33c||o{7M+pBEyo&lmadwjdFM{K?8K+wS*-Sxw--vWg>QeN zWl0*miqp_WoHD@O@>4z~4~ZpzdZ5jza$4H--NH$_M6J|IDFz)_LyxGw-37sByDG4$@j_?ty95xq?j zz2_1Z^#<(xj3hph#4sQ^kVbP*D?lQP8*m~=@Dc*(FoVxvu8VjHi~Tp~D)rWAsHiYl z(ivaRzr4J48qHk0WbyV-EK@3~rH`a9%fku5y(HfB$%n1cCG*urLq*B_w_Z9UJb8A) zQsCi)Kf?H+l`}ozoX1v_dxxZ(zu#}P8dw$7_^nP2UF54Paqm0~c7SoWG?@Urr?tyt zo;}+v=o`&zH&qm#J8^MRt-cX%clkBys%n+i=PdMVR7HhqwSP!(u4?bJjIW~2YKt%G z?|spvx$Zj7S4Tg6ujFvo7MgbjT^sa8<6O0xnpbu_G{srzb{lnJA+R9aWoaS!t@684 zlM%ZC>D7dlI!GvlV{sCOPD1QO+&)->#tHRw^FoZrDBOu&^xM5?M2Z7~Oa$CD; zbezHZhA>LF>z-Xw4$4Dwr>Yn3>8D}5a?({#TG~Sux7=S5Y_}T1KKIM-cuQ*Pbgc0X zsqaob>oiu~_QPX7xA78=o(&qTPL8!$I8}i~bf}PWz^V$;v?^4<^!Ic6o9kw|!YjlH z{qR>&Tin~~())~-@$QbxUoBy4Ek0ehrEsyq60`yxs2MSr0ICDWZlPxNVVfQvR>Cxr zrlP1n5oAEG)oZr6Q47+KblV?U)OTpZ4DWqYHg$}*ut3H93rv?DHF(;`&v@%ge+z(h zOU^l`0eaqdE?ByLK_#n_77nG4x@)6u0P}72GV^PQ^K)SsHG8AjDFY3BDkRk5XSIM) z_RI|}6^$je1zG@(Q-{@nEr_n_*j>KhmK75(0e9xN-?XP}z+O7e4zBzqn53H3ijC82Fm)>Z$#}GB+-hBN`?h)zmJAdMPkNsH__T;ZcmWmM3o8Z>=qll zF*NsrWcA|t6PjnuirjepwHr4)G-XYnuX6e7$=iBrYiIf=?2|q&a<|4}fp&V@)JFh~ zW|#>(cfRQHcztMx{l_Q!uXekAz6m9X_DIjh^Im4QH&2_^8WVKf_3PG-qfIoU&-&yO z3~^aHpny4GCM-#j&{pi81%>q19#{$gCw(T2rne1!wG&=XpEdL;yp8Za z61-S;7n$!1ku*6S=`j>l6C?8zqik7u7Lz--3_(c(A)B$vN)`x0#LkBUB(aA)_C_tn zt_V25TSdMM<-@44fsZ_PyT=9&du%q3edt(OQ{()mCT3=$a$3{;rhQH2WldmeI01jU zHaWB+xo)ybZ%|EH_U^JNDuZ4H4&d`mW#vswksaSh{`Xc>nKZk+si_?Nw5&-?uMQ{v zjQ9R5|0crlW^jG{rL9|EieG3@ar!-FWqb6T%8!Pf)_#gD0&YV2H4g(?Mtc-&EOc>Hdmn?Mi=;aK32X*~ARcuD{=Hwl_0g7S=j zrcWFI!sAsJEK(x@nGA_GoCUuJBj98ynq2IL))<;#(0GL|Ch_<9X2b>?BaHVgNN2$1 zvD)l4Dh{cyxJHaTQ-x~Ll+Tf1F-t3`#iE>_M=B3`qz&JoCI;LP7X}bO6`DW}p+Pbv zHw3;vZUQ3QM@a$E-Q2Xwg71k7h*!?YdRh>lBr9pC)^T}uj1UMKm6F#+}KH&It{~$>=MSPb*O3S7KUMITBYI`GXo$5ke(N3R5T4$Km)W>{SNN}uP#(< z1UijXFc<*uE3h$)MHezQa%#?25Gd5@1SC_K3v8yf0?>>rpn?tkQCfPGttb z;xJnPuxZpGU|_YpP3y8%#bKGt!)kOat(v)f^fdLllJL4bOe0X~}cSuXH9R!*>&m(zkpd+zv-N*#j+KEbV02W&yhS-hTs zwcVi!(f*S9i7b*4R>T(>k*J~5x?C}z;1V=Ev;_r|Mby@vR@&Iy86B?+dAwel2fWc~ zaxtrb2sl&~V5D^hPMQtWW|mcJAuwraHGbVtx>;}-3tXlmtxr|Xjz7y{X}xnxDP$_Q zheJ)pf*!QYc9++8Z8z!wGy}cHtl>FS5}GS!LN2SWO_2?CWAu^=Jp}+X8Bn*@n|1aDI@9<- ziAK+81)s0eYhh`Fv5a%*Z8~EIZ`N=HYR<#cTt)4Kkoo7eQ+*nT$yS6JxL3zIELYWT zc=@y){)jc+fgo?Hr{FMt|dE$WNd06#ZAY3GE=thd@rlTkpvAB9yX}L zBOLIlVl1B9(GDX9L-;B(mb8ExH)D?tivTEF4xuS_-L6ah#-~5u(`@xfzm^Vwh21sR z?%NRzFv1zZ>FMANfc?#T_e}W5 z4PQ4EfBosSztCp_aLwJ~1MfN~#+s~>@3TjNz93QGSr{$j?5KOuNHbvJD`R0OD(%-o z^Z0cVU@eyt=%jw4}mWRlnh(-j3w@_Tbd{P5V!?dAcV=W>uHf6xBrjb${o@ z>)XKEj}Pwdo8EbqbnLnHrfy{iuy_Z2P%|f1;m|o$DwD}+p6>Aa9Er;KqHuBR`p)LX zO#!~d##>555l>~Mr>Szug@H+1uRi#3w`u)zfW4}7df#q&M>>Xgh;Cki^oG|+EJ`cY zK_aFy_KY~e6t5xF!ofT%Wh~BVu}cVX&;^);E(>`|$DDxvEWj38({=V@4*2bE@7Fdr z?JzLKR_S+mH5r^H_&zmGZ(%sj=Bn{Ze>Z5+c`>+zjf$h17^O z2U$xQd+iWK$iyMB#1eZf&F3-&v;2iD z#SRkAM%juKqWxCUM*NV55vtV2#i*ZF7}iMaHj?8rF*__(R~jk$bLDrMpflAL9tgLk zoI%ZZm47aZl-8L5)p-U;p3w;?lhk|Re_eRte}Tc$x^ggYkF?4tID^tR;kLFgFa@20 z5!|vzda%5%w8#OHYu8Fi2i=P=xKJ)DgUcEqp0tXf>p#I(ZnG?=8dcX_muOqkM*dKG zLpMxzZ;%E_Y3PI`bKCU}Z6GCiTN;nI^wko<Io!{&zX=*HSG|wLwE;5^#g(C)-&%p<_slCNcB(0Q|7W#m* zxOb}U$}z@>3Zz@S%N|Gls1vXH5t21DAk?&g02)?soLVSAVx(E()*A?77fdW;#skF1 zmyHvGc!Imb5=UCQjZH1S<-O0}yJfMw0qYr)^r6AXOCLV2^=KcLKIDxC=|dC4Y94=F z!!jmNf=+^x$2C69((ffYRo=*v=hf)DNuHj*gBO_p>rX;{I%1|f7N{E<@ zAvv()FOkBTuVQsiO0PcN_v_=UAN+Fn)o8*D_DB~E-im2qH@^ggn<~tLcmCr2N3T2k ztZ~J>>aVCau_sgaG)X^wfA^OUuHNy&YyaH-CMdl1CSZSkCkMxkE1vPz=If5`j|jzl zsfVjnuMt3&zlBt#e(vM@@=Hw zLF%GspG6<|@#7Rw?PMlX7Zaa9PS)e>kz$CX0f-bmmJ6cUkw)Xb-9m^f@S+bsf|M+R zc7voAJWJwVH(e8NVF>yIQMYhkK{}0vAh?h0KU=GB6)tR>J?#UQC1auzM{ zglahY`^2Z7=*r@8rPgLthzn0+jX`$-!&>xu>->pTYQQ@D6U&VS94peyxC!kJhqm;} z0l-~hvay_qo77BwxbE@Xkaq@k~~w9TORX`oHiIU&%q=3;L{?V_Nr#aC6V zfsC_!aZBI1S|d#Z^bfK|jm+`;0QVg`jna})uZo&St)b3GUu0G%#xpWWA_df*!RbWJ z8VG|Dq|4!tF&--kAiWojj5t14K)YBWbYsUeY*SL_8z?}ZF{EG0N@ai?BZop* zxs_FPco#O`&am2qj#*pO8UtUXGP`;A6P15jzjjtt)sg=7%aE2hARXWTN9p&xW&nWw ze*^&#oO<;yq_p&@^so1JUzWTdESfr@lHqtG$6fZDaAhTAd9A*FNynDC1){p#jtXX3 z*y<=_Sf`^2%v%r%X=-9lbzwta$Los=cl=|>H_6C5y}pSa*DVGY%jyipJge(j z-CN>&X4%puuA(QJdas+r+rQi|Z?5dP>cYO3_H9qC+YFfG{TEM7T*K>8H-L@Jt(y(J z4)v&pHE>zajym*oREE}G1A4k+9BY`_o8Ihl3N^0Tk9SOr3S4nr73Z9mFJEk;G?a*W z-U%-)(zV@q%@e9HnQ{p*snB3)wlM;8=7TT2_~5=5eEt`tThgyTaW5!gqEEb@ehie{ z>+9)R@cq?Sf6q2ct|96474HMbvtZ(H(q+y{hrnOlzmc9*Fq$cLJCfDb;n-^B1j!*Jmw)b9{}`u#c-O%X|@=|qG1+k{tS=Q95h7XwGkeF${bFz+dT_=`d0MJ zY%-ZQN(bK-olfx(C|_MNrDx&t`E$IRUb$pbYeCehvQ6$-HhX@elACn?^7+jXuZ?B& zYS-ktT0R)*JhQ2U)poDz11Poy7!GgtuLJIo7eL&elxbE+)<8C?|@4gea`=Ayc(nohn3R~mZJt#x4W+-HwVC-8BJv-Rq6Oi zOFK%2m)A^l#RR8{o}z+Ii&+jGGh1*R>`8*mQrJIAuY`W-gF`R>h?p)F`u2-+vGl?T zkp2~WZrRE3{*?%M;5jMmzv8F96v^dQDu$yuiAaVevbY`3u2cjIrgkzK(K7f~oRETI zOM~dOdU3>-NFQI_Aie$Ut+$*gyfnSxHKLJZ$f9wyp0L`sWfU=egV}HEp8R>`JA2~NARetc1*Foz{&PZ!d z+r-mV(jSvazf?a4A5Sb4q|xhBVHZewSradg+U58vY*!G4Q67eR?Sua_t0Fj0$6W3& z4;eh}-HmHp>s+;6y80Spld+@swm*G%blCgc{aa2g{Zs6%|M33Uub)R>iVTLaiX0pU#9*A$$qRglQ739uRb^}KZWIe~{O+5o3DCGG0TOS7q?ShIX$ z3v0o9=Pu18qyhu5{2Y7h=Hj>g3Tm`f2^EqnlO2q*Rjqx`_gsHDvw!TGWMK}y(I%4c6k9v!jNHB_P5eR_jRG$fL@pT#UHyTG()du8SJMWzeN zxM*}%N5`>w^miY8UBAIqC=EInRrW3|y6v{2rM=;WPT*nqs+!Ic@XC;83m8Zws=ST@ zXm*%kfx}ysNT_VIF;Y=d5i!y>)lkWX68HG)#!J5mmW_8fuxBTD8w`TCv6m-f@D^CR z6Uz62@jzx1A7lKnVl7d&A|b^xm&_0=v;sPp3@NUtNXyJ66>vJ#5Mn$A0yN8h-7;tC zLv^aTjaAc)ap~2#dTvuymoa`*k+peNyyDh1w>oW2v*Q)FMdcGQ5R0kj;mpxHt+u9l zO%=DTx!W-`1Y&EXSK;@wnosvO-fML>&W}~z(|@F<<>BY6^kv$*(*K9H_W+El%Km`gz3;tw)7zUq zlbKAWrYAF*neK9MVv6GN3g(9bswFK5fBYJ8UxRQ@d|y(A-xKu`*W03*CZ_gT z-eeZmK>TeX$44VYR62u~YDj=`{CK&EQt93(j{Ax44jeaas0E9D|8G{xYNU3i5q*}I z#jAP#^UV^?S(}@y3i2#%N&7I>7s4 z{y>B=GnMG;Gw8a%{1Hri=Ns?eGxBkI%ccdzT!6BqnNDJefyK+pq>o>Uk1M1Wft)(!ae@cDoX5yJ!KqkfX6fNOW#u{dPV8S79qzH3^-T|`&o*higV6CuX>pz`l7b?dC8!o8$Cs#dY?-IEHAzU zES%E|W?p7Ig2h@*Wu-lDAEuK6|zS3GS}{_ zFZ7gZ>}fk*d1XhsRa5fJB^Sh@i?OUUf)^$-p9<}ik!mN>OupV`GO>N3n9w->K+H_O z-G68*(PBREOT8ufK9wr+MMR}ywQSbOELMw9US(cxJQuWy=f9R`XSo*N61@-Px`^zh z!1%0=DZgcrGbg(|-Nt@>?~$)1Ru>3ggdwpPUld~ZDg2{lva!CB?5X6Cy< zdJevNb{4Bg-%Fa(%d?yzmDRlFfd|%DEviCr=JI@r6VE;bMLCuN5bIM*5nfPKIY|R- zB&DcQ0l0vXbfAmWB&W77>ssdU+xISQ8@|+T;O$`B9&&0gUv|e*F#J;f<(R#)rE^gW z`q*H%8&<7pTe7$n;KkIzM?YM%-e7m|Yi*9TtxJ}G2QKAm$Q*SimtZFf&n;jZi4QHB z$@e*(7ap2p-Mu;Hn3%=*%SV>?Jo4yyFa!sZ4?W!T0=OOwIsfP*J)2*^DRl7)q8^jn z|Ip9p9|dxBF1xHO8_vJ)+wbqcy7YGR6fP$S)XiQ)49C?#POuA5sCh{^2VOyg4>z-KlWR6?Z>!MMLe= zr(zXX(B_MjDC-jK8er6c;fe9&oGb*&=ji6r$&%!j%#%EvgQMP_r*IJbd~y5Asmu#9 z?sYt$ZlaD;uTUqc_o#nR|D-;pzNCoeQq)Of*1@cXTpsHonxsz71xz^V7mYxQVwDh2 z4}?V(bZ;1u*d|LNp7#Zg+T2TFLrDs0g9u9kWC9WF+{`gGZI0z}fjpQ+T&7^M)CsGA z(Ts^ZX_ct6L=;vrmqwEd;wKU)yO@~+BCK?v5{B{6B$<2|r$&q#Pz9NnhHaZRt2)~~ zzI;%@>iyoFa(f_e+EBTKkx6nm7ptcw002&^qdi;F18zvevKStT-n|vp8J!M^5jkC2 zi%tzbkt&S5on_1tjg7lgrnBlaPXKV2DgTE2SiZb2n{BJiiDem#a*HxV2Xj53g4JSj?Vrma4agb zr!oa3CYSM1PSG>cmhFn>6|=bt+N*q| z0KKUJoJJw#KsHoyaG5~|l*x4?l#)UKge!|Yt{#uEe^X{mlT9Q(2v~n=H-zZVl8t=9 zVp33R7Dt(&Qpe#=BIuS!K@mZqA?kNTB181Q1d2q|eHL`S45_s~QiS`R&}CyO{)oAr z<(*3!HpW@0Lc;-R#=NPa%rV)VGKV*qBl(uJLYrEqGt(N0TBcR=3cE)km9ug)XqTIF zo$kaYuYG9C*v{C}Ll8Em)z+8nS+OSF)?7W<;K@&Sq(#=fi9SbfqEG&u2$Z!AYs=@= z4W0_8H%Gd$B*j2nKdKdsrWvJ4usV*P#8K>RExUM1V9Rd_zoKs5;T+T_Okn5#B( z5(6eDs%YAb355)a!9{cVFb~A?L@XdY{!OAGXn<^|$IOHP%co;5B2jSy+92Ufg7q)a z7S+&!Dp*OBYH&p+uWPTf`hii}&Y`1LjT>ajt5)t+_bS19A$*MZ6P0JLco~%thZz`)c*EVeCYEd^y z#Jw0qjits@lc`zMTxuJ2C)v;O=L;_80-`c!Af=-i^ONaNVh|NM@jtfL zP!!M!8ZI#%8_L0%MjhM%%mzbFHdn{g)(*EYE?UxP+^E*oLFr6szzHE>ZDxyJ&H#x| zQJOy;%4-xdE5ktA>Y%Mfape^(qk4nplzykvW>zzRb{h)3ybeBBb?y0|;SEEX$V%S)FGl)lGU|dmUCDpB7FN?` zPl0vkbgHhJ5mse$9w)<7haUP0)4ZGxGt!CkfBaGMoeDrEDgzR-pe9~gIM0YC2{yyM z_zA==Z!k3m_k@+yRn%VUZt6*@yKkqbbWG3+>@ABayTW54@55mR0FEAjuo%kv^Q zm|F+Z$$n;n9N5#P^?T;_bk$5M4#KWrhhv{3m`oSIivHsPQ2)35j;>&FGQlJ!)%1Hs zzB6ORpd>YS&!id&6)XdOU@`u|!0>;P18unSSd3pdfBmryC$O%>IG z=YU1j2Ep^+L)7o6H>eLWC3XR5fD7b|&7^*J{b+ga{Ut4x#r_+I8qX zM{%p;4Cp-LXe~xvqJrIf=)Ino1=YF)N(icT#lVa69cRwq(jSYOb-jBjBHnMBATb(F zWM3lBL%i9O1yl6(0#eH-8)EdtngY*!o(!BpoWA%5lqT37KEbz(NJ?SaOz9t6(YUT0 zADh;eqa!1m8aLMq2XM^_pnoc(swTVctE!r0!;_tNzX^s^jP;kVZ6e2YV0zQY`pu2x zzy!DhW(3Hv^E@AL~O4vP>}fVHj0>uyeVa@E&FD?wK;O(#soSxkPB4g1BytfDXb4+0~J#&37AMG z;_&HYeX^cC=XE9Hjv7ZY?(*jOVYeyA1iSrt6Tw8d?$gBxA(*5*fiAIE(cO&%uJ!InWy?&&876UQDlwfz$)~gadv`Vd2FG zC^!L%gPYKNG@pHYKqN;DA47xDVD_xvjpEk06~$Qy*;LT&&-Q>v@vqw)HG^(XHh9#V z)zJ+~4|P89zyrzcy`fci0r{cMXP^Pk*>-h3@_7=-6M9fIWH5>oZ_-;nMR_ z5Pba)=ug1fJpMVXQeU2iBoK&1ruj`D8qXUI)^@z6toN zKiH;oE?OPB`{;8+n{N24qjvrH$J^2muO7B`WT`Fn4SV-8op|);;5Qj8`02T1CFF&j zC$g_VHW_G71XHPo)QQDq+|fusIuC&sqC;j69(uS@21>zBq3vM(@~-RW1sX;+J$&cN zDaW2&2jz7`z^!2S#>Ao9u6(`n8pY7U#R|mK&jnTJ`HLlBXlKutOBdgkRn%G1lBGi@ zo@$?j9(iZ+?DWP#a>JHK?%#CPq2FZ$!NN7gH9+3f%V%-DIQ0R7uG;5yK-hmZ_v)Sn z2vrUSAPmI}lm`fNNIo7{g6a$bqNOBx*S~W8^{*ti@0xA5&u*%Ax%M?0+YIR|2G6G7 zd~E%O#~$0T{;@sihvR6N^2CoZ;z`z`yz*66 zOSq!VWN4#%#4mBb;l|0cZ;^v>drqC&bJL&TM>2j`CHkxQfqvTY^7if1XKbf4yB05L zXf9;VbyiBdQR=$bLy>|&~w1I61c55^i0L0n|VD60ONeci8 z?F;ZkBatN%Cr-_Bew-4ceKDf6#zrwkZ=&lo5KX{iU%_c)8L&C$=#5oV3S2bvoDOnQ zPs??Z#BpUIuOEDq^pjKEk-wKD1NrZw7x<41twBqnr@&GG_r9%Hm{dV;g}Yvn@lQ~) zZpV9Q;@*t5LFGCf*zJlc6#=ja-C#hYqTu%=H^I!OK z1iIERdfY7&YgH;h+claBv5&;1VxK2_y0!gC5xg6>79k+HzLbGRqwZeg(OyR&xcx}? zFcb9!aC*{~Nt3p0qJJI-EwUsfvp|*>l8|2A(b?76L*YY*TEBUsV~+WbsWdh94)Ywx z#LZwmDKrV31~a5QFHKs-D1|V&o*?cr6XFrmatU1e&Pf|KOhOYki#D}VGTnx$GR(s_ z4dB!Mmj@PclHDnfR%X7}W)}3ndn$!XpSbz5kDd@w?Goe#&Ylw=clv<$X52y=Ol+P= zULsB&KQ12oUqS?sC9i_gg=PYq#0KbjMu=j1ARY53r-k>Uykwv{d$Ib+1`u(779(%g zcNBd969q!?$e#AwPzcDqR@80v$^i=5{5;t8v2c8m91{fAJ;D2JFM?h8_%YbkUgXzp z_gg(4tAD%Bk8^MAJ0y4>;R=4VKsXGTYm8JjRVV1dq(G0vSw3Zg9gX2s_kh%NA(h9e zUSTh>uQVgL*8>C9(q=iIM_X^nvYXiSEsOqsAFt*e9iA`IA8+1M;IVSfH5-BXEsNUf znIBw_9)0+=F0(7srAXWQ;6ac(%gCo?zkVrve0@5brs6Y@s|jKfare~e-oZi!o;r{M{}6J4&YFXkGUBNy=4Jr z#OCa9qEjH>f<6W3aTw$>ZzZ30p(#%El@sK{!A@|{33N_8_H_7nos43ZQEI%x5-;@S z)DUVUHINS&78p_q=zxV-k;%0Ded40&XED0GYFoIh+AV*?9!MR5pBW?X_8Bp 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 IH>08b4`|GD*#H0l literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff2 b/vraptor/src/main/webapp/vendor/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..7eb74fd127ee5eddf3b95fee6a20dc1684b0963b GIT binary patch literal 71896 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≠dR0E9ICQ{-tcR;@{R^I5P#1GUH!p=-{c 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 literal 0 HcmV?d00001 diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/animated.less b/vraptor/src/main/webapp/vendor/font-awesome/less/animated.less new file mode 100644 index 0000000000..66ad52a5ba --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/animated.less @@ -0,0 +1,34 @@ +// Animated Icons +// -------------------------- + +.@{fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.@{fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/bordered-pulled.less b/vraptor/src/main/webapp/vendor/font-awesome/less/bordered-pulled.less new file mode 100644 index 0000000000..f1c8ad75f5 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/bordered-pulled.less @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.@{fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em @fa-border-color; + border-radius: .1em; +} + +.@{fa-css-prefix}-pull-left { float: left; } +.@{fa-css-prefix}-pull-right { float: right; } + +.@{fa-css-prefix} { + &.@{fa-css-prefix}-pull-left { margin-right: .3em; } + &.@{fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.@{fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/core.less b/vraptor/src/main/webapp/vendor/font-awesome/less/core.less new file mode 100644 index 0000000000..c577ac84a6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/core.less @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.@{fa-css-prefix} { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/fixed-width.less b/vraptor/src/main/webapp/vendor/font-awesome/less/fixed-width.less new file mode 100644 index 0000000000..110289f2f4 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/fixed-width.less @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.@{fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/font-awesome.less b/vraptor/src/main/webapp/vendor/font-awesome/less/font-awesome.less new file mode 100644 index 0000000000..c44e5f466a --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/font-awesome.less @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables.less"; +@import "mixins.less"; +@import "path.less"; +@import "core.less"; +@import "larger.less"; +@import "fixed-width.less"; +@import "list.less"; +@import "bordered-pulled.less"; +@import "animated.less"; +@import "rotated-flipped.less"; +@import "stacked.less"; +@import "icons.less"; +@import "screen-reader.less"; diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/icons.less b/vraptor/src/main/webapp/vendor/font-awesome/less/icons.less new file mode 100644 index 0000000000..ba21b222d6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/icons.less @@ -0,0 +1,733 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.@{fa-css-prefix}-glass:before { content: @fa-var-glass; } +.@{fa-css-prefix}-music:before { content: @fa-var-music; } +.@{fa-css-prefix}-search:before { content: @fa-var-search; } +.@{fa-css-prefix}-envelope-o:before { content: @fa-var-envelope-o; } +.@{fa-css-prefix}-heart:before { content: @fa-var-heart; } +.@{fa-css-prefix}-star:before { content: @fa-var-star; } +.@{fa-css-prefix}-star-o:before { content: @fa-var-star-o; } +.@{fa-css-prefix}-user:before { content: @fa-var-user; } +.@{fa-css-prefix}-film:before { content: @fa-var-film; } +.@{fa-css-prefix}-th-large:before { content: @fa-var-th-large; } +.@{fa-css-prefix}-th:before { content: @fa-var-th; } +.@{fa-css-prefix}-th-list:before { content: @fa-var-th-list; } +.@{fa-css-prefix}-check:before { content: @fa-var-check; } +.@{fa-css-prefix}-remove:before, +.@{fa-css-prefix}-close:before, +.@{fa-css-prefix}-times:before { content: @fa-var-times; } +.@{fa-css-prefix}-search-plus:before { content: @fa-var-search-plus; } +.@{fa-css-prefix}-search-minus:before { content: @fa-var-search-minus; } +.@{fa-css-prefix}-power-off:before { content: @fa-var-power-off; } +.@{fa-css-prefix}-signal:before { content: @fa-var-signal; } +.@{fa-css-prefix}-gear:before, +.@{fa-css-prefix}-cog:before { content: @fa-var-cog; } +.@{fa-css-prefix}-trash-o:before { content: @fa-var-trash-o; } +.@{fa-css-prefix}-home:before { content: @fa-var-home; } +.@{fa-css-prefix}-file-o:before { content: @fa-var-file-o; } +.@{fa-css-prefix}-clock-o:before { content: @fa-var-clock-o; } +.@{fa-css-prefix}-road:before { content: @fa-var-road; } +.@{fa-css-prefix}-download:before { content: @fa-var-download; } +.@{fa-css-prefix}-arrow-circle-o-down:before { content: @fa-var-arrow-circle-o-down; } +.@{fa-css-prefix}-arrow-circle-o-up:before { content: @fa-var-arrow-circle-o-up; } +.@{fa-css-prefix}-inbox:before { content: @fa-var-inbox; } +.@{fa-css-prefix}-play-circle-o:before { content: @fa-var-play-circle-o; } +.@{fa-css-prefix}-rotate-right:before, +.@{fa-css-prefix}-repeat:before { content: @fa-var-repeat; } +.@{fa-css-prefix}-refresh:before { content: @fa-var-refresh; } +.@{fa-css-prefix}-list-alt:before { content: @fa-var-list-alt; } +.@{fa-css-prefix}-lock:before { content: @fa-var-lock; } +.@{fa-css-prefix}-flag:before { content: @fa-var-flag; } +.@{fa-css-prefix}-headphones:before { content: @fa-var-headphones; } +.@{fa-css-prefix}-volume-off:before { content: @fa-var-volume-off; } +.@{fa-css-prefix}-volume-down:before { content: @fa-var-volume-down; } +.@{fa-css-prefix}-volume-up:before { content: @fa-var-volume-up; } +.@{fa-css-prefix}-qrcode:before { content: @fa-var-qrcode; } +.@{fa-css-prefix}-barcode:before { content: @fa-var-barcode; } +.@{fa-css-prefix}-tag:before { content: @fa-var-tag; } +.@{fa-css-prefix}-tags:before { content: @fa-var-tags; } +.@{fa-css-prefix}-book:before { content: @fa-var-book; } +.@{fa-css-prefix}-bookmark:before { content: @fa-var-bookmark; } +.@{fa-css-prefix}-print:before { content: @fa-var-print; } +.@{fa-css-prefix}-camera:before { content: @fa-var-camera; } +.@{fa-css-prefix}-font:before { content: @fa-var-font; } +.@{fa-css-prefix}-bold:before { content: @fa-var-bold; } +.@{fa-css-prefix}-italic:before { content: @fa-var-italic; } +.@{fa-css-prefix}-text-height:before { content: @fa-var-text-height; } +.@{fa-css-prefix}-text-width:before { content: @fa-var-text-width; } +.@{fa-css-prefix}-align-left:before { content: @fa-var-align-left; } +.@{fa-css-prefix}-align-center:before { content: @fa-var-align-center; } +.@{fa-css-prefix}-align-right:before { content: @fa-var-align-right; } +.@{fa-css-prefix}-align-justify:before { content: @fa-var-align-justify; } +.@{fa-css-prefix}-list:before { content: @fa-var-list; } +.@{fa-css-prefix}-dedent:before, +.@{fa-css-prefix}-outdent:before { content: @fa-var-outdent; } +.@{fa-css-prefix}-indent:before { content: @fa-var-indent; } +.@{fa-css-prefix}-video-camera:before { content: @fa-var-video-camera; } +.@{fa-css-prefix}-photo:before, +.@{fa-css-prefix}-image:before, +.@{fa-css-prefix}-picture-o:before { content: @fa-var-picture-o; } +.@{fa-css-prefix}-pencil:before { content: @fa-var-pencil; } +.@{fa-css-prefix}-map-marker:before { content: @fa-var-map-marker; } +.@{fa-css-prefix}-adjust:before { content: @fa-var-adjust; } +.@{fa-css-prefix}-tint:before { content: @fa-var-tint; } +.@{fa-css-prefix}-edit:before, +.@{fa-css-prefix}-pencil-square-o:before { content: @fa-var-pencil-square-o; } +.@{fa-css-prefix}-share-square-o:before { content: @fa-var-share-square-o; } +.@{fa-css-prefix}-check-square-o:before { content: @fa-var-check-square-o; } +.@{fa-css-prefix}-arrows:before { content: @fa-var-arrows; } +.@{fa-css-prefix}-step-backward:before { content: @fa-var-step-backward; } +.@{fa-css-prefix}-fast-backward:before { content: @fa-var-fast-backward; } +.@{fa-css-prefix}-backward:before { content: @fa-var-backward; } +.@{fa-css-prefix}-play:before { content: @fa-var-play; } +.@{fa-css-prefix}-pause:before { content: @fa-var-pause; } +.@{fa-css-prefix}-stop:before { content: @fa-var-stop; } +.@{fa-css-prefix}-forward:before { content: @fa-var-forward; } +.@{fa-css-prefix}-fast-forward:before { content: @fa-var-fast-forward; } +.@{fa-css-prefix}-step-forward:before { content: @fa-var-step-forward; } +.@{fa-css-prefix}-eject:before { content: @fa-var-eject; } +.@{fa-css-prefix}-chevron-left:before { content: @fa-var-chevron-left; } +.@{fa-css-prefix}-chevron-right:before { content: @fa-var-chevron-right; } +.@{fa-css-prefix}-plus-circle:before { content: @fa-var-plus-circle; } +.@{fa-css-prefix}-minus-circle:before { content: @fa-var-minus-circle; } +.@{fa-css-prefix}-times-circle:before { content: @fa-var-times-circle; } +.@{fa-css-prefix}-check-circle:before { content: @fa-var-check-circle; } +.@{fa-css-prefix}-question-circle:before { content: @fa-var-question-circle; } +.@{fa-css-prefix}-info-circle:before { content: @fa-var-info-circle; } +.@{fa-css-prefix}-crosshairs:before { content: @fa-var-crosshairs; } +.@{fa-css-prefix}-times-circle-o:before { content: @fa-var-times-circle-o; } +.@{fa-css-prefix}-check-circle-o:before { content: @fa-var-check-circle-o; } +.@{fa-css-prefix}-ban:before { content: @fa-var-ban; } +.@{fa-css-prefix}-arrow-left:before { content: @fa-var-arrow-left; } +.@{fa-css-prefix}-arrow-right:before { content: @fa-var-arrow-right; } +.@{fa-css-prefix}-arrow-up:before { content: @fa-var-arrow-up; } +.@{fa-css-prefix}-arrow-down:before { content: @fa-var-arrow-down; } +.@{fa-css-prefix}-mail-forward:before, +.@{fa-css-prefix}-share:before { content: @fa-var-share; } +.@{fa-css-prefix}-expand:before { content: @fa-var-expand; } +.@{fa-css-prefix}-compress:before { content: @fa-var-compress; } +.@{fa-css-prefix}-plus:before { content: @fa-var-plus; } +.@{fa-css-prefix}-minus:before { content: @fa-var-minus; } +.@{fa-css-prefix}-asterisk:before { content: @fa-var-asterisk; } +.@{fa-css-prefix}-exclamation-circle:before { content: @fa-var-exclamation-circle; } +.@{fa-css-prefix}-gift:before { content: @fa-var-gift; } +.@{fa-css-prefix}-leaf:before { content: @fa-var-leaf; } +.@{fa-css-prefix}-fire:before { content: @fa-var-fire; } +.@{fa-css-prefix}-eye:before { content: @fa-var-eye; } +.@{fa-css-prefix}-eye-slash:before { content: @fa-var-eye-slash; } +.@{fa-css-prefix}-warning:before, +.@{fa-css-prefix}-exclamation-triangle:before { content: @fa-var-exclamation-triangle; } +.@{fa-css-prefix}-plane:before { content: @fa-var-plane; } +.@{fa-css-prefix}-calendar:before { content: @fa-var-calendar; } +.@{fa-css-prefix}-random:before { content: @fa-var-random; } +.@{fa-css-prefix}-comment:before { content: @fa-var-comment; } +.@{fa-css-prefix}-magnet:before { content: @fa-var-magnet; } +.@{fa-css-prefix}-chevron-up:before { content: @fa-var-chevron-up; } +.@{fa-css-prefix}-chevron-down:before { content: @fa-var-chevron-down; } +.@{fa-css-prefix}-retweet:before { content: @fa-var-retweet; } +.@{fa-css-prefix}-shopping-cart:before { content: @fa-var-shopping-cart; } +.@{fa-css-prefix}-folder:before { content: @fa-var-folder; } +.@{fa-css-prefix}-folder-open:before { content: @fa-var-folder-open; } +.@{fa-css-prefix}-arrows-v:before { content: @fa-var-arrows-v; } +.@{fa-css-prefix}-arrows-h:before { content: @fa-var-arrows-h; } +.@{fa-css-prefix}-bar-chart-o:before, +.@{fa-css-prefix}-bar-chart:before { content: @fa-var-bar-chart; } +.@{fa-css-prefix}-twitter-square:before { content: @fa-var-twitter-square; } +.@{fa-css-prefix}-facebook-square:before { content: @fa-var-facebook-square; } +.@{fa-css-prefix}-camera-retro:before { content: @fa-var-camera-retro; } +.@{fa-css-prefix}-key:before { content: @fa-var-key; } +.@{fa-css-prefix}-gears:before, +.@{fa-css-prefix}-cogs:before { content: @fa-var-cogs; } +.@{fa-css-prefix}-comments:before { content: @fa-var-comments; } +.@{fa-css-prefix}-thumbs-o-up:before { content: @fa-var-thumbs-o-up; } +.@{fa-css-prefix}-thumbs-o-down:before { content: @fa-var-thumbs-o-down; } +.@{fa-css-prefix}-star-half:before { content: @fa-var-star-half; } +.@{fa-css-prefix}-heart-o:before { content: @fa-var-heart-o; } +.@{fa-css-prefix}-sign-out:before { content: @fa-var-sign-out; } +.@{fa-css-prefix}-linkedin-square:before { content: @fa-var-linkedin-square; } +.@{fa-css-prefix}-thumb-tack:before { content: @fa-var-thumb-tack; } +.@{fa-css-prefix}-external-link:before { content: @fa-var-external-link; } +.@{fa-css-prefix}-sign-in:before { content: @fa-var-sign-in; } +.@{fa-css-prefix}-trophy:before { content: @fa-var-trophy; } +.@{fa-css-prefix}-github-square:before { content: @fa-var-github-square; } +.@{fa-css-prefix}-upload:before { content: @fa-var-upload; } +.@{fa-css-prefix}-lemon-o:before { content: @fa-var-lemon-o; } +.@{fa-css-prefix}-phone:before { content: @fa-var-phone; } +.@{fa-css-prefix}-square-o:before { content: @fa-var-square-o; } +.@{fa-css-prefix}-bookmark-o:before { content: @fa-var-bookmark-o; } +.@{fa-css-prefix}-phone-square:before { content: @fa-var-phone-square; } +.@{fa-css-prefix}-twitter:before { content: @fa-var-twitter; } +.@{fa-css-prefix}-facebook-f:before, +.@{fa-css-prefix}-facebook:before { content: @fa-var-facebook; } +.@{fa-css-prefix}-github:before { content: @fa-var-github; } +.@{fa-css-prefix}-unlock:before { content: @fa-var-unlock; } +.@{fa-css-prefix}-credit-card:before { content: @fa-var-credit-card; } +.@{fa-css-prefix}-feed:before, +.@{fa-css-prefix}-rss:before { content: @fa-var-rss; } +.@{fa-css-prefix}-hdd-o:before { content: @fa-var-hdd-o; } +.@{fa-css-prefix}-bullhorn:before { content: @fa-var-bullhorn; } +.@{fa-css-prefix}-bell:before { content: @fa-var-bell; } +.@{fa-css-prefix}-certificate:before { content: @fa-var-certificate; } +.@{fa-css-prefix}-hand-o-right:before { content: @fa-var-hand-o-right; } +.@{fa-css-prefix}-hand-o-left:before { content: @fa-var-hand-o-left; } +.@{fa-css-prefix}-hand-o-up:before { content: @fa-var-hand-o-up; } +.@{fa-css-prefix}-hand-o-down:before { content: @fa-var-hand-o-down; } +.@{fa-css-prefix}-arrow-circle-left:before { content: @fa-var-arrow-circle-left; } +.@{fa-css-prefix}-arrow-circle-right:before { content: @fa-var-arrow-circle-right; } +.@{fa-css-prefix}-arrow-circle-up:before { content: @fa-var-arrow-circle-up; } +.@{fa-css-prefix}-arrow-circle-down:before { content: @fa-var-arrow-circle-down; } +.@{fa-css-prefix}-globe:before { content: @fa-var-globe; } +.@{fa-css-prefix}-wrench:before { content: @fa-var-wrench; } +.@{fa-css-prefix}-tasks:before { content: @fa-var-tasks; } +.@{fa-css-prefix}-filter:before { content: @fa-var-filter; } +.@{fa-css-prefix}-briefcase:before { content: @fa-var-briefcase; } +.@{fa-css-prefix}-arrows-alt:before { content: @fa-var-arrows-alt; } +.@{fa-css-prefix}-group:before, +.@{fa-css-prefix}-users:before { content: @fa-var-users; } +.@{fa-css-prefix}-chain:before, +.@{fa-css-prefix}-link:before { content: @fa-var-link; } +.@{fa-css-prefix}-cloud:before { content: @fa-var-cloud; } +.@{fa-css-prefix}-flask:before { content: @fa-var-flask; } +.@{fa-css-prefix}-cut:before, +.@{fa-css-prefix}-scissors:before { content: @fa-var-scissors; } +.@{fa-css-prefix}-copy:before, +.@{fa-css-prefix}-files-o:before { content: @fa-var-files-o; } +.@{fa-css-prefix}-paperclip:before { content: @fa-var-paperclip; } +.@{fa-css-prefix}-save:before, +.@{fa-css-prefix}-floppy-o:before { content: @fa-var-floppy-o; } +.@{fa-css-prefix}-square:before { content: @fa-var-square; } +.@{fa-css-prefix}-navicon:before, +.@{fa-css-prefix}-reorder:before, +.@{fa-css-prefix}-bars:before { content: @fa-var-bars; } +.@{fa-css-prefix}-list-ul:before { content: @fa-var-list-ul; } +.@{fa-css-prefix}-list-ol:before { content: @fa-var-list-ol; } +.@{fa-css-prefix}-strikethrough:before { content: @fa-var-strikethrough; } +.@{fa-css-prefix}-underline:before { content: @fa-var-underline; } +.@{fa-css-prefix}-table:before { content: @fa-var-table; } +.@{fa-css-prefix}-magic:before { content: @fa-var-magic; } +.@{fa-css-prefix}-truck:before { content: @fa-var-truck; } +.@{fa-css-prefix}-pinterest:before { content: @fa-var-pinterest; } +.@{fa-css-prefix}-pinterest-square:before { content: @fa-var-pinterest-square; } +.@{fa-css-prefix}-google-plus-square:before { content: @fa-var-google-plus-square; } +.@{fa-css-prefix}-google-plus:before { content: @fa-var-google-plus; } +.@{fa-css-prefix}-money:before { content: @fa-var-money; } +.@{fa-css-prefix}-caret-down:before { content: @fa-var-caret-down; } +.@{fa-css-prefix}-caret-up:before { content: @fa-var-caret-up; } +.@{fa-css-prefix}-caret-left:before { content: @fa-var-caret-left; } +.@{fa-css-prefix}-caret-right:before { content: @fa-var-caret-right; } +.@{fa-css-prefix}-columns:before { content: @fa-var-columns; } +.@{fa-css-prefix}-unsorted:before, +.@{fa-css-prefix}-sort:before { content: @fa-var-sort; } +.@{fa-css-prefix}-sort-down:before, +.@{fa-css-prefix}-sort-desc:before { content: @fa-var-sort-desc; } +.@{fa-css-prefix}-sort-up:before, +.@{fa-css-prefix}-sort-asc:before { content: @fa-var-sort-asc; } +.@{fa-css-prefix}-envelope:before { content: @fa-var-envelope; } +.@{fa-css-prefix}-linkedin:before { content: @fa-var-linkedin; } +.@{fa-css-prefix}-rotate-left:before, +.@{fa-css-prefix}-undo:before { content: @fa-var-undo; } +.@{fa-css-prefix}-legal:before, +.@{fa-css-prefix}-gavel:before { content: @fa-var-gavel; } +.@{fa-css-prefix}-dashboard:before, +.@{fa-css-prefix}-tachometer:before { content: @fa-var-tachometer; } +.@{fa-css-prefix}-comment-o:before { content: @fa-var-comment-o; } +.@{fa-css-prefix}-comments-o:before { content: @fa-var-comments-o; } +.@{fa-css-prefix}-flash:before, +.@{fa-css-prefix}-bolt:before { content: @fa-var-bolt; } +.@{fa-css-prefix}-sitemap:before { content: @fa-var-sitemap; } +.@{fa-css-prefix}-umbrella:before { content: @fa-var-umbrella; } +.@{fa-css-prefix}-paste:before, +.@{fa-css-prefix}-clipboard:before { content: @fa-var-clipboard; } +.@{fa-css-prefix}-lightbulb-o:before { content: @fa-var-lightbulb-o; } +.@{fa-css-prefix}-exchange:before { content: @fa-var-exchange; } +.@{fa-css-prefix}-cloud-download:before { content: @fa-var-cloud-download; } +.@{fa-css-prefix}-cloud-upload:before { content: @fa-var-cloud-upload; } +.@{fa-css-prefix}-user-md:before { content: @fa-var-user-md; } +.@{fa-css-prefix}-stethoscope:before { content: @fa-var-stethoscope; } +.@{fa-css-prefix}-suitcase:before { content: @fa-var-suitcase; } +.@{fa-css-prefix}-bell-o:before { content: @fa-var-bell-o; } +.@{fa-css-prefix}-coffee:before { content: @fa-var-coffee; } +.@{fa-css-prefix}-cutlery:before { content: @fa-var-cutlery; } +.@{fa-css-prefix}-file-text-o:before { content: @fa-var-file-text-o; } +.@{fa-css-prefix}-building-o:before { content: @fa-var-building-o; } +.@{fa-css-prefix}-hospital-o:before { content: @fa-var-hospital-o; } +.@{fa-css-prefix}-ambulance:before { content: @fa-var-ambulance; } +.@{fa-css-prefix}-medkit:before { content: @fa-var-medkit; } +.@{fa-css-prefix}-fighter-jet:before { content: @fa-var-fighter-jet; } +.@{fa-css-prefix}-beer:before { content: @fa-var-beer; } +.@{fa-css-prefix}-h-square:before { content: @fa-var-h-square; } +.@{fa-css-prefix}-plus-square:before { content: @fa-var-plus-square; } +.@{fa-css-prefix}-angle-double-left:before { content: @fa-var-angle-double-left; } +.@{fa-css-prefix}-angle-double-right:before { content: @fa-var-angle-double-right; } +.@{fa-css-prefix}-angle-double-up:before { content: @fa-var-angle-double-up; } +.@{fa-css-prefix}-angle-double-down:before { content: @fa-var-angle-double-down; } +.@{fa-css-prefix}-angle-left:before { content: @fa-var-angle-left; } +.@{fa-css-prefix}-angle-right:before { content: @fa-var-angle-right; } +.@{fa-css-prefix}-angle-up:before { content: @fa-var-angle-up; } +.@{fa-css-prefix}-angle-down:before { content: @fa-var-angle-down; } +.@{fa-css-prefix}-desktop:before { content: @fa-var-desktop; } +.@{fa-css-prefix}-laptop:before { content: @fa-var-laptop; } +.@{fa-css-prefix}-tablet:before { content: @fa-var-tablet; } +.@{fa-css-prefix}-mobile-phone:before, +.@{fa-css-prefix}-mobile:before { content: @fa-var-mobile; } +.@{fa-css-prefix}-circle-o:before { content: @fa-var-circle-o; } +.@{fa-css-prefix}-quote-left:before { content: @fa-var-quote-left; } +.@{fa-css-prefix}-quote-right:before { content: @fa-var-quote-right; } +.@{fa-css-prefix}-spinner:before { content: @fa-var-spinner; } +.@{fa-css-prefix}-circle:before { content: @fa-var-circle; } +.@{fa-css-prefix}-mail-reply:before, +.@{fa-css-prefix}-reply:before { content: @fa-var-reply; } +.@{fa-css-prefix}-github-alt:before { content: @fa-var-github-alt; } +.@{fa-css-prefix}-folder-o:before { content: @fa-var-folder-o; } +.@{fa-css-prefix}-folder-open-o:before { content: @fa-var-folder-open-o; } +.@{fa-css-prefix}-smile-o:before { content: @fa-var-smile-o; } +.@{fa-css-prefix}-frown-o:before { content: @fa-var-frown-o; } +.@{fa-css-prefix}-meh-o:before { content: @fa-var-meh-o; } +.@{fa-css-prefix}-gamepad:before { content: @fa-var-gamepad; } +.@{fa-css-prefix}-keyboard-o:before { content: @fa-var-keyboard-o; } +.@{fa-css-prefix}-flag-o:before { content: @fa-var-flag-o; } +.@{fa-css-prefix}-flag-checkered:before { content: @fa-var-flag-checkered; } +.@{fa-css-prefix}-terminal:before { content: @fa-var-terminal; } +.@{fa-css-prefix}-code:before { content: @fa-var-code; } +.@{fa-css-prefix}-mail-reply-all:before, +.@{fa-css-prefix}-reply-all:before { content: @fa-var-reply-all; } +.@{fa-css-prefix}-star-half-empty:before, +.@{fa-css-prefix}-star-half-full:before, +.@{fa-css-prefix}-star-half-o:before { content: @fa-var-star-half-o; } +.@{fa-css-prefix}-location-arrow:before { content: @fa-var-location-arrow; } +.@{fa-css-prefix}-crop:before { content: @fa-var-crop; } +.@{fa-css-prefix}-code-fork:before { content: @fa-var-code-fork; } +.@{fa-css-prefix}-unlink:before, +.@{fa-css-prefix}-chain-broken:before { content: @fa-var-chain-broken; } +.@{fa-css-prefix}-question:before { content: @fa-var-question; } +.@{fa-css-prefix}-info:before { content: @fa-var-info; } +.@{fa-css-prefix}-exclamation:before { content: @fa-var-exclamation; } +.@{fa-css-prefix}-superscript:before { content: @fa-var-superscript; } +.@{fa-css-prefix}-subscript:before { content: @fa-var-subscript; } +.@{fa-css-prefix}-eraser:before { content: @fa-var-eraser; } +.@{fa-css-prefix}-puzzle-piece:before { content: @fa-var-puzzle-piece; } +.@{fa-css-prefix}-microphone:before { content: @fa-var-microphone; } +.@{fa-css-prefix}-microphone-slash:before { content: @fa-var-microphone-slash; } +.@{fa-css-prefix}-shield:before { content: @fa-var-shield; } +.@{fa-css-prefix}-calendar-o:before { content: @fa-var-calendar-o; } +.@{fa-css-prefix}-fire-extinguisher:before { content: @fa-var-fire-extinguisher; } +.@{fa-css-prefix}-rocket:before { content: @fa-var-rocket; } +.@{fa-css-prefix}-maxcdn:before { content: @fa-var-maxcdn; } +.@{fa-css-prefix}-chevron-circle-left:before { content: @fa-var-chevron-circle-left; } +.@{fa-css-prefix}-chevron-circle-right:before { content: @fa-var-chevron-circle-right; } +.@{fa-css-prefix}-chevron-circle-up:before { content: @fa-var-chevron-circle-up; } +.@{fa-css-prefix}-chevron-circle-down:before { content: @fa-var-chevron-circle-down; } +.@{fa-css-prefix}-html5:before { content: @fa-var-html5; } +.@{fa-css-prefix}-css3:before { content: @fa-var-css3; } +.@{fa-css-prefix}-anchor:before { content: @fa-var-anchor; } +.@{fa-css-prefix}-unlock-alt:before { content: @fa-var-unlock-alt; } +.@{fa-css-prefix}-bullseye:before { content: @fa-var-bullseye; } +.@{fa-css-prefix}-ellipsis-h:before { content: @fa-var-ellipsis-h; } +.@{fa-css-prefix}-ellipsis-v:before { content: @fa-var-ellipsis-v; } +.@{fa-css-prefix}-rss-square:before { content: @fa-var-rss-square; } +.@{fa-css-prefix}-play-circle:before { content: @fa-var-play-circle; } +.@{fa-css-prefix}-ticket:before { content: @fa-var-ticket; } +.@{fa-css-prefix}-minus-square:before { content: @fa-var-minus-square; } +.@{fa-css-prefix}-minus-square-o:before { content: @fa-var-minus-square-o; } +.@{fa-css-prefix}-level-up:before { content: @fa-var-level-up; } +.@{fa-css-prefix}-level-down:before { content: @fa-var-level-down; } +.@{fa-css-prefix}-check-square:before { content: @fa-var-check-square; } +.@{fa-css-prefix}-pencil-square:before { content: @fa-var-pencil-square; } +.@{fa-css-prefix}-external-link-square:before { content: @fa-var-external-link-square; } +.@{fa-css-prefix}-share-square:before { content: @fa-var-share-square; } +.@{fa-css-prefix}-compass:before { content: @fa-var-compass; } +.@{fa-css-prefix}-toggle-down:before, +.@{fa-css-prefix}-caret-square-o-down:before { content: @fa-var-caret-square-o-down; } +.@{fa-css-prefix}-toggle-up:before, +.@{fa-css-prefix}-caret-square-o-up:before { content: @fa-var-caret-square-o-up; } +.@{fa-css-prefix}-toggle-right:before, +.@{fa-css-prefix}-caret-square-o-right:before { content: @fa-var-caret-square-o-right; } +.@{fa-css-prefix}-euro:before, +.@{fa-css-prefix}-eur:before { content: @fa-var-eur; } +.@{fa-css-prefix}-gbp:before { content: @fa-var-gbp; } +.@{fa-css-prefix}-dollar:before, +.@{fa-css-prefix}-usd:before { content: @fa-var-usd; } +.@{fa-css-prefix}-rupee:before, +.@{fa-css-prefix}-inr:before { content: @fa-var-inr; } +.@{fa-css-prefix}-cny:before, +.@{fa-css-prefix}-rmb:before, +.@{fa-css-prefix}-yen:before, +.@{fa-css-prefix}-jpy:before { content: @fa-var-jpy; } +.@{fa-css-prefix}-ruble:before, +.@{fa-css-prefix}-rouble:before, +.@{fa-css-prefix}-rub:before { content: @fa-var-rub; } +.@{fa-css-prefix}-won:before, +.@{fa-css-prefix}-krw:before { content: @fa-var-krw; } +.@{fa-css-prefix}-bitcoin:before, +.@{fa-css-prefix}-btc:before { content: @fa-var-btc; } +.@{fa-css-prefix}-file:before { content: @fa-var-file; } +.@{fa-css-prefix}-file-text:before { content: @fa-var-file-text; } +.@{fa-css-prefix}-sort-alpha-asc:before { content: @fa-var-sort-alpha-asc; } +.@{fa-css-prefix}-sort-alpha-desc:before { content: @fa-var-sort-alpha-desc; } +.@{fa-css-prefix}-sort-amount-asc:before { content: @fa-var-sort-amount-asc; } +.@{fa-css-prefix}-sort-amount-desc:before { content: @fa-var-sort-amount-desc; } +.@{fa-css-prefix}-sort-numeric-asc:before { content: @fa-var-sort-numeric-asc; } +.@{fa-css-prefix}-sort-numeric-desc:before { content: @fa-var-sort-numeric-desc; } +.@{fa-css-prefix}-thumbs-up:before { content: @fa-var-thumbs-up; } +.@{fa-css-prefix}-thumbs-down:before { content: @fa-var-thumbs-down; } +.@{fa-css-prefix}-youtube-square:before { content: @fa-var-youtube-square; } +.@{fa-css-prefix}-youtube:before { content: @fa-var-youtube; } +.@{fa-css-prefix}-xing:before { content: @fa-var-xing; } +.@{fa-css-prefix}-xing-square:before { content: @fa-var-xing-square; } +.@{fa-css-prefix}-youtube-play:before { content: @fa-var-youtube-play; } +.@{fa-css-prefix}-dropbox:before { content: @fa-var-dropbox; } +.@{fa-css-prefix}-stack-overflow:before { content: @fa-var-stack-overflow; } +.@{fa-css-prefix}-instagram:before { content: @fa-var-instagram; } +.@{fa-css-prefix}-flickr:before { content: @fa-var-flickr; } +.@{fa-css-prefix}-adn:before { content: @fa-var-adn; } +.@{fa-css-prefix}-bitbucket:before { content: @fa-var-bitbucket; } +.@{fa-css-prefix}-bitbucket-square:before { content: @fa-var-bitbucket-square; } +.@{fa-css-prefix}-tumblr:before { content: @fa-var-tumblr; } +.@{fa-css-prefix}-tumblr-square:before { content: @fa-var-tumblr-square; } +.@{fa-css-prefix}-long-arrow-down:before { content: @fa-var-long-arrow-down; } +.@{fa-css-prefix}-long-arrow-up:before { content: @fa-var-long-arrow-up; } +.@{fa-css-prefix}-long-arrow-left:before { content: @fa-var-long-arrow-left; } +.@{fa-css-prefix}-long-arrow-right:before { content: @fa-var-long-arrow-right; } +.@{fa-css-prefix}-apple:before { content: @fa-var-apple; } +.@{fa-css-prefix}-windows:before { content: @fa-var-windows; } +.@{fa-css-prefix}-android:before { content: @fa-var-android; } +.@{fa-css-prefix}-linux:before { content: @fa-var-linux; } +.@{fa-css-prefix}-dribbble:before { content: @fa-var-dribbble; } +.@{fa-css-prefix}-skype:before { content: @fa-var-skype; } +.@{fa-css-prefix}-foursquare:before { content: @fa-var-foursquare; } +.@{fa-css-prefix}-trello:before { content: @fa-var-trello; } +.@{fa-css-prefix}-female:before { content: @fa-var-female; } +.@{fa-css-prefix}-male:before { content: @fa-var-male; } +.@{fa-css-prefix}-gittip:before, +.@{fa-css-prefix}-gratipay:before { content: @fa-var-gratipay; } +.@{fa-css-prefix}-sun-o:before { content: @fa-var-sun-o; } +.@{fa-css-prefix}-moon-o:before { content: @fa-var-moon-o; } +.@{fa-css-prefix}-archive:before { content: @fa-var-archive; } +.@{fa-css-prefix}-bug:before { content: @fa-var-bug; } +.@{fa-css-prefix}-vk:before { content: @fa-var-vk; } +.@{fa-css-prefix}-weibo:before { content: @fa-var-weibo; } +.@{fa-css-prefix}-renren:before { content: @fa-var-renren; } +.@{fa-css-prefix}-pagelines:before { content: @fa-var-pagelines; } +.@{fa-css-prefix}-stack-exchange:before { content: @fa-var-stack-exchange; } +.@{fa-css-prefix}-arrow-circle-o-right:before { content: @fa-var-arrow-circle-o-right; } +.@{fa-css-prefix}-arrow-circle-o-left:before { content: @fa-var-arrow-circle-o-left; } +.@{fa-css-prefix}-toggle-left:before, +.@{fa-css-prefix}-caret-square-o-left:before { content: @fa-var-caret-square-o-left; } +.@{fa-css-prefix}-dot-circle-o:before { content: @fa-var-dot-circle-o; } +.@{fa-css-prefix}-wheelchair:before { content: @fa-var-wheelchair; } +.@{fa-css-prefix}-vimeo-square:before { content: @fa-var-vimeo-square; } +.@{fa-css-prefix}-turkish-lira:before, +.@{fa-css-prefix}-try:before { content: @fa-var-try; } +.@{fa-css-prefix}-plus-square-o:before { content: @fa-var-plus-square-o; } +.@{fa-css-prefix}-space-shuttle:before { content: @fa-var-space-shuttle; } +.@{fa-css-prefix}-slack:before { content: @fa-var-slack; } +.@{fa-css-prefix}-envelope-square:before { content: @fa-var-envelope-square; } +.@{fa-css-prefix}-wordpress:before { content: @fa-var-wordpress; } +.@{fa-css-prefix}-openid:before { content: @fa-var-openid; } +.@{fa-css-prefix}-institution:before, +.@{fa-css-prefix}-bank:before, +.@{fa-css-prefix}-university:before { content: @fa-var-university; } +.@{fa-css-prefix}-mortar-board:before, +.@{fa-css-prefix}-graduation-cap:before { content: @fa-var-graduation-cap; } +.@{fa-css-prefix}-yahoo:before { content: @fa-var-yahoo; } +.@{fa-css-prefix}-google:before { content: @fa-var-google; } +.@{fa-css-prefix}-reddit:before { content: @fa-var-reddit; } +.@{fa-css-prefix}-reddit-square:before { content: @fa-var-reddit-square; } +.@{fa-css-prefix}-stumbleupon-circle:before { content: @fa-var-stumbleupon-circle; } +.@{fa-css-prefix}-stumbleupon:before { content: @fa-var-stumbleupon; } +.@{fa-css-prefix}-delicious:before { content: @fa-var-delicious; } +.@{fa-css-prefix}-digg:before { content: @fa-var-digg; } +.@{fa-css-prefix}-pied-piper-pp:before { content: @fa-var-pied-piper-pp; } +.@{fa-css-prefix}-pied-piper-alt:before { content: @fa-var-pied-piper-alt; } +.@{fa-css-prefix}-drupal:before { content: @fa-var-drupal; } +.@{fa-css-prefix}-joomla:before { content: @fa-var-joomla; } +.@{fa-css-prefix}-language:before { content: @fa-var-language; } +.@{fa-css-prefix}-fax:before { content: @fa-var-fax; } +.@{fa-css-prefix}-building:before { content: @fa-var-building; } +.@{fa-css-prefix}-child:before { content: @fa-var-child; } +.@{fa-css-prefix}-paw:before { content: @fa-var-paw; } +.@{fa-css-prefix}-spoon:before { content: @fa-var-spoon; } +.@{fa-css-prefix}-cube:before { content: @fa-var-cube; } +.@{fa-css-prefix}-cubes:before { content: @fa-var-cubes; } +.@{fa-css-prefix}-behance:before { content: @fa-var-behance; } +.@{fa-css-prefix}-behance-square:before { content: @fa-var-behance-square; } +.@{fa-css-prefix}-steam:before { content: @fa-var-steam; } +.@{fa-css-prefix}-steam-square:before { content: @fa-var-steam-square; } +.@{fa-css-prefix}-recycle:before { content: @fa-var-recycle; } +.@{fa-css-prefix}-automobile:before, +.@{fa-css-prefix}-car:before { content: @fa-var-car; } +.@{fa-css-prefix}-cab:before, +.@{fa-css-prefix}-taxi:before { content: @fa-var-taxi; } +.@{fa-css-prefix}-tree:before { content: @fa-var-tree; } +.@{fa-css-prefix}-spotify:before { content: @fa-var-spotify; } +.@{fa-css-prefix}-deviantart:before { content: @fa-var-deviantart; } +.@{fa-css-prefix}-soundcloud:before { content: @fa-var-soundcloud; } +.@{fa-css-prefix}-database:before { content: @fa-var-database; } +.@{fa-css-prefix}-file-pdf-o:before { content: @fa-var-file-pdf-o; } +.@{fa-css-prefix}-file-word-o:before { content: @fa-var-file-word-o; } +.@{fa-css-prefix}-file-excel-o:before { content: @fa-var-file-excel-o; } +.@{fa-css-prefix}-file-powerpoint-o:before { content: @fa-var-file-powerpoint-o; } +.@{fa-css-prefix}-file-photo-o:before, +.@{fa-css-prefix}-file-picture-o:before, +.@{fa-css-prefix}-file-image-o:before { content: @fa-var-file-image-o; } +.@{fa-css-prefix}-file-zip-o:before, +.@{fa-css-prefix}-file-archive-o:before { content: @fa-var-file-archive-o; } +.@{fa-css-prefix}-file-sound-o:before, +.@{fa-css-prefix}-file-audio-o:before { content: @fa-var-file-audio-o; } +.@{fa-css-prefix}-file-movie-o:before, +.@{fa-css-prefix}-file-video-o:before { content: @fa-var-file-video-o; } +.@{fa-css-prefix}-file-code-o:before { content: @fa-var-file-code-o; } +.@{fa-css-prefix}-vine:before { content: @fa-var-vine; } +.@{fa-css-prefix}-codepen:before { content: @fa-var-codepen; } +.@{fa-css-prefix}-jsfiddle:before { content: @fa-var-jsfiddle; } +.@{fa-css-prefix}-life-bouy:before, +.@{fa-css-prefix}-life-buoy:before, +.@{fa-css-prefix}-life-saver:before, +.@{fa-css-prefix}-support:before, +.@{fa-css-prefix}-life-ring:before { content: @fa-var-life-ring; } +.@{fa-css-prefix}-circle-o-notch:before { content: @fa-var-circle-o-notch; } +.@{fa-css-prefix}-ra:before, +.@{fa-css-prefix}-resistance:before, +.@{fa-css-prefix}-rebel:before { content: @fa-var-rebel; } +.@{fa-css-prefix}-ge:before, +.@{fa-css-prefix}-empire:before { content: @fa-var-empire; } +.@{fa-css-prefix}-git-square:before { content: @fa-var-git-square; } +.@{fa-css-prefix}-git:before { content: @fa-var-git; } +.@{fa-css-prefix}-y-combinator-square:before, +.@{fa-css-prefix}-yc-square:before, +.@{fa-css-prefix}-hacker-news:before { content: @fa-var-hacker-news; } +.@{fa-css-prefix}-tencent-weibo:before { content: @fa-var-tencent-weibo; } +.@{fa-css-prefix}-qq:before { content: @fa-var-qq; } +.@{fa-css-prefix}-wechat:before, +.@{fa-css-prefix}-weixin:before { content: @fa-var-weixin; } +.@{fa-css-prefix}-send:before, +.@{fa-css-prefix}-paper-plane:before { content: @fa-var-paper-plane; } +.@{fa-css-prefix}-send-o:before, +.@{fa-css-prefix}-paper-plane-o:before { content: @fa-var-paper-plane-o; } +.@{fa-css-prefix}-history:before { content: @fa-var-history; } +.@{fa-css-prefix}-circle-thin:before { content: @fa-var-circle-thin; } +.@{fa-css-prefix}-header:before { content: @fa-var-header; } +.@{fa-css-prefix}-paragraph:before { content: @fa-var-paragraph; } +.@{fa-css-prefix}-sliders:before { content: @fa-var-sliders; } +.@{fa-css-prefix}-share-alt:before { content: @fa-var-share-alt; } +.@{fa-css-prefix}-share-alt-square:before { content: @fa-var-share-alt-square; } +.@{fa-css-prefix}-bomb:before { content: @fa-var-bomb; } +.@{fa-css-prefix}-soccer-ball-o:before, +.@{fa-css-prefix}-futbol-o:before { content: @fa-var-futbol-o; } +.@{fa-css-prefix}-tty:before { content: @fa-var-tty; } +.@{fa-css-prefix}-binoculars:before { content: @fa-var-binoculars; } +.@{fa-css-prefix}-plug:before { content: @fa-var-plug; } +.@{fa-css-prefix}-slideshare:before { content: @fa-var-slideshare; } +.@{fa-css-prefix}-twitch:before { content: @fa-var-twitch; } +.@{fa-css-prefix}-yelp:before { content: @fa-var-yelp; } +.@{fa-css-prefix}-newspaper-o:before { content: @fa-var-newspaper-o; } +.@{fa-css-prefix}-wifi:before { content: @fa-var-wifi; } +.@{fa-css-prefix}-calculator:before { content: @fa-var-calculator; } +.@{fa-css-prefix}-paypal:before { content: @fa-var-paypal; } +.@{fa-css-prefix}-google-wallet:before { content: @fa-var-google-wallet; } +.@{fa-css-prefix}-cc-visa:before { content: @fa-var-cc-visa; } +.@{fa-css-prefix}-cc-mastercard:before { content: @fa-var-cc-mastercard; } +.@{fa-css-prefix}-cc-discover:before { content: @fa-var-cc-discover; } +.@{fa-css-prefix}-cc-amex:before { content: @fa-var-cc-amex; } +.@{fa-css-prefix}-cc-paypal:before { content: @fa-var-cc-paypal; } +.@{fa-css-prefix}-cc-stripe:before { content: @fa-var-cc-stripe; } +.@{fa-css-prefix}-bell-slash:before { content: @fa-var-bell-slash; } +.@{fa-css-prefix}-bell-slash-o:before { content: @fa-var-bell-slash-o; } +.@{fa-css-prefix}-trash:before { content: @fa-var-trash; } +.@{fa-css-prefix}-copyright:before { content: @fa-var-copyright; } +.@{fa-css-prefix}-at:before { content: @fa-var-at; } +.@{fa-css-prefix}-eyedropper:before { content: @fa-var-eyedropper; } +.@{fa-css-prefix}-paint-brush:before { content: @fa-var-paint-brush; } +.@{fa-css-prefix}-birthday-cake:before { content: @fa-var-birthday-cake; } +.@{fa-css-prefix}-area-chart:before { content: @fa-var-area-chart; } +.@{fa-css-prefix}-pie-chart:before { content: @fa-var-pie-chart; } +.@{fa-css-prefix}-line-chart:before { content: @fa-var-line-chart; } +.@{fa-css-prefix}-lastfm:before { content: @fa-var-lastfm; } +.@{fa-css-prefix}-lastfm-square:before { content: @fa-var-lastfm-square; } +.@{fa-css-prefix}-toggle-off:before { content: @fa-var-toggle-off; } +.@{fa-css-prefix}-toggle-on:before { content: @fa-var-toggle-on; } +.@{fa-css-prefix}-bicycle:before { content: @fa-var-bicycle; } +.@{fa-css-prefix}-bus:before { content: @fa-var-bus; } +.@{fa-css-prefix}-ioxhost:before { content: @fa-var-ioxhost; } +.@{fa-css-prefix}-angellist:before { content: @fa-var-angellist; } +.@{fa-css-prefix}-cc:before { content: @fa-var-cc; } +.@{fa-css-prefix}-shekel:before, +.@{fa-css-prefix}-sheqel:before, +.@{fa-css-prefix}-ils:before { content: @fa-var-ils; } +.@{fa-css-prefix}-meanpath:before { content: @fa-var-meanpath; } +.@{fa-css-prefix}-buysellads:before { content: @fa-var-buysellads; } +.@{fa-css-prefix}-connectdevelop:before { content: @fa-var-connectdevelop; } +.@{fa-css-prefix}-dashcube:before { content: @fa-var-dashcube; } +.@{fa-css-prefix}-forumbee:before { content: @fa-var-forumbee; } +.@{fa-css-prefix}-leanpub:before { content: @fa-var-leanpub; } +.@{fa-css-prefix}-sellsy:before { content: @fa-var-sellsy; } +.@{fa-css-prefix}-shirtsinbulk:before { content: @fa-var-shirtsinbulk; } +.@{fa-css-prefix}-simplybuilt:before { content: @fa-var-simplybuilt; } +.@{fa-css-prefix}-skyatlas:before { content: @fa-var-skyatlas; } +.@{fa-css-prefix}-cart-plus:before { content: @fa-var-cart-plus; } +.@{fa-css-prefix}-cart-arrow-down:before { content: @fa-var-cart-arrow-down; } +.@{fa-css-prefix}-diamond:before { content: @fa-var-diamond; } +.@{fa-css-prefix}-ship:before { content: @fa-var-ship; } +.@{fa-css-prefix}-user-secret:before { content: @fa-var-user-secret; } +.@{fa-css-prefix}-motorcycle:before { content: @fa-var-motorcycle; } +.@{fa-css-prefix}-street-view:before { content: @fa-var-street-view; } +.@{fa-css-prefix}-heartbeat:before { content: @fa-var-heartbeat; } +.@{fa-css-prefix}-venus:before { content: @fa-var-venus; } +.@{fa-css-prefix}-mars:before { content: @fa-var-mars; } +.@{fa-css-prefix}-mercury:before { content: @fa-var-mercury; } +.@{fa-css-prefix}-intersex:before, +.@{fa-css-prefix}-transgender:before { content: @fa-var-transgender; } +.@{fa-css-prefix}-transgender-alt:before { content: @fa-var-transgender-alt; } +.@{fa-css-prefix}-venus-double:before { content: @fa-var-venus-double; } +.@{fa-css-prefix}-mars-double:before { content: @fa-var-mars-double; } +.@{fa-css-prefix}-venus-mars:before { content: @fa-var-venus-mars; } +.@{fa-css-prefix}-mars-stroke:before { content: @fa-var-mars-stroke; } +.@{fa-css-prefix}-mars-stroke-v:before { content: @fa-var-mars-stroke-v; } +.@{fa-css-prefix}-mars-stroke-h:before { content: @fa-var-mars-stroke-h; } +.@{fa-css-prefix}-neuter:before { content: @fa-var-neuter; } +.@{fa-css-prefix}-genderless:before { content: @fa-var-genderless; } +.@{fa-css-prefix}-facebook-official:before { content: @fa-var-facebook-official; } +.@{fa-css-prefix}-pinterest-p:before { content: @fa-var-pinterest-p; } +.@{fa-css-prefix}-whatsapp:before { content: @fa-var-whatsapp; } +.@{fa-css-prefix}-server:before { content: @fa-var-server; } +.@{fa-css-prefix}-user-plus:before { content: @fa-var-user-plus; } +.@{fa-css-prefix}-user-times:before { content: @fa-var-user-times; } +.@{fa-css-prefix}-hotel:before, +.@{fa-css-prefix}-bed:before { content: @fa-var-bed; } +.@{fa-css-prefix}-viacoin:before { content: @fa-var-viacoin; } +.@{fa-css-prefix}-train:before { content: @fa-var-train; } +.@{fa-css-prefix}-subway:before { content: @fa-var-subway; } +.@{fa-css-prefix}-medium:before { content: @fa-var-medium; } +.@{fa-css-prefix}-yc:before, +.@{fa-css-prefix}-y-combinator:before { content: @fa-var-y-combinator; } +.@{fa-css-prefix}-optin-monster:before { content: @fa-var-optin-monster; } +.@{fa-css-prefix}-opencart:before { content: @fa-var-opencart; } +.@{fa-css-prefix}-expeditedssl:before { content: @fa-var-expeditedssl; } +.@{fa-css-prefix}-battery-4:before, +.@{fa-css-prefix}-battery-full:before { content: @fa-var-battery-full; } +.@{fa-css-prefix}-battery-3:before, +.@{fa-css-prefix}-battery-three-quarters:before { content: @fa-var-battery-three-quarters; } +.@{fa-css-prefix}-battery-2:before, +.@{fa-css-prefix}-battery-half:before { content: @fa-var-battery-half; } +.@{fa-css-prefix}-battery-1:before, +.@{fa-css-prefix}-battery-quarter:before { content: @fa-var-battery-quarter; } +.@{fa-css-prefix}-battery-0:before, +.@{fa-css-prefix}-battery-empty:before { content: @fa-var-battery-empty; } +.@{fa-css-prefix}-mouse-pointer:before { content: @fa-var-mouse-pointer; } +.@{fa-css-prefix}-i-cursor:before { content: @fa-var-i-cursor; } +.@{fa-css-prefix}-object-group:before { content: @fa-var-object-group; } +.@{fa-css-prefix}-object-ungroup:before { content: @fa-var-object-ungroup; } +.@{fa-css-prefix}-sticky-note:before { content: @fa-var-sticky-note; } +.@{fa-css-prefix}-sticky-note-o:before { content: @fa-var-sticky-note-o; } +.@{fa-css-prefix}-cc-jcb:before { content: @fa-var-cc-jcb; } +.@{fa-css-prefix}-cc-diners-club:before { content: @fa-var-cc-diners-club; } +.@{fa-css-prefix}-clone:before { content: @fa-var-clone; } +.@{fa-css-prefix}-balance-scale:before { content: @fa-var-balance-scale; } +.@{fa-css-prefix}-hourglass-o:before { content: @fa-var-hourglass-o; } +.@{fa-css-prefix}-hourglass-1:before, +.@{fa-css-prefix}-hourglass-start:before { content: @fa-var-hourglass-start; } +.@{fa-css-prefix}-hourglass-2:before, +.@{fa-css-prefix}-hourglass-half:before { content: @fa-var-hourglass-half; } +.@{fa-css-prefix}-hourglass-3:before, +.@{fa-css-prefix}-hourglass-end:before { content: @fa-var-hourglass-end; } +.@{fa-css-prefix}-hourglass:before { content: @fa-var-hourglass; } +.@{fa-css-prefix}-hand-grab-o:before, +.@{fa-css-prefix}-hand-rock-o:before { content: @fa-var-hand-rock-o; } +.@{fa-css-prefix}-hand-stop-o:before, +.@{fa-css-prefix}-hand-paper-o:before { content: @fa-var-hand-paper-o; } +.@{fa-css-prefix}-hand-scissors-o:before { content: @fa-var-hand-scissors-o; } +.@{fa-css-prefix}-hand-lizard-o:before { content: @fa-var-hand-lizard-o; } +.@{fa-css-prefix}-hand-spock-o:before { content: @fa-var-hand-spock-o; } +.@{fa-css-prefix}-hand-pointer-o:before { content: @fa-var-hand-pointer-o; } +.@{fa-css-prefix}-hand-peace-o:before { content: @fa-var-hand-peace-o; } +.@{fa-css-prefix}-trademark:before { content: @fa-var-trademark; } +.@{fa-css-prefix}-registered:before { content: @fa-var-registered; } +.@{fa-css-prefix}-creative-commons:before { content: @fa-var-creative-commons; } +.@{fa-css-prefix}-gg:before { content: @fa-var-gg; } +.@{fa-css-prefix}-gg-circle:before { content: @fa-var-gg-circle; } +.@{fa-css-prefix}-tripadvisor:before { content: @fa-var-tripadvisor; } +.@{fa-css-prefix}-odnoklassniki:before { content: @fa-var-odnoklassniki; } +.@{fa-css-prefix}-odnoklassniki-square:before { content: @fa-var-odnoklassniki-square; } +.@{fa-css-prefix}-get-pocket:before { content: @fa-var-get-pocket; } +.@{fa-css-prefix}-wikipedia-w:before { content: @fa-var-wikipedia-w; } +.@{fa-css-prefix}-safari:before { content: @fa-var-safari; } +.@{fa-css-prefix}-chrome:before { content: @fa-var-chrome; } +.@{fa-css-prefix}-firefox:before { content: @fa-var-firefox; } +.@{fa-css-prefix}-opera:before { content: @fa-var-opera; } +.@{fa-css-prefix}-internet-explorer:before { content: @fa-var-internet-explorer; } +.@{fa-css-prefix}-tv:before, +.@{fa-css-prefix}-television:before { content: @fa-var-television; } +.@{fa-css-prefix}-contao:before { content: @fa-var-contao; } +.@{fa-css-prefix}-500px:before { content: @fa-var-500px; } +.@{fa-css-prefix}-amazon:before { content: @fa-var-amazon; } +.@{fa-css-prefix}-calendar-plus-o:before { content: @fa-var-calendar-plus-o; } +.@{fa-css-prefix}-calendar-minus-o:before { content: @fa-var-calendar-minus-o; } +.@{fa-css-prefix}-calendar-times-o:before { content: @fa-var-calendar-times-o; } +.@{fa-css-prefix}-calendar-check-o:before { content: @fa-var-calendar-check-o; } +.@{fa-css-prefix}-industry:before { content: @fa-var-industry; } +.@{fa-css-prefix}-map-pin:before { content: @fa-var-map-pin; } +.@{fa-css-prefix}-map-signs:before { content: @fa-var-map-signs; } +.@{fa-css-prefix}-map-o:before { content: @fa-var-map-o; } +.@{fa-css-prefix}-map:before { content: @fa-var-map; } +.@{fa-css-prefix}-commenting:before { content: @fa-var-commenting; } +.@{fa-css-prefix}-commenting-o:before { content: @fa-var-commenting-o; } +.@{fa-css-prefix}-houzz:before { content: @fa-var-houzz; } +.@{fa-css-prefix}-vimeo:before { content: @fa-var-vimeo; } +.@{fa-css-prefix}-black-tie:before { content: @fa-var-black-tie; } +.@{fa-css-prefix}-fonticons:before { content: @fa-var-fonticons; } +.@{fa-css-prefix}-reddit-alien:before { content: @fa-var-reddit-alien; } +.@{fa-css-prefix}-edge:before { content: @fa-var-edge; } +.@{fa-css-prefix}-credit-card-alt:before { content: @fa-var-credit-card-alt; } +.@{fa-css-prefix}-codiepie:before { content: @fa-var-codiepie; } +.@{fa-css-prefix}-modx:before { content: @fa-var-modx; } +.@{fa-css-prefix}-fort-awesome:before { content: @fa-var-fort-awesome; } +.@{fa-css-prefix}-usb:before { content: @fa-var-usb; } +.@{fa-css-prefix}-product-hunt:before { content: @fa-var-product-hunt; } +.@{fa-css-prefix}-mixcloud:before { content: @fa-var-mixcloud; } +.@{fa-css-prefix}-scribd:before { content: @fa-var-scribd; } +.@{fa-css-prefix}-pause-circle:before { content: @fa-var-pause-circle; } +.@{fa-css-prefix}-pause-circle-o:before { content: @fa-var-pause-circle-o; } +.@{fa-css-prefix}-stop-circle:before { content: @fa-var-stop-circle; } +.@{fa-css-prefix}-stop-circle-o:before { content: @fa-var-stop-circle-o; } +.@{fa-css-prefix}-shopping-bag:before { content: @fa-var-shopping-bag; } +.@{fa-css-prefix}-shopping-basket:before { content: @fa-var-shopping-basket; } +.@{fa-css-prefix}-hashtag:before { content: @fa-var-hashtag; } +.@{fa-css-prefix}-bluetooth:before { content: @fa-var-bluetooth; } +.@{fa-css-prefix}-bluetooth-b:before { content: @fa-var-bluetooth-b; } +.@{fa-css-prefix}-percent:before { content: @fa-var-percent; } +.@{fa-css-prefix}-gitlab:before { content: @fa-var-gitlab; } +.@{fa-css-prefix}-wpbeginner:before { content: @fa-var-wpbeginner; } +.@{fa-css-prefix}-wpforms:before { content: @fa-var-wpforms; } +.@{fa-css-prefix}-envira:before { content: @fa-var-envira; } +.@{fa-css-prefix}-universal-access:before { content: @fa-var-universal-access; } +.@{fa-css-prefix}-wheelchair-alt:before { content: @fa-var-wheelchair-alt; } +.@{fa-css-prefix}-question-circle-o:before { content: @fa-var-question-circle-o; } +.@{fa-css-prefix}-blind:before { content: @fa-var-blind; } +.@{fa-css-prefix}-audio-description:before { content: @fa-var-audio-description; } +.@{fa-css-prefix}-volume-control-phone:before { content: @fa-var-volume-control-phone; } +.@{fa-css-prefix}-braille:before { content: @fa-var-braille; } +.@{fa-css-prefix}-assistive-listening-systems:before { content: @fa-var-assistive-listening-systems; } +.@{fa-css-prefix}-asl-interpreting:before, +.@{fa-css-prefix}-american-sign-language-interpreting:before { content: @fa-var-american-sign-language-interpreting; } +.@{fa-css-prefix}-deafness:before, +.@{fa-css-prefix}-hard-of-hearing:before, +.@{fa-css-prefix}-deaf:before { content: @fa-var-deaf; } +.@{fa-css-prefix}-glide:before { content: @fa-var-glide; } +.@{fa-css-prefix}-glide-g:before { content: @fa-var-glide-g; } +.@{fa-css-prefix}-signing:before, +.@{fa-css-prefix}-sign-language:before { content: @fa-var-sign-language; } +.@{fa-css-prefix}-low-vision:before { content: @fa-var-low-vision; } +.@{fa-css-prefix}-viadeo:before { content: @fa-var-viadeo; } +.@{fa-css-prefix}-viadeo-square:before { content: @fa-var-viadeo-square; } +.@{fa-css-prefix}-snapchat:before { content: @fa-var-snapchat; } +.@{fa-css-prefix}-snapchat-ghost:before { content: @fa-var-snapchat-ghost; } +.@{fa-css-prefix}-snapchat-square:before { content: @fa-var-snapchat-square; } +.@{fa-css-prefix}-pied-piper:before { content: @fa-var-pied-piper; } +.@{fa-css-prefix}-first-order:before { content: @fa-var-first-order; } +.@{fa-css-prefix}-yoast:before { content: @fa-var-yoast; } +.@{fa-css-prefix}-themeisle:before { content: @fa-var-themeisle; } +.@{fa-css-prefix}-google-plus-circle:before, +.@{fa-css-prefix}-google-plus-official:before { content: @fa-var-google-plus-official; } +.@{fa-css-prefix}-fa:before, +.@{fa-css-prefix}-font-awesome:before { content: @fa-var-font-awesome; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/larger.less b/vraptor/src/main/webapp/vendor/font-awesome/less/larger.less new file mode 100644 index 0000000000..c9d646770e --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/larger.less @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.@{fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.@{fa-css-prefix}-2x { font-size: 2em; } +.@{fa-css-prefix}-3x { font-size: 3em; } +.@{fa-css-prefix}-4x { font-size: 4em; } +.@{fa-css-prefix}-5x { font-size: 5em; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/list.less b/vraptor/src/main/webapp/vendor/font-awesome/less/list.less new file mode 100644 index 0000000000..0b440382f6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/list.less @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.@{fa-css-prefix}-ul { + padding-left: 0; + margin-left: @fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.@{fa-css-prefix}-li { + position: absolute; + left: -@fa-li-width; + width: @fa-li-width; + top: (2em / 14); + text-align: center; + &.@{fa-css-prefix}-lg { + left: (-@fa-li-width + (4em / 14)); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/mixins.less b/vraptor/src/main/webapp/vendor/font-awesome/less/mixins.less new file mode 100644 index 0000000000..beef231d0e --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/mixins.less @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +.fa-icon() { + display: inline-block; + font: normal normal normal @fa-font-size-base/@fa-line-height-base FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +.fa-icon-rotate(@degrees, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation})"; + -webkit-transform: rotate(@degrees); + -ms-transform: rotate(@degrees); + transform: rotate(@degrees); +} + +.fa-icon-flip(@horiz, @vert, @rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=@{rotation}, mirror=1)"; + -webkit-transform: scale(@horiz, @vert); + -ms-transform: scale(@horiz, @vert); + transform: scale(@horiz, @vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +.sr-only() { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +.sr-only-focusable() { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/path.less b/vraptor/src/main/webapp/vendor/font-awesome/less/path.less new file mode 100644 index 0000000000..835be41f81 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/path.less @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('@{fa-font-path}/fontawesome-webfont.eot?v=@{fa-version}'); + src: url('@{fa-font-path}/fontawesome-webfont.eot?#iefix&v=@{fa-version}') format('embedded-opentype'), + url('@{fa-font-path}/fontawesome-webfont.woff2?v=@{fa-version}') format('woff2'), + url('@{fa-font-path}/fontawesome-webfont.woff?v=@{fa-version}') format('woff'), + url('@{fa-font-path}/fontawesome-webfont.ttf?v=@{fa-version}') format('truetype'), + url('@{fa-font-path}/fontawesome-webfont.svg?v=@{fa-version}#fontawesomeregular') format('svg'); + // src: url('@{fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/rotated-flipped.less b/vraptor/src/main/webapp/vendor/font-awesome/less/rotated-flipped.less new file mode 100644 index 0000000000..f6ba81475b --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/rotated-flipped.less @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.@{fa-css-prefix}-rotate-90 { .fa-icon-rotate(90deg, 1); } +.@{fa-css-prefix}-rotate-180 { .fa-icon-rotate(180deg, 2); } +.@{fa-css-prefix}-rotate-270 { .fa-icon-rotate(270deg, 3); } + +.@{fa-css-prefix}-flip-horizontal { .fa-icon-flip(-1, 1, 0); } +.@{fa-css-prefix}-flip-vertical { .fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .@{fa-css-prefix}-rotate-90, +:root .@{fa-css-prefix}-rotate-180, +:root .@{fa-css-prefix}-rotate-270, +:root .@{fa-css-prefix}-flip-horizontal, +:root .@{fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/screen-reader.less b/vraptor/src/main/webapp/vendor/font-awesome/less/screen-reader.less new file mode 100644 index 0000000000..11c188196d --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/screen-reader.less @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { .sr-only(); } +.sr-only-focusable { .sr-only-focusable(); } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/stacked.less b/vraptor/src/main/webapp/vendor/font-awesome/less/stacked.less new file mode 100644 index 0000000000..fc53fb0e7a --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/stacked.less @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.@{fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.@{fa-css-prefix}-stack-1x, .@{fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.@{fa-css-prefix}-stack-1x { line-height: inherit; } +.@{fa-css-prefix}-stack-2x { font-size: 2em; } +.@{fa-css-prefix}-inverse { color: @fa-inverse; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/less/variables.less b/vraptor/src/main/webapp/vendor/font-awesome/less/variables.less new file mode 100644 index 0000000000..2b3381975e --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/less/variables.less @@ -0,0 +1,744 @@ +// Variables +// -------------------------- + +@fa-font-path: "../fonts"; +@fa-font-size-base: 14px; +@fa-line-height-base: 1; +//@fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts"; // for referencing Bootstrap CDN font files directly +@fa-css-prefix: fa; +@fa-version: "4.6.3"; +@fa-border-color: #eee; +@fa-inverse: #fff; +@fa-li-width: (30em / 14); + +@fa-var-500px: "\f26e"; +@fa-var-adjust: "\f042"; +@fa-var-adn: "\f170"; +@fa-var-align-center: "\f037"; +@fa-var-align-justify: "\f039"; +@fa-var-align-left: "\f036"; +@fa-var-align-right: "\f038"; +@fa-var-amazon: "\f270"; +@fa-var-ambulance: "\f0f9"; +@fa-var-american-sign-language-interpreting: "\f2a3"; +@fa-var-anchor: "\f13d"; +@fa-var-android: "\f17b"; +@fa-var-angellist: "\f209"; +@fa-var-angle-double-down: "\f103"; +@fa-var-angle-double-left: "\f100"; +@fa-var-angle-double-right: "\f101"; +@fa-var-angle-double-up: "\f102"; +@fa-var-angle-down: "\f107"; +@fa-var-angle-left: "\f104"; +@fa-var-angle-right: "\f105"; +@fa-var-angle-up: "\f106"; +@fa-var-apple: "\f179"; +@fa-var-archive: "\f187"; +@fa-var-area-chart: "\f1fe"; +@fa-var-arrow-circle-down: "\f0ab"; +@fa-var-arrow-circle-left: "\f0a8"; +@fa-var-arrow-circle-o-down: "\f01a"; +@fa-var-arrow-circle-o-left: "\f190"; +@fa-var-arrow-circle-o-right: "\f18e"; +@fa-var-arrow-circle-o-up: "\f01b"; +@fa-var-arrow-circle-right: "\f0a9"; +@fa-var-arrow-circle-up: "\f0aa"; +@fa-var-arrow-down: "\f063"; +@fa-var-arrow-left: "\f060"; +@fa-var-arrow-right: "\f061"; +@fa-var-arrow-up: "\f062"; +@fa-var-arrows: "\f047"; +@fa-var-arrows-alt: "\f0b2"; +@fa-var-arrows-h: "\f07e"; +@fa-var-arrows-v: "\f07d"; +@fa-var-asl-interpreting: "\f2a3"; +@fa-var-assistive-listening-systems: "\f2a2"; +@fa-var-asterisk: "\f069"; +@fa-var-at: "\f1fa"; +@fa-var-audio-description: "\f29e"; +@fa-var-automobile: "\f1b9"; +@fa-var-backward: "\f04a"; +@fa-var-balance-scale: "\f24e"; +@fa-var-ban: "\f05e"; +@fa-var-bank: "\f19c"; +@fa-var-bar-chart: "\f080"; +@fa-var-bar-chart-o: "\f080"; +@fa-var-barcode: "\f02a"; +@fa-var-bars: "\f0c9"; +@fa-var-battery-0: "\f244"; +@fa-var-battery-1: "\f243"; +@fa-var-battery-2: "\f242"; +@fa-var-battery-3: "\f241"; +@fa-var-battery-4: "\f240"; +@fa-var-battery-empty: "\f244"; +@fa-var-battery-full: "\f240"; +@fa-var-battery-half: "\f242"; +@fa-var-battery-quarter: "\f243"; +@fa-var-battery-three-quarters: "\f241"; +@fa-var-bed: "\f236"; +@fa-var-beer: "\f0fc"; +@fa-var-behance: "\f1b4"; +@fa-var-behance-square: "\f1b5"; +@fa-var-bell: "\f0f3"; +@fa-var-bell-o: "\f0a2"; +@fa-var-bell-slash: "\f1f6"; +@fa-var-bell-slash-o: "\f1f7"; +@fa-var-bicycle: "\f206"; +@fa-var-binoculars: "\f1e5"; +@fa-var-birthday-cake: "\f1fd"; +@fa-var-bitbucket: "\f171"; +@fa-var-bitbucket-square: "\f172"; +@fa-var-bitcoin: "\f15a"; +@fa-var-black-tie: "\f27e"; +@fa-var-blind: "\f29d"; +@fa-var-bluetooth: "\f293"; +@fa-var-bluetooth-b: "\f294"; +@fa-var-bold: "\f032"; +@fa-var-bolt: "\f0e7"; +@fa-var-bomb: "\f1e2"; +@fa-var-book: "\f02d"; +@fa-var-bookmark: "\f02e"; +@fa-var-bookmark-o: "\f097"; +@fa-var-braille: "\f2a1"; +@fa-var-briefcase: "\f0b1"; +@fa-var-btc: "\f15a"; +@fa-var-bug: "\f188"; +@fa-var-building: "\f1ad"; +@fa-var-building-o: "\f0f7"; +@fa-var-bullhorn: "\f0a1"; +@fa-var-bullseye: "\f140"; +@fa-var-bus: "\f207"; +@fa-var-buysellads: "\f20d"; +@fa-var-cab: "\f1ba"; +@fa-var-calculator: "\f1ec"; +@fa-var-calendar: "\f073"; +@fa-var-calendar-check-o: "\f274"; +@fa-var-calendar-minus-o: "\f272"; +@fa-var-calendar-o: "\f133"; +@fa-var-calendar-plus-o: "\f271"; +@fa-var-calendar-times-o: "\f273"; +@fa-var-camera: "\f030"; +@fa-var-camera-retro: "\f083"; +@fa-var-car: "\f1b9"; +@fa-var-caret-down: "\f0d7"; +@fa-var-caret-left: "\f0d9"; +@fa-var-caret-right: "\f0da"; +@fa-var-caret-square-o-down: "\f150"; +@fa-var-caret-square-o-left: "\f191"; +@fa-var-caret-square-o-right: "\f152"; +@fa-var-caret-square-o-up: "\f151"; +@fa-var-caret-up: "\f0d8"; +@fa-var-cart-arrow-down: "\f218"; +@fa-var-cart-plus: "\f217"; +@fa-var-cc: "\f20a"; +@fa-var-cc-amex: "\f1f3"; +@fa-var-cc-diners-club: "\f24c"; +@fa-var-cc-discover: "\f1f2"; +@fa-var-cc-jcb: "\f24b"; +@fa-var-cc-mastercard: "\f1f1"; +@fa-var-cc-paypal: "\f1f4"; +@fa-var-cc-stripe: "\f1f5"; +@fa-var-cc-visa: "\f1f0"; +@fa-var-certificate: "\f0a3"; +@fa-var-chain: "\f0c1"; +@fa-var-chain-broken: "\f127"; +@fa-var-check: "\f00c"; +@fa-var-check-circle: "\f058"; +@fa-var-check-circle-o: "\f05d"; +@fa-var-check-square: "\f14a"; +@fa-var-check-square-o: "\f046"; +@fa-var-chevron-circle-down: "\f13a"; +@fa-var-chevron-circle-left: "\f137"; +@fa-var-chevron-circle-right: "\f138"; +@fa-var-chevron-circle-up: "\f139"; +@fa-var-chevron-down: "\f078"; +@fa-var-chevron-left: "\f053"; +@fa-var-chevron-right: "\f054"; +@fa-var-chevron-up: "\f077"; +@fa-var-child: "\f1ae"; +@fa-var-chrome: "\f268"; +@fa-var-circle: "\f111"; +@fa-var-circle-o: "\f10c"; +@fa-var-circle-o-notch: "\f1ce"; +@fa-var-circle-thin: "\f1db"; +@fa-var-clipboard: "\f0ea"; +@fa-var-clock-o: "\f017"; +@fa-var-clone: "\f24d"; +@fa-var-close: "\f00d"; +@fa-var-cloud: "\f0c2"; +@fa-var-cloud-download: "\f0ed"; +@fa-var-cloud-upload: "\f0ee"; +@fa-var-cny: "\f157"; +@fa-var-code: "\f121"; +@fa-var-code-fork: "\f126"; +@fa-var-codepen: "\f1cb"; +@fa-var-codiepie: "\f284"; +@fa-var-coffee: "\f0f4"; +@fa-var-cog: "\f013"; +@fa-var-cogs: "\f085"; +@fa-var-columns: "\f0db"; +@fa-var-comment: "\f075"; +@fa-var-comment-o: "\f0e5"; +@fa-var-commenting: "\f27a"; +@fa-var-commenting-o: "\f27b"; +@fa-var-comments: "\f086"; +@fa-var-comments-o: "\f0e6"; +@fa-var-compass: "\f14e"; +@fa-var-compress: "\f066"; +@fa-var-connectdevelop: "\f20e"; +@fa-var-contao: "\f26d"; +@fa-var-copy: "\f0c5"; +@fa-var-copyright: "\f1f9"; +@fa-var-creative-commons: "\f25e"; +@fa-var-credit-card: "\f09d"; +@fa-var-credit-card-alt: "\f283"; +@fa-var-crop: "\f125"; +@fa-var-crosshairs: "\f05b"; +@fa-var-css3: "\f13c"; +@fa-var-cube: "\f1b2"; +@fa-var-cubes: "\f1b3"; +@fa-var-cut: "\f0c4"; +@fa-var-cutlery: "\f0f5"; +@fa-var-dashboard: "\f0e4"; +@fa-var-dashcube: "\f210"; +@fa-var-database: "\f1c0"; +@fa-var-deaf: "\f2a4"; +@fa-var-deafness: "\f2a4"; +@fa-var-dedent: "\f03b"; +@fa-var-delicious: "\f1a5"; +@fa-var-desktop: "\f108"; +@fa-var-deviantart: "\f1bd"; +@fa-var-diamond: "\f219"; +@fa-var-digg: "\f1a6"; +@fa-var-dollar: "\f155"; +@fa-var-dot-circle-o: "\f192"; +@fa-var-download: "\f019"; +@fa-var-dribbble: "\f17d"; +@fa-var-dropbox: "\f16b"; +@fa-var-drupal: "\f1a9"; +@fa-var-edge: "\f282"; +@fa-var-edit: "\f044"; +@fa-var-eject: "\f052"; +@fa-var-ellipsis-h: "\f141"; +@fa-var-ellipsis-v: "\f142"; +@fa-var-empire: "\f1d1"; +@fa-var-envelope: "\f0e0"; +@fa-var-envelope-o: "\f003"; +@fa-var-envelope-square: "\f199"; +@fa-var-envira: "\f299"; +@fa-var-eraser: "\f12d"; +@fa-var-eur: "\f153"; +@fa-var-euro: "\f153"; +@fa-var-exchange: "\f0ec"; +@fa-var-exclamation: "\f12a"; +@fa-var-exclamation-circle: "\f06a"; +@fa-var-exclamation-triangle: "\f071"; +@fa-var-expand: "\f065"; +@fa-var-expeditedssl: "\f23e"; +@fa-var-external-link: "\f08e"; +@fa-var-external-link-square: "\f14c"; +@fa-var-eye: "\f06e"; +@fa-var-eye-slash: "\f070"; +@fa-var-eyedropper: "\f1fb"; +@fa-var-fa: "\f2b4"; +@fa-var-facebook: "\f09a"; +@fa-var-facebook-f: "\f09a"; +@fa-var-facebook-official: "\f230"; +@fa-var-facebook-square: "\f082"; +@fa-var-fast-backward: "\f049"; +@fa-var-fast-forward: "\f050"; +@fa-var-fax: "\f1ac"; +@fa-var-feed: "\f09e"; +@fa-var-female: "\f182"; +@fa-var-fighter-jet: "\f0fb"; +@fa-var-file: "\f15b"; +@fa-var-file-archive-o: "\f1c6"; +@fa-var-file-audio-o: "\f1c7"; +@fa-var-file-code-o: "\f1c9"; +@fa-var-file-excel-o: "\f1c3"; +@fa-var-file-image-o: "\f1c5"; +@fa-var-file-movie-o: "\f1c8"; +@fa-var-file-o: "\f016"; +@fa-var-file-pdf-o: "\f1c1"; +@fa-var-file-photo-o: "\f1c5"; +@fa-var-file-picture-o: "\f1c5"; +@fa-var-file-powerpoint-o: "\f1c4"; +@fa-var-file-sound-o: "\f1c7"; +@fa-var-file-text: "\f15c"; +@fa-var-file-text-o: "\f0f6"; +@fa-var-file-video-o: "\f1c8"; +@fa-var-file-word-o: "\f1c2"; +@fa-var-file-zip-o: "\f1c6"; +@fa-var-files-o: "\f0c5"; +@fa-var-film: "\f008"; +@fa-var-filter: "\f0b0"; +@fa-var-fire: "\f06d"; +@fa-var-fire-extinguisher: "\f134"; +@fa-var-firefox: "\f269"; +@fa-var-first-order: "\f2b0"; +@fa-var-flag: "\f024"; +@fa-var-flag-checkered: "\f11e"; +@fa-var-flag-o: "\f11d"; +@fa-var-flash: "\f0e7"; +@fa-var-flask: "\f0c3"; +@fa-var-flickr: "\f16e"; +@fa-var-floppy-o: "\f0c7"; +@fa-var-folder: "\f07b"; +@fa-var-folder-o: "\f114"; +@fa-var-folder-open: "\f07c"; +@fa-var-folder-open-o: "\f115"; +@fa-var-font: "\f031"; +@fa-var-font-awesome: "\f2b4"; +@fa-var-fonticons: "\f280"; +@fa-var-fort-awesome: "\f286"; +@fa-var-forumbee: "\f211"; +@fa-var-forward: "\f04e"; +@fa-var-foursquare: "\f180"; +@fa-var-frown-o: "\f119"; +@fa-var-futbol-o: "\f1e3"; +@fa-var-gamepad: "\f11b"; +@fa-var-gavel: "\f0e3"; +@fa-var-gbp: "\f154"; +@fa-var-ge: "\f1d1"; +@fa-var-gear: "\f013"; +@fa-var-gears: "\f085"; +@fa-var-genderless: "\f22d"; +@fa-var-get-pocket: "\f265"; +@fa-var-gg: "\f260"; +@fa-var-gg-circle: "\f261"; +@fa-var-gift: "\f06b"; +@fa-var-git: "\f1d3"; +@fa-var-git-square: "\f1d2"; +@fa-var-github: "\f09b"; +@fa-var-github-alt: "\f113"; +@fa-var-github-square: "\f092"; +@fa-var-gitlab: "\f296"; +@fa-var-gittip: "\f184"; +@fa-var-glass: "\f000"; +@fa-var-glide: "\f2a5"; +@fa-var-glide-g: "\f2a6"; +@fa-var-globe: "\f0ac"; +@fa-var-google: "\f1a0"; +@fa-var-google-plus: "\f0d5"; +@fa-var-google-plus-circle: "\f2b3"; +@fa-var-google-plus-official: "\f2b3"; +@fa-var-google-plus-square: "\f0d4"; +@fa-var-google-wallet: "\f1ee"; +@fa-var-graduation-cap: "\f19d"; +@fa-var-gratipay: "\f184"; +@fa-var-group: "\f0c0"; +@fa-var-h-square: "\f0fd"; +@fa-var-hacker-news: "\f1d4"; +@fa-var-hand-grab-o: "\f255"; +@fa-var-hand-lizard-o: "\f258"; +@fa-var-hand-o-down: "\f0a7"; +@fa-var-hand-o-left: "\f0a5"; +@fa-var-hand-o-right: "\f0a4"; +@fa-var-hand-o-up: "\f0a6"; +@fa-var-hand-paper-o: "\f256"; +@fa-var-hand-peace-o: "\f25b"; +@fa-var-hand-pointer-o: "\f25a"; +@fa-var-hand-rock-o: "\f255"; +@fa-var-hand-scissors-o: "\f257"; +@fa-var-hand-spock-o: "\f259"; +@fa-var-hand-stop-o: "\f256"; +@fa-var-hard-of-hearing: "\f2a4"; +@fa-var-hashtag: "\f292"; +@fa-var-hdd-o: "\f0a0"; +@fa-var-header: "\f1dc"; +@fa-var-headphones: "\f025"; +@fa-var-heart: "\f004"; +@fa-var-heart-o: "\f08a"; +@fa-var-heartbeat: "\f21e"; +@fa-var-history: "\f1da"; +@fa-var-home: "\f015"; +@fa-var-hospital-o: "\f0f8"; +@fa-var-hotel: "\f236"; +@fa-var-hourglass: "\f254"; +@fa-var-hourglass-1: "\f251"; +@fa-var-hourglass-2: "\f252"; +@fa-var-hourglass-3: "\f253"; +@fa-var-hourglass-end: "\f253"; +@fa-var-hourglass-half: "\f252"; +@fa-var-hourglass-o: "\f250"; +@fa-var-hourglass-start: "\f251"; +@fa-var-houzz: "\f27c"; +@fa-var-html5: "\f13b"; +@fa-var-i-cursor: "\f246"; +@fa-var-ils: "\f20b"; +@fa-var-image: "\f03e"; +@fa-var-inbox: "\f01c"; +@fa-var-indent: "\f03c"; +@fa-var-industry: "\f275"; +@fa-var-info: "\f129"; +@fa-var-info-circle: "\f05a"; +@fa-var-inr: "\f156"; +@fa-var-instagram: "\f16d"; +@fa-var-institution: "\f19c"; +@fa-var-internet-explorer: "\f26b"; +@fa-var-intersex: "\f224"; +@fa-var-ioxhost: "\f208"; +@fa-var-italic: "\f033"; +@fa-var-joomla: "\f1aa"; +@fa-var-jpy: "\f157"; +@fa-var-jsfiddle: "\f1cc"; +@fa-var-key: "\f084"; +@fa-var-keyboard-o: "\f11c"; +@fa-var-krw: "\f159"; +@fa-var-language: "\f1ab"; +@fa-var-laptop: "\f109"; +@fa-var-lastfm: "\f202"; +@fa-var-lastfm-square: "\f203"; +@fa-var-leaf: "\f06c"; +@fa-var-leanpub: "\f212"; +@fa-var-legal: "\f0e3"; +@fa-var-lemon-o: "\f094"; +@fa-var-level-down: "\f149"; +@fa-var-level-up: "\f148"; +@fa-var-life-bouy: "\f1cd"; +@fa-var-life-buoy: "\f1cd"; +@fa-var-life-ring: "\f1cd"; +@fa-var-life-saver: "\f1cd"; +@fa-var-lightbulb-o: "\f0eb"; +@fa-var-line-chart: "\f201"; +@fa-var-link: "\f0c1"; +@fa-var-linkedin: "\f0e1"; +@fa-var-linkedin-square: "\f08c"; +@fa-var-linux: "\f17c"; +@fa-var-list: "\f03a"; +@fa-var-list-alt: "\f022"; +@fa-var-list-ol: "\f0cb"; +@fa-var-list-ul: "\f0ca"; +@fa-var-location-arrow: "\f124"; +@fa-var-lock: "\f023"; +@fa-var-long-arrow-down: "\f175"; +@fa-var-long-arrow-left: "\f177"; +@fa-var-long-arrow-right: "\f178"; +@fa-var-long-arrow-up: "\f176"; +@fa-var-low-vision: "\f2a8"; +@fa-var-magic: "\f0d0"; +@fa-var-magnet: "\f076"; +@fa-var-mail-forward: "\f064"; +@fa-var-mail-reply: "\f112"; +@fa-var-mail-reply-all: "\f122"; +@fa-var-male: "\f183"; +@fa-var-map: "\f279"; +@fa-var-map-marker: "\f041"; +@fa-var-map-o: "\f278"; +@fa-var-map-pin: "\f276"; +@fa-var-map-signs: "\f277"; +@fa-var-mars: "\f222"; +@fa-var-mars-double: "\f227"; +@fa-var-mars-stroke: "\f229"; +@fa-var-mars-stroke-h: "\f22b"; +@fa-var-mars-stroke-v: "\f22a"; +@fa-var-maxcdn: "\f136"; +@fa-var-meanpath: "\f20c"; +@fa-var-medium: "\f23a"; +@fa-var-medkit: "\f0fa"; +@fa-var-meh-o: "\f11a"; +@fa-var-mercury: "\f223"; +@fa-var-microphone: "\f130"; +@fa-var-microphone-slash: "\f131"; +@fa-var-minus: "\f068"; +@fa-var-minus-circle: "\f056"; +@fa-var-minus-square: "\f146"; +@fa-var-minus-square-o: "\f147"; +@fa-var-mixcloud: "\f289"; +@fa-var-mobile: "\f10b"; +@fa-var-mobile-phone: "\f10b"; +@fa-var-modx: "\f285"; +@fa-var-money: "\f0d6"; +@fa-var-moon-o: "\f186"; +@fa-var-mortar-board: "\f19d"; +@fa-var-motorcycle: "\f21c"; +@fa-var-mouse-pointer: "\f245"; +@fa-var-music: "\f001"; +@fa-var-navicon: "\f0c9"; +@fa-var-neuter: "\f22c"; +@fa-var-newspaper-o: "\f1ea"; +@fa-var-object-group: "\f247"; +@fa-var-object-ungroup: "\f248"; +@fa-var-odnoklassniki: "\f263"; +@fa-var-odnoklassniki-square: "\f264"; +@fa-var-opencart: "\f23d"; +@fa-var-openid: "\f19b"; +@fa-var-opera: "\f26a"; +@fa-var-optin-monster: "\f23c"; +@fa-var-outdent: "\f03b"; +@fa-var-pagelines: "\f18c"; +@fa-var-paint-brush: "\f1fc"; +@fa-var-paper-plane: "\f1d8"; +@fa-var-paper-plane-o: "\f1d9"; +@fa-var-paperclip: "\f0c6"; +@fa-var-paragraph: "\f1dd"; +@fa-var-paste: "\f0ea"; +@fa-var-pause: "\f04c"; +@fa-var-pause-circle: "\f28b"; +@fa-var-pause-circle-o: "\f28c"; +@fa-var-paw: "\f1b0"; +@fa-var-paypal: "\f1ed"; +@fa-var-pencil: "\f040"; +@fa-var-pencil-square: "\f14b"; +@fa-var-pencil-square-o: "\f044"; +@fa-var-percent: "\f295"; +@fa-var-phone: "\f095"; +@fa-var-phone-square: "\f098"; +@fa-var-photo: "\f03e"; +@fa-var-picture-o: "\f03e"; +@fa-var-pie-chart: "\f200"; +@fa-var-pied-piper: "\f2ae"; +@fa-var-pied-piper-alt: "\f1a8"; +@fa-var-pied-piper-pp: "\f1a7"; +@fa-var-pinterest: "\f0d2"; +@fa-var-pinterest-p: "\f231"; +@fa-var-pinterest-square: "\f0d3"; +@fa-var-plane: "\f072"; +@fa-var-play: "\f04b"; +@fa-var-play-circle: "\f144"; +@fa-var-play-circle-o: "\f01d"; +@fa-var-plug: "\f1e6"; +@fa-var-plus: "\f067"; +@fa-var-plus-circle: "\f055"; +@fa-var-plus-square: "\f0fe"; +@fa-var-plus-square-o: "\f196"; +@fa-var-power-off: "\f011"; +@fa-var-print: "\f02f"; +@fa-var-product-hunt: "\f288"; +@fa-var-puzzle-piece: "\f12e"; +@fa-var-qq: "\f1d6"; +@fa-var-qrcode: "\f029"; +@fa-var-question: "\f128"; +@fa-var-question-circle: "\f059"; +@fa-var-question-circle-o: "\f29c"; +@fa-var-quote-left: "\f10d"; +@fa-var-quote-right: "\f10e"; +@fa-var-ra: "\f1d0"; +@fa-var-random: "\f074"; +@fa-var-rebel: "\f1d0"; +@fa-var-recycle: "\f1b8"; +@fa-var-reddit: "\f1a1"; +@fa-var-reddit-alien: "\f281"; +@fa-var-reddit-square: "\f1a2"; +@fa-var-refresh: "\f021"; +@fa-var-registered: "\f25d"; +@fa-var-remove: "\f00d"; +@fa-var-renren: "\f18b"; +@fa-var-reorder: "\f0c9"; +@fa-var-repeat: "\f01e"; +@fa-var-reply: "\f112"; +@fa-var-reply-all: "\f122"; +@fa-var-resistance: "\f1d0"; +@fa-var-retweet: "\f079"; +@fa-var-rmb: "\f157"; +@fa-var-road: "\f018"; +@fa-var-rocket: "\f135"; +@fa-var-rotate-left: "\f0e2"; +@fa-var-rotate-right: "\f01e"; +@fa-var-rouble: "\f158"; +@fa-var-rss: "\f09e"; +@fa-var-rss-square: "\f143"; +@fa-var-rub: "\f158"; +@fa-var-ruble: "\f158"; +@fa-var-rupee: "\f156"; +@fa-var-safari: "\f267"; +@fa-var-save: "\f0c7"; +@fa-var-scissors: "\f0c4"; +@fa-var-scribd: "\f28a"; +@fa-var-search: "\f002"; +@fa-var-search-minus: "\f010"; +@fa-var-search-plus: "\f00e"; +@fa-var-sellsy: "\f213"; +@fa-var-send: "\f1d8"; +@fa-var-send-o: "\f1d9"; +@fa-var-server: "\f233"; +@fa-var-share: "\f064"; +@fa-var-share-alt: "\f1e0"; +@fa-var-share-alt-square: "\f1e1"; +@fa-var-share-square: "\f14d"; +@fa-var-share-square-o: "\f045"; +@fa-var-shekel: "\f20b"; +@fa-var-sheqel: "\f20b"; +@fa-var-shield: "\f132"; +@fa-var-ship: "\f21a"; +@fa-var-shirtsinbulk: "\f214"; +@fa-var-shopping-bag: "\f290"; +@fa-var-shopping-basket: "\f291"; +@fa-var-shopping-cart: "\f07a"; +@fa-var-sign-in: "\f090"; +@fa-var-sign-language: "\f2a7"; +@fa-var-sign-out: "\f08b"; +@fa-var-signal: "\f012"; +@fa-var-signing: "\f2a7"; +@fa-var-simplybuilt: "\f215"; +@fa-var-sitemap: "\f0e8"; +@fa-var-skyatlas: "\f216"; +@fa-var-skype: "\f17e"; +@fa-var-slack: "\f198"; +@fa-var-sliders: "\f1de"; +@fa-var-slideshare: "\f1e7"; +@fa-var-smile-o: "\f118"; +@fa-var-snapchat: "\f2ab"; +@fa-var-snapchat-ghost: "\f2ac"; +@fa-var-snapchat-square: "\f2ad"; +@fa-var-soccer-ball-o: "\f1e3"; +@fa-var-sort: "\f0dc"; +@fa-var-sort-alpha-asc: "\f15d"; +@fa-var-sort-alpha-desc: "\f15e"; +@fa-var-sort-amount-asc: "\f160"; +@fa-var-sort-amount-desc: "\f161"; +@fa-var-sort-asc: "\f0de"; +@fa-var-sort-desc: "\f0dd"; +@fa-var-sort-down: "\f0dd"; +@fa-var-sort-numeric-asc: "\f162"; +@fa-var-sort-numeric-desc: "\f163"; +@fa-var-sort-up: "\f0de"; +@fa-var-soundcloud: "\f1be"; +@fa-var-space-shuttle: "\f197"; +@fa-var-spinner: "\f110"; +@fa-var-spoon: "\f1b1"; +@fa-var-spotify: "\f1bc"; +@fa-var-square: "\f0c8"; +@fa-var-square-o: "\f096"; +@fa-var-stack-exchange: "\f18d"; +@fa-var-stack-overflow: "\f16c"; +@fa-var-star: "\f005"; +@fa-var-star-half: "\f089"; +@fa-var-star-half-empty: "\f123"; +@fa-var-star-half-full: "\f123"; +@fa-var-star-half-o: "\f123"; +@fa-var-star-o: "\f006"; +@fa-var-steam: "\f1b6"; +@fa-var-steam-square: "\f1b7"; +@fa-var-step-backward: "\f048"; +@fa-var-step-forward: "\f051"; +@fa-var-stethoscope: "\f0f1"; +@fa-var-sticky-note: "\f249"; +@fa-var-sticky-note-o: "\f24a"; +@fa-var-stop: "\f04d"; +@fa-var-stop-circle: "\f28d"; +@fa-var-stop-circle-o: "\f28e"; +@fa-var-street-view: "\f21d"; +@fa-var-strikethrough: "\f0cc"; +@fa-var-stumbleupon: "\f1a4"; +@fa-var-stumbleupon-circle: "\f1a3"; +@fa-var-subscript: "\f12c"; +@fa-var-subway: "\f239"; +@fa-var-suitcase: "\f0f2"; +@fa-var-sun-o: "\f185"; +@fa-var-superscript: "\f12b"; +@fa-var-support: "\f1cd"; +@fa-var-table: "\f0ce"; +@fa-var-tablet: "\f10a"; +@fa-var-tachometer: "\f0e4"; +@fa-var-tag: "\f02b"; +@fa-var-tags: "\f02c"; +@fa-var-tasks: "\f0ae"; +@fa-var-taxi: "\f1ba"; +@fa-var-television: "\f26c"; +@fa-var-tencent-weibo: "\f1d5"; +@fa-var-terminal: "\f120"; +@fa-var-text-height: "\f034"; +@fa-var-text-width: "\f035"; +@fa-var-th: "\f00a"; +@fa-var-th-large: "\f009"; +@fa-var-th-list: "\f00b"; +@fa-var-themeisle: "\f2b2"; +@fa-var-thumb-tack: "\f08d"; +@fa-var-thumbs-down: "\f165"; +@fa-var-thumbs-o-down: "\f088"; +@fa-var-thumbs-o-up: "\f087"; +@fa-var-thumbs-up: "\f164"; +@fa-var-ticket: "\f145"; +@fa-var-times: "\f00d"; +@fa-var-times-circle: "\f057"; +@fa-var-times-circle-o: "\f05c"; +@fa-var-tint: "\f043"; +@fa-var-toggle-down: "\f150"; +@fa-var-toggle-left: "\f191"; +@fa-var-toggle-off: "\f204"; +@fa-var-toggle-on: "\f205"; +@fa-var-toggle-right: "\f152"; +@fa-var-toggle-up: "\f151"; +@fa-var-trademark: "\f25c"; +@fa-var-train: "\f238"; +@fa-var-transgender: "\f224"; +@fa-var-transgender-alt: "\f225"; +@fa-var-trash: "\f1f8"; +@fa-var-trash-o: "\f014"; +@fa-var-tree: "\f1bb"; +@fa-var-trello: "\f181"; +@fa-var-tripadvisor: "\f262"; +@fa-var-trophy: "\f091"; +@fa-var-truck: "\f0d1"; +@fa-var-try: "\f195"; +@fa-var-tty: "\f1e4"; +@fa-var-tumblr: "\f173"; +@fa-var-tumblr-square: "\f174"; +@fa-var-turkish-lira: "\f195"; +@fa-var-tv: "\f26c"; +@fa-var-twitch: "\f1e8"; +@fa-var-twitter: "\f099"; +@fa-var-twitter-square: "\f081"; +@fa-var-umbrella: "\f0e9"; +@fa-var-underline: "\f0cd"; +@fa-var-undo: "\f0e2"; +@fa-var-universal-access: "\f29a"; +@fa-var-university: "\f19c"; +@fa-var-unlink: "\f127"; +@fa-var-unlock: "\f09c"; +@fa-var-unlock-alt: "\f13e"; +@fa-var-unsorted: "\f0dc"; +@fa-var-upload: "\f093"; +@fa-var-usb: "\f287"; +@fa-var-usd: "\f155"; +@fa-var-user: "\f007"; +@fa-var-user-md: "\f0f0"; +@fa-var-user-plus: "\f234"; +@fa-var-user-secret: "\f21b"; +@fa-var-user-times: "\f235"; +@fa-var-users: "\f0c0"; +@fa-var-venus: "\f221"; +@fa-var-venus-double: "\f226"; +@fa-var-venus-mars: "\f228"; +@fa-var-viacoin: "\f237"; +@fa-var-viadeo: "\f2a9"; +@fa-var-viadeo-square: "\f2aa"; +@fa-var-video-camera: "\f03d"; +@fa-var-vimeo: "\f27d"; +@fa-var-vimeo-square: "\f194"; +@fa-var-vine: "\f1ca"; +@fa-var-vk: "\f189"; +@fa-var-volume-control-phone: "\f2a0"; +@fa-var-volume-down: "\f027"; +@fa-var-volume-off: "\f026"; +@fa-var-volume-up: "\f028"; +@fa-var-warning: "\f071"; +@fa-var-wechat: "\f1d7"; +@fa-var-weibo: "\f18a"; +@fa-var-weixin: "\f1d7"; +@fa-var-whatsapp: "\f232"; +@fa-var-wheelchair: "\f193"; +@fa-var-wheelchair-alt: "\f29b"; +@fa-var-wifi: "\f1eb"; +@fa-var-wikipedia-w: "\f266"; +@fa-var-windows: "\f17a"; +@fa-var-won: "\f159"; +@fa-var-wordpress: "\f19a"; +@fa-var-wpbeginner: "\f297"; +@fa-var-wpforms: "\f298"; +@fa-var-wrench: "\f0ad"; +@fa-var-xing: "\f168"; +@fa-var-xing-square: "\f169"; +@fa-var-y-combinator: "\f23b"; +@fa-var-y-combinator-square: "\f1d4"; +@fa-var-yahoo: "\f19e"; +@fa-var-yc: "\f23b"; +@fa-var-yc-square: "\f1d4"; +@fa-var-yelp: "\f1e9"; +@fa-var-yen: "\f157"; +@fa-var-yoast: "\f2b1"; +@fa-var-youtube: "\f167"; +@fa-var-youtube-play: "\f16a"; +@fa-var-youtube-square: "\f166"; + diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_animated.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_animated.scss new file mode 100644 index 0000000000..8a020dbfff --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_animated.scss @@ -0,0 +1,34 @@ +// Spinning Icons +// -------------------------- + +.#{$fa-css-prefix}-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} + +.#{$fa-css-prefix}-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} + +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} + +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_bordered-pulled.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_bordered-pulled.scss new file mode 100644 index 0000000000..d4b85a02f2 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_bordered-pulled.scss @@ -0,0 +1,25 @@ +// Bordered & Pulled +// ------------------------- + +.#{$fa-css-prefix}-border { + padding: .2em .25em .15em; + border: solid .08em $fa-border-color; + border-radius: .1em; +} + +.#{$fa-css-prefix}-pull-left { float: left; } +.#{$fa-css-prefix}-pull-right { float: right; } + +.#{$fa-css-prefix} { + &.#{$fa-css-prefix}-pull-left { margin-right: .3em; } + &.#{$fa-css-prefix}-pull-right { margin-left: .3em; } +} + +/* Deprecated as of 4.4.0 */ +.pull-right { float: right; } +.pull-left { float: left; } + +.#{$fa-css-prefix} { + &.pull-left { margin-right: .3em; } + &.pull-right { margin-left: .3em; } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_core.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_core.scss new file mode 100644 index 0000000000..7425ef85fc --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_core.scss @@ -0,0 +1,12 @@ +// Base Class Definition +// ------------------------- + +.#{$fa-css-prefix} { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_fixed-width.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_fixed-width.scss new file mode 100644 index 0000000000..b221c98133 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_fixed-width.scss @@ -0,0 +1,6 @@ +// Fixed Width Icons +// ------------------------- +.#{$fa-css-prefix}-fw { + width: (18em / 14); + text-align: center; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_icons.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_icons.scss new file mode 100644 index 0000000000..2944344350 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_icons.scss @@ -0,0 +1,733 @@ +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ + +.#{$fa-css-prefix}-glass:before { content: $fa-var-glass; } +.#{$fa-css-prefix}-music:before { content: $fa-var-music; } +.#{$fa-css-prefix}-search:before { content: $fa-var-search; } +.#{$fa-css-prefix}-envelope-o:before { content: $fa-var-envelope-o; } +.#{$fa-css-prefix}-heart:before { content: $fa-var-heart; } +.#{$fa-css-prefix}-star:before { content: $fa-var-star; } +.#{$fa-css-prefix}-star-o:before { content: $fa-var-star-o; } +.#{$fa-css-prefix}-user:before { content: $fa-var-user; } +.#{$fa-css-prefix}-film:before { content: $fa-var-film; } +.#{$fa-css-prefix}-th-large:before { content: $fa-var-th-large; } +.#{$fa-css-prefix}-th:before { content: $fa-var-th; } +.#{$fa-css-prefix}-th-list:before { content: $fa-var-th-list; } +.#{$fa-css-prefix}-check:before { content: $fa-var-check; } +.#{$fa-css-prefix}-remove:before, +.#{$fa-css-prefix}-close:before, +.#{$fa-css-prefix}-times:before { content: $fa-var-times; } +.#{$fa-css-prefix}-search-plus:before { content: $fa-var-search-plus; } +.#{$fa-css-prefix}-search-minus:before { content: $fa-var-search-minus; } +.#{$fa-css-prefix}-power-off:before { content: $fa-var-power-off; } +.#{$fa-css-prefix}-signal:before { content: $fa-var-signal; } +.#{$fa-css-prefix}-gear:before, +.#{$fa-css-prefix}-cog:before { content: $fa-var-cog; } +.#{$fa-css-prefix}-trash-o:before { content: $fa-var-trash-o; } +.#{$fa-css-prefix}-home:before { content: $fa-var-home; } +.#{$fa-css-prefix}-file-o:before { content: $fa-var-file-o; } +.#{$fa-css-prefix}-clock-o:before { content: $fa-var-clock-o; } +.#{$fa-css-prefix}-road:before { content: $fa-var-road; } +.#{$fa-css-prefix}-download:before { content: $fa-var-download; } +.#{$fa-css-prefix}-arrow-circle-o-down:before { content: $fa-var-arrow-circle-o-down; } +.#{$fa-css-prefix}-arrow-circle-o-up:before { content: $fa-var-arrow-circle-o-up; } +.#{$fa-css-prefix}-inbox:before { content: $fa-var-inbox; } +.#{$fa-css-prefix}-play-circle-o:before { content: $fa-var-play-circle-o; } +.#{$fa-css-prefix}-rotate-right:before, +.#{$fa-css-prefix}-repeat:before { content: $fa-var-repeat; } +.#{$fa-css-prefix}-refresh:before { content: $fa-var-refresh; } +.#{$fa-css-prefix}-list-alt:before { content: $fa-var-list-alt; } +.#{$fa-css-prefix}-lock:before { content: $fa-var-lock; } +.#{$fa-css-prefix}-flag:before { content: $fa-var-flag; } +.#{$fa-css-prefix}-headphones:before { content: $fa-var-headphones; } +.#{$fa-css-prefix}-volume-off:before { content: $fa-var-volume-off; } +.#{$fa-css-prefix}-volume-down:before { content: $fa-var-volume-down; } +.#{$fa-css-prefix}-volume-up:before { content: $fa-var-volume-up; } +.#{$fa-css-prefix}-qrcode:before { content: $fa-var-qrcode; } +.#{$fa-css-prefix}-barcode:before { content: $fa-var-barcode; } +.#{$fa-css-prefix}-tag:before { content: $fa-var-tag; } +.#{$fa-css-prefix}-tags:before { content: $fa-var-tags; } +.#{$fa-css-prefix}-book:before { content: $fa-var-book; } +.#{$fa-css-prefix}-bookmark:before { content: $fa-var-bookmark; } +.#{$fa-css-prefix}-print:before { content: $fa-var-print; } +.#{$fa-css-prefix}-camera:before { content: $fa-var-camera; } +.#{$fa-css-prefix}-font:before { content: $fa-var-font; } +.#{$fa-css-prefix}-bold:before { content: $fa-var-bold; } +.#{$fa-css-prefix}-italic:before { content: $fa-var-italic; } +.#{$fa-css-prefix}-text-height:before { content: $fa-var-text-height; } +.#{$fa-css-prefix}-text-width:before { content: $fa-var-text-width; } +.#{$fa-css-prefix}-align-left:before { content: $fa-var-align-left; } +.#{$fa-css-prefix}-align-center:before { content: $fa-var-align-center; } +.#{$fa-css-prefix}-align-right:before { content: $fa-var-align-right; } +.#{$fa-css-prefix}-align-justify:before { content: $fa-var-align-justify; } +.#{$fa-css-prefix}-list:before { content: $fa-var-list; } +.#{$fa-css-prefix}-dedent:before, +.#{$fa-css-prefix}-outdent:before { content: $fa-var-outdent; } +.#{$fa-css-prefix}-indent:before { content: $fa-var-indent; } +.#{$fa-css-prefix}-video-camera:before { content: $fa-var-video-camera; } +.#{$fa-css-prefix}-photo:before, +.#{$fa-css-prefix}-image:before, +.#{$fa-css-prefix}-picture-o:before { content: $fa-var-picture-o; } +.#{$fa-css-prefix}-pencil:before { content: $fa-var-pencil; } +.#{$fa-css-prefix}-map-marker:before { content: $fa-var-map-marker; } +.#{$fa-css-prefix}-adjust:before { content: $fa-var-adjust; } +.#{$fa-css-prefix}-tint:before { content: $fa-var-tint; } +.#{$fa-css-prefix}-edit:before, +.#{$fa-css-prefix}-pencil-square-o:before { content: $fa-var-pencil-square-o; } +.#{$fa-css-prefix}-share-square-o:before { content: $fa-var-share-square-o; } +.#{$fa-css-prefix}-check-square-o:before { content: $fa-var-check-square-o; } +.#{$fa-css-prefix}-arrows:before { content: $fa-var-arrows; } +.#{$fa-css-prefix}-step-backward:before { content: $fa-var-step-backward; } +.#{$fa-css-prefix}-fast-backward:before { content: $fa-var-fast-backward; } +.#{$fa-css-prefix}-backward:before { content: $fa-var-backward; } +.#{$fa-css-prefix}-play:before { content: $fa-var-play; } +.#{$fa-css-prefix}-pause:before { content: $fa-var-pause; } +.#{$fa-css-prefix}-stop:before { content: $fa-var-stop; } +.#{$fa-css-prefix}-forward:before { content: $fa-var-forward; } +.#{$fa-css-prefix}-fast-forward:before { content: $fa-var-fast-forward; } +.#{$fa-css-prefix}-step-forward:before { content: $fa-var-step-forward; } +.#{$fa-css-prefix}-eject:before { content: $fa-var-eject; } +.#{$fa-css-prefix}-chevron-left:before { content: $fa-var-chevron-left; } +.#{$fa-css-prefix}-chevron-right:before { content: $fa-var-chevron-right; } +.#{$fa-css-prefix}-plus-circle:before { content: $fa-var-plus-circle; } +.#{$fa-css-prefix}-minus-circle:before { content: $fa-var-minus-circle; } +.#{$fa-css-prefix}-times-circle:before { content: $fa-var-times-circle; } +.#{$fa-css-prefix}-check-circle:before { content: $fa-var-check-circle; } +.#{$fa-css-prefix}-question-circle:before { content: $fa-var-question-circle; } +.#{$fa-css-prefix}-info-circle:before { content: $fa-var-info-circle; } +.#{$fa-css-prefix}-crosshairs:before { content: $fa-var-crosshairs; } +.#{$fa-css-prefix}-times-circle-o:before { content: $fa-var-times-circle-o; } +.#{$fa-css-prefix}-check-circle-o:before { content: $fa-var-check-circle-o; } +.#{$fa-css-prefix}-ban:before { content: $fa-var-ban; } +.#{$fa-css-prefix}-arrow-left:before { content: $fa-var-arrow-left; } +.#{$fa-css-prefix}-arrow-right:before { content: $fa-var-arrow-right; } +.#{$fa-css-prefix}-arrow-up:before { content: $fa-var-arrow-up; } +.#{$fa-css-prefix}-arrow-down:before { content: $fa-var-arrow-down; } +.#{$fa-css-prefix}-mail-forward:before, +.#{$fa-css-prefix}-share:before { content: $fa-var-share; } +.#{$fa-css-prefix}-expand:before { content: $fa-var-expand; } +.#{$fa-css-prefix}-compress:before { content: $fa-var-compress; } +.#{$fa-css-prefix}-plus:before { content: $fa-var-plus; } +.#{$fa-css-prefix}-minus:before { content: $fa-var-minus; } +.#{$fa-css-prefix}-asterisk:before { content: $fa-var-asterisk; } +.#{$fa-css-prefix}-exclamation-circle:before { content: $fa-var-exclamation-circle; } +.#{$fa-css-prefix}-gift:before { content: $fa-var-gift; } +.#{$fa-css-prefix}-leaf:before { content: $fa-var-leaf; } +.#{$fa-css-prefix}-fire:before { content: $fa-var-fire; } +.#{$fa-css-prefix}-eye:before { content: $fa-var-eye; } +.#{$fa-css-prefix}-eye-slash:before { content: $fa-var-eye-slash; } +.#{$fa-css-prefix}-warning:before, +.#{$fa-css-prefix}-exclamation-triangle:before { content: $fa-var-exclamation-triangle; } +.#{$fa-css-prefix}-plane:before { content: $fa-var-plane; } +.#{$fa-css-prefix}-calendar:before { content: $fa-var-calendar; } +.#{$fa-css-prefix}-random:before { content: $fa-var-random; } +.#{$fa-css-prefix}-comment:before { content: $fa-var-comment; } +.#{$fa-css-prefix}-magnet:before { content: $fa-var-magnet; } +.#{$fa-css-prefix}-chevron-up:before { content: $fa-var-chevron-up; } +.#{$fa-css-prefix}-chevron-down:before { content: $fa-var-chevron-down; } +.#{$fa-css-prefix}-retweet:before { content: $fa-var-retweet; } +.#{$fa-css-prefix}-shopping-cart:before { content: $fa-var-shopping-cart; } +.#{$fa-css-prefix}-folder:before { content: $fa-var-folder; } +.#{$fa-css-prefix}-folder-open:before { content: $fa-var-folder-open; } +.#{$fa-css-prefix}-arrows-v:before { content: $fa-var-arrows-v; } +.#{$fa-css-prefix}-arrows-h:before { content: $fa-var-arrows-h; } +.#{$fa-css-prefix}-bar-chart-o:before, +.#{$fa-css-prefix}-bar-chart:before { content: $fa-var-bar-chart; } +.#{$fa-css-prefix}-twitter-square:before { content: $fa-var-twitter-square; } +.#{$fa-css-prefix}-facebook-square:before { content: $fa-var-facebook-square; } +.#{$fa-css-prefix}-camera-retro:before { content: $fa-var-camera-retro; } +.#{$fa-css-prefix}-key:before { content: $fa-var-key; } +.#{$fa-css-prefix}-gears:before, +.#{$fa-css-prefix}-cogs:before { content: $fa-var-cogs; } +.#{$fa-css-prefix}-comments:before { content: $fa-var-comments; } +.#{$fa-css-prefix}-thumbs-o-up:before { content: $fa-var-thumbs-o-up; } +.#{$fa-css-prefix}-thumbs-o-down:before { content: $fa-var-thumbs-o-down; } +.#{$fa-css-prefix}-star-half:before { content: $fa-var-star-half; } +.#{$fa-css-prefix}-heart-o:before { content: $fa-var-heart-o; } +.#{$fa-css-prefix}-sign-out:before { content: $fa-var-sign-out; } +.#{$fa-css-prefix}-linkedin-square:before { content: $fa-var-linkedin-square; } +.#{$fa-css-prefix}-thumb-tack:before { content: $fa-var-thumb-tack; } +.#{$fa-css-prefix}-external-link:before { content: $fa-var-external-link; } +.#{$fa-css-prefix}-sign-in:before { content: $fa-var-sign-in; } +.#{$fa-css-prefix}-trophy:before { content: $fa-var-trophy; } +.#{$fa-css-prefix}-github-square:before { content: $fa-var-github-square; } +.#{$fa-css-prefix}-upload:before { content: $fa-var-upload; } +.#{$fa-css-prefix}-lemon-o:before { content: $fa-var-lemon-o; } +.#{$fa-css-prefix}-phone:before { content: $fa-var-phone; } +.#{$fa-css-prefix}-square-o:before { content: $fa-var-square-o; } +.#{$fa-css-prefix}-bookmark-o:before { content: $fa-var-bookmark-o; } +.#{$fa-css-prefix}-phone-square:before { content: $fa-var-phone-square; } +.#{$fa-css-prefix}-twitter:before { content: $fa-var-twitter; } +.#{$fa-css-prefix}-facebook-f:before, +.#{$fa-css-prefix}-facebook:before { content: $fa-var-facebook; } +.#{$fa-css-prefix}-github:before { content: $fa-var-github; } +.#{$fa-css-prefix}-unlock:before { content: $fa-var-unlock; } +.#{$fa-css-prefix}-credit-card:before { content: $fa-var-credit-card; } +.#{$fa-css-prefix}-feed:before, +.#{$fa-css-prefix}-rss:before { content: $fa-var-rss; } +.#{$fa-css-prefix}-hdd-o:before { content: $fa-var-hdd-o; } +.#{$fa-css-prefix}-bullhorn:before { content: $fa-var-bullhorn; } +.#{$fa-css-prefix}-bell:before { content: $fa-var-bell; } +.#{$fa-css-prefix}-certificate:before { content: $fa-var-certificate; } +.#{$fa-css-prefix}-hand-o-right:before { content: $fa-var-hand-o-right; } +.#{$fa-css-prefix}-hand-o-left:before { content: $fa-var-hand-o-left; } +.#{$fa-css-prefix}-hand-o-up:before { content: $fa-var-hand-o-up; } +.#{$fa-css-prefix}-hand-o-down:before { content: $fa-var-hand-o-down; } +.#{$fa-css-prefix}-arrow-circle-left:before { content: $fa-var-arrow-circle-left; } +.#{$fa-css-prefix}-arrow-circle-right:before { content: $fa-var-arrow-circle-right; } +.#{$fa-css-prefix}-arrow-circle-up:before { content: $fa-var-arrow-circle-up; } +.#{$fa-css-prefix}-arrow-circle-down:before { content: $fa-var-arrow-circle-down; } +.#{$fa-css-prefix}-globe:before { content: $fa-var-globe; } +.#{$fa-css-prefix}-wrench:before { content: $fa-var-wrench; } +.#{$fa-css-prefix}-tasks:before { content: $fa-var-tasks; } +.#{$fa-css-prefix}-filter:before { content: $fa-var-filter; } +.#{$fa-css-prefix}-briefcase:before { content: $fa-var-briefcase; } +.#{$fa-css-prefix}-arrows-alt:before { content: $fa-var-arrows-alt; } +.#{$fa-css-prefix}-group:before, +.#{$fa-css-prefix}-users:before { content: $fa-var-users; } +.#{$fa-css-prefix}-chain:before, +.#{$fa-css-prefix}-link:before { content: $fa-var-link; } +.#{$fa-css-prefix}-cloud:before { content: $fa-var-cloud; } +.#{$fa-css-prefix}-flask:before { content: $fa-var-flask; } +.#{$fa-css-prefix}-cut:before, +.#{$fa-css-prefix}-scissors:before { content: $fa-var-scissors; } +.#{$fa-css-prefix}-copy:before, +.#{$fa-css-prefix}-files-o:before { content: $fa-var-files-o; } +.#{$fa-css-prefix}-paperclip:before { content: $fa-var-paperclip; } +.#{$fa-css-prefix}-save:before, +.#{$fa-css-prefix}-floppy-o:before { content: $fa-var-floppy-o; } +.#{$fa-css-prefix}-square:before { content: $fa-var-square; } +.#{$fa-css-prefix}-navicon:before, +.#{$fa-css-prefix}-reorder:before, +.#{$fa-css-prefix}-bars:before { content: $fa-var-bars; } +.#{$fa-css-prefix}-list-ul:before { content: $fa-var-list-ul; } +.#{$fa-css-prefix}-list-ol:before { content: $fa-var-list-ol; } +.#{$fa-css-prefix}-strikethrough:before { content: $fa-var-strikethrough; } +.#{$fa-css-prefix}-underline:before { content: $fa-var-underline; } +.#{$fa-css-prefix}-table:before { content: $fa-var-table; } +.#{$fa-css-prefix}-magic:before { content: $fa-var-magic; } +.#{$fa-css-prefix}-truck:before { content: $fa-var-truck; } +.#{$fa-css-prefix}-pinterest:before { content: $fa-var-pinterest; } +.#{$fa-css-prefix}-pinterest-square:before { content: $fa-var-pinterest-square; } +.#{$fa-css-prefix}-google-plus-square:before { content: $fa-var-google-plus-square; } +.#{$fa-css-prefix}-google-plus:before { content: $fa-var-google-plus; } +.#{$fa-css-prefix}-money:before { content: $fa-var-money; } +.#{$fa-css-prefix}-caret-down:before { content: $fa-var-caret-down; } +.#{$fa-css-prefix}-caret-up:before { content: $fa-var-caret-up; } +.#{$fa-css-prefix}-caret-left:before { content: $fa-var-caret-left; } +.#{$fa-css-prefix}-caret-right:before { content: $fa-var-caret-right; } +.#{$fa-css-prefix}-columns:before { content: $fa-var-columns; } +.#{$fa-css-prefix}-unsorted:before, +.#{$fa-css-prefix}-sort:before { content: $fa-var-sort; } +.#{$fa-css-prefix}-sort-down:before, +.#{$fa-css-prefix}-sort-desc:before { content: $fa-var-sort-desc; } +.#{$fa-css-prefix}-sort-up:before, +.#{$fa-css-prefix}-sort-asc:before { content: $fa-var-sort-asc; } +.#{$fa-css-prefix}-envelope:before { content: $fa-var-envelope; } +.#{$fa-css-prefix}-linkedin:before { content: $fa-var-linkedin; } +.#{$fa-css-prefix}-rotate-left:before, +.#{$fa-css-prefix}-undo:before { content: $fa-var-undo; } +.#{$fa-css-prefix}-legal:before, +.#{$fa-css-prefix}-gavel:before { content: $fa-var-gavel; } +.#{$fa-css-prefix}-dashboard:before, +.#{$fa-css-prefix}-tachometer:before { content: $fa-var-tachometer; } +.#{$fa-css-prefix}-comment-o:before { content: $fa-var-comment-o; } +.#{$fa-css-prefix}-comments-o:before { content: $fa-var-comments-o; } +.#{$fa-css-prefix}-flash:before, +.#{$fa-css-prefix}-bolt:before { content: $fa-var-bolt; } +.#{$fa-css-prefix}-sitemap:before { content: $fa-var-sitemap; } +.#{$fa-css-prefix}-umbrella:before { content: $fa-var-umbrella; } +.#{$fa-css-prefix}-paste:before, +.#{$fa-css-prefix}-clipboard:before { content: $fa-var-clipboard; } +.#{$fa-css-prefix}-lightbulb-o:before { content: $fa-var-lightbulb-o; } +.#{$fa-css-prefix}-exchange:before { content: $fa-var-exchange; } +.#{$fa-css-prefix}-cloud-download:before { content: $fa-var-cloud-download; } +.#{$fa-css-prefix}-cloud-upload:before { content: $fa-var-cloud-upload; } +.#{$fa-css-prefix}-user-md:before { content: $fa-var-user-md; } +.#{$fa-css-prefix}-stethoscope:before { content: $fa-var-stethoscope; } +.#{$fa-css-prefix}-suitcase:before { content: $fa-var-suitcase; } +.#{$fa-css-prefix}-bell-o:before { content: $fa-var-bell-o; } +.#{$fa-css-prefix}-coffee:before { content: $fa-var-coffee; } +.#{$fa-css-prefix}-cutlery:before { content: $fa-var-cutlery; } +.#{$fa-css-prefix}-file-text-o:before { content: $fa-var-file-text-o; } +.#{$fa-css-prefix}-building-o:before { content: $fa-var-building-o; } +.#{$fa-css-prefix}-hospital-o:before { content: $fa-var-hospital-o; } +.#{$fa-css-prefix}-ambulance:before { content: $fa-var-ambulance; } +.#{$fa-css-prefix}-medkit:before { content: $fa-var-medkit; } +.#{$fa-css-prefix}-fighter-jet:before { content: $fa-var-fighter-jet; } +.#{$fa-css-prefix}-beer:before { content: $fa-var-beer; } +.#{$fa-css-prefix}-h-square:before { content: $fa-var-h-square; } +.#{$fa-css-prefix}-plus-square:before { content: $fa-var-plus-square; } +.#{$fa-css-prefix}-angle-double-left:before { content: $fa-var-angle-double-left; } +.#{$fa-css-prefix}-angle-double-right:before { content: $fa-var-angle-double-right; } +.#{$fa-css-prefix}-angle-double-up:before { content: $fa-var-angle-double-up; } +.#{$fa-css-prefix}-angle-double-down:before { content: $fa-var-angle-double-down; } +.#{$fa-css-prefix}-angle-left:before { content: $fa-var-angle-left; } +.#{$fa-css-prefix}-angle-right:before { content: $fa-var-angle-right; } +.#{$fa-css-prefix}-angle-up:before { content: $fa-var-angle-up; } +.#{$fa-css-prefix}-angle-down:before { content: $fa-var-angle-down; } +.#{$fa-css-prefix}-desktop:before { content: $fa-var-desktop; } +.#{$fa-css-prefix}-laptop:before { content: $fa-var-laptop; } +.#{$fa-css-prefix}-tablet:before { content: $fa-var-tablet; } +.#{$fa-css-prefix}-mobile-phone:before, +.#{$fa-css-prefix}-mobile:before { content: $fa-var-mobile; } +.#{$fa-css-prefix}-circle-o:before { content: $fa-var-circle-o; } +.#{$fa-css-prefix}-quote-left:before { content: $fa-var-quote-left; } +.#{$fa-css-prefix}-quote-right:before { content: $fa-var-quote-right; } +.#{$fa-css-prefix}-spinner:before { content: $fa-var-spinner; } +.#{$fa-css-prefix}-circle:before { content: $fa-var-circle; } +.#{$fa-css-prefix}-mail-reply:before, +.#{$fa-css-prefix}-reply:before { content: $fa-var-reply; } +.#{$fa-css-prefix}-github-alt:before { content: $fa-var-github-alt; } +.#{$fa-css-prefix}-folder-o:before { content: $fa-var-folder-o; } +.#{$fa-css-prefix}-folder-open-o:before { content: $fa-var-folder-open-o; } +.#{$fa-css-prefix}-smile-o:before { content: $fa-var-smile-o; } +.#{$fa-css-prefix}-frown-o:before { content: $fa-var-frown-o; } +.#{$fa-css-prefix}-meh-o:before { content: $fa-var-meh-o; } +.#{$fa-css-prefix}-gamepad:before { content: $fa-var-gamepad; } +.#{$fa-css-prefix}-keyboard-o:before { content: $fa-var-keyboard-o; } +.#{$fa-css-prefix}-flag-o:before { content: $fa-var-flag-o; } +.#{$fa-css-prefix}-flag-checkered:before { content: $fa-var-flag-checkered; } +.#{$fa-css-prefix}-terminal:before { content: $fa-var-terminal; } +.#{$fa-css-prefix}-code:before { content: $fa-var-code; } +.#{$fa-css-prefix}-mail-reply-all:before, +.#{$fa-css-prefix}-reply-all:before { content: $fa-var-reply-all; } +.#{$fa-css-prefix}-star-half-empty:before, +.#{$fa-css-prefix}-star-half-full:before, +.#{$fa-css-prefix}-star-half-o:before { content: $fa-var-star-half-o; } +.#{$fa-css-prefix}-location-arrow:before { content: $fa-var-location-arrow; } +.#{$fa-css-prefix}-crop:before { content: $fa-var-crop; } +.#{$fa-css-prefix}-code-fork:before { content: $fa-var-code-fork; } +.#{$fa-css-prefix}-unlink:before, +.#{$fa-css-prefix}-chain-broken:before { content: $fa-var-chain-broken; } +.#{$fa-css-prefix}-question:before { content: $fa-var-question; } +.#{$fa-css-prefix}-info:before { content: $fa-var-info; } +.#{$fa-css-prefix}-exclamation:before { content: $fa-var-exclamation; } +.#{$fa-css-prefix}-superscript:before { content: $fa-var-superscript; } +.#{$fa-css-prefix}-subscript:before { content: $fa-var-subscript; } +.#{$fa-css-prefix}-eraser:before { content: $fa-var-eraser; } +.#{$fa-css-prefix}-puzzle-piece:before { content: $fa-var-puzzle-piece; } +.#{$fa-css-prefix}-microphone:before { content: $fa-var-microphone; } +.#{$fa-css-prefix}-microphone-slash:before { content: $fa-var-microphone-slash; } +.#{$fa-css-prefix}-shield:before { content: $fa-var-shield; } +.#{$fa-css-prefix}-calendar-o:before { content: $fa-var-calendar-o; } +.#{$fa-css-prefix}-fire-extinguisher:before { content: $fa-var-fire-extinguisher; } +.#{$fa-css-prefix}-rocket:before { content: $fa-var-rocket; } +.#{$fa-css-prefix}-maxcdn:before { content: $fa-var-maxcdn; } +.#{$fa-css-prefix}-chevron-circle-left:before { content: $fa-var-chevron-circle-left; } +.#{$fa-css-prefix}-chevron-circle-right:before { content: $fa-var-chevron-circle-right; } +.#{$fa-css-prefix}-chevron-circle-up:before { content: $fa-var-chevron-circle-up; } +.#{$fa-css-prefix}-chevron-circle-down:before { content: $fa-var-chevron-circle-down; } +.#{$fa-css-prefix}-html5:before { content: $fa-var-html5; } +.#{$fa-css-prefix}-css3:before { content: $fa-var-css3; } +.#{$fa-css-prefix}-anchor:before { content: $fa-var-anchor; } +.#{$fa-css-prefix}-unlock-alt:before { content: $fa-var-unlock-alt; } +.#{$fa-css-prefix}-bullseye:before { content: $fa-var-bullseye; } +.#{$fa-css-prefix}-ellipsis-h:before { content: $fa-var-ellipsis-h; } +.#{$fa-css-prefix}-ellipsis-v:before { content: $fa-var-ellipsis-v; } +.#{$fa-css-prefix}-rss-square:before { content: $fa-var-rss-square; } +.#{$fa-css-prefix}-play-circle:before { content: $fa-var-play-circle; } +.#{$fa-css-prefix}-ticket:before { content: $fa-var-ticket; } +.#{$fa-css-prefix}-minus-square:before { content: $fa-var-minus-square; } +.#{$fa-css-prefix}-minus-square-o:before { content: $fa-var-minus-square-o; } +.#{$fa-css-prefix}-level-up:before { content: $fa-var-level-up; } +.#{$fa-css-prefix}-level-down:before { content: $fa-var-level-down; } +.#{$fa-css-prefix}-check-square:before { content: $fa-var-check-square; } +.#{$fa-css-prefix}-pencil-square:before { content: $fa-var-pencil-square; } +.#{$fa-css-prefix}-external-link-square:before { content: $fa-var-external-link-square; } +.#{$fa-css-prefix}-share-square:before { content: $fa-var-share-square; } +.#{$fa-css-prefix}-compass:before { content: $fa-var-compass; } +.#{$fa-css-prefix}-toggle-down:before, +.#{$fa-css-prefix}-caret-square-o-down:before { content: $fa-var-caret-square-o-down; } +.#{$fa-css-prefix}-toggle-up:before, +.#{$fa-css-prefix}-caret-square-o-up:before { content: $fa-var-caret-square-o-up; } +.#{$fa-css-prefix}-toggle-right:before, +.#{$fa-css-prefix}-caret-square-o-right:before { content: $fa-var-caret-square-o-right; } +.#{$fa-css-prefix}-euro:before, +.#{$fa-css-prefix}-eur:before { content: $fa-var-eur; } +.#{$fa-css-prefix}-gbp:before { content: $fa-var-gbp; } +.#{$fa-css-prefix}-dollar:before, +.#{$fa-css-prefix}-usd:before { content: $fa-var-usd; } +.#{$fa-css-prefix}-rupee:before, +.#{$fa-css-prefix}-inr:before { content: $fa-var-inr; } +.#{$fa-css-prefix}-cny:before, +.#{$fa-css-prefix}-rmb:before, +.#{$fa-css-prefix}-yen:before, +.#{$fa-css-prefix}-jpy:before { content: $fa-var-jpy; } +.#{$fa-css-prefix}-ruble:before, +.#{$fa-css-prefix}-rouble:before, +.#{$fa-css-prefix}-rub:before { content: $fa-var-rub; } +.#{$fa-css-prefix}-won:before, +.#{$fa-css-prefix}-krw:before { content: $fa-var-krw; } +.#{$fa-css-prefix}-bitcoin:before, +.#{$fa-css-prefix}-btc:before { content: $fa-var-btc; } +.#{$fa-css-prefix}-file:before { content: $fa-var-file; } +.#{$fa-css-prefix}-file-text:before { content: $fa-var-file-text; } +.#{$fa-css-prefix}-sort-alpha-asc:before { content: $fa-var-sort-alpha-asc; } +.#{$fa-css-prefix}-sort-alpha-desc:before { content: $fa-var-sort-alpha-desc; } +.#{$fa-css-prefix}-sort-amount-asc:before { content: $fa-var-sort-amount-asc; } +.#{$fa-css-prefix}-sort-amount-desc:before { content: $fa-var-sort-amount-desc; } +.#{$fa-css-prefix}-sort-numeric-asc:before { content: $fa-var-sort-numeric-asc; } +.#{$fa-css-prefix}-sort-numeric-desc:before { content: $fa-var-sort-numeric-desc; } +.#{$fa-css-prefix}-thumbs-up:before { content: $fa-var-thumbs-up; } +.#{$fa-css-prefix}-thumbs-down:before { content: $fa-var-thumbs-down; } +.#{$fa-css-prefix}-youtube-square:before { content: $fa-var-youtube-square; } +.#{$fa-css-prefix}-youtube:before { content: $fa-var-youtube; } +.#{$fa-css-prefix}-xing:before { content: $fa-var-xing; } +.#{$fa-css-prefix}-xing-square:before { content: $fa-var-xing-square; } +.#{$fa-css-prefix}-youtube-play:before { content: $fa-var-youtube-play; } +.#{$fa-css-prefix}-dropbox:before { content: $fa-var-dropbox; } +.#{$fa-css-prefix}-stack-overflow:before { content: $fa-var-stack-overflow; } +.#{$fa-css-prefix}-instagram:before { content: $fa-var-instagram; } +.#{$fa-css-prefix}-flickr:before { content: $fa-var-flickr; } +.#{$fa-css-prefix}-adn:before { content: $fa-var-adn; } +.#{$fa-css-prefix}-bitbucket:before { content: $fa-var-bitbucket; } +.#{$fa-css-prefix}-bitbucket-square:before { content: $fa-var-bitbucket-square; } +.#{$fa-css-prefix}-tumblr:before { content: $fa-var-tumblr; } +.#{$fa-css-prefix}-tumblr-square:before { content: $fa-var-tumblr-square; } +.#{$fa-css-prefix}-long-arrow-down:before { content: $fa-var-long-arrow-down; } +.#{$fa-css-prefix}-long-arrow-up:before { content: $fa-var-long-arrow-up; } +.#{$fa-css-prefix}-long-arrow-left:before { content: $fa-var-long-arrow-left; } +.#{$fa-css-prefix}-long-arrow-right:before { content: $fa-var-long-arrow-right; } +.#{$fa-css-prefix}-apple:before { content: $fa-var-apple; } +.#{$fa-css-prefix}-windows:before { content: $fa-var-windows; } +.#{$fa-css-prefix}-android:before { content: $fa-var-android; } +.#{$fa-css-prefix}-linux:before { content: $fa-var-linux; } +.#{$fa-css-prefix}-dribbble:before { content: $fa-var-dribbble; } +.#{$fa-css-prefix}-skype:before { content: $fa-var-skype; } +.#{$fa-css-prefix}-foursquare:before { content: $fa-var-foursquare; } +.#{$fa-css-prefix}-trello:before { content: $fa-var-trello; } +.#{$fa-css-prefix}-female:before { content: $fa-var-female; } +.#{$fa-css-prefix}-male:before { content: $fa-var-male; } +.#{$fa-css-prefix}-gittip:before, +.#{$fa-css-prefix}-gratipay:before { content: $fa-var-gratipay; } +.#{$fa-css-prefix}-sun-o:before { content: $fa-var-sun-o; } +.#{$fa-css-prefix}-moon-o:before { content: $fa-var-moon-o; } +.#{$fa-css-prefix}-archive:before { content: $fa-var-archive; } +.#{$fa-css-prefix}-bug:before { content: $fa-var-bug; } +.#{$fa-css-prefix}-vk:before { content: $fa-var-vk; } +.#{$fa-css-prefix}-weibo:before { content: $fa-var-weibo; } +.#{$fa-css-prefix}-renren:before { content: $fa-var-renren; } +.#{$fa-css-prefix}-pagelines:before { content: $fa-var-pagelines; } +.#{$fa-css-prefix}-stack-exchange:before { content: $fa-var-stack-exchange; } +.#{$fa-css-prefix}-arrow-circle-o-right:before { content: $fa-var-arrow-circle-o-right; } +.#{$fa-css-prefix}-arrow-circle-o-left:before { content: $fa-var-arrow-circle-o-left; } +.#{$fa-css-prefix}-toggle-left:before, +.#{$fa-css-prefix}-caret-square-o-left:before { content: $fa-var-caret-square-o-left; } +.#{$fa-css-prefix}-dot-circle-o:before { content: $fa-var-dot-circle-o; } +.#{$fa-css-prefix}-wheelchair:before { content: $fa-var-wheelchair; } +.#{$fa-css-prefix}-vimeo-square:before { content: $fa-var-vimeo-square; } +.#{$fa-css-prefix}-turkish-lira:before, +.#{$fa-css-prefix}-try:before { content: $fa-var-try; } +.#{$fa-css-prefix}-plus-square-o:before { content: $fa-var-plus-square-o; } +.#{$fa-css-prefix}-space-shuttle:before { content: $fa-var-space-shuttle; } +.#{$fa-css-prefix}-slack:before { content: $fa-var-slack; } +.#{$fa-css-prefix}-envelope-square:before { content: $fa-var-envelope-square; } +.#{$fa-css-prefix}-wordpress:before { content: $fa-var-wordpress; } +.#{$fa-css-prefix}-openid:before { content: $fa-var-openid; } +.#{$fa-css-prefix}-institution:before, +.#{$fa-css-prefix}-bank:before, +.#{$fa-css-prefix}-university:before { content: $fa-var-university; } +.#{$fa-css-prefix}-mortar-board:before, +.#{$fa-css-prefix}-graduation-cap:before { content: $fa-var-graduation-cap; } +.#{$fa-css-prefix}-yahoo:before { content: $fa-var-yahoo; } +.#{$fa-css-prefix}-google:before { content: $fa-var-google; } +.#{$fa-css-prefix}-reddit:before { content: $fa-var-reddit; } +.#{$fa-css-prefix}-reddit-square:before { content: $fa-var-reddit-square; } +.#{$fa-css-prefix}-stumbleupon-circle:before { content: $fa-var-stumbleupon-circle; } +.#{$fa-css-prefix}-stumbleupon:before { content: $fa-var-stumbleupon; } +.#{$fa-css-prefix}-delicious:before { content: $fa-var-delicious; } +.#{$fa-css-prefix}-digg:before { content: $fa-var-digg; } +.#{$fa-css-prefix}-pied-piper-pp:before { content: $fa-var-pied-piper-pp; } +.#{$fa-css-prefix}-pied-piper-alt:before { content: $fa-var-pied-piper-alt; } +.#{$fa-css-prefix}-drupal:before { content: $fa-var-drupal; } +.#{$fa-css-prefix}-joomla:before { content: $fa-var-joomla; } +.#{$fa-css-prefix}-language:before { content: $fa-var-language; } +.#{$fa-css-prefix}-fax:before { content: $fa-var-fax; } +.#{$fa-css-prefix}-building:before { content: $fa-var-building; } +.#{$fa-css-prefix}-child:before { content: $fa-var-child; } +.#{$fa-css-prefix}-paw:before { content: $fa-var-paw; } +.#{$fa-css-prefix}-spoon:before { content: $fa-var-spoon; } +.#{$fa-css-prefix}-cube:before { content: $fa-var-cube; } +.#{$fa-css-prefix}-cubes:before { content: $fa-var-cubes; } +.#{$fa-css-prefix}-behance:before { content: $fa-var-behance; } +.#{$fa-css-prefix}-behance-square:before { content: $fa-var-behance-square; } +.#{$fa-css-prefix}-steam:before { content: $fa-var-steam; } +.#{$fa-css-prefix}-steam-square:before { content: $fa-var-steam-square; } +.#{$fa-css-prefix}-recycle:before { content: $fa-var-recycle; } +.#{$fa-css-prefix}-automobile:before, +.#{$fa-css-prefix}-car:before { content: $fa-var-car; } +.#{$fa-css-prefix}-cab:before, +.#{$fa-css-prefix}-taxi:before { content: $fa-var-taxi; } +.#{$fa-css-prefix}-tree:before { content: $fa-var-tree; } +.#{$fa-css-prefix}-spotify:before { content: $fa-var-spotify; } +.#{$fa-css-prefix}-deviantart:before { content: $fa-var-deviantart; } +.#{$fa-css-prefix}-soundcloud:before { content: $fa-var-soundcloud; } +.#{$fa-css-prefix}-database:before { content: $fa-var-database; } +.#{$fa-css-prefix}-file-pdf-o:before { content: $fa-var-file-pdf-o; } +.#{$fa-css-prefix}-file-word-o:before { content: $fa-var-file-word-o; } +.#{$fa-css-prefix}-file-excel-o:before { content: $fa-var-file-excel-o; } +.#{$fa-css-prefix}-file-powerpoint-o:before { content: $fa-var-file-powerpoint-o; } +.#{$fa-css-prefix}-file-photo-o:before, +.#{$fa-css-prefix}-file-picture-o:before, +.#{$fa-css-prefix}-file-image-o:before { content: $fa-var-file-image-o; } +.#{$fa-css-prefix}-file-zip-o:before, +.#{$fa-css-prefix}-file-archive-o:before { content: $fa-var-file-archive-o; } +.#{$fa-css-prefix}-file-sound-o:before, +.#{$fa-css-prefix}-file-audio-o:before { content: $fa-var-file-audio-o; } +.#{$fa-css-prefix}-file-movie-o:before, +.#{$fa-css-prefix}-file-video-o:before { content: $fa-var-file-video-o; } +.#{$fa-css-prefix}-file-code-o:before { content: $fa-var-file-code-o; } +.#{$fa-css-prefix}-vine:before { content: $fa-var-vine; } +.#{$fa-css-prefix}-codepen:before { content: $fa-var-codepen; } +.#{$fa-css-prefix}-jsfiddle:before { content: $fa-var-jsfiddle; } +.#{$fa-css-prefix}-life-bouy:before, +.#{$fa-css-prefix}-life-buoy:before, +.#{$fa-css-prefix}-life-saver:before, +.#{$fa-css-prefix}-support:before, +.#{$fa-css-prefix}-life-ring:before { content: $fa-var-life-ring; } +.#{$fa-css-prefix}-circle-o-notch:before { content: $fa-var-circle-o-notch; } +.#{$fa-css-prefix}-ra:before, +.#{$fa-css-prefix}-resistance:before, +.#{$fa-css-prefix}-rebel:before { content: $fa-var-rebel; } +.#{$fa-css-prefix}-ge:before, +.#{$fa-css-prefix}-empire:before { content: $fa-var-empire; } +.#{$fa-css-prefix}-git-square:before { content: $fa-var-git-square; } +.#{$fa-css-prefix}-git:before { content: $fa-var-git; } +.#{$fa-css-prefix}-y-combinator-square:before, +.#{$fa-css-prefix}-yc-square:before, +.#{$fa-css-prefix}-hacker-news:before { content: $fa-var-hacker-news; } +.#{$fa-css-prefix}-tencent-weibo:before { content: $fa-var-tencent-weibo; } +.#{$fa-css-prefix}-qq:before { content: $fa-var-qq; } +.#{$fa-css-prefix}-wechat:before, +.#{$fa-css-prefix}-weixin:before { content: $fa-var-weixin; } +.#{$fa-css-prefix}-send:before, +.#{$fa-css-prefix}-paper-plane:before { content: $fa-var-paper-plane; } +.#{$fa-css-prefix}-send-o:before, +.#{$fa-css-prefix}-paper-plane-o:before { content: $fa-var-paper-plane-o; } +.#{$fa-css-prefix}-history:before { content: $fa-var-history; } +.#{$fa-css-prefix}-circle-thin:before { content: $fa-var-circle-thin; } +.#{$fa-css-prefix}-header:before { content: $fa-var-header; } +.#{$fa-css-prefix}-paragraph:before { content: $fa-var-paragraph; } +.#{$fa-css-prefix}-sliders:before { content: $fa-var-sliders; } +.#{$fa-css-prefix}-share-alt:before { content: $fa-var-share-alt; } +.#{$fa-css-prefix}-share-alt-square:before { content: $fa-var-share-alt-square; } +.#{$fa-css-prefix}-bomb:before { content: $fa-var-bomb; } +.#{$fa-css-prefix}-soccer-ball-o:before, +.#{$fa-css-prefix}-futbol-o:before { content: $fa-var-futbol-o; } +.#{$fa-css-prefix}-tty:before { content: $fa-var-tty; } +.#{$fa-css-prefix}-binoculars:before { content: $fa-var-binoculars; } +.#{$fa-css-prefix}-plug:before { content: $fa-var-plug; } +.#{$fa-css-prefix}-slideshare:before { content: $fa-var-slideshare; } +.#{$fa-css-prefix}-twitch:before { content: $fa-var-twitch; } +.#{$fa-css-prefix}-yelp:before { content: $fa-var-yelp; } +.#{$fa-css-prefix}-newspaper-o:before { content: $fa-var-newspaper-o; } +.#{$fa-css-prefix}-wifi:before { content: $fa-var-wifi; } +.#{$fa-css-prefix}-calculator:before { content: $fa-var-calculator; } +.#{$fa-css-prefix}-paypal:before { content: $fa-var-paypal; } +.#{$fa-css-prefix}-google-wallet:before { content: $fa-var-google-wallet; } +.#{$fa-css-prefix}-cc-visa:before { content: $fa-var-cc-visa; } +.#{$fa-css-prefix}-cc-mastercard:before { content: $fa-var-cc-mastercard; } +.#{$fa-css-prefix}-cc-discover:before { content: $fa-var-cc-discover; } +.#{$fa-css-prefix}-cc-amex:before { content: $fa-var-cc-amex; } +.#{$fa-css-prefix}-cc-paypal:before { content: $fa-var-cc-paypal; } +.#{$fa-css-prefix}-cc-stripe:before { content: $fa-var-cc-stripe; } +.#{$fa-css-prefix}-bell-slash:before { content: $fa-var-bell-slash; } +.#{$fa-css-prefix}-bell-slash-o:before { content: $fa-var-bell-slash-o; } +.#{$fa-css-prefix}-trash:before { content: $fa-var-trash; } +.#{$fa-css-prefix}-copyright:before { content: $fa-var-copyright; } +.#{$fa-css-prefix}-at:before { content: $fa-var-at; } +.#{$fa-css-prefix}-eyedropper:before { content: $fa-var-eyedropper; } +.#{$fa-css-prefix}-paint-brush:before { content: $fa-var-paint-brush; } +.#{$fa-css-prefix}-birthday-cake:before { content: $fa-var-birthday-cake; } +.#{$fa-css-prefix}-area-chart:before { content: $fa-var-area-chart; } +.#{$fa-css-prefix}-pie-chart:before { content: $fa-var-pie-chart; } +.#{$fa-css-prefix}-line-chart:before { content: $fa-var-line-chart; } +.#{$fa-css-prefix}-lastfm:before { content: $fa-var-lastfm; } +.#{$fa-css-prefix}-lastfm-square:before { content: $fa-var-lastfm-square; } +.#{$fa-css-prefix}-toggle-off:before { content: $fa-var-toggle-off; } +.#{$fa-css-prefix}-toggle-on:before { content: $fa-var-toggle-on; } +.#{$fa-css-prefix}-bicycle:before { content: $fa-var-bicycle; } +.#{$fa-css-prefix}-bus:before { content: $fa-var-bus; } +.#{$fa-css-prefix}-ioxhost:before { content: $fa-var-ioxhost; } +.#{$fa-css-prefix}-angellist:before { content: $fa-var-angellist; } +.#{$fa-css-prefix}-cc:before { content: $fa-var-cc; } +.#{$fa-css-prefix}-shekel:before, +.#{$fa-css-prefix}-sheqel:before, +.#{$fa-css-prefix}-ils:before { content: $fa-var-ils; } +.#{$fa-css-prefix}-meanpath:before { content: $fa-var-meanpath; } +.#{$fa-css-prefix}-buysellads:before { content: $fa-var-buysellads; } +.#{$fa-css-prefix}-connectdevelop:before { content: $fa-var-connectdevelop; } +.#{$fa-css-prefix}-dashcube:before { content: $fa-var-dashcube; } +.#{$fa-css-prefix}-forumbee:before { content: $fa-var-forumbee; } +.#{$fa-css-prefix}-leanpub:before { content: $fa-var-leanpub; } +.#{$fa-css-prefix}-sellsy:before { content: $fa-var-sellsy; } +.#{$fa-css-prefix}-shirtsinbulk:before { content: $fa-var-shirtsinbulk; } +.#{$fa-css-prefix}-simplybuilt:before { content: $fa-var-simplybuilt; } +.#{$fa-css-prefix}-skyatlas:before { content: $fa-var-skyatlas; } +.#{$fa-css-prefix}-cart-plus:before { content: $fa-var-cart-plus; } +.#{$fa-css-prefix}-cart-arrow-down:before { content: $fa-var-cart-arrow-down; } +.#{$fa-css-prefix}-diamond:before { content: $fa-var-diamond; } +.#{$fa-css-prefix}-ship:before { content: $fa-var-ship; } +.#{$fa-css-prefix}-user-secret:before { content: $fa-var-user-secret; } +.#{$fa-css-prefix}-motorcycle:before { content: $fa-var-motorcycle; } +.#{$fa-css-prefix}-street-view:before { content: $fa-var-street-view; } +.#{$fa-css-prefix}-heartbeat:before { content: $fa-var-heartbeat; } +.#{$fa-css-prefix}-venus:before { content: $fa-var-venus; } +.#{$fa-css-prefix}-mars:before { content: $fa-var-mars; } +.#{$fa-css-prefix}-mercury:before { content: $fa-var-mercury; } +.#{$fa-css-prefix}-intersex:before, +.#{$fa-css-prefix}-transgender:before { content: $fa-var-transgender; } +.#{$fa-css-prefix}-transgender-alt:before { content: $fa-var-transgender-alt; } +.#{$fa-css-prefix}-venus-double:before { content: $fa-var-venus-double; } +.#{$fa-css-prefix}-mars-double:before { content: $fa-var-mars-double; } +.#{$fa-css-prefix}-venus-mars:before { content: $fa-var-venus-mars; } +.#{$fa-css-prefix}-mars-stroke:before { content: $fa-var-mars-stroke; } +.#{$fa-css-prefix}-mars-stroke-v:before { content: $fa-var-mars-stroke-v; } +.#{$fa-css-prefix}-mars-stroke-h:before { content: $fa-var-mars-stroke-h; } +.#{$fa-css-prefix}-neuter:before { content: $fa-var-neuter; } +.#{$fa-css-prefix}-genderless:before { content: $fa-var-genderless; } +.#{$fa-css-prefix}-facebook-official:before { content: $fa-var-facebook-official; } +.#{$fa-css-prefix}-pinterest-p:before { content: $fa-var-pinterest-p; } +.#{$fa-css-prefix}-whatsapp:before { content: $fa-var-whatsapp; } +.#{$fa-css-prefix}-server:before { content: $fa-var-server; } +.#{$fa-css-prefix}-user-plus:before { content: $fa-var-user-plus; } +.#{$fa-css-prefix}-user-times:before { content: $fa-var-user-times; } +.#{$fa-css-prefix}-hotel:before, +.#{$fa-css-prefix}-bed:before { content: $fa-var-bed; } +.#{$fa-css-prefix}-viacoin:before { content: $fa-var-viacoin; } +.#{$fa-css-prefix}-train:before { content: $fa-var-train; } +.#{$fa-css-prefix}-subway:before { content: $fa-var-subway; } +.#{$fa-css-prefix}-medium:before { content: $fa-var-medium; } +.#{$fa-css-prefix}-yc:before, +.#{$fa-css-prefix}-y-combinator:before { content: $fa-var-y-combinator; } +.#{$fa-css-prefix}-optin-monster:before { content: $fa-var-optin-monster; } +.#{$fa-css-prefix}-opencart:before { content: $fa-var-opencart; } +.#{$fa-css-prefix}-expeditedssl:before { content: $fa-var-expeditedssl; } +.#{$fa-css-prefix}-battery-4:before, +.#{$fa-css-prefix}-battery-full:before { content: $fa-var-battery-full; } +.#{$fa-css-prefix}-battery-3:before, +.#{$fa-css-prefix}-battery-three-quarters:before { content: $fa-var-battery-three-quarters; } +.#{$fa-css-prefix}-battery-2:before, +.#{$fa-css-prefix}-battery-half:before { content: $fa-var-battery-half; } +.#{$fa-css-prefix}-battery-1:before, +.#{$fa-css-prefix}-battery-quarter:before { content: $fa-var-battery-quarter; } +.#{$fa-css-prefix}-battery-0:before, +.#{$fa-css-prefix}-battery-empty:before { content: $fa-var-battery-empty; } +.#{$fa-css-prefix}-mouse-pointer:before { content: $fa-var-mouse-pointer; } +.#{$fa-css-prefix}-i-cursor:before { content: $fa-var-i-cursor; } +.#{$fa-css-prefix}-object-group:before { content: $fa-var-object-group; } +.#{$fa-css-prefix}-object-ungroup:before { content: $fa-var-object-ungroup; } +.#{$fa-css-prefix}-sticky-note:before { content: $fa-var-sticky-note; } +.#{$fa-css-prefix}-sticky-note-o:before { content: $fa-var-sticky-note-o; } +.#{$fa-css-prefix}-cc-jcb:before { content: $fa-var-cc-jcb; } +.#{$fa-css-prefix}-cc-diners-club:before { content: $fa-var-cc-diners-club; } +.#{$fa-css-prefix}-clone:before { content: $fa-var-clone; } +.#{$fa-css-prefix}-balance-scale:before { content: $fa-var-balance-scale; } +.#{$fa-css-prefix}-hourglass-o:before { content: $fa-var-hourglass-o; } +.#{$fa-css-prefix}-hourglass-1:before, +.#{$fa-css-prefix}-hourglass-start:before { content: $fa-var-hourglass-start; } +.#{$fa-css-prefix}-hourglass-2:before, +.#{$fa-css-prefix}-hourglass-half:before { content: $fa-var-hourglass-half; } +.#{$fa-css-prefix}-hourglass-3:before, +.#{$fa-css-prefix}-hourglass-end:before { content: $fa-var-hourglass-end; } +.#{$fa-css-prefix}-hourglass:before { content: $fa-var-hourglass; } +.#{$fa-css-prefix}-hand-grab-o:before, +.#{$fa-css-prefix}-hand-rock-o:before { content: $fa-var-hand-rock-o; } +.#{$fa-css-prefix}-hand-stop-o:before, +.#{$fa-css-prefix}-hand-paper-o:before { content: $fa-var-hand-paper-o; } +.#{$fa-css-prefix}-hand-scissors-o:before { content: $fa-var-hand-scissors-o; } +.#{$fa-css-prefix}-hand-lizard-o:before { content: $fa-var-hand-lizard-o; } +.#{$fa-css-prefix}-hand-spock-o:before { content: $fa-var-hand-spock-o; } +.#{$fa-css-prefix}-hand-pointer-o:before { content: $fa-var-hand-pointer-o; } +.#{$fa-css-prefix}-hand-peace-o:before { content: $fa-var-hand-peace-o; } +.#{$fa-css-prefix}-trademark:before { content: $fa-var-trademark; } +.#{$fa-css-prefix}-registered:before { content: $fa-var-registered; } +.#{$fa-css-prefix}-creative-commons:before { content: $fa-var-creative-commons; } +.#{$fa-css-prefix}-gg:before { content: $fa-var-gg; } +.#{$fa-css-prefix}-gg-circle:before { content: $fa-var-gg-circle; } +.#{$fa-css-prefix}-tripadvisor:before { content: $fa-var-tripadvisor; } +.#{$fa-css-prefix}-odnoklassniki:before { content: $fa-var-odnoklassniki; } +.#{$fa-css-prefix}-odnoklassniki-square:before { content: $fa-var-odnoklassniki-square; } +.#{$fa-css-prefix}-get-pocket:before { content: $fa-var-get-pocket; } +.#{$fa-css-prefix}-wikipedia-w:before { content: $fa-var-wikipedia-w; } +.#{$fa-css-prefix}-safari:before { content: $fa-var-safari; } +.#{$fa-css-prefix}-chrome:before { content: $fa-var-chrome; } +.#{$fa-css-prefix}-firefox:before { content: $fa-var-firefox; } +.#{$fa-css-prefix}-opera:before { content: $fa-var-opera; } +.#{$fa-css-prefix}-internet-explorer:before { content: $fa-var-internet-explorer; } +.#{$fa-css-prefix}-tv:before, +.#{$fa-css-prefix}-television:before { content: $fa-var-television; } +.#{$fa-css-prefix}-contao:before { content: $fa-var-contao; } +.#{$fa-css-prefix}-500px:before { content: $fa-var-500px; } +.#{$fa-css-prefix}-amazon:before { content: $fa-var-amazon; } +.#{$fa-css-prefix}-calendar-plus-o:before { content: $fa-var-calendar-plus-o; } +.#{$fa-css-prefix}-calendar-minus-o:before { content: $fa-var-calendar-minus-o; } +.#{$fa-css-prefix}-calendar-times-o:before { content: $fa-var-calendar-times-o; } +.#{$fa-css-prefix}-calendar-check-o:before { content: $fa-var-calendar-check-o; } +.#{$fa-css-prefix}-industry:before { content: $fa-var-industry; } +.#{$fa-css-prefix}-map-pin:before { content: $fa-var-map-pin; } +.#{$fa-css-prefix}-map-signs:before { content: $fa-var-map-signs; } +.#{$fa-css-prefix}-map-o:before { content: $fa-var-map-o; } +.#{$fa-css-prefix}-map:before { content: $fa-var-map; } +.#{$fa-css-prefix}-commenting:before { content: $fa-var-commenting; } +.#{$fa-css-prefix}-commenting-o:before { content: $fa-var-commenting-o; } +.#{$fa-css-prefix}-houzz:before { content: $fa-var-houzz; } +.#{$fa-css-prefix}-vimeo:before { content: $fa-var-vimeo; } +.#{$fa-css-prefix}-black-tie:before { content: $fa-var-black-tie; } +.#{$fa-css-prefix}-fonticons:before { content: $fa-var-fonticons; } +.#{$fa-css-prefix}-reddit-alien:before { content: $fa-var-reddit-alien; } +.#{$fa-css-prefix}-edge:before { content: $fa-var-edge; } +.#{$fa-css-prefix}-credit-card-alt:before { content: $fa-var-credit-card-alt; } +.#{$fa-css-prefix}-codiepie:before { content: $fa-var-codiepie; } +.#{$fa-css-prefix}-modx:before { content: $fa-var-modx; } +.#{$fa-css-prefix}-fort-awesome:before { content: $fa-var-fort-awesome; } +.#{$fa-css-prefix}-usb:before { content: $fa-var-usb; } +.#{$fa-css-prefix}-product-hunt:before { content: $fa-var-product-hunt; } +.#{$fa-css-prefix}-mixcloud:before { content: $fa-var-mixcloud; } +.#{$fa-css-prefix}-scribd:before { content: $fa-var-scribd; } +.#{$fa-css-prefix}-pause-circle:before { content: $fa-var-pause-circle; } +.#{$fa-css-prefix}-pause-circle-o:before { content: $fa-var-pause-circle-o; } +.#{$fa-css-prefix}-stop-circle:before { content: $fa-var-stop-circle; } +.#{$fa-css-prefix}-stop-circle-o:before { content: $fa-var-stop-circle-o; } +.#{$fa-css-prefix}-shopping-bag:before { content: $fa-var-shopping-bag; } +.#{$fa-css-prefix}-shopping-basket:before { content: $fa-var-shopping-basket; } +.#{$fa-css-prefix}-hashtag:before { content: $fa-var-hashtag; } +.#{$fa-css-prefix}-bluetooth:before { content: $fa-var-bluetooth; } +.#{$fa-css-prefix}-bluetooth-b:before { content: $fa-var-bluetooth-b; } +.#{$fa-css-prefix}-percent:before { content: $fa-var-percent; } +.#{$fa-css-prefix}-gitlab:before { content: $fa-var-gitlab; } +.#{$fa-css-prefix}-wpbeginner:before { content: $fa-var-wpbeginner; } +.#{$fa-css-prefix}-wpforms:before { content: $fa-var-wpforms; } +.#{$fa-css-prefix}-envira:before { content: $fa-var-envira; } +.#{$fa-css-prefix}-universal-access:before { content: $fa-var-universal-access; } +.#{$fa-css-prefix}-wheelchair-alt:before { content: $fa-var-wheelchair-alt; } +.#{$fa-css-prefix}-question-circle-o:before { content: $fa-var-question-circle-o; } +.#{$fa-css-prefix}-blind:before { content: $fa-var-blind; } +.#{$fa-css-prefix}-audio-description:before { content: $fa-var-audio-description; } +.#{$fa-css-prefix}-volume-control-phone:before { content: $fa-var-volume-control-phone; } +.#{$fa-css-prefix}-braille:before { content: $fa-var-braille; } +.#{$fa-css-prefix}-assistive-listening-systems:before { content: $fa-var-assistive-listening-systems; } +.#{$fa-css-prefix}-asl-interpreting:before, +.#{$fa-css-prefix}-american-sign-language-interpreting:before { content: $fa-var-american-sign-language-interpreting; } +.#{$fa-css-prefix}-deafness:before, +.#{$fa-css-prefix}-hard-of-hearing:before, +.#{$fa-css-prefix}-deaf:before { content: $fa-var-deaf; } +.#{$fa-css-prefix}-glide:before { content: $fa-var-glide; } +.#{$fa-css-prefix}-glide-g:before { content: $fa-var-glide-g; } +.#{$fa-css-prefix}-signing:before, +.#{$fa-css-prefix}-sign-language:before { content: $fa-var-sign-language; } +.#{$fa-css-prefix}-low-vision:before { content: $fa-var-low-vision; } +.#{$fa-css-prefix}-viadeo:before { content: $fa-var-viadeo; } +.#{$fa-css-prefix}-viadeo-square:before { content: $fa-var-viadeo-square; } +.#{$fa-css-prefix}-snapchat:before { content: $fa-var-snapchat; } +.#{$fa-css-prefix}-snapchat-ghost:before { content: $fa-var-snapchat-ghost; } +.#{$fa-css-prefix}-snapchat-square:before { content: $fa-var-snapchat-square; } +.#{$fa-css-prefix}-pied-piper:before { content: $fa-var-pied-piper; } +.#{$fa-css-prefix}-first-order:before { content: $fa-var-first-order; } +.#{$fa-css-prefix}-yoast:before { content: $fa-var-yoast; } +.#{$fa-css-prefix}-themeisle:before { content: $fa-var-themeisle; } +.#{$fa-css-prefix}-google-plus-circle:before, +.#{$fa-css-prefix}-google-plus-official:before { content: $fa-var-google-plus-official; } +.#{$fa-css-prefix}-fa:before, +.#{$fa-css-prefix}-font-awesome:before { content: $fa-var-font-awesome; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_larger.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_larger.scss new file mode 100644 index 0000000000..41e9a8184a --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_larger.scss @@ -0,0 +1,13 @@ +// Icon Sizes +// ------------------------- + +/* makes the font 33% larger relative to the icon container */ +.#{$fa-css-prefix}-lg { + font-size: (4em / 3); + line-height: (3em / 4); + vertical-align: -15%; +} +.#{$fa-css-prefix}-2x { font-size: 2em; } +.#{$fa-css-prefix}-3x { font-size: 3em; } +.#{$fa-css-prefix}-4x { font-size: 4em; } +.#{$fa-css-prefix}-5x { font-size: 5em; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_list.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_list.scss new file mode 100644 index 0000000000..7d1e4d54d6 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_list.scss @@ -0,0 +1,19 @@ +// List Icons +// ------------------------- + +.#{$fa-css-prefix}-ul { + padding-left: 0; + margin-left: $fa-li-width; + list-style-type: none; + > li { position: relative; } +} +.#{$fa-css-prefix}-li { + position: absolute; + left: -$fa-li-width; + width: $fa-li-width; + top: (2em / 14); + text-align: center; + &.#{$fa-css-prefix}-lg { + left: -$fa-li-width + (4em / 14); + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_mixins.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_mixins.scss new file mode 100644 index 0000000000..c3bbd5745d --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_mixins.scss @@ -0,0 +1,60 @@ +// Mixins +// -------------------------- + +@mixin fa-icon() { + display: inline-block; + font: normal normal normal #{$fa-font-size-base}/#{$fa-line-height-base} FontAwesome; // shortening font declaration + font-size: inherit; // can't have font-size inherit on line above, so need to override + text-rendering: auto; // optimizelegibility throws things off #1094 + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + +} + +@mixin fa-icon-rotate($degrees, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation})"; + -webkit-transform: rotate($degrees); + -ms-transform: rotate($degrees); + transform: rotate($degrees); +} + +@mixin fa-icon-flip($horiz, $vert, $rotation) { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=#{$rotation}, mirror=1)"; + -webkit-transform: scale($horiz, $vert); + -ms-transform: scale($horiz, $vert); + transform: scale($horiz, $vert); +} + + +// Only display content to screen readers. A la Bootstrap 4. +// +// See: http://a11yproject.com/posts/how-to-hide-content/ + +@mixin sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0,0,0,0); + border: 0; +} + +// Use in conjunction with .sr-only to only display content when it's focused. +// +// Useful for "Skip to main content" links; see http://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1 +// +// Credit: HTML5 Boilerplate + +@mixin sr-only-focusable { + &:active, + &:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; + } +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_path.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_path.scss new file mode 100644 index 0000000000..bb457c23a8 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_path.scss @@ -0,0 +1,15 @@ +/* FONT PATH + * -------------------------- */ + +@font-face { + font-family: 'FontAwesome'; + src: url('#{$fa-font-path}/fontawesome-webfont.eot?v=#{$fa-version}'); + src: url('#{$fa-font-path}/fontawesome-webfont.eot?#iefix&v=#{$fa-version}') format('embedded-opentype'), + url('#{$fa-font-path}/fontawesome-webfont.woff2?v=#{$fa-version}') format('woff2'), + url('#{$fa-font-path}/fontawesome-webfont.woff?v=#{$fa-version}') format('woff'), + url('#{$fa-font-path}/fontawesome-webfont.ttf?v=#{$fa-version}') format('truetype'), + url('#{$fa-font-path}/fontawesome-webfont.svg?v=#{$fa-version}#fontawesomeregular') format('svg'); +// src: url('#{$fa-font-path}/FontAwesome.otf') format('opentype'); // used when developing fonts + font-weight: normal; + font-style: normal; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_rotated-flipped.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_rotated-flipped.scss new file mode 100644 index 0000000000..a3558fd09c --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_rotated-flipped.scss @@ -0,0 +1,20 @@ +// Rotated & Flipped Icons +// ------------------------- + +.#{$fa-css-prefix}-rotate-90 { @include fa-icon-rotate(90deg, 1); } +.#{$fa-css-prefix}-rotate-180 { @include fa-icon-rotate(180deg, 2); } +.#{$fa-css-prefix}-rotate-270 { @include fa-icon-rotate(270deg, 3); } + +.#{$fa-css-prefix}-flip-horizontal { @include fa-icon-flip(-1, 1, 0); } +.#{$fa-css-prefix}-flip-vertical { @include fa-icon-flip(1, -1, 2); } + +// Hook for IE8-9 +// ------------------------- + +:root .#{$fa-css-prefix}-rotate-90, +:root .#{$fa-css-prefix}-rotate-180, +:root .#{$fa-css-prefix}-rotate-270, +:root .#{$fa-css-prefix}-flip-horizontal, +:root .#{$fa-css-prefix}-flip-vertical { + filter: none; +} diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_screen-reader.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_screen-reader.scss new file mode 100644 index 0000000000..637426f0da --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_screen-reader.scss @@ -0,0 +1,5 @@ +// Screen Readers +// ------------------------- + +.sr-only { @include sr-only(); } +.sr-only-focusable { @include sr-only-focusable(); } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_stacked.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_stacked.scss new file mode 100644 index 0000000000..aef7403660 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_stacked.scss @@ -0,0 +1,20 @@ +// Stacked Icons +// ------------------------- + +.#{$fa-css-prefix}-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.#{$fa-css-prefix}-stack-1x, .#{$fa-css-prefix}-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.#{$fa-css-prefix}-stack-1x { line-height: inherit; } +.#{$fa-css-prefix}-stack-2x { font-size: 2em; } +.#{$fa-css-prefix}-inverse { color: $fa-inverse; } diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/_variables.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/_variables.scss new file mode 100644 index 0000000000..a5a89ef97b --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/_variables.scss @@ -0,0 +1,744 @@ +// Variables +// -------------------------- + +$fa-font-path: "../fonts" !default; +$fa-font-size-base: 14px !default; +$fa-line-height-base: 1 !default; +//$fa-font-path: "//netdna.bootstrapcdn.com/font-awesome/4.6.3/fonts" !default; // for referencing Bootstrap CDN font files directly +$fa-css-prefix: fa !default; +$fa-version: "4.6.3" !default; +$fa-border-color: #eee !default; +$fa-inverse: #fff !default; +$fa-li-width: (30em / 14) !default; + +$fa-var-500px: "\f26e"; +$fa-var-adjust: "\f042"; +$fa-var-adn: "\f170"; +$fa-var-align-center: "\f037"; +$fa-var-align-justify: "\f039"; +$fa-var-align-left: "\f036"; +$fa-var-align-right: "\f038"; +$fa-var-amazon: "\f270"; +$fa-var-ambulance: "\f0f9"; +$fa-var-american-sign-language-interpreting: "\f2a3"; +$fa-var-anchor: "\f13d"; +$fa-var-android: "\f17b"; +$fa-var-angellist: "\f209"; +$fa-var-angle-double-down: "\f103"; +$fa-var-angle-double-left: "\f100"; +$fa-var-angle-double-right: "\f101"; +$fa-var-angle-double-up: "\f102"; +$fa-var-angle-down: "\f107"; +$fa-var-angle-left: "\f104"; +$fa-var-angle-right: "\f105"; +$fa-var-angle-up: "\f106"; +$fa-var-apple: "\f179"; +$fa-var-archive: "\f187"; +$fa-var-area-chart: "\f1fe"; +$fa-var-arrow-circle-down: "\f0ab"; +$fa-var-arrow-circle-left: "\f0a8"; +$fa-var-arrow-circle-o-down: "\f01a"; +$fa-var-arrow-circle-o-left: "\f190"; +$fa-var-arrow-circle-o-right: "\f18e"; +$fa-var-arrow-circle-o-up: "\f01b"; +$fa-var-arrow-circle-right: "\f0a9"; +$fa-var-arrow-circle-up: "\f0aa"; +$fa-var-arrow-down: "\f063"; +$fa-var-arrow-left: "\f060"; +$fa-var-arrow-right: "\f061"; +$fa-var-arrow-up: "\f062"; +$fa-var-arrows: "\f047"; +$fa-var-arrows-alt: "\f0b2"; +$fa-var-arrows-h: "\f07e"; +$fa-var-arrows-v: "\f07d"; +$fa-var-asl-interpreting: "\f2a3"; +$fa-var-assistive-listening-systems: "\f2a2"; +$fa-var-asterisk: "\f069"; +$fa-var-at: "\f1fa"; +$fa-var-audio-description: "\f29e"; +$fa-var-automobile: "\f1b9"; +$fa-var-backward: "\f04a"; +$fa-var-balance-scale: "\f24e"; +$fa-var-ban: "\f05e"; +$fa-var-bank: "\f19c"; +$fa-var-bar-chart: "\f080"; +$fa-var-bar-chart-o: "\f080"; +$fa-var-barcode: "\f02a"; +$fa-var-bars: "\f0c9"; +$fa-var-battery-0: "\f244"; +$fa-var-battery-1: "\f243"; +$fa-var-battery-2: "\f242"; +$fa-var-battery-3: "\f241"; +$fa-var-battery-4: "\f240"; +$fa-var-battery-empty: "\f244"; +$fa-var-battery-full: "\f240"; +$fa-var-battery-half: "\f242"; +$fa-var-battery-quarter: "\f243"; +$fa-var-battery-three-quarters: "\f241"; +$fa-var-bed: "\f236"; +$fa-var-beer: "\f0fc"; +$fa-var-behance: "\f1b4"; +$fa-var-behance-square: "\f1b5"; +$fa-var-bell: "\f0f3"; +$fa-var-bell-o: "\f0a2"; +$fa-var-bell-slash: "\f1f6"; +$fa-var-bell-slash-o: "\f1f7"; +$fa-var-bicycle: "\f206"; +$fa-var-binoculars: "\f1e5"; +$fa-var-birthday-cake: "\f1fd"; +$fa-var-bitbucket: "\f171"; +$fa-var-bitbucket-square: "\f172"; +$fa-var-bitcoin: "\f15a"; +$fa-var-black-tie: "\f27e"; +$fa-var-blind: "\f29d"; +$fa-var-bluetooth: "\f293"; +$fa-var-bluetooth-b: "\f294"; +$fa-var-bold: "\f032"; +$fa-var-bolt: "\f0e7"; +$fa-var-bomb: "\f1e2"; +$fa-var-book: "\f02d"; +$fa-var-bookmark: "\f02e"; +$fa-var-bookmark-o: "\f097"; +$fa-var-braille: "\f2a1"; +$fa-var-briefcase: "\f0b1"; +$fa-var-btc: "\f15a"; +$fa-var-bug: "\f188"; +$fa-var-building: "\f1ad"; +$fa-var-building-o: "\f0f7"; +$fa-var-bullhorn: "\f0a1"; +$fa-var-bullseye: "\f140"; +$fa-var-bus: "\f207"; +$fa-var-buysellads: "\f20d"; +$fa-var-cab: "\f1ba"; +$fa-var-calculator: "\f1ec"; +$fa-var-calendar: "\f073"; +$fa-var-calendar-check-o: "\f274"; +$fa-var-calendar-minus-o: "\f272"; +$fa-var-calendar-o: "\f133"; +$fa-var-calendar-plus-o: "\f271"; +$fa-var-calendar-times-o: "\f273"; +$fa-var-camera: "\f030"; +$fa-var-camera-retro: "\f083"; +$fa-var-car: "\f1b9"; +$fa-var-caret-down: "\f0d7"; +$fa-var-caret-left: "\f0d9"; +$fa-var-caret-right: "\f0da"; +$fa-var-caret-square-o-down: "\f150"; +$fa-var-caret-square-o-left: "\f191"; +$fa-var-caret-square-o-right: "\f152"; +$fa-var-caret-square-o-up: "\f151"; +$fa-var-caret-up: "\f0d8"; +$fa-var-cart-arrow-down: "\f218"; +$fa-var-cart-plus: "\f217"; +$fa-var-cc: "\f20a"; +$fa-var-cc-amex: "\f1f3"; +$fa-var-cc-diners-club: "\f24c"; +$fa-var-cc-discover: "\f1f2"; +$fa-var-cc-jcb: "\f24b"; +$fa-var-cc-mastercard: "\f1f1"; +$fa-var-cc-paypal: "\f1f4"; +$fa-var-cc-stripe: "\f1f5"; +$fa-var-cc-visa: "\f1f0"; +$fa-var-certificate: "\f0a3"; +$fa-var-chain: "\f0c1"; +$fa-var-chain-broken: "\f127"; +$fa-var-check: "\f00c"; +$fa-var-check-circle: "\f058"; +$fa-var-check-circle-o: "\f05d"; +$fa-var-check-square: "\f14a"; +$fa-var-check-square-o: "\f046"; +$fa-var-chevron-circle-down: "\f13a"; +$fa-var-chevron-circle-left: "\f137"; +$fa-var-chevron-circle-right: "\f138"; +$fa-var-chevron-circle-up: "\f139"; +$fa-var-chevron-down: "\f078"; +$fa-var-chevron-left: "\f053"; +$fa-var-chevron-right: "\f054"; +$fa-var-chevron-up: "\f077"; +$fa-var-child: "\f1ae"; +$fa-var-chrome: "\f268"; +$fa-var-circle: "\f111"; +$fa-var-circle-o: "\f10c"; +$fa-var-circle-o-notch: "\f1ce"; +$fa-var-circle-thin: "\f1db"; +$fa-var-clipboard: "\f0ea"; +$fa-var-clock-o: "\f017"; +$fa-var-clone: "\f24d"; +$fa-var-close: "\f00d"; +$fa-var-cloud: "\f0c2"; +$fa-var-cloud-download: "\f0ed"; +$fa-var-cloud-upload: "\f0ee"; +$fa-var-cny: "\f157"; +$fa-var-code: "\f121"; +$fa-var-code-fork: "\f126"; +$fa-var-codepen: "\f1cb"; +$fa-var-codiepie: "\f284"; +$fa-var-coffee: "\f0f4"; +$fa-var-cog: "\f013"; +$fa-var-cogs: "\f085"; +$fa-var-columns: "\f0db"; +$fa-var-comment: "\f075"; +$fa-var-comment-o: "\f0e5"; +$fa-var-commenting: "\f27a"; +$fa-var-commenting-o: "\f27b"; +$fa-var-comments: "\f086"; +$fa-var-comments-o: "\f0e6"; +$fa-var-compass: "\f14e"; +$fa-var-compress: "\f066"; +$fa-var-connectdevelop: "\f20e"; +$fa-var-contao: "\f26d"; +$fa-var-copy: "\f0c5"; +$fa-var-copyright: "\f1f9"; +$fa-var-creative-commons: "\f25e"; +$fa-var-credit-card: "\f09d"; +$fa-var-credit-card-alt: "\f283"; +$fa-var-crop: "\f125"; +$fa-var-crosshairs: "\f05b"; +$fa-var-css3: "\f13c"; +$fa-var-cube: "\f1b2"; +$fa-var-cubes: "\f1b3"; +$fa-var-cut: "\f0c4"; +$fa-var-cutlery: "\f0f5"; +$fa-var-dashboard: "\f0e4"; +$fa-var-dashcube: "\f210"; +$fa-var-database: "\f1c0"; +$fa-var-deaf: "\f2a4"; +$fa-var-deafness: "\f2a4"; +$fa-var-dedent: "\f03b"; +$fa-var-delicious: "\f1a5"; +$fa-var-desktop: "\f108"; +$fa-var-deviantart: "\f1bd"; +$fa-var-diamond: "\f219"; +$fa-var-digg: "\f1a6"; +$fa-var-dollar: "\f155"; +$fa-var-dot-circle-o: "\f192"; +$fa-var-download: "\f019"; +$fa-var-dribbble: "\f17d"; +$fa-var-dropbox: "\f16b"; +$fa-var-drupal: "\f1a9"; +$fa-var-edge: "\f282"; +$fa-var-edit: "\f044"; +$fa-var-eject: "\f052"; +$fa-var-ellipsis-h: "\f141"; +$fa-var-ellipsis-v: "\f142"; +$fa-var-empire: "\f1d1"; +$fa-var-envelope: "\f0e0"; +$fa-var-envelope-o: "\f003"; +$fa-var-envelope-square: "\f199"; +$fa-var-envira: "\f299"; +$fa-var-eraser: "\f12d"; +$fa-var-eur: "\f153"; +$fa-var-euro: "\f153"; +$fa-var-exchange: "\f0ec"; +$fa-var-exclamation: "\f12a"; +$fa-var-exclamation-circle: "\f06a"; +$fa-var-exclamation-triangle: "\f071"; +$fa-var-expand: "\f065"; +$fa-var-expeditedssl: "\f23e"; +$fa-var-external-link: "\f08e"; +$fa-var-external-link-square: "\f14c"; +$fa-var-eye: "\f06e"; +$fa-var-eye-slash: "\f070"; +$fa-var-eyedropper: "\f1fb"; +$fa-var-fa: "\f2b4"; +$fa-var-facebook: "\f09a"; +$fa-var-facebook-f: "\f09a"; +$fa-var-facebook-official: "\f230"; +$fa-var-facebook-square: "\f082"; +$fa-var-fast-backward: "\f049"; +$fa-var-fast-forward: "\f050"; +$fa-var-fax: "\f1ac"; +$fa-var-feed: "\f09e"; +$fa-var-female: "\f182"; +$fa-var-fighter-jet: "\f0fb"; +$fa-var-file: "\f15b"; +$fa-var-file-archive-o: "\f1c6"; +$fa-var-file-audio-o: "\f1c7"; +$fa-var-file-code-o: "\f1c9"; +$fa-var-file-excel-o: "\f1c3"; +$fa-var-file-image-o: "\f1c5"; +$fa-var-file-movie-o: "\f1c8"; +$fa-var-file-o: "\f016"; +$fa-var-file-pdf-o: "\f1c1"; +$fa-var-file-photo-o: "\f1c5"; +$fa-var-file-picture-o: "\f1c5"; +$fa-var-file-powerpoint-o: "\f1c4"; +$fa-var-file-sound-o: "\f1c7"; +$fa-var-file-text: "\f15c"; +$fa-var-file-text-o: "\f0f6"; +$fa-var-file-video-o: "\f1c8"; +$fa-var-file-word-o: "\f1c2"; +$fa-var-file-zip-o: "\f1c6"; +$fa-var-files-o: "\f0c5"; +$fa-var-film: "\f008"; +$fa-var-filter: "\f0b0"; +$fa-var-fire: "\f06d"; +$fa-var-fire-extinguisher: "\f134"; +$fa-var-firefox: "\f269"; +$fa-var-first-order: "\f2b0"; +$fa-var-flag: "\f024"; +$fa-var-flag-checkered: "\f11e"; +$fa-var-flag-o: "\f11d"; +$fa-var-flash: "\f0e7"; +$fa-var-flask: "\f0c3"; +$fa-var-flickr: "\f16e"; +$fa-var-floppy-o: "\f0c7"; +$fa-var-folder: "\f07b"; +$fa-var-folder-o: "\f114"; +$fa-var-folder-open: "\f07c"; +$fa-var-folder-open-o: "\f115"; +$fa-var-font: "\f031"; +$fa-var-font-awesome: "\f2b4"; +$fa-var-fonticons: "\f280"; +$fa-var-fort-awesome: "\f286"; +$fa-var-forumbee: "\f211"; +$fa-var-forward: "\f04e"; +$fa-var-foursquare: "\f180"; +$fa-var-frown-o: "\f119"; +$fa-var-futbol-o: "\f1e3"; +$fa-var-gamepad: "\f11b"; +$fa-var-gavel: "\f0e3"; +$fa-var-gbp: "\f154"; +$fa-var-ge: "\f1d1"; +$fa-var-gear: "\f013"; +$fa-var-gears: "\f085"; +$fa-var-genderless: "\f22d"; +$fa-var-get-pocket: "\f265"; +$fa-var-gg: "\f260"; +$fa-var-gg-circle: "\f261"; +$fa-var-gift: "\f06b"; +$fa-var-git: "\f1d3"; +$fa-var-git-square: "\f1d2"; +$fa-var-github: "\f09b"; +$fa-var-github-alt: "\f113"; +$fa-var-github-square: "\f092"; +$fa-var-gitlab: "\f296"; +$fa-var-gittip: "\f184"; +$fa-var-glass: "\f000"; +$fa-var-glide: "\f2a5"; +$fa-var-glide-g: "\f2a6"; +$fa-var-globe: "\f0ac"; +$fa-var-google: "\f1a0"; +$fa-var-google-plus: "\f0d5"; +$fa-var-google-plus-circle: "\f2b3"; +$fa-var-google-plus-official: "\f2b3"; +$fa-var-google-plus-square: "\f0d4"; +$fa-var-google-wallet: "\f1ee"; +$fa-var-graduation-cap: "\f19d"; +$fa-var-gratipay: "\f184"; +$fa-var-group: "\f0c0"; +$fa-var-h-square: "\f0fd"; +$fa-var-hacker-news: "\f1d4"; +$fa-var-hand-grab-o: "\f255"; +$fa-var-hand-lizard-o: "\f258"; +$fa-var-hand-o-down: "\f0a7"; +$fa-var-hand-o-left: "\f0a5"; +$fa-var-hand-o-right: "\f0a4"; +$fa-var-hand-o-up: "\f0a6"; +$fa-var-hand-paper-o: "\f256"; +$fa-var-hand-peace-o: "\f25b"; +$fa-var-hand-pointer-o: "\f25a"; +$fa-var-hand-rock-o: "\f255"; +$fa-var-hand-scissors-o: "\f257"; +$fa-var-hand-spock-o: "\f259"; +$fa-var-hand-stop-o: "\f256"; +$fa-var-hard-of-hearing: "\f2a4"; +$fa-var-hashtag: "\f292"; +$fa-var-hdd-o: "\f0a0"; +$fa-var-header: "\f1dc"; +$fa-var-headphones: "\f025"; +$fa-var-heart: "\f004"; +$fa-var-heart-o: "\f08a"; +$fa-var-heartbeat: "\f21e"; +$fa-var-history: "\f1da"; +$fa-var-home: "\f015"; +$fa-var-hospital-o: "\f0f8"; +$fa-var-hotel: "\f236"; +$fa-var-hourglass: "\f254"; +$fa-var-hourglass-1: "\f251"; +$fa-var-hourglass-2: "\f252"; +$fa-var-hourglass-3: "\f253"; +$fa-var-hourglass-end: "\f253"; +$fa-var-hourglass-half: "\f252"; +$fa-var-hourglass-o: "\f250"; +$fa-var-hourglass-start: "\f251"; +$fa-var-houzz: "\f27c"; +$fa-var-html5: "\f13b"; +$fa-var-i-cursor: "\f246"; +$fa-var-ils: "\f20b"; +$fa-var-image: "\f03e"; +$fa-var-inbox: "\f01c"; +$fa-var-indent: "\f03c"; +$fa-var-industry: "\f275"; +$fa-var-info: "\f129"; +$fa-var-info-circle: "\f05a"; +$fa-var-inr: "\f156"; +$fa-var-instagram: "\f16d"; +$fa-var-institution: "\f19c"; +$fa-var-internet-explorer: "\f26b"; +$fa-var-intersex: "\f224"; +$fa-var-ioxhost: "\f208"; +$fa-var-italic: "\f033"; +$fa-var-joomla: "\f1aa"; +$fa-var-jpy: "\f157"; +$fa-var-jsfiddle: "\f1cc"; +$fa-var-key: "\f084"; +$fa-var-keyboard-o: "\f11c"; +$fa-var-krw: "\f159"; +$fa-var-language: "\f1ab"; +$fa-var-laptop: "\f109"; +$fa-var-lastfm: "\f202"; +$fa-var-lastfm-square: "\f203"; +$fa-var-leaf: "\f06c"; +$fa-var-leanpub: "\f212"; +$fa-var-legal: "\f0e3"; +$fa-var-lemon-o: "\f094"; +$fa-var-level-down: "\f149"; +$fa-var-level-up: "\f148"; +$fa-var-life-bouy: "\f1cd"; +$fa-var-life-buoy: "\f1cd"; +$fa-var-life-ring: "\f1cd"; +$fa-var-life-saver: "\f1cd"; +$fa-var-lightbulb-o: "\f0eb"; +$fa-var-line-chart: "\f201"; +$fa-var-link: "\f0c1"; +$fa-var-linkedin: "\f0e1"; +$fa-var-linkedin-square: "\f08c"; +$fa-var-linux: "\f17c"; +$fa-var-list: "\f03a"; +$fa-var-list-alt: "\f022"; +$fa-var-list-ol: "\f0cb"; +$fa-var-list-ul: "\f0ca"; +$fa-var-location-arrow: "\f124"; +$fa-var-lock: "\f023"; +$fa-var-long-arrow-down: "\f175"; +$fa-var-long-arrow-left: "\f177"; +$fa-var-long-arrow-right: "\f178"; +$fa-var-long-arrow-up: "\f176"; +$fa-var-low-vision: "\f2a8"; +$fa-var-magic: "\f0d0"; +$fa-var-magnet: "\f076"; +$fa-var-mail-forward: "\f064"; +$fa-var-mail-reply: "\f112"; +$fa-var-mail-reply-all: "\f122"; +$fa-var-male: "\f183"; +$fa-var-map: "\f279"; +$fa-var-map-marker: "\f041"; +$fa-var-map-o: "\f278"; +$fa-var-map-pin: "\f276"; +$fa-var-map-signs: "\f277"; +$fa-var-mars: "\f222"; +$fa-var-mars-double: "\f227"; +$fa-var-mars-stroke: "\f229"; +$fa-var-mars-stroke-h: "\f22b"; +$fa-var-mars-stroke-v: "\f22a"; +$fa-var-maxcdn: "\f136"; +$fa-var-meanpath: "\f20c"; +$fa-var-medium: "\f23a"; +$fa-var-medkit: "\f0fa"; +$fa-var-meh-o: "\f11a"; +$fa-var-mercury: "\f223"; +$fa-var-microphone: "\f130"; +$fa-var-microphone-slash: "\f131"; +$fa-var-minus: "\f068"; +$fa-var-minus-circle: "\f056"; +$fa-var-minus-square: "\f146"; +$fa-var-minus-square-o: "\f147"; +$fa-var-mixcloud: "\f289"; +$fa-var-mobile: "\f10b"; +$fa-var-mobile-phone: "\f10b"; +$fa-var-modx: "\f285"; +$fa-var-money: "\f0d6"; +$fa-var-moon-o: "\f186"; +$fa-var-mortar-board: "\f19d"; +$fa-var-motorcycle: "\f21c"; +$fa-var-mouse-pointer: "\f245"; +$fa-var-music: "\f001"; +$fa-var-navicon: "\f0c9"; +$fa-var-neuter: "\f22c"; +$fa-var-newspaper-o: "\f1ea"; +$fa-var-object-group: "\f247"; +$fa-var-object-ungroup: "\f248"; +$fa-var-odnoklassniki: "\f263"; +$fa-var-odnoklassniki-square: "\f264"; +$fa-var-opencart: "\f23d"; +$fa-var-openid: "\f19b"; +$fa-var-opera: "\f26a"; +$fa-var-optin-monster: "\f23c"; +$fa-var-outdent: "\f03b"; +$fa-var-pagelines: "\f18c"; +$fa-var-paint-brush: "\f1fc"; +$fa-var-paper-plane: "\f1d8"; +$fa-var-paper-plane-o: "\f1d9"; +$fa-var-paperclip: "\f0c6"; +$fa-var-paragraph: "\f1dd"; +$fa-var-paste: "\f0ea"; +$fa-var-pause: "\f04c"; +$fa-var-pause-circle: "\f28b"; +$fa-var-pause-circle-o: "\f28c"; +$fa-var-paw: "\f1b0"; +$fa-var-paypal: "\f1ed"; +$fa-var-pencil: "\f040"; +$fa-var-pencil-square: "\f14b"; +$fa-var-pencil-square-o: "\f044"; +$fa-var-percent: "\f295"; +$fa-var-phone: "\f095"; +$fa-var-phone-square: "\f098"; +$fa-var-photo: "\f03e"; +$fa-var-picture-o: "\f03e"; +$fa-var-pie-chart: "\f200"; +$fa-var-pied-piper: "\f2ae"; +$fa-var-pied-piper-alt: "\f1a8"; +$fa-var-pied-piper-pp: "\f1a7"; +$fa-var-pinterest: "\f0d2"; +$fa-var-pinterest-p: "\f231"; +$fa-var-pinterest-square: "\f0d3"; +$fa-var-plane: "\f072"; +$fa-var-play: "\f04b"; +$fa-var-play-circle: "\f144"; +$fa-var-play-circle-o: "\f01d"; +$fa-var-plug: "\f1e6"; +$fa-var-plus: "\f067"; +$fa-var-plus-circle: "\f055"; +$fa-var-plus-square: "\f0fe"; +$fa-var-plus-square-o: "\f196"; +$fa-var-power-off: "\f011"; +$fa-var-print: "\f02f"; +$fa-var-product-hunt: "\f288"; +$fa-var-puzzle-piece: "\f12e"; +$fa-var-qq: "\f1d6"; +$fa-var-qrcode: "\f029"; +$fa-var-question: "\f128"; +$fa-var-question-circle: "\f059"; +$fa-var-question-circle-o: "\f29c"; +$fa-var-quote-left: "\f10d"; +$fa-var-quote-right: "\f10e"; +$fa-var-ra: "\f1d0"; +$fa-var-random: "\f074"; +$fa-var-rebel: "\f1d0"; +$fa-var-recycle: "\f1b8"; +$fa-var-reddit: "\f1a1"; +$fa-var-reddit-alien: "\f281"; +$fa-var-reddit-square: "\f1a2"; +$fa-var-refresh: "\f021"; +$fa-var-registered: "\f25d"; +$fa-var-remove: "\f00d"; +$fa-var-renren: "\f18b"; +$fa-var-reorder: "\f0c9"; +$fa-var-repeat: "\f01e"; +$fa-var-reply: "\f112"; +$fa-var-reply-all: "\f122"; +$fa-var-resistance: "\f1d0"; +$fa-var-retweet: "\f079"; +$fa-var-rmb: "\f157"; +$fa-var-road: "\f018"; +$fa-var-rocket: "\f135"; +$fa-var-rotate-left: "\f0e2"; +$fa-var-rotate-right: "\f01e"; +$fa-var-rouble: "\f158"; +$fa-var-rss: "\f09e"; +$fa-var-rss-square: "\f143"; +$fa-var-rub: "\f158"; +$fa-var-ruble: "\f158"; +$fa-var-rupee: "\f156"; +$fa-var-safari: "\f267"; +$fa-var-save: "\f0c7"; +$fa-var-scissors: "\f0c4"; +$fa-var-scribd: "\f28a"; +$fa-var-search: "\f002"; +$fa-var-search-minus: "\f010"; +$fa-var-search-plus: "\f00e"; +$fa-var-sellsy: "\f213"; +$fa-var-send: "\f1d8"; +$fa-var-send-o: "\f1d9"; +$fa-var-server: "\f233"; +$fa-var-share: "\f064"; +$fa-var-share-alt: "\f1e0"; +$fa-var-share-alt-square: "\f1e1"; +$fa-var-share-square: "\f14d"; +$fa-var-share-square-o: "\f045"; +$fa-var-shekel: "\f20b"; +$fa-var-sheqel: "\f20b"; +$fa-var-shield: "\f132"; +$fa-var-ship: "\f21a"; +$fa-var-shirtsinbulk: "\f214"; +$fa-var-shopping-bag: "\f290"; +$fa-var-shopping-basket: "\f291"; +$fa-var-shopping-cart: "\f07a"; +$fa-var-sign-in: "\f090"; +$fa-var-sign-language: "\f2a7"; +$fa-var-sign-out: "\f08b"; +$fa-var-signal: "\f012"; +$fa-var-signing: "\f2a7"; +$fa-var-simplybuilt: "\f215"; +$fa-var-sitemap: "\f0e8"; +$fa-var-skyatlas: "\f216"; +$fa-var-skype: "\f17e"; +$fa-var-slack: "\f198"; +$fa-var-sliders: "\f1de"; +$fa-var-slideshare: "\f1e7"; +$fa-var-smile-o: "\f118"; +$fa-var-snapchat: "\f2ab"; +$fa-var-snapchat-ghost: "\f2ac"; +$fa-var-snapchat-square: "\f2ad"; +$fa-var-soccer-ball-o: "\f1e3"; +$fa-var-sort: "\f0dc"; +$fa-var-sort-alpha-asc: "\f15d"; +$fa-var-sort-alpha-desc: "\f15e"; +$fa-var-sort-amount-asc: "\f160"; +$fa-var-sort-amount-desc: "\f161"; +$fa-var-sort-asc: "\f0de"; +$fa-var-sort-desc: "\f0dd"; +$fa-var-sort-down: "\f0dd"; +$fa-var-sort-numeric-asc: "\f162"; +$fa-var-sort-numeric-desc: "\f163"; +$fa-var-sort-up: "\f0de"; +$fa-var-soundcloud: "\f1be"; +$fa-var-space-shuttle: "\f197"; +$fa-var-spinner: "\f110"; +$fa-var-spoon: "\f1b1"; +$fa-var-spotify: "\f1bc"; +$fa-var-square: "\f0c8"; +$fa-var-square-o: "\f096"; +$fa-var-stack-exchange: "\f18d"; +$fa-var-stack-overflow: "\f16c"; +$fa-var-star: "\f005"; +$fa-var-star-half: "\f089"; +$fa-var-star-half-empty: "\f123"; +$fa-var-star-half-full: "\f123"; +$fa-var-star-half-o: "\f123"; +$fa-var-star-o: "\f006"; +$fa-var-steam: "\f1b6"; +$fa-var-steam-square: "\f1b7"; +$fa-var-step-backward: "\f048"; +$fa-var-step-forward: "\f051"; +$fa-var-stethoscope: "\f0f1"; +$fa-var-sticky-note: "\f249"; +$fa-var-sticky-note-o: "\f24a"; +$fa-var-stop: "\f04d"; +$fa-var-stop-circle: "\f28d"; +$fa-var-stop-circle-o: "\f28e"; +$fa-var-street-view: "\f21d"; +$fa-var-strikethrough: "\f0cc"; +$fa-var-stumbleupon: "\f1a4"; +$fa-var-stumbleupon-circle: "\f1a3"; +$fa-var-subscript: "\f12c"; +$fa-var-subway: "\f239"; +$fa-var-suitcase: "\f0f2"; +$fa-var-sun-o: "\f185"; +$fa-var-superscript: "\f12b"; +$fa-var-support: "\f1cd"; +$fa-var-table: "\f0ce"; +$fa-var-tablet: "\f10a"; +$fa-var-tachometer: "\f0e4"; +$fa-var-tag: "\f02b"; +$fa-var-tags: "\f02c"; +$fa-var-tasks: "\f0ae"; +$fa-var-taxi: "\f1ba"; +$fa-var-television: "\f26c"; +$fa-var-tencent-weibo: "\f1d5"; +$fa-var-terminal: "\f120"; +$fa-var-text-height: "\f034"; +$fa-var-text-width: "\f035"; +$fa-var-th: "\f00a"; +$fa-var-th-large: "\f009"; +$fa-var-th-list: "\f00b"; +$fa-var-themeisle: "\f2b2"; +$fa-var-thumb-tack: "\f08d"; +$fa-var-thumbs-down: "\f165"; +$fa-var-thumbs-o-down: "\f088"; +$fa-var-thumbs-o-up: "\f087"; +$fa-var-thumbs-up: "\f164"; +$fa-var-ticket: "\f145"; +$fa-var-times: "\f00d"; +$fa-var-times-circle: "\f057"; +$fa-var-times-circle-o: "\f05c"; +$fa-var-tint: "\f043"; +$fa-var-toggle-down: "\f150"; +$fa-var-toggle-left: "\f191"; +$fa-var-toggle-off: "\f204"; +$fa-var-toggle-on: "\f205"; +$fa-var-toggle-right: "\f152"; +$fa-var-toggle-up: "\f151"; +$fa-var-trademark: "\f25c"; +$fa-var-train: "\f238"; +$fa-var-transgender: "\f224"; +$fa-var-transgender-alt: "\f225"; +$fa-var-trash: "\f1f8"; +$fa-var-trash-o: "\f014"; +$fa-var-tree: "\f1bb"; +$fa-var-trello: "\f181"; +$fa-var-tripadvisor: "\f262"; +$fa-var-trophy: "\f091"; +$fa-var-truck: "\f0d1"; +$fa-var-try: "\f195"; +$fa-var-tty: "\f1e4"; +$fa-var-tumblr: "\f173"; +$fa-var-tumblr-square: "\f174"; +$fa-var-turkish-lira: "\f195"; +$fa-var-tv: "\f26c"; +$fa-var-twitch: "\f1e8"; +$fa-var-twitter: "\f099"; +$fa-var-twitter-square: "\f081"; +$fa-var-umbrella: "\f0e9"; +$fa-var-underline: "\f0cd"; +$fa-var-undo: "\f0e2"; +$fa-var-universal-access: "\f29a"; +$fa-var-university: "\f19c"; +$fa-var-unlink: "\f127"; +$fa-var-unlock: "\f09c"; +$fa-var-unlock-alt: "\f13e"; +$fa-var-unsorted: "\f0dc"; +$fa-var-upload: "\f093"; +$fa-var-usb: "\f287"; +$fa-var-usd: "\f155"; +$fa-var-user: "\f007"; +$fa-var-user-md: "\f0f0"; +$fa-var-user-plus: "\f234"; +$fa-var-user-secret: "\f21b"; +$fa-var-user-times: "\f235"; +$fa-var-users: "\f0c0"; +$fa-var-venus: "\f221"; +$fa-var-venus-double: "\f226"; +$fa-var-venus-mars: "\f228"; +$fa-var-viacoin: "\f237"; +$fa-var-viadeo: "\f2a9"; +$fa-var-viadeo-square: "\f2aa"; +$fa-var-video-camera: "\f03d"; +$fa-var-vimeo: "\f27d"; +$fa-var-vimeo-square: "\f194"; +$fa-var-vine: "\f1ca"; +$fa-var-vk: "\f189"; +$fa-var-volume-control-phone: "\f2a0"; +$fa-var-volume-down: "\f027"; +$fa-var-volume-off: "\f026"; +$fa-var-volume-up: "\f028"; +$fa-var-warning: "\f071"; +$fa-var-wechat: "\f1d7"; +$fa-var-weibo: "\f18a"; +$fa-var-weixin: "\f1d7"; +$fa-var-whatsapp: "\f232"; +$fa-var-wheelchair: "\f193"; +$fa-var-wheelchair-alt: "\f29b"; +$fa-var-wifi: "\f1eb"; +$fa-var-wikipedia-w: "\f266"; +$fa-var-windows: "\f17a"; +$fa-var-won: "\f159"; +$fa-var-wordpress: "\f19a"; +$fa-var-wpbeginner: "\f297"; +$fa-var-wpforms: "\f298"; +$fa-var-wrench: "\f0ad"; +$fa-var-xing: "\f168"; +$fa-var-xing-square: "\f169"; +$fa-var-y-combinator: "\f23b"; +$fa-var-y-combinator-square: "\f1d4"; +$fa-var-yahoo: "\f19e"; +$fa-var-yc: "\f23b"; +$fa-var-yc-square: "\f1d4"; +$fa-var-yelp: "\f1e9"; +$fa-var-yen: "\f157"; +$fa-var-yoast: "\f2b1"; +$fa-var-youtube: "\f167"; +$fa-var-youtube-play: "\f16a"; +$fa-var-youtube-square: "\f166"; + diff --git a/vraptor/src/main/webapp/vendor/font-awesome/scss/font-awesome.scss b/vraptor/src/main/webapp/vendor/font-awesome/scss/font-awesome.scss new file mode 100644 index 0000000000..2308b14ca7 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/font-awesome/scss/font-awesome.scss @@ -0,0 +1,18 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + +@import "variables"; +@import "mixins"; +@import "path"; +@import "core"; +@import "larger"; +@import "fixed-width"; +@import "list"; +@import "bordered-pulled"; +@import "animated"; +@import "rotated-flipped"; +@import "stacked"; +@import "icons"; +@import "screen-reader"; diff --git a/vraptor/src/main/webapp/vendor/jquery/jquery.js b/vraptor/src/main/webapp/vendor/jquery/jquery.js new file mode 100644 index 0000000000..7fc60fca78 --- /dev/null +++ b/vraptor/src/main/webapp/vendor/jquery/jquery.js @@ -0,0 +1,11008 @@ +/*! + * jQuery JavaScript Library v1.12.4 + * http://jquery.com/ + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2016-05-20T17:17Z + */ + +(function( global, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // For CommonJS and CommonJS-like environments where a proper `window` + // is present, execute the factory and get jQuery. + // For environments that do not have a `window` with a `document` + // (such as Node.js), expose a factory as module.exports. + // This accentuates the need for the creation of a real `window`. + // e.g. var jQuery = require("jquery")(window); + // See ticket #14549 for more info. + module.exports = global.document ? + factory( global, true ) : + function( w ) { + if ( !w.document ) { + throw new Error( "jQuery requires a window with a document" ); + } + return factory( w ); + }; + } else { + factory( global ); + } + +// Pass this if window is not defined yet +}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) { + +// Support: Firefox 18+ +// Can't be in strict mode, several libs including ASP.NET trace +// the stack via arguments.caller.callee and Firefox dies if +// you try to trace through "use strict" call chains. (#13335) +//"use strict"; +var deletedIds = []; + +var document = window.document; + +var slice = deletedIds.slice; + +var concat = deletedIds.concat; + +var push = deletedIds.push; + +var indexOf = deletedIds.indexOf; + +var class2type = {}; + +var toString = class2type.toString; + +var hasOwn = class2type.hasOwnProperty; + +var support = {}; + + + +var + version = "1.12.4", + + // Define a local copy of jQuery + jQuery = function( selector, context ) { + + // The jQuery object is actually just the init constructor 'enhanced' + // Need init if jQuery is called (just allow error to be thrown if not included) + return new jQuery.fn.init( selector, context ); + }, + + // Support: Android<4.1, IE<9 + // Make sure we trim BOM and NBSP + rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, + + // Matches dashed string for camelizing + rmsPrefix = /^-ms-/, + rdashAlpha = /-([\da-z])/gi, + + // Used by jQuery.camelCase as callback to replace() + fcamelCase = function( all, letter ) { + return letter.toUpperCase(); + }; + +jQuery.fn = jQuery.prototype = { + + // The current version of jQuery being used + jquery: version, + + constructor: jQuery, + + // Start with an empty selector + selector: "", + + // The default length of a jQuery object is 0 + length: 0, + + toArray: function() { + return slice.call( this ); + }, + + // Get the Nth element in the matched element set OR + // Get the whole matched element set as a clean array + get: function( num ) { + return num != null ? + + // Return just the one element from the set + ( num < 0 ? this[ num + this.length ] : this[ num ] ) : + + // Return all the elements in a clean array + slice.call( this ); + }, + + // Take an array of elements and push it onto the stack + // (returning the new matched element set) + pushStack: function( elems ) { + + // Build a new jQuery matched element set + var ret = jQuery.merge( this.constructor(), elems ); + + // Add the old object onto the stack (as a reference) + ret.prevObject = this; + ret.context = this.context; + + // Return the newly-formed element set + return ret; + }, + + // Execute a callback for every element in the matched set. + each: function( callback ) { + return jQuery.each( this, callback ); + }, + + map: function( callback ) { + return this.pushStack( jQuery.map( this, function( elem, i ) { + return callback.call( elem, i, elem ); + } ) ); + }, + + slice: function() { + return this.pushStack( slice.apply( this, arguments ) ); + }, + + first: function() { + return this.eq( 0 ); + }, + + last: function() { + return this.eq( -1 ); + }, + + eq: function( i ) { + var len = this.length, + j = +i + ( i < 0 ? len : 0 ); + return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); + }, + + end: function() { + return this.prevObject || this.constructor(); + }, + + // For internal use only. + // Behaves like an Array's method, not like a jQuery method. + push: push, + sort: deletedIds.sort, + splice: deletedIds.splice +}; + +jQuery.extend = jQuery.fn.extend = function() { + var src, copyIsArray, copy, name, options, clone, + target = arguments[ 0 ] || {}, + i = 1, + length = arguments.length, + deep = false; + + // Handle a deep copy situation + if ( typeof target === "boolean" ) { + deep = target; + + // skip the boolean and the target + target = arguments[ i ] || {}; + i++; + } + + // Handle case when target is a string or something (possible in deep copy) + if ( typeof target !== "object" && !jQuery.isFunction( target ) ) { + target = {}; + } + + // extend jQuery itself if only one argument is passed + if ( i === length ) { + target = this; + i--; + } + + for ( ; i < length; i++ ) { + + // Only deal with non-null/undefined values + if ( ( options = arguments[ i ] ) != null ) { + + // Extend the base object + for ( name in options ) { + src = target[ name ]; + copy = options[ name ]; + + // Prevent never-ending loop + if ( target === copy ) { + continue; + } + + // Recurse if we're merging plain objects or arrays + if ( deep && copy && ( jQuery.isPlainObject( copy ) || + ( copyIsArray = jQuery.isArray( copy ) ) ) ) { + + if ( copyIsArray ) { + copyIsArray = false; + clone = src && jQuery.isArray( src ) ? src : []; + + } else { + clone = src && jQuery.isPlainObject( src ) ? src : {}; + } + + // Never move original objects, clone them + target[ name ] = jQuery.extend( deep, clone, copy ); + + // Don't bring in undefined values + } else if ( copy !== undefined ) { + target[ name ] = copy; + } + } + } + } + + // Return the modified object + return target; +}; + +jQuery.extend( { + + // Unique for each copy of jQuery on the page + expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), + + // Assume jQuery is ready without the ready module + isReady: true, + + error: function( msg ) { + throw new Error( msg ); + }, + + noop: function() {}, + + // See test/unit/core.js for details concerning isFunction. + // Since version 1.3, DOM methods and functions like alert + // aren't supported. They return false on IE (#2968). + isFunction: function( obj ) { + return jQuery.type( obj ) === "function"; + }, + + isArray: Array.isArray || function( obj ) { + return jQuery.type( obj ) === "array"; + }, + + isWindow: function( obj ) { + /* jshint eqeqeq: false */ + return obj != null && obj == obj.window; + }, + + isNumeric: function( obj ) { + + // parseFloat NaNs numeric-cast false positives (null|true|false|"") + // ...but misinterprets leading-number strings, particularly hex literals ("0x...") + // subtraction forces infinities to NaN + // adding 1 corrects loss of precision from parseFloat (#15100) + var realStringObj = obj && obj.toString(); + return !jQuery.isArray( obj ) && ( realStringObj - parseFloat( realStringObj ) + 1 ) >= 0; + }, + + isEmptyObject: function( obj ) { + var name; + for ( name in obj ) { + return false; + } + return true; + }, + + isPlainObject: function( obj ) { + var key; + + // Must be an Object. + // Because of IE, we also have to check the presence of the constructor property. + // Make sure that DOM nodes and window objects don't pass through, as well + if ( !obj || jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) { + return false; + } + + try { + + // Not own constructor property must be Object + if ( obj.constructor && + !hasOwn.call( obj, "constructor" ) && + !hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) { + return false; + } + } catch ( e ) { + + // IE8,9 Will throw exceptions on certain host objects #9897 + return false; + } + + // Support: IE<9 + // Handle iteration over inherited properties before own properties. + if ( !support.ownFirst ) { + for ( key in obj ) { + return hasOwn.call( obj, key ); + } + } + + // Own properties are enumerated firstly, so to speed up, + // if last one is own, then all properties are own. + for ( key in obj ) {} + + return key === undefined || hasOwn.call( obj, key ); + }, + + type: function( obj ) { + if ( obj == null ) { + return obj + ""; + } + return typeof obj === "object" || typeof obj === "function" ? + class2type[ toString.call( obj ) ] || "object" : + typeof obj; + }, + + // Workarounds based on findings by Jim Driscoll + // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context + globalEval: function( data ) { + if ( data && jQuery.trim( data ) ) { + + // We use execScript on Internet Explorer + // We use an anonymous function so that context is window + // rather than jQuery in Firefox + ( window.execScript || function( data ) { + window[ "eval" ].call( window, data ); // jscs:ignore requireDotNotation + } )( data ); + } + }, + + // Convert dashed to camelCase; used by the css and data modules + // Microsoft forgot to hump their vendor prefix (#9572) + camelCase: function( string ) { + return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); + }, + + nodeName: function( elem, name ) { + return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); + }, + + each: function( obj, callback ) { + var length, i = 0; + + if ( isArrayLike( obj ) ) { + length = obj.length; + for ( ; i < length; i++ ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } else { + for ( i in obj ) { + if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { + break; + } + } + } + + return obj; + }, + + // Support: Android<4.1, IE<9 + trim: function( text ) { + return text == null ? + "" : + ( text + "" ).replace( rtrim, "" ); + }, + + // results is for internal usage only + makeArray: function( arr, results ) { + var ret = results || []; + + if ( arr != null ) { + if ( isArrayLike( Object( arr ) ) ) { + jQuery.merge( ret, + typeof arr === "string" ? + [ arr ] : arr + ); + } else { + push.call( ret, arr ); + } + } + + return ret; + }, + + inArray: function( elem, arr, i ) { + var len; + + if ( arr ) { + if ( indexOf ) { + return indexOf.call( arr, elem, i ); + } + + len = arr.length; + i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0; + + for ( ; i < len; i++ ) { + + // Skip accessing in sparse arrays + if ( i in arr && arr[ i ] === elem ) { + return i; + } + } + } + + return -1; + }, + + merge: function( first, second ) { + var len = +second.length, + j = 0, + i = first.length; + + while ( j < len ) { + first[ i++ ] = second[ j++ ]; + } + + // Support: IE<9 + // Workaround casting of .length to NaN on otherwise arraylike objects (e.g., NodeLists) + if ( len !== len ) { + while ( second[ j ] !== undefined ) { + first[ i++ ] = second[ j++ ]; + } + } + + first.length = i; + + return first; + }, + + grep: function( elems, callback, invert ) { + var callbackInverse, + matches = [], + i = 0, + length = elems.length, + callbackExpect = !invert; + + // Go through the array, only saving the items + // that pass the validator function + for ( ; i < length; i++ ) { + callbackInverse = !callback( elems[ i ], i ); + if ( callbackInverse !== callbackExpect ) { + matches.push( elems[ i ] ); + } + } + + return matches; + }, + + // arg is for internal usage only + map: function( elems, callback, arg ) { + var length, value, + i = 0, + ret = []; + + // Go through the array, translating each of the items to their new values + if ( isArrayLike( elems ) ) { + length = elems.length; + for ( ; i < length; i++ ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + + // Go through every key on the object, + } else { + for ( i in elems ) { + value = callback( elems[ i ], i, arg ); + + if ( value != null ) { + ret.push( value ); + } + } + } + + // Flatten any nested arrays + return concat.apply( [], ret ); + }, + + // A global GUID counter for objects + guid: 1, + + // Bind a function to a context, optionally partially applying any + // arguments. + proxy: function( fn, context ) { + var args, proxy, tmp; + + if ( typeof context === "string" ) { + tmp = fn[ context ]; + context = fn; + fn = tmp; + } + + // Quick check to determine if target is callable, in the spec + // this throws a TypeError, but we will just return undefined. + if ( !jQuery.isFunction( fn ) ) { + return undefined; + } + + // Simulated bind + args = slice.call( arguments, 2 ); + proxy = function() { + return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); + }; + + // Set the guid of unique handler to the same of original handler, so it can be removed + proxy.guid = fn.guid = fn.guid || jQuery.guid++; + + return proxy; + }, + + now: function() { + return +( new Date() ); + }, + + // jQuery.support is not used in Core but other projects attach their + // properties to it so it needs to exist. + support: support +} ); + +// JSHint would error on this code due to the Symbol not being defined in ES5. +// Defining this global in .jshintrc would create a danger of using the global +// unguarded in another place, it seems safer to just disable JSHint for these +// three lines. +/* jshint ignore: start */ +if ( typeof Symbol === "function" ) { + jQuery.fn[ Symbol.iterator ] = deletedIds[ Symbol.iterator ]; +} +/* jshint ignore: end */ + +// Populate the class2type map +jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), +function( i, name ) { + class2type[ "[object " + name + "]" ] = name.toLowerCase(); +} ); + +function isArrayLike( obj ) { + + // Support: iOS 8.2 (not reproducible in simulator) + // `in` check used to prevent JIT error (gh-2145) + // hasOwn isn't used here due to false negatives + // regarding Nodelist length in IE + var length = !!obj && "length" in obj && obj.length, + type = jQuery.type( obj ); + + if ( type === "function" || jQuery.isWindow( obj ) ) { + return false; + } + + return type === "array" || length === 0 || + typeof length === "number" && length > 0 && ( length - 1 ) in obj; +} +var Sizzle = +/*! + * Sizzle CSS Selector Engine v2.2.1 + * http://sizzlejs.com/ + * + * Copyright jQuery Foundation and other contributors + * Released under the MIT license + * http://jquery.org/license + * + * Date: 2015-10-17 + */ +(function( window ) { + +var i, + support, + Expr, + getText, + isXML, + tokenize, + compile, + select, + outermostContext, + sortInput, + hasDuplicate, + + // Local document vars + setDocument, + document, + docElem, + documentIsHTML, + rbuggyQSA, + rbuggyMatches, + matches, + contains, + + // Instance-specific data + expando = "sizzle" + 1 * new Date(), + preferredDoc = window.document, + dirruns = 0, + done = 0, + classCache = createCache(), + tokenCache = createCache(), + compilerCache = createCache(), + sortOrder = function( a, b ) { + if ( a === b ) { + hasDuplicate = true; + } + return 0; + }, + + // General-purpose constants + MAX_NEGATIVE = 1 << 31, + + // Instance methods + hasOwn = ({}).hasOwnProperty, + arr = [], + pop = arr.pop, + push_native = arr.push, + push = arr.push, + slice = arr.slice, + // Use a stripped-down indexOf as it's faster than native + // http://jsperf.com/thor-indexof-vs-for/5 + indexOf = function( list, elem ) { + var i = 0, + len = list.length; + for ( ; i < len; i++ ) { + if ( list[i] === elem ) { + return i; + } + } + return -1; + }, + + booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", + + // Regular expressions + + // http://www.w3.org/TR/css3-selectors/#whitespace + whitespace = "[\\x20\\t\\r\\n\\f]", + + // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier + identifier = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+", + + // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors + attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + + // Operator (capture 2) + "*([*^$|!~]?=)" + whitespace + + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + + "*\\]", + + pseudos = ":(" + identifier + ")(?:\\((" + + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: + // 1. quoted (capture 3; capture 4 or capture 5) + "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + + // 2. simple (capture 6) + "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + + // 3. anything else (capture 2) + ".*" + + ")\\)|)", + + // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter + rwhitespace = new RegExp( whitespace + "+", "g" ), + rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ), + + rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), + rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ), + + rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ), + + rpseudo = new RegExp( pseudos ), + ridentifier = new RegExp( "^" + identifier + "$" ), + + matchExpr = { + "ID": new RegExp( "^#(" + identifier + ")" ), + "CLASS": new RegExp( "^\\.(" + identifier + ")" ), + "TAG": new RegExp( "^(" + identifier + "|[*])" ), + "ATTR": new RegExp( "^" + attributes ), + "PSEUDO": new RegExp( "^" + pseudos ), + "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), + "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), + // For use in libraries implementing .is() + // We use this for POS matching in `select` + "needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) + }, + + rinputs = /^(?:input|select|textarea|button)$/i, + rheader = /^h\d$/i, + + rnative = /^[^{]+\{\s*\[native \w/, + + // Easily-parseable/retrievable ID or TAG or CLASS selectors + rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, + + rsibling = /[+~]/, + rescape = /'|\\/g, + + // CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters + runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ), + funescape = function( _, escaped, escapedWhitespace ) { + var high = "0x" + escaped - 0x10000; + // NaN means non-codepoint + // Support: Firefox<24 + // Workaround erroneous numeric interpretation of +"0x" + return high !== high || escapedWhitespace ? + escaped : + high < 0 ? + // BMP codepoint + String.fromCharCode( high + 0x10000 ) : + // Supplemental Plane codepoint (surrogate pair) + String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); + }, + + // Used for iframes + // See setDocument() + // Removing the function wrapper causes a "Permission Denied" + // error in IE + unloadHandler = function() { + setDocument(); + }; + +// Optimize for push.apply( _, NodeList ) +try { + push.apply( + (arr = slice.call( preferredDoc.childNodes )), + preferredDoc.childNodes + ); + // Support: Android<4.0 + // Detect silently failing push.apply + arr[ preferredDoc.childNodes.length ].nodeType; +} catch ( e ) { + push = { apply: arr.length ? + + // Leverage slice if possible + function( target, els ) { + push_native.apply( target, slice.call(els) ); + } : + + // Support: IE<9 + // Otherwise append directly + function( target, els ) { + var j = target.length, + i = 0; + // Can't trust NodeList.length + while ( (target[j++] = els[i++]) ) {} + target.length = j - 1; + } + }; +} + +function Sizzle( selector, context, results, seed ) { + var m, i, elem, nid, nidselect, match, groups, newSelector, + newContext = context && context.ownerDocument, + + // nodeType defaults to 9, since context defaults to document + nodeType = context ? context.nodeType : 9; + + results = results || []; + + // Return early from calls with invalid selector or context + if ( typeof selector !== "string" || !selector || + nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { + + return results; + } + + // Try to shortcut find operations (as opposed to filters) in HTML documents + if ( !seed ) { + + if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) { + setDocument( context ); + } + context = context || document; + + if ( documentIsHTML ) { + + // If the selector is sufficiently simple, try using a "get*By*" DOM method + // (excepting DocumentFragment context, where the methods don't exist) + if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) { + + // ID selector + if ( (m = match[1]) ) { + + // Document context + if ( nodeType === 9 ) { + if ( (elem = context.getElementById( m )) ) { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( elem.id === m ) { + results.push( elem ); + return results; + } + } else { + return results; + } + + // Element context + } else { + + // Support: IE, Opera, Webkit + // TODO: identify versions + // getElementById can match elements by name instead of ID + if ( newContext && (elem = newContext.getElementById( m )) && + contains( context, elem ) && + elem.id === m ) { + + results.push( elem ); + return results; + } + } + + // Type selector + } else if ( match[2] ) { + push.apply( results, context.getElementsByTagName( selector ) ); + return results; + + // Class selector + } else if ( (m = match[3]) && support.getElementsByClassName && + context.getElementsByClassName ) { + + push.apply( results, context.getElementsByClassName( m ) ); + return results; + } + } + + // Take advantage of querySelectorAll + if ( support.qsa && + !compilerCache[ selector + " " ] && + (!rbuggyQSA || !rbuggyQSA.test( selector )) ) { + + if ( nodeType !== 1 ) { + newContext = context; + newSelector = selector; + + // qSA looks outside Element context, which is not what we want + // Thanks to Andrew Dupont for this workaround technique + // Support: IE <=8 + // Exclude object elements + } else if ( context.nodeName.toLowerCase() !== "object" ) { + + // Capture the context ID, setting it first if necessary + if ( (nid = context.getAttribute( "id" )) ) { + nid = nid.replace( rescape, "\\$&" ); + } else { + context.setAttribute( "id", (nid = expando) ); + } + + // Prefix every selector in the list + groups = tokenize( selector ); + i = groups.length; + nidselect = ridentifier.test( nid ) ? "#" + nid : "[id='" + nid + "']"; + while ( i-- ) { + groups[i] = nidselect + " " + toSelector( groups[i] ); + } + newSelector = groups.join( "," ); + + // Expand context for sibling selectors + newContext = rsibling.test( selector ) && testContext( context.parentNode ) || + context; + } + + if ( newSelector ) { + try { + push.apply( results, + newContext.querySelectorAll( newSelector ) + ); + return results; + } catch ( qsaError ) { + } finally { + if ( nid === expando ) { + context.removeAttribute( "id" ); + } + } + } + } + } + } + + // All others + return select( selector.replace( rtrim, "$1" ), context, results, seed ); +} + +/** + * Create key-value caches of limited size + * @returns {function(string, object)} Returns the Object data after storing it on itself with + * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) + * deleting the oldest entry + */ +function createCache() { + var keys = []; + + function cache( key, value ) { + // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) + if ( keys.push( key + " " ) > Expr.cacheLength ) { + // Only keep the most recent entries + delete cache[ keys.shift() ]; + } + return (cache[ key + " " ] = value); + } + return cache; +} + +/** + * Mark a function for special use by Sizzle + * @param {Function} fn The function to mark + */ +function markFunction( fn ) { + fn[ expando ] = true; + return fn; +} + +/** + * Support testing using an element + * @param {Function} fn Passed the created div and expects a boolean result + */ +function assert( fn ) { + var div = document.createElement("div"); + + try { + return !!fn( div ); + } catch (e) { + return false; + } finally { + // Remove from its parent by default + if ( div.parentNode ) { + div.parentNode.removeChild( div ); + } + // release memory in IE + div = null; + } +} + +/** + * Adds the same handler for all of the specified attrs + * @param {String} attrs Pipe-separated list of attributes + * @param {Function} handler The method that will be applied + */ +function addHandle( attrs, handler ) { + var arr = attrs.split("|"), + i = arr.length; + + while ( i-- ) { + Expr.attrHandle[ arr[i] ] = handler; + } +} + +/** + * Checks document order of two siblings + * @param {Element} a + * @param {Element} b + * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b + */ +function siblingCheck( a, b ) { + var cur = b && a, + diff = cur && a.nodeType === 1 && b.nodeType === 1 && + ( ~b.sourceIndex || MAX_NEGATIVE ) - + ( ~a.sourceIndex || MAX_NEGATIVE ); + + // Use IE sourceIndex if available on both nodes + if ( diff ) { + return diff; + } + + // Check if b follows a + if ( cur ) { + while ( (cur = cur.nextSibling) ) { + if ( cur === b ) { + return -1; + } + } + } + + return a ? 1 : -1; +} + +/** + * Returns a function to use in pseudos for input types + * @param {String} type + */ +function createInputPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for buttons + * @param {String} type + */ +function createButtonPseudo( type ) { + return function( elem ) { + var name = elem.nodeName.toLowerCase(); + return (name === "input" || name === "button") && elem.type === type; + }; +} + +/** + * Returns a function to use in pseudos for positionals + * @param {Function} fn + */ +function createPositionalPseudo( fn ) { + return markFunction(function( argument ) { + argument = +argument; + return markFunction(function( seed, matches ) { + var j, + matchIndexes = fn( [], seed.length, argument ), + i = matchIndexes.length; + + // Match elements found at the specified indexes + while ( i-- ) { + if ( seed[ (j = matchIndexes[i]) ] ) { + seed[j] = !(matches[j] = seed[j]); + } + } + }); + }); +} + +/** + * Checks a node for validity as a Sizzle context + * @param {Element|Object=} context + * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value + */ +function testContext( context ) { + return context && typeof context.getElementsByTagName !== "undefined" && context; +} + +// Expose support vars for convenience +support = Sizzle.support = {}; + +/** + * Detects XML nodes + * @param {Element|Object} elem An element or a document + * @returns {Boolean} True iff elem is a non-HTML XML node + */ +isXML = Sizzle.isXML = function( elem ) { + // documentElement is verified for cases where it doesn't yet exist + // (such as loading iframes in IE - #4833) + var documentElement = elem && (elem.ownerDocument || elem).documentElement; + return documentElement ? documentElement.nodeName !== "HTML" : false; +}; + +/** + * Sets document-related variables once based on the current document + * @param {Element|Object} [doc] An element or document object to use to set the document + * @returns {Object} Returns the current document + */ +setDocument = Sizzle.setDocument = function( node ) { + var hasCompare, parent, + doc = node ? node.ownerDocument || node : preferredDoc; + + // Return early if doc is invalid or already selected + if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) { + return document; + } + + // Update global variables + document = doc; + docElem = document.documentElement; + documentIsHTML = !isXML( document ); + + // Support: IE 9-11, Edge + // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) + if ( (parent = document.defaultView) && parent.top !== parent ) { + // Support: IE 11 + if ( parent.addEventListener ) { + parent.addEventListener( "unload", unloadHandler, false ); + + // Support: IE 9 - 10 only + } else if ( parent.attachEvent ) { + parent.attachEvent( "onunload", unloadHandler ); + } + } + + /* Attributes + ---------------------------------------------------------------------- */ + + // Support: IE<8 + // Verify that getAttribute really returns attributes and not properties + // (excepting IE8 booleans) + support.attributes = assert(function( div ) { + div.className = "i"; + return !div.getAttribute("className"); + }); + + /* getElement(s)By* + ---------------------------------------------------------------------- */ + + // Check if getElementsByTagName("*") returns only elements + support.getElementsByTagName = assert(function( div ) { + div.appendChild( document.createComment("") ); + return !div.getElementsByTagName("*").length; + }); + + // Support: IE<9 + support.getElementsByClassName = rnative.test( document.getElementsByClassName ); + + // Support: IE<10 + // Check if getElementById returns elements by name + // The broken getElementById methods don't pick up programatically-set names, + // so use a roundabout getElementsByName test + support.getById = assert(function( div ) { + docElem.appendChild( div ).id = expando; + return !document.getElementsByName || !document.getElementsByName( expando ).length; + }); + + // ID find and filter + if ( support.getById ) { + Expr.find["ID"] = function( id, context ) { + if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { + var m = context.getElementById( id ); + return m ? [ m ] : []; + } + }; + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + return elem.getAttribute("id") === attrId; + }; + }; + } else { + // Support: IE6/7 + // getElementById is not reliable as a find shortcut + delete Expr.find["ID"]; + + Expr.filter["ID"] = function( id ) { + var attrId = id.replace( runescape, funescape ); + return function( elem ) { + var node = typeof elem.getAttributeNode !== "undefined" && + elem.getAttributeNode("id"); + return node && node.value === attrId; + }; + }; + } + + // Tag + Expr.find["TAG"] = support.getElementsByTagName ? + function( tag, context ) { + if ( typeof context.getElementsByTagName !== "undefined" ) { + return context.getElementsByTagName( tag ); + + // DocumentFragment nodes don't have gEBTN + } else if ( support.qsa ) { + return context.querySelectorAll( tag ); + } + } : + + function( tag, context ) { + var elem, + tmp = [], + i = 0, + // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too + results = context.getElementsByTagName( tag ); + + // Filter out possible comments + if ( tag === "*" ) { + while ( (elem = results[i++]) ) { + if ( elem.nodeType === 1 ) { + tmp.push( elem ); + } + } + + return tmp; + } + return results; + }; + + // Class + Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) { + if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { + return context.getElementsByClassName( className ); + } + }; + + /* QSA/matchesSelector + ---------------------------------------------------------------------- */ + + // QSA and matchesSelector support + + // matchesSelector(:active) reports false when true (IE9/Opera 11.5) + rbuggyMatches = []; + + // qSa(:focus) reports false when true (Chrome 21) + // We allow this because of a bug in IE8/9 that throws an error + // whenever `document.activeElement` is accessed on an iframe + // So, we allow :focus to pass through QSA all the time to avoid the IE error + // See http://bugs.jquery.com/ticket/13378 + rbuggyQSA = []; + + if ( (support.qsa = rnative.test( document.querySelectorAll )) ) { + // Build QSA regex + // Regex strategy adopted from Diego Perini + assert(function( div ) { + // Select is set to empty string on purpose + // This is to test IE's treatment of not explicitly + // setting a boolean content attribute, + // since its presence should be enough + // http://bugs.jquery.com/ticket/12359 + docElem.appendChild( div ).innerHTML = "" + + ""; + + // Support: IE8, Opera 11-12.16 + // Nothing should be selected when empty strings follow ^= or $= or *= + // The test attribute must be unknown in Opera but "safe" for WinRT + // http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section + if ( div.querySelectorAll("[msallowcapture^='']").length ) { + rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); + } + + // Support: IE8 + // Boolean attributes and "value" are not treated correctly + if ( !div.querySelectorAll("[selected]").length ) { + rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); + } + + // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ + if ( !div.querySelectorAll( "[id~=" + expando + "-]" ).length ) { + rbuggyQSA.push("~="); + } + + // Webkit/Opera - :checked should return selected option elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":checked").length ) { + rbuggyQSA.push(":checked"); + } + + // Support: Safari 8+, iOS 8+ + // https://bugs.webkit.org/show_bug.cgi?id=136851 + // In-page `selector#id sibing-combinator selector` fails + if ( !div.querySelectorAll( "a#" + expando + "+*" ).length ) { + rbuggyQSA.push(".#.+[+~]"); + } + }); + + assert(function( div ) { + // Support: Windows 8 Native Apps + // The type and name attributes are restricted during .innerHTML assignment + var input = document.createElement("input"); + input.setAttribute( "type", "hidden" ); + div.appendChild( input ).setAttribute( "name", "D" ); + + // Support: IE8 + // Enforce case-sensitivity of name attribute + if ( div.querySelectorAll("[name=d]").length ) { + rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); + } + + // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) + // IE8 throws error here and will not see later tests + if ( !div.querySelectorAll(":enabled").length ) { + rbuggyQSA.push( ":enabled", ":disabled" ); + } + + // Opera 10-11 does not throw on post-comma invalid pseudos + div.querySelectorAll("*,:x"); + rbuggyQSA.push(",.*:"); + }); + } + + if ( (support.matchesSelector = rnative.test( (matches = docElem.matches || + docElem.webkitMatchesSelector || + docElem.mozMatchesSelector || + docElem.oMatchesSelector || + docElem.msMatchesSelector) )) ) { + + assert(function( div ) { + // Check to see if it's possible to do matchesSelector + // on a disconnected node (IE 9) + support.disconnectedMatch = matches.call( div, "div" ); + + // This should fail with an exception + // Gecko does not error, returns false instead + matches.call( div, "[s!='']:x" ); + rbuggyMatches.push( "!=", pseudos ); + }); + } + + rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") ); + rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") ); + + /* Contains + ---------------------------------------------------------------------- */ + hasCompare = rnative.test( docElem.compareDocumentPosition ); + + // Element contains another + // Purposefully self-exclusive + // As in, an element does not contain itself + contains = hasCompare || rnative.test( docElem.contains ) ? + function( a, b ) { + var adown = a.nodeType === 9 ? a.documentElement : a, + bup = b && b.parentNode; + return a === bup || !!( bup && bup.nodeType === 1 && ( + adown.contains ? + adown.contains( bup ) : + a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 + )); + } : + function( a, b ) { + if ( b ) { + while ( (b = b.parentNode) ) { + if ( b === a ) { + return true; + } + } + } + return false; + }; + + /* Sorting + ---------------------------------------------------------------------- */ + + // Document order sorting + sortOrder = hasCompare ? + function( a, b ) { + + // Flag for duplicate removal + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + // Sort on method existence if only one input has compareDocumentPosition + var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; + if ( compare ) { + return compare; + } + + // Calculate position if both inputs belong to the same document + compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ? + a.compareDocumentPosition( b ) : + + // Otherwise we know they are disconnected + 1; + + // Disconnected nodes + if ( compare & 1 || + (!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) { + + // Choose the first element that is related to our preferred document + if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) { + return -1; + } + if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) { + return 1; + } + + // Maintain original order + return sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + } + + return compare & 4 ? -1 : 1; + } : + function( a, b ) { + // Exit early if the nodes are identical + if ( a === b ) { + hasDuplicate = true; + return 0; + } + + var cur, + i = 0, + aup = a.parentNode, + bup = b.parentNode, + ap = [ a ], + bp = [ b ]; + + // Parentless nodes are either documents or disconnected + if ( !aup || !bup ) { + return a === document ? -1 : + b === document ? 1 : + aup ? -1 : + bup ? 1 : + sortInput ? + ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : + 0; + + // If the nodes are siblings, we can do a quick check + } else if ( aup === bup ) { + return siblingCheck( a, b ); + } + + // Otherwise we need full lists of their ancestors for comparison + cur = a; + while ( (cur = cur.parentNode) ) { + ap.unshift( cur ); + } + cur = b; + while ( (cur = cur.parentNode) ) { + bp.unshift( cur ); + } + + // Walk down the tree looking for a discrepancy + while ( ap[i] === bp[i] ) { + i++; + } + + return i ? + // Do a sibling check if the nodes have a common ancestor + siblingCheck( ap[i], bp[i] ) : + + // Otherwise nodes in our document sort first + ap[i] === preferredDoc ? -1 : + bp[i] === preferredDoc ? 1 : + 0; + }; + + return document; +}; + +Sizzle.matches = function( expr, elements ) { + return Sizzle( expr, null, null, elements ); +}; + +Sizzle.matchesSelector = function( elem, expr ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + // Make sure that attribute selectors are quoted + expr = expr.replace( rattributeQuotes, "='$1']" ); + + if ( support.matchesSelector && documentIsHTML && + !compilerCache[ expr + " " ] && + ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && + ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { + + try { + var ret = matches.call( elem, expr ); + + // IE 9's matchesSelector returns false on disconnected nodes + if ( ret || support.disconnectedMatch || + // As well, disconnected nodes are said to be in a document + // fragment in IE 9 + elem.document && elem.document.nodeType !== 11 ) { + return ret; + } + } catch (e) {} + } + + return Sizzle( expr, document, null, [ elem ] ).length > 0; +}; + +Sizzle.contains = function( context, elem ) { + // Set document vars if needed + if ( ( context.ownerDocument || context ) !== document ) { + setDocument( context ); + } + return contains( context, elem ); +}; + +Sizzle.attr = function( elem, name ) { + // Set document vars if needed + if ( ( elem.ownerDocument || elem ) !== document ) { + setDocument( elem ); + } + + var fn = Expr.attrHandle[ name.toLowerCase() ], + // Don't get fooled by Object.prototype properties (jQuery #13807) + val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? + fn( elem, name, !documentIsHTML ) : + undefined; + + return val !== undefined ? + val : + support.attributes || !documentIsHTML ? + elem.getAttribute( name ) : + (val = elem.getAttributeNode(name)) && val.specified ? + val.value : + null; +}; + +Sizzle.error = function( msg ) { + throw new Error( "Syntax error, unrecognized expression: " + msg ); +}; + +/** + * Document sorting and removing duplicates + * @param {ArrayLike} results + */ +Sizzle.uniqueSort = function( results ) { + var elem, + duplicates = [], + j = 0, + i = 0; + + // Unless we *know* we can detect duplicates, assume their presence + hasDuplicate = !support.detectDuplicates; + sortInput = !support.sortStable && results.slice( 0 ); + results.sort( sortOrder ); + + if ( hasDuplicate ) { + while ( (elem = results[i++]) ) { + if ( elem === results[ i ] ) { + j = duplicates.push( i ); + } + } + while ( j-- ) { + results.splice( duplicates[ j ], 1 ); + } + } + + // Clear input after sorting to release objects + // See https://github.com/jquery/sizzle/pull/225 + sortInput = null; + + return results; +}; + +/** + * Utility function for retrieving the text value of an array of DOM nodes + * @param {Array|Element} elem + */ +getText = Sizzle.getText = function( elem ) { + var node, + ret = "", + i = 0, + nodeType = elem.nodeType; + + if ( !nodeType ) { + // If no nodeType, this is expected to be an array + while ( (node = elem[i++]) ) { + // Do not traverse comment nodes + ret += getText( node ); + } + } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { + // Use textContent for elements + // innerText usage removed for consistency of new lines (jQuery #11153) + if ( typeof elem.textContent === "string" ) { + return elem.textContent; + } else { + // Traverse its children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + ret += getText( elem ); + } + } + } else if ( nodeType === 3 || nodeType === 4 ) { + return elem.nodeValue; + } + // Do not include comment or processing instruction nodes + + return ret; +}; + +Expr = Sizzle.selectors = { + + // Can be adjusted by the user + cacheLength: 50, + + createPseudo: markFunction, + + match: matchExpr, + + attrHandle: {}, + + find: {}, + + relative: { + ">": { dir: "parentNode", first: true }, + " ": { dir: "parentNode" }, + "+": { dir: "previousSibling", first: true }, + "~": { dir: "previousSibling" } + }, + + preFilter: { + "ATTR": function( match ) { + match[1] = match[1].replace( runescape, funescape ); + + // Move the given value to match[3] whether quoted or unquoted + match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape ); + + if ( match[2] === "~=" ) { + match[3] = " " + match[3] + " "; + } + + return match.slice( 0, 4 ); + }, + + "CHILD": function( match ) { + /* matches from matchExpr["CHILD"] + 1 type (only|nth|...) + 2 what (child|of-type) + 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) + 4 xn-component of xn+y argument ([+-]?\d*n|) + 5 sign of xn-component + 6 x of xn-component + 7 sign of y-component + 8 y of y-component + */ + match[1] = match[1].toLowerCase(); + + if ( match[1].slice( 0, 3 ) === "nth" ) { + // nth-* requires argument + if ( !match[3] ) { + Sizzle.error( match[0] ); + } + + // numeric x and y parameters for Expr.filter.CHILD + // remember that false/true cast respectively to 0/1 + match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) ); + match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" ); + + // other types prohibit arguments + } else if ( match[3] ) { + Sizzle.error( match[0] ); + } + + return match; + }, + + "PSEUDO": function( match ) { + var excess, + unquoted = !match[6] && match[2]; + + if ( matchExpr["CHILD"].test( match[0] ) ) { + return null; + } + + // Accept quoted arguments as-is + if ( match[3] ) { + match[2] = match[4] || match[5] || ""; + + // Strip excess characters from unquoted arguments + } else if ( unquoted && rpseudo.test( unquoted ) && + // Get excess from tokenize (recursively) + (excess = tokenize( unquoted, true )) && + // advance to the next closing parenthesis + (excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) { + + // excess is a negative index + match[0] = match[0].slice( 0, excess ); + match[2] = unquoted.slice( 0, excess ); + } + + // Return only captures needed by the pseudo filter method (type and argument) + return match.slice( 0, 3 ); + } + }, + + filter: { + + "TAG": function( nodeNameSelector ) { + var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); + return nodeNameSelector === "*" ? + function() { return true; } : + function( elem ) { + return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; + }; + }, + + "CLASS": function( className ) { + var pattern = classCache[ className + " " ]; + + return pattern || + (pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) && + classCache( className, function( elem ) { + return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" ); + }); + }, + + "ATTR": function( name, operator, check ) { + return function( elem ) { + var result = Sizzle.attr( elem, name ); + + if ( result == null ) { + return operator === "!="; + } + if ( !operator ) { + return true; + } + + result += ""; + + return operator === "=" ? result === check : + operator === "!=" ? result !== check : + operator === "^=" ? check && result.indexOf( check ) === 0 : + operator === "*=" ? check && result.indexOf( check ) > -1 : + operator === "$=" ? check && result.slice( -check.length ) === check : + operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : + operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : + false; + }; + }, + + "CHILD": function( type, what, argument, first, last ) { + var simple = type.slice( 0, 3 ) !== "nth", + forward = type.slice( -4 ) !== "last", + ofType = what === "of-type"; + + return first === 1 && last === 0 ? + + // Shortcut for :nth-*(n) + function( elem ) { + return !!elem.parentNode; + } : + + function( elem, context, xml ) { + var cache, uniqueCache, outerCache, node, nodeIndex, start, + dir = simple !== forward ? "nextSibling" : "previousSibling", + parent = elem.parentNode, + name = ofType && elem.nodeName.toLowerCase(), + useCache = !xml && !ofType, + diff = false; + + if ( parent ) { + + // :(first|last|only)-(child|of-type) + if ( simple ) { + while ( dir ) { + node = elem; + while ( (node = node[ dir ]) ) { + if ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) { + + return false; + } + } + // Reverse direction for :only-* (if we haven't yet done so) + start = dir = type === "only" && !start && "nextSibling"; + } + return true; + } + + start = [ forward ? parent.firstChild : parent.lastChild ]; + + // non-xml :nth-child(...) stores cache data on `parent` + if ( forward && useCache ) { + + // Seek `elem` from a previously-cached index + + // ...in a gzip-friendly way + node = parent; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex && cache[ 2 ]; + node = nodeIndex && parent.childNodes[ nodeIndex ]; + + while ( (node = ++nodeIndex && node && node[ dir ] || + + // Fallback to seeking `elem` from the start + (diff = nodeIndex = 0) || start.pop()) ) { + + // When found, cache indexes on `parent` and break + if ( node.nodeType === 1 && ++diff && node === elem ) { + uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; + break; + } + } + + } else { + // Use previously-cached element index if available + if ( useCache ) { + // ...in a gzip-friendly way + node = elem; + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + cache = uniqueCache[ type ] || []; + nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; + diff = nodeIndex; + } + + // xml :nth-child(...) + // or :nth-last-child(...) or :nth(-last)?-of-type(...) + if ( diff === false ) { + // Use the same loop as above to seek `elem` from the start + while ( (node = ++nodeIndex && node && node[ dir ] || + (diff = nodeIndex = 0) || start.pop()) ) { + + if ( ( ofType ? + node.nodeName.toLowerCase() === name : + node.nodeType === 1 ) && + ++diff ) { + + // Cache the index of each encountered element + if ( useCache ) { + outerCache = node[ expando ] || (node[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ node.uniqueID ] || + (outerCache[ node.uniqueID ] = {}); + + uniqueCache[ type ] = [ dirruns, diff ]; + } + + if ( node === elem ) { + break; + } + } + } + } + } + + // Incorporate the offset, then check against cycle size + diff -= last; + return diff === first || ( diff % first === 0 && diff / first >= 0 ); + } + }; + }, + + "PSEUDO": function( pseudo, argument ) { + // pseudo-class names are case-insensitive + // http://www.w3.org/TR/selectors/#pseudo-classes + // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters + // Remember that setFilters inherits from pseudos + var args, + fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || + Sizzle.error( "unsupported pseudo: " + pseudo ); + + // The user may use createPseudo to indicate that + // arguments are needed to create the filter function + // just as Sizzle does + if ( fn[ expando ] ) { + return fn( argument ); + } + + // But maintain support for old signatures + if ( fn.length > 1 ) { + args = [ pseudo, pseudo, "", argument ]; + return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? + markFunction(function( seed, matches ) { + var idx, + matched = fn( seed, argument ), + i = matched.length; + while ( i-- ) { + idx = indexOf( seed, matched[i] ); + seed[ idx ] = !( matches[ idx ] = matched[i] ); + } + }) : + function( elem ) { + return fn( elem, 0, args ); + }; + } + + return fn; + } + }, + + pseudos: { + // Potentially complex pseudos + "not": markFunction(function( selector ) { + // Trim the selector passed to compile + // to avoid treating leading and trailing + // spaces as combinators + var input = [], + results = [], + matcher = compile( selector.replace( rtrim, "$1" ) ); + + return matcher[ expando ] ? + markFunction(function( seed, matches, context, xml ) { + var elem, + unmatched = matcher( seed, null, xml, [] ), + i = seed.length; + + // Match elements unmatched by `matcher` + while ( i-- ) { + if ( (elem = unmatched[i]) ) { + seed[i] = !(matches[i] = elem); + } + } + }) : + function( elem, context, xml ) { + input[0] = elem; + matcher( input, null, xml, results ); + // Don't keep the element (issue #299) + input[0] = null; + return !results.pop(); + }; + }), + + "has": markFunction(function( selector ) { + return function( elem ) { + return Sizzle( selector, elem ).length > 0; + }; + }), + + "contains": markFunction(function( text ) { + text = text.replace( runescape, funescape ); + return function( elem ) { + return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1; + }; + }), + + // "Whether an element is represented by a :lang() selector + // is based solely on the element's language value + // being equal to the identifier C, + // or beginning with the identifier C immediately followed by "-". + // The matching of C against the element's language value is performed case-insensitively. + // The identifier C does not have to be a valid language name." + // http://www.w3.org/TR/selectors/#lang-pseudo + "lang": markFunction( function( lang ) { + // lang value must be a valid identifier + if ( !ridentifier.test(lang || "") ) { + Sizzle.error( "unsupported lang: " + lang ); + } + lang = lang.replace( runescape, funescape ).toLowerCase(); + return function( elem ) { + var elemLang; + do { + if ( (elemLang = documentIsHTML ? + elem.lang : + elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) { + + elemLang = elemLang.toLowerCase(); + return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; + } + } while ( (elem = elem.parentNode) && elem.nodeType === 1 ); + return false; + }; + }), + + // Miscellaneous + "target": function( elem ) { + var hash = window.location && window.location.hash; + return hash && hash.slice( 1 ) === elem.id; + }, + + "root": function( elem ) { + return elem === docElem; + }, + + "focus": function( elem ) { + return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex); + }, + + // Boolean properties + "enabled": function( elem ) { + return elem.disabled === false; + }, + + "disabled": function( elem ) { + return elem.disabled === true; + }, + + "checked": function( elem ) { + // In CSS3, :checked should return both checked and selected elements + // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked + var nodeName = elem.nodeName.toLowerCase(); + return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected); + }, + + "selected": function( elem ) { + // Accessing this property makes selected-by-default + // options in Safari work properly + if ( elem.parentNode ) { + elem.parentNode.selectedIndex; + } + + return elem.selected === true; + }, + + // Contents + "empty": function( elem ) { + // http://www.w3.org/TR/selectors/#empty-pseudo + // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), + // but not by others (comment: 8; processing instruction: 7; etc.) + // nodeType < 6 works because attributes (2) do not appear as children + for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { + if ( elem.nodeType < 6 ) { + return false; + } + } + return true; + }, + + "parent": function( elem ) { + return !Expr.pseudos["empty"]( elem ); + }, + + // Element/input types + "header": function( elem ) { + return rheader.test( elem.nodeName ); + }, + + "input": function( elem ) { + return rinputs.test( elem.nodeName ); + }, + + "button": function( elem ) { + var name = elem.nodeName.toLowerCase(); + return name === "input" && elem.type === "button" || name === "button"; + }, + + "text": function( elem ) { + var attr; + return elem.nodeName.toLowerCase() === "input" && + elem.type === "text" && + + // Support: IE<8 + // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" + ( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" ); + }, + + // Position-in-collection + "first": createPositionalPseudo(function() { + return [ 0 ]; + }), + + "last": createPositionalPseudo(function( matchIndexes, length ) { + return [ length - 1 ]; + }), + + "eq": createPositionalPseudo(function( matchIndexes, length, argument ) { + return [ argument < 0 ? argument + length : argument ]; + }), + + "even": createPositionalPseudo(function( matchIndexes, length ) { + var i = 0; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "odd": createPositionalPseudo(function( matchIndexes, length ) { + var i = 1; + for ( ; i < length; i += 2 ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "lt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; --i >= 0; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }), + + "gt": createPositionalPseudo(function( matchIndexes, length, argument ) { + var i = argument < 0 ? argument + length : argument; + for ( ; ++i < length; ) { + matchIndexes.push( i ); + } + return matchIndexes; + }) + } +}; + +Expr.pseudos["nth"] = Expr.pseudos["eq"]; + +// Add button/input type pseudos +for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { + Expr.pseudos[ i ] = createInputPseudo( i ); +} +for ( i in { submit: true, reset: true } ) { + Expr.pseudos[ i ] = createButtonPseudo( i ); +} + +// Easy API for creating new setFilters +function setFilters() {} +setFilters.prototype = Expr.filters = Expr.pseudos; +Expr.setFilters = new setFilters(); + +tokenize = Sizzle.tokenize = function( selector, parseOnly ) { + var matched, match, tokens, type, + soFar, groups, preFilters, + cached = tokenCache[ selector + " " ]; + + if ( cached ) { + return parseOnly ? 0 : cached.slice( 0 ); + } + + soFar = selector; + groups = []; + preFilters = Expr.preFilter; + + while ( soFar ) { + + // Comma and first run + if ( !matched || (match = rcomma.exec( soFar )) ) { + if ( match ) { + // Don't consume trailing commas as valid + soFar = soFar.slice( match[0].length ) || soFar; + } + groups.push( (tokens = []) ); + } + + matched = false; + + // Combinators + if ( (match = rcombinators.exec( soFar )) ) { + matched = match.shift(); + tokens.push({ + value: matched, + // Cast descendant combinators to space + type: match[0].replace( rtrim, " " ) + }); + soFar = soFar.slice( matched.length ); + } + + // Filters + for ( type in Expr.filter ) { + if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] || + (match = preFilters[ type ]( match ))) ) { + matched = match.shift(); + tokens.push({ + value: matched, + type: type, + matches: match + }); + soFar = soFar.slice( matched.length ); + } + } + + if ( !matched ) { + break; + } + } + + // Return the length of the invalid excess + // if we're just parsing + // Otherwise, throw an error or return tokens + return parseOnly ? + soFar.length : + soFar ? + Sizzle.error( selector ) : + // Cache the tokens + tokenCache( selector, groups ).slice( 0 ); +}; + +function toSelector( tokens ) { + var i = 0, + len = tokens.length, + selector = ""; + for ( ; i < len; i++ ) { + selector += tokens[i].value; + } + return selector; +} + +function addCombinator( matcher, combinator, base ) { + var dir = combinator.dir, + checkNonElements = base && dir === "parentNode", + doneName = done++; + + return combinator.first ? + // Check against closest ancestor/preceding element + function( elem, context, xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + return matcher( elem, context, xml ); + } + } + } : + + // Check against all ancestor/preceding elements + function( elem, context, xml ) { + var oldCache, uniqueCache, outerCache, + newCache = [ dirruns, doneName ]; + + // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching + if ( xml ) { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + if ( matcher( elem, context, xml ) ) { + return true; + } + } + } + } else { + while ( (elem = elem[ dir ]) ) { + if ( elem.nodeType === 1 || checkNonElements ) { + outerCache = elem[ expando ] || (elem[ expando ] = {}); + + // Support: IE <9 only + // Defend against cloned attroperties (jQuery gh-1709) + uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {}); + + if ( (oldCache = uniqueCache[ dir ]) && + oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { + + // Assign to newCache so results back-propagate to previous elements + return (newCache[ 2 ] = oldCache[ 2 ]); + } else { + // Reuse newcache so results back-propagate to previous elements + uniqueCache[ dir ] = newCache; + + // A match means we're done; a fail means we have to keep checking + if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) { + return true; + } + } + } + } + } + }; +} + +function elementMatcher( matchers ) { + return matchers.length > 1 ? + function( elem, context, xml ) { + var i = matchers.length; + while ( i-- ) { + if ( !matchers[i]( elem, context, xml ) ) { + return false; + } + } + return true; + } : + matchers[0]; +} + +function multipleContexts( selector, contexts, results ) { + var i = 0, + len = contexts.length; + for ( ; i < len; i++ ) { + Sizzle( selector, contexts[i], results ); + } + return results; +} + +function condense( unmatched, map, filter, context, xml ) { + var elem, + newUnmatched = [], + i = 0, + len = unmatched.length, + mapped = map != null; + + for ( ; i < len; i++ ) { + if ( (elem = unmatched[i]) ) { + if ( !filter || filter( elem, context, xml ) ) { + newUnmatched.push( elem ); + if ( mapped ) { + map.push( i ); + } + } + } + } + + return newUnmatched; +} + +function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { + if ( postFilter && !postFilter[ expando ] ) { + postFilter = setMatcher( postFilter ); + } + if ( postFinder && !postFinder[ expando ] ) { + postFinder = setMatcher( postFinder, postSelector ); + } + return markFunction(function( seed, results, context, xml ) { + var temp, i, elem, + preMap = [], + postMap = [], + preexisting = results.length, + + // Get initial elements from seed or context + elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ), + + // Prefilter to get matcher input, preserving a map for seed-results synchronization + matcherIn = preFilter && ( seed || !selector ) ? + condense( elems, preMap, preFilter, context, xml ) : + elems, + + matcherOut = matcher ? + // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, + postFinder || ( seed ? preFilter : preexisting || postFilter ) ? + + // ...intermediate processing is necessary + [] : + + // ...otherwise use results directly + results : + matcherIn; + + // Find primary matches + if ( matcher ) { + matcher( matcherIn, matcherOut, context, xml ); + } + + // Apply postFilter + if ( postFilter ) { + temp = condense( matcherOut, postMap ); + postFilter( temp, [], context, xml ); + + // Un-match failing elements by moving them back to matcherIn + i = temp.length; + while ( i-- ) { + if ( (elem = temp[i]) ) { + matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem); + } + } + } + + if ( seed ) { + if ( postFinder || preFilter ) { + if ( postFinder ) { + // Get the final matcherOut by condensing this intermediate into postFinder contexts + temp = []; + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) ) { + // Restore matcherIn since elem is not yet a final match + temp.push( (matcherIn[i] = elem) ); + } + } + postFinder( null, (matcherOut = []), temp, xml ); + } + + // Move matched elements from seed to results to keep them synchronized + i = matcherOut.length; + while ( i-- ) { + if ( (elem = matcherOut[i]) && + (temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) { + + seed[temp] = !(results[temp] = elem); + } + } + } + + // Add elements to results, through postFinder if defined + } else { + matcherOut = condense( + matcherOut === results ? + matcherOut.splice( preexisting, matcherOut.length ) : + matcherOut + ); + if ( postFinder ) { + postFinder( null, results, matcherOut, xml ); + } else { + push.apply( results, matcherOut ); + } + } + }); +} + +function matcherFromTokens( tokens ) { + var checkContext, matcher, j, + len = tokens.length, + leadingRelative = Expr.relative[ tokens[0].type ], + implicitRelative = leadingRelative || Expr.relative[" "], + i = leadingRelative ? 1 : 0, + + // The foundational matcher ensures that elements are reachable from top-level context(s) + matchContext = addCombinator( function( elem ) { + return elem === checkContext; + }, implicitRelative, true ), + matchAnyContext = addCombinator( function( elem ) { + return indexOf( checkContext, elem ) > -1; + }, implicitRelative, true ), + matchers = [ function( elem, context, xml ) { + var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( + (checkContext = context).nodeType ? + matchContext( elem, context, xml ) : + matchAnyContext( elem, context, xml ) ); + // Avoid hanging onto element (issue #299) + checkContext = null; + return ret; + } ]; + + for ( ; i < len; i++ ) { + if ( (matcher = Expr.relative[ tokens[i].type ]) ) { + matchers = [ addCombinator(elementMatcher( matchers ), matcher) ]; + } else { + matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches ); + + // Return special upon seeing a positional matcher + if ( matcher[ expando ] ) { + // Find the next relative operator (if any) for proper handling + j = ++i; + for ( ; j < len; j++ ) { + if ( Expr.relative[ tokens[j].type ] ) { + break; + } + } + return setMatcher( + i > 1 && elementMatcher( matchers ), + i > 1 && toSelector( + // If the preceding token was a descendant combinator, insert an implicit any-element `*` + tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" }) + ).replace( rtrim, "$1" ), + matcher, + i < j && matcherFromTokens( tokens.slice( i, j ) ), + j < len && matcherFromTokens( (tokens = tokens.slice( j )) ), + j < len && toSelector( tokens ) + ); + } + matchers.push( matcher ); + } + } + + return elementMatcher( matchers ); +} + +function matcherFromGroupMatchers( elementMatchers, setMatchers ) { + var bySet = setMatchers.length > 0, + byElement = elementMatchers.length > 0, + superMatcher = function( seed, context, xml, results, outermost ) { + var elem, j, matcher, + matchedCount = 0, + i = "0", + unmatched = seed && [], + setMatched = [], + contextBackup = outermostContext, + // We must always have either seed elements or outermost context + elems = seed || byElement && Expr.find["TAG"]( "*", outermost ), + // Use integer dirruns iff this is the outermost matcher + dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1), + len = elems.length; + + if ( outermost ) { + outermostContext = context === document || context || outermost; + } + + // Add elements passing elementMatchers directly to results + // Support: IE<9, Safari + // Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id + for ( ; i !== len && (elem = elems[i]) != null; i++ ) { + if ( byElement && elem ) { + j = 0; + if ( !context && elem.ownerDocument !== document ) { + setDocument( elem ); + xml = !documentIsHTML; + } + while ( (matcher = elementMatchers[j++]) ) { + if ( matcher( elem, context || document, xml) ) { + results.push( elem ); + break; + } + } + if ( outermost ) { + dirruns = dirrunsUnique; + } + } + + // Track unmatched elements for set filters + if ( bySet ) { + // They will have gone through all possible matchers + if ( (elem = !matcher && elem) ) { + matchedCount--; + } + + // Lengthen the array for every element, matched or not + if ( seed ) { + unmatched.push( elem ); + } + } + } + + // `i` is now the count of elements visited above, and adding it to `matchedCount` + // makes the latter nonnegative. + matchedCount += i; + + // Apply set filters to unmatched elements + // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` + // equals `i`), unless we didn't visit _any_ elements in the above loop because we have + // no element matchers and no seed. + // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that + // case, which will result in a "00" `matchedCount` that differs from `i` but is also + // numerically zero. + if ( bySet && i !== matchedCount ) { + j = 0; + while ( (matcher = setMatchers[j++]) ) { + matcher( unmatched, setMatched, context, xml ); + } + + if ( seed ) { + // Reintegrate element matches to eliminate the need for sorting + if ( matchedCount > 0 ) { + while ( i-- ) { + if ( !(unmatched[i] || setMatched[i]) ) { + setMatched[i] = pop.call( results ); + } + } + } + + // Discard index placeholder values to get only actual matches + setMatched = condense( setMatched ); + } + + // Add matches to results + push.apply( results, setMatched ); + + // Seedless set matches succeeding multiple successful matchers stipulate sorting + if ( outermost && !seed && setMatched.length > 0 && + ( matchedCount + setMatchers.length ) > 1 ) { + + Sizzle.uniqueSort( results ); + } + } + + // Override manipulation of globals by nested matchers + if ( outermost ) { + dirruns = dirrunsUnique; + outermostContext = contextBackup; + } + + return unmatched; + }; + + return bySet ? + markFunction( superMatcher ) : + superMatcher; +} + +compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { + var i, + setMatchers = [], + elementMatchers = [], + cached = compilerCache[ selector + " " ]; + + if ( !cached ) { + // Generate a function of recursive functions that can be used to check each element + if ( !match ) { + match = tokenize( selector ); + } + i = match.length; + while ( i-- ) { + cached = matcherFromTokens( match[i] ); + if ( cached[ expando ] ) { + setMatchers.push( cached ); + } else { + elementMatchers.push( cached ); + } + } + + // Cache the compiled function + cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) ); + + // Save selector and tokenization + cached.selector = selector; + } + return cached; +}; + +/** + * A low-level selection function that works with Sizzle's compiled + * selector functions + * @param {String|Function} selector A selector or a pre-compiled + * selector function built with Sizzle.compile + * @param {Element} context + * @param {Array} [results] + * @param {Array} [seed] A set of elements to match against + */ +select = Sizzle.select = function( selector, context, results, seed ) { + var i, tokens, token, type, find, + compiled = typeof selector === "function" && selector, + match = !seed && tokenize( (selector = compiled.selector || selector) ); + + results = results || []; + + // Try to minimize operations if there is only one selector in the list and no seed + // (the latter of which guarantees us context) + if ( match.length === 1 ) { + + // Reduce context if the leading compound selector is an ID + tokens = match[0] = match[0].slice( 0 ); + if ( tokens.length > 2 && (token = tokens[0]).type === "ID" && + support.getById && context.nodeType === 9 && documentIsHTML && + Expr.relative[ tokens[1].type ] ) { + + context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0]; + if ( !context ) { + return results; + + // Precompiled matchers will still verify ancestry, so step up a level + } else if ( compiled ) { + context = context.parentNode; + } + + selector = selector.slice( tokens.shift().value.length ); + } + + // Fetch a seed set for right-to-left matching + i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length; + while ( i-- ) { + token = tokens[i]; + + // Abort if we hit a combinator + if ( Expr.relative[ (type = token.type) ] ) { + break; + } + if ( (find = Expr.find[ type ]) ) { + // Search, expanding context for leading sibling combinators + if ( (seed = find( + token.matches[0].replace( runescape, funescape ), + rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context + )) ) { + + // If seed is empty or no tokens remain, we can return early + tokens.splice( i, 1 ); + selector = seed.length && toSelector( tokens ); + if ( !selector ) { + push.apply( results, seed ); + return results; + } + + break; + } + } + } + } + + // Compile and execute a filtering function if one is not provided + // Provide `match` to avoid retokenization if we modified the selector above + ( compiled || compile( selector, match ) )( + seed, + context, + !documentIsHTML, + results, + !context || rsibling.test( selector ) && testContext( context.parentNode ) || context + ); + return results; +}; + +// One-time assignments + +// Sort stability +support.sortStable = expando.split("").sort( sortOrder ).join("") === expando; + +// Support: Chrome 14-35+ +// Always assume duplicates if they aren't passed to the comparison function +support.detectDuplicates = !!hasDuplicate; + +// Initialize against the default document +setDocument(); + +// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) +// Detached nodes confoundingly follow *each other* +support.sortDetached = assert(function( div1 ) { + // Should return 1, but returns 4 (following) + return div1.compareDocumentPosition( document.createElement("div") ) & 1; +}); + +// Support: IE<8 +// Prevent attribute/property "interpolation" +// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx +if ( !assert(function( div ) { + div.innerHTML = ""; + return div.firstChild.getAttribute("href") === "#" ; +}) ) { + addHandle( "type|href|height|width", function( elem, name, isXML ) { + if ( !isXML ) { + return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); + } + }); +} + +// Support: IE<9 +// Use defaultValue in place of getAttribute("value") +if ( !support.attributes || !assert(function( div ) { + div.innerHTML = ""; + div.firstChild.setAttribute( "value", "" ); + return div.firstChild.getAttribute( "value" ) === ""; +}) ) { + addHandle( "value", function( elem, name, isXML ) { + if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { + return elem.defaultValue; + } + }); +} + +// Support: IE<9 +// Use getAttributeNode to fetch booleans when getAttribute lies +if ( !assert(function( div ) { + return div.getAttribute("disabled") == null; +}) ) { + addHandle( booleans, function( elem, name, isXML ) { + var val; + if ( !isXML ) { + return elem[ name ] === true ? name.toLowerCase() : + (val = elem.getAttributeNode( name )) && val.specified ? + val.value : + null; + } + }); +} + +return Sizzle; + +})( window ); + + + +jQuery.find = Sizzle; +jQuery.expr = Sizzle.selectors; +jQuery.expr[ ":" ] = jQuery.expr.pseudos; +jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; +jQuery.text = Sizzle.getText; +jQuery.isXMLDoc = Sizzle.isXML; +jQuery.contains = Sizzle.contains; + + + +var dir = function( elem, dir, until ) { + var matched = [], + truncate = until !== undefined; + + while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { + if ( elem.nodeType === 1 ) { + if ( truncate && jQuery( elem ).is( until ) ) { + break; + } + matched.push( elem ); + } + } + return matched; +}; + + +var siblings = function( n, elem ) { + var matched = []; + + for ( ; n; n = n.nextSibling ) { + if ( n.nodeType === 1 && n !== elem ) { + matched.push( n ); + } + } + + return matched; +}; + + +var rneedsContext = jQuery.expr.match.needsContext; + +var rsingleTag = ( /^<([\w-]+)\s*\/?>(?:<\/\1>|)$/ ); + + + +var risSimple = /^.[^:#\[\.,]*$/; + +// Implement the identical functionality for filter and not +function winnow( elements, qualifier, not ) { + if ( jQuery.isFunction( qualifier ) ) { + return jQuery.grep( elements, function( elem, i ) { + /* jshint -W018 */ + return !!qualifier.call( elem, i, elem ) !== not; + } ); + + } + + if ( qualifier.nodeType ) { + return jQuery.grep( elements, function( elem ) { + return ( elem === qualifier ) !== not; + } ); + + } + + if ( typeof qualifier === "string" ) { + if ( risSimple.test( qualifier ) ) { + return jQuery.filter( qualifier, elements, not ); + } + + qualifier = jQuery.filter( qualifier, elements ); + } + + return jQuery.grep( elements, function( elem ) { + return ( jQuery.inArray( elem, qualifier ) > -1 ) !== not; + } ); +} + +jQuery.filter = function( expr, elems, not ) { + var elem = elems[ 0 ]; + + if ( not ) { + expr = ":not(" + expr + ")"; + } + + return elems.length === 1 && elem.nodeType === 1 ? + jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] : + jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { + return elem.nodeType === 1; + } ) ); +}; + +jQuery.fn.extend( { + find: function( selector ) { + var i, + ret = [], + self = this, + len = self.length; + + if ( typeof selector !== "string" ) { + return this.pushStack( jQuery( selector ).filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( self[ i ], this ) ) { + return true; + } + } + } ) ); + } + + for ( i = 0; i < len; i++ ) { + jQuery.find( selector, self[ i ], ret ); + } + + // Needed because $( selector, context ) becomes $( context ).find( selector ) + ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret ); + ret.selector = this.selector ? this.selector + " " + selector : selector; + return ret; + }, + filter: function( selector ) { + return this.pushStack( winnow( this, selector || [], false ) ); + }, + not: function( selector ) { + return this.pushStack( winnow( this, selector || [], true ) ); + }, + is: function( selector ) { + return !!winnow( + this, + + // If this is a positional/relative selector, check membership in the returned set + // so $("p:first").is("p:last") won't return true for a doc with two "p". + typeof selector === "string" && rneedsContext.test( selector ) ? + jQuery( selector ) : + selector || [], + false + ).length; + } +} ); + + +// Initialize a jQuery object + + +// A central reference to the root jQuery(document) +var rootjQuery, + + // A simple way to check for HTML strings + // Prioritize #id over to avoid XSS via location.hash (#9521) + // Strict HTML recognition (#11290: must start with <) + rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/, + + init = jQuery.fn.init = function( selector, context, root ) { + var match, elem; + + // HANDLE: $(""), $(null), $(undefined), $(false) + if ( !selector ) { + return this; + } + + // init accepts an alternate rootjQuery + // so migrate can support jQuery.sub (gh-2101) + root = root || rootjQuery; + + // Handle HTML strings + if ( typeof selector === "string" ) { + if ( selector.charAt( 0 ) === "<" && + selector.charAt( selector.length - 1 ) === ">" && + selector.length >= 3 ) { + + // Assume that strings that start and end with <> are HTML and skip the regex check + match = [ null, selector, null ]; + + } else { + match = rquickExpr.exec( selector ); + } + + // Match html or make sure no context is specified for #id + if ( match && ( match[ 1 ] || !context ) ) { + + // HANDLE: $(html) -> $(array) + if ( match[ 1 ] ) { + context = context instanceof jQuery ? context[ 0 ] : context; + + // scripts is true for back-compat + // Intentionally let the error be thrown if parseHTML is not present + jQuery.merge( this, jQuery.parseHTML( + match[ 1 ], + context && context.nodeType ? context.ownerDocument || context : document, + true + ) ); + + // HANDLE: $(html, props) + if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { + for ( match in context ) { + + // Properties of context are called as methods if possible + if ( jQuery.isFunction( this[ match ] ) ) { + this[ match ]( context[ match ] ); + + // ...and otherwise set as attributes + } else { + this.attr( match, context[ match ] ); + } + } + } + + return this; + + // HANDLE: $(#id) + } else { + elem = document.getElementById( match[ 2 ] ); + + // Check parentNode to catch when Blackberry 4.6 returns + // nodes that are no longer in the document #6963 + if ( elem && elem.parentNode ) { + + // Handle the case where IE and Opera return items + // by name instead of ID + if ( elem.id !== match[ 2 ] ) { + return rootjQuery.find( selector ); + } + + // Otherwise, we inject the element directly into the jQuery object + this.length = 1; + this[ 0 ] = elem; + } + + this.context = document; + this.selector = selector; + return this; + } + + // HANDLE: $(expr, $(...)) + } else if ( !context || context.jquery ) { + return ( context || root ).find( selector ); + + // HANDLE: $(expr, context) + // (which is just equivalent to: $(context).find(expr) + } else { + return this.constructor( context ).find( selector ); + } + + // HANDLE: $(DOMElement) + } else if ( selector.nodeType ) { + this.context = this[ 0 ] = selector; + this.length = 1; + return this; + + // HANDLE: $(function) + // Shortcut for document ready + } else if ( jQuery.isFunction( selector ) ) { + return typeof root.ready !== "undefined" ? + root.ready( selector ) : + + // Execute immediately if ready is not present + selector( jQuery ); + } + + if ( selector.selector !== undefined ) { + this.selector = selector.selector; + this.context = selector.context; + } + + return jQuery.makeArray( selector, this ); + }; + +// Give the init function the jQuery prototype for later instantiation +init.prototype = jQuery.fn; + +// Initialize central reference +rootjQuery = jQuery( document ); + + +var rparentsprev = /^(?:parents|prev(?:Until|All))/, + + // methods guaranteed to produce a unique set when starting from a unique set + guaranteedUnique = { + children: true, + contents: true, + next: true, + prev: true + }; + +jQuery.fn.extend( { + has: function( target ) { + var i, + targets = jQuery( target, this ), + len = targets.length; + + return this.filter( function() { + for ( i = 0; i < len; i++ ) { + if ( jQuery.contains( this, targets[ i ] ) ) { + return true; + } + } + } ); + }, + + closest: function( selectors, context ) { + var cur, + i = 0, + l = this.length, + matched = [], + pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ? + jQuery( selectors, context || this.context ) : + 0; + + for ( ; i < l; i++ ) { + for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { + + // Always skip document fragments + if ( cur.nodeType < 11 && ( pos ? + pos.index( cur ) > -1 : + + // Don't pass non-elements to Sizzle + cur.nodeType === 1 && + jQuery.find.matchesSelector( cur, selectors ) ) ) { + + matched.push( cur ); + break; + } + } + } + + return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); + }, + + // Determine the position of an element within + // the matched set of elements + index: function( elem ) { + + // No argument, return index in parent + if ( !elem ) { + return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; + } + + // index in selector + if ( typeof elem === "string" ) { + return jQuery.inArray( this[ 0 ], jQuery( elem ) ); + } + + // Locate the position of the desired element + return jQuery.inArray( + + // If it receives a jQuery object, the first element is used + elem.jquery ? elem[ 0 ] : elem, this ); + }, + + add: function( selector, context ) { + return this.pushStack( + jQuery.uniqueSort( + jQuery.merge( this.get(), jQuery( selector, context ) ) + ) + ); + }, + + addBack: function( selector ) { + return this.add( selector == null ? + this.prevObject : this.prevObject.filter( selector ) + ); + } +} ); + +function sibling( cur, dir ) { + do { + cur = cur[ dir ]; + } while ( cur && cur.nodeType !== 1 ); + + return cur; +} + +jQuery.each( { + parent: function( elem ) { + var parent = elem.parentNode; + return parent && parent.nodeType !== 11 ? parent : null; + }, + parents: function( elem ) { + return dir( elem, "parentNode" ); + }, + parentsUntil: function( elem, i, until ) { + return dir( elem, "parentNode", until ); + }, + next: function( elem ) { + return sibling( elem, "nextSibling" ); + }, + prev: function( elem ) { + return sibling( elem, "previousSibling" ); + }, + nextAll: function( elem ) { + return dir( elem, "nextSibling" ); + }, + prevAll: function( elem ) { + return dir( elem, "previousSibling" ); + }, + nextUntil: function( elem, i, until ) { + return dir( elem, "nextSibling", until ); + }, + prevUntil: function( elem, i, until ) { + return dir( elem, "previousSibling", until ); + }, + siblings: function( elem ) { + return siblings( ( elem.parentNode || {} ).firstChild, elem ); + }, + children: function( elem ) { + return siblings( elem.firstChild ); + }, + contents: function( elem ) { + return jQuery.nodeName( elem, "iframe" ) ? + elem.contentDocument || elem.contentWindow.document : + jQuery.merge( [], elem.childNodes ); + } +}, function( name, fn ) { + jQuery.fn[ name ] = function( until, selector ) { + var ret = jQuery.map( this, fn, until ); + + if ( name.slice( -5 ) !== "Until" ) { + selector = until; + } + + if ( selector && typeof selector === "string" ) { + ret = jQuery.filter( selector, ret ); + } + + if ( this.length > 1 ) { + + // Remove duplicates + if ( !guaranteedUnique[ name ] ) { + ret = jQuery.uniqueSort( ret ); + } + + // Reverse order for parents* and prev-derivatives + if ( rparentsprev.test( name ) ) { + ret = ret.reverse(); + } + } + + return this.pushStack( ret ); + }; +} ); +var rnotwhite = ( /\S+/g ); + + + +// Convert String-formatted options into Object-formatted ones +function createOptions( options ) { + var object = {}; + jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) { + object[ flag ] = true; + } ); + return object; +} + +/* + * Create a callback list using the following parameters: + * + * options: an optional list of space-separated options that will change how + * the callback list behaves or a more traditional option object + * + * By default a callback list will act like an event callback list and can be + * "fired" multiple times. + * + * Possible options: + * + * once: will ensure the callback list can only be fired once (like a Deferred) + * + * memory: will keep track of previous values and will call any callback added + * after the list has been fired right away with the latest "memorized" + * values (like a Deferred) + * + * unique: will ensure a callback can only be added once (no duplicate in the list) + * + * stopOnFalse: interrupt callings when a callback returns false + * + */ +jQuery.Callbacks = function( options ) { + + // Convert options from String-formatted to Object-formatted if needed + // (we check in cache first) + options = typeof options === "string" ? + createOptions( options ) : + jQuery.extend( {}, options ); + + var // Flag to know if list is currently firing + firing, + + // Last fire value for non-forgettable lists + memory, + + // Flag to know if list was already fired + fired, + + // Flag to prevent firing + locked, + + // Actual callback list + list = [], + + // Queue of execution data for repeatable lists + queue = [], + + // Index of currently firing callback (modified by add/remove as needed) + firingIndex = -1, + + // Fire callbacks + fire = function() { + + // Enforce single-firing + locked = options.once; + + // Execute callbacks for all pending executions, + // respecting firingIndex overrides and runtime changes + fired = firing = true; + for ( ; queue.length; firingIndex = -1 ) { + memory = queue.shift(); + while ( ++firingIndex < list.length ) { + + // Run callback and check for early termination + if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && + options.stopOnFalse ) { + + // Jump to end and forget the data so .add doesn't re-fire + firingIndex = list.length; + memory = false; + } + } + } + + // Forget the data if we're done with it + if ( !options.memory ) { + memory = false; + } + + firing = false; + + // Clean up if we're done firing for good + if ( locked ) { + + // Keep an empty list if we have data for future add calls + if ( memory ) { + list = []; + + // Otherwise, this object is spent + } else { + list = ""; + } + } + }, + + // Actual Callbacks object + self = { + + // Add a callback or a collection of callbacks to the list + add: function() { + if ( list ) { + + // If we have memory from a past run, we should fire after adding + if ( memory && !firing ) { + firingIndex = list.length - 1; + queue.push( memory ); + } + + ( function add( args ) { + jQuery.each( args, function( _, arg ) { + if ( jQuery.isFunction( arg ) ) { + if ( !options.unique || !self.has( arg ) ) { + list.push( arg ); + } + } else if ( arg && arg.length && jQuery.type( arg ) !== "string" ) { + + // Inspect recursively + add( arg ); + } + } ); + } )( arguments ); + + if ( memory && !firing ) { + fire(); + } + } + return this; + }, + + // Remove a callback from the list + remove: function() { + jQuery.each( arguments, function( _, arg ) { + var index; + while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { + list.splice( index, 1 ); + + // Handle firing indexes + if ( index <= firingIndex ) { + firingIndex--; + } + } + } ); + return this; + }, + + // Check if a given callback is in the list. + // If no argument is given, return whether or not list has callbacks attached. + has: function( fn ) { + return fn ? + jQuery.inArray( fn, list ) > -1 : + list.length > 0; + }, + + // Remove all callbacks from the list + empty: function() { + if ( list ) { + list = []; + } + return this; + }, + + // Disable .fire and .add + // Abort any current/pending executions + // Clear all callbacks and values + disable: function() { + locked = queue = []; + list = memory = ""; + return this; + }, + disabled: function() { + return !list; + }, + + // Disable .fire + // Also disable .add unless we have memory (since it would have no effect) + // Abort any pending executions + lock: function() { + locked = true; + if ( !memory ) { + self.disable(); + } + return this; + }, + locked: function() { + return !!locked; + }, + + // Call all callbacks with the given context and arguments + fireWith: function( context, args ) { + if ( !locked ) { + args = args || []; + args = [ context, args.slice ? args.slice() : args ]; + queue.push( args ); + if ( !firing ) { + fire(); + } + } + return this; + }, + + // Call all the callbacks with the given arguments + fire: function() { + self.fireWith( this, arguments ); + return this; + }, + + // To know if the callbacks have already been called at least once + fired: function() { + return !!fired; + } + }; + + return self; +}; + + +jQuery.extend( { + + Deferred: function( func ) { + var tuples = [ + + // action, add listener, listener list, final state + [ "resolve", "done", jQuery.Callbacks( "once memory" ), "resolved" ], + [ "reject", "fail", jQuery.Callbacks( "once memory" ), "rejected" ], + [ "notify", "progress", jQuery.Callbacks( "memory" ) ] + ], + state = "pending", + promise = { + state: function() { + return state; + }, + always: function() { + deferred.done( arguments ).fail( arguments ); + return this; + }, + then: function( /* fnDone, fnFail, fnProgress */ ) { + var fns = arguments; + return jQuery.Deferred( function( newDefer ) { + jQuery.each( tuples, function( i, tuple ) { + var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ]; + + // deferred[ done | fail | progress ] for forwarding actions to newDefer + deferred[ tuple[ 1 ] ]( function() { + var returned = fn && fn.apply( this, arguments ); + if ( returned && jQuery.isFunction( returned.promise ) ) { + returned.promise() + .progress( newDefer.notify ) + .done( newDefer.resolve ) + .fail( newDefer.reject ); + } else { + newDefer[ tuple[ 0 ] + "With" ]( + this === promise ? newDefer.promise() : this, + fn ? [ returned ] : arguments + ); + } + } ); + } ); + fns = null; + } ).promise(); + }, + + // Get a promise for this deferred + // If obj is provided, the promise aspect is added to the object + promise: function( obj ) { + return obj != null ? jQuery.extend( obj, promise ) : promise; + } + }, + deferred = {}; + + // Keep pipe for back-compat + promise.pipe = promise.then; + + // Add list-specific methods + jQuery.each( tuples, function( i, tuple ) { + var list = tuple[ 2 ], + stateString = tuple[ 3 ]; + + // promise[ done | fail | progress ] = list.add + promise[ tuple[ 1 ] ] = list.add; + + // Handle state + if ( stateString ) { + list.add( function() { + + // state = [ resolved | rejected ] + state = stateString; + + // [ reject_list | resolve_list ].disable; progress_list.lock + }, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock ); + } + + // deferred[ resolve | reject | notify ] + deferred[ tuple[ 0 ] ] = function() { + deferred[ tuple[ 0 ] + "With" ]( this === deferred ? promise : this, arguments ); + return this; + }; + deferred[ tuple[ 0 ] + "With" ] = list.fireWith; + } ); + + // Make the deferred a promise + promise.promise( deferred ); + + // Call given func if any + if ( func ) { + func.call( deferred, deferred ); + } + + // All done! + return deferred; + }, + + // Deferred helper + when: function( subordinate /* , ..., subordinateN */ ) { + var i = 0, + resolveValues = slice.call( arguments ), + length = resolveValues.length, + + // the count of uncompleted subordinates + remaining = length !== 1 || + ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0, + + // the master Deferred. + // If resolveValues consist of only a single Deferred, just use that. + deferred = remaining === 1 ? subordinate : jQuery.Deferred(), + + // Update function for both resolve and progress values + updateFunc = function( i, contexts, values ) { + return function( value ) { + contexts[ i ] = this; + values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; + if ( values === progressValues ) { + deferred.notifyWith( contexts, values ); + + } else if ( !( --remaining ) ) { + deferred.resolveWith( contexts, values ); + } + }; + }, + + progressValues, progressContexts, resolveContexts; + + // add listeners to Deferred subordinates; treat others as resolved + if ( length > 1 ) { + progressValues = new Array( length ); + progressContexts = new Array( length ); + resolveContexts = new Array( length ); + for ( ; i < length; i++ ) { + if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) { + resolveValues[ i ].promise() + .progress( updateFunc( i, progressContexts, progressValues ) ) + .done( updateFunc( i, resolveContexts, resolveValues ) ) + .fail( deferred.reject ); + } else { + --remaining; + } + } + } + + // if we're not waiting on anything, resolve the master + if ( !remaining ) { + deferred.resolveWith( resolveContexts, resolveValues ); + } + + return deferred.promise(); + } +} ); + + +// The deferred used on DOM ready +var readyList; + +jQuery.fn.ready = function( fn ) { + + // Add the callback + jQuery.ready.promise().done( fn ); + + return this; +}; + +jQuery.extend( { + + // Is the DOM ready to be used? Set to true once it occurs. + isReady: false, + + // A counter to track how many items to wait for before + // the ready event fires. See #6781 + readyWait: 1, + + // Hold (or release) the ready event + holdReady: function( hold ) { + if ( hold ) { + jQuery.readyWait++; + } else { + jQuery.ready( true ); + } + }, + + // Handle when the DOM is ready + ready: function( wait ) { + + // Abort if there are pending holds or we're already ready + if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { + return; + } + + // Remember that the DOM is ready + jQuery.isReady = true; + + // If a normal DOM Ready event fired, decrement, and wait if need be + if ( wait !== true && --jQuery.readyWait > 0 ) { + return; + } + + // If there are functions bound, to execute + readyList.resolveWith( document, [ jQuery ] ); + + // Trigger any bound ready events + if ( jQuery.fn.triggerHandler ) { + jQuery( document ).triggerHandler( "ready" ); + jQuery( document ).off( "ready" ); + } + } +} ); + +/** + * Clean-up method for dom ready events + */ +function detach() { + if ( document.addEventListener ) { + document.removeEventListener( "DOMContentLoaded", completed ); + window.removeEventListener( "load", completed ); + + } else { + document.detachEvent( "onreadystatechange", completed ); + window.detachEvent( "onload", completed ); + } +} + +/** + * The ready event handler and self cleanup method + */ +function completed() { + + // readyState === "complete" is good enough for us to call the dom ready in oldIE + if ( document.addEventListener || + window.event.type === "load" || + document.readyState === "complete" ) { + + detach(); + jQuery.ready(); + } +} + +jQuery.ready.promise = function( obj ) { + if ( !readyList ) { + + readyList = jQuery.Deferred(); + + // Catch cases where $(document).ready() is called + // after the browser event has already occurred. + // Support: IE6-10 + // Older IE sometimes signals "interactive" too soon + if ( document.readyState === "complete" || + ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { + + // Handle it asynchronously to allow scripts the opportunity to delay ready + window.setTimeout( jQuery.ready ); + + // Standards-based browsers support DOMContentLoaded + } else if ( document.addEventListener ) { + + // Use the handy event callback + document.addEventListener( "DOMContentLoaded", completed ); + + // A fallback to window.onload, that will always work + window.addEventListener( "load", completed ); + + // If IE event model is used + } else { + + // Ensure firing before onload, maybe late but safe also for iframes + document.attachEvent( "onreadystatechange", completed ); + + // A fallback to window.onload, that will always work + window.attachEvent( "onload", completed ); + + // If IE and not a frame + // continually check to see if the document is ready + var top = false; + + try { + top = window.frameElement == null && document.documentElement; + } catch ( e ) {} + + if ( top && top.doScroll ) { + ( function doScrollCheck() { + if ( !jQuery.isReady ) { + + try { + + // Use the trick by Diego Perini + // http://javascript.nwbox.com/IEContentLoaded/ + top.doScroll( "left" ); + } catch ( e ) { + return window.setTimeout( doScrollCheck, 50 ); + } + + // detach all dom ready events + detach(); + + // and execute any waiting functions + jQuery.ready(); + } + } )(); + } + } + } + return readyList.promise( obj ); +}; + +// Kick off the DOM ready check even if the user does not +jQuery.ready.promise(); + + + + +// Support: IE<9 +// Iteration over object's inherited properties before its own +var i; +for ( i in jQuery( support ) ) { + break; +} +support.ownFirst = i === "0"; + +// Note: most support tests are defined in their respective modules. +// false until the test is run +support.inlineBlockNeedsLayout = false; + +// Execute ASAP in case we need to set body.style.zoom +jQuery( function() { + + // Minified: var a,b,c,d + var val, div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + + // Return for frameset docs that don't have a body + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + if ( typeof div.style.zoom !== "undefined" ) { + + // Support: IE<8 + // Check if natively block-level elements act like inline-block + // elements when setting their display to 'inline' and giving + // them layout + div.style.cssText = "display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1"; + + support.inlineBlockNeedsLayout = val = div.offsetWidth === 3; + if ( val ) { + + // Prevent IE 6 from affecting layout for positioned elements #11048 + // Prevent IE from shrinking the body in IE 7 mode #12869 + // Support: IE<8 + body.style.zoom = 1; + } + } + + body.removeChild( container ); +} ); + + +( function() { + var div = document.createElement( "div" ); + + // Support: IE<9 + support.deleteExpando = true; + try { + delete div.test; + } catch ( e ) { + support.deleteExpando = false; + } + + // Null elements to avoid leaks in IE. + div = null; +} )(); +var acceptData = function( elem ) { + var noData = jQuery.noData[ ( elem.nodeName + " " ).toLowerCase() ], + nodeType = +elem.nodeType || 1; + + // Do not set data on non-element DOM nodes because it will not be cleared (#8335). + return nodeType !== 1 && nodeType !== 9 ? + false : + + // Nodes accept data unless otherwise specified; rejection can be conditional + !noData || noData !== true && elem.getAttribute( "classid" ) === noData; +}; + + + + +var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, + rmultiDash = /([A-Z])/g; + +function dataAttr( elem, key, data ) { + + // If nothing was found internally, try to fetch any + // data from the HTML5 data-* attribute + if ( data === undefined && elem.nodeType === 1 ) { + + var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase(); + + data = elem.getAttribute( name ); + + if ( typeof data === "string" ) { + try { + data = data === "true" ? true : + data === "false" ? false : + data === "null" ? null : + + // Only convert to a number if it doesn't change the string + +data + "" === data ? +data : + rbrace.test( data ) ? jQuery.parseJSON( data ) : + data; + } catch ( e ) {} + + // Make sure we set the data so it isn't changed later + jQuery.data( elem, key, data ); + + } else { + data = undefined; + } + } + + return data; +} + +// checks a cache object for emptiness +function isEmptyDataObject( obj ) { + var name; + for ( name in obj ) { + + // if the public data object is empty, the private is still empty + if ( name === "data" && jQuery.isEmptyObject( obj[ name ] ) ) { + continue; + } + if ( name !== "toJSON" ) { + return false; + } + } + + return true; +} + +function internalData( elem, name, data, pvt /* Internal Use Only */ ) { + if ( !acceptData( elem ) ) { + return; + } + + var ret, thisCache, + internalKey = jQuery.expando, + + // We have to handle DOM nodes and JS objects differently because IE6-7 + // can't GC object references properly across the DOM-JS boundary + isNode = elem.nodeType, + + // Only DOM nodes need the global jQuery cache; JS object data is + // attached directly to the object so GC can occur automatically + cache = isNode ? jQuery.cache : elem, + + // Only defining an ID for JS objects if its cache already exists allows + // the code to shortcut on the same path as a DOM node with no cache + id = isNode ? elem[ internalKey ] : elem[ internalKey ] && internalKey; + + // Avoid doing any more work than we need to when trying to get data on an + // object that has no data at all + if ( ( !id || !cache[ id ] || ( !pvt && !cache[ id ].data ) ) && + data === undefined && typeof name === "string" ) { + return; + } + + if ( !id ) { + + // Only DOM nodes need a new unique ID for each element since their data + // ends up in the global cache + if ( isNode ) { + id = elem[ internalKey ] = deletedIds.pop() || jQuery.guid++; + } else { + id = internalKey; + } + } + + if ( !cache[ id ] ) { + + // Avoid exposing jQuery metadata on plain JS objects when the object + // is serialized using JSON.stringify + cache[ id ] = isNode ? {} : { toJSON: jQuery.noop }; + } + + // An object can be passed to jQuery.data instead of a key/value pair; this gets + // shallow copied over onto the existing cache + if ( typeof name === "object" || typeof name === "function" ) { + if ( pvt ) { + cache[ id ] = jQuery.extend( cache[ id ], name ); + } else { + cache[ id ].data = jQuery.extend( cache[ id ].data, name ); + } + } + + thisCache = cache[ id ]; + + // jQuery data() is stored in a separate object inside the object's internal data + // cache in order to avoid key collisions between internal data and user-defined + // data. + if ( !pvt ) { + if ( !thisCache.data ) { + thisCache.data = {}; + } + + thisCache = thisCache.data; + } + + if ( data !== undefined ) { + thisCache[ jQuery.camelCase( name ) ] = data; + } + + // Check for both converted-to-camel and non-converted data property names + // If a data property was specified + if ( typeof name === "string" ) { + + // First Try to find as-is property data + ret = thisCache[ name ]; + + // Test for null|undefined property data + if ( ret == null ) { + + // Try to find the camelCased property + ret = thisCache[ jQuery.camelCase( name ) ]; + } + } else { + ret = thisCache; + } + + return ret; +} + +function internalRemoveData( elem, name, pvt ) { + if ( !acceptData( elem ) ) { + return; + } + + var thisCache, i, + isNode = elem.nodeType, + + // See jQuery.data for more information + cache = isNode ? jQuery.cache : elem, + id = isNode ? elem[ jQuery.expando ] : jQuery.expando; + + // If there is already no cache entry for this object, there is no + // purpose in continuing + if ( !cache[ id ] ) { + return; + } + + if ( name ) { + + thisCache = pvt ? cache[ id ] : cache[ id ].data; + + if ( thisCache ) { + + // Support array or space separated string names for data keys + if ( !jQuery.isArray( name ) ) { + + // try the string as a key before any manipulation + if ( name in thisCache ) { + name = [ name ]; + } else { + + // split the camel cased version by spaces unless a key with the spaces exists + name = jQuery.camelCase( name ); + if ( name in thisCache ) { + name = [ name ]; + } else { + name = name.split( " " ); + } + } + } else { + + // If "name" is an array of keys... + // When data is initially created, via ("key", "val") signature, + // keys will be converted to camelCase. + // Since there is no way to tell _how_ a key was added, remove + // both plain key and camelCase key. #12786 + // This will only penalize the array argument path. + name = name.concat( jQuery.map( name, jQuery.camelCase ) ); + } + + i = name.length; + while ( i-- ) { + delete thisCache[ name[ i ] ]; + } + + // If there is no data left in the cache, we want to continue + // and let the cache object itself get destroyed + if ( pvt ? !isEmptyDataObject( thisCache ) : !jQuery.isEmptyObject( thisCache ) ) { + return; + } + } + } + + // See jQuery.data for more information + if ( !pvt ) { + delete cache[ id ].data; + + // Don't destroy the parent cache unless the internal data object + // had been the only thing left in it + if ( !isEmptyDataObject( cache[ id ] ) ) { + return; + } + } + + // Destroy the cache + if ( isNode ) { + jQuery.cleanData( [ elem ], true ); + + // Use delete when supported for expandos or `cache` is not a window per isWindow (#10080) + /* jshint eqeqeq: false */ + } else if ( support.deleteExpando || cache != cache.window ) { + /* jshint eqeqeq: true */ + delete cache[ id ]; + + // When all else fails, undefined + } else { + cache[ id ] = undefined; + } +} + +jQuery.extend( { + cache: {}, + + // The following elements (space-suffixed to avoid Object.prototype collisions) + // throw uncatchable exceptions if you attempt to set expando properties + noData: { + "applet ": true, + "embed ": true, + + // ...but Flash objects (which have this classid) *can* handle expandos + "object ": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" + }, + + hasData: function( elem ) { + elem = elem.nodeType ? jQuery.cache[ elem[ jQuery.expando ] ] : elem[ jQuery.expando ]; + return !!elem && !isEmptyDataObject( elem ); + }, + + data: function( elem, name, data ) { + return internalData( elem, name, data ); + }, + + removeData: function( elem, name ) { + return internalRemoveData( elem, name ); + }, + + // For internal use only. + _data: function( elem, name, data ) { + return internalData( elem, name, data, true ); + }, + + _removeData: function( elem, name ) { + return internalRemoveData( elem, name, true ); + } +} ); + +jQuery.fn.extend( { + data: function( key, value ) { + var i, name, data, + elem = this[ 0 ], + attrs = elem && elem.attributes; + + // Special expections of .data basically thwart jQuery.access, + // so implement the relevant behavior ourselves + + // Gets all values + if ( key === undefined ) { + if ( this.length ) { + data = jQuery.data( elem ); + + if ( elem.nodeType === 1 && !jQuery._data( elem, "parsedAttrs" ) ) { + i = attrs.length; + while ( i-- ) { + + // Support: IE11+ + // The attrs elements can be null (#14894) + if ( attrs[ i ] ) { + name = attrs[ i ].name; + if ( name.indexOf( "data-" ) === 0 ) { + name = jQuery.camelCase( name.slice( 5 ) ); + dataAttr( elem, name, data[ name ] ); + } + } + } + jQuery._data( elem, "parsedAttrs", true ); + } + } + + return data; + } + + // Sets multiple values + if ( typeof key === "object" ) { + return this.each( function() { + jQuery.data( this, key ); + } ); + } + + return arguments.length > 1 ? + + // Sets one value + this.each( function() { + jQuery.data( this, key, value ); + } ) : + + // Gets one value + // Try to fetch any internally stored data first + elem ? dataAttr( elem, key, jQuery.data( elem, key ) ) : undefined; + }, + + removeData: function( key ) { + return this.each( function() { + jQuery.removeData( this, key ); + } ); + } +} ); + + +jQuery.extend( { + queue: function( elem, type, data ) { + var queue; + + if ( elem ) { + type = ( type || "fx" ) + "queue"; + queue = jQuery._data( elem, type ); + + // Speed up dequeue by getting out quickly if this is just a lookup + if ( data ) { + if ( !queue || jQuery.isArray( data ) ) { + queue = jQuery._data( elem, type, jQuery.makeArray( data ) ); + } else { + queue.push( data ); + } + } + return queue || []; + } + }, + + dequeue: function( elem, type ) { + type = type || "fx"; + + var queue = jQuery.queue( elem, type ), + startLength = queue.length, + fn = queue.shift(), + hooks = jQuery._queueHooks( elem, type ), + next = function() { + jQuery.dequeue( elem, type ); + }; + + // If the fx queue is dequeued, always remove the progress sentinel + if ( fn === "inprogress" ) { + fn = queue.shift(); + startLength--; + } + + if ( fn ) { + + // Add a progress sentinel to prevent the fx queue from being + // automatically dequeued + if ( type === "fx" ) { + queue.unshift( "inprogress" ); + } + + // clear up the last queue stop function + delete hooks.stop; + fn.call( elem, next, hooks ); + } + + if ( !startLength && hooks ) { + hooks.empty.fire(); + } + }, + + // not intended for public consumption - generates a queueHooks object, + // or returns the current one + _queueHooks: function( elem, type ) { + var key = type + "queueHooks"; + return jQuery._data( elem, key ) || jQuery._data( elem, key, { + empty: jQuery.Callbacks( "once memory" ).add( function() { + jQuery._removeData( elem, type + "queue" ); + jQuery._removeData( elem, key ); + } ) + } ); + } +} ); + +jQuery.fn.extend( { + queue: function( type, data ) { + var setter = 2; + + if ( typeof type !== "string" ) { + data = type; + type = "fx"; + setter--; + } + + if ( arguments.length < setter ) { + return jQuery.queue( this[ 0 ], type ); + } + + return data === undefined ? + this : + this.each( function() { + var queue = jQuery.queue( this, type, data ); + + // ensure a hooks for this queue + jQuery._queueHooks( this, type ); + + if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { + jQuery.dequeue( this, type ); + } + } ); + }, + dequeue: function( type ) { + return this.each( function() { + jQuery.dequeue( this, type ); + } ); + }, + clearQueue: function( type ) { + return this.queue( type || "fx", [] ); + }, + + // Get a promise resolved when queues of a certain type + // are emptied (fx is the type by default) + promise: function( type, obj ) { + var tmp, + count = 1, + defer = jQuery.Deferred(), + elements = this, + i = this.length, + resolve = function() { + if ( !( --count ) ) { + defer.resolveWith( elements, [ elements ] ); + } + }; + + if ( typeof type !== "string" ) { + obj = type; + type = undefined; + } + type = type || "fx"; + + while ( i-- ) { + tmp = jQuery._data( elements[ i ], type + "queueHooks" ); + if ( tmp && tmp.empty ) { + count++; + tmp.empty.add( resolve ); + } + } + resolve(); + return defer.promise( obj ); + } +} ); + + +( function() { + var shrinkWrapBlocksVal; + + support.shrinkWrapBlocks = function() { + if ( shrinkWrapBlocksVal != null ) { + return shrinkWrapBlocksVal; + } + + // Will be changed later if needed. + shrinkWrapBlocksVal = false; + + // Minified: var b,c,d + var div, body, container; + + body = document.getElementsByTagName( "body" )[ 0 ]; + if ( !body || !body.style ) { + + // Test fired too early or in an unsupported environment, exit. + return; + } + + // Setup + div = document.createElement( "div" ); + container = document.createElement( "div" ); + container.style.cssText = "position:absolute;border:0;width:0;height:0;top:0;left:-9999px"; + body.appendChild( container ).appendChild( div ); + + // Support: IE6 + // Check if elements with layout shrink-wrap their children + if ( typeof div.style.zoom !== "undefined" ) { + + // Reset CSS: box-sizing; display; margin; border + div.style.cssText = + + // Support: Firefox<29, Android 2.3 + // Vendor-prefix box-sizing + "-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" + + "box-sizing:content-box;display:block;margin:0;border:0;" + + "padding:1px;width:1px;zoom:1"; + div.appendChild( document.createElement( "div" ) ).style.width = "5px"; + shrinkWrapBlocksVal = div.offsetWidth !== 3; + } + + body.removeChild( container ); + + return shrinkWrapBlocksVal; + }; + +} )(); +var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; + +var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); + + +var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; + +var isHidden = function( elem, el ) { + + // isHidden might be called from jQuery#filter function; + // in that case, element will be second argument + elem = el || elem; + return jQuery.css( elem, "display" ) === "none" || + !jQuery.contains( elem.ownerDocument, elem ); + }; + + + +function adjustCSS( elem, prop, valueParts, tween ) { + var adjusted, + scale = 1, + maxIterations = 20, + currentValue = tween ? + function() { return tween.cur(); } : + function() { return jQuery.css( elem, prop, "" ); }, + initial = currentValue(), + unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), + + // Starting value computation is required for potential unit mismatches + initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && + rcssNum.exec( jQuery.css( elem, prop ) ); + + if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { + + // Trust units reported by jQuery.css + unit = unit || initialInUnit[ 3 ]; + + // Make sure we update the tween properties later on + valueParts = valueParts || []; + + // Iteratively approximate from a nonzero starting point + initialInUnit = +initial || 1; + + do { + + // If previous iteration zeroed out, double until we get *something*. + // Use string for doubling so we don't accidentally see scale as unchanged below + scale = scale || ".5"; + + // Adjust and apply + initialInUnit = initialInUnit / scale; + jQuery.style( elem, prop, initialInUnit + unit ); + + // Update scale, tolerating zero or NaN from tween.cur() + // Break the loop if scale is unchanged or perfect, or if we've just had enough. + } while ( + scale !== ( scale = currentValue() / initial ) && scale !== 1 && --maxIterations + ); + } + + if ( valueParts ) { + initialInUnit = +initialInUnit || +initial || 0; + + // Apply relative offset (+=/-=) if specified + adjusted = valueParts[ 1 ] ? + initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : + +valueParts[ 2 ]; + if ( tween ) { + tween.unit = unit; + tween.start = initialInUnit; + tween.end = adjusted; + } + } + return adjusted; +} + + +// Multifunctional method to get and set values of a collection +// The value/s can optionally be executed if it's a function +var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { + var i = 0, + length = elems.length, + bulk = key == null; + + // Sets many values + if ( jQuery.type( key ) === "object" ) { + chainable = true; + for ( i in key ) { + access( elems, fn, i, key[ i ], true, emptyGet, raw ); + } + + // Sets one value + } else if ( value !== undefined ) { + chainable = true; + + if ( !jQuery.isFunction( value ) ) { + raw = true; + } + + if ( bulk ) { + + // Bulk operations run against the entire set + if ( raw ) { + fn.call( elems, value ); + fn = null; + + // ...except when executing function values + } else { + bulk = fn; + fn = function( elem, key, value ) { + return bulk.call( jQuery( elem ), value ); + }; + } + } + + if ( fn ) { + for ( ; i < length; i++ ) { + fn( + elems[ i ], + key, + raw ? value : value.call( elems[ i ], i, fn( elems[ i ], key ) ) + ); + } + } + } + + return chainable ? + elems : + + // Gets + bulk ? + fn.call( elems ) : + length ? fn( elems[ 0 ], key ) : emptyGet; +}; +var rcheckableType = ( /^(?:checkbox|radio)$/i ); + +var rtagName = ( /<([\w:-]+)/ ); + +var rscriptType = ( /^$|\/(?:java|ecma)script/i ); + +var rleadingWhitespace = ( /^\s+/ ); + +var nodeNames = "abbr|article|aside|audio|bdi|canvas|data|datalist|" + + "details|dialog|figcaption|figure|footer|header|hgroup|main|" + + "mark|meter|nav|output|picture|progress|section|summary|template|time|video"; + + + +function createSafeFragment( document ) { + var list = nodeNames.split( "|" ), + safeFrag = document.createDocumentFragment(); + + if ( safeFrag.createElement ) { + while ( list.length ) { + safeFrag.createElement( + list.pop() + ); + } + } + return safeFrag; +} + + +( function() { + var div = document.createElement( "div" ), + fragment = document.createDocumentFragment(), + input = document.createElement( "input" ); + + // Setup + div.innerHTML = "
a"; + + // IE strips leading whitespace when .innerHTML is used + support.leadingWhitespace = div.firstChild.nodeType === 3; + + // Make sure that tbody elements aren't automatically inserted + // IE will insert them into empty tables + support.tbody = !div.getElementsByTagName( "tbody" ).length; + + // Make sure that link elements get serialized correctly by innerHTML + // This requires a wrapper element in IE + support.htmlSerialize = !!div.getElementsByTagName( "link" ).length; + + // Makes sure cloning an html5 element does not cause problems + // Where outerHTML is undefined, this still works + support.html5Clone = + document.createElement( "nav" ).cloneNode( true ).outerHTML !== "<:nav>"; + + // Check if a disconnected checkbox will retain its checked + // value of true after appended to the DOM (IE6/7) + input.type = "checkbox"; + input.checked = true; + fragment.appendChild( input ); + support.appendChecked = input.checked; + + // Make sure textarea (and checkbox) defaultValue is properly cloned + // Support: IE6-IE11+ + div.innerHTML = ""; + support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; + + // #11217 - WebKit loses check when the name is after the checked attribute + fragment.appendChild( div ); + + // Support: Windows Web Apps (WWA) + // `name` and `type` must use .setAttribute for WWA (#14901) + input = document.createElement( "input" ); + input.setAttribute( "type", "radio" ); + input.setAttribute( "checked", "checked" ); + input.setAttribute( "name", "t" ); + + div.appendChild( input ); + + // Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3 + // old WebKit doesn't clone checked state correctly in fragments + support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; + + // Support: IE<9 + // Cloned elements keep attachEvent handlers, we use addEventListener on IE9+ + support.noCloneEvent = !!div.addEventListener; + + // Support: IE<9 + // Since attributes and properties are the same in IE, + // cleanData must set properties to undefined rather than use removeAttribute + div[ jQuery.expando ] = 1; + support.attributes = !div.getAttribute( jQuery.expando ); +} )(); + + +// We have to close these tags to support XHTML (#13200) +var wrapMap = { + option: [ 1, "" ], + legend: [ 1, "

", "
" ], + area: [ 1, "", "" ], + + // Support: IE8 + param: [ 1, "", "" ], + thead: [ 1, "", "
" ], + tr: [ 2, "", "
" ], + col: [ 2, "", "
" ], + td: [ 3, "", "
" ], + + // IE6-8 can't serialize link, script, style, or any html5 (NoScope) tags, + // unless wrapped in a div with non-breaking characters in front of it. + _default: support.htmlSerialize ? [ 0, "", "" ] : [ 1, "X
", "
" ] +}; + +// Support: IE8-IE9 +wrapMap.optgroup = wrapMap.option; + +wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; +wrapMap.th = wrapMap.td; + + +function getAll( context, tag ) { + var elems, elem, + i = 0, + found = typeof context.getElementsByTagName !== "undefined" ? + context.getElementsByTagName( tag || "*" ) : + typeof context.querySelectorAll !== "undefined" ? + context.querySelectorAll( tag || "*" ) : + undefined; + + if ( !found ) { + for ( found = [], elems = context.childNodes || context; + ( elem = elems[ i ] ) != null; + i++ + ) { + if ( !tag || jQuery.nodeName( elem, tag ) ) { + found.push( elem ); + } else { + jQuery.merge( found, getAll( elem, tag ) ); + } + } + } + + return tag === undefined || tag && jQuery.nodeName( context, tag ) ? + jQuery.merge( [ context ], found ) : + found; +} + + +// Mark scripts as having already been evaluated +function setGlobalEval( elems, refElements ) { + var elem, + i = 0; + for ( ; ( elem = elems[ i ] ) != null; i++ ) { + jQuery._data( + elem, + "globalEval", + !refElements || jQuery._data( refElements[ i ], "globalEval" ) + ); + } +} + + +var rhtml = /<|&#?\w+;/, + rtbody = / from table fragments + if ( !support.tbody ) { + + // String was a , *may* have spurious + elem = tag === "table" && !rtbody.test( elem ) ? + tmp.firstChild : + + // String was a bare or + wrap[ 1 ] === "
" && !rtbody.test( elem ) ? + tmp : + 0; + + j = elem && elem.childNodes.length; + while ( j-- ) { + if ( jQuery.nodeName( ( tbody = elem.childNodes[ j ] ), "tbody" ) && + !tbody.childNodes.length ) { + + elem.removeChild( tbody ); + } + } + } + + jQuery.merge( nodes, tmp.childNodes ); + + // Fix #12392 for WebKit and IE > 9 + tmp.textContent = ""; + + // Fix #12392 for oldIE + while ( tmp.firstChild ) { + tmp.removeChild( tmp.firstChild ); + } + + // Remember the top-level container for proper cleanup + tmp = safe.lastChild; + } + } + } + + // Fix #11356: Clear elements from fragment + if ( tmp ) { + safe.removeChild( tmp ); + } + + // Reset defaultChecked for any radios and checkboxes + // about to be appended to the DOM in IE 6/7 (#8060) + if ( !support.appendChecked ) { + jQuery.grep( getAll( nodes, "input" ), fixDefaultChecked ); + } + + i = 0; + while ( ( elem = nodes[ i++ ] ) ) { + + // Skip elements already in the context collection (trac-4087) + if ( selection && jQuery.inArray( elem, selection ) > -1 ) { + if ( ignored ) { + ignored.push( elem ); + } + + continue; + } + + contains = jQuery.contains( elem.ownerDocument, elem ); + + // Append to fragment + tmp = getAll( safe.appendChild( elem ), "script" ); + + // Preserve script evaluation history + if ( contains ) { + setGlobalEval( tmp ); + } + + // Capture executables + if ( scripts ) { + j = 0; + while ( ( elem = tmp[ j++ ] ) ) { + if ( rscriptType.test( elem.type || "" ) ) { + scripts.push( elem ); + } + } + } + } + + tmp = null; + + return safe; +} + + +( function() { + var i, eventName, + div = document.createElement( "div" ); + + // Support: IE<9 (lack submit/change bubble), Firefox (lack focus(in | out) events) + for ( i in { submit: true, change: true, focusin: true } ) { + eventName = "on" + i; + + if ( !( support[ i ] = eventName in window ) ) { + + // Beware of CSP restrictions (https://developer.mozilla.org/en/Security/CSP) + div.setAttribute( eventName, "t" ); + support[ i ] = div.attributes[ eventName ].expando === false; + } + } + + // Null elements to avoid leaks in IE. + div = null; +} )(); + + +var rformElems = /^(?:input|select|textarea)$/i, + rkeyEvent = /^key/, + rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, + rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, + rtypenamespace = /^([^.]*)(?:\.(.+)|)/; + +function returnTrue() { + return true; +} + +function returnFalse() { + return false; +} + +// Support: IE9 +// See #13393 for more info +function safeActiveElement() { + try { + return document.activeElement; + } catch ( err ) { } +} + +function on( elem, types, selector, data, fn, one ) { + var origFn, type; + + // Types can be a map of types/handlers + if ( typeof types === "object" ) { + + // ( types-Object, selector, data ) + if ( typeof selector !== "string" ) { + + // ( types-Object, data ) + data = data || selector; + selector = undefined; + } + for ( type in types ) { + on( elem, type, selector, data, types[ type ], one ); + } + return elem; + } + + if ( data == null && fn == null ) { + + // ( types, fn ) + fn = selector; + data = selector = undefined; + } else if ( fn == null ) { + if ( typeof selector === "string" ) { + + // ( types, selector, fn ) + fn = data; + data = undefined; + } else { + + // ( types, data, fn ) + fn = data; + data = selector; + selector = undefined; + } + } + if ( fn === false ) { + fn = returnFalse; + } else if ( !fn ) { + return elem; + } + + if ( one === 1 ) { + origFn = fn; + fn = function( event ) { + + // Can use an empty set, since event contains the info + jQuery().off( event ); + return origFn.apply( this, arguments ); + }; + + // Use same guid so caller can remove using origFn + fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); + } + return elem.each( function() { + jQuery.event.add( this, types, fn, data, selector ); + } ); +} + +/* + * Helper functions for managing events -- not part of the public interface. + * Props to Dean Edwards' addEvent library for many of the ideas. + */ +jQuery.event = { + + global: {}, + + add: function( elem, types, handler, data, selector ) { + var tmp, events, t, handleObjIn, + special, eventHandle, handleObj, + handlers, type, namespaces, origType, + elemData = jQuery._data( elem ); + + // Don't attach events to noData or text/comment nodes (but allow plain objects) + if ( !elemData ) { + return; + } + + // Caller can pass in an object of custom data in lieu of the handler + if ( handler.handler ) { + handleObjIn = handler; + handler = handleObjIn.handler; + selector = handleObjIn.selector; + } + + // Make sure that the handler has a unique ID, used to find/remove it later + if ( !handler.guid ) { + handler.guid = jQuery.guid++; + } + + // Init the element's event structure and main handler, if this is the first + if ( !( events = elemData.events ) ) { + events = elemData.events = {}; + } + if ( !( eventHandle = elemData.handle ) ) { + eventHandle = elemData.handle = function( e ) { + + // Discard the second event of a jQuery.event.trigger() and + // when an event is called after a page has unloaded + return typeof jQuery !== "undefined" && + ( !e || jQuery.event.triggered !== e.type ) ? + jQuery.event.dispatch.apply( eventHandle.elem, arguments ) : + undefined; + }; + + // Add elem as a property of the handle fn to prevent a memory leak + // with IE non-native events + eventHandle.elem = elem; + } + + // Handle multiple events separated by a space + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // There *must* be a type, no attaching namespace-only handlers + if ( !type ) { + continue; + } + + // If event changes its type, use the special event handlers for the changed type + special = jQuery.event.special[ type ] || {}; + + // If selector defined, determine special event api type, otherwise given type + type = ( selector ? special.delegateType : special.bindType ) || type; + + // Update special based on newly reset type + special = jQuery.event.special[ type ] || {}; + + // handleObj is passed to all event handlers + handleObj = jQuery.extend( { + type: type, + origType: origType, + data: data, + handler: handler, + guid: handler.guid, + selector: selector, + needsContext: selector && jQuery.expr.match.needsContext.test( selector ), + namespace: namespaces.join( "." ) + }, handleObjIn ); + + // Init the event handler queue if we're the first + if ( !( handlers = events[ type ] ) ) { + handlers = events[ type ] = []; + handlers.delegateCount = 0; + + // Only use addEventListener/attachEvent if the special events handler returns false + if ( !special.setup || + special.setup.call( elem, data, namespaces, eventHandle ) === false ) { + + // Bind the global event handler to the element + if ( elem.addEventListener ) { + elem.addEventListener( type, eventHandle, false ); + + } else if ( elem.attachEvent ) { + elem.attachEvent( "on" + type, eventHandle ); + } + } + } + + if ( special.add ) { + special.add.call( elem, handleObj ); + + if ( !handleObj.handler.guid ) { + handleObj.handler.guid = handler.guid; + } + } + + // Add to the element's handler list, delegates in front + if ( selector ) { + handlers.splice( handlers.delegateCount++, 0, handleObj ); + } else { + handlers.push( handleObj ); + } + + // Keep track of which events have ever been used, for event optimization + jQuery.event.global[ type ] = true; + } + + // Nullify elem to prevent memory leaks in IE + elem = null; + }, + + // Detach an event or set of events from an element + remove: function( elem, types, handler, selector, mappedTypes ) { + var j, handleObj, tmp, + origCount, t, events, + special, handlers, type, + namespaces, origType, + elemData = jQuery.hasData( elem ) && jQuery._data( elem ); + + if ( !elemData || !( events = elemData.events ) ) { + return; + } + + // Once for each type.namespace in types; type may be omitted + types = ( types || "" ).match( rnotwhite ) || [ "" ]; + t = types.length; + while ( t-- ) { + tmp = rtypenamespace.exec( types[ t ] ) || []; + type = origType = tmp[ 1 ]; + namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); + + // Unbind all events (on this namespace, if provided) for the element + if ( !type ) { + for ( type in events ) { + jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); + } + continue; + } + + special = jQuery.event.special[ type ] || {}; + type = ( selector ? special.delegateType : special.bindType ) || type; + handlers = events[ type ] || []; + tmp = tmp[ 2 ] && + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); + + // Remove matching events + origCount = j = handlers.length; + while ( j-- ) { + handleObj = handlers[ j ]; + + if ( ( mappedTypes || origType === handleObj.origType ) && + ( !handler || handler.guid === handleObj.guid ) && + ( !tmp || tmp.test( handleObj.namespace ) ) && + ( !selector || selector === handleObj.selector || + selector === "**" && handleObj.selector ) ) { + handlers.splice( j, 1 ); + + if ( handleObj.selector ) { + handlers.delegateCount--; + } + if ( special.remove ) { + special.remove.call( elem, handleObj ); + } + } + } + + // Remove generic event handler if we removed something and no more handlers exist + // (avoids potential for endless recursion during removal of special event handlers) + if ( origCount && !handlers.length ) { + if ( !special.teardown || + special.teardown.call( elem, namespaces, elemData.handle ) === false ) { + + jQuery.removeEvent( elem, type, elemData.handle ); + } + + delete events[ type ]; + } + } + + // Remove the expando if it's no longer used + if ( jQuery.isEmptyObject( events ) ) { + delete elemData.handle; + + // removeData also checks for emptiness and clears the expando if empty + // so use it instead of delete + jQuery._removeData( elem, "events" ); + } + }, + + trigger: function( event, data, elem, onlyHandlers ) { + var handle, ontype, cur, + bubbleType, special, tmp, i, + eventPath = [ elem || document ], + type = hasOwn.call( event, "type" ) ? event.type : event, + namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; + + cur = tmp = elem = elem || document; + + // Don't do events on text and comment nodes + if ( elem.nodeType === 3 || elem.nodeType === 8 ) { + return; + } + + // focus/blur morphs to focusin/out; ensure we're not firing them right now + if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { + return; + } + + if ( type.indexOf( "." ) > -1 ) { + + // Namespaced trigger; create a regexp to match event type in handle() + namespaces = type.split( "." ); + type = namespaces.shift(); + namespaces.sort(); + } + ontype = type.indexOf( ":" ) < 0 && "on" + type; + + // Caller can pass in a jQuery.Event object, Object, or just an event type string + event = event[ jQuery.expando ] ? + event : + new jQuery.Event( type, typeof event === "object" && event ); + + // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) + event.isTrigger = onlyHandlers ? 2 : 3; + event.namespace = namespaces.join( "." ); + event.rnamespace = event.namespace ? + new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : + null; + + // Clean up the event in case it is being reused + event.result = undefined; + if ( !event.target ) { + event.target = elem; + } + + // Clone any incoming data and prepend the event, creating the handler arg list + data = data == null ? + [ event ] : + jQuery.makeArray( data, [ event ] ); + + // Allow special events to draw outside the lines + special = jQuery.event.special[ type ] || {}; + if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { + return; + } + + // Determine event propagation path in advance, per W3C events spec (#9951) + // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) + if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) { + + bubbleType = special.delegateType || type; + if ( !rfocusMorph.test( bubbleType + type ) ) { + cur = cur.parentNode; + } + for ( ; cur; cur = cur.parentNode ) { + eventPath.push( cur ); + tmp = cur; + } + + // Only add window if we got to document (e.g., not plain obj or detached DOM) + if ( tmp === ( elem.ownerDocument || document ) ) { + eventPath.push( tmp.defaultView || tmp.parentWindow || window ); + } + } + + // Fire handlers on the event path + i = 0; + while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { + + event.type = i > 1 ? + bubbleType : + special.bindType || type; + + // jQuery handler + handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && + jQuery._data( cur, "handle" ); + + if ( handle ) { + handle.apply( cur, data ); + } + + // Native handler + handle = ontype && cur[ ontype ]; + if ( handle && handle.apply && acceptData( cur ) ) { + event.result = handle.apply( cur, data ); + if ( event.result === false ) { + event.preventDefault(); + } + } + } + event.type = type; + + // If nobody prevented the default action, do it now + if ( !onlyHandlers && !event.isDefaultPrevented() ) { + + if ( + ( !special._default || + special._default.apply( eventPath.pop(), data ) === false + ) && acceptData( elem ) + ) { + + // Call a native DOM method on the target with the same name name as the event. + // Can't use an .isFunction() check here because IE6/7 fails that test. + // Don't do default actions on window, that's where global variables be (#6170) + if ( ontype && elem[ type ] && !jQuery.isWindow( elem ) ) { + + // Don't re-trigger an onFOO event when we call its FOO() method + tmp = elem[ ontype ]; + + if ( tmp ) { + elem[ ontype ] = null; + } + + // Prevent re-triggering of the same event, since we already bubbled it above + jQuery.event.triggered = type; + try { + elem[ type ](); + } catch ( e ) { + + // IE<9 dies on focus/blur to hidden element (#1486,#12518) + // only reproducible on winXP IE8 native, not IE9 in IE8 mode + } + jQuery.event.triggered = undefined; + + if ( tmp ) { + elem[ ontype ] = tmp; + } + } + } + } + + return event.result; + }, + + dispatch: function( event ) { + + // Make a writable jQuery.Event from the native event object + event = jQuery.event.fix( event ); + + var i, j, ret, matched, handleObj, + handlerQueue = [], + args = slice.call( arguments ), + handlers = ( jQuery._data( this, "events" ) || {} )[ event.type ] || [], + special = jQuery.event.special[ event.type ] || {}; + + // Use the fix-ed jQuery.Event rather than the (read-only) native event + args[ 0 ] = event; + event.delegateTarget = this; + + // Call the preDispatch hook for the mapped type, and let it bail if desired + if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { + return; + } + + // Determine handlers + handlerQueue = jQuery.event.handlers.call( this, event, handlers ); + + // Run delegates first; they may want to stop propagation beneath us + i = 0; + while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { + event.currentTarget = matched.elem; + + j = 0; + while ( ( handleObj = matched.handlers[ j++ ] ) && + !event.isImmediatePropagationStopped() ) { + + // Triggered event must either 1) have no namespace, or 2) have namespace(s) + // a subset or equal to those in the bound event (both can have no namespace). + if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { + + event.handleObj = handleObj; + event.data = handleObj.data; + + ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || + handleObj.handler ).apply( matched.elem, args ); + + if ( ret !== undefined ) { + if ( ( event.result = ret ) === false ) { + event.preventDefault(); + event.stopPropagation(); + } + } + } + } + } + + // Call the postDispatch hook for the mapped type + if ( special.postDispatch ) { + special.postDispatch.call( this, event ); + } + + return event.result; + }, + + handlers: function( event, handlers ) { + var i, matches, sel, handleObj, + handlerQueue = [], + delegateCount = handlers.delegateCount, + cur = event.target; + + // Support (at least): Chrome, IE9 + // Find delegate handlers + // Black-hole SVG instance trees (#13180) + // + // Support: Firefox<=42+ + // Avoid non-left-click in FF but don't block IE radio events (#3861, gh-2343) + if ( delegateCount && cur.nodeType && + ( event.type !== "click" || isNaN( event.button ) || event.button < 1 ) ) { + + /* jshint eqeqeq: false */ + for ( ; cur != this; cur = cur.parentNode || this ) { + /* jshint eqeqeq: true */ + + // Don't check non-elements (#13208) + // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) + if ( cur.nodeType === 1 && ( cur.disabled !== true || event.type !== "click" ) ) { + matches = []; + for ( i = 0; i < delegateCount; i++ ) { + handleObj = handlers[ i ]; + + // Don't conflict with Object.prototype properties (#13203) + sel = handleObj.selector + " "; + + if ( matches[ sel ] === undefined ) { + matches[ sel ] = handleObj.needsContext ? + jQuery( sel, this ).index( cur ) > -1 : + jQuery.find( sel, this, null, [ cur ] ).length; + } + if ( matches[ sel ] ) { + matches.push( handleObj ); + } + } + if ( matches.length ) { + handlerQueue.push( { elem: cur, handlers: matches } ); + } + } + } + } + + // Add the remaining (directly-bound) handlers + if ( delegateCount < handlers.length ) { + handlerQueue.push( { elem: this, handlers: handlers.slice( delegateCount ) } ); + } + + return handlerQueue; + }, + + fix: function( event ) { + if ( event[ jQuery.expando ] ) { + return event; + } + + // Create a writable copy of the event object and normalize some properties + var i, prop, copy, + type = event.type, + originalEvent = event, + fixHook = this.fixHooks[ type ]; + + if ( !fixHook ) { + this.fixHooks[ type ] = fixHook = + rmouseEvent.test( type ) ? this.mouseHooks : + rkeyEvent.test( type ) ? this.keyHooks : + {}; + } + copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props; + + event = new jQuery.Event( originalEvent ); + + i = copy.length; + while ( i-- ) { + prop = copy[ i ]; + event[ prop ] = originalEvent[ prop ]; + } + + // Support: IE<9 + // Fix target property (#1925) + if ( !event.target ) { + event.target = originalEvent.srcElement || document; + } + + // Support: Safari 6-8+ + // Target should not be a text node (#504, #13143) + if ( event.target.nodeType === 3 ) { + event.target = event.target.parentNode; + } + + // Support: IE<9 + // For mouse/key events, metaKey==false if it's undefined (#3368, #11328) + event.metaKey = !!event.metaKey; + + return fixHook.filter ? fixHook.filter( event, originalEvent ) : event; + }, + + // Includes some event props shared by KeyEvent and MouseEvent + props: ( "altKey bubbles cancelable ctrlKey currentTarget detail eventPhase " + + "metaKey relatedTarget shiftKey target timeStamp view which" ).split( " " ), + + fixHooks: {}, + + keyHooks: { + props: "char charCode key keyCode".split( " " ), + filter: function( event, original ) { + + // Add which for key events + if ( event.which == null ) { + event.which = original.charCode != null ? original.charCode : original.keyCode; + } + + return event; + } + }, + + mouseHooks: { + props: ( "button buttons clientX clientY fromElement offsetX offsetY " + + "pageX pageY screenX screenY toElement" ).split( " " ), + filter: function( event, original ) { + var body, eventDoc, doc, + button = original.button, + fromElement = original.fromElement; + + // Calculate pageX/Y if missing and clientX/Y available + if ( event.pageX == null && original.clientX != null ) { + eventDoc = event.target.ownerDocument || document; + doc = eventDoc.documentElement; + body = eventDoc.body; + + event.pageX = original.clientX + + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - + ( doc && doc.clientLeft || body && body.clientLeft || 0 ); + event.pageY = original.clientY + + ( doc && doc.scrollTop || body && body.scrollTop || 0 ) - + ( doc && doc.clientTop || body && body.clientTop || 0 ); + } + + // Add relatedTarget, if necessary + if ( !event.relatedTarget && fromElement ) { + event.relatedTarget = fromElement === event.target ? + original.toElement : + fromElement; + } + + // Add which for click: 1 === left; 2 === middle; 3 === right + // Note: button is not normalized, so don't use it + if ( !event.which && button !== undefined ) { + event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) ); + } + + return event; + } + }, + + special: { + load: { + + // Prevent triggered image.load events from bubbling to window.load + noBubble: true + }, + focus: { + + // Fire native event if possible so blur/focus sequence is correct + trigger: function() { + if ( this !== safeActiveElement() && this.focus ) { + try { + this.focus(); + return false; + } catch ( e ) { + + // Support: IE<9 + // If we error on focus to hidden element (#1486, #12518), + // let .trigger() run the handlers + } + } + }, + delegateType: "focusin" + }, + blur: { + trigger: function() { + if ( this === safeActiveElement() && this.blur ) { + this.blur(); + return false; + } + }, + delegateType: "focusout" + }, + click: { + + // For checkbox, fire native event so checked state will be right + trigger: function() { + if ( jQuery.nodeName( this, "input" ) && this.type === "checkbox" && this.click ) { + this.click(); + return false; + } + }, + + // For cross-browser consistency, don't fire native .click() on links + _default: function( event ) { + return jQuery.nodeName( event.target, "a" ); + } + }, + + beforeunload: { + postDispatch: function( event ) { + + // Support: Firefox 20+ + // Firefox doesn't alert if the returnValue field is not set. + if ( event.result !== undefined && event.originalEvent ) { + event.originalEvent.returnValue = event.result; + } + } + } + }, + + // Piggyback on a donor event to simulate a different one + simulate: function( type, elem, event ) { + var e = jQuery.extend( + new jQuery.Event(), + event, + { + type: type, + isSimulated: true + + // Previously, `originalEvent: {}` was set here, so stopPropagation call + // would not be triggered on donor event, since in our own + // jQuery.event.stopPropagation function we had a check for existence of + // originalEvent.stopPropagation method, so, consequently it would be a noop. + // + // Guard for simulated events was moved to jQuery.event.stopPropagation function + // since `originalEvent` should point to the original event for the + // constancy with other events and for more focused logic + } + ); + + jQuery.event.trigger( e, null, elem ); + + if ( e.isDefaultPrevented() ) { + event.preventDefault(); + } + } +}; + +jQuery.removeEvent = document.removeEventListener ? + function( elem, type, handle ) { + + // This "if" is needed for plain objects + if ( elem.removeEventListener ) { + elem.removeEventListener( type, handle ); + } + } : + function( elem, type, handle ) { + var name = "on" + type; + + if ( elem.detachEvent ) { + + // #8545, #7054, preventing memory leaks for custom events in IE6-8 + // detachEvent needed property on element, by name of that event, + // to properly expose it to GC + if ( typeof elem[ name ] === "undefined" ) { + elem[ name ] = null; + } + + elem.detachEvent( name, handle ); + } + }; + +jQuery.Event = function( src, props ) { + + // Allow instantiation without the 'new' keyword + if ( !( this instanceof jQuery.Event ) ) { + return new jQuery.Event( src, props ); + } + + // Event object + if ( src && src.type ) { + this.originalEvent = src; + this.type = src.type; + + // Events bubbling up the document may have been marked as prevented + // by a handler lower down the tree; reflect the correct value. + this.isDefaultPrevented = src.defaultPrevented || + src.defaultPrevented === undefined && + + // Support: IE < 9, Android < 4.0 + src.returnValue === false ? + returnTrue : + returnFalse; + + // Event type + } else { + this.type = src; + } + + // Put explicitly provided properties onto the event object + if ( props ) { + jQuery.extend( this, props ); + } + + // Create a timestamp if incoming event doesn't have one + this.timeStamp = src && src.timeStamp || jQuery.now(); + + // Mark it as fixed + this[ jQuery.expando ] = true; +}; + +// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding +// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html +jQuery.Event.prototype = { + constructor: jQuery.Event, + isDefaultPrevented: returnFalse, + isPropagationStopped: returnFalse, + isImmediatePropagationStopped: returnFalse, + + preventDefault: function() { + var e = this.originalEvent; + + this.isDefaultPrevented = returnTrue; + if ( !e ) { + return; + } + + // If preventDefault exists, run it on the original event + if ( e.preventDefault ) { + e.preventDefault(); + + // Support: IE + // Otherwise set the returnValue property of the original event to false + } else { + e.returnValue = false; + } + }, + stopPropagation: function() { + var e = this.originalEvent; + + this.isPropagationStopped = returnTrue; + + if ( !e || this.isSimulated ) { + return; + } + + // If stopPropagation exists, run it on the original event + if ( e.stopPropagation ) { + e.stopPropagation(); + } + + // Support: IE + // Set the cancelBubble property of the original event to true + e.cancelBubble = true; + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + + this.isImmediatePropagationStopped = returnTrue; + + if ( e && e.stopImmediatePropagation ) { + e.stopImmediatePropagation(); + } + + this.stopPropagation(); + } +}; + +// Create mouseenter/leave events using mouseover/out and event-time checks +// so that event delegation works in jQuery. +// Do the same for pointerenter/pointerleave and pointerover/pointerout +// +// Support: Safari 7 only +// Safari sends mouseenter too often; see: +// https://code.google.com/p/chromium/issues/detail?id=470258 +// for the description of the bug (it existed in older Chrome versions as well). +jQuery.each( { + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" +}, function( orig, fix ) { + jQuery.event.special[ orig ] = { + delegateType: fix, + bindType: fix, + + handle: function( event ) { + var ret, + target = this, + related = event.relatedTarget, + handleObj = event.handleObj; + + // For mouseenter/leave call the handler if related is outside the target. + // NB: No relatedTarget if the mouse left/entered the browser window + if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { + event.type = handleObj.origType; + ret = handleObj.handler.apply( this, arguments ); + event.type = fix; + } + return ret; + } + }; +} ); + +// IE submit delegation +if ( !support.submit ) { + + jQuery.event.special.submit = { + setup: function() { + + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Lazy-add a submit handler when a descendant form may potentially be submitted + jQuery.event.add( this, "click._submit keypress._submit", function( e ) { + + // Node name check avoids a VML-related crash in IE (#9807) + var elem = e.target, + form = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? + + // Support: IE <=8 + // We use jQuery.prop instead of elem.form + // to allow fixing the IE8 delegated submit issue (gh-2332) + // by 3rd party polyfills/workarounds. + jQuery.prop( elem, "form" ) : + undefined; + + if ( form && !jQuery._data( form, "submit" ) ) { + jQuery.event.add( form, "submit._submit", function( event ) { + event._submitBubble = true; + } ); + jQuery._data( form, "submit", true ); + } + } ); + + // return undefined since we don't need an event listener + }, + + postDispatch: function( event ) { + + // If form was submitted by the user, bubble the event up the tree + if ( event._submitBubble ) { + delete event._submitBubble; + if ( this.parentNode && !event.isTrigger ) { + jQuery.event.simulate( "submit", this.parentNode, event ); + } + } + }, + + teardown: function() { + + // Only need this for delegated form submit events + if ( jQuery.nodeName( this, "form" ) ) { + return false; + } + + // Remove delegated handlers; cleanData eventually reaps submit handlers attached above + jQuery.event.remove( this, "._submit" ); + } + }; +} + +// IE change delegation and checkbox/radio fix +if ( !support.change ) { + + jQuery.event.special.change = { + + setup: function() { + + if ( rformElems.test( this.nodeName ) ) { + + // IE doesn't fire change on a check/radio until blur; trigger it on click + // after a propertychange. Eat the blur-change in special.change.handle. + // This still fires onchange a second time for check/radio after blur. + if ( this.type === "checkbox" || this.type === "radio" ) { + jQuery.event.add( this, "propertychange._change", function( event ) { + if ( event.originalEvent.propertyName === "checked" ) { + this._justChanged = true; + } + } ); + jQuery.event.add( this, "click._change", function( event ) { + if ( this._justChanged && !event.isTrigger ) { + this._justChanged = false; + } + + // Allow triggered, simulated change events (#11500) + jQuery.event.simulate( "change", this, event ); + } ); + } + return false; + } + + // Delegated event; lazy-add a change handler on descendant inputs + jQuery.event.add( this, "beforeactivate._change", function( e ) { + var elem = e.target; + + if ( rformElems.test( elem.nodeName ) && !jQuery._data( elem, "change" ) ) { + jQuery.event.add( elem, "change._change", function( event ) { + if ( this.parentNode && !event.isSimulated && !event.isTrigger ) { + jQuery.event.simulate( "change", this.parentNode, event ); + } + } ); + jQuery._data( elem, "change", true ); + } + } ); + }, + + handle: function( event ) { + var elem = event.target; + + // Swallow native change events from checkbox/radio, we already triggered them above + if ( this !== elem || event.isSimulated || event.isTrigger || + ( elem.type !== "radio" && elem.type !== "checkbox" ) ) { + + return event.handleObj.handler.apply( this, arguments ); + } + }, + + teardown: function() { + jQuery.event.remove( this, "._change" ); + + return !rformElems.test( this.nodeName ); + } + }; +} + +// Support: Firefox +// Firefox doesn't have focus(in | out) events +// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 +// +// Support: Chrome, Safari +// focus(in | out) events fire after focus & blur events, +// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order +// Related ticket - https://code.google.com/p/chromium/issues/detail?id=449857 +if ( !support.focusin ) { + jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { + + // Attach a single capturing handler on the document while someone wants focusin/focusout + var handler = function( event ) { + jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); + }; + + jQuery.event.special[ fix ] = { + setup: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ); + + if ( !attaches ) { + doc.addEventListener( orig, handler, true ); + } + jQuery._data( doc, fix, ( attaches || 0 ) + 1 ); + }, + teardown: function() { + var doc = this.ownerDocument || this, + attaches = jQuery._data( doc, fix ) - 1; + + if ( !attaches ) { + doc.removeEventListener( orig, handler, true ); + jQuery._removeData( doc, fix ); + } else { + jQuery._data( doc, fix, attaches ); + } + } + }; + } ); +} + +jQuery.fn.extend( { + + on: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn ); + }, + one: function( types, selector, data, fn ) { + return on( this, types, selector, data, fn, 1 ); + }, + off: function( types, selector, fn ) { + var handleObj, type; + if ( types && types.preventDefault && types.handleObj ) { + + // ( event ) dispatched jQuery.Event + handleObj = types.handleObj; + jQuery( types.delegateTarget ).off( + handleObj.namespace ? + handleObj.origType + "." + handleObj.namespace : + handleObj.origType, + handleObj.selector, + handleObj.handler + ); + return this; + } + if ( typeof types === "object" ) { + + // ( types-object [, selector] ) + for ( type in types ) { + this.off( type, selector, types[ type ] ); + } + return this; + } + if ( selector === false || typeof selector === "function" ) { + + // ( types [, fn] ) + fn = selector; + selector = undefined; + } + if ( fn === false ) { + fn = returnFalse; + } + return this.each( function() { + jQuery.event.remove( this, types, fn, selector ); + } ); + }, + + trigger: function( type, data ) { + return this.each( function() { + jQuery.event.trigger( type, data, this ); + } ); + }, + triggerHandler: function( type, data ) { + var elem = this[ 0 ]; + if ( elem ) { + return jQuery.event.trigger( type, data, elem, true ); + } + } +} ); + + +var rinlinejQuery = / jQuery\d+="(?:null|\d+)"/g, + rnoshimcache = new RegExp( "<(?:" + nodeNames + ")[\\s/>]", "i" ), + rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi, + + // Support: IE 10-11, Edge 10240+ + // In IE/Edge using regex groups here causes severe slowdowns. + // See https://connect.microsoft.com/IE/feedback/details/1736512/ + rnoInnerhtml = /\s*$/g, + safeFragment = createSafeFragment( document ), + fragmentDiv = safeFragment.appendChild( document.createElement( "div" ) ); + +// Support: IE<8 +// Manipulating tables requires a tbody +function manipulationTarget( elem, content ) { + return jQuery.nodeName( elem, "table" ) && + jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ? + + elem.getElementsByTagName( "tbody" )[ 0 ] || + elem.appendChild( elem.ownerDocument.createElement( "tbody" ) ) : + elem; +} + +// Replace/restore the type attribute of script elements for safe DOM manipulation +function disableScript( elem ) { + elem.type = ( jQuery.find.attr( elem, "type" ) !== null ) + "/" + elem.type; + return elem; +} +function restoreScript( elem ) { + var match = rscriptTypeMasked.exec( elem.type ); + if ( match ) { + elem.type = match[ 1 ]; + } else { + elem.removeAttribute( "type" ); + } + return elem; +} + +function cloneCopyEvent( src, dest ) { + if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) { + return; + } + + var type, i, l, + oldData = jQuery._data( src ), + curData = jQuery._data( dest, oldData ), + events = oldData.events; + + if ( events ) { + delete curData.handle; + curData.events = {}; + + for ( type in events ) { + for ( i = 0, l = events[ type ].length; i < l; i++ ) { + jQuery.event.add( dest, type, events[ type ][ i ] ); + } + } + } + + // make the cloned public data object a copy from the original + if ( curData.data ) { + curData.data = jQuery.extend( {}, curData.data ); + } +} + +function fixCloneNodeIssues( src, dest ) { + var nodeName, e, data; + + // We do not need to do anything for non-Elements + if ( dest.nodeType !== 1 ) { + return; + } + + nodeName = dest.nodeName.toLowerCase(); + + // IE6-8 copies events bound via attachEvent when using cloneNode. + if ( !support.noCloneEvent && dest[ jQuery.expando ] ) { + data = jQuery._data( dest ); + + for ( e in data.events ) { + jQuery.removeEvent( dest, e, data.handle ); + } + + // Event data gets referenced instead of copied if the expando gets copied too + dest.removeAttribute( jQuery.expando ); + } + + // IE blanks contents when cloning scripts, and tries to evaluate newly-set text + if ( nodeName === "script" && dest.text !== src.text ) { + disableScript( dest ).text = src.text; + restoreScript( dest ); + + // IE6-10 improperly clones children of object elements using classid. + // IE10 throws NoModificationAllowedError if parent is null, #12132. + } else if ( nodeName === "object" ) { + if ( dest.parentNode ) { + dest.outerHTML = src.outerHTML; + } + + // This path appears unavoidable for IE9. When cloning an object + // element in IE9, the outerHTML strategy above is not sufficient. + // If the src has innerHTML and the destination does not, + // copy the src.innerHTML into the dest.innerHTML. #10324 + if ( support.html5Clone && ( src.innerHTML && !jQuery.trim( dest.innerHTML ) ) ) { + dest.innerHTML = src.innerHTML; + } + + } else if ( nodeName === "input" && rcheckableType.test( src.type ) ) { + + // IE6-8 fails to persist the checked state of a cloned checkbox + // or radio button. Worse, IE6-7 fail to give the cloned element + // a checked appearance if the defaultChecked value isn't also set + + dest.defaultChecked = dest.checked = src.checked; + + // IE6-7 get confused and end up setting the value of a cloned + // checkbox/radio button to an empty string instead of "on" + if ( dest.value !== src.value ) { + dest.value = src.value; + } + + // IE6-8 fails to return the selected option to the default selected + // state when cloning options + } else if ( nodeName === "option" ) { + dest.defaultSelected = dest.selected = src.defaultSelected; + + // IE6-8 fails to set the defaultValue to the correct value when + // cloning other types of input fields + } else if ( nodeName === "input" || nodeName === "textarea" ) { + dest.defaultValue = src.defaultValue; + } +} + +function domManip( collection, args, callback, ignored ) { + + // Flatten any nested arrays + args = concat.apply( [], args ); + + var first, node, hasScripts, + scripts, doc, fragment, + i = 0, + l = collection.length, + iNoClone = l - 1, + value = args[ 0 ], + isFunction = jQuery.isFunction( value ); + + // We can't cloneNode fragments that contain checked, in WebKit + if ( isFunction || + ( l > 1 && typeof value === "string" && + !support.checkClone && rchecked.test( value ) ) ) { + return collection.each( function( index ) { + var self = collection.eq( index ); + if ( isFunction ) { + args[ 0 ] = value.call( this, index, self.html() ); + } + domManip( self, args, callback, ignored ); + } ); + } + + if ( l ) { + fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); + first = fragment.firstChild; + + if ( fragment.childNodes.length === 1 ) { + fragment = first; + } + + // Require either new content or an interest in ignored elements to invoke the callback + if ( first || ignored ) { + scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); + hasScripts = scripts.length; + + // Use the original fragment for the last item + // instead of the first because it can end up + // being emptied incorrectly in certain situations (#8070). + for ( ; i < l; i++ ) { + node = fragment; + + if ( i !== iNoClone ) { + node = jQuery.clone( node, true, true ); + + // Keep references to cloned scripts for later restoration + if ( hasScripts ) { + + // Support: Android<4.1, PhantomJS<2 + // push.apply(_, arraylike) throws on ancient WebKit + jQuery.merge( scripts, getAll( node, "script" ) ); + } + } + + callback.call( collection[ i ], node, i ); + } + + if ( hasScripts ) { + doc = scripts[ scripts.length - 1 ].ownerDocument; + + // Reenable scripts + jQuery.map( scripts, restoreScript ); + + // Evaluate executable scripts on first document insertion + for ( i = 0; i < hasScripts; i++ ) { + node = scripts[ i ]; + if ( rscriptType.test( node.type || "" ) && + !jQuery._data( node, "globalEval" ) && + jQuery.contains( doc, node ) ) { + + if ( node.src ) { + + // Optional AJAX dependency, but won't run scripts if not present + if ( jQuery._evalUrl ) { + jQuery._evalUrl( node.src ); + } + } else { + jQuery.globalEval( + ( node.text || node.textContent || node.innerHTML || "" ) + .replace( rcleanScript, "" ) + ); + } + } + } + } + + // Fix #11809: Avoid leaking memory + fragment = first = null; + } + } + + return collection; +} + +function remove( elem, selector, keepData ) { + var node, + elems = selector ? jQuery.filter( selector, elem ) : elem, + i = 0; + + for ( ; ( node = elems[ i ] ) != null; i++ ) { + + if ( !keepData && node.nodeType === 1 ) { + jQuery.cleanData( getAll( node ) ); + } + + if ( node.parentNode ) { + if ( keepData && jQuery.contains( node.ownerDocument, node ) ) { + setGlobalEval( getAll( node, "script" ) ); + } + node.parentNode.removeChild( node ); + } + } + + return elem; +} + +jQuery.extend( { + htmlPrefilter: function( html ) { + return html.replace( rxhtmlTag, "<$1>" ); + }, + + clone: function( elem, dataAndEvents, deepDataAndEvents ) { + var destElements, node, clone, i, srcElements, + inPage = jQuery.contains( elem.ownerDocument, elem ); + + if ( support.html5Clone || jQuery.isXMLDoc( elem ) || + !rnoshimcache.test( "<" + elem.nodeName + ">" ) ) { + + clone = elem.cloneNode( true ); + + // IE<=8 does not properly clone detached, unknown element nodes + } else { + fragmentDiv.innerHTML = elem.outerHTML; + fragmentDiv.removeChild( clone = fragmentDiv.firstChild ); + } + + if ( ( !support.noCloneEvent || !support.noCloneChecked ) && + ( elem.nodeType === 1 || elem.nodeType === 11 ) && !jQuery.isXMLDoc( elem ) ) { + + // We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2 + destElements = getAll( clone ); + srcElements = getAll( elem ); + + // Fix all IE cloning issues + for ( i = 0; ( node = srcElements[ i ] ) != null; ++i ) { + + // Ensure that the destination node is not null; Fixes #9587 + if ( destElements[ i ] ) { + fixCloneNodeIssues( node, destElements[ i ] ); + } + } + } + + // Copy the events from the original to the clone + if ( dataAndEvents ) { + if ( deepDataAndEvents ) { + srcElements = srcElements || getAll( elem ); + destElements = destElements || getAll( clone ); + + for ( i = 0; ( node = srcElements[ i ] ) != null; i++ ) { + cloneCopyEvent( node, destElements[ i ] ); + } + } else { + cloneCopyEvent( elem, clone ); + } + } + + // Preserve script evaluation history + destElements = getAll( clone, "script" ); + if ( destElements.length > 0 ) { + setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); + } + + destElements = srcElements = node = null; + + // Return the cloned set + return clone; + }, + + cleanData: function( elems, /* internal */ forceAcceptData ) { + var elem, type, id, data, + i = 0, + internalKey = jQuery.expando, + cache = jQuery.cache, + attributes = support.attributes, + special = jQuery.event.special; + + for ( ; ( elem = elems[ i ] ) != null; i++ ) { + if ( forceAcceptData || acceptData( elem ) ) { + + id = elem[ internalKey ]; + data = id && cache[ id ]; + + if ( data ) { + if ( data.events ) { + for ( type in data.events ) { + if ( special[ type ] ) { + jQuery.event.remove( elem, type ); + + // This is a shortcut to avoid jQuery.event.remove's overhead + } else { + jQuery.removeEvent( elem, type, data.handle ); + } + } + } + + // Remove cache only if it was not already removed by jQuery.event.remove + if ( cache[ id ] ) { + + delete cache[ id ]; + + // Support: IE<9 + // IE does not allow us to delete expando properties from nodes + // IE creates expando attributes along with the property + // IE does not have a removeAttribute function on Document nodes + if ( !attributes && typeof elem.removeAttribute !== "undefined" ) { + elem.removeAttribute( internalKey ); + + // Webkit & Blink performance suffers when deleting properties + // from DOM nodes, so set to undefined instead + // https://code.google.com/p/chromium/issues/detail?id=378607 + } else { + elem[ internalKey ] = undefined; + } + + deletedIds.push( id ); + } + } + } + } + } +} ); + +jQuery.fn.extend( { + + // Keep domManip exposed until 3.0 (gh-2225) + domManip: domManip, + + detach: function( selector ) { + return remove( this, selector, true ); + }, + + remove: function( selector ) { + return remove( this, selector ); + }, + + text: function( value ) { + return access( this, function( value ) { + return value === undefined ? + jQuery.text( this ) : + this.empty().append( + ( this[ 0 ] && this[ 0 ].ownerDocument || document ).createTextNode( value ) + ); + }, null, value, arguments.length ); + }, + + append: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.appendChild( elem ); + } + } ); + }, + + prepend: function() { + return domManip( this, arguments, function( elem ) { + if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { + var target = manipulationTarget( this, elem ); + target.insertBefore( elem, target.firstChild ); + } + } ); + }, + + before: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this ); + } + } ); + }, + + after: function() { + return domManip( this, arguments, function( elem ) { + if ( this.parentNode ) { + this.parentNode.insertBefore( elem, this.nextSibling ); + } + } ); + }, + + empty: function() { + var elem, + i = 0; + + for ( ; ( elem = this[ i ] ) != null; i++ ) { + + // Remove element nodes and prevent memory leaks + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + } + + // Remove any remaining nodes + while ( elem.firstChild ) { + elem.removeChild( elem.firstChild ); + } + + // If this is a select, ensure that it displays empty (#12336) + // Support: IE<9 + if ( elem.options && jQuery.nodeName( elem, "select" ) ) { + elem.options.length = 0; + } + } + + return this; + }, + + clone: function( dataAndEvents, deepDataAndEvents ) { + dataAndEvents = dataAndEvents == null ? false : dataAndEvents; + deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; + + return this.map( function() { + return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); + } ); + }, + + html: function( value ) { + return access( this, function( value ) { + var elem = this[ 0 ] || {}, + i = 0, + l = this.length; + + if ( value === undefined ) { + return elem.nodeType === 1 ? + elem.innerHTML.replace( rinlinejQuery, "" ) : + undefined; + } + + // See if we can take a shortcut and just use innerHTML + if ( typeof value === "string" && !rnoInnerhtml.test( value ) && + ( support.htmlSerialize || !rnoshimcache.test( value ) ) && + ( support.leadingWhitespace || !rleadingWhitespace.test( value ) ) && + !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { + + value = jQuery.htmlPrefilter( value ); + + try { + for ( ; i < l; i++ ) { + + // Remove element nodes and prevent memory leaks + elem = this[ i ] || {}; + if ( elem.nodeType === 1 ) { + jQuery.cleanData( getAll( elem, false ) ); + elem.innerHTML = value; + } + } + + elem = 0; + + // If using innerHTML throws an exception, use the fallback method + } catch ( e ) {} + } + + if ( elem ) { + this.empty().append( value ); + } + }, null, value, arguments.length ); + }, + + replaceWith: function() { + var ignored = []; + + // Make the changes, replacing each non-ignored context element with the new content + return domManip( this, arguments, function( elem ) { + var parent = this.parentNode; + + if ( jQuery.inArray( this, ignored ) < 0 ) { + jQuery.cleanData( getAll( this ) ); + if ( parent ) { + parent.replaceChild( elem, this ); + } + } + + // Force callback invocation + }, ignored ); + } +} ); + +jQuery.each( { + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" +}, function( name, original ) { + jQuery.fn[ name ] = function( selector ) { + var elems, + i = 0, + ret = [], + insert = jQuery( selector ), + last = insert.length - 1; + + for ( ; i <= last; i++ ) { + elems = i === last ? this : this.clone( true ); + jQuery( insert[ i ] )[ original ]( elems ); + + // Modern browsers can apply jQuery collections as arrays, but oldIE needs a .get() + push.apply( ret, elems.get() ); + } + + return this.pushStack( ret ); + }; +} ); + + +var iframe, + elemdisplay = { + + // Support: Firefox + // We have to pre-define these values for FF (#10227) + HTML: "block", + BODY: "block" + }; + +/** + * Retrieve the actual display of a element + * @param {String} name nodeName of the element + * @param {Object} doc Document object + */ + +// Called only from within defaultDisplay +function actualDisplay( name, doc ) { + var elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ), + + display = jQuery.css( elem[ 0 ], "display" ); + + // We don't have any data stored on the element, + // so use "detach" method as fast way to get rid of the element + elem.detach(); + + return display; +} + +/** + * Try to determine the default display value of an element + * @param {String} nodeName + */ +function defaultDisplay( nodeName ) { + var doc = document, + display = elemdisplay[ nodeName ]; + + if ( !display ) { + display = actualDisplay( nodeName, doc ); + + // If the simple way fails, read from inside an iframe + if ( display === "none" || !display ) { + + // Use the already-created iframe if possible + iframe = ( iframe || jQuery( "