From b8eedb0eeb822cc18deee98ff9aaf047ce9b37e6 Mon Sep 17 00:00:00 2001 From: Johannes Baiter Date: Wed, 11 Jul 2018 15:18:20 +0200 Subject: [PATCH 001/181] Fix Bytes.or(Bytes bytes) (fix #2) This method previously called `this.and(bytes.internalArray()`, but it should be `this.or(bytes.internalArray()`. --- src/main/java/at/favre/lib/bytes/Bytes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 3727430..18f9360 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -744,7 +744,7 @@ public Bytes and(byte[] secondArray) { * @see Bitwise operators: OR */ public Bytes or(Bytes bytes) { - return and(bytes.internalArray()); + return or(bytes.internalArray()); } /** From 1a155a3c09476ced7979b497785ffb25600c9f43 Mon Sep 17 00:00:00 2001 From: Johannes Baiter Date: Wed, 11 Jul 2018 15:20:32 +0200 Subject: [PATCH 002/181] Remove println call from library code Previously, a `max length` message was printed any time you called `Bytes.encode(byte[], byteOrder)`. --- src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index 6977abf..3fbb239 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -155,7 +155,6 @@ class BaseRadix implements EncoderDecoder { @Override public String encode(byte[] array, ByteOrder byteOrder) { - System.out.println("max length " + maxLength(array, radix)); return new BigInteger(1, (byteOrder == ByteOrder.BIG_ENDIAN) ? array : Bytes.from(array).reverse().array()).toString(radix); } From f6a072c5d76b044444b441cfc0fd0ac4a92bcf9e Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 11 Jul 2018 15:59:13 +0200 Subject: [PATCH 003/181] Fix or() operator using and() internally refs #2 --- CHANGELOG | 3 ++- src/main/java/at/favre/lib/bytes/Bytes.java | 16 +++++++++++++--- .../at/favre/lib/bytes/BytesTransformTest.java | 7 ++++++- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 82232f2..8ca49f1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ * add appendNullSafe and append string with encoding * add proguard optimized version (can be used with classifier 'optimized') * add constant time equals + * fix or() operator using and() internally #2 ## v0.4.6 @@ -66,4 +67,4 @@ ## v0.2.0 -initial version \ No newline at end of file +initial version diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 3727430..865ec80 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,7 +21,11 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.File; +import java.io.InputStream; +import java.io.Serializable; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -31,7 +35,13 @@ import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.*; +import java.util.Arrays; +import java.util.BitSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.Random; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -744,7 +754,7 @@ public Bytes and(byte[] secondArray) { * @see Bitwise operators: OR */ public Bytes or(Bytes bytes) { - return and(bytes.internalArray()); + return or(bytes.internalArray()); } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java index 703441d..c531f51 100644 --- a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java @@ -179,8 +179,13 @@ public void xor() { @Test public void or() { assertArrayEquals(new byte[0], Bytes.from(new byte[0]).or(new byte[0]).array()); + assertArrayEquals(new byte[]{1}, Bytes.from(new byte[]{1}).or(new byte[]{0}).array()); assertArrayEquals(new byte[1], Bytes.from(new byte[1]).or(new byte[1]).array()); + assertArrayEquals(new byte[0], Bytes.from(new byte[0]).or(Bytes.wrap(new byte[0])).array()); + assertArrayEquals(new byte[]{1}, Bytes.from(new byte[]{1}).or(Bytes.wrap(new byte[]{0})).array()); + assertArrayEquals(new byte[1], Bytes.from(new byte[1]).or(Bytes.wrap(new byte[1])).array()); + assertArrayEquals(example_bytes_one, Bytes.from(example_bytes_one).or(new byte[1]).array()); assertArrayEquals(example_bytes_two, Bytes.from(example_bytes_two).or(new byte[2]).array()); assertArrayEquals(example_bytes_sixteen, Bytes.from(example_bytes_sixteen).or(new byte[16]).array()); @@ -419,4 +424,4 @@ public int compare(Byte o1, Byte o2) { }).supportInPlaceTransformation()); assertTrue(new BytesTransformers.ShuffleTransformer(new SecureRandom()).supportInPlaceTransformation()); } -} \ No newline at end of file +} From fb219c039bf877199dc4ae471e8adf742188e687 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 11 Jul 2018 18:02:39 +0200 Subject: [PATCH 004/181] Update icons --- misc/icon.png | Bin 28875 -> 27749 bytes misc/icon.psd | Bin 468923 -> 194591 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/misc/icon.png b/misc/icon.png index 94923fa42edc16e16207159421faf55fd88f8f76..d5b7db7254069108e9d991e26a520e31a9931292 100644 GIT binary patch literal 27749 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 diff --git a/misc/icon.psd b/misc/icon.psd index 3eb405e4da8c9babd2802c0c93a7fb8ebe55cecf..d9a48eb74240f1ae5b42973eab8ee9fe7c339c36 100644 GIT binary patch literal 194591 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%0AdY**-pAFH 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 literal 468923 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

oEif+2Fpr&SIL^-2jdL=_ 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 =>`s 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Ð(l1g$~sYK$rKL^AeS*5UHB?hF?*hA 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 ILLiX;1Ky^6P5=M^ From 7995d0fb62beafe04de7abfee167cc36f4e1bb2c Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 13 Jul 2018 12:29:44 +0200 Subject: [PATCH 005/181] Bump version to 0.6.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 6569c7d..b55fefc 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 0.5.0 + 0.6.0 jar Bytes Utility Library From 688100337401554553334a7cc79c1d72a39a5027 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 15 Jul 2018 08:56:56 +0200 Subject: [PATCH 006/181] Add 'encodeCharsetToByte()' encoders fixes #7 --- CHANGELOG | 4 ++ src/main/java/at/favre/lib/bytes/Bytes.java | 42 ++++++++++++------- .../lib/bytes/BytesConstructorTests.java | 16 +++++++ 3 files changed, 48 insertions(+), 14 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 8ca49f1..518989f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ # Releases +## v0.6.0 + + * add `encodeCharsetToBytes()` feature #7 + ## v0.5.0 * better resource handling for compression diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 865ec80..7fe094c 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,11 +21,7 @@ package at.favre.lib.bytes; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; +import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -35,13 +31,7 @@ import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.Arrays; -import java.util.BitSet; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.Random; +import java.util.*; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -1403,6 +1393,30 @@ public String encodeCharset(Charset charset) { return new String(internalArray(), charset); } + /** + * UTF-8 representation of this byte array as byte array + *

+ * Similar to encodeUtf8().getBytes(StandardCharsets.UTF_8). + * + * @return utf-8 encoded byte array + * @see UTF-8 + */ + public byte[] encodeUtf8ToBytes() { + return encodeCharsetToBytes(StandardCharsets.UTF_8); + } + + /** + * Byte array representation with given charset encoding. + *

+ * Similar to encodeCharset(charset).getBytes(charset). + * + * @param charset the charset the return will be encoded + * @return encoded byte array + */ + public byte[] encodeCharsetToBytes(Charset charset) { + return encodeCharset(charset).getBytes(charset); + } + /** * Encode the internal byte-array with given encoder. * @@ -1426,8 +1440,8 @@ public List toList() { } /** - * @deprecated renamed API, use {@link #toBoxedArray()} instead - will be removed in v1.0+ * @return see {@link #toBoxedArray()} + * @deprecated renamed API, use {@link #toBoxedArray()} instead - will be removed in v1.0+ */ @Deprecated public Byte[] toObjectArray() { @@ -1636,7 +1650,7 @@ public boolean equals(byte[] anotherArray) { * Compares the inner array with given array. The comparison is done in constant time, therefore * will not break on the first mismatch. This method is useful to prevent some side-channel attacks, * but is slower on average. - * + *

* This implementation uses the algorithm suggested in https://codahale.com/a-lesson-in-timing-attacks/ * * @param anotherArray to compare with diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index b485c2e..f703a49 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -241,6 +241,22 @@ public void fromString() { checkString("7asdh#ö01^^`´dµ@€", StandardCharsets.ISO_8859_1); } + @Test + public void encodeCharsetToBytes() { + byte[][] testVectors = new byte[][]{example_bytes_seven, example_bytes_one, example_bytes_two, example2_bytes_seven, example_bytes_twentyfour}; + + for (byte[] testVector : testVectors) { + System.out.println(new String(testVector, StandardCharsets.ISO_8859_1)); + System.out.println(new String(Bytes.wrap(testVector).encodeCharsetToBytes(StandardCharsets.ISO_8859_1), StandardCharsets.ISO_8859_1)); + System.out.println(new String(testVector, StandardCharsets.UTF_8)); + System.out.println(new String(Bytes.wrap(testVector).encodeCharsetToBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8)); + + assertArrayEquals(new String(testVector, StandardCharsets.ISO_8859_1).getBytes(StandardCharsets.ISO_8859_1), Bytes.wrap(testVector).encodeCharsetToBytes(StandardCharsets.ISO_8859_1)); + assertArrayEquals(new String(testVector, StandardCharsets.UTF_8).getBytes(StandardCharsets.UTF_8), Bytes.wrap(testVector).encodeCharsetToBytes(StandardCharsets.UTF_8)); + assertArrayEquals(new String(testVector, StandardCharsets.UTF_8).getBytes(StandardCharsets.UTF_8), Bytes.wrap(testVector).encodeUtf8ToBytes()); + } + } + @Test public void fromCharArray() { checkCharArray(""); From ae2b956142a53e05f0e0ff2f94e1b7c20067caab Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 15 Jul 2018 09:17:26 +0200 Subject: [PATCH 007/181] Add new constructor for char[] with charset fixes #8 --- src/main/java/at/favre/lib/bytes/Bytes.java | 16 +++++++++++++++- .../favre/lib/bytes/BytesConstructorTests.java | 12 ++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 7fe094c..8abfe92 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -454,7 +454,21 @@ public static Bytes from(CharSequence string, Charset charset) { * @return new instance */ public static Bytes from(char[] charArray) { - return from(CharBuffer.wrap(charArray).toString(), StandardCharsets.UTF_8); + return from(charArray, StandardCharsets.UTF_8); + } + + /** + * Creates a new instance from given char array. The array will be handles like an encoded string + * + * @param charArray to get the internal byte array from + * @param charset charset to be used to decode the char array + * @return new instance + */ + public static Bytes from(char[] charArray, Charset charset) { + ByteBuffer bb = charset.encode(CharBuffer.wrap(charArray)); + byte[] bytes = new byte[bb.remaining()]; + bb.get(bytes); + return from(bytes); } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index f703a49..a0423c6 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -264,6 +264,12 @@ public void fromCharArray() { checkCharArray("\t"); checkCharArray("a"); checkCharArray("12345678abcdefjkl"); + checkCharArray("é_,,(8áàäöü#+_ ,,mµ"); + + String s1 = "oaisdj`ßß__.#äöü_- *aé"; + assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.ISO_8859_1), Bytes.from(s1.toCharArray(), StandardCharsets.ISO_8859_1).array()); + assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.UTF_16), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_16).array()); + assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.UTF_8), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_8).array()); } @Test @@ -287,8 +293,10 @@ private void checkString(String string, Charset charset) { } private void checkCharArray(String s) { - Bytes b = Bytes.from(s.toCharArray()); - assertArrayEquals(String.valueOf(s.toCharArray()).getBytes(StandardCharsets.UTF_8), b.array()); + Bytes b1 = Bytes.from(s.toCharArray()); + Bytes b2 = Bytes.from(s.toCharArray(), StandardCharsets.UTF_8); + assertArrayEquals(String.valueOf(s.toCharArray()).getBytes(StandardCharsets.UTF_8), b1.array()); + assertArrayEquals(String.valueOf(s.toCharArray()).getBytes(StandardCharsets.UTF_8), b2.array()); } @Test From 8a33d7e0805c720b9a5d055ff50db3243dc96477 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 15 Jul 2018 09:18:27 +0200 Subject: [PATCH 008/181] Update changelog refs #8 --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 518989f..2cec822 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ## v0.6.0 * add `encodeCharsetToBytes()` feature #7 + * add new `from(char[] charArray, Charset charset)` constructor with improved logic #8 ## v0.5.0 From 6a5b86237fa9c7b538d4cd287db6a15e3acdf3b3 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 15 Jul 2018 21:54:43 +0200 Subject: [PATCH 009/181] Update readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7f93eae..63981a8 100644 --- a/README.md +++ b/README.md @@ -40,12 +40,12 @@ It's main features include: * **Utility Features** like `indexOf`, `count`, `isEmpty`, `bitAt`, `contains` ... * **Flexibility** provide your own Transformers, Validators and Encoders -It is written in [Java 7](https://en.wikipedia.org/wiki/Java_version_history#Java_SE_7) to keep backwards compatibility with *Android* and older *Java* applications. +The code is compiled with target [Java 7](https://en.wikipedia.org/wiki/Java_version_history#Java_SE_7) to keep backwards compatibility with *Android* and older *Java* applications. It is lightweight as it does not require any additional dependencies. ## Quickstart -Add dependency to your `pom.xml`: +Add dependency to your `pom.xml` ([check latest release](https://github.com/patrickfav/bytes-java/releases)): at.favre.lib From d321e4ea770a2ac1ebd44a5275fc19c8661b185f Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 16 Jul 2018 12:08:20 +0200 Subject: [PATCH 010/181] Update readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 1e07bd0..27b1077 100644 --- a/README.md +++ b/README.md @@ -583,13 +583,13 @@ If you want to skip jar signing just change the skip configuration in the ### Build with Maven -Use maven (3.1+) to create a jar including all dependencies +Use the Maven wrapper to create a jar including all dependencies - mvn clean install + mvnw clean install ## Tech Stack -* Java 7 +* Java 7 (+ [errorprone](https://github.com/google/error-prone) static analyzer) * Maven # Credits From 952d2102f2ea0aa28e5693232a64640746b30d53 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 30 Jul 2018 11:53:14 +0200 Subject: [PATCH 011/181] Add code climate badge --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 27b1077..38a0c66 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ to blindly paste code snippets from [![Build Status](https://travis-ci.org/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.org/patrickfav/bytes-java) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) [![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) +[![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) It's main features include: From 232444115963d1554c8bda7c051ef8f8beb1afca Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 30 Jul 2018 11:55:31 +0200 Subject: [PATCH 012/181] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 38a0c66..0ca33dc 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ to blindly paste code snippets from [![Download](https://api.bintray.com/packages/patrickfav/maven/bytes-java/images/download.svg)](https://bintray.com/patrickfav/maven/bytes-java/_latestVersion) [![Build Status](https://travis-ci.org/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.org/patrickfav/bytes-java) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) -[![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) +[![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) It's main features include: From cc2317db5bb85fd3796aec1f082a4fcd16f9cea5 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 31 Jul 2018 11:35:47 +0200 Subject: [PATCH 013/181] Add handling for UUID refs #9 --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 42 ++++++++++++++++++- src/main/java/at/favre/lib/bytes/Util.java | 31 +++++++++++++- .../lib/bytes/BytesConstructorTests.java | 20 +++++++++ .../bytes/BytesToConvertOtherTypesTest.java | 17 +++++++- 5 files changed, 106 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2cec822..5da93fc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ * add `encodeCharsetToBytes()` feature #7 * add new `from(char[] charArray, Charset charset)` constructor with improved logic #8 + * add constructor/converter from/to UUID #9 ## v0.5.0 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 8abfe92..99b88e2 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,7 +21,11 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.File; +import java.io.InputStream; +import java.io.Serializable; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -31,7 +35,14 @@ import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.*; +import java.util.Arrays; +import java.util.BitSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -471,6 +482,18 @@ public static Bytes from(char[] charArray, Charset charset) { return from(bytes); } + /** + * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and + * 8 byte least significant bits into an byte array. + * + * @param uuid to convert to array + * @return new instance + */ + public static Bytes from(UUID uuid) { + Objects.requireNonNull(uuid); + return wrap(Util.getBytesFromUUID(uuid).array()); + } + /** * Parses a big endian binary string (e.g. 10010001) * @@ -1498,6 +1521,21 @@ public BigInteger toBigInteger() { } } + /** + * Creates a {@link UUID} instance of the internal byte array. This requires the internal array to be exactly 16 bytes. Takes the first + * 8 byte as mostSigBits and the last 8 byte as leastSigBits. There is no validation of version/type, just passes the raw bytes + * to a {@link UUID} constructor. + * + * @return newly created UUID + */ + public UUID toUUID() { + if (length() != 16) { + throw new IllegalStateException("creating UUID requires internal array to be exactly 16 bytes, was " + length()); + } + ByteBuffer byteBuffer = buffer(); + return new UUID(byteBuffer.getLong(), byteBuffer.getLong()); + } + /** * If the underlying byte array is exactly 1 byte / 8 bit long, returns signed two-complement * representation for a Java byte value. diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index d3a8c74..25d828b 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,10 +21,23 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayOutputStream; +import java.io.DataInput; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.nio.ByteBuffer; import java.nio.file.Files; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Common Util methods to convert or modify byte arrays @@ -446,6 +459,20 @@ static boolean constantTimeEquals(byte[] obj, byte[] anotherArray) { return result == 0; } + /** + * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and + * 8 byte least significant bits into an byte array. + * + * @param uuid to convert to array + * @return buffer containing the 16 bytes + */ + static ByteBuffer getBytesFromUUID(UUID uuid) { + ByteBuffer bb = ByteBuffer.allocate(16); + bb.putLong(uuid.getMostSignificantBits()); + bb.putLong(uuid.getLeastSignificantBits()); + return bb; + } + /* ================================================================================================= Copyright 2011 Twitter, Inc. diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index a0423c6..17d34db 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -38,6 +38,7 @@ import java.util.Arrays; import java.util.BitSet; import java.util.LinkedList; +import java.util.UUID; import static org.junit.Assert.*; @@ -423,4 +424,23 @@ public void fromObjectArray() { Bytes b = Bytes.from(objectArray); assertArrayEquals(new byte[]{0x01, 0x02, 0x03, 0x04}, b.array()); } + + @Test + public void fromUUID() { + testUUID(UUID.fromString("00000000-0000-0000-0000-000000000000")); + testUUID(UUID.fromString("123e4567-e89b-42d3-a456-556642440000")); + testUUID(UUID.fromString("e8e3db08-dc39-48ea-a3db-08dc3958eafb")); + testUUID(UUID.randomUUID()); + } + + private void testUUID(UUID uuid) { + Bytes b = Bytes.from(uuid); + assertEquals(16, b.length()); + assertEquals(uuid, b.toUUID()); + } + + @Test(expected = NullPointerException.class) + public void fromUUIDNullArgument() { + Bytes.from((UUID) null); + } } diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index 90bf1da..a48f8ba 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -219,4 +219,19 @@ public void toDouble() { } catch (IllegalStateException ignored) { } } -} \ No newline at end of file + + @Test(expected = IllegalStateException.class) + public void testToUUIDToLong() { + Bytes.random(17).toUUID(); + } + + @Test(expected = IllegalStateException.class) + public void testToUUIDToShort() { + Bytes.random(15).toUUID(); + } + + @Test(expected = IllegalStateException.class) + public void testToUUIDEmpty() { + Bytes.allocate(0).toUUID(); + } +} From bdc581662b67c022ef28eae0bd97932439a2436b Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 31 Jul 2018 11:39:34 +0200 Subject: [PATCH 014/181] Update Readme refs #9 --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0ca33dc..7134a49 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ to blindly paste code snippets from It's main features include: -* **Creation** from a wide variety of sources: multiple arrays, integers, [streams](https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html), random, strings, files, ... +* **Creation** from a wide variety of sources: multiple arrays, integers, [streams](https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html), random, strings, files, uuid, ... * **Transformation** with many built-in: append, [xor](https://en.wikipedia.org/wiki/Exclusive_or), [and](https://en.wikipedia.org/wiki/Logical_conjunction), [hash](https://en.wikipedia.org/wiki/Cryptographic_hash_function), [shifts](https://en.wikipedia.org/wiki/Bitwise_operation#Bit_shifts), shuffle, reverse, [checksum](https://en.wikipedia.org/wiki/Checksum), ... * **Validators** with the ability to arbitrarily combine multiple ones with logical expressions * **Parsing and Encoding** in most common binary-to-text-encodings: [hex](https://en.wikipedia.org/wiki/Hexadecimal), [base36](https://en.wikipedia.org/wiki/Base36), [base64](https://en.wikipedia.org/wiki/Base64), ... @@ -164,6 +164,7 @@ Bytes.from(myBitSet); //java.util.BitSet myBitSet = ... Bytes.from(bigInteger); //java.math.BigInteger Bytes.from(file); //reads bytes from any java.io.File Bytes.from(dataInput, 16); //reads bytes from any java.io.DataInput +Bytes.from(UUID.randomUUID()); //read 16 bytes from UUID ``` For parsing binary-text-encoded strings, see below. From 22df31da610ba5b7a2b8472e3c313c5c4f091497 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 31 Jul 2018 12:59:16 +0200 Subject: [PATCH 015/181] Add new empty() constructor --- CHANGELOG | 1 + README.md | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 11 ++++++++++- .../at/favre/lib/bytes/BytesConstructorTests.java | 7 +++++++ 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 5da93fc..287570b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ * add `encodeCharsetToBytes()` feature #7 * add new `from(char[] charArray, Charset charset)` constructor with improved logic #8 * add constructor/converter from/to UUID #9 + * add `empty()` constructor, creating empty byte array ## v0.5.0 diff --git a/README.md b/README.md index 7134a49..e28a8b3 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,7 @@ Initializing **empty arrays** of arbitrary length: ```java Bytes.allocate(16); Bytes.allocate(4, (byte) 1); //fill with 0x01 +Bytes.empty(); //creates zero length byte array ``` Creating **random** byte arrays for e.g. testing: diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 99b88e2..b6c8e3a 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -92,12 +92,21 @@ public static Bytes allocate(int length) { */ public static Bytes allocate(int length, byte defaultValue) { byte[] array = new byte[length]; - if (defaultValue != 0) { + if (defaultValue != 0 && length > 0) { Arrays.fill(array, defaultValue); } return wrap(array); } + /** + * Creates an Byte instance with an internal empty byte array. Same as calling {@link #allocate(int)} with 0. + * + * @return new instance + */ + public static Bytes empty() { + return allocate(0); + } + /** * Creates a new reference backed by the same byte array. * Inherits all attributes (readonly, etc.) diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index 17d34db..a180dfd 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -76,6 +76,13 @@ public void wrapTestNullSafe() { Bytes.wrapNullSafe(null); } + @Test + public void empty() { + assertEquals(0, Bytes.empty().length()); + assertEquals(Bytes.allocate(0), Bytes.empty()); + assertArrayEquals(new byte[0], Bytes.empty().array()); + } + @Test public void allocate() { assertEquals(0, Bytes.allocate(0).length()); From 04551ff6e48ddf6b3b97a846ed5b711ac693484b Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 31 Jul 2018 13:14:55 +0200 Subject: [PATCH 016/181] Some small fixes --- README.md | 10 ++++++++-- .../favre/lib/bytes/BytesToConvertOtherTypesTest.java | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e28a8b3..f2befbb 100644 --- a/README.md +++ b/README.md @@ -486,16 +486,22 @@ To other collections ```java Bytes.wrap(array).toList(); // of type List -Bytes.wrap(array).toObjectArray(); // of type Byte[] +Bytes.wrap(array).toBoxedArray(); // of type Byte[] Bytes.wrap(array).toBitSet(); //of type java.util.BitSet ``` -and to [`BigInteger`](https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html) of course: +to [`BigInteger`](https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html) of course ```java Bytes.wrap(array).toBigInteger(); ``` +and others + +```java +Bytes.wrap(array).toUUID(); // convert 16 byte to UUID +``` + ### Mutable and Read-Only Per default the instance is immutable, i.e. every transformation will create a diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index a48f8ba..0e18d91 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -45,6 +45,7 @@ private void checkArray(byte[] array) { for (int i = 0; i < array.length; i++) { assertEquals(byteArray[i], Byte.valueOf(array[i])); } + assertArrayEquals(byteArray, Bytes.from(array).toObjectArray()); } @Test From 0be03bda02ba340e6c179e1251022400ed9d09b5 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 1 Aug 2018 11:18:34 +0200 Subject: [PATCH 017/181] Better error message for toPrimitive type checks --- src/main/java/at/favre/lib/bytes/Util.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 25d828b..65dfd25 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -431,7 +431,7 @@ static void checkIndexBounds(int length, int index, int primitiveLength, String static void checkExactLength(int length, int expectedLength, String type) { if (length != expectedLength) { - throw new IllegalStateException("cannot convert to " + type + " if length != " + expectedLength + " bytes"); + throw new IllegalStateException("cannot convert to " + type + " if length != " + expectedLength + " bytes (was " + length + ")"); } } From f17dbd97e26b77941301688a1c49fb2bb0c0a304 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 1 Aug 2018 11:50:02 +0200 Subject: [PATCH 018/181] Bump version to 0.7.0 --- CHANGELOG | 2 ++ pom.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 287570b..1699f79 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ # Releases +## v0.7.0 + ## v0.6.0 * add `encodeCharsetToBytes()` feature #7 diff --git a/pom.xml b/pom.xml index b55fefc..893a3eb 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 0.6.0 + 0.7.0 jar Bytes Utility Library From e73bbf849c498c64fd4e9ddee6996c9012c2b8ba Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 13:36:59 +0200 Subject: [PATCH 019/181] Add count() method for counting byte arrays (like pattern matching) --- CHANGELOG | 2 + src/main/java/at/favre/lib/bytes/Bytes.java | 26 ++++++++---- src/main/java/at/favre/lib/bytes/Util.java | 42 +++++++++++++++++++ .../at/favre/lib/bytes/BytesMiscTest.java | 24 +++++++++++ 4 files changed, 87 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1699f79..db78e2e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ ## v0.7.0 + * add `count` method for counting byte arrays (like pattern matching) + ## v0.6.0 * add `encodeCharsetToBytes()` feature #7 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index b6c8e3a..0c3b654 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1206,13 +1206,25 @@ public long longAt(int index) { * @return the count of given target in the byte array */ public int count(byte target) { - int count = 0; - for (byte b : internalArray()) { - if (b == target) { - count++; - } - } - return count; + return Util.countByte(internalArray(), target); + } + + /** + * Traverses the internal byte array counts the occurrences of given pattern array. + * This has a time complexity of O(n). + *

+ * Example: + *

    + *
  • Internal Array: [0, 1, 2, 0, 1, 0]
  • + *
  • Pattern Array: [0, 1]
  • + *
  • Count: 2
  • + *
+ * + * @param pattern byte array to count + * @return the count of given target in the byte array + */ + public int count(byte[] pattern) { + return Util.countByteArray(internalArray(), pattern); } /** diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 65dfd25..3e0fcbc 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -135,6 +135,48 @@ static int lastIndexOf(byte[] array, byte target, int start, int end) { return -1; } + /** + * Counts the occurrence of target in the the in the subject array + * + * @param array to count in + * @param target to count + * @return number of times target is in subject + */ + static int countByte(byte[] array, byte target) { + int count = 0; + for (byte b : array) { + if (b == target) { + count++; + } + } + return count; + } + + /** + * Counts the times given pattern (ie. an array) can be found in given array + * + * @param array to count in + * @param pattern to match in array + * @return number of times pattern is in subject + */ + static int countByteArray(byte[] array, byte[] pattern) { + Objects.requireNonNull(pattern, "pattern must not be null"); + if (pattern.length == 0 || array.length == 0) { + return 0; + } + int count = 0; + outer: + for (int i = 0; i < array.length - pattern.length + 1; i++) { + for (int j = 0; j < pattern.length; j++) { + if (array[i + j] != pattern[j]) { + continue outer; + } + } + count++; + } + return count; + } + /** * Copies a collection of {@code Byte} instances into a new array of * primitive {@code byte} values. diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 7bc0b1b..86fa431 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -375,6 +375,30 @@ public void count() { assertEquals(1, Bytes.from(example_bytes_seven).count((byte) 0xAF)); } + @Test + public void countByteArray() { + assertEquals(0, Bytes.allocate(0).count(new byte[0])); + assertEquals(0, Bytes.allocate(1).count(new byte[0])); + assertEquals(0, Bytes.allocate(128).count(new byte[0])); + assertEquals(128, Bytes.allocate(128).count(new byte[]{0})); + assertEquals(3, Bytes.from(example_bytes_twentyfour).count(new byte[]{(byte) 0xFD})); + assertEquals(3, Bytes.from(example_bytes_twentyfour).count(new byte[]{(byte) 0xD1})); + assertEquals(0, Bytes.from(example_bytes_twentyfour).count(new byte[]{(byte) 0x22})); + assertEquals(1, Bytes.from(example_bytes_eight).count(new byte[]{(byte) 0xAF})); + assertEquals(0, Bytes.from(example_bytes_eight).count(new byte[]{(byte) 0xAF, 0x00})); + assertEquals(0, Bytes.from(example_bytes_eight).count(new byte[]{(byte) 0xED})); + assertEquals(0, Bytes.from(example_bytes_eight).count(new byte[]{(byte) 0x22})); + assertEquals(2, Bytes.from(new byte[]{0, 1, 2, 3, 0, 1, 0}).count(new byte[]{0, 1})); + assertEquals(1, Bytes.from(new byte[]{0, 1, 2, 3, 0, 1, 0}).count(new byte[]{0, 1, 2})); + assertEquals(1, Bytes.from(new byte[]{0, 1, 2, 3, 0, 1, 0}).count(new byte[]{0, 1, 2, 3})); + assertEquals(0, Bytes.from(new byte[]{0, 1, 2, 3, 0, 1, 0}).count(new byte[]{0, 1, 2, 0})); + } + + @Test(expected = NullPointerException.class) + public void countByteArrayShouldCheckArgument() { + Bytes.allocate(1).count(null); + } + @Test public void entropy() { assertEquals(0, Bytes.allocate(0).entropy(), 0.1d); From 0dc21272a87f7abefbba649e9992c6d44df5f21e Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 14:10:32 +0200 Subject: [PATCH 020/181] Add dedicated `md5` and `sha1` transformer methods --- CHANGELOG | 1 + README.md | 6 ++-- src/main/java/at/favre/lib/bytes/Bytes.java | 30 +++++++++++++++++++ .../at/favre/lib/bytes/BytesTransformer.java | 2 ++ .../favre/lib/bytes/BytesTransformTest.java | 25 ++++++++++++++-- 5 files changed, 60 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index db78e2e..71079ec 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ## v0.7.0 * add `count` method for counting byte arrays (like pattern matching) + * add dedicated `md5` and `sha1` transformer methods ## v0.6.0 diff --git a/README.md b/README.md index f2befbb..dbdb7b5 100644 --- a/README.md +++ b/README.md @@ -224,7 +224,9 @@ Bytes resized = Bytes.wrap(array).resize(3); //from {3, 9, 2, 1} to {9, 2, 1} ```java Bytes hash = Bytes.wrap(array).hashSha256(); -Bytes hash = Bytes.wrap(array).hash("MD5"); +Bytes hash = Bytes.wrap(array).hashSha1(); +Bytes hash = Bytes.wrap(array).hashMd5(); +Bytes hash = Bytes.wrap(array).hash("SHA-512"); ``` **Reversing** of the byte order in the array @@ -335,7 +337,7 @@ Bytes.from(asciiString, StandardCharsets.US_ASCII); To easily append a string to an byte array you can do ```java -String userPwd = ...; +String userPwdHash = ...; Bytes.from(salt).append(userPwd).hashSha256(); ``` diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 0c3b654..6ef61d6 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -937,6 +937,36 @@ public Bytes resize(int newByteLength, BytesTransformer.ResizeTransformer.Mode m return transform(new BytesTransformer.ResizeTransformer(newByteLength, mode)); } + /** + * Calculates md5 on the underlying byte array and returns a byte instance containing the hash. + * This hash algorithm SHOULD be supported by every JVM implementation (see + * Javadoc for MessageDigest) + * + * Do not use this algorithm in security relevant applications. + * + * @return md5 (16 bytes) hash of internal byte array + * @throws IllegalArgumentException if the message digest algorithm can not be found in the security providers + * @see MD5 + */ + public Bytes hashMd5() { + return hash(BytesTransformer.MessageDigestTransformer.ALGORITHM_MD5); + } + + /** + * Calculates sha1 on the underlying byte array and returns a byte instance containing the hash. + * This hash algorithm SHOULD be supported by every JVM implementation (see + * Javadoc for MessageDigest) + * + * Do not use this algorithm in security relevant applications. + * + * @return sha1 (20 bytes) hash of internal byte array + * @throws IllegalArgumentException if the message digest algorithm can not be found in the security providers + * @see Secure Hash Algorithm 1 + */ + public Bytes hashSha1() { + return hash(BytesTransformer.MessageDigestTransformer.ALGORITHM_SHA_1); + } + /** * Calculates sha256 on the underlying byte array and returns a byte instance containing the hash. * diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformer.java b/src/main/java/at/favre/lib/bytes/BytesTransformer.java index 41111c2..6e4a3fc 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformer.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformer.java @@ -326,6 +326,8 @@ public boolean supportInPlaceTransformation() { * Converts to hash */ class MessageDigestTransformer implements BytesTransformer { + static final String ALGORITHM_MD5 = "MD5"; + static final String ALGORITHM_SHA_1 = "SHA-1"; static final String ALGORITHM_SHA_256 = "SHA-256"; private final MessageDigest messageDigest; diff --git a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java index c531f51..e4d325d 100644 --- a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java @@ -172,7 +172,7 @@ public void xor() { try { Bytes.from(example_bytes_seven).xor(example_bytes_eight); fail(); - } catch (Exception e) { + } catch (Exception ignored) { } } @@ -326,13 +326,34 @@ public void bitSwitchOutOfBounds() { } @Test - public void hash() { + public void hashSha1() { + assertEquals(Bytes.parseHex("da39a3ee5e6b4b0d3255bfef95601890afd80709"), Bytes.from("").hashSha1()); + assertEquals(Bytes.parseHex("2628013771c4ffda4336231805f9d6c42e40ef86"), Bytes.from("ö9h%6Ghh1\"").hashSha1()); + assertEquals(Bytes.parseHex("15d418a940d699df0cde6304829b2cce5ed4a9ad"), Bytes.from("897SHALkjdn ,n-- kasdjöa").hashSha1()); + } + + @Test + public void hashMd5() { + assertEquals(Bytes.parseHex("d41d8cd98f00b204e9800998ecf8427e"), Bytes.from("").hashMd5()); + assertEquals(Bytes.parseHex("ff38205f1cb22f588d8bc9ae21f22092"), Bytes.from("ö9h%6Ghh1\"").hashMd5()); + assertEquals(Bytes.parseHex("9DFF192C3CE8554DBB1ADCC7721B4B78"), Bytes.from("897SHALkjdn ,n-- kasdjöa").hashMd5()); + } + + @Test + public void hash256() { assertEquals(Bytes.parseHex("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"), Bytes.from("").hashSha256()); assertEquals(Bytes.parseHex("e362eea626386c93a54c9b82e6b896c0350fbff0ee12f284660253aac0908cfb"), Bytes.from("ö9h%6Ghh1\"").hashSha256()); + assertEquals(Bytes.parseHex("48D6BE81CB2EF8488BA2E3BF4050EE21BF9D33D85DB0E556E4AE5992243B8F35"), Bytes.from("897SHALkjdn ,n-- kasdjöa").hashSha256()); + } + + @Test + public void hashCustom() { assertEquals(Bytes.parseHex("cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e"), Bytes.from("").hash("SHA-512")); assertEquals(Bytes.parseHex("106747C3DDC117091BEF8D21AEBAA8D314656D3AE1135AB36F4C0B07A264127CF625FE616751BEC66B43032B904E2D3B6C21BF14E078F6BB775A72503F48111D"), Bytes.from("ö9h%6Ghh1\"").hash("SHA-512")); assertEquals(Bytes.parseHex("d41d8cd98f00b204e9800998ecf8427e"), Bytes.from("").hash("MD5")); assertEquals(Bytes.parseHex("ff38205f1cb22f588d8bc9ae21f22092"), Bytes.from("ö9h%6Ghh1\"").hash("MD5")); + assertEquals(Bytes.parseHex("38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b"), Bytes.from("").hash("SHA-384")); + assertEquals(Bytes.parseHex("ec89d0d6b067f7f2e240ea7587933d92347fce4bdab68784bd2373dc1cccaa0238c0556b045acb1632080fac788d429d"), Bytes.from("ö9h%6Ghh1\"").hash("SHA-384")); } @Test From 86ce7a95fd9ecfab7016396b99d11c9387e54c35 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 14:31:37 +0200 Subject: [PATCH 021/181] Update readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index dbdb7b5..8837d56 100644 --- a/README.md +++ b/README.md @@ -375,6 +375,7 @@ And others: ```java Bytes.wrap(array).count(0x01); //occurrences of 0x01 +Bytes.wrap(array).count(new byte[] {0x01, 0xEF}); //occurrences of pattern [0x01, 0xEF] Bytes.wrap(array).entropy(); ``` From 3e5aca5d588d5b051f28bbc3bb843ae9f068e474 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 14:52:40 +0200 Subject: [PATCH 022/181] Update link to original base64 impl in javadoc --- src/main/java/at/favre/lib/bytes/Base64.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Base64.java b/src/main/java/at/favre/lib/bytes/Base64.java index c581f75..f9b7667 100644 --- a/src/main/java/at/favre/lib/bytes/Base64.java +++ b/src/main/java/at/favre/lib/bytes/Base64.java @@ -24,7 +24,8 @@ import java.nio.charset.StandardCharsets; /** - * From: https://github.com/square/okio/blob/master/okio/src/main/java/okio/Base64.java + * From https://github.com/square/okio/blob/okio-parent-1.15.0/okio/src/main/java/okio/Base64.java + * under Apache 2 license. * * @author Alexander Y. Kleymenov */ From bdbfa51143a57f2ceb9c77ec10bb5179c696ed19 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 18:18:27 +0200 Subject: [PATCH 023/181] Update link to original base64 impl in javadoc --- CHANGELOG | 1 + README.md | 3 ++- src/main/java/at/favre/lib/bytes/Bytes.java | 16 ++++++++++++-- src/main/java/at/favre/lib/bytes/Util.java | 21 ++++++++++++------- .../lib/bytes/BytesConstructorTests.java | 19 +++++++++++++++-- .../bytes/BytesSharedDataConverterTest.java | 20 +++++++++--------- .../java/at/favre/lib/bytes/UtilTest.java | 2 +- 7 files changed, 58 insertions(+), 24 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 71079ec..01a118f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ * add `count` method for counting byte arrays (like pattern matching) * add dedicated `md5` and `sha1` transformer methods + * add `from(Inputstream stream, int maxlength)` limiting stream reading constructor #13 ## v0.6.0 diff --git a/README.md b/README.md index 8837d56..7f7219d 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,8 @@ Bytes.from(asciiString, StandardCharset.US_ASCII) //any charset And other types: ```java -Bytes.from(byteInputStream); //any java.io.InputStream +Bytes.from(byteInputStream); //read whole java.io.InputStream +Bytes.from(byteInputStream, 16); //read java.io.InputStream with length limitation Bytes.from(byteList); //List byteList = ... Bytes.from(myBitSet); //java.util.BitSet myBitSet = ... Bytes.from(bigInteger); //java.math.BigInteger diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 6ef61d6..36cbcab 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -400,13 +400,25 @@ public static Bytes from(BigInteger bigInteger) { } /** - * Reads given input stream and creates a new instance from read data + * Reads given whole input stream and creates a new instance from read data * * @param stream to read from * @return new instance */ public static Bytes from(InputStream stream) { - return wrap(Util.readFromStream(stream)); + return wrap(Util.readFromStream(stream, -1)); + } + + /** + * Reads given input stream up to maxLength and creates a new instance from read data. + * Read maxLength is never longer than stream size (ie. maxLength is only limiting, not assuring maxLength) + * + * @param stream to read from + * @param maxLength read to this maxLength or end of stream + * @return new instance + */ + public static Bytes from(InputStream stream, int maxLength) { + return wrap(Util.readFromStream(stream, maxLength)); } /** diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 3e0fcbc..0196757 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -316,20 +316,25 @@ static void reverse(byte[] array, int fromIndex, int toIndex) { private static final int BUF_SIZE = 0x1000; // 4K /** - * Read all bytes, buffered, from given input stream + * Read bytes, buffered, from given input stream. Pass -1 to read the whole stream or limit with length + * parameter. * - * @param inputStream to read from - * @return all bytes from the stream + * @param inputStream to read from + * @param maxLengthToRead how many bytes to read from input stream; pass -1 to read whole stream + * @return all bytes from the stream (possibly limited by maxLengthToRead); output length is never longer than stream size */ - static byte[] readFromStream(InputStream inputStream) { + static byte[] readFromStream(InputStream inputStream, final int maxLengthToRead) { + final boolean readWholeStream = maxLengthToRead == -1; + int remaining = maxLengthToRead; try { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - byte[] buf = new byte[BUF_SIZE]; - while (true) { + ByteArrayOutputStream out = new ByteArrayOutputStream(readWholeStream ? 32 : maxLengthToRead); + while (readWholeStream || remaining > 0) { + byte[] buf = new byte[Math.min(BUF_SIZE, readWholeStream ? BUF_SIZE : remaining)]; int r = inputStream.read(buf); if (r == -1) { break; } + remaining -= r; out.write(buf, 0, r); } return out.toByteArray(); @@ -345,7 +350,7 @@ static byte[] readFromStream(InputStream inputStream) { * @return all bytes from the dataInput */ static byte[] readFromDataInput(DataInput dataInput, int length) { - ByteArrayOutputStream out = new ByteArrayOutputStream(); + ByteArrayOutputStream out = new ByteArrayOutputStream(length); try { byte[] buf; int remaining = length; diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index a180dfd..619e526 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -27,6 +27,7 @@ import org.junit.rules.TemporaryFolder; import java.io.ByteArrayInputStream; +import java.io.DataInput; import java.io.DataInputStream; import java.io.File; import java.io.FileOutputStream; @@ -316,12 +317,26 @@ public void fromInputStream() { checkInputStream(example_bytes_eight); checkInputStream(example_bytes_sixteen); checkInputStream(Bytes.random(32 * 987).array()); + checkInputStream(Bytes.random(1020 * 1104).array()); } private void checkInputStream(byte[] array) { assertArrayEquals(array, Bytes.from(new ByteArrayInputStream(array)).array()); } + @Test + public void fromInputStreamLimited() { + Bytes data = Bytes.random(1090 * 1003); + assertArrayEquals(data.resize(5123, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array(), Bytes.from(new ByteArrayInputStream(data.array()), 5123).array()); + + assertArrayEquals(new byte[0], Bytes.from(new ByteArrayInputStream(example_bytes_sixteen), 0).array()); + assertArrayEquals(new byte[]{0x7E}, Bytes.from(new ByteArrayInputStream(example_bytes_sixteen), 1).array()); + assertArrayEquals(new byte[]{0x7E, (byte) 0xD1}, Bytes.from(new ByteArrayInputStream(example_bytes_sixteen), 2).array()); + assertArrayEquals(new byte[]{0x7E, (byte) 0xD1, (byte) 0xFD}, Bytes.from(new ByteArrayInputStream(example_bytes_sixteen), 3).array()); + assertArrayEquals(new byte[]{0x7E, (byte) 0xD1, (byte) 0xFD, (byte) 0xAA}, Bytes.from(new ByteArrayInputStream(example_bytes_sixteen), 4).array()); + assertArrayEquals(example_bytes_sixteen, Bytes.from(new ByteArrayInputStream(example_bytes_sixteen), 128).array()); + } + @Test public void fromDataInput() { checkDataInput(example_bytes_one); @@ -334,12 +349,12 @@ public void fromDataInput() { } private void checkDataInput(byte[] array) { - assertArrayEquals(array, Bytes.from(new DataInputStream(new ByteArrayInputStream(array)), array.length).array()); + assertArrayEquals(array, Bytes.from((DataInput) new DataInputStream(new ByteArrayInputStream(array)), array.length).array()); } @Test(expected = IllegalStateException.class) public void fromDataInputShouldThrowException() { - Bytes.from(new DataInputStream(new ByteArrayInputStream(example_bytes_one)), 2); + Bytes.from((DataInput) new DataInputStream(new ByteArrayInputStream(example_bytes_one)), 2); } @Test diff --git a/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java b/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java index b429a11..e6882bc 100644 --- a/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java @@ -30,7 +30,7 @@ public class BytesSharedDataConverterTest extends ABytesTest { @Test - public void array() throws Exception { + public void array() { assertArrayEquals(new byte[0], Bytes.from(new byte[0]).array()); assertArrayEquals(example_bytes_one, Bytes.from(example_bytes_one).array()); assertArrayEquals(example_bytes_two, Bytes.from(example_bytes_two).array()); @@ -41,7 +41,7 @@ public void array() throws Exception { } @Test - public void bigInteger() throws Exception { + public void bigInteger() { assertArrayEquals(example_bytes_one, Bytes.from(example_bytes_one).toBigInteger().toByteArray()); assertArrayEquals(example_bytes_two, Bytes.from(example_bytes_two).toBigInteger().toByteArray()); assertArrayEquals(example_bytes_four, Bytes.from(example_bytes_four).toBigInteger().toByteArray()); @@ -51,7 +51,7 @@ public void bigInteger() throws Exception { } @Test - public void buffer() throws Exception { + public void buffer() { assertEquals(ByteBuffer.wrap(new byte[0]), Bytes.from(new byte[0]).buffer()); assertEquals(ByteBuffer.wrap(example_bytes_one), Bytes.from(example_bytes_one).buffer()); assertEquals(ByteBuffer.wrap(example_bytes_two), Bytes.from(example_bytes_two).buffer()); @@ -62,7 +62,7 @@ public void buffer() throws Exception { } @Test - public void duplicate() throws Exception { + public void duplicate() { Bytes b = Bytes.from(example_bytes_sixteen); Bytes b2 = b.duplicate(); assertNotSame(b, b2); @@ -70,10 +70,10 @@ public void duplicate() throws Exception { } @Test - public void inputStream() throws Exception { - assertArrayEquals(example_bytes_one, Util.readFromStream(Bytes.from(example_bytes_one).inputStream())); - assertArrayEquals(example_bytes_two, Util.readFromStream(Bytes.from(example_bytes_two).inputStream())); - assertArrayEquals(example_bytes_four, Util.readFromStream(Bytes.from(example_bytes_four).inputStream())); - assertArrayEquals(example_bytes_sixteen, Util.readFromStream(Bytes.from(example_bytes_sixteen).inputStream())); + public void inputStream() { + assertArrayEquals(example_bytes_one, Util.readFromStream(Bytes.from(example_bytes_one).inputStream(), -1)); + assertArrayEquals(example_bytes_two, Util.readFromStream(Bytes.from(example_bytes_two).inputStream(), -1)); + assertArrayEquals(example_bytes_four, Util.readFromStream(Bytes.from(example_bytes_four).inputStream(), -1)); + assertArrayEquals(example_bytes_sixteen, Util.readFromStream(Bytes.from(example_bytes_sixteen).inputStream(), -1)); } -} \ No newline at end of file +} diff --git a/src/test/java/at/favre/lib/bytes/UtilTest.java b/src/test/java/at/favre/lib/bytes/UtilTest.java index 03ff618..7764ff5 100644 --- a/src/test/java/at/favre/lib/bytes/UtilTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilTest.java @@ -185,7 +185,7 @@ public void testAsList_subList_toArray_roundTrip() { @Test(expected = IllegalStateException.class) public void readFromStream() { - Util.readFromStream(null); + Util.readFromStream(null, -1); } @Test From af745eecf1440f1e25acf0aaf286f118acfa1142 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 18:27:09 +0200 Subject: [PATCH 024/181] Add indexOf() with `fromIndex` parameter refs #14 --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 17 +++++++++++++++-- .../java/at/favre/lib/bytes/BytesMiscTest.java | 10 ++++++++++ 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 01a118f..5c1c323 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ * add `count` method for counting byte arrays (like pattern matching) * add dedicated `md5` and `sha1` transformer methods * add `from(Inputstream stream, int maxlength)` limiting stream reading constructor #13 + * add indexOf() with `fromIndex` parameter #14 ## v0.6.0 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 36cbcab..b9beb11 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1109,14 +1109,27 @@ public boolean contains(byte target) { /** * Returns the index of the first appearance of the value {@code target} in - * {@code array}. + * {@code array}. Same as calling {@link #indexOf(byte, int)} with fromIndex '0'. * * @param target a primitive {@code byte} value * @return the least index {@code i} for which {@code array[i] == target}, or * {@code -1} if no such index exists. */ public int indexOf(byte target) { - return Util.indexOf(internalArray(), target, 0, length()); + return indexOf(target, 0); + } + + /** + * Returns the index of the first appearance of the value {@code target} in + * {@code array} from given start index 'fromIndex'. + * + * @param target a primitive {@code byte} value + * @param fromIndex search from this index + * @return the least index {@code i} for which {@code array[i] == target}, or + * {@code -1} if no such index exists or fromIndex is gt target length. + */ + public int indexOf(byte target, int fromIndex) { + return Util.indexOf(internalArray(), target, fromIndex, length()); } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 86fa431..0b54a8a 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -165,6 +165,16 @@ public void indexOfByte() { assertEquals(-1, Bytes.from(example_bytes_seven).indexOf((byte) 0x00)); } + @Test + public void indexOfByteFromIndex() { + assertEquals(-1, Bytes.allocate(0).indexOf((byte) 0xFD, 0)); + assertEquals(-1, Bytes.allocate(0).indexOf((byte) 0xFD, 100)); + assertEquals(5, Bytes.allocate(128).indexOf((byte) 0x00, 5)); + assertEquals(2, Bytes.from(example_bytes_sixteen).indexOf((byte) 0xFD, 0)); + assertEquals(10, Bytes.from(example_bytes_sixteen).indexOf((byte) 0xFD, 5)); + } + + @Test public void indexOfArray() { assertEquals(-1, Bytes.allocate(0).indexOf(new byte[]{(byte) 0xFD})); From 5109db14de01bbb712ce2a2b2dfaa7a5d878d7ea Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 18:27:53 +0200 Subject: [PATCH 025/181] Update Readme refs #14 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7f7219d..2f3cd9f 100644 --- a/README.md +++ b/README.md @@ -351,6 +351,7 @@ Finding occurrence of specific bytes: ```java Bytes.wrap(array).contains((byte) 0xE1); Bytes.wrap(array).indexOf((byte) 0xFD); +Bytes.wrap(array).indexOf((byte) 0xFD, 5); //search fromIndex 5 Bytes.wrap(array).lastIndexOf((byte) 0xAE); ``` From 344cc4a2ce7bacf4a765cf7ac759dc6173b8659d Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 20:51:29 +0200 Subject: [PATCH 026/181] Add support for base64 url safe encoding fix #15 --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Base64.java | 55 ++++++++++++++----- .../favre/lib/bytes/BinaryToTextEncoding.java | 14 ++++- src/main/java/at/favre/lib/bytes/Bytes.java | 32 ++++++----- .../lib/bytes/BinaryToTextEncodingTest.java | 19 +++++-- .../lib/bytes/BytesParseAndEncodingTest.java | 38 ++++++++----- 6 files changed, 111 insertions(+), 48 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 5c1c323..10fa2c6 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,7 @@ * add dedicated `md5` and `sha1` transformer methods * add `from(Inputstream stream, int maxlength)` limiting stream reading constructor #13 * add indexOf() with `fromIndex` parameter #14 + * add support for base64 url safe encoding #15 ## v0.6.0 diff --git a/src/main/java/at/favre/lib/bytes/Base64.java b/src/main/java/at/favre/lib/bytes/Base64.java index f9b7667..babe695 100644 --- a/src/main/java/at/favre/lib/bytes/Base64.java +++ b/src/main/java/at/favre/lib/bytes/Base64.java @@ -33,7 +33,21 @@ final class Base64 { private Base64() { } - public static byte[] decode(String in) { + private static final byte[] MAP = new byte[]{ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', + 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', + 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', + '5', '6', '7', '8', '9', '+', '/' + }; + + private static final byte[] URL_MAP = new byte[]{ + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', + 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', + 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', + '5', '6', '7', '8', '9', '-', '_' + }; + + static byte[] decode(String in) { // Ignore trailing '=' padding and whitespace from the input. int limit = in.length(); for (; limit > 0; limit--) { @@ -114,19 +128,16 @@ public static byte[] decode(String in) { return prefix; } - private static final byte[] MAP = new byte[]{ - 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', - 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', - 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', - '5', '6', '7', '8', '9', '+', '/' - }; + static String encode(byte[] in) { + return encode(in, false, true); + } - public static String encode(byte[] in) { - return encode(in, MAP); + static String encode(byte[] in, boolean urlSafe, boolean usePadding) { + return encode(in, urlSafe ? URL_MAP : MAP, usePadding); } - private static String encode(byte[] in, byte[] map) { - int length = (in.length + 2) / 3 * 4; + private static String encode(byte[] in, byte[] map, boolean usePadding) { + int length = outLength(in.length, usePadding); byte[] out = new byte[length]; int index = 0, end = in.length - in.length % 3; for (int i = 0; i < end; i += 3) { @@ -139,16 +150,32 @@ private static String encode(byte[] in, byte[] map) { case 1: out[index++] = map[(in[end] & 0xff) >> 2]; out[index++] = map[(in[end] & 0x03) << 4]; - out[index++] = '='; - out[index++] = '='; + if (usePadding) { + out[index++] = '='; + out[index] = '='; + } break; case 2: out[index++] = map[(in[end] & 0xff) >> 2]; out[index++] = map[((in[end] & 0x03) << 4) | ((in[end + 1] & 0xff) >> 4)]; out[index++] = map[((in[end + 1] & 0x0f) << 2)]; - out[index++] = '='; + + if (usePadding) { + out[index] = '='; + } break; } return new String(out, StandardCharsets.US_ASCII); } + + private static int outLength(int srclen, boolean doPadding) { + int len; + if (doPadding) { + len = 4 * ((srclen + 2) / 3); + } else { + int n = srclen % 3; + len = 4 * (srclen / 3) + (n == 0 ? 0 : n + 1); + } + return len; + } } diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index 3fbb239..ceb3066 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -132,9 +132,21 @@ public byte[] decode(String hexString) { * Simple Base64 encoder */ class Base64Encoding implements EncoderDecoder { + private final boolean urlSafe; + private final boolean padding; + + Base64Encoding() { + this(false, true); + } + + Base64Encoding(boolean urlSafe, boolean padding) { + this.urlSafe = urlSafe; + this.padding = padding; + } + @Override public String encode(byte[] array, ByteOrder byteOrder) { - return Base64.encode((byteOrder == ByteOrder.BIG_ENDIAN) ? array : Bytes.from(array).reverse().array()); + return Base64.encode((byteOrder == ByteOrder.BIG_ENDIAN) ? array : Bytes.from(array).reverse().array(), urlSafe, padding); } @Override diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index b9beb11..168e5ca 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,11 +21,7 @@ package at.favre.lib.bytes; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; +import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -35,14 +31,7 @@ import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.Arrays; -import java.util.BitSet; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -567,7 +556,7 @@ public static Bytes parseBase36(String base36String) { } /** - * Parsing of base64 encoded byte arrays. + * Parsing of base64 encoded byte arrays. Supporting RFC 3548 normal and url safe encoding. * * @param base64String the encoded string * @return decoded instance @@ -1482,7 +1471,20 @@ public String encodeBase36() { * @see Base64 */ public String encodeBase64() { - return encode(new BinaryToTextEncoding.Base64Encoding()); + return encode(new BinaryToTextEncoding.Base64Encoding(false, true)); + } + + /** + * Base64 representation with padding. This is the url safe variation subsitution '+' and '/' with '-' and '_' + * respectively. This encoding has a space efficiency of 75%. + *

+ * Example: SpT9_x6v7Q== + * + * @return base64 url safe string + * @see Base64 + */ + public String encodeBase64Url() { + return encode(new BinaryToTextEncoding.Base64Encoding(true, true)); } /** diff --git a/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java b/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java index 4691e00..cc1099b 100644 --- a/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java @@ -81,12 +81,23 @@ public void encodeDecodeRadixZeros() { @Test public void encodeDecodeBase64() { - for (int i = 4; i < 32; i += 4) { + BinaryToTextEncoding.EncoderDecoder encoderPad = new BinaryToTextEncoding.Base64Encoding(false, true); + BinaryToTextEncoding.EncoderDecoder encoderUrlPad = new BinaryToTextEncoding.Base64Encoding(true, true); + BinaryToTextEncoding.EncoderDecoder encoderNoPad = new BinaryToTextEncoding.Base64Encoding(false, false); + + for (int i = 0; i < 32; i += 4) { Bytes rnd = Bytes.random(i); - BinaryToTextEncoding.EncoderDecoder encoding = new BinaryToTextEncoding.Base64Encoding(); - String encodedBigEndian = encoding.encode(rnd.array(), ByteOrder.BIG_ENDIAN); - byte[] decoded = encoding.decode(encodedBigEndian); + String encodedBigEndian = encoderPad.encode(rnd.array(), ByteOrder.BIG_ENDIAN); + byte[] decoded = encoderPad.decode(encodedBigEndian); assertEquals(rnd, Bytes.wrap(decoded)); + + String encodedBigEndianUrlPad = encoderUrlPad.encode(rnd.array(), ByteOrder.BIG_ENDIAN); + byte[] decodedUrlPad = encoderPad.decode(encodedBigEndianUrlPad); + assertEquals(rnd, Bytes.wrap(decodedUrlPad)); + + String encodedBigEndianNoPad = encoderNoPad.encode(rnd.array(), ByteOrder.BIG_ENDIAN); + byte[] decodedNoPad = encoderPad.decode(encodedBigEndianNoPad); + assertEquals(rnd, Bytes.wrap(decodedNoPad)); } } diff --git a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java index ecfe522..255187c 100644 --- a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java @@ -31,12 +31,12 @@ public class BytesParseAndEncodingTest extends ABytesTest { private byte[] encodingExample; @Before - public void setUp() throws Exception { + public void setUp() { encodingExample = new byte[]{0x4A, (byte) 0x94, (byte) 0xFD, (byte) 0xFF, 0x1E, (byte) 0xAF, (byte) 0xED}; } @Test - public void parseHex() throws Exception { + public void parseHex() { byte[] defaultArray = new byte[]{(byte) 0xA0, (byte) 0xE1}; assertArrayEquals(defaultArray, Bytes.parseHex("0xA0E1").array()); assertArrayEquals(defaultArray, Bytes.parseHex("A0E1").array()); @@ -45,12 +45,12 @@ public void parseHex() throws Exception { } @Test(expected = IllegalArgumentException.class) - public void parseHexInvalid() throws Exception { + public void parseHexInvalid() { Bytes.parseHex("A0E"); } @Test - public void encodeHex() throws Exception { + public void encodeHex() { byte[] defaultArray = new byte[]{(byte) 0xA0, (byte) 0xE1}; assertEquals("a0e1", Bytes.from(defaultArray).encodeHex()); assertEquals("A0E1", Bytes.from(defaultArray).encodeHex(true)); @@ -59,58 +59,68 @@ public void encodeHex() throws Exception { } @Test - public void parseBase64() throws Exception { + public void parseBase64() { assertArrayEquals(encodingExample, Bytes.parseBase64("SpT9/x6v7Q==").array()); + assertArrayEquals(encodingExample, Bytes.parseBase64("SpT9_x6v7Q==").array()); } @Test(expected = IllegalArgumentException.class) - public void parseBase64Invalid() throws Exception { + public void parseBase64Invalid() { Bytes.parseBase64("☕"); } @Test - public void encodeBase64() throws Exception { + public void encodeBase64() { + assertEquals("", Bytes.from(new byte[0]).encodeBase64()); + assertEquals("AA==", Bytes.from(new byte[1]).encodeBase64()); assertEquals("SpT9/x6v7Q==", Bytes.from(encodingExample).encodeBase64()); } @Test - public void encodeBinary() throws Exception { + public void encodeBase64Url() { + assertEquals("", Bytes.from(new byte[0]).encodeBase64Url()); + assertEquals("AA==", Bytes.from(new byte[1]).encodeBase64Url()); + assertEquals("SpT9_x6v7Q==", Bytes.from(encodingExample).encodeBase64Url()); + } + + @Test + public void encodeBinary() { byte[] defaultArray = new byte[]{(byte) 0xA0, (byte) 0xE1}; assertEquals("1010000011100001", Bytes.from(defaultArray).encodeBinary()); assertEquals("1001010100101001111110111111111000111101010111111101101", Bytes.from(encodingExample).encodeBinary()); } @Test - public void parseOctal() throws Exception { + public void parseOctal() { assertArrayEquals(encodingExample, Bytes.parseOctal("1124517677707527755").array()); } @Test - public void encodeOctal() throws Exception { + public void encodeOctal() { byte[] defaultArray = new byte[]{(byte) 0xA0, (byte) 0xE1}; assertEquals("120341", Bytes.from(defaultArray).encodeOctal()); assertEquals("1124517677707527755", Bytes.from(encodingExample).encodeOctal()); } @Test - public void parseDec() throws Exception { + public void parseDec() { assertArrayEquals(encodingExample, Bytes.parseDec("20992966904426477").array()); } @Test - public void encodeDec() throws Exception { + public void encodeDec() { byte[] defaultArray = new byte[]{(byte) 0xA0, (byte) 0xE1}; assertEquals("41185", Bytes.from(defaultArray).encodeDec()); assertEquals("20992966904426477", Bytes.from(encodingExample).encodeDec()); } @Test - public void parseBase36() throws Exception { + public void parseBase36() { assertArrayEquals(encodingExample, Bytes.parseBase36("5qpdvuwjvu5").array()); } @Test - public void encodeBase36() throws Exception { + public void encodeBase36() { byte[] defaultArray = new byte[]{(byte) 0xA0, (byte) 0xE1, (byte) 0x13}; assertEquals("69zbn", Bytes.from(defaultArray).encodeBase36()); assertEquals("5qpdvuwjvu5", Bytes.from(encodingExample).encodeBase36()); From f90108586065a26db9807832b64c7131cad55759 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 21:04:41 +0200 Subject: [PATCH 027/181] Add support from indexOf() with fromIndex for array search fix #14 --- src/main/java/at/favre/lib/bytes/Bytes.java | 22 +++++++++- src/main/java/at/favre/lib/bytes/Util.java | 41 +++---------------- .../at/favre/lib/bytes/BytesMiscTest.java | 11 ++++- .../java/at/favre/lib/bytes/UtilTest.java | 32 +++++++-------- 4 files changed, 50 insertions(+), 56 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 168e5ca..299dd9a 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1118,7 +1118,7 @@ public int indexOf(byte target) { * {@code -1} if no such index exists or fromIndex is gt target length. */ public int indexOf(byte target, int fromIndex) { - return Util.indexOf(internalArray(), target, fromIndex, length()); + return Util.indexOf(internalArray(), new byte[]{target}, fromIndex); } /** @@ -1134,7 +1134,25 @@ public int indexOf(byte target, int fromIndex) { * {@code -1} if no such index exists. */ public int indexOf(byte[] subArray) { - return Util.indexOf(internalArray(), subArray); + return Util.indexOf(internalArray(), subArray, 0); + } + + /** + * Returns the start position of the first occurrence of the specified {@code + * target} within {@code array} from given start index 'fromIndex', or {@code -1} + * if there is no such occurrence. + *

+ * More formally, returns the lowest index {@code i} such that {@code + * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly + * the same elements as {@code target}. + * + * @param subArray the array to search for as a sub-sequence of {@code array} + * @param fromIndex search from this index + * @return the least index {@code i} for which {@code array[i] == target}, or + * {@code -1} if no such index exists. + */ + public int indexOf(byte[] subArray, int fromIndex) { + return Util.indexOf(internalArray(), subArray, fromIndex); } /** diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 0196757..de4ebe6 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,23 +21,10 @@ package at.favre.lib.bytes; -import java.io.ByteArrayOutputStream; -import java.io.DataInput; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.ByteBuffer; import java.nio.file.Files; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Common Util methods to convert or modify byte arrays @@ -69,24 +56,6 @@ static byte[] concat(byte[]... arrays) { return result; } - /** - * Returns the index of the first appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code byte} values, possibly empty - * @param target a primitive {@code byte} value - * @return the least index {@code i} for which {@code array[i] == target}, or - * {@code -1} if no such index exists. - */ - static int indexOf(byte[] array, byte target, int start, int end) { - for (int i = start; i < end; i++) { - if (array[i] == target) { - return i; - } - } - return -1; - } - /** * Returns the start position of the first occurrence of the specified {@code * target} within {@code array}, or {@code -1} if there is no such occurrence. @@ -98,15 +67,15 @@ static int indexOf(byte[] array, byte target, int start, int end) { * @param array the array to search for the sequence {@code target} * @param target the array to search for as a sub-sequence of {@code array} */ - public static int indexOf(byte[] array, byte[] target) { + static int indexOf(byte[] array, byte[] target, int start) { Objects.requireNonNull(array, "array must not be null"); Objects.requireNonNull(target, "target must not be null"); if (target.length == 0) { - return 0; + return -1; } outer: - for (int i = 0; i < array.length - target.length + 1; i++) { + for (int i = start; i < array.length - target.length + 1; i++) { for (int j = 0; j < target.length; j++) { if (array[i + j] != target[j]) { continue outer; diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 0b54a8a..7ebcff7 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -174,15 +174,22 @@ public void indexOfByteFromIndex() { assertEquals(10, Bytes.from(example_bytes_sixteen).indexOf((byte) 0xFD, 5)); } - @Test public void indexOfArray() { assertEquals(-1, Bytes.allocate(0).indexOf(new byte[]{(byte) 0xFD})); - assertEquals(0, Bytes.allocate(1).indexOf(new byte[0])); + assertEquals(-1, Bytes.allocate(1).indexOf(new byte[0])); assertEquals(2, Bytes.from(example_bytes_seven).indexOf(new byte[]{(byte) 0xFD, (byte) 0xFF})); assertEquals(-1, Bytes.from(example_bytes_seven).indexOf(new byte[]{(byte) 0xFD, (byte) 0x00})); } + @Test + public void indexOfArrayFromIndex() { + assertEquals(-1, Bytes.allocate(0).indexOf(new byte[]{(byte) 0xFD}, 0)); + assertEquals(-1, Bytes.allocate(1).indexOf(new byte[0], 0)); + assertEquals(-1, Bytes.from(example_bytes_seven).indexOf(new byte[]{(byte) 0xFD, (byte) 0xFF}, 8)); + assertEquals(2, Bytes.from(new byte[]{(byte) 0x8E, (byte) 0xD1, (byte) 0x8E, (byte) 0xD1, 0x12, (byte) 0xAF, (byte) 0x78, 0x09, 0x1E, (byte) 0xD1, (byte) 0xFD, (byte) 0xAA, 0x12}).indexOf(new byte[]{(byte) 0x8E, (byte) 0xD1}, 1)); + } + @Test public void lastIndexOf() { assertEquals(-1, Bytes.allocate(0).lastIndexOf((byte) 0xFD)); diff --git a/src/test/java/at/favre/lib/bytes/UtilTest.java b/src/test/java/at/favre/lib/bytes/UtilTest.java index 7764ff5..0ac7afc 100644 --- a/src/test/java/at/favre/lib/bytes/UtilTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilTest.java @@ -53,39 +53,39 @@ public void testIndexOf() { } private int indexOf(byte[] empty, byte b) { - return Util.indexOf(empty, b, 0, empty.length); + return Util.indexOf(empty, new byte[]{b}, 0); } @Test public void testIndexOf_arrayTarget() { - assertEquals(0, Util.indexOf(EMPTY, EMPTY)); - assertEquals(0, Util.indexOf(ARRAY234, EMPTY)); - assertEquals(-1, Util.indexOf(EMPTY, ARRAY234)); - assertEquals(-1, Util.indexOf(ARRAY234, ARRAY1)); - assertEquals(-1, Util.indexOf(ARRAY1, ARRAY234)); - assertEquals(0, Util.indexOf(ARRAY1, ARRAY1)); - assertEquals(0, Util.indexOf(ARRAY234, ARRAY234)); + assertEquals(-1, Util.indexOf(EMPTY, EMPTY, 0)); + assertEquals(-1, Util.indexOf(ARRAY234, EMPTY, 0)); + assertEquals(-1, Util.indexOf(EMPTY, ARRAY234, 0)); + assertEquals(-1, Util.indexOf(ARRAY234, ARRAY1, 0)); + assertEquals(-1, Util.indexOf(ARRAY1, ARRAY234, 0)); + assertEquals(0, Util.indexOf(ARRAY1, ARRAY1, 0)); + assertEquals(0, Util.indexOf(ARRAY234, ARRAY234, 0)); assertEquals(0, Util.indexOf( - ARRAY234, new byte[]{(byte) 2, (byte) 3})); + ARRAY234, new byte[]{(byte) 2, (byte) 3}, 0)); assertEquals(1, Util.indexOf( - ARRAY234, new byte[]{(byte) 3, (byte) 4})); - assertEquals(1, Util.indexOf(ARRAY234, new byte[]{(byte) 3})); - assertEquals(2, Util.indexOf(ARRAY234, new byte[]{(byte) 4})); - assertEquals(1, Util.indexOf(new byte[]{(byte) 2, (byte) 3, (byte) 3, (byte) 3, (byte) 3}, new byte[]{(byte) 3})); + ARRAY234, new byte[]{(byte) 3, (byte) 4}, 0)); + assertEquals(1, Util.indexOf(ARRAY234, new byte[]{(byte) 3}, 0)); + assertEquals(2, Util.indexOf(ARRAY234, new byte[]{(byte) 4}, 0)); + assertEquals(1, Util.indexOf(new byte[]{(byte) 2, (byte) 3, (byte) 3, (byte) 3, (byte) 3}, new byte[]{(byte) 3}, 0)); assertEquals(2, Util.indexOf( new byte[]{(byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 4, (byte) 2, (byte) 3}, new byte[]{(byte) 2, (byte) 3, (byte) 4} - )); + , 0)); assertEquals(1, Util.indexOf( new byte[]{(byte) 2, (byte) 2, (byte) 3, (byte) 4, (byte) 2, (byte) 3, (byte) 4}, new byte[]{(byte) 2, (byte) 3, (byte) 4} - )); + , 0)); assertEquals(-1, Util.indexOf( new byte[]{(byte) 4, (byte) 3, (byte) 2}, new byte[]{(byte) 2, (byte) 3, (byte) 4} - )); + , 0)); } @Test From 0f61a58421fcf92c2099544a432679046169f36f Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 22:02:11 +0200 Subject: [PATCH 028/181] Use EMPTY constant instance for empty byte array to safe memory fix #17 --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 10 ++++++---- .../at/favre/lib/bytes/BytesConstructorTests.java | 12 +++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 10fa2c6..60078d4 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ * add `from(Inputstream stream, int maxlength)` limiting stream reading constructor #13 * add indexOf() with `fromIndex` parameter #14 * add support for base64 url safe encoding #15 + * use EMPTY constant instance for empty byte array to safe memory #16 ## v0.6.0 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 299dd9a..d37f4e7 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -60,6 +60,8 @@ @SuppressWarnings("WeakerAccess") public class Bytes implements Comparable, Serializable, Iterable { + private final static Bytes EMPTY = Bytes.wrap(new byte[0]); + /* FACTORY ***************************************************************************************************/ /** @@ -90,10 +92,10 @@ public static Bytes allocate(int length, byte defaultValue) { /** * Creates an Byte instance with an internal empty byte array. Same as calling {@link #allocate(int)} with 0. * - * @return new instance + * @return the empty instance (always the same reference */ public static Bytes empty() { - return allocate(0); + return EMPTY; } /** @@ -120,7 +122,7 @@ public static Bytes wrap(Bytes bytes) { * @return new instance */ public static Bytes wrapNullSafe(byte[] array) { - return wrap(array != null ? array : new byte[0]); + return array != null ? wrap(array) : empty(); } /** @@ -175,7 +177,7 @@ public static Bytes from(byte[] byteArrayToCopy) { * @return new instance */ public static Bytes fromNullSafe(byte[] byteArrayToCopy) { - return from(byteArrayToCopy != null ? byteArrayToCopy : new byte[0]); + return byteArrayToCopy != null ? from(byteArrayToCopy) : empty(); } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index 619e526..aad0cfa 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -26,13 +26,10 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileOutputStream; +import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.text.Normalizer; @@ -82,6 +79,11 @@ public void empty() { assertEquals(0, Bytes.empty().length()); assertEquals(Bytes.allocate(0), Bytes.empty()); assertArrayEquals(new byte[0], Bytes.empty().array()); + assertSame(Bytes.empty(), Bytes.empty()); + + Bytes empty = Bytes.empty(); + empty = empty.byteOrder(ByteOrder.LITTLE_ENDIAN); + assertNotSame(Bytes.empty(), empty); } @Test From 1c9a9e58dd2085d64b12921109aed1a80d80a1e2 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 22:04:02 +0200 Subject: [PATCH 029/181] Update Readme refs #15 --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 2f3cd9f..4f1f9fd 100644 --- a/README.md +++ b/README.md @@ -300,6 +300,7 @@ This lib has it's own build in **Base64** encoder: Bytes.parseBase64("SpT9/x6v7Q=="); Bytes.from(array).encodeBase64(); //"SpT9/x6v7Q==" +Bytes.from(array).encodeBase64Url(); //"SpT9_x6v7Q==" ``` Additionally the following encodings are supported: From 60b899b6e416c419a823a19e0b771a7903e7ae1f Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 23:12:21 +0200 Subject: [PATCH 030/181] Add `startsWith()` and `endsWidth()` methods refs #12 --- CHANGELOG | 1 + README.md | 3 ++ src/main/java/at/favre/lib/bytes/Bytes.java | 29 +++++++++++++++-- src/main/java/at/favre/lib/bytes/Util.java | 6 ++-- .../at/favre/lib/bytes/BytesMiscTest.java | 26 +++++++++++++++ .../java/at/favre/lib/bytes/UtilTest.java | 32 +++++++++---------- 6 files changed, 75 insertions(+), 22 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 60078d4..bacea64 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ * add indexOf() with `fromIndex` parameter #14 * add support for base64 url safe encoding #15 * use EMPTY constant instance for empty byte array to safe memory #16 + * add `startsWith()` and `endsWidth()` methods #12 ## v0.6.0 diff --git a/README.md b/README.md index 4f1f9fd..f150dd0 100644 --- a/README.md +++ b/README.md @@ -352,8 +352,11 @@ Finding occurrence of specific bytes: ```java Bytes.wrap(array).contains((byte) 0xE1); Bytes.wrap(array).indexOf((byte) 0xFD); +Bytes.wrap(array).indexOf(new byte[] {(byte) 0xFD, 0x23}); Bytes.wrap(array).indexOf((byte) 0xFD, 5); //search fromIndex 5 Bytes.wrap(array).lastIndexOf((byte) 0xAE); +Bytes.wrap(array).startsWith(new byte[] {(byte) 0xAE, 0x32}); +Bytes.wrap(array).endsWidth(new byte[] {(byte) 0xAE, 0x23}); ``` Length checks: diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index d37f4e7..15b9c5d 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1120,7 +1120,7 @@ public int indexOf(byte target) { * {@code -1} if no such index exists or fromIndex is gt target length. */ public int indexOf(byte target, int fromIndex) { - return Util.indexOf(internalArray(), new byte[]{target}, fromIndex); + return indexOf(new byte[]{target}, fromIndex); } /** @@ -1136,7 +1136,7 @@ public int indexOf(byte target, int fromIndex) { * {@code -1} if no such index exists. */ public int indexOf(byte[] subArray) { - return Util.indexOf(internalArray(), subArray, 0); + return indexOf(subArray, 0); } /** @@ -1154,7 +1154,18 @@ public int indexOf(byte[] subArray) { * {@code -1} if no such index exists. */ public int indexOf(byte[] subArray, int fromIndex) { - return Util.indexOf(internalArray(), subArray, fromIndex); + return Util.indexOf(internalArray(), subArray, fromIndex, length()); + } + + /** + * Checks if the given sub array is equal to the start of given array. That is, sub array must be gt or eq + * to the length of the internal array and internal[i] == subArray[i] for i=0..subArray.length-1 + * + * @param subArray to check against the start of the internal array + * @return true if the start of the internal array is eq to given sub array + */ + public boolean startsWith(byte[] subArray) { + return Util.indexOf(internalArray(), subArray, 0, 1) == 0; } /** @@ -1169,6 +1180,18 @@ public int lastIndexOf(byte target) { return Util.lastIndexOf(internalArray(), target, 0, length()); } + /** + * Checks if the given sub array is equal to the end of given array. That is, sub array must be gt or eq + * to the length of the internal array and internal[i] == subArray[i] for i=subArray.length...internal.length + * + * @param subArray to check against the end of the internal array + * @return true if the end of the internal array is eq to given sub array + */ + public boolean endsWith(byte[] subArray) { + int startIndex = length() - subArray.length; + return startIndex >= 0 && Util.indexOf(internalArray(), subArray, startIndex, startIndex + 1) == startIndex; + } + /** * Returns the {@code bit} value as boolean at the specified index. Bit index 0 is the LSB, so for example byte word * 1000 0000 has bitAt(0) == false and bitAt(7) == true. diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index de4ebe6..9f4cb1d 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -67,15 +67,15 @@ static byte[] concat(byte[]... arrays) { * @param array the array to search for the sequence {@code target} * @param target the array to search for as a sub-sequence of {@code array} */ - static int indexOf(byte[] array, byte[] target, int start) { + static int indexOf(byte[] array, byte[] target, int start, int end) { Objects.requireNonNull(array, "array must not be null"); Objects.requireNonNull(target, "target must not be null"); - if (target.length == 0) { + if (target.length == 0 || start < 0) { return -1; } outer: - for (int i = start; i < array.length - target.length + 1; i++) { + for (int i = start; i < Math.min(end, array.length - target.length + 1); i++) { for (int j = 0; j < target.length; j++) { if (array[i + j] != target[j]) { continue outer; diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 7ebcff7..387bebb 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -190,6 +190,32 @@ public void indexOfArrayFromIndex() { assertEquals(2, Bytes.from(new byte[]{(byte) 0x8E, (byte) 0xD1, (byte) 0x8E, (byte) 0xD1, 0x12, (byte) 0xAF, (byte) 0x78, 0x09, 0x1E, (byte) 0xD1, (byte) 0xFD, (byte) 0xAA, 0x12}).indexOf(new byte[]{(byte) 0x8E, (byte) 0xD1}, 1)); } + @Test + public void startsWidth() { + assertFalse(Bytes.allocate(0).startsWith(new byte[1])); + assertTrue(Bytes.allocate(1).startsWith(new byte[1])); + assertTrue(Bytes.allocate(128).startsWith(new byte[1])); + assertTrue(Bytes.allocate(128).startsWith(new byte[128])); + assertTrue(Bytes.from(example_bytes_seven).startsWith(new byte[]{0x4A})); + assertTrue(Bytes.from(example_bytes_seven).startsWith(new byte[]{0x4A, (byte) 0x94})); + assertTrue(Bytes.from(example_bytes_seven).startsWith(new byte[]{0x4A, (byte) 0x94, (byte) 0xFD})); + assertFalse(Bytes.from(example_bytes_seven).startsWith(new byte[]{0x4A, (byte) 0x94, (byte) 0x1D})); + assertTrue(Bytes.from(example_bytes_seven).startsWith(Bytes.from(example_bytes_seven).array())); + assertFalse(Bytes.from(example_bytes_seven).startsWith(Bytes.from(example_bytes_seven).append(0x30).array())); + } + + @Test + public void endsWith() { + assertTrue(Bytes.from(example_bytes_seven).endsWith(new byte[]{(byte) 0xFF, 0x1E, (byte) 0xAF, (byte) 0xED})); + assertTrue(Bytes.from(example_bytes_seven).endsWith(new byte[]{0x1E, (byte) 0xAF, (byte) 0xED})); + assertTrue(Bytes.from(example_bytes_seven).endsWith(new byte[]{(byte) 0xAF, (byte) 0xED})); + assertTrue(Bytes.from(example_bytes_seven).endsWith(new byte[]{(byte) 0xED})); + assertFalse(Bytes.allocate(0).endsWith(new byte[1])); + assertTrue(Bytes.allocate(1).endsWith(new byte[1])); + assertTrue(Bytes.allocate(128).endsWith(new byte[1])); + assertTrue(Bytes.allocate(128).endsWith(new byte[128])); + } + @Test public void lastIndexOf() { assertEquals(-1, Bytes.allocate(0).lastIndexOf((byte) 0xFD)); diff --git a/src/test/java/at/favre/lib/bytes/UtilTest.java b/src/test/java/at/favre/lib/bytes/UtilTest.java index 0ac7afc..2ee4302 100644 --- a/src/test/java/at/favre/lib/bytes/UtilTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilTest.java @@ -53,39 +53,39 @@ public void testIndexOf() { } private int indexOf(byte[] empty, byte b) { - return Util.indexOf(empty, new byte[]{b}, 0); + return Util.indexOf(empty, new byte[]{b}, 0, empty.length); } @Test public void testIndexOf_arrayTarget() { - assertEquals(-1, Util.indexOf(EMPTY, EMPTY, 0)); - assertEquals(-1, Util.indexOf(ARRAY234, EMPTY, 0)); - assertEquals(-1, Util.indexOf(EMPTY, ARRAY234, 0)); - assertEquals(-1, Util.indexOf(ARRAY234, ARRAY1, 0)); - assertEquals(-1, Util.indexOf(ARRAY1, ARRAY234, 0)); - assertEquals(0, Util.indexOf(ARRAY1, ARRAY1, 0)); - assertEquals(0, Util.indexOf(ARRAY234, ARRAY234, 0)); + assertEquals(-1, Util.indexOf(EMPTY, EMPTY, 0, EMPTY.length)); + assertEquals(-1, Util.indexOf(ARRAY234, EMPTY, 0, ARRAY234.length)); + assertEquals(-1, Util.indexOf(EMPTY, ARRAY234, 0, EMPTY.length)); + assertEquals(-1, Util.indexOf(ARRAY234, ARRAY1, 0, ARRAY234.length)); + assertEquals(-1, Util.indexOf(ARRAY1, ARRAY234, 0, ARRAY1.length)); + assertEquals(0, Util.indexOf(ARRAY1, ARRAY1, 0, ARRAY1.length)); + assertEquals(0, Util.indexOf(ARRAY234, ARRAY234, 0, ARRAY234.length)); assertEquals(0, Util.indexOf( - ARRAY234, new byte[]{(byte) 2, (byte) 3}, 0)); + ARRAY234, new byte[]{(byte) 2, (byte) 3}, 0, 2)); assertEquals(1, Util.indexOf( - ARRAY234, new byte[]{(byte) 3, (byte) 4}, 0)); - assertEquals(1, Util.indexOf(ARRAY234, new byte[]{(byte) 3}, 0)); - assertEquals(2, Util.indexOf(ARRAY234, new byte[]{(byte) 4}, 0)); - assertEquals(1, Util.indexOf(new byte[]{(byte) 2, (byte) 3, (byte) 3, (byte) 3, (byte) 3}, new byte[]{(byte) 3}, 0)); + ARRAY234, new byte[]{(byte) 3, (byte) 4}, 0, 2)); + assertEquals(1, Util.indexOf(ARRAY234, new byte[]{(byte) 3}, 0, ARRAY234.length)); + assertEquals(2, Util.indexOf(ARRAY234, new byte[]{(byte) 4}, 0, ARRAY234.length)); + assertEquals(1, Util.indexOf(new byte[]{(byte) 2, (byte) 3, (byte) 3, (byte) 3, (byte) 3}, new byte[]{(byte) 3}, 0, 5)); assertEquals(2, Util.indexOf( new byte[]{(byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 4, (byte) 2, (byte) 3}, new byte[]{(byte) 2, (byte) 3, (byte) 4} - , 0)); + , 0, 7)); assertEquals(1, Util.indexOf( new byte[]{(byte) 2, (byte) 2, (byte) 3, (byte) 4, (byte) 2, (byte) 3, (byte) 4}, new byte[]{(byte) 2, (byte) 3, (byte) 4} - , 0)); + , 0, 7)); assertEquals(-1, Util.indexOf( new byte[]{(byte) 4, (byte) 3, (byte) 2}, new byte[]{(byte) 2, (byte) 3, (byte) 4} - , 0)); + , 0, 2)); } @Test From f13cfa478179439a97b20b11d209892b149e0b12 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 9 Aug 2018 23:17:08 +0200 Subject: [PATCH 031/181] Fix checkstyle issue --- src/main/java/at/favre/lib/bytes/Bytes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 15b9c5d..b791ba9 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -60,7 +60,7 @@ @SuppressWarnings("WeakerAccess") public class Bytes implements Comparable, Serializable, Iterable { - private final static Bytes EMPTY = Bytes.wrap(new byte[0]); + private static final Bytes EMPTY = Bytes.wrap(new byte[0]); /* FACTORY ***************************************************************************************************/ From d0aab599b415d0a13b3ba76a61be38f040a1c878 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 10 Aug 2018 10:44:03 +0200 Subject: [PATCH 032/181] Update readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f150dd0..ac81484 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ as well as **immutable** and **mutable** access, so the caller may decide to fav performance. This can be seen as combination of the features provided by [`BigInteger`](https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html), [`ByteBuffer`](https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html) but -providing a lot of additional features. The main goal is to minimize the need +providing a lot of additional features (similar to Okio's [ByteString](https://github.com/square/okio)). The main goal is to minimize the need to blindly paste code snippets from [s](https://stackoverflow.com/questions/140131/convert-a-string-representation-of-a-hex-dump-to-a-byte-array-using-java) [t](https://stackoverflow.com/questions/12893758/how-to-reverse-the-byte-array-in-java) From 7bb6254d8c76d50fb9ebc9b239b497c00e537967 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 10 Aug 2018 11:10:50 +0200 Subject: [PATCH 033/181] Add caching for hashcode function --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 28 ++++++++++++++----- .../at/favre/lib/bytes/BytesMiscTest.java | 3 ++ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index bacea64..3b98a37 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -9,6 +9,7 @@ * add support for base64 url safe encoding #15 * use EMPTY constant instance for empty byte array to safe memory #16 * add `startsWith()` and `endsWidth()` methods #12 + * add cache for calculating the hashCode ## v0.6.0 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index b791ba9..923eb16 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,7 +21,11 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.File; +import java.io.InputStream; +import java.io.Serializable; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -31,7 +35,14 @@ import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.*; +import java.util.Arrays; +import java.util.BitSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -52,7 +63,7 @@ *

* Example: *

- *     Bytes b = Bytes.from(array);
+ *     Bytes b = Bytes.from(array).mutable();
  *     b.not();
  *     System.out.println(b.encodeHex());
  * 
@@ -609,6 +620,7 @@ public static Bytes random(int length, Random random) { private final byte[] byteArray; private final ByteOrder byteOrder; private final BytesFactory factory; + private transient int hashCodeCache; Bytes(byte[] byteArray, ByteOrder byteOrder) { this(byteArray, byteOrder, new Factory()); @@ -1867,13 +1879,15 @@ public boolean equalsContent(Bytes other) { @Override public int hashCode() { - int result = Arrays.hashCode(byteArray); - result = 31 * result + (byteOrder != null ? byteOrder.hashCode() : 0); - return result; + if (hashCodeCache == 0) { + hashCodeCache = Arrays.hashCode(byteArray); + hashCodeCache = 31 * hashCodeCache + (byteOrder != null ? byteOrder.hashCode() : 0); + } + return hashCodeCache; } /** - * A memory safe toString implementation, which only shows the byte length and at most 8 bytes preview in hex + * A constant length output toString() implementation, which only shows the byte length and at most 8 bytes preview in hex * representation. * * @return string representation diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 387bebb..a462875 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -52,6 +52,9 @@ private void testToString(Bytes bytes) { @Test public void testHashcode() { + Bytes instance = Bytes.wrap(example_bytes_seven); + assertEquals(instance.hashCode(), instance.hashCode()); + assertNotEquals(0, instance.hashCode()); assertEquals(Bytes.wrap(example_bytes_seven).hashCode(), Bytes.from(example_bytes_seven).hashCode()); assertEquals(Bytes.wrap(example2_bytes_seven).hashCode(), Bytes.from(example2_bytes_seven).hashCode()); assertNotEquals(Bytes.wrap(example_bytes_seven).hashCode(), Bytes.wrap(example2_bytes_seven).hashCode()); From 220b9746885c3a553fe194d9f8ee566016b9c1cc Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 10 Aug 2018 12:10:27 +0200 Subject: [PATCH 034/181] Remove caching of mutable bytes hashcode --- src/main/java/at/favre/lib/bytes/Bytes.java | 3 +- .../java/at/favre/lib/bytes/MutableBytes.java | 5 +++ src/main/java/at/favre/lib/bytes/Util.java | 32 +++++++++++++++++-- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 923eb16..224b3f9 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1880,8 +1880,7 @@ public boolean equalsContent(Bytes other) { @Override public int hashCode() { if (hashCodeCache == 0) { - hashCodeCache = Arrays.hashCode(byteArray); - hashCodeCache = 31 * hashCodeCache + (byteOrder != null ? byteOrder.hashCode() : 0); + hashCodeCache = Util.hashCode(internalArray(), byteOrder()); } return hashCodeCache; } diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 808bd23..33480e4 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -126,6 +126,11 @@ public MutableBytes secureWipe(SecureRandom random) { return this; } + @Override + public int hashCode() { + return Util.hashCode(internalArray(), byteOrder()); + } + /** * Factory creating mutable byte types */ diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 9f4cb1d..3e0aa73 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,10 +21,25 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayOutputStream; +import java.io.DataInput; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.nio.file.Files; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Common Util methods to convert or modify byte arrays @@ -489,6 +504,19 @@ static ByteBuffer getBytesFromUUID(UUID uuid) { return bb; } + /** + * Hashcode implementation for a byte array and given byte order + * + * @param byteArray + * @param byteOrder + * @return hashCode + */ + static int hashCode(byte[] byteArray, ByteOrder byteOrder) { + int result = Arrays.hashCode(byteArray); + result = 31 * result + (byteOrder != null ? byteOrder.hashCode() : 0); + return result; + } + /* ================================================================================================= Copyright 2011 Twitter, Inc. From a4447dd63e2e3f678804aa18f92ba7fa9691913e Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 10 Aug 2018 15:25:32 +0200 Subject: [PATCH 035/181] Refactor sort transformer to use array sort --- .../java/at/favre/lib/bytes/BytesTransformers.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index 656fd19..cfc80a8 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -4,7 +4,10 @@ import java.io.ByteArrayOutputStream; import java.io.IOException; import java.security.SecureRandom; -import java.util.*; +import java.util.Arrays; +import java.util.Comparator; +import java.util.Objects; +import java.util.Random; import java.util.zip.CRC32; import java.util.zip.Checksum; import java.util.zip.GZIPInputStream; @@ -138,7 +141,7 @@ public boolean supportInPlaceTransformation() { * Sorts the internal byte array with given {@link java.util.Comparator} */ public static final class SortTransformer implements BytesTransformer { - private final Comparator comparator; + private final Comparator comparator; SortTransformer() { this(null); @@ -156,9 +159,9 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { return out; } else { //no in-place implementation with comparator - List list = Bytes.wrap(currentArray).toList(); - Collections.sort(list, comparator); - return Bytes.from(list).array(); + Byte[] boxedArray = Bytes.wrap(currentArray).toBoxedArray(); + Arrays.sort(boxedArray, comparator); + return Bytes.from(boxedArray).array(); } } From 5d3d31de014f0f4ee3b67aa10f46eed303bbd2ec Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 10 Aug 2018 15:31:51 +0200 Subject: [PATCH 036/181] Fix checkstyle issue --- src/main/java/at/favre/lib/bytes/MutableBytes.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 33480e4..9a2fc23 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -131,6 +131,11 @@ public int hashCode() { return Util.hashCode(internalArray(), byteOrder()); } + @Override + public boolean equals(Object o) { + return super.equals(o); + } + /** * Factory creating mutable byte types */ From 80bf8575a5a56f0cdaa955e1e3a7523497b9a86a Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 10 Aug 2018 17:14:36 +0200 Subject: [PATCH 037/181] Add HMAC transformer fixes #11 --- CHANGELOG | 1 + README.md | 8 +++ .../at/favre/lib/bytes/BytesTransformers.java | 65 +++++++++++++++++++ .../favre/lib/bytes/BytesTransformTest.java | 17 +++++ 4 files changed, 91 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 3b98a37..7648256 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -10,6 +10,7 @@ * use EMPTY constant instance for empty byte array to safe memory #16 * add `startsWith()` and `endsWidth()` methods #12 * add cache for calculating the hashCode + * add HMAC byte transformer #11 ## v0.6.0 diff --git a/README.md b/README.md index ac81484..068e03c 100644 --- a/README.md +++ b/README.md @@ -245,6 +245,14 @@ can be statically imported for a less verbose syntax: import static at.favre.lib.bytes.BytesTransformers.*; ``` +**HMAC** used to calculate [keyed-hash message authentication code](https://en.wikipedia.org/wiki/HMAC): + +```java +Bytes.wrap(array).transform(hmacSha256(macKey32Byte)); +Bytes.wrap(array).transform(hmacSha1(macKey20Byte)); +Bytes.wrap(array).transform(hmac(macKey20Byte,"HmacMd5")); +``` + **Checksum** can be calculated or automatically appended: ```java diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index cfc80a8..1bdede9 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -1,5 +1,7 @@ package at.favre.lib.bytes; +import javax.crypto.Mac; +import javax.crypto.spec.SecretKeySpec; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; @@ -113,6 +115,37 @@ public static BytesTransformer decompressGzip() { return new GzipCompressor(false); } + /** + * Create a {@link BytesTransformer} which returns the HMAC-SHA1 with given key, of the target byte array + * + * @param key to use for HMAC + * @return hmac + */ + public static BytesTransformer hmacSha1(byte[] key) { + return new HmacTransformer(key, HmacTransformer.HMAC_SHA1); + } + + /** + * Create a {@link BytesTransformer} which returns the HMAC-SHA256 with given key, of the target byte array + * + * @param key to use for HMAC + * @return hmac + */ + public static BytesTransformer hmacSha256(byte[] key) { + return new HmacTransformer(key, HmacTransformer.HMAC_SHA256); + } + + /** + * Create a {@link BytesTransformer} which returns the HMAC with given key, algorithm of the target byte array + * + * @param key to use for HMAC + * @param algorithmName e.g. 'HmacSHA256' - check if the algorithm is supported on your JVM/runtime + * @return hmac (length depends on algorithm) + */ + public static BytesTransformer hmac(byte[] key, String algorithmName) { + return new HmacTransformer(key, algorithmName); + } + /** * Shuffles the internal byte array */ @@ -303,4 +336,36 @@ public boolean supportInPlaceTransformation() { return false; } } + + /** + * HMAC transformer + */ + public static final class HmacTransformer implements BytesTransformer { + static final String HMAC_SHA1 = "HmacSHA1"; + static final String HMAC_SHA256 = "HmacSHA256"; + + private final byte[] secretKey; + private final String macAlgorithmName; + + public HmacTransformer(byte[] secretKey, String macAlgorithmName) { + this.macAlgorithmName = macAlgorithmName; + this.secretKey = secretKey; + } + + @Override + public byte[] transform(byte[] currentArray, boolean inPlace) { + try { + Mac mac = Mac.getInstance(macAlgorithmName); + mac.init(new SecretKeySpec(secretKey, macAlgorithmName)); + return mac.doFinal(currentArray); + } catch (Exception e) { + throw new IllegalArgumentException(e); + } + } + + @Override + public boolean supportInPlaceTransformation() { + return false; + } + } } diff --git a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java index e4d325d..ccf5bd9 100644 --- a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java @@ -445,4 +445,21 @@ public int compare(Byte o1, Byte o2) { }).supportInPlaceTransformation()); assertTrue(new BytesTransformers.ShuffleTransformer(new SecureRandom()).supportInPlaceTransformation()); } + + @Test + public void transformHmac() { + System.out.println(Bytes.parseHex("d8b6239569b184eb7991").transform(new HmacTransformer(Bytes.parseHex("671536819982").array(), "HmacSHA256")).encodeHex()); + + assertEquals(Bytes.parseHex("d8f0eda7a00192091ad8fefa501753ae"), Bytes.allocate(16).transform(new HmacTransformer(new byte[16], "HmacMd5"))); + assertEquals(Bytes.parseHex("c69c13e005ae8ec628ec1869f334ca056bb38958"), Bytes.allocate(16).transform(new HmacTransformer(new byte[20], "HmacSHA1"))); + assertEquals(Bytes.parseHex("c69c13e005ae8ec628ec1869f334ca056bb38958"), Bytes.allocate(16).transform(BytesTransformers.hmacSha1(new byte[20]))); + assertEquals(Bytes.parseHex("853c7403937d8b6239569b184eb7993fc5f751aefcea28f2c863858e2d29c50b"), Bytes.allocate(16).transform(new HmacTransformer(new byte[32], "HmacSHA256"))); + assertEquals(Bytes.parseHex("9aff87db4fd8df58c9081d8386ccc71c9a0f5fe9491235b7bb17e1be20bbe82b"), Bytes.parseHex("d8b6239569b184eb7991").transform(new HmacTransformer(Bytes.parseHex("671536819982").array(), "HmacSHA256"))); + assertEquals(Bytes.parseHex("9aff87db4fd8df58c9081d8386ccc71c9a0f5fe9491235b7bb17e1be20bbe82b"), Bytes.parseHex("d8b6239569b184eb7991").transform(BytesTransformers.hmacSha256(Bytes.parseHex("671536819982").array()))); + assertEquals(Bytes.parseHex("9aff87db4fd8df58c9081d8386ccc71c9a0f5fe9491235b7bb17e1be20bbe82b"), Bytes.parseHex("d8b6239569b184eb7991").transform(BytesTransformers.hmac(Bytes.parseHex("671536819982").array(), "HmacSHA256"))); + + //reference test vectors - see https://tools.ietf.org/html/rfc2104 + assertEquals(Bytes.parseHex("9294727a3638bb1c13f48ef8158bfc9d"), Bytes.from("Hi There").transform(new HmacTransformer(Bytes.parseHex("0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b").array(), "HmacMd5"))); + assertEquals(Bytes.parseHex("56be34521d144c88dbb8c733f0e8b3f6"), Bytes.parseHex("DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD").transform(new HmacTransformer(Bytes.parseHex("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA").array(), "HmacMd5"))); + } } From 23e4303fd08e25c0c527ba830775eba66b8c8273 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 10:46:40 +0200 Subject: [PATCH 038/181] Fix checkstyle issue --- src/main/java/at/favre/lib/bytes/BytesTransformers.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index 1bdede9..e8ca3f9 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -347,7 +347,13 @@ public static final class HmacTransformer implements BytesTransformer { private final byte[] secretKey; private final String macAlgorithmName; - public HmacTransformer(byte[] secretKey, String macAlgorithmName) { + /** + * Create a new hmac transformer + * + * @param secretKey to use as key + * @param macAlgorithmName hash algorithm e.g. 'HmacSHA256' + */ + HmacTransformer(byte[] secretKey, String macAlgorithmName) { this.macAlgorithmName = macAlgorithmName; this.secretKey = secretKey; } From cb383cd301d950f280ec720865f71f3bfb55ad7c Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 10:54:26 +0200 Subject: [PATCH 039/181] Optimize readFromStream method --- src/main/java/at/favre/lib/bytes/Util.java | 36 ++++++++-------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 3e0aa73..0d692c0 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,30 +21,18 @@ package at.favre.lib.bytes; -import java.io.ByteArrayOutputStream; -import java.io.DataInput; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; +import java.io.*; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.file.Files; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Common Util methods to convert or modify byte arrays */ final class Util { + private static final int BUF_SIZE = 0x1000; // 4K + private Util() { } @@ -297,8 +285,6 @@ static void reverse(byte[] array, int fromIndex, int toIndex) { } } - private static final int BUF_SIZE = 0x1000; // 4K - /** * Read bytes, buffered, from given input stream. Pass -1 to read the whole stream or limit with length * parameter. @@ -312,8 +298,12 @@ static byte[] readFromStream(InputStream inputStream, final int maxLengthToRead) int remaining = maxLengthToRead; try { ByteArrayOutputStream out = new ByteArrayOutputStream(readWholeStream ? 32 : maxLengthToRead); + byte[] buf = new byte[0]; while (readWholeStream || remaining > 0) { - byte[] buf = new byte[Math.min(BUF_SIZE, readWholeStream ? BUF_SIZE : remaining)]; + int bufSize = Math.min(BUF_SIZE, readWholeStream ? BUF_SIZE : remaining); + if (buf.length != bufSize) { + buf = new byte[bufSize]; + } int r = inputStream.read(buf); if (r == -1) { break; @@ -544,10 +534,6 @@ static final class Entropy { private final Map map = new HashMap<>(); private int total = 0; - private double Log2(double n) { - return Math.log(n) / Math.log(2); - } - public Entropy(Iterable elements) { for (T element : elements) { if (!map.containsKey(element)) { @@ -558,6 +544,10 @@ public Entropy(Iterable elements) { } } + private double Log2(double n) { + return Math.log(n) / Math.log(2); + } + public double entropy() { double entropy = 0; for (int count : map.values()) { From 44321d334aaeec954145b3c6cc3a2020f746f351 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 12:06:36 +0200 Subject: [PATCH 040/181] Add unsigned sort transformer fixes #17 --- CHANGELOG | 1 + README.md | 3 +- src/main/java/at/favre/lib/bytes/Bytes.java | 19 ++---- .../at/favre/lib/bytes/BytesTransformers.java | 62 ++++++++++++++----- src/main/java/at/favre/lib/bytes/Util.java | 4 +- .../favre/lib/bytes/BytesTransformTest.java | 18 ++++-- 6 files changed, 72 insertions(+), 35 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7648256..d041ebc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,7 @@ * add `startsWith()` and `endsWidth()` methods #12 * add cache for calculating the hashCode * add HMAC byte transformer #11 + * add unsigned sort transformer #17 ## v0.6.0 diff --git a/README.md b/README.md index 068e03c..771bcd5 100644 --- a/README.md +++ b/README.md @@ -271,7 +271,8 @@ Bytes decompressed = compressed.transform(decompressGzip()); **Sorting** of individual bytes with either [`Comparator`](https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html) or natural order: ```java -Bytes.wrap(array).transform(sort()); +Bytes.wrap(array).transform(sort()); // 0x00 sorts after 0xff +Bytes.wrap(array).transform(sortUnsigned()); // 0xff sorts after 0x00 Bytes.wrap(array).transform(sort(byteComparator)); ``` diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 224b3f9..96b5c2d 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,11 +21,7 @@ package at.favre.lib.bytes; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; +import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -35,14 +31,7 @@ import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.Arrays; -import java.util.BitSet; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -67,6 +56,10 @@ * b.not(); * System.out.println(b.encodeHex()); * + * + *

Comparable

+ * The implemented comparator treats the bytes as signed bytes. If you want to sort, treating each byte as unsigned, + * use {@link BytesTransformers#sortUnsigned()}. */ @SuppressWarnings("WeakerAccess") public class Bytes implements Comparable, Serializable, Iterable { diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index e8ca3f9..cd67777 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -44,7 +44,8 @@ public static BytesTransformer shuffle(Random random) { } /** - * Create a {@link BytesTransformer} which sorts the internal byte array with it's natural ordering. + * Create a {@link BytesTransformer} which sorts the internal byte array with it's natural ordering treating + * each byte as signed byte (-128...127). Using inplace sorting, this can be reasonable fast. * * @return transformer */ @@ -52,9 +53,25 @@ public static BytesTransformer sort() { return new SortTransformer(); } + /** + * Create a {@link BytesTransformer} which sorts the internal byte array with it's natural ordering treating + * each byte as unsigned byte (0...255). That is, the byte string {@code ff} sorts after {@code 00}. + * + * Note: this requires 2 copies of the internal array and a lot of unboxing due to + * the fact that no primitives are not allowed as generic type arguments - so only use on small arrays. + * + * @return transformer + */ + public static BytesTransformer sortUnsigned() { + return new SortTransformer(new SortTransformer.UnsignedByteComparator()); + } + /** * Create a {@link BytesTransformer} which sorts the internal byte array according to given comparator. * + * Note: this requires 2 copies of the internal array and a lot of unboxing due to + * the fact that no primitives are not allowed as generic type arguments - so only use on small arrays. + * * @param comparator to sort the bytes * @return transformer */ @@ -168,6 +185,7 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { public boolean supportInPlaceTransformation() { return true; } + } /** @@ -202,26 +220,26 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { public boolean supportInPlaceTransformation() { return comparator == null; } + + /** + * Converting each byte into unsinged version and comparing it (0...255) vs (-128..127) + */ + static final class UnsignedByteComparator implements Comparator { + @Override + public int compare(Byte o1, Byte o2) { + int byteA = o1 & 0xff; + int byteB = o2 & 0xff; + if (byteA == byteB) return 0; + return byteA < byteB ? -1 : 1; + } + } + } /** * Adds or converts to arbitrary checksum */ public static final class ChecksumTransformer implements BytesTransformer { - /** - * Definitions of the mode - */ - public enum Mode { - /** - * Appends checksum to given byte array - */ - APPEND, - /** - * Transforms byte array and returns only checksum - */ - TRANSFORM - } - private final Checksum checksum; private final Mode mode; private final int checksumLengthByte; @@ -252,6 +270,20 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { public boolean supportInPlaceTransformation() { return false; } + + /** + * Definitions of the mode + */ + public enum Mode { + /** + * Appends checksum to given byte array + */ + APPEND, + /** + * Transforms byte array and returns only checksum + */ + TRANSFORM + } } /** diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 0d692c0..a026718 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -497,8 +497,8 @@ static ByteBuffer getBytesFromUUID(UUID uuid) { /** * Hashcode implementation for a byte array and given byte order * - * @param byteArray - * @param byteOrder + * @param byteArray to calculate hashCode of + * @param byteOrder to calculate hashCode of * @return hashCode */ static int hashCode(byte[] byteArray, ByteOrder byteOrder) { diff --git a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java index ccf5bd9..82166a3 100644 --- a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java @@ -270,16 +270,26 @@ public void shuffleTest() { } @Test - public void sortTest() { - byte[] sorted = new byte[]{0, 1, 2, 3, 4, 5, 6}; + public void sortSignedTest() { + byte[] sorted = new byte[]{-2, -1, 0, 1, 2, 3, 4, 5, 6}; assertArrayEquals(sorted, Bytes.from(sorted).transform(shuffle()).transform(sort()).array()); - assertArrayEquals(sorted, Bytes.from(new byte[]{6, 0, 3, 4, 1, 5, 2}).transform(sort()).array()); - assertArrayEquals(Bytes.from(sorted).reverse().array(), Bytes.from(new byte[]{6, 0, 3, 4, 1, 5, 2}).transform(sort(new Comparator() { + assertArrayEquals(sorted, Bytes.from(new byte[]{6, 0, 3, -2, -1, 4, 1, 5, 2}).transform(sort()).array()); + assertArrayEquals(Bytes.from(sorted).reverse().array(), Bytes.from(new byte[]{6, -2, -1, 0, 3, 4, 1, 5, 2}).transform(sort(new Comparator() { @Override public int compare(Byte o1, Byte o2) { return o2.compareTo(o1); } })).array()); + + byte[] checkSignedSorted = new byte[]{(byte) 0x80, (byte) 0xFE, (byte) 0xFF, 0x00, 0x01}; + assertArrayEquals(checkSignedSorted, Bytes.from(checkSignedSorted).transform(shuffle()).transform(sort()).array()); + } + + @Test + public void sortUnsignedTest() { + byte[] sorted = new byte[]{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, (byte) 0x80, (byte) 0xAE, (byte) 0xFF}; + assertArrayEquals(sorted, Bytes.from(sorted).transform(shuffle()).transform(sortUnsigned()).array()); + assertArrayEquals(sorted, Bytes.from(new byte[]{(byte) 0x80, (byte) 0xAE, (byte) 0xFF, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06}).transform(sortUnsigned()).array()); } @Test From cd9e3143c364f69f5e9a877053b01f49939e9da8 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 12:15:26 +0200 Subject: [PATCH 041/181] Update readme --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 771bcd5..3bbbfd9 100644 --- a/README.md +++ b/README.md @@ -621,8 +621,9 @@ Use the Maven wrapper to create a jar including all dependencies # Credits -* Byte util methods derived from primitives.Bytes from [Google Guava](https://github.com/google/guava) -* Entropy class derived from [Twitter Commons](https://github.com/twitter/commons) +* Byte util methods derived from `primitives.Bytes` from [Google Guava](https://github.com/google/guava) (Apache v2) +* Entropy class derived from [Twitter Commons](https://github.com/twitter/commons) (Apache v2) +* Base64 implementation and some util methods from [Okio](https://github.com/square/okio) (Apache v2) # License From f0e5cacf357aa854a38b7085093ecac89048f7e3 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 12:59:13 +0200 Subject: [PATCH 042/181] Support creation of immutable Bytes from mutable one --- CHANGELOG | 1 + README.md | 6 ++ .../java/at/favre/lib/bytes/MutableBytes.java | 11 ++++ ...sABytesTest.java => MutableBytesTest.java} | 58 ++++++++++++++----- 4 files changed, 62 insertions(+), 14 deletions(-) rename src/test/java/at/favre/lib/bytes/{MutableBytesABytesTest.java => MutableBytesTest.java} (75%) diff --git a/CHANGELOG b/CHANGELOG index d041ebc..0438e04 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -12,6 +12,7 @@ * add cache for calculating the hashCode * add HMAC byte transformer #11 * add unsigned sort transformer #17 + * add `.immutable()` converter in MutableBytes #18 ## v0.6.0 diff --git a/README.md b/README.md index 3bbbfd9..aa75adc 100644 --- a/README.md +++ b/README.md @@ -549,6 +549,12 @@ b.wipe() //fills with zeros b.secureWipe() //fills with random data ``` +Create a immutable version again with: + +```java +Bytes b2 = b.immutable(); +``` + *Note:* a copy will inherit mutability/read-only properties: ```java diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 9a2fc23..75ba0c7 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -126,6 +126,17 @@ public MutableBytes secureWipe(SecureRandom random) { return this; } + /** + * Convert this instance to an immutable version with the same reference of the internal array and byte-order. + * If the mutable instance is kept, it can be used to alter the internal array of the just created instance, so be + * aware. + * + * @return immutable version of this instance + */ + public Bytes immutable() { + return Bytes.wrap(internalArray(), byteOrder()); + } + @Override public int hashCode() { return Util.hashCode(internalArray(), byteOrder()); diff --git a/src/test/java/at/favre/lib/bytes/MutableBytesABytesTest.java b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java similarity index 75% rename from src/test/java/at/favre/lib/bytes/MutableBytesABytesTest.java rename to src/test/java/at/favre/lib/bytes/MutableBytesTest.java index 0966b76..b7167fc 100644 --- a/src/test/java/at/favre/lib/bytes/MutableBytesABytesTest.java +++ b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java @@ -28,30 +28,30 @@ import static org.junit.Assert.*; -public class MutableBytesABytesTest extends ABytesTest { +public class MutableBytesTest extends ABytesTest { @Test - public void overwriteWithEmptyArray() throws Exception { + public void overwriteWithEmptyArray() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertSame(b, b.overwrite(new byte[example_bytes_seven.length])); assertArrayEquals(new byte[example_bytes_seven.length], b.array()); } @Test - public void overwriteOtherArray() throws Exception { + public void overwriteOtherArray() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertSame(b, b.overwrite(Arrays.copyOf(example2_bytes_seven, example2_bytes_seven.length))); assertArrayEquals(example2_bytes_seven, b.array()); } @Test - public void overwritePartialArray() throws Exception { + public void overwritePartialArray() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertSame(b, b.overwrite(new byte[]{(byte) 0xAA}, 0)); assertArrayEquals(Bytes.from((byte) 0xAA).append(Bytes.wrap(example_bytes_seven).copy(1, example_bytes_seven.length - 1)).array(), b.array()); } @Test - public void overwritePartialArray2() throws Exception { + public void overwritePartialArray2() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertSame(b, b.overwrite(new byte[]{(byte) 0xAA}, 1)); assertArrayEquals( @@ -62,14 +62,44 @@ public void overwritePartialArray2() throws Exception { } @Test - public void fill() throws Exception { + public void fill() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertSame(b, b.fill((byte) 0)); assertArrayEquals(new byte[example_bytes_seven.length], b.array()); } @Test - public void setByteAtTest() throws Exception { + public void testConvertImmutable() { + Bytes b = Bytes.from(example_bytes_seven); + MutableBytes m = b.copy().mutable(); + assertNotEquals(b, m); + assertTrue(b.equalsContent(m)); + assertEquals(b.byteOrder(), m.byteOrder()); + + Bytes m2b = m.immutable(); + assertNotEquals(m2b, m); + assertEquals(m2b, b); + assertNotSame(m2b, b); + assertTrue(m2b.equalsContent(m)); + assertEquals(m2b.byteOrder(), m.byteOrder()); + + assertEquals(m.length(), m2b.length()); + assertEquals(m.length(), b.length()); + + assertNotEquals(example_bytes_seven[0], 0); + assertEquals(example_bytes_seven[0], b.byteAt(0)); + assertEquals(example_bytes_seven[0], m.byteAt(0)); + assertEquals(example_bytes_seven[0], m2b.byteAt(0)); + + m.fill((byte) 0); + + assertEquals(example_bytes_seven[0], b.byteAt(0)); + assertEquals(0, m.byteAt(0)); + assertEquals(0, m2b.byteAt(0)); + } + + @Test + public void setByteAtTest() { MutableBytes b = fromAndTest(example_bytes_sixteen).mutable(); for (int i = 0; i < b.length(); i++) { @@ -82,14 +112,14 @@ public void setByteAtTest() throws Exception { } @Test - public void wipe() throws Exception { + public void wipe() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertSame(b, b.wipe()); assertArrayEquals(new byte[example_bytes_seven.length], b.array()); } @Test - public void secureWipe() throws Exception { + public void secureWipe() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); int hashcode = b.hashCode(); assertSame(b, b.secureWipe()); @@ -99,7 +129,7 @@ public void secureWipe() throws Exception { } @Test - public void secureWipeWithSecureRandom() throws Exception { + public void secureWipeWithSecureRandom() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); int hashcode = b.hashCode(); assertSame(b, b.secureWipe(new SecureRandom())); @@ -109,18 +139,18 @@ public void secureWipeWithSecureRandom() throws Exception { } @Test(expected = NullPointerException.class) - public void secureWipeShouldThrowException() throws Exception { + public void secureWipeShouldThrowException() { Bytes.wrap(new byte[0]).mutable().secureWipe(null); } @Test - public void testIfGetSameInstance() throws Exception { + public void testIfGetSameInstance() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertSame(b, b.mutable()); } @Test - public void testTransformerShouldBeMutable() throws Exception { + public void testTransformerShouldBeMutable() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); assertTrue(b.isMutable()); assertTrue(b.copy().isMutable()); @@ -137,4 +167,4 @@ public void testTransformerShouldBeMutable() throws Exception { assertTrue(b.append(3).isMutable()); assertTrue(b.hashSha256().isMutable()); } -} \ No newline at end of file +} From bcfcaba80261bf5041b0f9a6c5a12ef03b0f378c Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 13:00:47 +0200 Subject: [PATCH 043/181] Remove obsolete code --- src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index ceb3066..29719df 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -181,8 +181,8 @@ public byte[] decode(String encoded) { return array; } - private int maxLength(byte[] data, int radix) { - return BigInteger.valueOf(2).pow(BigInteger.valueOf(data.length).multiply(BigInteger.valueOf(8)).intValue()).toString(radix).length(); - } +// private int maxLength(byte[] data, int radix) { +// return BigInteger.valueOf(2).pow(BigInteger.valueOf(data.length).multiply(BigInteger.valueOf(8)).intValue()).toString(radix).length(); +// } } } From b24bccf3362a11af86a761844af1cf66bf75a56e Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 13:27:39 +0200 Subject: [PATCH 044/181] Return EMPTY instance if allocated with 0 length --- src/main/java/at/favre/lib/bytes/Bytes.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 96b5c2d..e68bb3d 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -86,8 +86,9 @@ public static Bytes allocate(int length) { * @return new instance */ public static Bytes allocate(int length, byte defaultValue) { + if (length == 0) return EMPTY; byte[] array = new byte[length]; - if (defaultValue != 0 && length > 0) { + if (defaultValue != 0) { Arrays.fill(array, defaultValue); } return wrap(array); From fa1159c16d86c18d1bf139e41207405963b105ec Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 13:29:13 +0200 Subject: [PATCH 045/181] Bump version to 0.8.0 --- CHANGELOG | 2 ++ pom.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 0438e04..4a1ae65 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ # Releases +## v0.8.0 + ## v0.7.0 * add `count` method for counting byte arrays (like pattern matching) diff --git a/pom.xml b/pom.xml index 893a3eb..cafa828 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 0.7.0 + 0.8.0 jar Bytes Utility Library From 0dcbc23b273801430ebb872d3b36148b83a3de99 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 16:44:28 +0200 Subject: [PATCH 046/181] Sign AFTER ProGuard so optimized version has correct jar signature --- CHANGELOG | 2 ++ pom.xml | 68 +++++++++++++++++++++++++++---------------------------- 2 files changed, 36 insertions(+), 34 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 4a1ae65..6dcc583 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ ## v0.8.0 +* sign AFTER ProGuard so optimized version has correct jar signature + ## v0.7.0 * add `count` method for counting byte arrays (like pattern matching) diff --git a/pom.xml b/pom.xml index cafa828..9283937 100644 --- a/pom.xml +++ b/pom.xml @@ -129,6 +129,40 @@ coveralls-maven-plugin 4.3.0 + + com.github.wvengen + proguard-maven-plugin + 2.0.14 + + + package + + proguard + + + false + optimized + true + 6.0.3 + false + + + + + ${java.home}/lib/rt.jar + + + + + + + net.sf.proguard + proguard-base + 6.0.3 + runtime + + + org.apache.maven.plugins maven-jarsigner-plugin @@ -170,40 +204,6 @@ false - - com.github.wvengen - proguard-maven-plugin - 2.0.14 - - - package - - proguard - - - false - optimized - true - 6.0.3 - false - - - - - ${java.home}/lib/rt.jar - - - - - - - net.sf.proguard - proguard-base - 6.0.3 - runtime - - - From df53f89a935c39251ad90ef241fb88a077568eeb Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 17:20:48 +0200 Subject: [PATCH 047/181] Return byte[] in base64 encoder instead of String (internally) --- src/main/java/at/favre/lib/bytes/Base64.java | 10 ++++------ .../java/at/favre/lib/bytes/BinaryToTextEncoding.java | 3 ++- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Base64.java b/src/main/java/at/favre/lib/bytes/Base64.java index babe695..ecca233 100644 --- a/src/main/java/at/favre/lib/bytes/Base64.java +++ b/src/main/java/at/favre/lib/bytes/Base64.java @@ -21,8 +21,6 @@ package at.favre.lib.bytes; -import java.nio.charset.StandardCharsets; - /** * From https://github.com/square/okio/blob/okio-parent-1.15.0/okio/src/main/java/okio/Base64.java * under Apache 2 license. @@ -128,15 +126,15 @@ static byte[] decode(String in) { return prefix; } - static String encode(byte[] in) { + static byte[] encode(byte[] in) { return encode(in, false, true); } - static String encode(byte[] in, boolean urlSafe, boolean usePadding) { + static byte[] encode(byte[] in, boolean urlSafe, boolean usePadding) { return encode(in, urlSafe ? URL_MAP : MAP, usePadding); } - private static String encode(byte[] in, byte[] map, boolean usePadding) { + private static byte[] encode(byte[] in, byte[] map, boolean usePadding) { int length = outLength(in.length, usePadding); byte[] out = new byte[length]; int index = 0, end = in.length - in.length % 3; @@ -165,7 +163,7 @@ private static String encode(byte[] in, byte[] map, boolean usePadding) { } break; } - return new String(out, StandardCharsets.US_ASCII); + return out; } private static int outLength(int srclen, boolean doPadding) { diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index 29719df..ef94490 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -23,6 +23,7 @@ import java.math.BigInteger; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.Objects; /** @@ -146,7 +147,7 @@ class Base64Encoding implements EncoderDecoder { @Override public String encode(byte[] array, ByteOrder byteOrder) { - return Base64.encode((byteOrder == ByteOrder.BIG_ENDIAN) ? array : Bytes.from(array).reverse().array(), urlSafe, padding); + return new String(Base64.encode((byteOrder == ByteOrder.BIG_ENDIAN) ? array : Bytes.from(array).reverse().array(), urlSafe, padding), StandardCharsets.US_ASCII); } @Override From 056107b73ea685a496ea3d564e1e745ecbec4a55 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 11 Aug 2018 17:24:02 +0200 Subject: [PATCH 048/181] Fix Base64 tests --- .../java/at/favre/lib/bytes/Base64Test.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/test/java/at/favre/lib/bytes/Base64Test.java b/src/test/java/at/favre/lib/bytes/Base64Test.java index 1251815..846b3f1 100644 --- a/src/test/java/at/favre/lib/bytes/Base64Test.java +++ b/src/test/java/at/favre/lib/bytes/Base64Test.java @@ -23,7 +23,8 @@ import org.junit.Test; -import static org.junit.Assert.*; +import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertNull; /** * Test cases from rfc4648 @@ -48,16 +49,15 @@ public void decode() { @Test public void encode() { - assertEquals("", Base64.encode("".getBytes())); - assertEquals("Zg==", Base64.encode("f".getBytes())); - assertEquals("Zm8=", Base64.encode("fo".getBytes())); - assertEquals("Zm9v", Base64.encode("foo".getBytes())); - assertEquals("Zm9vYg==", Base64.encode("foob".getBytes())); - assertEquals("Zm9vYmE=", Base64.encode("fooba".getBytes())); - assertEquals("Zm9vYmFy", Base64.encode("foobar".getBytes())); - assertEquals("aQo=", Base64.encode("i\n".getBytes())); - assertEquals("aSA=", Base64.encode("i ".getBytes())); - + assertArrayEquals(Bytes.from("").array(), Base64.encode("".getBytes())); + assertArrayEquals(Bytes.from("Zg==").array(), Base64.encode("f".getBytes())); + assertArrayEquals(Bytes.from("Zm8=").array(), Base64.encode("fo".getBytes())); + assertArrayEquals(Bytes.from("Zm9v").array(), Base64.encode("foo".getBytes())); + assertArrayEquals(Bytes.from("Zm9vYg==").array(), Base64.encode("foob".getBytes())); + assertArrayEquals(Bytes.from("Zm9vYmE=").array(), Base64.encode("fooba".getBytes())); + assertArrayEquals(Bytes.from("Zm9vYmFy").array(), Base64.encode("foobar".getBytes())); + assertArrayEquals(Bytes.from("aQo=").array(), Base64.encode("i\n".getBytes())); + assertArrayEquals(Bytes.from("aSA=").array(), Base64.encode("i ".getBytes())); } } From 683ae91584d60d1f93791efdc3c03fb7518c0b75 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Aug 2018 22:45:48 +0200 Subject: [PATCH 049/181] Prepare for bugfix release --- CHANGELOG | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 6dcc583..5e499d5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,6 @@ # Releases -## v0.8.0 +## v0.7.1 * sign AFTER ProGuard so optimized version has correct jar signature diff --git a/pom.xml b/pom.xml index 9283937..060c1b2 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 0.8.0 + 0.7.1 jar Bytes Utility Library From 8bd92c840d8c6c82e531bf30e24c2983fa436da7 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Aug 2018 22:52:00 +0200 Subject: [PATCH 050/181] Bump version to 0.8.0 --- CHANGELOG | 2 ++ pom.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 5e499d5..efe7321 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ # Releases +## v0.8.0 + ## v0.7.1 * sign AFTER ProGuard so optimized version has correct jar signature diff --git a/pom.xml b/pom.xml index 060c1b2..9283937 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 0.7.1 + 0.8.0 jar Bytes Utility Library From 5af372c3b07550fa8791ab8d9f1dc6333f35a9eb Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 12 Aug 2018 11:11:13 +0200 Subject: [PATCH 051/181] Simplify copy logic in Base64 --- src/main/java/at/favre/lib/bytes/Base64.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Base64.java b/src/main/java/at/favre/lib/bytes/Base64.java index ecca233..66d0715 100644 --- a/src/main/java/at/favre/lib/bytes/Base64.java +++ b/src/main/java/at/favre/lib/bytes/Base64.java @@ -21,6 +21,8 @@ package at.favre.lib.bytes; +import java.util.Arrays; + /** * From https://github.com/square/okio/blob/okio-parent-1.15.0/okio/src/main/java/okio/Base64.java * under Apache 2 license. @@ -121,9 +123,7 @@ static byte[] decode(String in) { if (outCount == out.length) return out; // Copy the decoded bytes to a new, right-sized array. - byte[] prefix = new byte[outCount]; - System.arraycopy(out, 0, prefix, 0, outCount); - return prefix; + return Arrays.copyOfRange(out, 0, outCount); } static byte[] encode(byte[] in) { From 3127402e700138872b84fa4d8f4c92c910a34a13 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 12 Aug 2018 12:55:04 +0200 Subject: [PATCH 052/181] Support for arbitrary radix encoding/parsing and fix test for number encoding fixes #6, #20 --- CHANGELOG | 2 + README.md | 4 +- .../favre/lib/bytes/BinaryToTextEncoding.java | 11 ++-- src/main/java/at/favre/lib/bytes/Bytes.java | 60 ++++++++++++++++--- .../lib/bytes/BinaryToTextEncodingTest.java | 57 +++++++++++++----- .../lib/bytes/BytesParseAndEncodingTest.java | 40 ++++++++++++- 6 files changed, 143 insertions(+), 31 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index efe7321..dd96189 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ ## v0.8.0 +* add radix encoding/parsing and fix radix tests #6, #20 + ## v0.7.1 * sign AFTER ProGuard so optimized version has correct jar signature diff --git a/README.md b/README.md index aa75adc..a033bf7 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ Bytes.wrap(array).transform(shuffle()); ### Parser and Encoder for Binary-Text-Encodings This library can parse and encode a variety of encodings: binary, decimal, [octal](https://en.wikipedia.org/wiki/Octal), -[hex](https://en.wikipedia.org/wiki/Hexadecimal), [base36](https://en.wikipedia.org/wiki/Base36) and +[hex](https://en.wikipedia.org/wiki/Hexadecimal) and [base64](https://en.wikipedia.org/wiki/Base64). Additionally custom parsers are supported by providing your own implementation: @@ -318,7 +318,7 @@ Additionally the following encodings are supported: Bytes.from(array).encodeBinary(); //1110110110101111 Bytes.from(array).encodeDec(); //20992966904426477 Bytes.from(array).encodeOctal(); //1124517677707527755 -Bytes.from(array).encodeBase36(); //5qpdvuwjvu5 +Bytes.from(array).encodeRadix(36); //5qpdvuwjvu5 ``` ### Handling Strings diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index ef94490..799682d 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -159,10 +159,13 @@ public byte[] decode(String encoded) { /** * Simple radix encoder which internally uses {@link BigInteger#toString(int)} */ - class BaseRadix implements EncoderDecoder { + class BaseRadixNumber implements EncoderDecoder { private final int radix; - BaseRadix(int radix) { + BaseRadixNumber(int radix) { + if (radix < Character.MIN_RADIX || radix > Character.MAX_RADIX) { + throw new IllegalArgumentException("supported radix is between " + Character.MIN_RADIX + " and " + Character.MAX_RADIX); + } this.radix = radix; } @@ -181,9 +184,5 @@ public byte[] decode(String encoded) { } return array; } - -// private int maxLength(byte[] data, int radix) { -// return BigInteger.valueOf(2).pow(BigInteger.valueOf(data.length).multiply(BigInteger.valueOf(8)).intValue()).toString(radix).length(); -// } } } diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index e68bb3d..8e89020 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -518,7 +518,7 @@ public static Bytes from(UUID uuid) { * @return decoded instance */ public static Bytes parseBinary(String binaryString) { - return parse(binaryString, new BinaryToTextEncoding.BaseRadix(2)); + return parseRadix(binaryString, 2); } /** @@ -528,7 +528,7 @@ public static Bytes parseBinary(String binaryString) { * @return decoded instance */ public static Bytes parseOctal(String octalString) { - return parse(octalString, new BinaryToTextEncoding.BaseRadix(8)); + return parseRadix(octalString, 8); } /** @@ -538,7 +538,22 @@ public static Bytes parseOctal(String octalString) { * @return decoded instance */ public static Bytes parseDec(String decString) { - return parse(decString, new BinaryToTextEncoding.BaseRadix(10)); + return parseRadix(decString, 10); + } + + /** + * Encodes with given radix string representation (e.g. radix 16 would be hex). + * See also {@link BigInteger#toString(int)}. + *

+ * This is usually a number encoding, not a data encoding (ie. leading zeros are not preserved), but this implementation + * tries to preserve the leading zeros, to keep the in/output byte length size the same, but use at your own risk! + * + * @param radixNumberString the encoded string + * @param radix radix of the String representation (supported are 2-36) + * @return decoded instance + */ + public static Bytes parseRadix(String radixNumberString, int radix) { + return parse(radixNumberString, new BinaryToTextEncoding.BaseRadixNumber(radix)); } /** @@ -554,12 +569,17 @@ public static Bytes parseHex(String hexString) { /** * Parsing of base36 encoded byte arrays. + *

+ * This is usually a number encoding, not a data encoding (ie. leading zeros are not preserved), but this implementation + * tries to preserve the leading zeros, to keep the in/output byte length size the same. * * @param base36String the encoded string * @return decoded instance + * @deprecated use {@link #parseRadix(String, int)} with 36 instead; will be removed in v1.0+ */ + @Deprecated public static Bytes parseBase36(String base36String) { - return parse(base36String, new BinaryToTextEncoding.BaseRadix(36)); + return parse(base36String, new BinaryToTextEncoding.BaseRadixNumber(36)); } /** @@ -1447,7 +1467,7 @@ byte[] internalArray() { * @see Binary number */ public String encodeBinary() { - return encode(new BinaryToTextEncoding.BaseRadix(2)); + return encodeRadix(2); } /** @@ -1459,7 +1479,7 @@ public String encodeBinary() { * @see Octal */ public String encodeOctal() { - return encode(new BinaryToTextEncoding.BaseRadix(8)); + return encodeRadix(8); } /** @@ -1471,7 +1491,27 @@ public String encodeOctal() { * @see Decimal */ public String encodeDec() { - return encode(new BinaryToTextEncoding.BaseRadix(10)); + return encodeRadix(10); + } + + /** + * Encodes the internal array in given radix representation (e.g. 2 = binary, 10 = decimal, 16 = hex). + *

+ * This is usually a number encoding, not a data encoding (ie. leading zeros are not preserved), but this implementation + * tries to preserve the leading zeros, to keep the in/output byte length size the same. To preserve the length padding + * would be required, but is not supported in this implementation. + *

+ * But still full disclaimer: + * + * This is NOT recommended for data encoding, only for number encoding + *

+ * See Radix Economy and {@link BigInteger#toString(int)}. + * + * @param radix of the String representation (supported are 2-36) + * @return string in given radix representation + */ + public String encodeRadix(int radix) { + return encode(new BinaryToTextEncoding.BaseRadixNumber(radix)); } /** @@ -1499,6 +1539,8 @@ public String encodeHex(boolean upperCase) { } /** + * DO NOT USE AS DATA ENCODING, ONLY FOR NUMBERS! + *

* Base36 (aka Hexatrigesimal) representation. The choice of 36 is convenient in that the digits can be * represented using the Arabic numerals 0–9 and the Latin letters A–Z. This encoding has a space efficiency of 64.6%. *

@@ -1506,9 +1548,11 @@ public String encodeHex(boolean upperCase) { * * @return base36 string * @see Base36 + * @deprecated use {@link #encodeRadix(int)} instead; will be removed in v1.0+ */ + @Deprecated public String encodeBase36() { - return encode(new BinaryToTextEncoding.BaseRadix(36)); + return encodeRadix(36); } /** diff --git a/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java b/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java index cc1099b..bf763e0 100644 --- a/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java @@ -21,7 +21,6 @@ package at.favre.lib.bytes; -import org.junit.Ignore; import org.junit.Test; import java.nio.ByteOrder; @@ -43,40 +42,50 @@ public void decodeHexShouldFail() { @Test public void encodeBaseRadix() { - assertEquals("100211", new BinaryToTextEncoding.BaseRadix(16).encode(new byte[]{16, 2, 17}, ByteOrder.BIG_ENDIAN)); - assertEquals("110210", new BinaryToTextEncoding.BaseRadix(16).encode(new byte[]{16, 2, 17}, ByteOrder.LITTLE_ENDIAN)); - assertNotEquals(new BinaryToTextEncoding.BaseRadix(2).encode(new byte[]{1, 2, 3}, ByteOrder.LITTLE_ENDIAN), new BinaryToTextEncoding.BaseRadix(2).encode(new byte[]{1, 2, 3}, ByteOrder.BIG_ENDIAN)); + assertEquals("100211", new BinaryToTextEncoding.BaseRadixNumber(16).encode(new byte[]{16, 2, 17}, ByteOrder.BIG_ENDIAN)); + assertEquals("110210", new BinaryToTextEncoding.BaseRadixNumber(16).encode(new byte[]{16, 2, 17}, ByteOrder.LITTLE_ENDIAN)); + assertNotEquals(new BinaryToTextEncoding.BaseRadixNumber(2).encode(new byte[]{1, 2, 3}, ByteOrder.LITTLE_ENDIAN), new BinaryToTextEncoding.BaseRadixNumber(2).encode(new byte[]{1, 2, 3}, ByteOrder.BIG_ENDIAN)); } @Test public void encodeDecodeRadix() { - for (int i = 0; i < 32; i++) { - Bytes rnd = Bytes.random(i); + int leadingZeroHits = 0; + int encodings = 0; + for (int i = 0; i < 64; i++) { + Bytes rnd = Bytes.random(i % 256); System.out.println("\n\nNEW TEST: " + i + " bytes\n"); - for (int j = 16; j < 36; j++) { - BinaryToTextEncoding.EncoderDecoder encoding = new BinaryToTextEncoding.BaseRadix(j); + for (int j = 2; j <= 36; j++) { + encodings++; + BinaryToTextEncoding.EncoderDecoder encoding = new BinaryToTextEncoding.BaseRadixNumber(j); String encodedBigEndian = encoding.encode(rnd.array(), ByteOrder.BIG_ENDIAN); byte[] decoded = encoding.decode(encodedBigEndian); System.out.println("radix" + j + ":\t" + encodedBigEndian); System.out.println("orig :\t" + rnd.encodeHex()); System.out.println("enc :\t" + Bytes.wrap(decoded).encodeHex()); - assertArrayEquals(rnd.array(), decoded); + + + if (rnd.length() <= 0 || rnd.byteAt(0) != 0) { + assertArrayEquals(rnd.array(), decoded); + } else { //since this is a number, we allow different lengths due to leading zero + leadingZeroHits++; + assertArrayEquals(rnd.resize(rnd.length() - 1).array(), decoded); + } } } + System.out.println(leadingZeroHits + " leading zero mismatches of " + encodings + " encodings"); } @Test - @Ignore("should fix") public void encodeDecodeRadixZeros() { Bytes bytes = Bytes.wrap(new byte[]{0, 0, 0, 0}); - BinaryToTextEncoding.EncoderDecoder encoding = new BinaryToTextEncoding.BaseRadix(36); + BinaryToTextEncoding.EncoderDecoder encoding = new BinaryToTextEncoding.BaseRadixNumber(36); String encodedBigEndian = encoding.encode(bytes.array(), ByteOrder.BIG_ENDIAN); byte[] decoded = encoding.decode(encodedBigEndian); System.out.println("radix36:\t" + encodedBigEndian); System.out.println("orig :\t" + bytes.encodeHex()); System.out.println("enc :\t" + Bytes.wrap(decoded).encodeHex()); - assertArrayEquals(bytes.array(), decoded); + assertArrayEquals(new byte[]{}, decoded); } @Test @@ -114,12 +123,12 @@ public void encodeDecodeHex() { @Test(expected = IllegalArgumentException.class) public void decodeInvalidRadix16() { - new BinaryToTextEncoding.BaseRadix(16).decode("AAI="); + new BinaryToTextEncoding.BaseRadixNumber(16).decode("AAI="); } @Test(expected = IllegalArgumentException.class) public void decodeInvalidRadix36() { - new BinaryToTextEncoding.BaseRadix(36).decode("AAI="); + new BinaryToTextEncoding.BaseRadixNumber(36).decode("AAI="); } @Test @@ -139,4 +148,24 @@ public void decodeInvalidBase64() { public void decodeHalfInvalidBase64() { new BinaryToTextEncoding.Base64Encoding().decode("EAI`"); } + + @Test(expected = IllegalArgumentException.class) + public void encodeRadixIllegalTooHigh2() { + new BinaryToTextEncoding.BaseRadixNumber(38); + } + + @Test(expected = IllegalArgumentException.class) + public void encodeRadixIllegalTooHigh() { + new BinaryToTextEncoding.BaseRadixNumber(37); + } + + @Test(expected = IllegalArgumentException.class) + public void encodeRadixIllegalTooLow() { + new BinaryToTextEncoding.BaseRadixNumber(1); + } + + @Test(expected = IllegalArgumentException.class) + public void encodeRadixIllegalTooLow2() { + new BinaryToTextEncoding.BaseRadixNumber(0); + } } diff --git a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java index 255187c..5b64ec8 100644 --- a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java @@ -125,4 +125,42 @@ public void encodeBase36() { assertEquals("69zbn", Bytes.from(defaultArray).encodeBase36()); assertEquals("5qpdvuwjvu5", Bytes.from(encodingExample).encodeBase36()); } -} \ No newline at end of file + + @Test + public void parseRadix() { + assertArrayEquals(encodingExample, Bytes.parseRadix("1001010100101001111110111111111000111101010111111101101", 2).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("10202221221221000222101012210121012", 3).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("1022211033313333013222333231", 4).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("134003042232210013121402", 5).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("542412151505231515005", 6).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("1124517677707527755", 8).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("20992966904426477", 10).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("4a94fdff1eafed", 16).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("5iibpp5dgpgp", 26).array()); + assertArrayEquals(encodingExample, Bytes.parseRadix("5qpdvuwjvu5", 36).array()); + } + + @Test + public void encodeRadix() { + assertEquals("1001010100101001111110111111111000111101010111111101101", Bytes.from(encodingExample).encodeRadix(2)); + assertEquals("10202221221221000222101012210121012", Bytes.from(encodingExample).encodeRadix(3)); + assertEquals("1022211033313333013222333231", Bytes.from(encodingExample).encodeRadix(4)); + assertEquals("134003042232210013121402", Bytes.from(encodingExample).encodeRadix(5)); + assertEquals("542412151505231515005", Bytes.from(encodingExample).encodeRadix(6)); + assertEquals("1124517677707527755", Bytes.from(encodingExample).encodeRadix(8)); + assertEquals("20992966904426477", Bytes.from(encodingExample).encodeRadix(10)); + assertEquals("4a94fdff1eafed", Bytes.from(encodingExample).encodeRadix(16)); + assertEquals("5iibpp5dgpgp", Bytes.from(encodingExample).encodeRadix(26)); + assertEquals("5qpdvuwjvu5", Bytes.from(encodingExample).encodeRadix(36)); + } + + @Test(expected = IllegalArgumentException.class) + public void encodeRadixIllegalTooHigh() { + Bytes.from(encodingExample).encodeRadix(37); + } + + @Test(expected = IllegalArgumentException.class) + public void encodeRadixIllegalTooLow() { + Bytes.from(encodingExample).encodeRadix(1); + } +} From b21ed765a54196ab64940fa623904ad854fc1c6a Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 12 Aug 2018 13:49:35 +0200 Subject: [PATCH 053/181] Implement Base32 encoding powered by Guava's BaseEncoding fixes #21 --- CHANGELOG | 1 + README.md | 11 +- .../java/at/favre/lib/bytes/BaseEncoding.java | 208 ++++++++++++++++++ src/main/java/at/favre/lib/bytes/Bytes.java | 44 ++-- .../lib/bytes/BinaryToTextEncodingTest.java | 119 ++++++++-- .../lib/bytes/BytesParseAndEncodingTest.java | 10 + 6 files changed, 360 insertions(+), 33 deletions(-) create mode 100644 src/main/java/at/favre/lib/bytes/BaseEncoding.java diff --git a/CHANGELOG b/CHANGELOG index dd96189..ebf5d7b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ## v0.8.0 * add radix encoding/parsing and fix radix tests #6, #20 +* add support for Base32 RFC4648 non-hex alphabet encoding/parsing #21 ## v0.7.1 diff --git a/README.md b/README.md index a033bf7..90c7c67 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ It's main features include: * **Creation** from a wide variety of sources: multiple arrays, integers, [streams](https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html), random, strings, files, uuid, ... * **Transformation** with many built-in: append, [xor](https://en.wikipedia.org/wiki/Exclusive_or), [and](https://en.wikipedia.org/wiki/Logical_conjunction), [hash](https://en.wikipedia.org/wiki/Cryptographic_hash_function), [shifts](https://en.wikipedia.org/wiki/Bitwise_operation#Bit_shifts), shuffle, reverse, [checksum](https://en.wikipedia.org/wiki/Checksum), ... * **Validators** with the ability to arbitrarily combine multiple ones with logical expressions -* **Parsing and Encoding** in most common binary-to-text-encodings: [hex](https://en.wikipedia.org/wiki/Hexadecimal), [base36](https://en.wikipedia.org/wiki/Base36), [base64](https://en.wikipedia.org/wiki/Base64), ... +* **Parsing and Encoding** in most common binary-to-text-encodings: [hex](https://en.wikipedia.org/wiki/Hexadecimal), [base32](https://en.wikipedia.org/wiki/Base32), [base64](https://en.wikipedia.org/wiki/Base64), ... * **Immutable, Mutable and Read-Only** versions * **Handling Strings** with encoding and normalizing strings for arbitrary charset * **Utility Features** like `indexOf`, `count`, `isEmpty`, `bitAt`, `contains` ... @@ -312,7 +312,14 @@ Bytes.from(array).encodeBase64(); //"SpT9/x6v7Q==" Bytes.from(array).encodeBase64Url(); //"SpT9_x6v7Q==" ``` -Additionally the following encodings are supported: +also a **Base32** encoder (using the RFC4648 non-hex alphabet): + +```java +Bytes.parseBase32("MZXQ===="); +Bytes.from(array).encodeBase32(); + ``` + +Additionally the following radixe encodings are supported: ```java Bytes.from(array).encodeBinary(); //1110110110101111 diff --git a/src/main/java/at/favre/lib/bytes/BaseEncoding.java b/src/main/java/at/favre/lib/bytes/BaseEncoding.java new file mode 100644 index 0000000..e932036 --- /dev/null +++ b/src/main/java/at/favre/lib/bytes/BaseEncoding.java @@ -0,0 +1,208 @@ +/* + * Copyright 2018 Patrick Favre-Bulle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package at.favre.lib.bytes; + +import java.io.IOException; +import java.nio.ByteOrder; +import java.util.Arrays; +import java.util.Objects; + +/** + * Derived from Google Guava's common/io/ BaseEncoding + *

+ * See: https://github.com/google/guava/blob/v26.0/guava/src/com/google/common/io/BaseEncoding.java + */ +final class BaseEncoding implements BinaryToTextEncoding.EncoderDecoder { + private static final char ASCII_MAX = 127; + + static final Alphabet BASE32_RFC4848 = new Alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZ234567".toCharArray()); + static final char BASE32_RFC4848_PADDING = '='; + + private final Alphabet alphabet; + private final Character paddingChar; + + BaseEncoding(Alphabet alphabet, Character paddingChar) { + this.alphabet = Objects.requireNonNull(alphabet); + this.paddingChar = paddingChar; + } + + private int maxEncodedSize(int bytes) { + return alphabet.charsPerChunk * divide(bytes, alphabet.bytesPerChunk); + } + + @Override + public String encode(byte[] array, ByteOrder byteOrder) { + return encode(array, 0, array.length); + } + + private String encode(byte[] bytes, int off, int len) { + StringBuilder result = new StringBuilder(maxEncodedSize(len)); + try { + encodeTo(result, bytes, off, len); + } catch (IOException impossible) { + throw new AssertionError(impossible); + } + return result.toString(); + } + + private void encodeTo(Appendable target, byte[] bytes, int off, int len) throws IOException { + Objects.requireNonNull(target); + for (int i = 0; i < len; i += alphabet.bytesPerChunk) { + encodeChunkTo(target, bytes, off + i, Math.min(alphabet.bytesPerChunk, len - i)); + } + } + + private void encodeChunkTo(Appendable target, byte[] bytes, int off, int len) throws IOException { + Objects.requireNonNull(target); + long bitBuffer = 0; + for (int i = 0; i < len; ++i) { + bitBuffer |= bytes[off + i] & 0xFF; + bitBuffer <<= 8; // Add additional zero byte in the end. + } + // Position of first character is length of bitBuffer minus bitsPerChar. + final int bitOffset = (len + 1) * 8 - alphabet.bitsPerChar; + int bitsProcessed = 0; + while (bitsProcessed < len * 8) { + int charIndex = (int) (bitBuffer >>> (bitOffset - bitsProcessed)) & alphabet.mask; + target.append(alphabet.encode(charIndex)); + bitsProcessed += alphabet.bitsPerChar; + } + if (paddingChar != null) { + while (bitsProcessed < alphabet.bytesPerChunk * 8) { + target.append(paddingChar); + bitsProcessed += alphabet.bitsPerChar; + } + } + } + + private int maxDecodedSize(int chars) { + return (int) ((alphabet.bitsPerChar * (long) chars + 7L) / 8L); + } + + private String trimTrailingPadding(CharSequence chars) { + Objects.requireNonNull(chars); + if (paddingChar == null) { + return chars.toString(); + } + int l; + for (l = chars.length() - 1; l >= 0; l--) { + if (chars.charAt(l) != paddingChar) { + break; + } + } + return chars.subSequence(0, l + 1).toString(); + } + + @Override + public byte[] decode(String encoded) { + encoded = trimTrailingPadding(encoded); + byte[] tmp = new byte[maxDecodedSize(encoded.length())]; + int len = decodeTo(tmp, encoded); + return extract(tmp, len); + } + + private static byte[] extract(byte[] result, int length) { + if (length == result.length) { + return result; + } else { + byte[] trunc = new byte[length]; + System.arraycopy(result, 0, trunc, 0, length); + return trunc; + } + } + + private int decodeTo(byte[] target, CharSequence chars) { + Objects.requireNonNull(target); + chars = trimTrailingPadding(chars); + int bytesWritten = 0; + for (int charIdx = 0; charIdx < chars.length(); charIdx += alphabet.charsPerChunk) { + long chunk = 0; + int charsProcessed = 0; + for (int i = 0; i < alphabet.charsPerChunk; i++) { + chunk <<= alphabet.bitsPerChar; + if (charIdx + i < chars.length()) { + chunk |= alphabet.decode(chars.charAt(charIdx + charsProcessed++)); + } + } + final int minOffset = alphabet.bytesPerChunk * 8 - charsProcessed * alphabet.bitsPerChar; + for (int offset = (alphabet.bytesPerChunk - 1) * 8; offset >= minOffset; offset -= 8) { + target[bytesWritten++] = (byte) ((chunk >>> offset) & 0xFF); + } + } + return bytesWritten; + } + + private static final class Alphabet { + // this is meant to be immutable -- don't modify it! + private final char[] chars; + final int mask; + final int bitsPerChar; + final int charsPerChunk; + final int bytesPerChunk; + private final byte[] decodabet; + + Alphabet(char[] chars) { + this.chars = Objects.requireNonNull(chars); + this.bitsPerChar = log2(chars.length); + + /* + * e.g. for base64, bitsPerChar == 6, charsPerChunk == 4, and bytesPerChunk == 3. This makes + * for the smallest chunk size that still has charsPerChunk * bitsPerChar be a multiple of 8. + */ + int gcd = Math.min(8, Integer.lowestOneBit(bitsPerChar)); + this.charsPerChunk = 8 / gcd; + this.bytesPerChunk = bitsPerChar / gcd; + this.mask = chars.length - 1; + + byte[] decodabet = new byte[ASCII_MAX + 1]; + Arrays.fill(decodabet, (byte) -1); + for (int i = 0; i < chars.length; i++) { + char c = chars[i]; + decodabet[c] = (byte) i; + } + this.decodabet = decodabet; + } + + char encode(int bits) { + return chars[bits]; + } + + int decode(char ch) { + return (int) decodabet[ch]; + } + } + + private static int divide(int p, int q) { + int div = p / q; + int rem = p - q * div; // equal to p % q + + if (rem == 0) { + return div; + } + int signum = 1 | ((p ^ q) >> (Integer.SIZE - 1)); + return signum > 0 ? div + signum : div; + } + + private static int log2(int x) { + return (Integer.SIZE - 1) - Integer.numberOfLeadingZeros(x); + } +} diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 8e89020..829ba69 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -156,8 +156,7 @@ public static Bytes wrap(byte[] array) { * @return new instance */ public static Bytes wrap(byte[] array, ByteOrder byteOrder) { - Objects.requireNonNull(array, "passed array must not be null"); - return new Bytes(array, byteOrder); + return new Bytes(Objects.requireNonNull(array, "passed array must not be null"), byteOrder); } /** @@ -168,8 +167,7 @@ public static Bytes wrap(byte[] array, ByteOrder byteOrder) { * @return new instance */ public static Bytes from(byte[] byteArrayToCopy) { - Objects.requireNonNull(byteArrayToCopy, "must at least pass a single byte"); - return wrap(Arrays.copyOf(byteArrayToCopy, byteArrayToCopy.length)); + return wrap(Arrays.copyOf(Objects.requireNonNull(byteArrayToCopy, "must at least pass a single byte"), byteArrayToCopy.length)); } /** @@ -318,8 +316,7 @@ public static Bytes from(int integer4byte) { * @return new instance */ public static Bytes from(int... intArray) { - Objects.requireNonNull(intArray, "must provide at least a single int"); - return wrap(Util.toByteArray(intArray)); + return wrap(Util.toByteArray(Objects.requireNonNull(intArray, "must provide at least a single int"))); } /** @@ -339,8 +336,7 @@ public static Bytes from(long long8byte) { * @return new instance */ public static Bytes from(long... longArray) { - Objects.requireNonNull(longArray, "must provide at least a single long"); - return wrap(Util.toByteArray(longArray)); + return wrap(Util.toByteArray(Objects.requireNonNull(longArray, "must provide at least a single long"))); } /** @@ -470,9 +466,7 @@ public static Bytes from(CharSequence utf8String, Normalizer.Form form) { * @return new instance */ public static Bytes from(CharSequence string, Charset charset) { - Objects.requireNonNull(string, "provided string must not be null"); - Objects.requireNonNull(charset, "provided charset must not be null"); - return wrap(string.toString().getBytes(charset)); + return wrap(Objects.requireNonNull(string, "provided string must not be null").toString().getBytes(Objects.requireNonNull(charset, "provided charset must not be null"))); } /** @@ -567,6 +561,18 @@ public static Bytes parseHex(String hexString) { return parse(hexString, new BinaryToTextEncoding.Hex()); } + /** + * Parsing of base32/RFC 4648 encoded byte arrays. + *

+ * Uses the RFC 4648 non-hex alphabet, see Base32 alphabet. + * + * @param base32Rfc4648String the encoded string + * @return decoded instance + */ + public static Bytes parseBase32(String base32Rfc4648String) { + return parse(base32Rfc4648String, new BaseEncoding(BaseEncoding.BASE32_RFC4848, BaseEncoding.BASE32_RFC4848_PADDING)); + } + /** * Parsing of base36 encoded byte arrays. *

@@ -1538,6 +1544,19 @@ public String encodeHex(boolean upperCase) { return encode(new BinaryToTextEncoding.Hex(upperCase)); } + /** + * Base32 RFC4648 string representation of the internal byte array (not Base32 hex alphabet extension) + *

+ * Example: MZXW6YQ= + *

+ * See RFC 4648 + * + * @return base32 string + */ + public String encodeBase32() { + return encode(new BaseEncoding(BaseEncoding.BASE32_RFC4848, BaseEncoding.BASE32_RFC4848_PADDING)); + } + /** * DO NOT USE AS DATA ENCODING, ONLY FOR NUMBERS! *

@@ -1597,8 +1616,7 @@ public String encodeUtf8() { * @return encoded string */ public String encodeCharset(Charset charset) { - Objects.requireNonNull(charset, "given charset must not be null"); - return new String(internalArray(), charset); + return new String(internalArray(), Objects.requireNonNull(charset, "given charset must not be null")); } /** diff --git a/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java b/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java index bf763e0..526d35e 100644 --- a/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BinaryToTextEncodingTest.java @@ -40,6 +40,27 @@ public void decodeHexShouldFail() { new BinaryToTextEncoding.Hex(false).decode("AAI="); } + @Test + public void testBase16Reference() { + BinaryToTextEncoding.EncoderDecoder base16Encoding = new BinaryToTextEncoding.Hex(true); + // see: https://tools.ietf.org/html/rfc4648 + assertEquals("", base16Encoding.encode(Bytes.from("").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("66", base16Encoding.encode(Bytes.from("f").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("666F", base16Encoding.encode(Bytes.from("fo").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("666F6F", base16Encoding.encode(Bytes.from("foo").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("666F6F62", base16Encoding.encode(Bytes.from("foob").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("666F6F6261", base16Encoding.encode(Bytes.from("fooba").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("666F6F626172", base16Encoding.encode(Bytes.from("foobar").array(), ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(Bytes.from("").array(), base16Encoding.decode("")); + assertArrayEquals(Bytes.from("f").array(), base16Encoding.decode("66")); + assertArrayEquals(Bytes.from("fo").array(), base16Encoding.decode("666F")); + assertArrayEquals(Bytes.from("foo").array(), base16Encoding.decode("666F6F")); + assertArrayEquals(Bytes.from("foob").array(), base16Encoding.decode("666F6F62")); + assertArrayEquals(Bytes.from("fooba").array(), base16Encoding.decode("666F6F6261")); + assertArrayEquals(Bytes.from("foobar").array(), base16Encoding.decode("666F6F626172")); + } + @Test public void encodeBaseRadix() { assertEquals("100211", new BinaryToTextEncoding.BaseRadixNumber(16).encode(new byte[]{16, 2, 17}, ByteOrder.BIG_ENDIAN)); @@ -89,35 +110,44 @@ public void encodeDecodeRadixZeros() { } @Test - public void encodeDecodeBase64() { + public void encodeDecodeBase64Random() { BinaryToTextEncoding.EncoderDecoder encoderPad = new BinaryToTextEncoding.Base64Encoding(false, true); BinaryToTextEncoding.EncoderDecoder encoderUrlPad = new BinaryToTextEncoding.Base64Encoding(true, true); BinaryToTextEncoding.EncoderDecoder encoderNoPad = new BinaryToTextEncoding.Base64Encoding(false, false); for (int i = 0; i < 32; i += 4) { - Bytes rnd = Bytes.random(i); - String encodedBigEndian = encoderPad.encode(rnd.array(), ByteOrder.BIG_ENDIAN); - byte[] decoded = encoderPad.decode(encodedBigEndian); - assertEquals(rnd, Bytes.wrap(decoded)); - - String encodedBigEndianUrlPad = encoderUrlPad.encode(rnd.array(), ByteOrder.BIG_ENDIAN); - byte[] decodedUrlPad = encoderPad.decode(encodedBigEndianUrlPad); - assertEquals(rnd, Bytes.wrap(decodedUrlPad)); - - String encodedBigEndianNoPad = encoderNoPad.encode(rnd.array(), ByteOrder.BIG_ENDIAN); - byte[] decodedNoPad = encoderPad.decode(encodedBigEndianNoPad); - assertEquals(rnd, Bytes.wrap(decodedNoPad)); + testRndEncodeDecode(encoderPad, i); + testRndEncodeDecode(encoderUrlPad, i); + testRndEncodeDecode(encoderNoPad, i); } } + @Test + public void testBase64Reference() { + BinaryToTextEncoding.EncoderDecoder base64Encoding = new BinaryToTextEncoding.Base64Encoding(); + // see: https://tools.ietf.org/html/rfc4648 + assertEquals("", base64Encoding.encode(Bytes.from("").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("Zg==", base64Encoding.encode(Bytes.from("f").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("Zm8=", base64Encoding.encode(Bytes.from("fo").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("Zm9v", base64Encoding.encode(Bytes.from("foo").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("Zm9vYg==", base64Encoding.encode(Bytes.from("foob").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("Zm9vYmE=", base64Encoding.encode(Bytes.from("fooba").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("Zm9vYmFy", base64Encoding.encode(Bytes.from("foobar").array(), ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(Bytes.from("").array(), base64Encoding.decode("")); + assertArrayEquals(Bytes.from("f").array(), base64Encoding.decode("Zg==")); + assertArrayEquals(Bytes.from("fo").array(), base64Encoding.decode("Zm8=")); + assertArrayEquals(Bytes.from("foo").array(), base64Encoding.decode("Zm9v")); + assertArrayEquals(Bytes.from("foob").array(), base64Encoding.decode("Zm9vYg==")); + assertArrayEquals(Bytes.from("fooba").array(), base64Encoding.decode("Zm9vYmE=")); + assertArrayEquals(Bytes.from("foobar").array(), base64Encoding.decode("Zm9vYmFy")); + } + @Test public void encodeDecodeHex() { for (int i = 4; i < 32; i += 4) { - Bytes rnd = Bytes.random(i); - BinaryToTextEncoding.EncoderDecoder encoding = new BinaryToTextEncoding.Hex(); - String encodedBigEndian = encoding.encode(rnd.array(), ByteOrder.BIG_ENDIAN); - byte[] decoded = encoding.decode(encodedBigEndian); - assertEquals(rnd, Bytes.wrap(decoded)); + testRndEncodeDecode(new BinaryToTextEncoding.Hex(), i); + testRndEncodeDecode(new BinaryToTextEncoding.Hex(true), i); } } @@ -168,4 +198,57 @@ public void encodeRadixIllegalTooLow() { public void encodeRadixIllegalTooLow2() { new BinaryToTextEncoding.BaseRadixNumber(0); } + + @Test + public void testEncodeDecodeRndBase32() { + BaseEncoding base32Encoding = new BaseEncoding(BaseEncoding.BASE32_RFC4848, BaseEncoding.BASE32_RFC4848_PADDING); + for (int i = 0; i < 128; i++) { + testRndEncodeDecode(base32Encoding, i); + } + } + + private byte[] testRndEncodeDecode(BinaryToTextEncoding.EncoderDecoder encoder, int dataLength) { + Bytes rnd = Bytes.random(dataLength); + String encoded = encoder.encode(rnd.array(), ByteOrder.BIG_ENDIAN); + byte[] decoded = encoder.decode(encoded); + assertEquals(rnd, Bytes.wrap(decoded)); + return decoded; + } + + @Test + public void testBase32Reference() { + BinaryToTextEncoding.EncoderDecoder base32Encoding = new BaseEncoding(BaseEncoding.BASE32_RFC4848, BaseEncoding.BASE32_RFC4848_PADDING); + // see: https://tools.ietf.org/html/rfc4648 + assertEquals("", base32Encoding.encode(Bytes.from("").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("MY======", base32Encoding.encode(Bytes.from("f").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("MZXQ====", base32Encoding.encode(Bytes.from("fo").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("MZXW6===", base32Encoding.encode(Bytes.from("foo").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("MZXW6YQ=", base32Encoding.encode(Bytes.from("foob").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("MZXW6YTB", base32Encoding.encode(Bytes.from("fooba").array(), ByteOrder.BIG_ENDIAN)); + assertEquals("MZXW6YTBOI======", base32Encoding.encode(Bytes.from("foobar").array(), ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(Bytes.from("").array(), base32Encoding.decode("")); + assertArrayEquals(Bytes.from("f").array(), base32Encoding.decode("MY======")); + assertArrayEquals(Bytes.from("fo").array(), base32Encoding.decode("MZXQ====")); + assertArrayEquals(Bytes.from("foo").array(), base32Encoding.decode("MZXW6===")); + assertArrayEquals(Bytes.from("foob").array(), base32Encoding.decode("MZXW6YQ=")); + assertArrayEquals(Bytes.from("fooba").array(), base32Encoding.decode("MZXW6YTB")); + assertArrayEquals(Bytes.from("foobar").array(), base32Encoding.decode("MZXW6YTBOI======")); + } + + @Test + public void testBase64BigData() { + for (int i = 0; i < 5; i++) { + byte[] out = testRndEncodeDecode(new BinaryToTextEncoding.Base64Encoding(), 1024 * 1024); + System.out.println(out.length); + } + } + + @Test + public void testBase32BigData() { + for (int i = 0; i < 5; i++) { + byte[] out = testRndEncodeDecode(new BaseEncoding(BaseEncoding.BASE32_RFC4848, BaseEncoding.BASE32_RFC4848_PADDING), 1024 * 1024); + System.out.println(out.length); + } + } } diff --git a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java index 5b64ec8..68fbcf8 100644 --- a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java @@ -83,6 +83,16 @@ public void encodeBase64Url() { assertEquals("SpT9_x6v7Q==", Bytes.from(encodingExample).encodeBase64Url()); } + @Test + public void parseBase32() { + assertArrayEquals(encodingExample, Bytes.parseBase32("JKKP37Y6V7WQ====").array()); + } + + @Test + public void encodeBase32() { + assertEquals("JKKP37Y6V7WQ====", Bytes.from(encodingExample).encodeBase32()); + } + @Test public void encodeBinary() { byte[] defaultArray = new byte[]{(byte) 0xA0, (byte) 0xE1}; From 3615d7712e47adb7dd471ad86bffa6bcc71926de Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 12 Aug 2018 22:57:23 +0200 Subject: [PATCH 054/181] Add JMH encoding benchmark --- pom.xml | 12 +++ .../java/at/favre/lib/bytes/BaseEncoding.java | 2 +- .../favre/lib/bytes/EncodingJmhBenchmark.java | 99 +++++++++++++++++++ 3 files changed, 112 insertions(+), 1 deletion(-) create mode 100644 src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java diff --git a/pom.xml b/pom.xml index 9283937..c47c5a9 100644 --- a/pom.xml +++ b/pom.xml @@ -215,6 +215,18 @@ 4.12 test + + org.openjdk.jmh + jmh-core + 1.21 + test + + + org.openjdk.jmh + jmh-generator-annprocess + 1.21 + test + diff --git a/src/main/java/at/favre/lib/bytes/BaseEncoding.java b/src/main/java/at/favre/lib/bytes/BaseEncoding.java index e932036..163285c 100644 --- a/src/main/java/at/favre/lib/bytes/BaseEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BaseEncoding.java @@ -151,7 +151,7 @@ private int decodeTo(byte[] target, CharSequence chars) { return bytesWritten; } - private static final class Alphabet { + static final class Alphabet { // this is meant to be immutable -- don't modify it! private final char[] chars; final int mask; diff --git a/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java new file mode 100644 index 0000000..2792f78 --- /dev/null +++ b/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java @@ -0,0 +1,99 @@ +/* + * Copyright 2018 Patrick Favre-Bulle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package at.favre.lib.bytes; + +import org.openjdk.jmh.annotations.*; + +import java.nio.ByteOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +/* +# JMH version: 1.21 +# VM version: JDK 1.8.0_172, Java HotSpot(TM) 64-Bit Server VM, 25.172-b11 +# i7 7700K / 24G + +Benchmark (byteLength) Mode Cnt Score Error Units +EncodingJmhBenchmark.encodeBase64Guava 1 thrpt 4 10361634,745 ± 152739,710 ops/s +EncodingJmhBenchmark.encodeBase64Guava 16 thrpt 4 4360485,804 ± 44729,417 ops/s +EncodingJmhBenchmark.encodeBase64Guava 128 thrpt 4 790407,010 ± 8095,476 ops/s +EncodingJmhBenchmark.encodeBase64Guava 512 thrpt 4 192448,674 ± 2196,035 ops/s +EncodingJmhBenchmark.encodeBase64Guava 1000000 thrpt 4 102,780 ± 2,949 ops/s +EncodingJmhBenchmark.encodeBase64Okio 1 thrpt 4 12658987,399 ± 361955,366 ops/s +EncodingJmhBenchmark.encodeBase64Okio 16 thrpt 4 7059404,777 ± 293665,348 ops/s +EncodingJmhBenchmark.encodeBase64Okio 128 thrpt 4 1749131,031 ± 85915,325 ops/s +EncodingJmhBenchmark.encodeBase64Okio 512 thrpt 4 239764,488 ± 6204,540 ops/s +EncodingJmhBenchmark.encodeBase64Okio 1000000 thrpt 4 107,868 ± 0,569 ops/s + */ + +@State(Scope.Thread) +@Fork(1) +@Warmup(iterations = 2, time = 2) +@Measurement(iterations = 4, time = 5) +@BenchmarkMode(Mode.Throughput) +@OutputTimeUnit(TimeUnit.SECONDS) +public class EncodingJmhBenchmark { + + @Param({"1", "16", "128", "512", "1000000"}) + private int byteLength; + private Map rndMap; + + private BinaryToTextEncoding.EncoderDecoder base64Okio; + private BinaryToTextEncoding.EncoderDecoder base64Guava; + private Random random; + + @Setup(Level.Trial) + public void setup() { + random = new Random(); + base64Okio = new BinaryToTextEncoding.Base64Encoding(); + base64Guava = new BaseEncoding(new BaseEncoding.Alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray()), BaseEncoding.BASE32_RFC4848_PADDING); + rndMap = new HashMap<>(); + int[] lengths = new int[]{1, 16, 128, 512, 1000000}; + for (int length : lengths) { + int count = 10; + rndMap.put(length, new Bytes[count]); + for (int i = 0; i < count; i++) { + rndMap.get(length)[i] = Bytes.random(length); + } + } + } + + @Benchmark + public byte[] encodeBase64Okio() { + return encodeDecode(base64Okio); + } + + @Benchmark + public byte[] encodeBase64Guava() { + return encodeDecode(base64Guava); + } + + private byte[] encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { + Bytes[] bytes = rndMap.get(byteLength); + int rndNum = random.nextInt(bytes.length); + + String encoded = encoder.encode(bytes[rndNum].array(), ByteOrder.BIG_ENDIAN); + return encoder.decode(encoded); + } +} From f88de4915c4c0f08780e8b671f8a824b37fc967f Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 12 Aug 2018 23:02:49 +0200 Subject: [PATCH 055/181] Add better doc and update Changelog --- CHANGELOG | 8 ++++++++ src/main/java/at/favre/lib/bytes/BaseEncoding.java | 2 ++ 2 files changed, 10 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index ebf5d7b..2896301 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,10 @@ * add radix encoding/parsing and fix radix tests #6, #20 * add support for Base32 RFC4648 non-hex alphabet encoding/parsing #21 +### Deprecations (will be removed in v1.0+) + +* `parseBase36()`/`encodeBase36()` - use `parseRadix(36)`/`encodeRadix(36)` instead + ## v0.7.1 * sign AFTER ProGuard so optimized version has correct jar signature @@ -30,6 +34,10 @@ * add constructor/converter from/to UUID #9 * add `empty()` constructor, creating empty byte array +### Deprecations (will be removed in v1.0+) + +* `toObjectArray()` renamed to `toBoxedArray()` + ## v0.5.0 * better resource handling for compression diff --git a/src/main/java/at/favre/lib/bytes/BaseEncoding.java b/src/main/java/at/favre/lib/bytes/BaseEncoding.java index 163285c..667242c 100644 --- a/src/main/java/at/favre/lib/bytes/BaseEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BaseEncoding.java @@ -27,6 +27,8 @@ import java.util.Objects; /** + * Encoder which supports arbitrary alphabet and padding. + * * Derived from Google Guava's common/io/ BaseEncoding *

* See: https://github.com/google/guava/blob/v26.0/guava/src/com/google/common/io/BaseEncoding.java From d481459a22c04c508c21beb984a2b4a6045bed7e Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 12 Aug 2018 23:26:12 +0200 Subject: [PATCH 056/181] Update jmh encoding Benchmark --- .../favre/lib/bytes/EncodingJmhBenchmark.java | 81 +++++++++++++++---- 1 file changed, 66 insertions(+), 15 deletions(-) diff --git a/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java index 2792f78..f302292 100644 --- a/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java +++ b/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java @@ -35,16 +35,22 @@ # i7 7700K / 24G Benchmark (byteLength) Mode Cnt Score Error Units -EncodingJmhBenchmark.encodeBase64Guava 1 thrpt 4 10361634,745 ± 152739,710 ops/s -EncodingJmhBenchmark.encodeBase64Guava 16 thrpt 4 4360485,804 ± 44729,417 ops/s -EncodingJmhBenchmark.encodeBase64Guava 128 thrpt 4 790407,010 ± 8095,476 ops/s -EncodingJmhBenchmark.encodeBase64Guava 512 thrpt 4 192448,674 ± 2196,035 ops/s -EncodingJmhBenchmark.encodeBase64Guava 1000000 thrpt 4 102,780 ± 2,949 ops/s -EncodingJmhBenchmark.encodeBase64Okio 1 thrpt 4 12658987,399 ± 361955,366 ops/s -EncodingJmhBenchmark.encodeBase64Okio 16 thrpt 4 7059404,777 ± 293665,348 ops/s -EncodingJmhBenchmark.encodeBase64Okio 128 thrpt 4 1749131,031 ± 85915,325 ops/s -EncodingJmhBenchmark.encodeBase64Okio 512 thrpt 4 239764,488 ± 6204,540 ops/s -EncodingJmhBenchmark.encodeBase64Okio 1000000 thrpt 4 107,868 ± 0,569 ops/s +Benchmark (byteLength) Mode Cnt Score Error Units +EncodingJmhBenchmark.encodeBase64Apache 1 thrpt 4 1260664,187 ± 134162,595 ops/s +EncodingJmhBenchmark.encodeBase64Apache 16 thrpt 4 1018969,264 ± 4008,839 ops/s +EncodingJmhBenchmark.encodeBase64Apache 128 thrpt 4 470368,001 ± 6377,776 ops/s +EncodingJmhBenchmark.encodeBase64Apache 512 thrpt 4 170623,614 ± 5243,433 ops/s +EncodingJmhBenchmark.encodeBase64Apache 1000000 thrpt 4 102,602 ± 2,441 ops/s +EncodingJmhBenchmark.encodeBase64Guava 1 thrpt 4 10961113,761 ± 2448198,032 ops/s +EncodingJmhBenchmark.encodeBase64Guava 16 thrpt 4 6223639,376 ± 189028,495 ops/s +EncodingJmhBenchmark.encodeBase64Guava 128 thrpt 4 1390184,429 ± 35982,746 ops/s +EncodingJmhBenchmark.encodeBase64Guava 512 thrpt 4 343957,426 ± 10939,429 ops/s +EncodingJmhBenchmark.encodeBase64Guava 1000000 thrpt 4 229,641 ± 5,811 ops/s +EncodingJmhBenchmark.encodeBase64Okio 1 thrpt 4 12567622,970 ± 460318,474 ops/s +EncodingJmhBenchmark.encodeBase64Okio 16 thrpt 4 6552615,163 ± 1382416,859 ops/s +EncodingJmhBenchmark.encodeBase64Okio 128 thrpt 4 1640526,665 ± 375607,815 ops/s +EncodingJmhBenchmark.encodeBase64Okio 512 thrpt 4 235282,079 ± 6631,560 ops/s +EncodingJmhBenchmark.encodeBase64Okio 1000000 thrpt 4 103,728 ± 0,820 ops/s */ @State(Scope.Thread) @@ -61,13 +67,16 @@ public class EncodingJmhBenchmark { private BinaryToTextEncoding.EncoderDecoder base64Okio; private BinaryToTextEncoding.EncoderDecoder base64Guava; + private BinaryToTextEncoding.EncoderDecoder base64Apache; private Random random; @Setup(Level.Trial) public void setup() { random = new Random(); base64Okio = new BinaryToTextEncoding.Base64Encoding(); - base64Guava = new BaseEncoding(new BaseEncoding.Alphabet("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".toCharArray()), BaseEncoding.BASE32_RFC4848_PADDING); +// base64Apache = new ApacheCommonCodecBase64(); +// base64Guava = new GuavaBase64(); + rndMap = new HashMap<>(); int[] lengths = new int[]{1, 16, 128, 512, 1000000}; for (int length : lengths) { @@ -84,10 +93,15 @@ public byte[] encodeBase64Okio() { return encodeDecode(base64Okio); } - @Benchmark - public byte[] encodeBase64Guava() { - return encodeDecode(base64Guava); - } +// @Benchmark +// public byte[] encodeBase64Apache() { +// return encodeDecode(base64Apache); +// } +// +// @Benchmark +// public byte[] encodeBase64Guava() { +// return encodeDecode(base64Guava); +// } private byte[] encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { Bytes[] bytes = rndMap.get(byteLength); @@ -96,4 +110,41 @@ private byte[] encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { String encoded = encoder.encode(bytes[rndNum].array(), ByteOrder.BIG_ENDIAN); return encoder.decode(encoded); } + +// +// commons-codec +// commons-codec +// 1.11 +// test +// +// +// com.google.guava +// guava +// 26.0-jre +// test +// +// +// static final class ApacheCommonCodecBase64 implements BinaryToTextEncoding.EncoderDecoder { +// @Override +// public String encode(byte[] array, ByteOrder byteOrder) { +// return Base64.encodeBase64String(array); +// } +// +// @Override +// public byte[] decode(String encoded) { +// return Base64.decodeBase64(encoded); +// } +// } +// +// static final class GuavaBase64 implements BinaryToTextEncoding.EncoderDecoder { +// @Override +// public String encode(byte[] array, ByteOrder byteOrder) { +// return com.google.common.io.BaseEncoding.base64().encode(array); +// } +// +// @Override +// public byte[] decode(String encoded) { +// return com.google.common.io.BaseEncoding.base64().decode(encoded); +// } +// } } From d1e58ba10722188f17d504c1f6be157abee3c63d Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 12 Aug 2018 23:30:13 +0200 Subject: [PATCH 057/181] Update readme [ci-skip] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 90c7c67..e1538b3 100644 --- a/README.md +++ b/README.md @@ -319,7 +319,7 @@ Bytes.parseBase32("MZXQ===="); Bytes.from(array).encodeBase32(); ``` -Additionally the following radixe encodings are supported: +Additionally the following radix encodings are supported: ```java Bytes.from(array).encodeBinary(); //1110110110101111 From acab40e8260199e512c2f2bfcd8feaf49c3031bb Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 13 Aug 2018 12:18:30 +0200 Subject: [PATCH 058/181] Inline `Objects.requireNonNull()` --- src/main/java/at/favre/lib/bytes/Bytes.java | 30 +++++++++++-------- .../java/at/favre/lib/bytes/MutableBytes.java | 2 +- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 829ba69..8f42ef5 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,7 +21,11 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.File; +import java.io.InputStream; +import java.io.Serializable; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -31,7 +35,14 @@ import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.*; +import java.util.Arrays; +import java.util.BitSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -501,8 +512,7 @@ public static Bytes from(char[] charArray, Charset charset) { * @return new instance */ public static Bytes from(UUID uuid) { - Objects.requireNonNull(uuid); - return wrap(Util.getBytesFromUUID(uuid).array()); + return wrap(Util.getBytesFromUUID(Objects.requireNonNull(uuid)).array()); } /** @@ -606,10 +616,7 @@ public static Bytes parseBase64(String base64String) { * @return decoded instance */ public static Bytes parse(String encoded, BinaryToTextEncoding.Decoder decoder) { - Objects.requireNonNull(encoded, "encoded data must not be null"); - Objects.requireNonNull(decoder, "passed decoder instance must no be null"); - - return wrap(decoder.decode(encoded)); + return wrap(Objects.requireNonNull(decoder, "passed decoder instance must no be null").decode(Objects.requireNonNull(encoded, "encoded data must not be null"))); } /** @@ -763,9 +770,7 @@ public Bytes append(CharSequence stringUtf8) { * @return appended instance */ public Bytes append(CharSequence string, Charset charset) { - Objects.requireNonNull(charset); - Objects.requireNonNull(string); - return transform(new BytesTransformer.ConcatTransformer(string.toString().getBytes(charset))); + return transform(new BytesTransformer.ConcatTransformer(Objects.requireNonNull(string).toString().getBytes(Objects.requireNonNull(charset)))); } /** @@ -1059,8 +1064,7 @@ public boolean validateNotOnlyZeros() { * @return true if all validators return true */ public boolean validate(BytesValidator... bytesValidators) { - Objects.requireNonNull(bytesValidators); - return BytesValidators.and(bytesValidators).validate(internalArray()); + return BytesValidators.and(Objects.requireNonNull(bytesValidators)).validate(internalArray()); } /* ATTRIBUTES ************************************************************************************************/ diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 75ba0c7..3bd042c 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -119,7 +119,7 @@ public MutableBytes secureWipe() { * @return this instance */ public MutableBytes secureWipe(SecureRandom random) { - Objects.requireNonNull(random, "must be non-null random"); + Objects.requireNonNull(random, "random param must not be null"); if (length() > 0) { random.nextBytes(internalArray()); } From 5bced818f75bfeda95dc79aa615c69a632ac19ba Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 13 Aug 2018 16:59:35 +0200 Subject: [PATCH 059/181] Update Readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e1538b3..7cddfbf 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ as well as **immutable** and **mutable** access, so the caller may decide to fav performance. This can be seen as combination of the features provided by [`BigInteger`](https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html), [`ByteBuffer`](https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html) but -providing a lot of additional features (similar to Okio's [ByteString](https://github.com/square/okio)). The main goal is to minimize the need +providing a lot of additional features on the micro and macro level of byte arrays (similar to Okio's [ByteString](https://github.com/square/okio)). The main goal is to minimize the need to blindly paste code snippets from [s](https://stackoverflow.com/questions/140131/convert-a-string-representation-of-a-hex-dump-to-a-byte-array-using-java) [t](https://stackoverflow.com/questions/12893758/how-to-reverse-the-byte-array-in-java) @@ -71,7 +71,7 @@ int result = b.toInt(); //get as signed int ```java Bytes b = Bytes.from(array1); //create from copy of array1 -b.resize(2).xor(arry2); //shrink to 2 bytes and xor with other array +b.resize(2).xor(array2); //shrink to 2 bytes and xor with other array byte[] result = b.array(); //get as byte array ``` From c7068b296eed1c4ad56e700b1b18d458a9fb3b6d Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 14 Aug 2018 16:28:44 +0200 Subject: [PATCH 060/181] Fix javadoc --- src/main/java/at/favre/lib/bytes/Bytes.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 8f42ef5..7d5d706 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -392,7 +392,6 @@ public static Bytes from(BitSet set) { } /** - * /** * Creates a new instance from given {@link BigInteger}. * * @param bigInteger to get the byte array from From 9639fc3cd6be9040668bdd03876fb78cdc7c003e Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 14 Aug 2018 16:45:13 +0200 Subject: [PATCH 061/181] Add constructor for `IntBuffer` and `CharBuffer` --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 29 +++++++++++++++++-- .../lib/bytes/BytesConstructorTests.java | 18 +++++++++++- 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 2896301..dc9edd3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ * add radix encoding/parsing and fix radix tests #6, #20 * add support for Base32 RFC4648 non-hex alphabet encoding/parsing #21 +* add constructor for `IntBuffer` and `CharBuffer` ### Deprecations (will be removed in v1.0+) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 7d5d706..769d896 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -30,6 +30,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; +import java.nio.IntBuffer; import java.nio.ReadOnlyBufferException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; @@ -371,14 +372,36 @@ public static Bytes from(double double8Byte) { } /** - * Creates a new instance from given ByteBuffer. + * Creates a new instance from given {@link ByteBuffer}. * Will use the same backing byte array and honour the buffer's byte order. * - * @param buffer to get the byte array from + * @param buffer to get the byte array from (must not be null) * @return new instance */ public static Bytes from(ByteBuffer buffer) { - return wrap(buffer.array(), buffer.order()); + return wrap(Objects.requireNonNull(buffer, "provided byte buffer must not be null").array(), buffer.order()); + } + + /** + * Creates a new instance from given {@link CharBuffer}. + * Will ignore buffer's byte order and use {@link ByteOrder#BIG_ENDIAN} + * + * @param buffer to get the char array from (must not be null) + * @return new instance + */ + public static Bytes from(CharBuffer buffer) { + return from(Objects.requireNonNull(buffer, "provided char buffer must not be null").array()); + } + + /** + * Creates a new instance from given {@link IntBuffer}. + * Will ignore buffer's byte order and use {@link ByteOrder#BIG_ENDIAN} + * + * @param buffer to get the int array from (must not be null) + * @return new instance + */ + public static Bytes from(IntBuffer buffer) { + return from(Objects.requireNonNull(buffer, "provided int buffer must not be null").array()); } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index aad0cfa..33f8a81 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -26,10 +26,16 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileOutputStream; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.nio.CharBuffer; +import java.nio.IntBuffer; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.text.Normalizer; @@ -188,6 +194,13 @@ public void fromIntArray() { assertArrayEquals(new byte[]{0, 11, 30, 55, 0, 0, 35, 53, 0, 0, 0, 0, 0, 0, 56, -70}, Bytes.from(728631, 9013, 0, 14522).array()); } + @Test + public void fromIntBuffer() { + assertArrayEquals(new byte[]{0, 0, 0, 1, 0, 0, 0, 2}, Bytes.from(IntBuffer.wrap(new int[]{1, 2})).array()); + assertArrayEquals(Bytes.from(Bytes.from(871193), Bytes.from(6761), Bytes.from(-917656)).array(), Bytes.from(IntBuffer.wrap(new int[]{871193, 6761, -917656})).array()); + assertArrayEquals(Bytes.empty().array(), Bytes.from(IntBuffer.allocate(0)).array()); + } + @Test public void fromLong() { long test = 172283719283L; @@ -281,6 +294,7 @@ public void fromCharArray() { assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.ISO_8859_1), Bytes.from(s1.toCharArray(), StandardCharsets.ISO_8859_1).array()); assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.UTF_16), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_16).array()); assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.UTF_8), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_8).array()); + assertArrayEquals(Bytes.empty().array(), Bytes.from(CharBuffer.allocate(0)).array()); } @Test @@ -306,8 +320,10 @@ private void checkString(String string, Charset charset) { private void checkCharArray(String s) { Bytes b1 = Bytes.from(s.toCharArray()); Bytes b2 = Bytes.from(s.toCharArray(), StandardCharsets.UTF_8); + Bytes b3 = Bytes.from(CharBuffer.wrap(s.toCharArray())); assertArrayEquals(String.valueOf(s.toCharArray()).getBytes(StandardCharsets.UTF_8), b1.array()); assertArrayEquals(String.valueOf(s.toCharArray()).getBytes(StandardCharsets.UTF_8), b2.array()); + assertArrayEquals(String.valueOf(s.toCharArray()).getBytes(StandardCharsets.UTF_8), b3.array()); } @Test From 04e18dd9031f4d884999d5175a01f3c116d4203b Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 14 Aug 2018 16:53:25 +0200 Subject: [PATCH 062/181] Change `parse()` methods to now expect more flexible `CharSequence` instead of `String` --- CHANGELOG | 5 +++++ src/main/java/at/favre/lib/bytes/Base64.java | 2 +- .../java/at/favre/lib/bytes/BaseEncoding.java | 2 +- .../favre/lib/bytes/BinaryToTextEncoding.java | 12 +++++------ src/main/java/at/favre/lib/bytes/Bytes.java | 20 +++++++++---------- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index dc9edd3..f4da4b9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,11 @@ * add radix encoding/parsing and fix radix tests #6, #20 * add support for Base32 RFC4648 non-hex alphabet encoding/parsing #21 * add constructor for `IntBuffer` and `CharBuffer` +* `parse()` methods now expect more flexible `CharSequence` instead of `String` #23 + +### Breaking + +* interface `BinaryToTextEncoding.decode()` changed param to `CharSequence` from `String` #23 ### Deprecations (will be removed in v1.0+) diff --git a/src/main/java/at/favre/lib/bytes/Base64.java b/src/main/java/at/favre/lib/bytes/Base64.java index 66d0715..730c554 100644 --- a/src/main/java/at/favre/lib/bytes/Base64.java +++ b/src/main/java/at/favre/lib/bytes/Base64.java @@ -47,7 +47,7 @@ private Base64() { '5', '6', '7', '8', '9', '-', '_' }; - static byte[] decode(String in) { + static byte[] decode(CharSequence in) { // Ignore trailing '=' padding and whitespace from the input. int limit = in.length(); for (; limit > 0; limit--) { diff --git a/src/main/java/at/favre/lib/bytes/BaseEncoding.java b/src/main/java/at/favre/lib/bytes/BaseEncoding.java index 667242c..e40076e 100644 --- a/src/main/java/at/favre/lib/bytes/BaseEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BaseEncoding.java @@ -115,7 +115,7 @@ private String trimTrailingPadding(CharSequence chars) { } @Override - public byte[] decode(String encoded) { + public byte[] decode(CharSequence encoded) { encoded = trimTrailingPadding(encoded); byte[] tmp = new byte[maxDecodedSize(encoded.length())]; int len = decodeTo(tmp, encoded); diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index 799682d..e7aa2a4 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -59,7 +59,7 @@ interface Decoder { * @param encoded string * @return byte array represented by given encoded string */ - byte[] decode(String encoded); + byte[] decode(CharSequence encoded); } /** @@ -101,13 +101,13 @@ public String encode(byte[] byteArray, ByteOrder byteOrder) { } @Override - public byte[] decode(String hexString) { + public byte[] decode(CharSequence hexString) { Objects.requireNonNull(hexString, "hex input must not be null"); if (hexString.length() % 2 != 0) throw new IllegalArgumentException("invalid hex string, must be mod 2 == 0"); int start; - if (hexString.startsWith("0x")) { + if (hexString.toString().startsWith("0x")) { start = 2; } else { start = 0; @@ -151,7 +151,7 @@ public String encode(byte[] array, ByteOrder byteOrder) { } @Override - public byte[] decode(String encoded) { + public byte[] decode(CharSequence encoded) { return Base64.decode(encoded); } } @@ -175,8 +175,8 @@ public String encode(byte[] array, ByteOrder byteOrder) { } @Override - public byte[] decode(String encoded) { - byte[] array = new BigInteger(encoded, radix).toByteArray(); + public byte[] decode(CharSequence encoded) { + byte[] array = new BigInteger(encoded.toString(), radix).toByteArray(); if (array[0] == 0) { byte[] tmp = new byte[array.length - 1]; System.arraycopy(array, 1, tmp, 0, tmp.length); diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 769d896..d320032 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -543,7 +543,7 @@ public static Bytes from(UUID uuid) { * @param binaryString the encoded string * @return decoded instance */ - public static Bytes parseBinary(String binaryString) { + public static Bytes parseBinary(CharSequence binaryString) { return parseRadix(binaryString, 2); } @@ -553,7 +553,7 @@ public static Bytes parseBinary(String binaryString) { * @param octalString the encoded string * @return decoded instance */ - public static Bytes parseOctal(String octalString) { + public static Bytes parseOctal(CharSequence octalString) { return parseRadix(octalString, 8); } @@ -563,7 +563,7 @@ public static Bytes parseOctal(String octalString) { * @param decString the encoded string * @return decoded instance */ - public static Bytes parseDec(String decString) { + public static Bytes parseDec(CharSequence decString) { return parseRadix(decString, 10); } @@ -578,7 +578,7 @@ public static Bytes parseDec(String decString) { * @param radix radix of the String representation (supported are 2-36) * @return decoded instance */ - public static Bytes parseRadix(String radixNumberString, int radix) { + public static Bytes parseRadix(CharSequence radixNumberString, int radix) { return parse(radixNumberString, new BinaryToTextEncoding.BaseRadixNumber(radix)); } @@ -589,7 +589,7 @@ public static Bytes parseRadix(String radixNumberString, int radix) { * @param hexString the encoded string * @return decoded instance */ - public static Bytes parseHex(String hexString) { + public static Bytes parseHex(CharSequence hexString) { return parse(hexString, new BinaryToTextEncoding.Hex()); } @@ -601,7 +601,7 @@ public static Bytes parseHex(String hexString) { * @param base32Rfc4648String the encoded string * @return decoded instance */ - public static Bytes parseBase32(String base32Rfc4648String) { + public static Bytes parseBase32(CharSequence base32Rfc4648String) { return parse(base32Rfc4648String, new BaseEncoding(BaseEncoding.BASE32_RFC4848, BaseEncoding.BASE32_RFC4848_PADDING)); } @@ -613,10 +613,10 @@ public static Bytes parseBase32(String base32Rfc4648String) { * * @param base36String the encoded string * @return decoded instance - * @deprecated use {@link #parseRadix(String, int)} with 36 instead; will be removed in v1.0+ + * @deprecated use {@link #parseRadix(CharSequence, int)} with 36 instead; will be removed in v1.0+ */ @Deprecated - public static Bytes parseBase36(String base36String) { + public static Bytes parseBase36(CharSequence base36String) { return parse(base36String, new BinaryToTextEncoding.BaseRadixNumber(36)); } @@ -626,7 +626,7 @@ public static Bytes parseBase36(String base36String) { * @param base64String the encoded string * @return decoded instance */ - public static Bytes parseBase64(String base64String) { + public static Bytes parseBase64(CharSequence base64String) { return parse(base64String, new BinaryToTextEncoding.Base64Encoding()); } @@ -637,7 +637,7 @@ public static Bytes parseBase64(String base64String) { * @param decoder the decoder used to decode the string * @return decoded instance */ - public static Bytes parse(String encoded, BinaryToTextEncoding.Decoder decoder) { + public static Bytes parse(CharSequence encoded, BinaryToTextEncoding.Decoder decoder) { return wrap(Objects.requireNonNull(decoder, "passed decoder instance must no be null").decode(Objects.requireNonNull(encoded, "encoded data must not be null"))); } From 706ea5f8e82ce36cbe014fbf4de2e69d5226f5e6 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 14 Aug 2018 17:22:44 +0200 Subject: [PATCH 063/181] Inline Objects.requireNonNull() in BytesTransformer --- .../java/at/favre/lib/bytes/BytesTransformer.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformer.java b/src/main/java/at/favre/lib/bytes/BytesTransformer.java index 6e4a3fc..a9549da 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformer.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformer.java @@ -60,10 +60,8 @@ public enum Mode { private final Mode mode; BitWiseOperatorTransformer(byte[] secondArray, Mode mode) { - Objects.requireNonNull(secondArray, "the second byte array must not be null"); - Objects.requireNonNull(mode, "passed bitwise mode must not be null"); - this.secondArray = secondArray; - this.mode = mode; + this.secondArray = Objects.requireNonNull(secondArray, "the second byte array must not be null"); + this.mode = Objects.requireNonNull(mode, "passed bitwise mode must not be null"); } @Override @@ -135,10 +133,8 @@ public enum Type { private final Type type; ShiftTransformer(int shiftCount, Type type) { - Objects.requireNonNull(type, "passed shift type must not be null"); - this.shiftCount = shiftCount; - this.type = type; + this.type = Objects.requireNonNull(type, "passed shift type must not be null"); } @Override @@ -169,8 +165,7 @@ final class ConcatTransformer implements BytesTransformer { private final byte[] secondArray; ConcatTransformer(byte[] secondArrays) { - Objects.requireNonNull(secondArrays, "the second byte array must not be null"); - this.secondArray = secondArrays; + this.secondArray = Objects.requireNonNull(secondArrays, "the second byte array must not be null"); } @Override From f7e0486d2f9651c956662f667b5e09f0c3ca5d0e Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 23 Oct 2018 16:58:49 +0200 Subject: [PATCH 064/181] Chain allocate() with empty() constructor --- src/main/java/at/favre/lib/bytes/Bytes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index d320032..f366aeb 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -98,7 +98,7 @@ public static Bytes allocate(int length) { * @return new instance */ public static Bytes allocate(int length, byte defaultValue) { - if (length == 0) return EMPTY; + if (length == 0) return empty(); byte[] array = new byte[length]; if (defaultValue != 0) { Arrays.fill(array, defaultValue); From bafec35ccc94b374ba3e5b60148c364cd039adec Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 23 Oct 2018 17:00:04 +0200 Subject: [PATCH 065/181] Small typo in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7cddfbf..ec9a774 100644 --- a/README.md +++ b/README.md @@ -250,7 +250,7 @@ import static at.favre.lib.bytes.BytesTransformers.*; ```java Bytes.wrap(array).transform(hmacSha256(macKey32Byte)); Bytes.wrap(array).transform(hmacSha1(macKey20Byte)); -Bytes.wrap(array).transform(hmac(macKey20Byte,"HmacMd5")); +Bytes.wrap(array).transform(hmac(macKey16Byte,"HmacMd5")); ``` **Checksum** can be calculated or automatically appended: From 6ad6e193b9ec1a5bdd8dfb14cb1628157e611404 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 23 Oct 2018 17:16:56 +0200 Subject: [PATCH 066/181] Use faster container based build ci config --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 990edbc..6093a6b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,7 @@ # To let the CI execute the maven wrapper, use this command and push the change: # git update-index --chmod=+x mvnw +sudo: false # route your build to the container-based infrastructure for a faster build language: java install: true jdk: @@ -48,4 +49,4 @@ cache: notifications: slack: secure: "PiEdsZoQlBR7ce6IT9LlxWod2XqWjm8HCxs4yP8o9iI5ix7FxEV8NDGQKY1vcDG6D8bz4gcNsBxJrPKASD0G3rLaJpjA4L9MUNhyx+4VCIBBnT1fwV+as+PJmr1tZupqUnlxZJyTdiaqkV8jtjCkHUn3P6TURbNuZws74/ki2rICbi4EebD3mdeQvFtWYKTOsAgZjLecMvPU9q+b7TAwDlaZFbkG7DMFruT8i7tA/EWMOvI48kVaUEM0QPsAxNdr32YFta0s/xJyNuOp1Hp3ZZbnZgXgKc2WvGRcg+9sucnQ+eQsQKj1tbWS2YwxHcy7B3Q7YDmBL2NIJIHbuaWNlbK9fVh3gdk7Knlr8IHpLmVuHvH3HAF6JDcrARjk8ViVP2HafkkDNbQZLupz5LkJ02hj1DMGVOAyuVTt6IpOMt3WTaQ66qtyGupQXhrqvq8tDwvg6FIy1sjPZbWE/Sq1s20PYBbHkVwNvQ3bNaC44nAkcnTv+dAoazvy8G40RIPovTO1ubzriZvuY8Db4THF2ZL1mDbyHEJstA7L9qkObqZOwnFsy5pLp4NfR9C/bTAY8EUcZVGm0spIADafip2H57Hf+n3co4aqw689t+Y453AUh3W+k4ZsC/V1kzX3MVdcluRP7ET8ejtfwduMyh2/jFmUK3g246/teEssyohp6ik=" - email: false \ No newline at end of file + email: false From c3f7239d0a0a397598e2638584efcfd8d916754d Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 24 Oct 2018 16:32:18 +0200 Subject: [PATCH 067/181] Add new from() constructor using char[] which accept offset + length fixes #24 --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 20 ++++++-- src/main/java/at/favre/lib/bytes/Util.java | 51 ++++++++++++++++++- .../lib/bytes/BytesConstructorTests.java | 2 + .../java/at/favre/lib/bytes/UtilTest.java | 48 +++++++++++++++++ 5 files changed, 115 insertions(+), 7 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f4da4b9..45d3196 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,7 @@ * add support for Base32 RFC4648 non-hex alphabet encoding/parsing #21 * add constructor for `IntBuffer` and `CharBuffer` * `parse()` methods now expect more flexible `CharSequence` instead of `String` #23 +* `from()` constructor reading from `char[]` has new version that accepts offset and length #24 ### Breaking diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index f366aeb..f053288 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -199,7 +199,7 @@ public static Bytes fromNullSafe(byte[] byteArrayToCopy) { * Creates a new instance from a slice of given array * * @param array to slice - * @param offset stat position + * @param offset start position * @param length length * @return new instance */ @@ -520,10 +520,20 @@ public static Bytes from(char[] charArray) { * @return new instance */ public static Bytes from(char[] charArray, Charset charset) { - ByteBuffer bb = charset.encode(CharBuffer.wrap(charArray)); - byte[] bytes = new byte[bb.remaining()]; - bb.get(bytes); - return from(bytes); + return from(charArray, charset, 0, charArray.length); + } + + /** + * Creates a new instance from given char array with given range. The array will be handles like an encoded string + * + * @param charArray to get the internal byte array from + * @param charset charset to be used to decode the char array + * @param offset start position (from given char array not encoded byte array out) + * @param length length in relation to offset (from given char array not encoded byte array out) + * @return new instance + */ + public static Bytes from(char[] charArray, Charset charset, int offset, int length) { + return from(Util.charToByteArray(charArray, charset, offset, length)); } /** diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index a026718..b4aaf61 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,11 +21,27 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayOutputStream; +import java.io.DataInput; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; import java.nio.ByteBuffer; import java.nio.ByteOrder; +import java.nio.CharBuffer; +import java.nio.charset.Charset; import java.nio.file.Files; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Common Util methods to convert or modify byte arrays @@ -373,6 +389,37 @@ static byte[] readFromFile(File file) { } } + /** + * Converts a char array to a byte array with given charset and range + * + * @param charArray to get the byte array from + * @param charset charset to be used to decode the char array + * @param offset to start reading the char array from (must be smaller than length and gt 0) + * @param length from offset (must be between 0 and charArray.length) + * @return byte array of encoded chars + */ + static byte[] charToByteArray(char[] charArray, Charset charset, int offset, int length) { + if (offset < 0 || offset > charArray.length) + throw new IllegalArgumentException("offset must be gt 0 and smaller than array length"); + if (length < 0 || length > charArray.length) + throw new IllegalArgumentException("length must be at least 1 and less than array length"); + if (offset + length > charArray.length) + throw new IllegalArgumentException("length + offset must be smaller than array length"); + + if (length == 0) return new byte[0]; + + CharBuffer charBuffer = CharBuffer.wrap(charArray); + + if (offset != 0 || length != charBuffer.remaining()) { + charBuffer = charBuffer.subSequence(offset, offset + length); + } + + ByteBuffer bb = charset.encode(charBuffer); + byte[] bytes = new byte[bb.remaining()]; + bb.get(bytes); + return bytes; + } + /** * Shows the length and a preview of max 8 bytes of the given byte * diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index 33f8a81..38f1d88 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -294,6 +294,8 @@ public void fromCharArray() { assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.ISO_8859_1), Bytes.from(s1.toCharArray(), StandardCharsets.ISO_8859_1).array()); assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.UTF_16), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_16).array()); assertArrayEquals(String.valueOf(s1.toCharArray()).getBytes(StandardCharsets.UTF_8), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_8).array()); + assertArrayEquals(String.valueOf(s1.substring(0, 1).toCharArray()).getBytes(StandardCharsets.UTF_8), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_8, 0, 1).array()); + assertArrayEquals(String.valueOf(s1.substring(3, 7).toCharArray()).getBytes(StandardCharsets.UTF_8), Bytes.from(s1.toCharArray(), StandardCharsets.UTF_8, 3, 4).array()); assertArrayEquals(Bytes.empty().array(), Bytes.from(CharBuffer.allocate(0)).array()); } diff --git a/src/test/java/at/favre/lib/bytes/UtilTest.java b/src/test/java/at/favre/lib/bytes/UtilTest.java index 2ee4302..ba0d15a 100644 --- a/src/test/java/at/favre/lib/bytes/UtilTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilTest.java @@ -25,6 +25,8 @@ import org.junit.Test; import java.math.BigInteger; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.Arrays; import java.util.List; import java.util.Random; @@ -299,4 +301,50 @@ public void testRightShiftAgainstRefImpl() { } } } + + @Test + public void testCharToByteArray() { + Charset[] charsets = new Charset[]{StandardCharsets.UTF_8, StandardCharsets.US_ASCII, StandardCharsets.UTF_16}; + for (Charset charset : charsets) { + checkCharArrayToByteArray("".toCharArray(), charset); + checkCharArrayToByteArray("A".toCharArray(), charset); + checkCharArrayToByteArray("12".toCharArray(), charset); + checkCharArrayToByteArray("XYZ".toCharArray(), charset); + checkCharArrayToByteArray("abcdefg".toCharArray(), charset); + checkCharArrayToByteArray("71oh872gdl2dhp81g".toCharArray(), charset); + + } + + checkCharArrayToByteArray("யe2ாமறிந்தиют убSîne klâwenasd1".toCharArray(), StandardCharsets.UTF_8); + } + + private void checkCharArrayToByteArray(char[] subject, Charset charset) { + for (int lenI = 1; lenI < subject.length + 1; lenI++) { + for (int offsetI = 0; offsetI < subject.length; offsetI++) { + if (offsetI + lenI > subject.length) break; + byte[] bytes = Util.charToByteArray(subject, charset, offsetI, lenI); + assertEquals(Bytes.wrap(bytes), Bytes.wrap(new String(subject).substring(offsetI, offsetI + lenI).getBytes(charset))); + } + } + compareArrayToByteArrayWithoutOffset(subject, charset); + } + + private void compareArrayToByteArrayWithoutOffset(char[] subject, Charset charset) { + assertArrayEquals(Util.charToByteArray(subject, charset, 0, subject.length), new String(subject).getBytes(charset)); + } + + @Test(expected = IllegalArgumentException.class) + public void testCharToByteArrayIllegalOffset() { + Util.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, -1, 1); + } + + @Test(expected = IllegalArgumentException.class) + public void testCharToByteArrayIllegalLength() { + Util.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 0, -1); + } + + @Test(expected = IllegalArgumentException.class) + public void testCharToByteArrayIllegalOffsetPlusLength() { + Util.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 4, 3); + } } From 1b236d8404558b9dc3a3d8cb86de3a52d5ee85fc Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 24 Oct 2018 18:05:45 +0200 Subject: [PATCH 068/181] Add `from()` constructor reading file with offset and length parameter fixes #25 --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 15 +++++++ src/main/java/at/favre/lib/bytes/Util.java | 29 ++++++++++++-- .../lib/bytes/BytesConstructorTests.java | 39 ++++++++++++++++++- 4 files changed, 80 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 45d3196..b800850 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ * add constructor for `IntBuffer` and `CharBuffer` * `parse()` methods now expect more flexible `CharSequence` instead of `String` #23 * `from()` constructor reading from `char[]` has new version that accepts offset and length #24 +* add `from()` constructor reading file with offset and length parameter #25 ### Breaking diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index f053288..11bb184 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -470,6 +470,21 @@ public static Bytes from(File file) { return wrap(Util.readFromFile(file)); } + /** + * Reads given file and returns the byte content. Be aware that the whole defined file content will be loaded to + * memory, so be careful what to read in. This uses {@link java.io.RandomAccessFile} under the hood. + * + * @param file to read from + * @param offset byte offset from zero position of the file + * @param length to read from offset + * @return new instance + * @throws IllegalArgumentException if file does not exist + * @throws IllegalStateException if file could not be read + */ + public static Bytes from(File file, int offset, int length) { + return wrap(Util.readFromFile(file, offset, length)); + } + /** * Creates a new instance from given utf-8 encoded string * diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index b4aaf61..8db07d5 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -26,6 +26,7 @@ import java.io.File; import java.io.IOException; import java.io.InputStream; +import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; @@ -378,9 +379,7 @@ static byte[] concatVararg(byte firstByte, byte[] moreBytes) { * @return byte content */ static byte[] readFromFile(File file) { - if (file == null || !file.exists() || !file.isFile()) { - throw new IllegalArgumentException("file must not be null, has to exist and must be a file (not a directory) " + file); - } + checkFile(file); try { return Files.readAllBytes(file.toPath()); @@ -389,6 +388,30 @@ static byte[] readFromFile(File file) { } } + /** + * Reads bytes from file with given offset and max length + * + * @param file to read bytes from + * @param offset to read + * @param length from offset + * @return byte array with length length + */ + static byte[] readFromFile(File file, int offset, int length) { + checkFile(file); + try (RandomAccessFile raf = new RandomAccessFile(file, "r")) { + raf.seek(offset); + return readFromDataInput(raf, length); + } catch (Exception e) { + throw new IllegalStateException("could not read from random access file", e); + } + } + + private static void checkFile(File file) { + if (file == null || !file.exists() || !file.isFile()) { + throw new IllegalArgumentException("file must not be null, has to exist and must be a file (not a directory) " + file); + } + } + /** * Converts a char array to a byte array with given charset and range * diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index 38f1d88..ff18e35 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -456,7 +456,44 @@ public void fromFileCannotRead() throws Exception { try { Bytes.from(tempFile); fail(); - } catch (IllegalStateException e) { + } catch (IllegalStateException ignored) { + } + } + + @Test + public void fromFileOffset() throws Exception { + File tempFile = testFolder.newFile("out-test2.txt"); + Bytes bytes = Bytes.wrap(new byte[]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18}); + try (FileOutputStream stream = new FileOutputStream(tempFile)) { + stream.write(bytes.array()); + } + + for (int lenI = 1; lenI < bytes.length() + 1; lenI++) { + for (int offsetI = 0; offsetI < bytes.length(); offsetI++) { + if (offsetI + lenI > bytes.length()) break; + assertEquals(bytes.copy(offsetI, lenI), Bytes.from(tempFile, offsetI, lenI)); + } + } + assertEquals(Bytes.from(tempFile), Bytes.from(tempFile, 0, (int) tempFile.length())); + } + + @Test + public void fromFileOffsetWithIllegalOffsetOrLength() throws Exception { + File tempFile = testFolder.newFile("fromFileOffsetWithIllegalOffsetOrLength.txt"); + try (FileOutputStream stream = new FileOutputStream(tempFile)) { + stream.write(new byte[]{0, 1, 2, 3}); + } + + try { + Bytes.from(tempFile, 0, 5); + fail(); + } catch (IllegalStateException ignored) { + } + + try { + Bytes.from(tempFile, 5, 1); + fail(); + } catch (IllegalStateException ignored) { } } From 9e61b07693b13dd98642810fb9b8c7281bc8adeb Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 24 Oct 2018 18:35:46 +0200 Subject: [PATCH 069/181] Bump version to 1.0.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c47c5a9..632db64 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 0.8.0 + 1.0.0 jar Bytes Utility Library From 639d91d6e71f1dc958eb87c21e077476d23eb7f4 Mon Sep 17 00:00:00 2001 From: pfavre Date: Tue, 30 Oct 2018 00:19:52 +0100 Subject: [PATCH 070/181] Add `append()` method supporting multiple byte arrays fixes #26 --- CHANGELOG | 4 +++ src/main/java/at/favre/lib/bytes/Bytes.java | 33 +++++++++---------- .../favre/lib/bytes/BytesTransformTest.java | 10 ++++++ 3 files changed, 29 insertions(+), 18 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index b800850..3c9c66f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ # Releases +## v1.0.0 + +* add `append()` method supporting multiple byte arrays #26 + ## v0.8.0 * add radix encoding/parsing and fix radix tests #6, #20 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 11bb184..39b376e 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,29 +21,14 @@ package at.favre.lib.bytes; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; +import java.io.*; import java.math.BigInteger; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.CharBuffer; -import java.nio.IntBuffer; -import java.nio.ReadOnlyBufferException; +import java.nio.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.Arrays; -import java.util.BitSet; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -777,6 +762,18 @@ public Bytes append(long long8Bytes) { return append(Bytes.from(long8Bytes)); } + /** + * Creates a new instance with the current array appended to the provided data (ie. append at the end). + * You may use this to append multiple byte arrays without the need for chaining the {@link #append(byte[])} call + * and therefore generating intermediate copies of the byte array, making this approach use less memory. + * + * @param arrays to append + * @return appended instance + */ + public Bytes append(byte[]... arrays) { + return append(Bytes.from(arrays)); + } + /** * Creates a new instance with the current array appended to the provided data (ie. append at the end) * diff --git a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java index 82166a3..780929b 100644 --- a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java @@ -47,6 +47,16 @@ public void append() { assertArrayEquals(Util.concat(example_bytes_eight, example_bytes_sixteen), Bytes.from(example_bytes_eight).append(Bytes.from(example_bytes_sixteen)).array()); } + @Test + public void appendMultipleByteArrays() { + assertArrayEquals(new byte[0], Bytes.from(new byte[0]).append(new byte[0], new byte[0]).array()); + assertArrayEquals(new byte[]{0x0, 0x01, 0x02, 0x03}, Bytes.from(new byte[]{0x0}).append(new byte[]{0x1}, new byte[]{0x2}, new byte[]{0x3}).array()); + assertArrayEquals(Util.concat(example_bytes_seven, example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_seven).append(example_bytes_one, example_bytes_sixteen).array()); + assertArrayEquals(Util.concat(example_bytes_sixteen, example_bytes_sixteen, example_bytes_sixteen), Bytes.from(example_bytes_sixteen).append(example_bytes_sixteen, example_bytes_sixteen).array()); + assertArrayEquals(Util.concat(example_bytes_two, example_bytes_seven, example_bytes_twentyfour, example_bytes_eight), Bytes.from(example_bytes_two).append(example_bytes_seven, example_bytes_twentyfour, example_bytes_eight).array()); + assertArrayEquals(Util.concat(example_bytes_two, example_bytes_seven, example_bytes_twentyfour, example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_two).append(example_bytes_seven, example_bytes_twentyfour).append(example_bytes_one, example_bytes_sixteen).array()); + } + @Test public void appendNullSafe() { assertArrayEquals(new byte[0], Bytes.from(new byte[0]).appendNullSafe(new byte[0]).array()); From 02c27b5cda80af9fd5cce03c74f0445dd1831b20 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 31 Oct 2018 20:55:24 +0100 Subject: [PATCH 071/181] Add `toCharArray()` method which decodes internal byte array to char[] --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 21 ++++++++ src/main/java/at/favre/lib/bytes/Util.java | 53 ++++++++++++------- .../lib/bytes/BytesConstructorTests.java | 35 ++++++++++-- 4 files changed, 85 insertions(+), 25 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3c9c66f..3db8817 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ## v1.0.0 * add `append()` method supporting multiple byte arrays #26 +* add `toCharArray()` method which decodes internal byte array to char[] #27 ## v0.8.0 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 39b376e..a7b5f2b 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1889,6 +1889,27 @@ public double toDouble() { return internalBuffer().getDouble(); } + /** + * Decodes the internal byte array to UTF-8 char array. + * This implementation will not internally create a {@link String}. + * + * @return char array + */ + public char[] toCharArray() { + return toCharArray(StandardCharsets.UTF_8); + } + + /** + * Decodes the internal byte array with given charset to a char array. + * This implementation will not internally create a {@link String}. + * + * @param charset to use for decoding + * @return char array + */ + public char[] toCharArray(Charset charset) { + return Util.byteToCharArray(internalArray(), charset); + } + /** * Compares this bytes instance to another. *

diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 8db07d5..ff78531 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,28 +21,14 @@ package at.favre.lib.bytes; -import java.io.ByteArrayOutputStream; -import java.io.DataInput; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.io.RandomAccessFile; +import java.io.*; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; +import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.file.Files; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Common Util methods to convert or modify byte arrays @@ -438,9 +424,36 @@ static byte[] charToByteArray(char[] charArray, Charset charset, int offset, int } ByteBuffer bb = charset.encode(charBuffer); - byte[] bytes = new byte[bb.remaining()]; - bb.get(bytes); - return bytes; + if (bb.capacity() != bb.limit()) { + byte[] bytes = new byte[bb.remaining()]; + bb.get(bytes); + return bytes; + } + return bb.array(); + } + + /** + * Convert given byte array in given encoding to char array + * + * @param bytes as data source + * @param charset of the byte array + * @return char array + */ + static char[] byteToCharArray(byte[] bytes, Charset charset) { + Objects.requireNonNull(bytes, "bytes must not be null"); + Objects.requireNonNull(charset, "charset must not be null"); + + try { + CharBuffer charBuffer = charset.newDecoder().decode(ByteBuffer.wrap(bytes)); + if (charBuffer.capacity() != charBuffer.limit()) { + char[] compacted = new char[charBuffer.remaining()]; + charBuffer.get(compacted); + return compacted; + } + return charBuffer.array(); + } catch (CharacterCodingException e) { + throw new IllegalStateException(e); + } } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index ff18e35..44711af 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -26,11 +26,7 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileOutputStream; +import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -299,6 +295,35 @@ public void fromCharArray() { assertArrayEquals(Bytes.empty().array(), Bytes.from(CharBuffer.allocate(0)).array()); } + @Test + public void toCharArray() { + String unicodeString = "|µ€@7é8ahslishalsdalöskdḼơᶉëᶆ ȋṕšᶙṁ ḍỡḽǭᵳ ʂǐť ӓṁệẗ, ĉṓɲṩḙċ"; + assertArrayEquals(Bytes.from(unicodeString.toCharArray()).array(), Bytes.from(Bytes.from(unicodeString).toCharArray()).array()); + + checkToCharArray(unicodeString, StandardCharsets.UTF_8); + checkToCharArray(unicodeString, StandardCharsets.UTF_16); + checkToCharArray(unicodeString, StandardCharsets.UTF_16BE); + + String asciiString = "asciiASCIIString1234$%&"; + + checkToCharArray(asciiString, StandardCharsets.UTF_8); + checkToCharArray(asciiString, StandardCharsets.UTF_16); + checkToCharArray(asciiString, StandardCharsets.US_ASCII); + checkToCharArray(asciiString, StandardCharsets.ISO_8859_1); + } + + private void checkToCharArray(String string, Charset charset) { + byte[] b0 = String.valueOf(string.toCharArray()).getBytes(charset); + char[] charArray = Bytes.from(b0).toCharArray(charset); + assertEquals(string, new String(charArray)); + assertArrayEquals(string.toCharArray(), Bytes.from(string.toCharArray(), charset).toCharArray(charset)); + } + + @Test(expected = NullPointerException.class) + public void toCharArrayShouldThroughNullPointer() { + Bytes.allocate(4).toCharArray(null); + } + @Test public void fromMultipleBytes() { assertArrayEquals(new byte[]{0x01, 0x02, 0x03}, Bytes.from(Bytes.from((byte) 0x01), Bytes.from((byte) 0x02), Bytes.from((byte) 0x03)).array()); From 8a449bd06b101c5835ac0fcebef4d6ed59c1e2ce Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 3 Jan 2019 15:17:32 +0100 Subject: [PATCH 072/181] Minor performance improvement en/decoding hex --- .../at/favre/lib/bytes/BinaryToTextEncoding.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index e7aa2a4..8533dcf 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -87,10 +87,12 @@ public String encode(byte[] byteArray, ByteOrder byteOrder) { StringBuilder sb = new StringBuilder(byteArray.length * 2); int index; + char first4Bit; + char last4Bit; for (int i = 0; i < byteArray.length; i++) { index = (byteOrder == ByteOrder.BIG_ENDIAN) ? i : byteArray.length - i - 1; - char first4Bit = Character.forDigit((byteArray[index] >> 4) & 0xF, 16); - char last4Bit = Character.forDigit((byteArray[index] & 0xF), 16); + first4Bit = Character.forDigit((byteArray[index] >> 4) & 0xF, 16); + last4Bit = Character.forDigit((byteArray[index] & 0xF), 16); if (upperCase) { first4Bit = Character.toUpperCase(first4Bit); last4Bit = Character.toUpperCase(last4Bit); @@ -115,9 +117,11 @@ public byte[] decode(CharSequence hexString) { int len = hexString.length(); byte[] data = new byte[(len - start) / 2]; + int first4Bits; + int second4Bits; for (int i = start; i < len; i += 2) { - int first4Bits = Character.digit(hexString.charAt(i), 16); - int second4Bits = Character.digit(hexString.charAt(i + 1), 16); + first4Bits = Character.digit(hexString.charAt(i), 16); + second4Bits = Character.digit(hexString.charAt(i + 1), 16); if (first4Bits == -1 || second4Bits == -1) { throw new IllegalArgumentException("'" + hexString.charAt(i) + hexString.charAt(i + 1) + "' at index " + i + " is not hex formatted"); From c8f4270d47039bb1441e6bb58dac137dd07cbc36 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 3 Jan 2019 16:59:15 +0100 Subject: [PATCH 073/181] Minor refactoring in hex decoder --- src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index 8533dcf..00ef667 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -104,12 +104,12 @@ public String encode(byte[] byteArray, ByteOrder byteOrder) { @Override public byte[] decode(CharSequence hexString) { - Objects.requireNonNull(hexString, "hex input must not be null"); - if (hexString.length() % 2 != 0) + if (Objects.requireNonNull(hexString, "hex input must not be null").length() % 2 != 0) throw new IllegalArgumentException("invalid hex string, must be mod 2 == 0"); int start; - if (hexString.toString().startsWith("0x")) { + if (hexString.length() > 2 && + hexString.charAt(0) == '0' && hexString.charAt(1) == 'x') { start = 2; } else { start = 0; From 09cb2cedd376a23f4846250773f0ed476e9e4602 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 3 Jan 2019 17:33:32 +0100 Subject: [PATCH 074/181] Add encodeBase64() supporting padding-less encoding --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 28 ++++++++++++++++--- .../lib/bytes/BytesParseAndEncodingTest.java | 21 ++++++++++++++ 3 files changed, 46 insertions(+), 4 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3db8817..ca67720 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ * add `append()` method supporting multiple byte arrays #26 * add `toCharArray()` method which decodes internal byte array to char[] #27 +* add `encodeBase64()` supporting padding-less encoding ## v0.8.0 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index a7b5f2b..384f269 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -631,7 +631,8 @@ public static Bytes parseBase36(CharSequence base36String) { } /** - * Parsing of base64 encoded byte arrays. Supporting RFC 3548 normal and url safe encoding. + * Parsing of base64 encoded byte arrays. + * Supporting RFC 4648 normal and url safe encoding, with or without padding. * * @param base64String the encoded string * @return decoded instance @@ -1624,6 +1625,8 @@ public String encodeBase36() { /** * Base64 representation with padding. This is *NOT* the url safe variation. This encoding has a space efficiency of 75%. + * + * This encoding is RFC 4648 compatible. *

* Example: SpT9/x6v7Q== * @@ -1631,12 +1634,14 @@ public String encodeBase36() { * @see Base64 */ public String encodeBase64() { - return encode(new BinaryToTextEncoding.Base64Encoding(false, true)); + return encodeBase64(false, true); } /** - * Base64 representation with padding. This is the url safe variation subsitution '+' and '/' with '-' and '_' + * Base64 representation with padding. This is the url safe variation substitution '+' and '/' with '-' and '_' * respectively. This encoding has a space efficiency of 75%. + * + * This encoding is RFC 4648 compatible. *

* Example: SpT9_x6v7Q== * @@ -1644,7 +1649,22 @@ public String encodeBase64() { * @see Base64 */ public String encodeBase64Url() { - return encode(new BinaryToTextEncoding.Base64Encoding(true, true)); + return encodeBase64(true, true); + } + + /** + * Base64 representation with either padding or without and with or without URL and filename safe alphabet. + * This encoding is RFC 4648 compatible. + *

+ * Example: SpT9/x6v7Q== + * + * @param urlSafe if true will substitute '+' and '/' with '-' and '_' + * @param withPadding if true will add padding the next full byte with '=' + * @return base64 url safe string + * @see Base64 + */ + public String encodeBase64(boolean urlSafe, boolean withPadding) { + return encode(new BinaryToTextEncoding.Base64Encoding(urlSafe, withPadding)); } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java index 68fbcf8..5938c17 100644 --- a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java @@ -61,7 +61,9 @@ public void encodeHex() { @Test public void parseBase64() { assertArrayEquals(encodingExample, Bytes.parseBase64("SpT9/x6v7Q==").array()); + assertArrayEquals(encodingExample, Bytes.parseBase64("SpT9/x6v7Q").array()); assertArrayEquals(encodingExample, Bytes.parseBase64("SpT9_x6v7Q==").array()); + assertArrayEquals(encodingExample, Bytes.parseBase64("SpT9_x6v7Q").array()); } @Test(expected = IllegalArgumentException.class) @@ -83,6 +85,25 @@ public void encodeBase64Url() { assertEquals("SpT9_x6v7Q==", Bytes.from(encodingExample).encodeBase64Url()); } + @Test + public void encodeBase64WithConfig() { + assertEquals("", Bytes.from(new byte[0]).encodeBase64(true, true)); + assertEquals("AA==", Bytes.from(new byte[1]).encodeBase64(true, true)); + assertEquals("SpT9_x6v7Q==", Bytes.from(encodingExample).encodeBase64(true, true)); + + assertEquals("", Bytes.from(new byte[0]).encodeBase64(true, false)); + assertEquals("AA", Bytes.from(new byte[1]).encodeBase64(true, false)); + assertEquals("SpT9_x6v7Q", Bytes.from(encodingExample).encodeBase64(true, false)); + + assertEquals("", Bytes.from(new byte[0]).encodeBase64(false, true)); + assertEquals("AA==", Bytes.from(new byte[1]).encodeBase64(false, true)); + assertEquals("SpT9/x6v7Q==", Bytes.from(encodingExample).encodeBase64(false, true)); + + assertEquals("", Bytes.from(new byte[0]).encodeBase64(false, false)); + assertEquals("AA", Bytes.from(new byte[1]).encodeBase64(false, false)); + assertEquals("SpT9/x6v7Q", Bytes.from(encodingExample).encodeBase64(false, false)); + } + @Test public void parseBase32() { assertArrayEquals(encodingExample, Bytes.parseBase32("JKKP37Y6V7WQ====").array()); From f99baaa732ea7379e0e3763613bd69fade9360b2 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 5 Jan 2019 12:29:14 +0100 Subject: [PATCH 075/181] Small refactoring in equals() method --- src/main/java/at/favre/lib/bytes/Bytes.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 384f269..33e97c0 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1963,7 +1963,7 @@ public boolean equals(Object o) { Bytes bytes = (Bytes) o; if (!Arrays.equals(byteArray, bytes.byteArray)) return false; - return byteOrder != null ? byteOrder.equals(bytes.byteOrder) : bytes.byteOrder == null; + return Objects.equals(byteOrder, bytes.byteOrder); } /** From c7dde7bfab634b616af45c084f3862ee3db3b944 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 5 Jan 2019 12:32:11 +0100 Subject: [PATCH 076/181] Remove deprecated toObjectArray() --- CHANGELOG | 4 ++++ src/main/java/at/favre/lib/bytes/Bytes.java | 11 ++--------- .../favre/lib/bytes/BytesToConvertOtherTypesTest.java | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ca67720..1f4a5a0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,10 @@ * add `toCharArray()` method which decodes internal byte array to char[] #27 * add `encodeBase64()` supporting padding-less encoding +### Breaking + +* removed deprecated `toObjectArray()`; use `toBoxedArray()` instead + ## v0.8.0 * add radix encoding/parsing and fix radix tests #6, #20 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 33e97c0..55c92f8 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1733,19 +1733,12 @@ public List toList() { return Util.toList(internalArray()); } - /** - * @return see {@link #toBoxedArray()} - * @deprecated renamed API, use {@link #toBoxedArray()} instead - will be removed in v1.0+ - */ - @Deprecated - public Byte[] toObjectArray() { - return toBoxedArray(); - } - /** * Returns a copy of the internal byte-array as boxed primitive array. * This requires a time and space complexity of O(n). * + * Note: this method was previously called toObjectArray() + * * @return copy of internal array as object array */ public Byte[] toBoxedArray() { diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index 0e18d91..f23f65f 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -45,7 +45,7 @@ private void checkArray(byte[] array) { for (int i = 0; i < array.length; i++) { assertEquals(byteArray[i], Byte.valueOf(array[i])); } - assertArrayEquals(byteArray, Bytes.from(array).toObjectArray()); + assertArrayEquals(byteArray, Bytes.from(array).toBoxedArray()); } @Test From 8cb3a1f690ea09883020acd03acb7ea54f4a6ef7 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 6 Jan 2019 17:51:23 +0100 Subject: [PATCH 077/181] Some small refactorings and add more little endian tests --- src/main/java/at/favre/lib/bytes/Bytes.java | 12 +++++------ src/main/java/at/favre/lib/bytes/Util.java | 9 ++++---- .../at/favre/lib/bytes/BytesMiscTest.java | 21 +++++++++++++++++++ 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 384f269..096e4fa 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1324,7 +1324,7 @@ public int unsignedByteAt(int index) { */ public char charAt(int index) { Util.checkIndexBounds(length(), index, 2, "char"); - return ((ByteBuffer) ByteBuffer.wrap(internalArray()).order(byteOrder).position(index)).getChar(); + return ((ByteBuffer) internalBuffer().position(index)).getChar(); } /** @@ -1337,7 +1337,7 @@ public char charAt(int index) { */ public short shortAt(int index) { Util.checkIndexBounds(length(), index, 2, "short"); - return ((ByteBuffer) ByteBuffer.wrap(internalArray()).order(byteOrder).position(index)).getShort(); + return ((ByteBuffer) internalBuffer().position(index)).getShort(); } /** @@ -1350,7 +1350,7 @@ public short shortAt(int index) { */ public int intAt(int index) { Util.checkIndexBounds(length(), index, 4, "int"); - return ((ByteBuffer) ByteBuffer.wrap(internalArray()).order(byteOrder).position(index)).getInt(); + return ((ByteBuffer) internalBuffer().position(index)).getInt(); } /** @@ -1363,7 +1363,7 @@ public int intAt(int index) { */ public long longAt(int index) { Util.checkIndexBounds(length(), index, 8, "long"); - return ((ByteBuffer) ByteBuffer.wrap(internalArray()).order(byteOrder).position(index)).getLong(); + return ((ByteBuffer) internalBuffer().position(index)).getLong(); } /** @@ -1927,7 +1927,7 @@ public char[] toCharArray() { * @return char array */ public char[] toCharArray(Charset charset) { - return Util.byteToCharArray(internalArray(), charset); + return Util.byteToCharArray(internalArray(), charset, byteOrder); } /** @@ -2009,7 +2009,7 @@ public boolean equals(Byte[] anotherArray) { * @return true if both array have same length and every byte element is the same */ public boolean equals(ByteBuffer buffer) { - return buffer != null && byteOrder == buffer.order() && ByteBuffer.wrap(internalArray()).order(byteOrder).equals(buffer); + return buffer != null && byteOrder == buffer.order() && internalBuffer().equals(buffer); } /** diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index ff78531..d598693 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -435,16 +435,17 @@ static byte[] charToByteArray(char[] charArray, Charset charset, int offset, int /** * Convert given byte array in given encoding to char array * - * @param bytes as data source - * @param charset of the byte array + * @param bytes as data source + * @param charset of the byte array + * @param byteOrder the order of the bytes array * @return char array */ - static char[] byteToCharArray(byte[] bytes, Charset charset) { + static char[] byteToCharArray(byte[] bytes, Charset charset, ByteOrder byteOrder) { Objects.requireNonNull(bytes, "bytes must not be null"); Objects.requireNonNull(charset, "charset must not be null"); try { - CharBuffer charBuffer = charset.newDecoder().decode(ByteBuffer.wrap(bytes)); + CharBuffer charBuffer = charset.newDecoder().decode(ByteBuffer.wrap(bytes).order(byteOrder)); if (charBuffer.capacity() != charBuffer.limit()) { char[] compacted = new char[charBuffer.remaining()]; charBuffer.get(compacted); diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index a462875..844e36c 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -62,6 +62,7 @@ public void testHashcode() { assertNotEquals(0, Bytes.wrap(example2_bytes_seven).hashCode()); } + @SuppressWarnings("SimplifiableJUnitAssertion") @Test public void testEquals() { assertTrue(Bytes.wrap(new byte[0]).equals(Bytes.wrap(new byte[0]))); @@ -150,6 +151,7 @@ public void testIsEmpty() { assertFalse(Bytes.from(example_bytes_seven).isEmpty()); } + @SuppressWarnings("SimplifiableJUnitAssertion") @Test public void containsTest() { assertEquals(false, Bytes.allocate(0).contains((byte) 0xFD)); @@ -372,6 +374,15 @@ public void intAt() { } } + @Test + public void intAtLittleEndian() { + assertEquals(16777216, Bytes.wrap(new byte[]{0, 0, 0, 1}, ByteOrder.LITTLE_ENDIAN).intAt(0)); + assertEquals(1, Bytes.wrap(new byte[]{0, 0, 0, 1}, ByteOrder.BIG_ENDIAN).intAt(0)); + assertEquals(134217728, Bytes.wrap(new byte[]{0, 0, 0, 0b00001000}, ByteOrder.LITTLE_ENDIAN).intAt(0)); + assertEquals(524288, Bytes.wrap(new byte[]{0, 0, 0b00001000, 0}, ByteOrder.LITTLE_ENDIAN).intAt(0)); + assertEquals(8388608, Bytes.wrap(new byte[]{0, 0, (byte) 0b10000000, 0}, ByteOrder.LITTLE_ENDIAN).intAt(0)); + } + @Test public void longAt() { assertEquals(0, Bytes.allocate(8).longAt(0)); @@ -395,6 +406,16 @@ public void longAt() { } } + @Test + public void longAtLittleEndian() { + assertEquals(72057594037927936L, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 1}, ByteOrder.LITTLE_ENDIAN).longAt(0)); + assertEquals(1, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 1}, ByteOrder.BIG_ENDIAN).longAt(0)); + assertEquals(576460752303423488L, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 0b00001000}, ByteOrder.LITTLE_ENDIAN).longAt(0)); + assertEquals(2251799813685248L, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0b00001000, 0}, ByteOrder.LITTLE_ENDIAN).longAt(0)); + assertEquals(36028797018963968L, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, (byte) 0b10000000, 0}, ByteOrder.LITTLE_ENDIAN).longAt(0)); + assertEquals(549755813888L, Bytes.wrap(new byte[]{0, 0, 0, 0, (byte) 0b10000000, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).longAt(0)); + } + @Test public void primitiveAtLittleEndian() { assertEquals(576460752303423488L, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 0b00001000}).byteOrder(ByteOrder.LITTLE_ENDIAN).longAt(0)); //2^59 From b7d82d0d8d07136a58d6e26aa82b640acee1b44b Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 6 Jan 2019 23:41:26 +0100 Subject: [PATCH 078/181] Add toIntArray converter Supports little and big endian order. fixes #28 --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 25 +++++++++-- src/main/java/at/favre/lib/bytes/Util.java | 38 +++++++++++++++++ .../bytes/BytesToConvertOtherTypesTest.java | 41 +++++++++++++++++++ 4 files changed, 102 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 1f4a5a0..006ea88 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,7 @@ * add `append()` method supporting multiple byte arrays #26 * add `toCharArray()` method which decodes internal byte array to char[] #27 * add `encodeBase64()` supporting padding-less encoding +* add `toIntArray()` converter #28 ### Breaking diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 55c92f8..0f31a12 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1625,7 +1625,7 @@ public String encodeBase36() { /** * Base64 representation with padding. This is *NOT* the url safe variation. This encoding has a space efficiency of 75%. - * + *

* This encoding is RFC 4648 compatible. *

* Example: SpT9/x6v7Q== @@ -1640,7 +1640,7 @@ public String encodeBase64() { /** * Base64 representation with padding. This is the url safe variation substitution '+' and '/' with '-' and '_' * respectively. This encoding has a space efficiency of 75%. - * + *

* This encoding is RFC 4648 compatible. *

* Example: SpT9_x6v7Q== @@ -1736,7 +1736,7 @@ public List toList() { /** * Returns a copy of the internal byte-array as boxed primitive array. * This requires a time and space complexity of O(n). - * + *

* Note: this method was previously called toObjectArray() * * @return copy of internal array as object array @@ -1861,6 +1861,25 @@ public int toInt() { return intAt(0); } + /** + * Converts the internal byte array to an int array, that is, every 4 bytes will be packed into a single int. + *

+ * E.g. 4 bytes will be packed to a length 1 int array: + *

+     *  [b1, b2, b3, b4] = [int1]
+     * 
+ *

+ * This conversion respects the internal byte order. Will only work if all bytes can be directly mapped to int, + * which means the byte array length must be dividable by 4 without rest. + * + * @return new int[] instance representing this byte array + * @throws IllegalArgumentException if internal byte length mod 4 != 0 + */ + public int[] toIntArray() { + Util.checkModLength(length(), 4, "creating an int array"); + return Util.toIntArray(internalArray(), byteOrder); + } + /** * If the underlying byte array is exactly 8 byte / 64 bit long, return signed two-complement * representation for a Java signed long integer value. The output is dependent on the set {@link #byteOrder()}. diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index ff78531..1ae52e1 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -25,6 +25,7 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; +import java.nio.IntBuffer; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.file.Files; @@ -456,6 +457,28 @@ static char[] byteToCharArray(byte[] bytes, Charset charset) { } } + /** + * Converts the byte array to an int array. This will spread 4 bytes into a single int: + * + *

+     *     [b1, b2, b3, b4] = int1
+     * 
+ * + * @param bytes to convert to int array + * @param byteOrder of the byte array + * @return int array + */ + static int[] toIntArray(byte[] bytes, ByteOrder byteOrder) { + IntBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asIntBuffer(); + if (buffer.hasArray()) { + return buffer.array(); + } else { + int[] array = new int[buffer.remaining()]; + buffer.get(array); + return array; + } + } + /** * Shows the length and a preview of max 8 bytes of the given byte * @@ -590,6 +613,21 @@ static int hashCode(byte[] byteArray, ByteOrder byteOrder) { return result; } + /** + * Checks if given length is divisable by mod factor (with zero rest). + * This can be used to check of a byte array can be convertet to an e.g. int array which is + * multiples of 4. + * + * @param length of the byte array + * @param modFactor to divide the length + * @param errorSubject human readable message of the exact error subject + */ + static void checkModLength(int length, int modFactor, String errorSubject) { + if (length % modFactor != 0) { + throw new IllegalArgumentException("Illegal length for " + errorSubject + ". Byte array length must be multiple of " + modFactor + ", length was " + length); + } + } + /* ================================================================================================= Copyright 2011 Twitter, Inc. diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index f23f65f..fe66d61 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -23,6 +23,7 @@ import org.junit.Test; +import java.nio.ByteOrder; import java.util.List; import static org.junit.Assert.*; @@ -235,4 +236,44 @@ public void testToUUIDToShort() { public void testToUUIDEmpty() { Bytes.allocate(0).toUUID(); } + + @Test + public void testToIntArray() { + assertArrayEquals(new int[]{1}, Bytes.wrap(new byte[]{0, 0, 0, 1}).toIntArray()); + assertArrayEquals(new int[]{257}, Bytes.wrap(new byte[]{0, 0, 1, 1}).toIntArray()); + assertArrayEquals(new int[]{65_793}, Bytes.wrap(new byte[]{0, 1, 1, 1}).toIntArray()); + assertArrayEquals(new int[]{16_843_009}, Bytes.wrap(new byte[]{1, 1, 1, 1}).toIntArray()); + assertArrayEquals(new int[]{571_211_845}, Bytes.wrap(new byte[]{34, 12, 0, 69}).toIntArray()); + assertArrayEquals(new int[]{1_290_429_439}, Bytes.wrap(new byte[]{76, (byte) 234, 99, (byte) 255}).toIntArray()); + + assertArrayEquals(new int[]{1, 1}, Bytes.wrap(new byte[]{0, 0, 0, 1, 0, 0, 0, 1}).toIntArray()); + assertArrayEquals(new int[]{257, 1}, Bytes.wrap(new byte[]{0, 0, 1, 1, 0, 0, 0, 1}).toIntArray()); + assertArrayEquals(new int[]{257, 65_793, 1}, Bytes.wrap(new byte[]{0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1}).toIntArray()); + } + + @Test(expected = IllegalArgumentException.class) + public void testToIntArrayNotMod4Was5Byte() { + Bytes.wrap(new byte[]{1, 0, 0, 0, 1}).toIntArray(); + } + + @Test(expected = IllegalArgumentException.class) + public void testToIntArrayNotMod4Only3Byte() { + Bytes.wrap(new byte[]{0, 0, 1}).toIntArray(); + } + + @Test + public void testToIntEmptyArray() { + assertArrayEquals(new int[0], Bytes.empty().toIntArray()); + } + + @Test + public void testToIntArrayLittleEndian() { + assertArrayEquals(new int[]{1}, Bytes.wrap(new byte[]{1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toIntArray()); + assertArrayEquals(new int[]{257}, Bytes.wrap(new byte[]{1, 1, 0, 0}, ByteOrder.LITTLE_ENDIAN).toIntArray()); + assertArrayEquals(new int[]{1_290_429_439}, Bytes.wrap(new byte[]{(byte) 255, 99, (byte) 234, 76}, ByteOrder.LITTLE_ENDIAN).toIntArray()); + + assertArrayEquals(new int[]{1, 1}, Bytes.wrap(new byte[]{1, 0, 0, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toIntArray()); + assertArrayEquals(new int[]{257, 1}, Bytes.wrap(new byte[]{1, 1, 0, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toIntArray()); + assertArrayEquals(new int[]{257, 65_793, 1}, Bytes.wrap(new byte[]{1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toIntArray()); + } } From ccb6d5c4ce6c0c423249d10fcabdc99945d11ba9 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 7 Jan 2019 18:16:52 +0100 Subject: [PATCH 079/181] Refactor Util class to partition features in sub-classes --- src/main/java/at/favre/lib/bytes/Bytes.java | 107 +- .../at/favre/lib/bytes/BytesTransformer.java | 8 +- .../at/favre/lib/bytes/BytesTransformers.java | 2 +- .../java/at/favre/lib/bytes/MutableBytes.java | 2 +- src/main/java/at/favre/lib/bytes/Util.java | 1064 +++++++++-------- .../lib/bytes/BytesConstructorTests.java | 18 +- .../bytes/BytesSharedDataConverterTest.java | 8 +- .../favre/lib/bytes/BytesTransformTest.java | 42 +- .../java/at/favre/lib/bytes/UtilTest.java | 146 +-- 9 files changed, 737 insertions(+), 660 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 1ed0899..6b74102 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,14 +21,29 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.File; +import java.io.InputStream; +import java.io.Serializable; import java.math.BigInteger; -import java.nio.*; +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.CharBuffer; +import java.nio.IntBuffer; +import java.nio.ReadOnlyBufferException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.*; +import java.util.Arrays; +import java.util.BitSet; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -202,7 +217,7 @@ public static Bytes from(byte[] array, int offset, int length) { * @return new instance */ public static Bytes from(byte[]... moreArrays) { - return wrap(Util.concat(moreArrays)); + return wrap(Util.Byte.concat(moreArrays)); } /** @@ -228,7 +243,7 @@ public static Bytes from(Bytes... moreBytes) { * @return new instance */ public static Bytes from(Collection bytesCollection) { - return wrap(Util.toArray(bytesCollection)); + return wrap(Util.Converter.toArray(bytesCollection)); } /** @@ -238,7 +253,7 @@ public static Bytes from(Collection bytesCollection) { * @return new instance */ public static Bytes from(Byte[] boxedObjectArray) { - return wrap(Util.toPrimitiveArray(boxedObjectArray)); + return wrap(Util.Converter.toPrimitiveArray(boxedObjectArray)); } /** @@ -260,7 +275,7 @@ public static Bytes from(byte singleByte) { * @return new instance */ public static Bytes from(byte firstByte, byte... moreBytes) { - return wrap(Util.concatVararg(firstByte, moreBytes)); + return wrap(Util.Byte.concatVararg(firstByte, moreBytes)); } /** @@ -313,7 +328,7 @@ public static Bytes from(int integer4byte) { * @return new instance */ public static Bytes from(int... intArray) { - return wrap(Util.toByteArray(Objects.requireNonNull(intArray, "must provide at least a single int"))); + return wrap(Util.Converter.toByteArray(Objects.requireNonNull(intArray, "must provide at least a single int"))); } /** @@ -333,7 +348,7 @@ public static Bytes from(long long8byte) { * @return new instance */ public static Bytes from(long... longArray) { - return wrap(Util.toByteArray(Objects.requireNonNull(longArray, "must provide at least a single long"))); + return wrap(Util.Converter.toByteArray(Objects.requireNonNull(longArray, "must provide at least a single long"))); } /** @@ -416,7 +431,7 @@ public static Bytes from(BigInteger bigInteger) { * @return new instance */ public static Bytes from(InputStream stream) { - return wrap(Util.readFromStream(stream, -1)); + return wrap(Util.File.readFromStream(stream, -1)); } /** @@ -428,7 +443,7 @@ public static Bytes from(InputStream stream) { * @return new instance */ public static Bytes from(InputStream stream, int maxLength) { - return wrap(Util.readFromStream(stream, maxLength)); + return wrap(Util.File.readFromStream(stream, maxLength)); } /** @@ -439,7 +454,7 @@ public static Bytes from(InputStream stream, int maxLength) { * @return new instance */ public static Bytes from(DataInput dataInput, int length) { - return wrap(Util.readFromDataInput(dataInput, length)); + return wrap(Util.File.readFromDataInput(dataInput, length)); } /** @@ -452,7 +467,7 @@ public static Bytes from(DataInput dataInput, int length) { * @throws IllegalStateException if file could not be read */ public static Bytes from(File file) { - return wrap(Util.readFromFile(file)); + return wrap(Util.File.readFromFile(file)); } /** @@ -467,7 +482,7 @@ public static Bytes from(File file) { * @throws IllegalStateException if file could not be read */ public static Bytes from(File file, int offset, int length) { - return wrap(Util.readFromFile(file, offset, length)); + return wrap(Util.File.readFromFile(file, offset, length)); } /** @@ -533,7 +548,7 @@ public static Bytes from(char[] charArray, Charset charset) { * @return new instance */ public static Bytes from(char[] charArray, Charset charset, int offset, int length) { - return from(Util.charToByteArray(charArray, charset, offset, length)); + return from(Util.Converter.charToByteArray(charArray, charset, offset, length)); } /** @@ -544,7 +559,7 @@ public static Bytes from(char[] charArray, Charset charset, int offset, int leng * @return new instance */ public static Bytes from(UUID uuid) { - return wrap(Util.getBytesFromUUID(Objects.requireNonNull(uuid)).array()); + return wrap(Util.Converter.toBytesFromUUID(Objects.requireNonNull(uuid)).array()); } /** @@ -1235,7 +1250,7 @@ public int indexOf(byte[] subArray) { * {@code -1} if no such index exists. */ public int indexOf(byte[] subArray, int fromIndex) { - return Util.indexOf(internalArray(), subArray, fromIndex, length()); + return Util.Byte.indexOf(internalArray(), subArray, fromIndex, length()); } /** @@ -1246,7 +1261,7 @@ public int indexOf(byte[] subArray, int fromIndex) { * @return true if the start of the internal array is eq to given sub array */ public boolean startsWith(byte[] subArray) { - return Util.indexOf(internalArray(), subArray, 0, 1) == 0; + return Util.Byte.indexOf(internalArray(), subArray, 0, 1) == 0; } /** @@ -1258,7 +1273,7 @@ public boolean startsWith(byte[] subArray) { * or {@code -1} if no such index exists. */ public int lastIndexOf(byte target) { - return Util.lastIndexOf(internalArray(), target, 0, length()); + return Util.Byte.lastIndexOf(internalArray(), target, 0, length()); } /** @@ -1270,7 +1285,7 @@ public int lastIndexOf(byte target) { */ public boolean endsWith(byte[] subArray) { int startIndex = length() - subArray.length; - return startIndex >= 0 && Util.indexOf(internalArray(), subArray, startIndex, startIndex + 1) == startIndex; + return startIndex >= 0 && Util.Byte.indexOf(internalArray(), subArray, startIndex, startIndex + 1) == startIndex; } /** @@ -1282,7 +1297,7 @@ public boolean endsWith(byte[] subArray) { * @throws IndexOutOfBoundsException if the {@code bitIndex} argument is negative or not less than the length of this array in bits. */ public boolean bitAt(int bitIndex) { - Util.checkIndexBounds(lengthBit(), bitIndex, 1, "bit"); + Util.Validation.checkIndexBounds(lengthBit(), bitIndex, 1, "bit"); return ((byteAt(length() - 1 - (bitIndex / 8)) >>> bitIndex % 8) & 1) != 0; } @@ -1296,7 +1311,7 @@ public boolean bitAt(int bitIndex) { * @throws IndexOutOfBoundsException if the {@code index} argument is negative or not less than the length of this array. */ public byte byteAt(int index) { - Util.checkIndexBounds(length(), index, 1, "byte"); + Util.Validation.checkIndexBounds(length(), index, 1, "byte"); return internalArray()[index]; } @@ -1310,7 +1325,7 @@ public byte byteAt(int index) { * @throws IndexOutOfBoundsException if the {@code index} argument is negative or not less than the length of this array. */ public int unsignedByteAt(int index) { - Util.checkIndexBounds(length(), index, 1, "unsigned byte"); + Util.Validation.checkIndexBounds(length(), index, 1, "unsigned byte"); return 0xff & internalArray()[index]; } @@ -1323,7 +1338,7 @@ public int unsignedByteAt(int index) { * @throws IndexOutOfBoundsException if the {@code index} argument is negative or length is greater than index - 2 */ public char charAt(int index) { - Util.checkIndexBounds(length(), index, 2, "char"); + Util.Validation.checkIndexBounds(length(), index, 2, "char"); return ((ByteBuffer) internalBuffer().position(index)).getChar(); } @@ -1336,7 +1351,7 @@ public char charAt(int index) { * @throws IndexOutOfBoundsException if the {@code index} argument is negative or length is greater than index - 2 */ public short shortAt(int index) { - Util.checkIndexBounds(length(), index, 2, "short"); + Util.Validation.checkIndexBounds(length(), index, 2, "short"); return ((ByteBuffer) internalBuffer().position(index)).getShort(); } @@ -1349,7 +1364,7 @@ public short shortAt(int index) { * @throws IndexOutOfBoundsException if the {@code int} argument is negative or length is greater than index - 4 */ public int intAt(int index) { - Util.checkIndexBounds(length(), index, 4, "int"); + Util.Validation.checkIndexBounds(length(), index, 4, "int"); return ((ByteBuffer) internalBuffer().position(index)).getInt(); } @@ -1362,7 +1377,7 @@ public int intAt(int index) { * @throws IndexOutOfBoundsException if the {@code long} argument is negative or length is greater than index - 8 */ public long longAt(int index) { - Util.checkIndexBounds(length(), index, 8, "long"); + Util.Validation.checkIndexBounds(length(), index, 8, "long"); return ((ByteBuffer) internalBuffer().position(index)).getLong(); } @@ -1374,7 +1389,7 @@ public long longAt(int index) { * @return the count of given target in the byte array */ public int count(byte target) { - return Util.countByte(internalArray(), target); + return Util.Byte.countByte(internalArray(), target); } /** @@ -1392,7 +1407,7 @@ public int count(byte target) { * @return the count of given target in the byte array */ public int count(byte[] pattern) { - return Util.countByteArray(internalArray(), pattern); + return Util.Byte.countByteArray(internalArray(), pattern); } /** @@ -1730,7 +1745,7 @@ public String encode(BinaryToTextEncoding.Encoder encoder) { * @return copy of internal array as list */ public List toList() { - return Util.toList(internalArray()); + return Util.Converter.toList(internalArray()); } /** @@ -1742,7 +1757,7 @@ public List toList() { * @return copy of internal array as object array */ public Byte[] toBoxedArray() { - return Util.toBoxedArray(internalArray()); + return Util.Converter.toBoxedArray(internalArray()); } /** @@ -1797,7 +1812,7 @@ public UUID toUUID() { * @see Primitive Types */ public byte toByte() { - Util.checkExactLength(length(), 1, "byte"); + Util.Validation.checkExactLength(length(), 1, "byte"); return internalArray()[0]; } @@ -1812,7 +1827,7 @@ public byte toByte() { * @see Primitive Types */ public int toUnsignedByte() { - Util.checkExactLength(length(), 1, "unsigned byte"); + Util.Validation.checkExactLength(length(), 1, "unsigned byte"); return unsignedByteAt(0); } @@ -1827,7 +1842,7 @@ public int toUnsignedByte() { * @see Primitive Types */ public char toChar() { - Util.checkExactLength(length(), 2, "char"); + Util.Validation.checkExactLength(length(), 2, "char"); return charAt(0); } @@ -1842,7 +1857,7 @@ public char toChar() { * @see Primitive Types */ public short toShort() { - Util.checkExactLength(length(), 2, "short"); + Util.Validation.checkExactLength(length(), 2, "short"); return shortAt(0); } @@ -1857,7 +1872,7 @@ public short toShort() { * @see Primitive Types */ public int toInt() { - Util.checkExactLength(length(), 4, "int"); + Util.Validation.checkExactLength(length(), 4, "int"); return intAt(0); } @@ -1876,8 +1891,8 @@ public int toInt() { * @throws IllegalArgumentException if internal byte length mod 4 != 0 */ public int[] toIntArray() { - Util.checkModLength(length(), 4, "creating an int array"); - return Util.toIntArray(internalArray(), byteOrder); + Util.Validation.checkModLength(length(), 4, "creating an int array"); + return Util.Converter.toIntArray(internalArray(), byteOrder); } /** @@ -1891,7 +1906,7 @@ public int[] toIntArray() { * @see Primitive Types */ public long toLong() { - Util.checkExactLength(length(), 8, "long"); + Util.Validation.checkExactLength(length(), 8, "long"); return longAt(0); } @@ -1904,7 +1919,7 @@ public long toLong() { * @see Primitive Types */ public float toFloat() { - Util.checkExactLength(length(), 4, "float"); + Util.Validation.checkExactLength(length(), 4, "float"); return internalBuffer().getFloat(); } @@ -1917,7 +1932,7 @@ public float toFloat() { * @see Primitive Types */ public double toDouble() { - Util.checkExactLength(length(), 8, "double"); + Util.Validation.checkExactLength(length(), 8, "double"); return internalBuffer().getDouble(); } @@ -1939,7 +1954,7 @@ public char[] toCharArray() { * @return char array */ public char[] toCharArray(Charset charset) { - return Util.byteToCharArray(internalArray(), charset, byteOrder); + return Util.Converter.byteToCharArray(internalArray(), charset, byteOrder); } /** @@ -1999,7 +2014,7 @@ public boolean equals(byte[] anotherArray) { * @return true if {@link Arrays#equals(byte[], byte[])} returns true on given and internal array */ public boolean equalsConstantTime(byte[] anotherArray) { - return anotherArray != null && Util.constantTimeEquals(internalArray(), anotherArray); + return anotherArray != null && Util.Byte.constantTimeEquals(internalArray(), anotherArray); } /** @@ -2010,7 +2025,7 @@ public boolean equalsConstantTime(byte[] anotherArray) { * @return true if both array have same length and every byte element is the same */ public boolean equals(Byte[] anotherArray) { - return Util.equals(internalArray(), anotherArray); + return Util.Obj.equals(internalArray(), anotherArray); } /** @@ -2037,7 +2052,7 @@ public boolean equalsContent(Bytes other) { @Override public int hashCode() { if (hashCodeCache == 0) { - hashCodeCache = Util.hashCode(internalArray(), byteOrder()); + hashCodeCache = Util.Obj.hashCode(internalArray(), byteOrder()); } return hashCodeCache; } @@ -2050,7 +2065,7 @@ public int hashCode() { */ @Override public String toString() { - return Util.toString(this); + return Util.Obj.toString(this); } @Override diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformer.java b/src/main/java/at/favre/lib/bytes/BytesTransformer.java index a9549da..3612505 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformer.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformer.java @@ -143,10 +143,10 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { switch (type) { case RIGHT_SHIFT: - return Util.shiftRight(out, shiftCount); + return Util.Byte.shiftRight(out, shiftCount); default: case LEFT_SHIFT: - return Util.shiftLeft(out, shiftCount); + return Util.Byte.shiftLeft(out, shiftCount); } } @@ -170,7 +170,7 @@ final class ConcatTransformer implements BytesTransformer { @Override public byte[] transform(byte[] currentArray, boolean inPlace) { - return Util.concat(currentArray, secondArray); + return Util.Byte.concat(currentArray, secondArray); } @Override @@ -186,7 +186,7 @@ final class ReverseTransformer implements BytesTransformer { @Override public byte[] transform(byte[] currentArray, boolean inPlace) { byte[] out = inPlace ? currentArray : Bytes.from(currentArray).array(); - Util.reverse(out, 0, out.length); + Util.Byte.reverse(out, 0, out.length); return out; } diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index cd67777..64a6ae9 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -177,7 +177,7 @@ public static final class ShuffleTransformer implements BytesTransformer { @Override public byte[] transform(byte[] currentArray, boolean inPlace) { byte[] out = inPlace ? currentArray : Bytes.from(currentArray).array(); - Util.shuffle(out, random); + Util.Byte.shuffle(out, random); return out; } diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 3bd042c..218fd20 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -139,7 +139,7 @@ public Bytes immutable() { @Override public int hashCode() { - return Util.hashCode(internalArray(), byteOrder()); + return Util.Obj.hashCode(internalArray(), byteOrder()); } @Override diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 5969836..ac1b7e3 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,7 +21,11 @@ package at.favre.lib.bytes; -import java.io.*; +import java.io.ByteArrayOutputStream; +import java.io.DataInput; +import java.io.IOException; +import java.io.InputStream; +import java.io.RandomAccessFile; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.CharBuffer; @@ -29,604 +33,657 @@ import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.file.Files; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.NoSuchElementException; +import java.util.Objects; +import java.util.Random; +import java.util.UUID; /** * Common Util methods to convert or modify byte arrays */ final class Util { - private static final int BUF_SIZE = 0x1000; // 4K - - private Util() { - } /** - * Returns the values from each provided byteArray combined into a single byteArray. - * For example, {@code append(new byte[] {a, b}, new byte[] {}, new - * byte[] {c}} returns the byteArray {@code {a, b, c}}. - * - * @param arrays zero or more {@code byte} arrays - * @return a single byteArray containing all the values from the source arrays, in - * order + * Util methods related general purpose byte utility. */ - static byte[] concat(byte[]... arrays) { - int length = 0; - for (byte[] array : arrays) { - length += array.length; - } - byte[] result = new byte[length]; - int pos = 0; - for (byte[] array : arrays) { - System.arraycopy(array, 0, result, pos, array.length); - pos += array.length; - } - return result; - } - - /** - * Returns the start position of the first occurrence of the specified {@code - * target} within {@code array}, or {@code -1} if there is no such occurrence. - *

- *

More formally, returns the lowest index {@code i} such that {@code - * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly - * the same elements as {@code target}. - * - * @param array the array to search for the sequence {@code target} - * @param target the array to search for as a sub-sequence of {@code array} - */ - static int indexOf(byte[] array, byte[] target, int start, int end) { - Objects.requireNonNull(array, "array must not be null"); - Objects.requireNonNull(target, "target must not be null"); - if (target.length == 0 || start < 0) { - return -1; + static final class Byte { + private Byte() { } - outer: - for (int i = start; i < Math.min(end, array.length - target.length + 1); i++) { - for (int j = 0; j < target.length; j++) { - if (array[i + j] != target[j]) { - continue outer; - } + /** + * Returns the values from each provided byteArray combined into a single byteArray. + * For example, {@code append(new byte[] {a, b}, new byte[] {}, new + * byte[] {c}} returns the byteArray {@code {a, b, c}}. + * + * @param arrays zero or more {@code byte} arrays + * @return a single byteArray containing all the values from the source arrays, in + * order + */ + static byte[] concat(byte[]... arrays) { + int length = 0; + for (byte[] array : arrays) { + length += array.length; + } + byte[] result = new byte[length]; + int pos = 0; + for (byte[] array : arrays) { + System.arraycopy(array, 0, result, pos, array.length); + pos += array.length; } - return i; + return result; } - return -1; - } - /** - * Returns the index of the last appearance of the value {@code target} in - * {@code array}. - * - * @param array an array of {@code byte} values, possibly empty - * @param target a primitive {@code byte} value - * @return the greatest index {@code i} for which {@code array[i] == target}, - * or {@code -1} if no such index exists. - */ - static int lastIndexOf(byte[] array, byte target, int start, int end) { - for (int i = end - 1; i >= start; i--) { - if (array[i] == target) { + /** + * Returns the start position of the first occurrence of the specified {@code + * target} within {@code array}, or {@code -1} if there is no such occurrence. + *

+ *

More formally, returns the lowest index {@code i} such that {@code + * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly + * the same elements as {@code target}. + * + * @param array the array to search for the sequence {@code target} + * @param target the array to search for as a sub-sequence of {@code array} + */ + static int indexOf(byte[] array, byte[] target, int start, int end) { + Objects.requireNonNull(array, "array must not be null"); + Objects.requireNonNull(target, "target must not be null"); + if (target.length == 0 || start < 0) { + return -1; + } + + outer: + for (int i = start; i < Math.min(end, array.length - target.length + 1); i++) { + for (int j = 0; j < target.length; j++) { + if (array[i + j] != target[j]) { + continue outer; + } + } return i; } + return -1; } - return -1; - } - /** - * Counts the occurrence of target in the the in the subject array - * - * @param array to count in - * @param target to count - * @return number of times target is in subject - */ - static int countByte(byte[] array, byte target) { - int count = 0; - for (byte b : array) { - if (b == target) { - count++; + /** + * Returns the index of the last appearance of the value {@code target} in + * {@code array}. + * + * @param array an array of {@code byte} values, possibly empty + * @param target a primitive {@code byte} value + * @return the greatest index {@code i} for which {@code array[i] == target}, + * or {@code -1} if no such index exists. + */ + static int lastIndexOf(byte[] array, byte target, int start, int end) { + for (int i = end - 1; i >= start; i--) { + if (array[i] == target) { + return i; + } } + return -1; } - return count; - } - /** - * Counts the times given pattern (ie. an array) can be found in given array - * - * @param array to count in - * @param pattern to match in array - * @return number of times pattern is in subject - */ - static int countByteArray(byte[] array, byte[] pattern) { - Objects.requireNonNull(pattern, "pattern must not be null"); - if (pattern.length == 0 || array.length == 0) { - return 0; - } - int count = 0; - outer: - for (int i = 0; i < array.length - pattern.length + 1; i++) { - for (int j = 0; j < pattern.length; j++) { - if (array[i + j] != pattern[j]) { - continue outer; + /** + * Counts the occurrence of target in the the in the subject array + * + * @param array to count in + * @param target to count + * @return number of times target is in subject + */ + static int countByte(byte[] array, byte target) { + int count = 0; + for (byte b : array) { + if (b == target) { + count++; } } - count++; + return count; } - return count; - } - /** - * Copies a collection of {@code Byte} instances into a new array of - * primitive {@code byte} values. - *

- *

Elements are copied from the argument collection as if by {@code - * collection.toArray()}. Calling this method is as thread-safe as calling - * that method. - * - * @param collection a collection of {@code Byte} objects - * @return an array containing the same values as {@code collection}, in the - * same order, converted to primitives - * @throws NullPointerException if {@code collection} or any of its elements - * is null - */ - static byte[] toArray(Collection collection) { - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - byte[] array = new byte[len]; - for (int i = 0; i < len; i++) { - array[i] = (Byte) boxedArray[i]; - } - return array; - } + /** + * Counts the times given pattern (ie. an array) can be found in given array + * + * @param array to count in + * @param pattern to match in array + * @return number of times pattern is in subject + */ + static int countByteArray(byte[] array, byte[] pattern) { + Objects.requireNonNull(pattern, "pattern must not be null"); + if (pattern.length == 0 || array.length == 0) { + return 0; + } + int count = 0; + outer: + for (int i = 0; i < array.length - pattern.length + 1; i++) { + for (int j = 0; j < pattern.length; j++) { + if (array[i + j] != pattern[j]) { + continue outer; + } + } + count++; + } + return count; + } - /** - * Converts given array to list of boxed bytes. Will create a new list - * and not reuse the array reference. - * - * @param array to convert - * @return list with same length and content as array - */ - static List toList(byte[] array) { - List list = new ArrayList<>(array.length); - for (byte b : array) { - list.add(b); + /** + * Simple Durstenfeld shuffle. + * This will shuffle given array and will not make a copy, so beware. + *

+ * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm + * + * @param array to shuffle + * @param random used to derive entropy - use {@link java.security.SecureRandom} instance if you want this to be secure + */ + static void shuffle(byte[] array, Random random) { + for (int i = array.length - 1; i > 0; i--) { + int index = random.nextInt(i + 1); + byte a = array[index]; + array[index] = array[i]; + array[i] = a; + } } - return list; - } - /** - * Converts this primitive array to an boxed object array. - * Will create a new array and not reuse the array reference. - * - * @param array to convert - * @return new array - */ - static Byte[] toBoxedArray(byte[] array) { - Byte[] objectArray = new Byte[array.length]; - for (int i = 0; i < array.length; i++) { - objectArray[i] = array[i]; + /** + * Reverses the elements of {@code array} between {@code fromIndex} inclusive and {@code toIndex} + * exclusive. This is equivalent to {@code + * Collections.reverse(Bytes.asList(array).subList(fromIndex, toIndex))}, but is likely to be more + * efficient. + * + * @throws IndexOutOfBoundsException if {@code fromIndex < 0}, {@code toIndex > array.length}, or + * {@code toIndex > fromIndex} + */ + static void reverse(byte[] array, int fromIndex, int toIndex) { + Objects.requireNonNull(array); + for (int i = fromIndex, j = toIndex - 1; i < j; i++, j--) { + byte tmp = array[i]; + array[i] = array[j]; + array[j] = tmp; + } } - return objectArray; - } - /** - * Converts this object array to an primitives type array. - * Will create a new array and not reuse the array reference. - * - * @param objectArray to convert - * @return new array - */ - static byte[] toPrimitiveArray(Byte[] objectArray) { - byte[] primitivesArray = new byte[objectArray.length]; - for (int i = 0; i < objectArray.length; i++) { - primitivesArray[i] = objectArray[i]; + /** + * Combines a single argument with a vararg to a single array + * + * @param firstByte first arg + * @param moreBytes varargs + * @return array containing all args + */ + static byte[] concatVararg(byte firstByte, byte[] moreBytes) { + if (moreBytes == null) { + return new byte[]{firstByte}; + } else { + return concat(new byte[]{firstByte}, moreBytes); + } } - return primitivesArray; - } - /** - * Creates a byte array from given int array. - * The resulting byte array will have length intArray * 4. - * - * @param intArray to convert - * @return resulting byte array - */ - static byte[] toByteArray(int[] intArray) { - byte[] primitivesArray = new byte[intArray.length * 4]; - for (int i = 0; i < intArray.length; i++) { - byte[] intBytes = ByteBuffer.allocate(4).putInt(intArray[i]).array(); - System.arraycopy(intBytes, 0, primitivesArray, (i * 4), intBytes.length); + /** + * Light shift of whole byte array by shiftBitCount bits. + * This method will alter the input byte array. + */ + static byte[] shiftLeft(byte[] byteArray, int shiftBitCount) { + final int shiftMod = shiftBitCount % 8; + final byte carryMask = (byte) ((1 << shiftMod) - 1); + final int offsetBytes = (shiftBitCount / 8); + + int sourceIndex; + for (int i = 0; i < byteArray.length; i++) { + sourceIndex = i + offsetBytes; + if (sourceIndex >= byteArray.length) { + byteArray[i] = 0; + } else { + byte src = byteArray[sourceIndex]; + byte dst = (byte) (src << shiftMod); + if (sourceIndex + 1 < byteArray.length) { + dst |= byteArray[sourceIndex + 1] >>> (8 - shiftMod) & carryMask; + } + byteArray[i] = dst; + } + } + return byteArray; } - return primitivesArray; - } - /** - * Creates a byte array from given long array. - * The resulting byte array will have length longArray * 8 - * - * @param longArray to convert - * @return resulting byte array - */ - static byte[] toByteArray(long[] longArray) { - byte[] primitivesArray = new byte[longArray.length * 8]; - for (int i = 0; i < longArray.length; i++) { - byte[] longBytes = ByteBuffer.allocate(8).putLong(longArray[i]).array(); - System.arraycopy(longBytes, 0, primitivesArray, (i * 8), longBytes.length); + /** + * Unsigned/logical right shift of whole byte array by shiftBitCount bits. + * This method will alter the input byte array. + */ + static byte[] shiftRight(byte[] byteArray, int shiftBitCount) { + final int shiftMod = shiftBitCount % 8; + final byte carryMask = (byte) (0xFF << (8 - shiftMod)); + final int offsetBytes = (shiftBitCount / 8); + + int sourceIndex; + for (int i = byteArray.length - 1; i >= 0; i--) { + sourceIndex = i - offsetBytes; + if (sourceIndex < 0) { + byteArray[i] = 0; + } else { + byte src = byteArray[sourceIndex]; + byte dst = (byte) ((0xff & src) >>> shiftMod); + if (sourceIndex - 1 >= 0) { + dst |= byteArray[sourceIndex - 1] << (8 - shiftMod) & carryMask; + } + byteArray[i] = dst; + } + } + return byteArray; } - return primitivesArray; - } - /** - * Simple Durstenfeld shuffle - *

- * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm - * - * @param array - * @param random - */ - static void shuffle(byte[] array, Random random) { - for (int i = array.length - 1; i > 0; i--) { - int index = random.nextInt(i + 1); - byte a = array[index]; - array[index] = array[i]; - array[i] = a; + /** + * See https://codahale.com/a-lesson-in-timing-attacks/ + */ + static boolean constantTimeEquals(byte[] obj, byte[] anotherArray) { + if (anotherArray == null || obj.length != anotherArray.length) return false; + + int result = 0; + for (int i = 0; i < obj.length; i++) { + result |= obj[i] ^ anotherArray[i]; + } + return result == 0; } } /** - * Reverses the elements of {@code array} between {@code fromIndex} inclusive and {@code toIndex} - * exclusive. This is equivalent to {@code - * Collections.reverse(Bytes.asList(array).subList(fromIndex, toIndex))}, but is likely to be more - * efficient. - * - * @throws IndexOutOfBoundsException if {@code fromIndex < 0}, {@code toIndex > array.length}, or - * {@code toIndex > fromIndex} + * Util method related converting byte arrays to other types. */ - static void reverse(byte[] array, int fromIndex, int toIndex) { - Objects.requireNonNull(array); - for (int i = fromIndex, j = toIndex - 1; i < j; i++, j--) { - byte tmp = array[i]; - array[i] = array[j]; - array[j] = tmp; + static final class Converter { + private Converter() { } - } - /** - * Read bytes, buffered, from given input stream. Pass -1 to read the whole stream or limit with length - * parameter. - * - * @param inputStream to read from - * @param maxLengthToRead how many bytes to read from input stream; pass -1 to read whole stream - * @return all bytes from the stream (possibly limited by maxLengthToRead); output length is never longer than stream size - */ - static byte[] readFromStream(InputStream inputStream, final int maxLengthToRead) { - final boolean readWholeStream = maxLengthToRead == -1; - int remaining = maxLengthToRead; - try { - ByteArrayOutputStream out = new ByteArrayOutputStream(readWholeStream ? 32 : maxLengthToRead); - byte[] buf = new byte[0]; - while (readWholeStream || remaining > 0) { - int bufSize = Math.min(BUF_SIZE, readWholeStream ? BUF_SIZE : remaining); - if (buf.length != bufSize) { - buf = new byte[bufSize]; - } - int r = inputStream.read(buf); - if (r == -1) { - break; - } - remaining -= r; - out.write(buf, 0, r); + /** + * Copies a collection of {@code Byte} instances into a new array of + * primitive {@code byte} values. + *

+ *

Elements are copied from the argument collection as if by {@code + * collection.toArray()}. Calling this method is as thread-safe as calling + * that method. + * + * @param collection a collection of {@code Byte} objects + * @return an array containing the same values as {@code collection}, in the + * same order, converted to primitives + * @throws NullPointerException if {@code collection} or any of its elements + * is null + */ + static byte[] toArray(Collection collection) { + Object[] boxedArray = collection.toArray(); + int len = boxedArray.length; + byte[] array = new byte[len]; + for (int i = 0; i < len; i++) { + array[i] = (java.lang.Byte) boxedArray[i]; } - return out.toByteArray(); - } catch (Exception e) { - throw new IllegalStateException("could not read from input stream", e); + return array; } - } - /** - * Read all bytes until length from given byte array. - * - * @param dataInput to read from - * @return all bytes from the dataInput - */ - static byte[] readFromDataInput(DataInput dataInput, int length) { - ByteArrayOutputStream out = new ByteArrayOutputStream(length); - try { - byte[] buf; - int remaining = length; - for (int i = 0; i < length; i++) { - buf = new byte[Math.min(remaining, BUF_SIZE)]; - dataInput.readFully(buf); - out.write(buf); - remaining -= buf.length; - } - return out.toByteArray(); - } catch (Exception e) { - throw new IllegalStateException("could not read from data input", e); + /** + * Converts given array to list of boxed bytes. Will create a new list + * and not reuse the array reference. + * + * @param array to convert + * @return list with same length and content as array + */ + static List toList(byte[] array) { + List list = new ArrayList<>(array.length); + for (byte b : array) { + list.add(b); + } + return list; } - } - /** - * Combines a single argument with a vararg to a single array - * - * @param firstByte first arg - * @param moreBytes varargs - * @return array containing all args - */ - static byte[] concatVararg(byte firstByte, byte[] moreBytes) { - if (moreBytes == null) { - return new byte[]{firstByte}; - } else { - return concat(new byte[]{firstByte}, moreBytes); + /** + * Converts this primitive array to an boxed object array. + * Will create a new array and not reuse the array reference. + * + * @param array to convert + * @return new array + */ + static java.lang.Byte[] toBoxedArray(byte[] array) { + java.lang.Byte[] objectArray = new java.lang.Byte[array.length]; + for (int i = 0; i < array.length; i++) { + objectArray[i] = array[i]; + } + return objectArray; } - } - - /** - * Reads all bytes from a file - * - * @param file the file to read - * @return byte content - */ - static byte[] readFromFile(File file) { - checkFile(file); - try { - return Files.readAllBytes(file.toPath()); - } catch (IOException e) { - throw new IllegalStateException("could not read from file", e); + /** + * Converts this object array to an primitives type array. + * Will create a new array and not reuse the array reference. + * + * @param objectArray to convert + * @return new array + */ + static byte[] toPrimitiveArray(java.lang.Byte[] objectArray) { + byte[] primitivesArray = new byte[objectArray.length]; + for (int i = 0; i < objectArray.length; i++) { + primitivesArray[i] = objectArray[i]; + } + return primitivesArray; } - } - /** - * Reads bytes from file with given offset and max length - * - * @param file to read bytes from - * @param offset to read - * @param length from offset - * @return byte array with length length - */ - static byte[] readFromFile(File file, int offset, int length) { - checkFile(file); - try (RandomAccessFile raf = new RandomAccessFile(file, "r")) { - raf.seek(offset); - return readFromDataInput(raf, length); - } catch (Exception e) { - throw new IllegalStateException("could not read from random access file", e); + /** + * Creates a byte array from given int array. + * The resulting byte array will have length intArray * 4. + * + * @param intArray to convert + * @return resulting byte array + */ + static byte[] toByteArray(int[] intArray) { + byte[] primitivesArray = new byte[intArray.length * 4]; + for (int i = 0; i < intArray.length; i++) { + byte[] intBytes = ByteBuffer.allocate(4).putInt(intArray[i]).array(); + System.arraycopy(intBytes, 0, primitivesArray, (i * 4), intBytes.length); + } + return primitivesArray; } - } - private static void checkFile(File file) { - if (file == null || !file.exists() || !file.isFile()) { - throw new IllegalArgumentException("file must not be null, has to exist and must be a file (not a directory) " + file); + /** + * Creates a byte array from given long array. + * The resulting byte array will have length longArray * 8 + * + * @param longArray to convert + * @return resulting byte array + */ + static byte[] toByteArray(long[] longArray) { + byte[] primitivesArray = new byte[longArray.length * 8]; + for (int i = 0; i < longArray.length; i++) { + byte[] longBytes = ByteBuffer.allocate(8).putLong(longArray[i]).array(); + System.arraycopy(longBytes, 0, primitivesArray, (i * 8), longBytes.length); + } + return primitivesArray; } - } - /** - * Converts a char array to a byte array with given charset and range - * - * @param charArray to get the byte array from - * @param charset charset to be used to decode the char array - * @param offset to start reading the char array from (must be smaller than length and gt 0) - * @param length from offset (must be between 0 and charArray.length) - * @return byte array of encoded chars - */ - static byte[] charToByteArray(char[] charArray, Charset charset, int offset, int length) { - if (offset < 0 || offset > charArray.length) - throw new IllegalArgumentException("offset must be gt 0 and smaller than array length"); - if (length < 0 || length > charArray.length) - throw new IllegalArgumentException("length must be at least 1 and less than array length"); - if (offset + length > charArray.length) - throw new IllegalArgumentException("length + offset must be smaller than array length"); + /** + * Converts a char array to a byte array with given charset and range + * + * @param charArray to get the byte array from + * @param charset charset to be used to decode the char array + * @param offset to start reading the char array from (must be smaller than length and gt 0) + * @param length from offset (must be between 0 and charArray.length) + * @return byte array of encoded chars + */ + static byte[] charToByteArray(char[] charArray, Charset charset, int offset, int length) { + if (offset < 0 || offset > charArray.length) + throw new IllegalArgumentException("offset must be gt 0 and smaller than array length"); + if (length < 0 || length > charArray.length) + throw new IllegalArgumentException("length must be at least 1 and less than array length"); + if (offset + length > charArray.length) + throw new IllegalArgumentException("length + offset must be smaller than array length"); - if (length == 0) return new byte[0]; + if (length == 0) return new byte[0]; - CharBuffer charBuffer = CharBuffer.wrap(charArray); + CharBuffer charBuffer = CharBuffer.wrap(charArray); - if (offset != 0 || length != charBuffer.remaining()) { - charBuffer = charBuffer.subSequence(offset, offset + length); - } + if (offset != 0 || length != charBuffer.remaining()) { + charBuffer = charBuffer.subSequence(offset, offset + length); + } - ByteBuffer bb = charset.encode(charBuffer); - if (bb.capacity() != bb.limit()) { - byte[] bytes = new byte[bb.remaining()]; - bb.get(bytes); - return bytes; + ByteBuffer bb = charset.encode(charBuffer); + if (bb.capacity() != bb.limit()) { + byte[] bytes = new byte[bb.remaining()]; + bb.get(bytes); + return bytes; + } + return bb.array(); } - return bb.array(); - } - /** - * Convert given byte array in given encoding to char array - * - * @param bytes as data source - * @param charset of the byte array - * @param byteOrder the order of the bytes array - * @return char array - */ - static char[] byteToCharArray(byte[] bytes, Charset charset, ByteOrder byteOrder) { - Objects.requireNonNull(bytes, "bytes must not be null"); - Objects.requireNonNull(charset, "charset must not be null"); + /** + * Convert given byte array in given encoding to char array + * + * @param bytes as data source + * @param charset of the byte array + * @param byteOrder the order of the bytes array + * @return char array + */ + static char[] byteToCharArray(byte[] bytes, Charset charset, ByteOrder byteOrder) { + Objects.requireNonNull(bytes, "bytes must not be null"); + Objects.requireNonNull(charset, "charset must not be null"); - try { - CharBuffer charBuffer = charset.newDecoder().decode(ByteBuffer.wrap(bytes).order(byteOrder)); - if (charBuffer.capacity() != charBuffer.limit()) { - char[] compacted = new char[charBuffer.remaining()]; - charBuffer.get(compacted); - return compacted; + try { + CharBuffer charBuffer = charset.newDecoder().decode(ByteBuffer.wrap(bytes).order(byteOrder)); + if (charBuffer.capacity() != charBuffer.limit()) { + char[] compacted = new char[charBuffer.remaining()]; + charBuffer.get(compacted); + return compacted; + } + return charBuffer.array(); + } catch (CharacterCodingException e) { + throw new IllegalStateException(e); } - return charBuffer.array(); - } catch (CharacterCodingException e) { - throw new IllegalStateException(e); } - } - /** - * Converts the byte array to an int array. This will spread 4 bytes into a single int: - * - *

-     *     [b1, b2, b3, b4] = int1
-     * 
- * - * @param bytes to convert to int array - * @param byteOrder of the byte array - * @return int array - */ - static int[] toIntArray(byte[] bytes, ByteOrder byteOrder) { - IntBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asIntBuffer(); - if (buffer.hasArray()) { - return buffer.array(); - } else { - int[] array = new int[buffer.remaining()]; - buffer.get(array); - return array; + /** + * Converts the byte array to an int array. This will spread 4 bytes into a single int: + * + *
+         *     [b1, b2, b3, b4] = int1
+         * 
+ * + * @param bytes to convert to int array + * @param byteOrder of the byte array + * @return int array + */ + static int[] toIntArray(byte[] bytes, ByteOrder byteOrder) { + IntBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asIntBuffer(); + if (buffer.hasArray()) { + return buffer.array(); + } else { + int[] array = new int[buffer.remaining()]; + buffer.get(array); + return array; + } + } + + /** + * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and + * 8 byte least significant bits into an byte array. + * + * @param uuid to convert to array + * @return buffer containing the 16 bytes + */ + static ByteBuffer toBytesFromUUID(UUID uuid) { + ByteBuffer bb = ByteBuffer.allocate(16); + bb.putLong(uuid.getMostSignificantBits()); + bb.putLong(uuid.getLeastSignificantBits()); + return bb; } } /** - * Shows the length and a preview of max 8 bytes of the given byte - * - * @param bytes to convert to string - * @return string representation + * Util method related to Object class methods. */ - static String toString(Bytes bytes) { - String preview; - if (bytes.isEmpty()) { - preview = ""; - } else if (bytes.length() > 8) { - preview = "(0x" + bytes.copy(0, 4).encodeHex() + "..." + bytes.copy(bytes.length() - 4, 4).encodeHex() + ")"; - } else { - preview = "(0x" + bytes.encodeHex() + ")"; + static final class Obj { + private Obj() { } - return bytes.length() + " " + (bytes.length() == 1 ? "byte" : "bytes") + " " + preview; - } + static boolean equals(byte[] obj, java.lang.Byte[] anotherArray) { + if (anotherArray == null) return false; + if (obj.length != anotherArray.length) return false; + for (int i = 0; i < obj.length; i++) { + if (anotherArray[i] == null || obj[i] != anotherArray[i]) { + return false; + } + } + return true; + } - /** - * Light shift of whole byte array by shiftBitCount bits. - * This method will alter the input byte array. - */ - static byte[] shiftLeft(byte[] byteArray, int shiftBitCount) { - final int shiftMod = shiftBitCount % 8; - final byte carryMask = (byte) ((1 << shiftMod) - 1); - final int offsetBytes = (shiftBitCount / 8); - - int sourceIndex; - for (int i = 0; i < byteArray.length; i++) { - sourceIndex = i + offsetBytes; - if (sourceIndex >= byteArray.length) { - byteArray[i] = 0; + /** + * Hashcode implementation for a byte array and given byte order + * + * @param byteArray to calculate hashCode of + * @param byteOrder to calculate hashCode of + * @return hashCode + */ + static int hashCode(byte[] byteArray, ByteOrder byteOrder) { + int result = Arrays.hashCode(byteArray); + result = 31 * result + (byteOrder != null ? byteOrder.hashCode() : 0); + return result; + } + + /** + * Shows the length and a preview of max 8 bytes of the given byte + * + * @param bytes to convert to string + * @return string representation + */ + static String toString(Bytes bytes) { + String preview; + if (bytes.isEmpty()) { + preview = ""; + } else if (bytes.length() > 8) { + preview = "(0x" + bytes.copy(0, 4).encodeHex() + "..." + bytes.copy(bytes.length() - 4, 4).encodeHex() + ")"; } else { - byte src = byteArray[sourceIndex]; - byte dst = (byte) (src << shiftMod); - if (sourceIndex + 1 < byteArray.length) { - dst |= byteArray[sourceIndex + 1] >>> (8 - shiftMod) & carryMask; - } - byteArray[i] = dst; + preview = "(0x" + bytes.encodeHex() + ")"; } + + return bytes.length() + " " + (bytes.length() == 1 ? "byte" : "bytes") + " " + preview; } - return byteArray; } /** - * Unsigned/logical right shift of whole byte array by shiftBitCount bits. - * This method will alter the input byte array. + * Util method related check and validate byte arrays. */ - static byte[] shiftRight(byte[] byteArray, int shiftBitCount) { - final int shiftMod = shiftBitCount % 8; - final byte carryMask = (byte) (0xFF << (8 - shiftMod)); - final int offsetBytes = (shiftBitCount / 8); - - int sourceIndex; - for (int i = byteArray.length - 1; i >= 0; i--) { - sourceIndex = i - offsetBytes; - if (sourceIndex < 0) { - byteArray[i] = 0; - } else { - byte src = byteArray[sourceIndex]; - byte dst = (byte) ((0xff & src) >>> shiftMod); - if (sourceIndex - 1 >= 0) { - dst |= byteArray[sourceIndex - 1] << (8 - shiftMod) & carryMask; - } - byteArray[i] = dst; + static final class Validation { + private Validation() { + } + + private static void checkFile(java.io.File file) { + if (file == null || !file.exists() || !file.isFile()) { + throw new IllegalArgumentException("file must not be null, has to exist and must be a file (not a directory) " + file); } } - return byteArray; - } - static void checkIndexBounds(int length, int index, int primitiveLength, String type) { - if (index < 0 || index + primitiveLength > length) { - throw new IndexOutOfBoundsException("cannot get " + type + " from index out of bounds: " + index); + static void checkIndexBounds(int length, int index, int primitiveLength, String type) { + if (index < 0 || index + primitiveLength > length) { + throw new IndexOutOfBoundsException("cannot get " + type + " from index out of bounds: " + index); + } } - } - static void checkExactLength(int length, int expectedLength, String type) { - if (length != expectedLength) { - throw new IllegalStateException("cannot convert to " + type + " if length != " + expectedLength + " bytes (was " + length + ")"); + static void checkExactLength(int length, int expectedLength, String type) { + if (length != expectedLength) { + throw new IllegalStateException("cannot convert to " + type + " if length != " + expectedLength + " bytes (was " + length + ")"); + } } - } - static boolean equals(byte[] obj, Byte[] anotherArray) { - if (anotherArray == null) return false; - if (obj.length != anotherArray.length) return false; - for (int i = 0; i < obj.length; i++) { - if (anotherArray[i] == null || obj[i] != anotherArray[i]) { - return false; + /** + * Checks if given length is divisable by mod factor (with zero rest). + * This can be used to check of a byte array can be convertet to an e.g. int array which is + * multiples of 4. + * + * @param length of the byte array + * @param modFactor to divide the length + * @param errorSubject human readable message of the exact error subject + */ + static void checkModLength(int length, int modFactor, String errorSubject) { + if (length % modFactor != 0) { + throw new IllegalArgumentException("Illegal length for " + errorSubject + ". Byte array length must be multiple of " + modFactor + ", length was " + length); } } - return true; } /** - * See https://codahale.com/a-lesson-in-timing-attacks/ + * Util method related file operations. */ - static boolean constantTimeEquals(byte[] obj, byte[] anotherArray) { - if (anotherArray == null || obj.length != anotherArray.length) return false; + static final class File { + private static final int BUF_SIZE = 0x1000; // 4K - int result = 0; - for (int i = 0; i < obj.length; i++) { - result |= obj[i] ^ anotherArray[i]; + private File() { } - return result == 0; - } - /** - * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and - * 8 byte least significant bits into an byte array. - * - * @param uuid to convert to array - * @return buffer containing the 16 bytes - */ - static ByteBuffer getBytesFromUUID(UUID uuid) { - ByteBuffer bb = ByteBuffer.allocate(16); - bb.putLong(uuid.getMostSignificantBits()); - bb.putLong(uuid.getLeastSignificantBits()); - return bb; - } + /** + * Read bytes, buffered, from given input stream. Pass -1 to read the whole stream or limit with length + * parameter. + * + * @param inputStream to read from + * @param maxLengthToRead how many bytes to read from input stream; pass -1 to read whole stream + * @return all bytes from the stream (possibly limited by maxLengthToRead); output length is never longer than stream size + */ + static byte[] readFromStream(InputStream inputStream, final int maxLengthToRead) { + final boolean readWholeStream = maxLengthToRead == -1; + int remaining = maxLengthToRead; + try { + ByteArrayOutputStream out = new ByteArrayOutputStream(readWholeStream ? 32 : maxLengthToRead); + byte[] buf = new byte[0]; + while (readWholeStream || remaining > 0) { + int bufSize = Math.min(BUF_SIZE, readWholeStream ? BUF_SIZE : remaining); + if (buf.length != bufSize) { + buf = new byte[bufSize]; + } + int r = inputStream.read(buf); + if (r == -1) { + break; + } + remaining -= r; + out.write(buf, 0, r); + } + return out.toByteArray(); + } catch (Exception e) { + throw new IllegalStateException("could not read from input stream", e); + } + } - /** - * Hashcode implementation for a byte array and given byte order - * - * @param byteArray to calculate hashCode of - * @param byteOrder to calculate hashCode of - * @return hashCode - */ - static int hashCode(byte[] byteArray, ByteOrder byteOrder) { - int result = Arrays.hashCode(byteArray); - result = 31 * result + (byteOrder != null ? byteOrder.hashCode() : 0); - return result; - } + /** + * Read all bytes until length from given byte array. + * + * @param dataInput to read from + * @return all bytes from the dataInput + */ + static byte[] readFromDataInput(DataInput dataInput, int length) { + ByteArrayOutputStream out = new ByteArrayOutputStream(length); + try { + byte[] buf; + int remaining = length; + for (int i = 0; i < length; i++) { + buf = new byte[Math.min(remaining, BUF_SIZE)]; + dataInput.readFully(buf); + out.write(buf); + remaining -= buf.length; + } + return out.toByteArray(); + } catch (Exception e) { + throw new IllegalStateException("could not read from data input", e); + } + } - /** - * Checks if given length is divisable by mod factor (with zero rest). - * This can be used to check of a byte array can be convertet to an e.g. int array which is - * multiples of 4. - * - * @param length of the byte array - * @param modFactor to divide the length - * @param errorSubject human readable message of the exact error subject - */ - static void checkModLength(int length, int modFactor, String errorSubject) { - if (length % modFactor != 0) { - throw new IllegalArgumentException("Illegal length for " + errorSubject + ". Byte array length must be multiple of " + modFactor + ", length was " + length); + /** + * Reads all bytes from a file + * + * @param file the file to read + * @return byte content + */ + static byte[] readFromFile(java.io.File file) { + Validation.checkFile(file); + + try { + return Files.readAllBytes(file.toPath()); + } catch (IOException e) { + throw new IllegalStateException("could not read from file", e); + } + } + + /** + * Reads bytes from file with given offset and max length + * + * @param file to read bytes from + * @param offset to read + * @param length from offset + * @return byte array with length length + */ + static byte[] readFromFile(java.io.File file, int offset, int length) { + Validation.checkFile(file); + try (RandomAccessFile raf = new RandomAccessFile(file, "r")) { + raf.seek(offset); + return readFromDataInput(raf, length); + } catch (Exception e) { + throw new IllegalStateException("could not read from random access file", e); + } } + + } + + private Util() { } /* @@ -652,6 +709,7 @@ static void checkModLength(int length, int modFactor, String errorSubject) { * * @param */ + @SuppressWarnings("WeakerAccess") static final class Entropy { private final Map map = new HashMap<>(); private int total = 0; @@ -683,7 +741,7 @@ public double entropy() { /** * A simple iterator for the bytes class, which does not support remove */ - static final class BytesIterator implements Iterator { + static final class BytesIterator implements Iterator { private final byte[] array; /** * Index of element to be returned by subsequent call to next. @@ -700,10 +758,10 @@ public boolean hasNext() { } @Override - public Byte next() { + public java.lang.Byte next() { try { int i = cursor; - Byte next = array[i]; + java.lang.Byte next = array[i]; cursor = i + 1; return next; } catch (IndexOutOfBoundsException e) { diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index 44711af..1775301 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -26,7 +26,11 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; -import java.io.*; +import java.io.ByteArrayInputStream; +import java.io.DataInput; +import java.io.DataInputStream; +import java.io.File; +import java.io.FileOutputStream; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -413,8 +417,8 @@ public void fromList() { } private void checkList(byte[] array) { - Bytes bList = Bytes.from(Util.toList(array)); - Bytes bLinkedList = Bytes.from(new LinkedList<>(Util.toList(array))); + Bytes bList = Bytes.from(Util.Converter.toList(array)); + Bytes bLinkedList = Bytes.from(new LinkedList<>(Util.Converter.toList(array))); assertArrayEquals(array, bList.array()); assertArrayEquals(array, bLinkedList.array()); } @@ -431,10 +435,10 @@ public void fromVariousBytes() { assertArrayEquals(new byte[1], Bytes.from((byte) 0).array()); assertArrayNotEquals(new byte[0], Bytes.from((byte) 1).array()); - assertArrayEquals(Util.concat(example_bytes_one, example_bytes_one, example_bytes_one), Bytes.from(example_bytes_one, example_bytes_one, example_bytes_one).array()); - assertArrayEquals(Util.concat(example_bytes_two, example_bytes_seven), Bytes.from(example_bytes_two, example_bytes_seven).array()); - assertArrayEquals(Util.concat(example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_one, example_bytes_sixteen).array()); - assertArrayNotEquals(Util.concat(example_bytes_sixteen, example_bytes_one), Bytes.from(example_bytes_one, example_bytes_sixteen).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_one, example_bytes_one, example_bytes_one), Bytes.from(example_bytes_one, example_bytes_one, example_bytes_one).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_two, example_bytes_seven), Bytes.from(example_bytes_two, example_bytes_seven).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_one, example_bytes_sixteen).array()); + assertArrayNotEquals(Util.Byte.concat(example_bytes_sixteen, example_bytes_one), Bytes.from(example_bytes_one, example_bytes_sixteen).array()); assertArrayEquals(new byte[]{1, 2, 3}, Bytes.from((byte) 1, (byte) 2, (byte) 3).array()); assertArrayEquals(new byte[2], Bytes.from((byte) 0, (byte) 0).array()); diff --git a/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java b/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java index e6882bc..359a96c 100644 --- a/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesSharedDataConverterTest.java @@ -71,9 +71,9 @@ public void duplicate() { @Test public void inputStream() { - assertArrayEquals(example_bytes_one, Util.readFromStream(Bytes.from(example_bytes_one).inputStream(), -1)); - assertArrayEquals(example_bytes_two, Util.readFromStream(Bytes.from(example_bytes_two).inputStream(), -1)); - assertArrayEquals(example_bytes_four, Util.readFromStream(Bytes.from(example_bytes_four).inputStream(), -1)); - assertArrayEquals(example_bytes_sixteen, Util.readFromStream(Bytes.from(example_bytes_sixteen).inputStream(), -1)); + assertArrayEquals(example_bytes_one, Util.File.readFromStream(Bytes.from(example_bytes_one).inputStream(), -1)); + assertArrayEquals(example_bytes_two, Util.File.readFromStream(Bytes.from(example_bytes_two).inputStream(), -1)); + assertArrayEquals(example_bytes_four, Util.File.readFromStream(Bytes.from(example_bytes_four).inputStream(), -1)); + assertArrayEquals(example_bytes_sixteen, Util.File.readFromStream(Bytes.from(example_bytes_sixteen).inputStream(), -1)); } } diff --git a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java index 780929b..dd6feaf 100644 --- a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java @@ -41,28 +41,28 @@ public class BytesTransformTest extends ABytesTest { public void append() { assertArrayEquals(new byte[0], Bytes.from(new byte[0]).append(new byte[0]).array()); assertArrayEquals(new byte[1], Bytes.from(new byte[0]).append(new byte[1]).array()); - assertArrayEquals(Util.concat(example_bytes_seven, example_bytes_one), Bytes.from(example_bytes_seven).append(example_bytes_one).array()); - assertArrayEquals(Util.concat(example_bytes_seven, example_bytes_two), Bytes.from(example_bytes_seven).append(example_bytes_two).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_seven, example_bytes_one), Bytes.from(example_bytes_seven).append(example_bytes_one).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_seven, example_bytes_two), Bytes.from(example_bytes_seven).append(example_bytes_two).array()); - assertArrayEquals(Util.concat(example_bytes_eight, example_bytes_sixteen), Bytes.from(example_bytes_eight).append(Bytes.from(example_bytes_sixteen)).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_eight, example_bytes_sixteen), Bytes.from(example_bytes_eight).append(Bytes.from(example_bytes_sixteen)).array()); } @Test public void appendMultipleByteArrays() { assertArrayEquals(new byte[0], Bytes.from(new byte[0]).append(new byte[0], new byte[0]).array()); assertArrayEquals(new byte[]{0x0, 0x01, 0x02, 0x03}, Bytes.from(new byte[]{0x0}).append(new byte[]{0x1}, new byte[]{0x2}, new byte[]{0x3}).array()); - assertArrayEquals(Util.concat(example_bytes_seven, example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_seven).append(example_bytes_one, example_bytes_sixteen).array()); - assertArrayEquals(Util.concat(example_bytes_sixteen, example_bytes_sixteen, example_bytes_sixteen), Bytes.from(example_bytes_sixteen).append(example_bytes_sixteen, example_bytes_sixteen).array()); - assertArrayEquals(Util.concat(example_bytes_two, example_bytes_seven, example_bytes_twentyfour, example_bytes_eight), Bytes.from(example_bytes_two).append(example_bytes_seven, example_bytes_twentyfour, example_bytes_eight).array()); - assertArrayEquals(Util.concat(example_bytes_two, example_bytes_seven, example_bytes_twentyfour, example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_two).append(example_bytes_seven, example_bytes_twentyfour).append(example_bytes_one, example_bytes_sixteen).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_seven, example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_seven).append(example_bytes_one, example_bytes_sixteen).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_sixteen, example_bytes_sixteen, example_bytes_sixteen), Bytes.from(example_bytes_sixteen).append(example_bytes_sixteen, example_bytes_sixteen).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_two, example_bytes_seven, example_bytes_twentyfour, example_bytes_eight), Bytes.from(example_bytes_two).append(example_bytes_seven, example_bytes_twentyfour, example_bytes_eight).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_two, example_bytes_seven, example_bytes_twentyfour, example_bytes_one, example_bytes_sixteen), Bytes.from(example_bytes_two).append(example_bytes_seven, example_bytes_twentyfour).append(example_bytes_one, example_bytes_sixteen).array()); } @Test public void appendNullSafe() { assertArrayEquals(new byte[0], Bytes.from(new byte[0]).appendNullSafe(new byte[0]).array()); assertArrayEquals(new byte[1], Bytes.from(new byte[0]).appendNullSafe(new byte[1]).array()); - assertArrayEquals(Util.concat(example_bytes_seven, example_bytes_one), Bytes.from(example_bytes_seven).appendNullSafe(example_bytes_one).array()); - assertArrayEquals(Util.concat(example_bytes_seven, example_bytes_two), Bytes.from(example_bytes_seven).appendNullSafe(example_bytes_two).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_seven, example_bytes_one), Bytes.from(example_bytes_seven).appendNullSafe(example_bytes_one).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_seven, example_bytes_two), Bytes.from(example_bytes_seven).appendNullSafe(example_bytes_two).array()); assertArrayEquals(new byte[0], Bytes.from(new byte[0]).appendNullSafe(null).array()); assertArrayEquals(new byte[1], Bytes.from(new byte[1]).appendNullSafe(null).array()); assertArrayEquals(example_bytes_seven, Bytes.from(example_bytes_seven).appendNullSafe(null).array()); @@ -70,11 +70,11 @@ public void appendNullSafe() { @Test public void appendPrimitives() { - assertArrayEquals(Util.concat(example_bytes_eight, new byte[]{1}), Bytes.from(example_bytes_eight).append((byte) 1).array()); - assertArrayEquals(Util.concat(example_bytes_eight, ByteBuffer.allocate(2).putChar((char) 1423).array()), Bytes.from(example_bytes_eight).append((char) 1423).array()); - assertArrayEquals(Util.concat(example_bytes_eight, ByteBuffer.allocate(2).putShort((short) 4129).array()), Bytes.from(example_bytes_eight).append((short) 4129).array()); - assertArrayEquals(Util.concat(example_bytes_eight, ByteBuffer.allocate(4).putInt(362173671).array()), Bytes.from(example_bytes_eight).append(362173671).array()); - assertArrayEquals(Util.concat(example_bytes_eight, ByteBuffer.allocate(8).putLong(0x6762173671L).array()), Bytes.from(example_bytes_eight).append(0x6762173671L).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_eight, new byte[]{1}), Bytes.from(example_bytes_eight).append((byte) 1).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_eight, ByteBuffer.allocate(2).putChar((char) 1423).array()), Bytes.from(example_bytes_eight).append((char) 1423).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_eight, ByteBuffer.allocate(2).putShort((short) 4129).array()), Bytes.from(example_bytes_eight).append((short) 4129).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_eight, ByteBuffer.allocate(4).putInt(362173671).array()), Bytes.from(example_bytes_eight).append(362173671).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_eight, ByteBuffer.allocate(8).putLong(0x6762173671L).array()), Bytes.from(example_bytes_eight).append(0x6762173671L).array()); } @Test @@ -99,7 +99,7 @@ public void appendMulti() { byte[] oldByteArray = b.copy().array(); Bytes newByte = Bytes.random(i % 16 + 1); b = b.append(newByte); - assertArrayEquals(Util.concat(oldByteArray, newByte.copy().array()), b.array()); + assertArrayEquals(Util.Byte.concat(oldByteArray, newByte.copy().array()), b.array()); } } @@ -108,9 +108,9 @@ public void resizeGrowLsb() { assertArrayEquals(new byte[8], Bytes.from(new byte[0]).resize(8).array()); assertArrayEquals(example_bytes_one, Bytes.from(example_bytes_one).resize(1).array()); assertArrayEquals(example_bytes_one, Bytes.from(example_bytes_one).resize(1).array()); - assertArrayEquals(Util.concat(new byte[7], example_bytes_one), Bytes.from(example_bytes_one).resize(8).array()); - assertArrayEquals(Util.concat(new byte[1], example_bytes_seven), Bytes.from(example_bytes_seven).resize(8).array()); - assertArrayEquals(Util.concat(new byte[1], example_bytes_sixteen), Bytes.from(example_bytes_sixteen).resize(17).array()); + assertArrayEquals(Util.Byte.concat(new byte[7], example_bytes_one), Bytes.from(example_bytes_one).resize(8).array()); + assertArrayEquals(Util.Byte.concat(new byte[1], example_bytes_seven), Bytes.from(example_bytes_seven).resize(8).array()); + assertArrayEquals(Util.Byte.concat(new byte[1], example_bytes_sixteen), Bytes.from(example_bytes_sixteen).resize(17).array()); } @Test @@ -118,9 +118,9 @@ public void resizeGrowMsb() { assertArrayEquals(new byte[8], Bytes.from(new byte[0]).resize(8, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); assertArrayEquals(example_bytes_one, Bytes.from(example_bytes_one).resize(1, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); assertArrayEquals(example_bytes_one, Bytes.from(example_bytes_one).resize(1, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); - assertArrayEquals(Util.concat(example_bytes_one, new byte[7]), Bytes.from(example_bytes_one).resize(8, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); - assertArrayEquals(Util.concat(example_bytes_seven, new byte[1]), Bytes.from(example_bytes_seven).resize(8, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); - assertArrayEquals(Util.concat(example_bytes_sixteen, new byte[1]), Bytes.from(example_bytes_sixteen).resize(17, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_one, new byte[7]), Bytes.from(example_bytes_one).resize(8, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_seven, new byte[1]), Bytes.from(example_bytes_seven).resize(8, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); + assertArrayEquals(Util.Byte.concat(example_bytes_sixteen, new byte[1]), Bytes.from(example_bytes_sixteen).resize(17, BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_ZERO_INDEX).array()); } @Test diff --git a/src/test/java/at/favre/lib/bytes/UtilTest.java b/src/test/java/at/favre/lib/bytes/UtilTest.java index ba0d15a..6758f5e 100644 --- a/src/test/java/at/favre/lib/bytes/UtilTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilTest.java @@ -55,36 +55,36 @@ public void testIndexOf() { } private int indexOf(byte[] empty, byte b) { - return Util.indexOf(empty, new byte[]{b}, 0, empty.length); + return Util.Byte.indexOf(empty, new byte[]{b}, 0, empty.length); } @Test public void testIndexOf_arrayTarget() { - assertEquals(-1, Util.indexOf(EMPTY, EMPTY, 0, EMPTY.length)); - assertEquals(-1, Util.indexOf(ARRAY234, EMPTY, 0, ARRAY234.length)); - assertEquals(-1, Util.indexOf(EMPTY, ARRAY234, 0, EMPTY.length)); - assertEquals(-1, Util.indexOf(ARRAY234, ARRAY1, 0, ARRAY234.length)); - assertEquals(-1, Util.indexOf(ARRAY1, ARRAY234, 0, ARRAY1.length)); - assertEquals(0, Util.indexOf(ARRAY1, ARRAY1, 0, ARRAY1.length)); - assertEquals(0, Util.indexOf(ARRAY234, ARRAY234, 0, ARRAY234.length)); - assertEquals(0, Util.indexOf( + assertEquals(-1, Util.Byte.indexOf(EMPTY, EMPTY, 0, EMPTY.length)); + assertEquals(-1, Util.Byte.indexOf(ARRAY234, EMPTY, 0, ARRAY234.length)); + assertEquals(-1, Util.Byte.indexOf(EMPTY, ARRAY234, 0, EMPTY.length)); + assertEquals(-1, Util.Byte.indexOf(ARRAY234, ARRAY1, 0, ARRAY234.length)); + assertEquals(-1, Util.Byte.indexOf(ARRAY1, ARRAY234, 0, ARRAY1.length)); + assertEquals(0, Util.Byte.indexOf(ARRAY1, ARRAY1, 0, ARRAY1.length)); + assertEquals(0, Util.Byte.indexOf(ARRAY234, ARRAY234, 0, ARRAY234.length)); + assertEquals(0, Util.Byte.indexOf( ARRAY234, new byte[]{(byte) 2, (byte) 3}, 0, 2)); - assertEquals(1, Util.indexOf( + assertEquals(1, Util.Byte.indexOf( ARRAY234, new byte[]{(byte) 3, (byte) 4}, 0, 2)); - assertEquals(1, Util.indexOf(ARRAY234, new byte[]{(byte) 3}, 0, ARRAY234.length)); - assertEquals(2, Util.indexOf(ARRAY234, new byte[]{(byte) 4}, 0, ARRAY234.length)); - assertEquals(1, Util.indexOf(new byte[]{(byte) 2, (byte) 3, (byte) 3, (byte) 3, (byte) 3}, new byte[]{(byte) 3}, 0, 5)); - assertEquals(2, Util.indexOf( + assertEquals(1, Util.Byte.indexOf(ARRAY234, new byte[]{(byte) 3}, 0, ARRAY234.length)); + assertEquals(2, Util.Byte.indexOf(ARRAY234, new byte[]{(byte) 4}, 0, ARRAY234.length)); + assertEquals(1, Util.Byte.indexOf(new byte[]{(byte) 2, (byte) 3, (byte) 3, (byte) 3, (byte) 3}, new byte[]{(byte) 3}, 0, 5)); + assertEquals(2, Util.Byte.indexOf( new byte[]{(byte) 2, (byte) 3, (byte) 2, (byte) 3, (byte) 4, (byte) 2, (byte) 3}, new byte[]{(byte) 2, (byte) 3, (byte) 4} , 0, 7)); - assertEquals(1, Util.indexOf( + assertEquals(1, Util.Byte.indexOf( new byte[]{(byte) 2, (byte) 2, (byte) 3, (byte) 4, (byte) 2, (byte) 3, (byte) 4}, new byte[]{(byte) 2, (byte) 3, (byte) 4} , 0, 7)); - assertEquals(-1, Util.indexOf( + assertEquals(-1, Util.Byte.indexOf( new byte[]{(byte) 4, (byte) 3, (byte) 2}, new byte[]{(byte) 2, (byte) 3, (byte) 4} , 0, 2)); @@ -106,47 +106,47 @@ public void testLastIndexOf() { } private int lastIndexOf(byte[] empty, byte b) { - return Util.lastIndexOf(empty, b, 0, empty.length); + return Util.Byte.lastIndexOf(empty, b, 0, empty.length); } @Test public void testConcat() { - assertTrue(Arrays.equals(EMPTY, Util.concat())); - assertTrue(Arrays.equals(EMPTY, Util.concat(EMPTY))); - assertTrue(Arrays.equals(EMPTY, Util.concat(EMPTY, EMPTY, EMPTY))); - assertTrue(Arrays.equals(ARRAY1, Util.concat(ARRAY1))); - assertNotSame(ARRAY1, Util.concat(ARRAY1)); - assertTrue(Arrays.equals(ARRAY1, Util.concat(EMPTY, ARRAY1, EMPTY))); + assertTrue(Arrays.equals(EMPTY, Util.Byte.concat())); + assertTrue(Arrays.equals(EMPTY, Util.Byte.concat(EMPTY))); + assertTrue(Arrays.equals(EMPTY, Util.Byte.concat(EMPTY, EMPTY, EMPTY))); + assertTrue(Arrays.equals(ARRAY1, Util.Byte.concat(ARRAY1))); + assertNotSame(ARRAY1, Util.Byte.concat(ARRAY1)); + assertTrue(Arrays.equals(ARRAY1, Util.Byte.concat(EMPTY, ARRAY1, EMPTY))); assertTrue(Arrays.equals( new byte[]{(byte) 1, (byte) 1, (byte) 1}, - Util.concat(ARRAY1, ARRAY1, ARRAY1))); + Util.Byte.concat(ARRAY1, ARRAY1, ARRAY1))); assertTrue(Arrays.equals( new byte[]{(byte) 1, (byte) 2, (byte) 3, (byte) 4}, - Util.concat(ARRAY1, ARRAY234))); + Util.Byte.concat(ARRAY1, ARRAY234))); } @Test public void testToArray() { // need explicit type parameter to avoid javac warning!? List none = Arrays.asList(); - assertTrue(Arrays.equals(EMPTY, Util.toArray(none))); + assertTrue(Arrays.equals(EMPTY, Util.Converter.toArray(none))); List one = Arrays.asList((byte) 1); - assertTrue(Arrays.equals(ARRAY1, Util.toArray(one))); + assertTrue(Arrays.equals(ARRAY1, Util.Converter.toArray(one))); byte[] array = {(byte) 0, (byte) 1, (byte) 0x55}; List three = Arrays.asList((byte) 0, (byte) 1, (byte) 0x55); - assertTrue(Arrays.equals(array, Util.toArray(three))); + assertTrue(Arrays.equals(array, Util.Converter.toArray(three))); - assertTrue(Arrays.equals(array, Util.toArray(Util.toList(array)))); + assertTrue(Arrays.equals(array, Util.Converter.toArray(Util.Converter.toList(array)))); } @Test public void testToArray_withNull() { List list = Arrays.asList((byte) 0, (byte) 1, null); try { - Util.toArray(list); + Util.Converter.toArray(list); fail(); } catch (NullPointerException expected) { } @@ -157,14 +157,14 @@ public void testToArray_withConversion() { byte[] array = {(byte) 0, (byte) 1, (byte) 2}; List bytes = Arrays.asList((byte) 0, (byte) 1, (byte) 2); - assertTrue(Arrays.equals(array, Util.toArray(bytes))); + assertTrue(Arrays.equals(array, Util.Converter.toArray(bytes))); } @Test public void testAsList_toArray_roundTrip() { byte[] array = {(byte) 0, (byte) 1, (byte) 2}; - List list = Util.toList(array); - byte[] newArray = Util.toArray(list); + List list = Util.Converter.toList(array); + byte[] newArray = Util.Converter.toArray(list); // Make sure it returned a copy list.set(0, (byte) 4); @@ -178,21 +178,21 @@ public void testAsList_toArray_roundTrip() { // This test stems from a real bug found by andrewk public void testAsList_subList_toArray_roundTrip() { byte[] array = {(byte) 0, (byte) 1, (byte) 2, (byte) 3}; - List list = Util.toList(array); + List list = Util.Converter.toList(array); assertTrue(Arrays.equals(new byte[]{(byte) 1, (byte) 2}, - Util.toArray(list.subList(1, 3)))); + Util.Converter.toArray(list.subList(1, 3)))); assertTrue(Arrays.equals(new byte[]{}, - Util.toArray(list.subList(2, 2)))); + Util.Converter.toArray(list.subList(2, 2)))); } @Test(expected = IllegalStateException.class) public void readFromStream() { - Util.readFromStream(null, -1); + Util.File.readFromStream(null, -1); } @Test public void concatVararg() { - assertArrayEquals(new byte[]{1}, Util.concatVararg((byte) 1, null)); + assertArrayEquals(new byte[]{1}, Util.Byte.concatVararg((byte) 1, null)); } @Test @@ -216,34 +216,34 @@ public void testReverseIndexed() { private static void testReverse(byte[] input, byte[] expectedOutput) { input = Arrays.copyOf(input, input.length); - Util.reverse(input, 0, input.length); + Util.Byte.reverse(input, 0, input.length); assertTrue(Arrays.equals(expectedOutput, input)); } private static void testReverse(byte[] input, int fromIndex, int toIndex, byte[] expectedOutput) { input = Arrays.copyOf(input, input.length); - Util.reverse(input, fromIndex, toIndex); + Util.Byte.reverse(input, fromIndex, toIndex); assertTrue(Arrays.equals(expectedOutput, input)); } @Test public void testLeftShift() { byte[] test = new byte[]{0, 0, 1, 0}; - assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.shiftLeft(new byte[]{0, 0, -128, 0}, 1)); - assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.shiftLeft(new byte[]{0, 0, 64, 0}, 2)); - assertArrayEquals(new byte[]{1, 1, 1, 0}, Util.shiftLeft(new byte[]{-128, -128, -128, -128}, 1)); - assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.shiftLeft(Bytes.from(test).array(), 1)); - assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.shiftLeft(Bytes.from(test).array(), 2)); - assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.shiftLeft(Bytes.from(test).array(), 3)); - assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.shiftLeft(Bytes.from(test).array(), 8)); - assertArrayEquals(new byte[]{0, 2, 0, 0}, Util.shiftLeft(Bytes.from(test).array(), 9)); - assertArrayEquals(new byte[]{1, 0, 0, 0}, Util.shiftLeft(Bytes.from(test).array(), 16)); - assertArrayEquals(new byte[]{2, 0, 0, 0}, Util.shiftLeft(Bytes.from(test).array(), 17)); - assertArrayEquals(new byte[]{-128, 0, 0, 0}, Util.shiftLeft(Bytes.from(test).array(), 23)); - assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.shiftLeft(Bytes.from(test).array(), 24)); - assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.shiftLeft(Bytes.from(test).array(), 24)); - - assertSame(test, Util.shiftLeft(test, 1)); + assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(new byte[]{0, 0, -128, 0}, 1)); + assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(new byte[]{0, 0, 64, 0}, 2)); + assertArrayEquals(new byte[]{1, 1, 1, 0}, Util.Byte.shiftLeft(new byte[]{-128, -128, -128, -128}, 1)); + assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 1)); + assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 2)); + assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 3)); + assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 8)); + assertArrayEquals(new byte[]{0, 2, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 9)); + assertArrayEquals(new byte[]{1, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 16)); + assertArrayEquals(new byte[]{2, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 17)); + assertArrayEquals(new byte[]{-128, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 23)); + assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 24)); + assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 24)); + + assertSame(test, Util.Byte.shiftLeft(test, 1)); } @Test @@ -254,7 +254,7 @@ public void testLeftShiftAgainstRefImpl() { Bytes rnd = Bytes.random(4 + new Random().nextInt(14)); byte[] expected = Bytes.from(new BigInteger(rnd.array()).shiftLeft(shift).toByteArray()).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); - byte[] actual = Bytes.from(Util.shiftLeft(rnd.copy().array(), shift)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); + byte[] actual = Bytes.from(Util.Byte.shiftLeft(rnd.copy().array(), shift)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); System.out.println("Original \t" + rnd.encodeBinary() + " << " + shift); System.out.println("Expected \t" + Bytes.wrap(expected).encodeBinary()); @@ -269,18 +269,18 @@ public void testLeftShiftAgainstRefImpl() { public void testRightShift() { byte[] test = new byte[]{0, 0, 16, 0}; assertEquals(0b01111110, 0b11111101 >>> 1); - assertArrayEquals(new byte[]{0b00101101, (byte) 0b01111110}, Util.shiftRight(new byte[]{0b01011010, (byte) 0b11111101}, 1)); - assertArrayEquals(new byte[]{0, -128, -128, -128}, Util.shiftRight(new byte[]{1, 1, 1, 1}, 1)); - assertArrayEquals(new byte[]{0, -128, 66, 0}, Util.shiftRight(new byte[]{2, 1, 8, 2}, 2)); + assertArrayEquals(new byte[]{0b00101101, (byte) 0b01111110}, Util.Byte.shiftRight(new byte[]{0b01011010, (byte) 0b11111101}, 1)); + assertArrayEquals(new byte[]{0, -128, -128, -128}, Util.Byte.shiftRight(new byte[]{1, 1, 1, 1}, 1)); + assertArrayEquals(new byte[]{0, -128, 66, 0}, Util.Byte.shiftRight(new byte[]{2, 1, 8, 2}, 2)); assertArrayEquals(new byte[]{0, -128, 66, 0}, new BigInteger(new byte[]{2, 1, 8, 2}).shiftRight(2).toByteArray()); - assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.shiftRight(Bytes.from(test).array(), 5)); - assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.shiftRight(new byte[]{0, 0, 1, 0}, 1)); - assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.shiftRight(Bytes.from(test).array(), 1)); - assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.shiftRight(Bytes.from(test).array(), 2)); - assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.shiftRight(Bytes.from(test).array(), 3)); - assertArrayEquals(new byte[]{0, 0, 1, 0}, Util.shiftRight(Bytes.from(test).array(), 4)); - - assertSame(test, Util.shiftRight(test, 1)); + assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.Byte.shiftRight(Bytes.from(test).array(), 5)); + assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.Byte.shiftRight(new byte[]{0, 0, 1, 0}, 1)); + assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 1)); + assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 2)); + assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 3)); + assertArrayEquals(new byte[]{0, 0, 1, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 4)); + + assertSame(test, Util.Byte.shiftRight(test, 1)); } @Test @@ -290,7 +290,7 @@ public void testRightShiftAgainstRefImpl() { Bytes rnd = Bytes.random(4 + new Random().nextInt(12)); if (!rnd.bitAt(rnd.lengthBit() - 1)) { //only unsigned byte[] expected = Bytes.from(new BigInteger(rnd.array()).shiftRight(shift).toByteArray()).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); - byte[] actual = Bytes.from(Util.shiftRight(rnd.copy().array(), shift)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); + byte[] actual = Bytes.from(Util.Byte.shiftRight(rnd.copy().array(), shift)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); // System.out.println("Original \t" + rnd.encodeBinary() + " >> " + shift); // System.out.println("Expected \t" + Bytes.wrap(expected).encodeBinary()); @@ -322,7 +322,7 @@ private void checkCharArrayToByteArray(char[] subject, Charset charset) { for (int lenI = 1; lenI < subject.length + 1; lenI++) { for (int offsetI = 0; offsetI < subject.length; offsetI++) { if (offsetI + lenI > subject.length) break; - byte[] bytes = Util.charToByteArray(subject, charset, offsetI, lenI); + byte[] bytes = Util.Converter.charToByteArray(subject, charset, offsetI, lenI); assertEquals(Bytes.wrap(bytes), Bytes.wrap(new String(subject).substring(offsetI, offsetI + lenI).getBytes(charset))); } } @@ -330,21 +330,21 @@ private void checkCharArrayToByteArray(char[] subject, Charset charset) { } private void compareArrayToByteArrayWithoutOffset(char[] subject, Charset charset) { - assertArrayEquals(Util.charToByteArray(subject, charset, 0, subject.length), new String(subject).getBytes(charset)); + assertArrayEquals(Util.Converter.charToByteArray(subject, charset, 0, subject.length), new String(subject).getBytes(charset)); } @Test(expected = IllegalArgumentException.class) public void testCharToByteArrayIllegalOffset() { - Util.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, -1, 1); + Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, -1, 1); } @Test(expected = IllegalArgumentException.class) public void testCharToByteArrayIllegalLength() { - Util.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 0, -1); + Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 0, -1); } @Test(expected = IllegalArgumentException.class) public void testCharToByteArrayIllegalOffsetPlusLength() { - Util.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 4, 3); + Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 4, 3); } } From 8f1f21e8aab94c85ad62979d2ff2b2ab562fce91 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 7 Jan 2019 18:33:14 +0100 Subject: [PATCH 080/181] Refactor Util tests and add test for toIntArray() --- .../java/at/favre/lib/bytes/AUtilTest.java | 7 + .../{UtilTest.java => UtilByteTest.java} | 137 ++--------------- .../at/favre/lib/bytes/UtilConverterTest.java | 140 ++++++++++++++++++ 3 files changed, 159 insertions(+), 125 deletions(-) create mode 100644 src/test/java/at/favre/lib/bytes/AUtilTest.java rename src/test/java/at/favre/lib/bytes/{UtilTest.java => UtilByteTest.java} (66%) create mode 100644 src/test/java/at/favre/lib/bytes/UtilConverterTest.java diff --git a/src/test/java/at/favre/lib/bytes/AUtilTest.java b/src/test/java/at/favre/lib/bytes/AUtilTest.java new file mode 100644 index 0000000..ee5112e --- /dev/null +++ b/src/test/java/at/favre/lib/bytes/AUtilTest.java @@ -0,0 +1,7 @@ +package at.favre.lib.bytes; + +abstract class AUtilTest { + static final byte[] EMPTY = {}; + static final byte[] ARRAY1 = {(byte) 1}; + static final byte[] ARRAY234 = {(byte) 2, (byte) 3, (byte) 4}; +} diff --git a/src/test/java/at/favre/lib/bytes/UtilTest.java b/src/test/java/at/favre/lib/bytes/UtilByteTest.java similarity index 66% rename from src/test/java/at/favre/lib/bytes/UtilTest.java rename to src/test/java/at/favre/lib/bytes/UtilByteTest.java index 6758f5e..3892269 100644 --- a/src/test/java/at/favre/lib/bytes/UtilTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilByteTest.java @@ -25,19 +25,12 @@ import org.junit.Test; import java.math.BigInteger; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.util.Arrays; -import java.util.List; import java.util.Random; -import static junit.framework.TestCase.assertTrue; import static org.junit.Assert.*; -public class UtilTest { - private static final byte[] EMPTY = {}; - private static final byte[] ARRAY1 = {(byte) 1}; - private static final byte[] ARRAY234 = {(byte) 2, (byte) 3, (byte) 4}; +public class UtilByteTest extends AUtilTest { @Test public void testIndexOf() { @@ -111,78 +104,18 @@ private int lastIndexOf(byte[] empty, byte b) { @Test public void testConcat() { - assertTrue(Arrays.equals(EMPTY, Util.Byte.concat())); - assertTrue(Arrays.equals(EMPTY, Util.Byte.concat(EMPTY))); - assertTrue(Arrays.equals(EMPTY, Util.Byte.concat(EMPTY, EMPTY, EMPTY))); - assertTrue(Arrays.equals(ARRAY1, Util.Byte.concat(ARRAY1))); + assertArrayEquals(EMPTY, Util.Byte.concat()); + assertArrayEquals(EMPTY, Util.Byte.concat(EMPTY)); + assertArrayEquals(EMPTY, Util.Byte.concat(EMPTY, EMPTY, EMPTY)); + assertArrayEquals(ARRAY1, Util.Byte.concat(ARRAY1)); assertNotSame(ARRAY1, Util.Byte.concat(ARRAY1)); - assertTrue(Arrays.equals(ARRAY1, Util.Byte.concat(EMPTY, ARRAY1, EMPTY))); - assertTrue(Arrays.equals( + assertArrayEquals(ARRAY1, Util.Byte.concat(EMPTY, ARRAY1, EMPTY)); + assertArrayEquals( new byte[]{(byte) 1, (byte) 1, (byte) 1}, - Util.Byte.concat(ARRAY1, ARRAY1, ARRAY1))); - assertTrue(Arrays.equals( + Util.Byte.concat(ARRAY1, ARRAY1, ARRAY1)); + assertArrayEquals( new byte[]{(byte) 1, (byte) 2, (byte) 3, (byte) 4}, - Util.Byte.concat(ARRAY1, ARRAY234))); - } - - @Test - public void testToArray() { - // need explicit type parameter to avoid javac warning!? - List none = Arrays.asList(); - assertTrue(Arrays.equals(EMPTY, Util.Converter.toArray(none))); - - List one = Arrays.asList((byte) 1); - assertTrue(Arrays.equals(ARRAY1, Util.Converter.toArray(one))); - - byte[] array = {(byte) 0, (byte) 1, (byte) 0x55}; - - List three = Arrays.asList((byte) 0, (byte) 1, (byte) 0x55); - assertTrue(Arrays.equals(array, Util.Converter.toArray(three))); - - assertTrue(Arrays.equals(array, Util.Converter.toArray(Util.Converter.toList(array)))); - } - - @Test - public void testToArray_withNull() { - List list = Arrays.asList((byte) 0, (byte) 1, null); - try { - Util.Converter.toArray(list); - fail(); - } catch (NullPointerException expected) { - } - } - - @Test - public void testToArray_withConversion() { - byte[] array = {(byte) 0, (byte) 1, (byte) 2}; - - List bytes = Arrays.asList((byte) 0, (byte) 1, (byte) 2); - assertTrue(Arrays.equals(array, Util.Converter.toArray(bytes))); - } - - @Test - public void testAsList_toArray_roundTrip() { - byte[] array = {(byte) 0, (byte) 1, (byte) 2}; - List list = Util.Converter.toList(array); - byte[] newArray = Util.Converter.toArray(list); - - // Make sure it returned a copy - list.set(0, (byte) 4); - assertTrue(Arrays.equals( - new byte[]{(byte) 0, (byte) 1, (byte) 2}, newArray)); - newArray[1] = (byte) 5; - assertEquals((byte) 1, (byte) list.get(1)); - } - - @Test - // This test stems from a real bug found by andrewk - public void testAsList_subList_toArray_roundTrip() { - byte[] array = {(byte) 0, (byte) 1, (byte) 2, (byte) 3}; - List list = Util.Converter.toList(array); - assertTrue(Arrays.equals(new byte[]{(byte) 1, (byte) 2}, - Util.Converter.toArray(list.subList(1, 3)))); - assertTrue(Arrays.equals(new byte[]{}, - Util.Converter.toArray(list.subList(2, 2)))); + Util.Byte.concat(ARRAY1, ARRAY234)); } @Test(expected = IllegalStateException.class) @@ -217,13 +150,13 @@ public void testReverseIndexed() { private static void testReverse(byte[] input, byte[] expectedOutput) { input = Arrays.copyOf(input, input.length); Util.Byte.reverse(input, 0, input.length); - assertTrue(Arrays.equals(expectedOutput, input)); + assertArrayEquals(expectedOutput, input); } private static void testReverse(byte[] input, int fromIndex, int toIndex, byte[] expectedOutput) { input = Arrays.copyOf(input, input.length); Util.Byte.reverse(input, fromIndex, toIndex); - assertTrue(Arrays.equals(expectedOutput, input)); + assertArrayEquals(expectedOutput, input); } @Test @@ -301,50 +234,4 @@ public void testRightShiftAgainstRefImpl() { } } } - - @Test - public void testCharToByteArray() { - Charset[] charsets = new Charset[]{StandardCharsets.UTF_8, StandardCharsets.US_ASCII, StandardCharsets.UTF_16}; - for (Charset charset : charsets) { - checkCharArrayToByteArray("".toCharArray(), charset); - checkCharArrayToByteArray("A".toCharArray(), charset); - checkCharArrayToByteArray("12".toCharArray(), charset); - checkCharArrayToByteArray("XYZ".toCharArray(), charset); - checkCharArrayToByteArray("abcdefg".toCharArray(), charset); - checkCharArrayToByteArray("71oh872gdl2dhp81g".toCharArray(), charset); - - } - - checkCharArrayToByteArray("யe2ாமறிந்தиют убSîne klâwenasd1".toCharArray(), StandardCharsets.UTF_8); - } - - private void checkCharArrayToByteArray(char[] subject, Charset charset) { - for (int lenI = 1; lenI < subject.length + 1; lenI++) { - for (int offsetI = 0; offsetI < subject.length; offsetI++) { - if (offsetI + lenI > subject.length) break; - byte[] bytes = Util.Converter.charToByteArray(subject, charset, offsetI, lenI); - assertEquals(Bytes.wrap(bytes), Bytes.wrap(new String(subject).substring(offsetI, offsetI + lenI).getBytes(charset))); - } - } - compareArrayToByteArrayWithoutOffset(subject, charset); - } - - private void compareArrayToByteArrayWithoutOffset(char[] subject, Charset charset) { - assertArrayEquals(Util.Converter.charToByteArray(subject, charset, 0, subject.length), new String(subject).getBytes(charset)); - } - - @Test(expected = IllegalArgumentException.class) - public void testCharToByteArrayIllegalOffset() { - Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, -1, 1); - } - - @Test(expected = IllegalArgumentException.class) - public void testCharToByteArrayIllegalLength() { - Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 0, -1); - } - - @Test(expected = IllegalArgumentException.class) - public void testCharToByteArrayIllegalOffsetPlusLength() { - Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 4, 3); - } } diff --git a/src/test/java/at/favre/lib/bytes/UtilConverterTest.java b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java new file mode 100644 index 0000000..9088783 --- /dev/null +++ b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java @@ -0,0 +1,140 @@ +package at.favre.lib.bytes; + +import org.junit.Test; + +import java.nio.ByteOrder; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +import static org.junit.Assert.*; + +public class UtilConverterTest extends AUtilTest { + + @Test + public void testToArray() { + List none = Collections.emptyList(); + assertArrayEquals(EMPTY, Util.Converter.toArray(none)); + + List one = Collections.singletonList((byte) 1); + assertArrayEquals(ARRAY1, Util.Converter.toArray(one)); + + byte[] array = {(byte) 0, (byte) 1, (byte) 0x55}; + + List three = Arrays.asList((byte) 0, (byte) 1, (byte) 0x55); + assertArrayEquals(array, Util.Converter.toArray(three)); + + assertArrayEquals(array, Util.Converter.toArray(Util.Converter.toList(array))); + } + + @Test + public void testToArray_withNull() { + List list = Arrays.asList((byte) 0, (byte) 1, null); + try { + Util.Converter.toArray(list); + fail(); + } catch (NullPointerException expected) { + } + } + + @Test + public void testToArray_withConversion() { + byte[] array = {(byte) 0, (byte) 1, (byte) 2}; + + List bytes = Arrays.asList((byte) 0, (byte) 1, (byte) 2); + assertArrayEquals(array, Util.Converter.toArray(bytes)); + } + + @Test + public void testAsList_toArray_roundTrip() { + byte[] array = {(byte) 0, (byte) 1, (byte) 2}; + List list = Util.Converter.toList(array); + byte[] newArray = Util.Converter.toArray(list); + + // Make sure it returned a copy + list.set(0, (byte) 4); + assertArrayEquals( + new byte[]{(byte) 0, (byte) 1, (byte) 2}, newArray); + newArray[1] = (byte) 5; + assertEquals((byte) 1, (byte) list.get(1)); + } + + @Test + // This test stems from a real bug found by andrewk + public void testAsList_subList_toArray_roundTrip() { + byte[] array = {(byte) 0, (byte) 1, (byte) 2, (byte) 3}; + List list = Util.Converter.toList(array); + assertArrayEquals(new byte[]{(byte) 1, (byte) 2}, + Util.Converter.toArray(list.subList(1, 3))); + assertArrayEquals(new byte[]{}, + Util.Converter.toArray(list.subList(2, 2))); + } + + @Test + public void testCharToByteArray() { + Charset[] charsets = new Charset[]{StandardCharsets.UTF_8, StandardCharsets.US_ASCII, StandardCharsets.UTF_16}; + for (Charset charset : charsets) { + checkCharArrayToByteArray("".toCharArray(), charset); + checkCharArrayToByteArray("A".toCharArray(), charset); + checkCharArrayToByteArray("12".toCharArray(), charset); + checkCharArrayToByteArray("XYZ".toCharArray(), charset); + checkCharArrayToByteArray("abcdefg".toCharArray(), charset); + checkCharArrayToByteArray("71oh872gdl2dhp81g".toCharArray(), charset); + + } + + checkCharArrayToByteArray("யe2ாமறிந்தиют убSîne klâwenasd1".toCharArray(), StandardCharsets.UTF_8); + } + + private void checkCharArrayToByteArray(char[] subject, Charset charset) { + for (int lenI = 1; lenI < subject.length + 1; lenI++) { + for (int offsetI = 0; offsetI < subject.length; offsetI++) { + if (offsetI + lenI > subject.length) break; + byte[] bytes = Util.Converter.charToByteArray(subject, charset, offsetI, lenI); + assertEquals(Bytes.wrap(bytes), Bytes.wrap(new String(subject).substring(offsetI, offsetI + lenI).getBytes(charset))); + } + } + compareArrayToByteArrayWithoutOffset(subject, charset); + } + + private void compareArrayToByteArrayWithoutOffset(char[] subject, Charset charset) { + assertArrayEquals(Util.Converter.charToByteArray(subject, charset, 0, subject.length), new String(subject).getBytes(charset)); + } + + @Test(expected = IllegalArgumentException.class) + public void testCharToByteArrayIllegalOffset() { + Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, -1, 1); + } + + @Test(expected = IllegalArgumentException.class) + public void testCharToByteArrayIllegalLength() { + Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 0, -1); + } + + @Test(expected = IllegalArgumentException.class) + public void testCharToByteArrayIllegalOffsetPlusLength() { + Util.Converter.charToByteArray("abcdef".toCharArray(), StandardCharsets.UTF_8, 4, 3); + } + + @Test + public void testToIntArray() { + assertArrayEquals(new int[]{1}, Util.Converter.toIntArray(new byte[]{0, 0, 0, 1}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new int[]{257}, Util.Converter.toIntArray(new byte[]{0, 0, 1, 1}, ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(new int[]{1}, Util.Converter.toIntArray(new byte[]{1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new int[]{257}, Util.Converter.toIntArray(new byte[]{1, 1, 0, 0}, ByteOrder.LITTLE_ENDIAN)); + + assertArrayEquals(new int[]{16_843_009}, Util.Converter.toIntArray(new byte[]{1, 1, 1, 1}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new int[]{571_211_845}, Util.Converter.toIntArray(new byte[]{34, 12, 0, 69}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new int[]{1_290_429_439}, Util.Converter.toIntArray(new byte[]{76, (byte) 234, 99, (byte) 255}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new int[]{257, 65_793, 1}, Util.Converter.toIntArray(new byte[]{0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1}, ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(new int[]{1_290_429_439}, Util.Converter.toIntArray(new byte[]{(byte) 255, 99, (byte) 234, 76}, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new int[]{257, 65_793, 1}, Util.Converter.toIntArray(new byte[]{1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN)); + + assertArrayEquals(new int[0], Util.Converter.toIntArray(new byte[0], ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new int[0], Util.Converter.toIntArray(new byte[0], ByteOrder.BIG_ENDIAN)); + } +} From c4e0e1b1050e6c08dcb798ee61f830537469bb98 Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 7 Jan 2019 20:21:07 +0100 Subject: [PATCH 081/181] Add `toLongArray()` conversion fixes #29 --- CHANGELOG | 1 + README.md | 8 +++ src/main/java/at/favre/lib/bytes/Bytes.java | 40 ++++++++------ src/main/java/at/favre/lib/bytes/Util.java | 55 +++++++++---------- .../bytes/BytesToConvertOtherTypesTest.java | 46 ++++++++++++++++ .../at/favre/lib/bytes/UtilConverterTest.java | 18 ++++++ 6 files changed, 121 insertions(+), 47 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 006ea88..767f922 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -6,6 +6,7 @@ * add `toCharArray()` method which decodes internal byte array to char[] #27 * add `encodeBase64()` supporting padding-less encoding * add `toIntArray()` converter #28 +* add `toLongArray()` converter #29 ### Breaking diff --git a/README.md b/README.md index ec9a774..b7a7f6a 100644 --- a/README.md +++ b/README.md @@ -507,6 +507,13 @@ Bytes.wrap(array).toInt(); Bytes.wrap(array).toDouble(); ``` +To primitive arrays + +```java +Bytes.wrap(array).toIntArray(); // of type int[] +Bytes.wrap(array).toLongArray(); // of type long[] +``` + To other collections ```java @@ -525,6 +532,7 @@ and others ```java Bytes.wrap(array).toUUID(); // convert 16 byte to UUID +Bytes.wrap(array).toCharArray(StandardCharsets.UTF-8); // converts to encoded char array ``` ### Mutable and Read-Only diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 6b74102..417e38f 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -21,29 +21,14 @@ package at.favre.lib.bytes; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.File; -import java.io.InputStream; -import java.io.Serializable; +import java.io.*; import java.math.BigInteger; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.CharBuffer; -import java.nio.IntBuffer; -import java.nio.ReadOnlyBufferException; +import java.nio.*; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.text.Normalizer; -import java.util.Arrays; -import java.util.BitSet; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: @@ -1910,6 +1895,25 @@ public long toLong() { return longAt(0); } + /** + * Converts the internal byte array to an long array, that is, every 8 bytes will be packed into a single long. + *

+ * E.g. 8 bytes will be packed to a length 1 long array: + *

+     *  [b1, b2, b3, b4, b5, b6, b7, b8] = [int1]
+     * 
+ *

+ * This conversion respects the internal byte order. Will only work if all bytes can be directly mapped to long, + * which means the byte array length must be dividable by 8 without rest. + * + * @return new long[] instance representing this byte array + * @throws IllegalArgumentException if internal byte length mod 8 != 0 + */ + public long[] toLongArray() { + Util.Validation.checkModLength(length(), 8, "creating an long array"); + return Util.Converter.toLongArray(internalArray(), byteOrder); + } + /** * If the underlying byte array is exactly 4 byte / 32 bit long, return the * representation for a Java float value. The output is dependent on the set {@link #byteOrder()}. diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index ac1b7e3..ce12cde 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -21,29 +21,12 @@ package at.favre.lib.bytes; -import java.io.ByteArrayOutputStream; -import java.io.DataInput; -import java.io.IOException; -import java.io.InputStream; -import java.io.RandomAccessFile; -import java.nio.ByteBuffer; -import java.nio.ByteOrder; -import java.nio.CharBuffer; -import java.nio.IntBuffer; +import java.io.*; +import java.nio.*; import java.nio.charset.CharacterCodingException; import java.nio.charset.Charset; import java.nio.file.Files; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.NoSuchElementException; -import java.util.Objects; -import java.util.Random; -import java.util.UUID; +import java.util.*; /** * Common Util methods to convert or modify byte arrays @@ -458,22 +441,36 @@ static char[] byteToCharArray(byte[] bytes, Charset charset, ByteOrder byteOrder * Converts the byte array to an int array. This will spread 4 bytes into a single int: * *

-         *     [b1, b2, b3, b4] = int1
+         *     [b1, b2, b3, b4] = [int1]
          * 
* - * @param bytes to convert to int array + * @param bytes to convert to int array, must be % 4 == 0 to work correctly * @param byteOrder of the byte array * @return int array */ static int[] toIntArray(byte[] bytes, ByteOrder byteOrder) { IntBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asIntBuffer(); - if (buffer.hasArray()) { - return buffer.array(); - } else { - int[] array = new int[buffer.remaining()]; - buffer.get(array); - return array; - } + int[] array = new int[buffer.remaining()]; + buffer.get(array); + return array; + } + + /** + * Converts the byte array to an long array. This will spread 8 bytes into a single long: + * + *
+         *     [b1, b2, b3, b4, b5, b6, b7, b8] = [long1]
+         * 
+ * + * @param bytes to convert to long array, must be % 8 == 0 to work correctly + * @param byteOrder of the byte array + * @return long array + */ + static long[] toLongArray(byte[] bytes, ByteOrder byteOrder) { + LongBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asLongBuffer(); + long[] array = new long[buffer.remaining()]; + buffer.get(array); + return array; } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index fe66d61..dee19d1 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -276,4 +276,50 @@ public void testToIntArrayLittleEndian() { assertArrayEquals(new int[]{257, 1}, Bytes.wrap(new byte[]{1, 1, 0, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toIntArray()); assertArrayEquals(new int[]{257, 65_793, 1}, Bytes.wrap(new byte[]{1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toIntArray()); } + + @Test + public void testToLongArray() { + assertArrayEquals(new long[]{1}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 1}).toLongArray()); + assertArrayEquals(new long[]{257}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 1, 1}).toLongArray()); + assertArrayEquals(new long[]{3329575617569751109L}, Bytes.wrap(new byte[]{46, 53, 7, 98, 34, 12, 0, 69}).toLongArray()); + assertArrayEquals(new long[]{-7124130559744646145L}, Bytes.wrap(new byte[]{(byte) 157, 34, 1, 0, 76, (byte) 234, 99, (byte) 255}).toLongArray()); + + assertArrayEquals(new long[]{1, 1}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}).toLongArray()); + assertArrayEquals(new long[]{257, 1}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1}).toLongArray()); + assertArrayEquals(new long[]{1099511628033L, 281474976776449L, 1}, Bytes.wrap(new byte[]{ + 0, 0, 1, 0, 0, 0, 1, 1, + 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1}).toLongArray()); + } + + @Test(expected = IllegalArgumentException.class) + public void testToLongArrayNotMod4Was9Byte() { + Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 1}).toLongArray(); + } + + @Test(expected = IllegalArgumentException.class) + public void testToLongArrayNotMod4Only7Byte() { + Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 1}).toLongArray(); + } + + @Test + public void testToLongEmptyArray() { + assertArrayEquals(new long[0], Bytes.empty().toLongArray()); + } + + + @Test + public void testToLongArrayLittleEndian() { + assertArrayEquals(new long[]{1}, Bytes.wrap(new byte[]{1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toLongArray()); + assertArrayEquals(new long[]{257}, Bytes.wrap(new byte[]{1, 1, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toLongArray()); + assertArrayEquals(new long[]{3329575617569751109L}, Bytes.wrap(new byte[]{69, 0, 12, 34, 98, 7, 53, 46}, ByteOrder.LITTLE_ENDIAN).toLongArray()); + assertArrayEquals(new long[]{-7124130559744646145L}, Bytes.wrap(new byte[]{(byte) 255, 99, (byte) 234, 76, 0, 1, 34, (byte) 157}, ByteOrder.LITTLE_ENDIAN).toLongArray()); + + assertArrayEquals(new long[]{1, 1}, Bytes.wrap(new byte[]{1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toLongArray()); + assertArrayEquals(new long[]{257, 1}, Bytes.wrap(new byte[]{1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toLongArray()); + assertArrayEquals(new long[]{1099511628033L, 281474976776449L, 1}, Bytes.wrap(new byte[]{ + 1, 1, 0, 0, 0, 1, 0, 0, + 1, 1, 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toLongArray()); + } } diff --git a/src/test/java/at/favre/lib/bytes/UtilConverterTest.java b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java index 9088783..4b68d14 100644 --- a/src/test/java/at/favre/lib/bytes/UtilConverterTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java @@ -137,4 +137,22 @@ public void testToIntArray() { assertArrayEquals(new int[0], Util.Converter.toIntArray(new byte[0], ByteOrder.LITTLE_ENDIAN)); assertArrayEquals(new int[0], Util.Converter.toIntArray(new byte[0], ByteOrder.BIG_ENDIAN)); } + + @Test + public void testToLongArray() { + assertArrayEquals(new long[]{1}, Util.Converter.toLongArray(new byte[]{0, 0, 0, 0, 0, 0, 0, 1}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new long[]{257}, Util.Converter.toLongArray(new byte[]{0, 0, 0, 0, 0, 0, 1, 1}, ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(new long[]{1}, Util.Converter.toLongArray(new byte[]{1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new long[]{257}, Util.Converter.toLongArray(new byte[]{1, 1, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN)); + + assertArrayEquals(new long[]{-7124130559744646145L}, Util.Converter.toLongArray(new byte[]{(byte) 157, 34, 1, 0, 76, (byte) 234, 99, (byte) 255}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new long[]{-7124130559744646145L}, Util.Converter.toLongArray(new byte[]{(byte) 255, 99, (byte) 234, 76, 0, 1, 34, (byte) 157}, ByteOrder.LITTLE_ENDIAN)); + + assertArrayEquals(new long[]{257, 1}, Util.Converter.toLongArray(new byte[]{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new long[]{257, 1}, Util.Converter.toLongArray(new byte[]{1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN)); + + assertArrayEquals(new long[0], Util.Converter.toLongArray(new byte[0], ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new long[0], Util.Converter.toLongArray(new byte[0], ByteOrder.BIG_ENDIAN)); + } } From efa66c4e34fd432b7a297ae03b04c93c4466fd5b Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 7 Jan 2019 20:50:22 +0100 Subject: [PATCH 082/181] Rewrite entropy util to use more memory friendly version --- src/main/java/at/favre/lib/bytes/Bytes.java | 4 +- src/main/java/at/favre/lib/bytes/Util.java | 82 +++++++------------ .../java/at/favre/lib/bytes/UtilByteTest.java | 11 +++ 3 files changed, 43 insertions(+), 54 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 417e38f..6710c10 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1402,13 +1402,13 @@ public int count(byte[] pattern) { * variables. Specifically, assuming for simplicity that each of the microscopic configurations is equally probable, * the entropy of the system is the natural logarithm of that number of configurations, multiplied by the Boltzmann constant kB. *

- * This implementation requires O(n) time and space complexity. + * This implementation requires O(n) time and O(1) space complexity. * * @return entropy value; higher is more entropy (simply: more different values) * @see Entropy */ public double entropy() { - return new Util.Entropy<>(toList()).entropy(); + return Util.Byte.entropy(internalArray()); } /* CONVERTERS POSSIBLY REUSING THE INTERNAL ARRAY ***************************************************************/ diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index ce12cde..b4b1ba8 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -268,6 +268,36 @@ static boolean constantTimeEquals(byte[] obj, byte[] anotherArray) { } return result == 0; } + + /** + * Calculates the entropy factor of a byte array. + *

+ * This implementation will not create a copy of the internal array and will only internally initialize + * a int array with 256 elements as temporary buffer. + * + * @param array to calculate the entropy from + * @return entropy factor, higher means higher entropy + */ + static double entropy(byte[] array) { + final int[] buffer = new int[256]; + Arrays.fill(buffer, -1); + + for (byte element : array) { + int unsigned = 0xff & element; + if (buffer[unsigned] == -1) { + buffer[unsigned] = 0; + } + buffer[unsigned]++; + } + + double entropy = 0; + for (int count : buffer) { + if (count == -1) continue; + double prob = (double) count / array.length; + entropy -= prob * (Math.log(prob) / Math.log(2)); + } + return entropy; + } } /** @@ -683,58 +713,6 @@ static byte[] readFromFile(java.io.File file, int offset, int length) { private Util() { } - /* - ================================================================================================= - Copyright 2011 Twitter, Inc. - ------------------------------------------------------------------------------------------------- - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this work except in compliance with the License. - You may obtain a copy of the License in the LICENSE file, or 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. - ================================================================================================= - */ - - /** - * Class that calculates the entropy factor - * - * @param - */ - @SuppressWarnings("WeakerAccess") - static final class Entropy { - private final Map map = new HashMap<>(); - private int total = 0; - - public Entropy(Iterable elements) { - for (T element : elements) { - if (!map.containsKey(element)) { - map.put(element, 0); - } - map.put(element, map.get(element) + 1); - total++; - } - } - - private double Log2(double n) { - return Math.log(n) / Math.log(2); - } - - public double entropy() { - double entropy = 0; - for (int count : map.values()) { - double prob = (double) count / total; - entropy -= prob * Log2(prob); - } - return entropy; - } - } - /** * A simple iterator for the bytes class, which does not support remove */ diff --git a/src/test/java/at/favre/lib/bytes/UtilByteTest.java b/src/test/java/at/favre/lib/bytes/UtilByteTest.java index 3892269..26180ea 100644 --- a/src/test/java/at/favre/lib/bytes/UtilByteTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilByteTest.java @@ -234,4 +234,15 @@ public void testRightShiftAgainstRefImpl() { } } } + + @Test + public void entropy() { + assertEquals(0, Util.Byte.entropy(new byte[0]), 0.1d); + assertEquals(0, Util.Byte.entropy(new byte[1]), 0.1d); + assertEquals(0, Util.Byte.entropy(new byte[256]), 0.1d); + assertEquals(0, Util.Byte.entropy(new byte[]{1}), 0.1d); + assertTrue(Util.Byte.entropy(new byte[]{(byte) 0x8E, (byte) 0xD1, (byte) 0xFD, (byte) 0xAA, 0x12, (byte) 0xAF, (byte) 0x78, 0x09, 0x1E, (byte) 0xD1, (byte) 0xFD, (byte) 0xAA, 0x12, (byte) 0xAF, (byte) 0x00, 0x0A, (byte) 0xEE, (byte) 0xD1, (byte) 0xFD, (byte) 0xAA, 0x12, (byte) 0xAF, (byte) 0x78, 0x11}) > 3.5); + assertTrue(Util.Byte.entropy(new byte[]{0x4A, (byte) 0x94, (byte) 0xFD, (byte) 0xFF, 0x1E, (byte) 0xAF, (byte) 0xED}) > 2.5); + assertTrue(Util.Byte.entropy(new byte[]{0x1A, 0x6F}) > 0.5); + } } From d85b422d565337e78fbbd717dc63ec4d24129569 Mon Sep 17 00:00:00 2001 From: pfavre Date: Tue, 8 Jan 2019 09:45:59 +0100 Subject: [PATCH 083/181] Improve toArray() util to not use intermittent array (ie. less memory complexity) --- src/main/java/at/favre/lib/bytes/Util.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index b4b1ba8..71e2adb 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -322,11 +322,12 @@ private Converter() { * is null */ static byte[] toArray(Collection collection) { - Object[] boxedArray = collection.toArray(); - int len = boxedArray.length; - byte[] array = new byte[len]; - for (int i = 0; i < len; i++) { - array[i] = (java.lang.Byte) boxedArray[i]; + final int len = collection.size(); + final byte[] array = new byte[len]; + int i = 0; + for (java.lang.Byte b : collection) { + array[i] = b; + i++; } return array; } From 9d29f7b17b3eebf214e836e46de721c9e8fade30 Mon Sep 17 00:00:00 2001 From: pfavre Date: Tue, 8 Jan 2019 09:46:22 +0100 Subject: [PATCH 084/181] Moving around some methods in Util.java --- src/main/java/at/favre/lib/bytes/Util.java | 61 +++++++++++----------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 71e2adb..9ce1a1a 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -63,6 +63,22 @@ static byte[] concat(byte[]... arrays) { return result; } + + /** + * Combines a single argument with a vararg to a single array + * + * @param firstByte first arg + * @param moreBytes varargs + * @return array containing all args + */ + static byte[] concatVararg(byte firstByte, byte[] moreBytes) { + if (moreBytes == null) { + return new byte[]{firstByte}; + } else { + return concat(new byte[]{firstByte}, moreBytes); + } + } + /** * Returns the start position of the first occurrence of the specified {@code * target} within {@code array}, or {@code -1} if there is no such occurrence. @@ -189,21 +205,6 @@ static void reverse(byte[] array, int fromIndex, int toIndex) { } } - /** - * Combines a single argument with a vararg to a single array - * - * @param firstByte first arg - * @param moreBytes varargs - * @return array containing all args - */ - static byte[] concatVararg(byte firstByte, byte[] moreBytes) { - if (moreBytes == null) { - return new byte[]{firstByte}; - } else { - return concat(new byte[]{firstByte}, moreBytes); - } - } - /** * Light shift of whole byte array by shiftBitCount bits. * This method will alter the input byte array. @@ -332,21 +333,6 @@ static byte[] toArray(Collection collection) { return array; } - /** - * Converts given array to list of boxed bytes. Will create a new list - * and not reuse the array reference. - * - * @param array to convert - * @return list with same length and content as array - */ - static List toList(byte[] array) { - List list = new ArrayList<>(array.length); - for (byte b : array) { - list.add(b); - } - return list; - } - /** * Converts this primitive array to an boxed object array. * Will create a new array and not reuse the array reference. @@ -362,6 +348,21 @@ static java.lang.Byte[] toBoxedArray(byte[] array) { return objectArray; } + /** + * Converts given array to list of boxed bytes. Will create a new list + * and not reuse the array reference. + * + * @param array to convert + * @return list with same length and content as array + */ + static List toList(byte[] array) { + List list = new ArrayList<>(array.length); + for (byte b : array) { + list.add(b); + } + return list; + } + /** * Converts this object array to an primitives type array. * Will create a new array and not reuse the array reference. From 84382aeab3fa4ab7b802f388ae213847bafd476a Mon Sep 17 00:00:00 2001 From: pfavre Date: Wed, 9 Jan 2019 22:46:04 +0100 Subject: [PATCH 085/181] Improve javadoc in Util.Bytes with time & space complexity analysis --- src/main/java/at/favre/lib/bytes/Util.java | 128 ++++++++++++++++++++- 1 file changed, 124 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 9ce1a1a..a5fb716 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -45,6 +45,15 @@ private Byte() { * For example, {@code append(new byte[] {a, b}, new byte[] {}, new * byte[] {c}} returns the byteArray {@code {a, b, c}}. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param arrays zero or more {@code byte} arrays * @return a single byteArray containing all the values from the source arrays, in * order @@ -67,6 +76,15 @@ static byte[] concat(byte[]... arrays) { /** * Combines a single argument with a vararg to a single array * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param firstByte first arg * @param moreBytes varargs * @return array containing all args @@ -87,6 +105,15 @@ static byte[] concatVararg(byte firstByte, byte[] moreBytes) { * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly * the same elements as {@code target}. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n*m)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param array the array to search for the sequence {@code target} * @param target the array to search for as a sub-sequence of {@code array} */ @@ -113,6 +140,15 @@ static int indexOf(byte[] array, byte[] target, int start, int end) { * Returns the index of the last appearance of the value {@code target} in * {@code array}. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param array an array of {@code byte} values, possibly empty * @param target a primitive {@code byte} value * @return the greatest index {@code i} for which {@code array[i] == target}, @@ -130,6 +166,15 @@ static int lastIndexOf(byte[] array, byte target, int start, int end) { /** * Counts the occurrence of target in the the in the subject array * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param array to count in * @param target to count * @return number of times target is in subject @@ -147,6 +192,15 @@ static int countByte(byte[] array, byte target) { /** * Counts the times given pattern (ie. an array) can be found in given array * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n*m)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param array to count in * @param pattern to match in array * @return number of times pattern is in subject @@ -175,6 +229,15 @@ static int countByteArray(byte[] array, byte[] pattern) { *

* See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: true
  • + *
+ *

+ * * @param array to shuffle * @param random used to derive entropy - use {@link java.security.SecureRandom} instance if you want this to be secure */ @@ -193,6 +256,15 @@ static void shuffle(byte[] array, Random random) { * Collections.reverse(Bytes.asList(array).subList(fromIndex, toIndex))}, but is likely to be more * efficient. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: true
  • + *
+ *

+ * * @throws IndexOutOfBoundsException if {@code fromIndex < 0}, {@code toIndex > array.length}, or * {@code toIndex > fromIndex} */ @@ -208,6 +280,19 @@ static void reverse(byte[] array, int fromIndex, int toIndex) { /** * Light shift of whole byte array by shiftBitCount bits. * This method will alter the input byte array. + * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: true
  • + *
+ *

+ * + * @param byteArray to shift + * @param shiftBitCount how many bits to shift + * @return shifted byte array */ static byte[] shiftLeft(byte[] byteArray, int shiftBitCount) { final int shiftMod = shiftBitCount % 8; @@ -234,6 +319,19 @@ static byte[] shiftLeft(byte[] byteArray, int shiftBitCount) { /** * Unsigned/logical right shift of whole byte array by shiftBitCount bits. * This method will alter the input byte array. + * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: true
  • + *
+ *

+ * + * @param byteArray to shift + * @param shiftBitCount how many bits to shift + * @return shifted byte array */ static byte[] shiftRight(byte[] byteArray, int shiftBitCount) { final int shiftMod = shiftBitCount % 8; @@ -259,13 +357,26 @@ static byte[] shiftRight(byte[] byteArray, int shiftBitCount) { /** * See https://codahale.com/a-lesson-in-timing-attacks/ + * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * + * @param array to check for equals + * @param anotherArray to check against array + * @return if both arrays have the same length and same length for every index */ - static boolean constantTimeEquals(byte[] obj, byte[] anotherArray) { - if (anotherArray == null || obj.length != anotherArray.length) return false; + static boolean constantTimeEquals(byte[] array, byte[] anotherArray) { + if (anotherArray == null || array.length != anotherArray.length) return false; int result = 0; - for (int i = 0; i < obj.length; i++) { - result |= obj[i] ^ anotherArray[i]; + for (int i = 0; i < array.length; i++) { + result |= array[i] ^ anotherArray[i]; } return result == 0; } @@ -276,6 +387,15 @@ static boolean constantTimeEquals(byte[] obj, byte[] anotherArray) { * This implementation will not create a copy of the internal array and will only internally initialize * a int array with 256 elements as temporary buffer. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param array to calculate the entropy from * @return entropy factor, higher means higher entropy */ From 201457e4de9fdec6d18c07243d96ddbbb726fcf1 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 12 Jan 2019 13:18:41 +0100 Subject: [PATCH 086/181] Add more javadoc and analysis and some minor refactoring --- src/main/java/at/favre/lib/bytes/Util.java | 194 ++++++++++++++++-- .../bytes/BytesToConvertOtherTypesTest.java | 28 +-- 2 files changed, 195 insertions(+), 27 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index a5fb716..70d35e0 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -436,6 +436,15 @@ private Converter() { * collection.toArray()}. Calling this method is as thread-safe as calling * that method. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param collection a collection of {@code Byte} objects * @return an array containing the same values as {@code collection}, in the * same order, converted to primitives @@ -457,6 +466,15 @@ static byte[] toArray(Collection collection) { * Converts this primitive array to an boxed object array. * Will create a new array and not reuse the array reference. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param array to convert * @return new array */ @@ -472,6 +490,15 @@ static java.lang.Byte[] toBoxedArray(byte[] array) { * Converts given array to list of boxed bytes. Will create a new list * and not reuse the array reference. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param array to convert * @return list with same length and content as array */ @@ -487,6 +514,15 @@ static List toList(byte[] array) { * Converts this object array to an primitives type array. * Will create a new array and not reuse the array reference. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param objectArray to convert * @return new array */ @@ -502,13 +538,24 @@ static byte[] toPrimitiveArray(java.lang.Byte[] objectArray) { * Creates a byte array from given int array. * The resulting byte array will have length intArray * 4. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param intArray to convert * @return resulting byte array */ static byte[] toByteArray(int[] intArray) { byte[] primitivesArray = new byte[intArray.length * 4]; + ByteBuffer buffer = ByteBuffer.allocate(4); for (int i = 0; i < intArray.length; i++) { - byte[] intBytes = ByteBuffer.allocate(4).putInt(intArray[i]).array(); + buffer.clear(); + byte[] intBytes = buffer.putInt(intArray[i]).array(); System.arraycopy(intBytes, 0, primitivesArray, (i * 4), intBytes.length); } return primitivesArray; @@ -518,13 +565,24 @@ static byte[] toByteArray(int[] intArray) { * Creates a byte array from given long array. * The resulting byte array will have length longArray * 8 * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param longArray to convert * @return resulting byte array */ static byte[] toByteArray(long[] longArray) { byte[] primitivesArray = new byte[longArray.length * 8]; + ByteBuffer buffer = ByteBuffer.allocate(8); for (int i = 0; i < longArray.length; i++) { - byte[] longBytes = ByteBuffer.allocate(8).putLong(longArray[i]).array(); + buffer.clear(); + byte[] longBytes = buffer.putLong(longArray[i]).array(); System.arraycopy(longBytes, 0, primitivesArray, (i * 8), longBytes.length); } return primitivesArray; @@ -533,6 +591,15 @@ static byte[] toByteArray(long[] longArray) { /** * Converts a char array to a byte array with given charset and range * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param charArray to get the byte array from * @param charset charset to be used to decode the char array * @param offset to start reading the char array from (must be smaller than length and gt 0) @@ -567,6 +634,15 @@ static byte[] charToByteArray(char[] charArray, Charset charset, int offset, int /** * Convert given byte array in given encoding to char array * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param bytes as data source * @param charset of the byte array * @param byteOrder the order of the bytes array @@ -596,6 +672,15 @@ static char[] byteToCharArray(byte[] bytes, Charset charset, ByteOrder byteOrder * [b1, b2, b3, b4] = [int1] * * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param bytes to convert to int array, must be % 4 == 0 to work correctly * @param byteOrder of the byte array * @return int array @@ -614,6 +699,15 @@ static int[] toIntArray(byte[] bytes, ByteOrder byteOrder) { * [b1, b2, b3, b4, b5, b6, b7, b8] = [long1] * * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param bytes to convert to long array, must be % 8 == 0 to work correctly * @param byteOrder of the byte array * @return long array @@ -629,6 +723,15 @@ static long[] toLongArray(byte[] bytes, ByteOrder byteOrder) { * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and * 8 byte least significant bits into an byte array. * + *

+ * Analysis + *

    + *
  • Time Complexity: O(1)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param uuid to convert to array * @return buffer containing the 16 bytes */ @@ -647,6 +750,25 @@ static final class Obj { private Obj() { } + /** + * Equals method comparing 2 byte arrays. + * This utilizes a quick return of the array differs on any given property so not suitable + * for security relevant checks. See {@link Util.Byte#constantTimeEquals(byte[], byte[])} + * for that. + * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * + * @param obj subject a + * @param anotherArray subject b to compare to a + * @return if a.len == b.len and for every 0..len a[i] == b[i] + */ static boolean equals(byte[] obj, java.lang.Byte[] anotherArray) { if (anotherArray == null) return false; if (obj.length != anotherArray.length) return false; @@ -661,6 +783,15 @@ static boolean equals(byte[] obj, java.lang.Byte[] anotherArray) { /** * Hashcode implementation for a byte array and given byte order * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param byteArray to calculate hashCode of * @param byteOrder to calculate hashCode of * @return hashCode @@ -674,6 +805,15 @@ static int hashCode(byte[] byteArray, ByteOrder byteOrder) { /** * Shows the length and a preview of max 8 bytes of the given byte * + *

+ * Analysis + *

    + *
  • Time Complexity: O(1)
  • + *
  • Space Complexity: O(1)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * * @param bytes to convert to string * @return string representation */ @@ -698,38 +838,66 @@ static final class Validation { private Validation() { } - private static void checkFile(java.io.File file) { - if (file == null || !file.exists() || !file.isFile()) { - throw new IllegalArgumentException("file must not be null, has to exist and must be a file (not a directory) " + file); - } - } - + /** + * Check if a length of an primitive (e.g. int = 4 byte) fits in given length from given start index. + * Throws exception with descriptive exception message. + * + * @param length of the whole array + * @param index to start from array length + * @param primitiveLength length of the primitive type to check + * @param type for easier debugging the human readable type of the checked primitive + * to put in exception message + * @throws IndexOutOfBoundsException if index + primitiveLength > length + */ static void checkIndexBounds(int length, int index, int primitiveLength, String type) { if (index < 0 || index + primitiveLength > length) { throw new IndexOutOfBoundsException("cannot get " + type + " from index out of bounds: " + index); } } + /** + * Check if given length is an expected length. + * Throws exception with descriptive exception message. + * + * @param length of the whole array + * @param expectedLength how length is expected + * @param type for easier debugging the human readable type of the checked primitive + * to put in exception message + * @throws IllegalArgumentException if length != expectedLength + */ static void checkExactLength(int length, int expectedLength, String type) { if (length != expectedLength) { - throw new IllegalStateException("cannot convert to " + type + " if length != " + expectedLength + " bytes (was " + length + ")"); + throw new IllegalArgumentException("cannot convert to " + type + " if length != " + expectedLength + " bytes (was " + length + ")"); } } /** - * Checks if given length is divisable by mod factor (with zero rest). - * This can be used to check of a byte array can be convertet to an e.g. int array which is + * Checks if given length is divisible by mod factor (with zero rest). + * This can be used to check of a byte array can be converted to an e.g. int array which is * multiples of 4. * * @param length of the byte array * @param modFactor to divide the length * @param errorSubject human readable message of the exact error subject + * @throws IllegalArgumentException if length % modFactor != 0 */ static void checkModLength(int length, int modFactor, String errorSubject) { if (length % modFactor != 0) { throw new IllegalArgumentException("Illegal length for " + errorSubject + ". Byte array length must be multiple of " + modFactor + ", length was " + length); } } + + /** + * Check if the file exists and is a file. + * + * @param file to check + * @throws IllegalArgumentException if either file is null, does not exists or is not a file + */ + private static void checkFileExists(java.io.File file) { + if (file == null || !file.exists() || !file.isFile()) { + throw new IllegalArgumentException("file must not be null, has to exist and must be a file (not a directory) " + file); + } + } } /** @@ -803,7 +971,7 @@ static byte[] readFromDataInput(DataInput dataInput, int length) { * @return byte content */ static byte[] readFromFile(java.io.File file) { - Validation.checkFile(file); + Validation.checkFileExists(file); try { return Files.readAllBytes(file.toPath()); @@ -821,7 +989,7 @@ static byte[] readFromFile(java.io.File file) { * @return byte array with length length */ static byte[] readFromFile(java.io.File file, int offset, int length) { - Validation.checkFile(file); + Validation.checkFileExists(file); try (RandomAccessFile raf = new RandomAccessFile(file, "r")) { raf.seek(offset); return readFromDataInput(raf, length); diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index dee19d1..9b7fdea 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -86,7 +86,7 @@ public void toByte() { try { Bytes.from(example_bytes_two).toByte(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } @@ -99,7 +99,7 @@ public void toUnsignedByte() { try { Bytes.from(example_bytes_two).toUnsignedByte(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } @@ -112,12 +112,12 @@ public void toChar() { try { Bytes.from(new byte[3]).toChar(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } try { Bytes.from(new byte[1]).toChar(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } @@ -130,12 +130,12 @@ public void toShort() { try { Bytes.from(new byte[3]).toShort(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } try { Bytes.from(new byte[1]).toShort(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } @@ -153,12 +153,12 @@ public void toInt() { try { Bytes.from(new byte[5]).toInt(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } try { Bytes.from(new byte[3]).toInt(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } @@ -173,12 +173,12 @@ public void toLong() { try { Bytes.from(new byte[9]).toLong(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } try { Bytes.from(new byte[7]).toLong(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } @@ -193,12 +193,12 @@ public void toFloat() { try { Bytes.from(new byte[5]).toFloat(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } try { Bytes.from(new byte[3]).toFloat(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } @@ -213,12 +213,12 @@ public void toDouble() { try { Bytes.from(new byte[9]).toDouble(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } try { Bytes.from(new byte[7]).toDouble(); fail(); - } catch (IllegalStateException ignored) { + } catch (IllegalArgumentException ignored) { } } From 1e3397608e974ab9f41250e4ea9992bfe779591b Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 12 Jan 2019 13:45:58 +0100 Subject: [PATCH 087/181] Fixes various issues found in static code inspection E.g typos, weaker access, redundant "throws exception" --- CONTRIBUTING.md | 4 +-- README.md | 2 +- src/main/java/at/favre/lib/bytes/Bytes.java | 2 +- .../at/favre/lib/bytes/BytesTransformers.java | 5 ++-- .../at/favre/lib/bytes/BytesValidators.java | 1 + .../java/at/favre/lib/bytes/ABytesTest.java | 4 +-- .../favre/lib/bytes/BytesByteOrderTest.java | 28 +++++++++---------- .../lib/bytes/BytesConstructorTests.java | 8 ++---- .../at/favre/lib/bytes/BytesMiscTest.java | 6 ++-- .../favre/lib/bytes/BytesValidatorTest.java | 22 +++++++-------- .../otherPackage/BytesTransformTest.java | 4 +-- 11 files changed, 42 insertions(+), 44 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c028985..c18fe1f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ We ❤ pull requests from everyone. -If possible proof features and bugfixes with unit tests. +If possible proof features and bug fixes with unit tests. This repo validates against checkstyle (import the xml found in the root to your IDE if possible) To run the tests (and checkstyle): @@ -12,4 +12,4 @@ mvn test checkstyle:check ``` Tests are automatically run against branches and pull requests -via TravisCI, so you can also depend on that. \ No newline at end of file +via TravisCI, so you can also depend on that. diff --git a/README.md b/README.md index b7a7f6a..f5172f4 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ Add dependency to your `pom.xml` ([check latest release](https://github.com/patr {latest-version} -_Note:_ There is a byte-code optimized version (powerd by [ProGuard](https://www.guardsquare.com/en/products/proguard)) which can be used with [classifier](https://maven.apache.org/pom.html#Maven_Coordinates) 'optimized'. This may have issues so use at your own risk. +_Note:_ There is a byte-code optimized version (powered by [ProGuard](https://www.guardsquare.com/en/products/proguard)) which can be used with [classifier](https://maven.apache.org/pom.html#Maven_Coordinates) 'optimized'. This may have issues so use at your own risk. Some simple examples: diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 6710c10..03f77dd 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1081,7 +1081,7 @@ public Bytes hash(String algorithm) { * This transformation might be done in-place (ie. without copying the internal array and overwriting its old state), * or on a copy of the internal data, depending on the type (e.g. {@link MutableBytes}) and if the operation can be done * in-place. Therefore the caller has to ensure that certain side-effects, which occur due to the changing of the internal - * data, do not create bugs in his/her code. Usually immutability is prefered, but when handling many or big byte arrays, + * data, do not create bugs in his/her code. Usually immutability is preferred, but when handling many or big byte arrays, * mutability enables drastically better performance. * * @param transformer used to transform this instance diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index 64a6ae9..f2ae0c7 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -18,6 +18,7 @@ /** * Collection of additional {@link BytesTransformer} for more specific use cases */ +@SuppressWarnings("WeakerAccess") public final class BytesTransformers { private BytesTransformers() { @@ -222,7 +223,7 @@ public boolean supportInPlaceTransformation() { } /** - * Converting each byte into unsinged version and comparing it (0...255) vs (-128..127) + * Converting each byte into unsigned version and comparing it (0...255) vs (-128..127) */ static final class UnsignedByteComparator implements Comparator { @Override @@ -246,7 +247,7 @@ public static final class ChecksumTransformer implements BytesTransformer { ChecksumTransformer(Checksum checksum, Mode mode, int checksumLengthByte) { if (checksumLengthByte <= 0 || checksumLengthByte > 8) - throw new IllegalArgumentException("checksumlength must be between 1 and 8 bytes"); + throw new IllegalArgumentException("checksum length must be between 1 and 8 bytes"); Objects.requireNonNull(checksum, "checksum instance must not be null"); this.checksum = checksum; diff --git a/src/main/java/at/favre/lib/bytes/BytesValidators.java b/src/main/java/at/favre/lib/bytes/BytesValidators.java index 479dd18..067822c 100644 --- a/src/main/java/at/favre/lib/bytes/BytesValidators.java +++ b/src/main/java/at/favre/lib/bytes/BytesValidators.java @@ -27,6 +27,7 @@ /** * Util and easy access for {@link BytesValidators} */ +@SuppressWarnings("WeakerAccess") public final class BytesValidators { private BytesValidators() { diff --git a/src/test/java/at/favre/lib/bytes/ABytesTest.java b/src/test/java/at/favre/lib/bytes/ABytesTest.java index e117913..076de64 100644 --- a/src/test/java/at/favre/lib/bytes/ABytesTest.java +++ b/src/test/java/at/favre/lib/bytes/ABytesTest.java @@ -27,7 +27,7 @@ import static org.junit.Assert.*; -public abstract class ABytesTest { +abstract class ABytesTest { byte[] example_bytes_empty; byte[] example_bytes_one; @@ -55,7 +55,7 @@ public abstract class ABytesTest { String example_hex_twentyfour; @Before - public void setUp() throws Exception { + public void setUp() { example_bytes_empty = new byte[0]; example_bytes_one = new byte[]{0x67}; example_hex_one = "67"; diff --git a/src/test/java/at/favre/lib/bytes/BytesByteOrderTest.java b/src/test/java/at/favre/lib/bytes/BytesByteOrderTest.java index 663a1a3..71d137f 100644 --- a/src/test/java/at/favre/lib/bytes/BytesByteOrderTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesByteOrderTest.java @@ -31,7 +31,7 @@ public class BytesByteOrderTest extends ABytesTest { @Test - public void miscInput() throws Exception { + public void miscInput() { testOrder(Bytes.from(350)); testOrder(Bytes.from(172863182736L)); testOrder(Bytes.from(example_bytes_one)); @@ -52,82 +52,82 @@ private void testOrder(Bytes bytes) { } @Test - public void encodeBinary() throws Exception { + public void encodeBinary() { Bytes b = Bytes.from(example_bytes_four); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeBinary(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).encodeBinary()); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeBinary(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).reverse().encodeBinary()); } @Test - public void encodeOct() throws Exception { + public void encodeOct() { Bytes b = Bytes.from(example_bytes_four); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeOctal(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).encodeOctal()); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeOctal(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).reverse().encodeOctal()); } @Test - public void encodeDec() throws Exception { + public void encodeDec() { Bytes b = Bytes.from(example_bytes_four); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeDec(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).encodeDec()); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeDec(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).reverse().encodeDec()); } @Test - public void encodeHex() throws Exception { + public void encodeHex() { Bytes b = Bytes.from(example_bytes_two); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeHex(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).encodeHex()); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeHex(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).reverse().encodeHex()); } @Test - public void encodeBase36() throws Exception { + public void encodeBase36() { Bytes b = Bytes.from(example_bytes_four); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeBase36(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).encodeBase36()); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeBase36(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).reverse().encodeBase36()); } @Test - public void encodeBase64() throws Exception { + public void encodeBase64() { Bytes b = Bytes.from(example_bytes_four); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeBase64(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).encodeBase64()); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).encodeBase64(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).reverse().encodeBase64()); } @Test - public void toByte() throws Exception { + public void toByte() { Bytes b = Bytes.from(example_bytes_one); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).toByte(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).toByte()); } @Test - public void toChar() throws Exception { + public void toChar() { Bytes b = Bytes.from(example_bytes_two); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).toChar(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).toChar()); } @Test - public void toShort() throws Exception { + public void toShort() { Bytes b = Bytes.from(example_bytes_two); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).toShort(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).toShort()); } @Test - public void toInt() throws Exception { + public void toInt() { Bytes b = Bytes.from(example_bytes_four); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).toInt(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).toInt()); } @Test - public void toLong() throws Exception { + public void toLong() { Bytes b = Bytes.from(example_bytes_eight); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).toLong(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).toLong()); } @Test - public void bigInteger() throws Exception { + public void bigInteger() { Bytes b = Bytes.from(example_bytes_four); assertNotEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).toBigInteger(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).toBigInteger()); assertEquals(b.byteOrder(ByteOrder.BIG_ENDIAN).toBigInteger(), b.byteOrder(ByteOrder.LITTLE_ENDIAN).reverse().toBigInteger()); } -} \ No newline at end of file +} diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index 1775301..d08d46f 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -26,11 +26,7 @@ import org.junit.Test; import org.junit.rules.TemporaryFolder; -import java.io.ByteArrayInputStream; -import java.io.DataInput; -import java.io.DataInputStream; -import java.io.File; -import java.io.FileOutputStream; +import java.io.*; import java.math.BigInteger; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -48,7 +44,7 @@ public class BytesConstructorTests extends ABytesTest { @Rule - public TemporaryFolder testFolder = new TemporaryFolder(); + public final TemporaryFolder testFolder = new TemporaryFolder(); @Test public void wrapTest() { diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 844e36c..068a2ec 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -121,14 +121,14 @@ public void testCompareTo() { assertTrue(-1 >= Bytes.from(b1).compareTo(Bytes.from(b2))); assertTrue(1 <= Bytes.from(b2).compareTo(Bytes.from(b1))); - assertTrue(0 == Bytes.from(b1).compareTo(Bytes.from(b1))); + assertEquals(0, Bytes.from(b1).compareTo(Bytes.from(b1))); byte[] bOne = new byte[]{0x01}; byte[] bTwo = new byte[]{0x02}; assertTrue(-1 >= Bytes.from(bOne).compareTo(Bytes.from(bTwo))); assertTrue(1 <= Bytes.from(bTwo).compareTo(Bytes.from(bOne))); - assertTrue(0 == Bytes.from(bOne).compareTo(Bytes.from(bOne))); + assertEquals(0, Bytes.from(bOne).compareTo(Bytes.from(bOne))); } @Test @@ -507,7 +507,7 @@ public void readOnly() { try { Bytes.from(example_bytes_twentyfour).readOnly().array(); fail(); - } catch (ReadOnlyBufferException e) { + } catch (ReadOnlyBufferException ignored) { } Bytes b = Bytes.from(example_bytes_twentyfour).readOnly(); diff --git a/src/test/java/at/favre/lib/bytes/BytesValidatorTest.java b/src/test/java/at/favre/lib/bytes/BytesValidatorTest.java index d7174fa..3baf603 100644 --- a/src/test/java/at/favre/lib/bytes/BytesValidatorTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesValidatorTest.java @@ -32,7 +32,7 @@ public class BytesValidatorTest extends ABytesTest { @Test - public void testOnlyOfValidator() throws Exception { + public void testOnlyOfValidator() { assertFalse(Bytes.allocate(0).validateNotOnlyZeros()); assertFalse(Bytes.allocate(2).validateNotOnlyZeros()); assertTrue(Bytes.wrap(example_bytes_seven).validateNotOnlyZeros()); @@ -50,7 +50,7 @@ public void testOnlyOfValidator() throws Exception { } @Test - public void testLengthValidators() throws Exception { + public void testLengthValidators() { assertFalse(Bytes.allocate(0).validate(atLeast(1))); assertTrue(Bytes.allocate(1).validate(atLeast(1))); assertTrue(Bytes.allocate(2).validate(atLeast(1))); @@ -65,7 +65,7 @@ public void testLengthValidators() throws Exception { } @Test - public void testOrValidation() throws Exception { + public void testOrValidation() { assertTrue(Bytes.allocate(0).validate(or(exactLength(1), exactLength(0)))); assertTrue(Bytes.allocate(2).validate(or(atLeast(3), onlyOf((byte) 0)))); assertTrue(Bytes.allocate(3).validate(or(onlyOf((byte) 1), onlyOf((byte) 0)))); @@ -74,7 +74,7 @@ public void testOrValidation() throws Exception { } @Test - public void testAndValidation() throws Exception { + public void testAndValidation() { assertFalse(Bytes.allocate(5).validate(and(atLeast(3), notOnlyOf((byte) 0)))); assertFalse(Bytes.wrap(new byte[]{1, 0}).validate(and(atLeast(3), notOnlyOf((byte) 0)))); assertTrue(Bytes.wrap(new byte[]{1, 0, 0}).validate(and(atLeast(3), notOnlyOf((byte) 0)))); @@ -82,26 +82,26 @@ public void testAndValidation() throws Exception { } @Test - public void testNotValidation() throws Exception { + public void testNotValidation() { assertEquals(Bytes.allocate(2).validate(not(onlyOf((byte) 0))), Bytes.allocate(2).validate(notOnlyOf((byte) 0))); assertTrue(Bytes.allocate(2).validate(not(atLeast(16)))); assertFalse(Bytes.allocate(2).validate(not(atMost(16)))); } @Test(expected = IllegalArgumentException.class) - public void testLogicalNoElements() throws Exception { + public void testLogicalNoElements() { Bytes.allocate(2).validate(new BytesValidator.Logical(Collections.emptyList(), BytesValidator.Logical.Operator.AND)); } @Test(expected = IllegalArgumentException.class) - public void testLogicalTooManyElements() throws Exception { + public void testLogicalTooManyElements() { Bytes.allocate(2).validate(new BytesValidator.Logical( Arrays.asList(new BytesValidator.Length(2, BytesValidator.Length.Mode.GREATER_OR_EQ_THAN), new BytesValidator.Length(2, BytesValidator.Length.Mode.EXACT)) , BytesValidator.Logical.Operator.NOT)); } @Test - public void testNestedValidation() throws Exception { + public void testNestedValidation() { assertTrue(Bytes.allocate(16).validate( or(and(atLeast(8), not(onlyOf(((byte) 0)))), or(exactLength(16), exactLength(12))))); @@ -113,7 +113,7 @@ public void testNestedValidation() throws Exception { } @Test - public void testStartWithValidate() throws Exception { + public void testStartWithValidate() { assertTrue(Bytes.wrap(new byte[]{0, 3, 0}).validate(startsWith((byte) 0, (byte) 3))); assertFalse(Bytes.wrap(new byte[]{0, 2, 0}).validate(startsWith((byte) 0, (byte) 3))); assertTrue(Bytes.wrap(new byte[]{0, 2, 0}).validate(startsWith((byte) 0))); @@ -123,7 +123,7 @@ public void testStartWithValidate() throws Exception { } @Test - public void testEndsWithValidate() throws Exception { + public void testEndsWithValidate() { assertTrue(Bytes.wrap(new byte[]{1, 2, 3}).validate(endsWith((byte) 2, (byte) 3))); assertFalse(Bytes.wrap(new byte[]{0, 2, 0}).validate(endsWith((byte) 3, (byte) 0))); assertTrue(Bytes.wrap(new byte[]{0, 2, 0}).validate(endsWith((byte) 0))); @@ -131,4 +131,4 @@ public void testEndsWithValidate() throws Exception { assertTrue(Bytes.allocate(16).validate(endsWith((byte) 0))); assertFalse(Bytes.allocate(16).validate(endsWith(Bytes.allocate(17).array()))); } -} \ No newline at end of file +} diff --git a/src/test/java/at/favre/lib/bytes/otherPackage/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/otherPackage/BytesTransformTest.java index 619c0a4..8756289 100644 --- a/src/test/java/at/favre/lib/bytes/otherPackage/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/otherPackage/BytesTransformTest.java @@ -31,7 +31,7 @@ public class BytesTransformTest { @Test - public void testApiVisible() throws Exception { + public void testApiVisible() { assertFalse(BytesTransformers.checksum(new CRC32(), ChecksumTransformer.Mode.TRANSFORM, 4).supportInPlaceTransformation()); } -} \ No newline at end of file +} From 2ddeebc2b3bb101362734f96a686f5207961d67b Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 12 Jan 2019 13:59:34 +0100 Subject: [PATCH 088/181] Changes some mentions to immutability --- README.md | 4 ++-- src/main/java/at/favre/lib/bytes/Bytes.java | 2 +- src/main/java/at/favre/lib/bytes/ReadOnlyBytes.java | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index f5172f4..ada8126 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Bytes is a utility library that makes it easy to **create**, **parse**, **transform**, **validate** and **convert** byte arrays in Java. It's main class `Bytes` is a collections of bytes and the main API. It supports [endianness](https://en.wikipedia.org/wiki/Endianness) -as well as **immutable** and **mutable** access, so the caller may decide to favor +as well as **copy-on-write** and **mutable** access, so the caller may decide to favor performance. This can be seen as combination of the features provided by [`BigInteger`](https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html), [`ByteBuffer`](https://docs.oracle.com/javase/7/docs/api/java/nio/ByteBuffer.html) but @@ -77,7 +77,7 @@ byte[] result = b.array(); //get as byte array ## API Description -Per default the instance is **immutable**, which means any transformation will +Per default the instance is **semi-immutable**, which means any transformation will create a copy of the internal array (it is, however, possible to get and modify the internal array). There is a **mutable** version which supports in-place modification for better performance and a **read-only** version which diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 03f77dd..91a1b0d 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1440,7 +1440,7 @@ public Bytes byteOrder(ByteOrder byteOrder) { /** * Returns a new read-only byte instance. Read-only means, that there is no direct access to the underlying byte - * array and all transformers will create a copy (ie. immutable) + * array and all transformers will create a copy. * * @return a new instance if not already readonly, or "this" otherwise */ diff --git a/src/main/java/at/favre/lib/bytes/ReadOnlyBytes.java b/src/main/java/at/favre/lib/bytes/ReadOnlyBytes.java index 4959c64..5baefee 100644 --- a/src/main/java/at/favre/lib/bytes/ReadOnlyBytes.java +++ b/src/main/java/at/favre/lib/bytes/ReadOnlyBytes.java @@ -34,7 +34,7 @@ public final class ReadOnlyBytes extends Bytes { /** - * Creates a new immutable instance + * Creates a new read-only instance * * @param byteArray internal byte array * @param byteOrder the internal byte order - this is used to interpret given array, not to change it From d1938016dfd305b5179810f3c9bcad79a396ab4b Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 12 Jan 2019 20:14:00 +0100 Subject: [PATCH 089/181] Update readme --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index f5172f4..7e45db7 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,10 @@ to blindly paste code snippets from [l](https://stackoverflow.com/questions/4231674/converting-an-array-of-bytes-to-listbyte) [o](https://stackoverflow.com/questions/28703273/sorting-byte-arrays-in-numeric-order) [w](https://stackoverflow.com/questions/4385623/bytes-of-a-string-in-java) -[.com](https://stackoverflow.com/questions/23360692/byte-position-in-java) +[.](https://stackoverflow.com/questions/23360692/byte-position-in-java) +[c](https://stackoverflow.com/questions/11437203/byte-array-to-int-array) +[o](https://stackoverflow.com/a/9670279/774398) +[m](https://stackoverflow.com/questions/1519736/random-shuffling-of-an-array) [![Download](https://api.bintray.com/packages/patrickfav/maven/bytes-java/images/download.svg)](https://bintray.com/patrickfav/maven/bytes-java/_latestVersion) [![Build Status](https://travis-ci.org/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.org/patrickfav/bytes-java) From 737044aa895f9bbc35b92804b17e3a9cd2d877e6 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 12 Jan 2019 20:38:54 +0100 Subject: [PATCH 090/181] Add `AutoCloseable` to MutableBytes interface --- CHANGELOG | 1 + README.md | 12 ++++++++++++ .../java/at/favre/lib/bytes/MutableBytes.java | 7 ++++++- .../at/favre/lib/bytes/MutableBytesTest.java | 16 ++++++++++++++++ 4 files changed, 35 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 767f922..03267a5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ * add `encodeBase64()` supporting padding-less encoding * add `toIntArray()` converter #28 * add `toLongArray()` converter #29 +* add `AutoCloseable` to MutableBytes interface #31 ### Breaking diff --git a/README.md b/README.md index 7e45db7..a8b97db 100644 --- a/README.md +++ b/README.md @@ -580,6 +580,18 @@ Bytes b = Bytes.from(array).mutable().copy(); assertTrue(b.isMutable()); ``` +##### AutoClosable for try-with-resources + +In security-relevant environments it is best practice to wipe the memory of secret data, such as +secret keys. This can be used with Java 7 feature try-with-resource like this: + +```java +try (MutableBytes b = Bytes.wrap(aesBytes).mutable()) { + SecretKey s = new SecretKeySpec(b.array(), "AES"); + ... +} +``` + #### Readonly Bytes On the other hand, if you want a export a instance with limited access, diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 218fd20..3e40a89 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -32,7 +32,7 @@ * Adds additional mutator, which may change the internal array in-place, like {@link #wipe()} */ @SuppressWarnings("WeakerAccess") -public final class MutableBytes extends Bytes { +public final class MutableBytes extends Bytes implements AutoCloseable { MutableBytes(byte[] byteArray, ByteOrder byteOrder) { super(byteArray, byteOrder, new Factory()); @@ -147,6 +147,11 @@ public boolean equals(Object o) { return super.equals(o); } + @Override + public void close() { + secureWipe(); + } + /** * Factory creating mutable byte types */ diff --git a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java index b7167fc..85b98d0 100644 --- a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java +++ b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java @@ -23,6 +23,8 @@ import org.junit.Test; +import javax.crypto.SecretKey; +import javax.crypto.spec.SecretKeySpec; import java.security.SecureRandom; import java.util.Arrays; @@ -167,4 +169,18 @@ public void testTransformerShouldBeMutable() { assertTrue(b.append(3).isMutable()); assertTrue(b.hashSha256().isMutable()); } + + @Test + public void testAutoCloseable() { + MutableBytes leak; + + try (MutableBytes b = Bytes.wrap(new byte[16]).mutable()) { + assertArrayEquals(new byte[16], b.array()); + SecretKey s = new SecretKeySpec(b.array(), "AES"); + leak = b; + } + + assertArrayNotEquals(new byte[16], leak.array()); + + } } From 7153117955cf5d1c8a979ce17337710191f0fd14 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 12 Jan 2019 22:11:31 +0100 Subject: [PATCH 091/181] Minor refactorings --- src/main/java/at/favre/lib/bytes/MutableBytes.java | 9 +++------ src/test/java/at/favre/lib/bytes/ABytesTest.java | 2 +- src/test/java/at/favre/lib/bytes/MutableBytesTest.java | 3 ++- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 3e40a89..847fbfa 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -51,8 +51,7 @@ public boolean isMutable() { * @throws IndexOutOfBoundsException if newArray.length > internal length */ public MutableBytes overwrite(byte[] newArray) { - overwrite(newArray, 0); - return this; + return overwrite(newArray, 0); } /** @@ -87,8 +86,7 @@ public MutableBytes setByteAt(int index, byte newByte) { * @return this instance */ public MutableBytes wipe() { - fill((byte) 0); - return this; + return fill((byte) 0); } /** @@ -108,8 +106,7 @@ public MutableBytes fill(byte fillByte) { * @return this instance */ public MutableBytes secureWipe() { - secureWipe(new SecureRandom()); - return this; + return secureWipe(new SecureRandom()); } /** diff --git a/src/test/java/at/favre/lib/bytes/ABytesTest.java b/src/test/java/at/favre/lib/bytes/ABytesTest.java index 076de64..ce4ab40 100644 --- a/src/test/java/at/favre/lib/bytes/ABytesTest.java +++ b/src/test/java/at/favre/lib/bytes/ABytesTest.java @@ -27,7 +27,7 @@ import static org.junit.Assert.*; -abstract class ABytesTest { +public abstract class ABytesTest { byte[] example_bytes_empty; byte[] example_bytes_one; diff --git a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java index 85b98d0..aa3868f 100644 --- a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java +++ b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java @@ -106,7 +106,8 @@ public void setByteAtTest() { for (int i = 0; i < b.length(); i++) { byte old = b.byteAt(i); - b.setByteAt(i, (byte) 0); + MutableBytes bcopy = b.setByteAt(i, (byte) 0); + assertSame(b, bcopy); if (old != 0) { assertNotEquals(old, b.byteAt(i)); } From f762bb465a623a36a753dc84e2a2c927b8ee5a34 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Mon, 14 Jan 2019 23:05:19 +0100 Subject: [PATCH 092/181] Fix some small issues --- README.md | 2 +- src/main/java/at/favre/lib/bytes/Bytes.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a8b97db..6e8914b 100644 --- a/README.md +++ b/README.md @@ -205,7 +205,7 @@ Bytes result = Bytes.wrap(array1).append("some string"); Bytes.wrap(array).xor(array2); // 0010 0011 xor() 1011 1000 = 1001 1011 Bytes.wrap(array).or(array2); // 0010 0011 or() 1101 0100 = 1111 0111 Bytes.wrap(array).and(array2); // 0010 0011 and() 1011 1000 = 0010 0000 -Bytes.wrap(array).negate(); // 0010 0011 negate() = 1101 1100 +Bytes.wrap(array).not(); // 0010 0011 negate() = 1101 1100 Bytes.wrap(array).leftShift(8); Bytes.wrap(array).rightShift(8); Bytes.wrap(array).switchBit(3, true); diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 03f77dd..79444c9 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -108,7 +108,7 @@ public static Bytes empty() { * @return new instance */ public static Bytes wrap(Bytes bytes) { - return new Bytes(bytes.internalArray(), bytes.byteOrder); + return wrap(bytes.internalArray(), bytes.byteOrder); } /** From 7238f6c098047df09855a82e816b3a0e63aa4ab8 Mon Sep 17 00:00:00 2001 From: pfavre Date: Fri, 8 Mar 2019 18:21:46 +0100 Subject: [PATCH 093/181] Update maven wrapper dist to 0.5.3 --- .mvn/wrapper/MavenWrapperDownloader.java | 49 ++++++++++++++--------- .mvn/wrapper/maven-wrapper.jar | Bin 47774 -> 50709 bytes .mvn/wrapper/maven-wrapper.properties | 4 +- mvnw | 27 +++++++++++-- mvnw.cmd | 19 +++++++-- 5 files changed, 69 insertions(+), 30 deletions(-) diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java index 4978101..b20a55a 100644 --- a/.mvn/wrapper/MavenWrapperDownloader.java +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -1,20 +1,18 @@ /* -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. -*/ - + * Copyright 2007-present the original author or authors. + * + * 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. + */ import java.net.*; import java.io.*; import java.nio.channels.*; @@ -22,11 +20,12 @@ Licensed to the Apache Software Foundation (ASF) under one public class MavenWrapperDownloader { + private static final String WRAPPER_VERSION = "0.5.3"; /** * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */ - private static final String DEFAULT_DOWNLOAD_URL = - "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar"; + private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + " .jar"; /** * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to @@ -74,13 +73,13 @@ public static void main(String args[]) { } } } - System.out.println("- Downloading from: : " + url); + System.out.println("- Downloading from: " + url); File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); if(!outputFile.getParentFile().exists()) { if(!outputFile.getParentFile().mkdirs()) { System.out.println( - "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'"); + "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); } } System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); @@ -96,6 +95,16 @@ public static void main(String args[]) { } private static void downloadFileFromURL(String urlString, File destination) throws Exception { + if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { + String username = System.getenv("MVNW_USERNAME"); + char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); + Authenticator.setDefault(new Authenticator() { + @Override + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + } URL website = new URL(urlString); ReadableByteChannel rbc; rbc = Channels.newChannel(website.openStream()); diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar index 41c70a7e0b7da7ecbbcf53b62aacdf8bc81e10b0..e89f07c229cbd97f4e39b0eddba64604d1dca9f6 100644 GIT binary patch delta 12756 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 delta 10111 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 F{{e1Wd{6)Y diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index c4914b5..1703626 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1,2 +1,2 @@ -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.5.4/apache-maven-3.5.4-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.0/apache-maven-3.6.0-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.3/maven-wrapper-0.5.3.jar diff --git a/mvnw b/mvnw index 5551fde..34d9dae 100755 --- a/mvnw +++ b/mvnw @@ -114,7 +114,6 @@ if $mingw ; then M2_HOME="`(cd "$M2_HOME"; pwd)`" [ -n "$JAVA_HOME" ] && JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" - # TODO classpath? fi if [ -z "$JAVA_HOME" ]; then @@ -212,7 +211,11 @@ else if [ "$MVNW_VERBOSE" = true ]; then echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." fi - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.3/maven-wrapper-0.5.3.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.3/maven-wrapper-0.5.3.jar" + fi while IFS="=" read key value; do case "$key" in (wrapperUrl) jarUrl="$value"; break ;; esac @@ -221,22 +224,38 @@ else echo "Downloading from: $jarUrl" fi wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi if command -v wget > /dev/null; then if [ "$MVNW_VERBOSE" = true ]; then echo "Found wget ... using wget" fi - wget "$jarUrl" -O "$wrapperJarPath" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + fi elif command -v curl > /dev/null; then if [ "$MVNW_VERBOSE" = true ]; then echo "Found curl ... using curl" fi - curl -o "$wrapperJarPath" "$jarUrl" + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + else if [ "$MVNW_VERBOSE" = true ]; then echo "Falling back to using Java to download" fi javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi if [ -e "$javaClass" ]; then if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then if [ "$MVNW_VERBOSE" = true ]; then diff --git a/mvnw.cmd b/mvnw.cmd index e5cfb0a..77b451d 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -120,9 +120,10 @@ 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 -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.4.2/maven-wrapper-0.4.2.jar" -FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties) DO ( - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.3/maven-wrapper-0.5.3.jar" + +FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B ) @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central @@ -130,9 +131,19 @@ FOR /F "tokens=1,2 delims==" %%A IN (%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-w if exist %WRAPPER_JAR% ( echo Found %WRAPPER_JAR% ) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.3/maven-wrapper-0.5.3.jar" + ) echo Couldn't find %WRAPPER_JAR%, downloading it ... echo Downloading from: %DOWNLOAD_URL% - powershell -Command "(New-Object Net.WebClient).DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')" + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" echo Finished downloading %WRAPPER_JAR% ) @REM End of extension From 586c1a8784084cb782567df64a54ffd43bba30a2 Mon Sep 17 00:00:00 2001 From: Konstantin Petrukhnov Date: Mon, 11 Mar 2019 12:32:17 +0200 Subject: [PATCH 094/181] Allocate methods that return MutableBytes --- .../java/at/favre/lib/bytes/MutableBytes.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 847fbfa..8ad8e91 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -38,6 +38,27 @@ public final class MutableBytes extends Bytes implements AutoCloseable { super(byteArray, byteOrder, new Factory()); } + /** + * Creates a new instance with an empty array filled with zeros. + * + * @param length of the internal array + * @return new instance + */ + public static MutableBytes allocate(int length) { + return allocate(length, (byte) 0); + } + + /** + * Creates a new instance with an empty array filled with given defaultValue + * + * @param length of the internal array + * @param defaultValue to fill with + * @return new instance + */ + public static MutableBytes allocate(int length, byte defaultValue) { + return Bytes.allocate(length, defaultValue).mutable(); + } + @Override public boolean isMutable() { return true; From 24534d7aecf8e15b4201bf397e2d73e9f2ece82d Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 12 Mar 2019 08:16:13 +0100 Subject: [PATCH 095/181] Add PR friendly travis ci config --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 6093a6b..13d8766 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,7 +17,8 @@ before_install: - tar xvf secrets.tar script: - - ./mvnw clean install -X -Djarsigner.skip=false checkstyle:check + - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then ./mvnw clean install -X -Djarsigner.skip=true checkstyle:check; fi' + - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then ./mvnw clean install -X -Djarsigner.skip=false checkstyle:check; fi' after_success: - ./mvnw test jacoco:report coveralls:report From 6ed1e2b95441caff7b369af318674a8871ed9851 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Tue, 12 Mar 2019 08:18:30 +0100 Subject: [PATCH 096/181] Add changelog for latest PR --- CHANGELOG | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG b/CHANGELOG index 03267a5..cf96dba 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -8,6 +8,7 @@ * add `toIntArray()` converter #28 * add `toLongArray()` converter #29 * add `AutoCloseable` to MutableBytes interface #31 +* add `allocate()` as mutable byte static constructor (thx @petrukhnov) ### Breaking From 373750629b2ba23c2f2511031eaf2c10a12e4f49 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 16 Mar 2019 15:25:43 +0100 Subject: [PATCH 097/181] Update checkstyle to 8.18 to fix CVE-2019-9658 This was brought to my attention by Github's security alert feature. Link: https://nvd.nist.gov/vuln/detail/CVE-2019-9658 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 632db64..443e9f7 100644 --- a/pom.xml +++ b/pom.xml @@ -50,7 +50,7 @@ com.puppycrawl.tools checkstyle - 8.11 + 8.18 From 04608362f7e9f80bef9ab8941dc250f74e6f33c6 Mon Sep 17 00:00:00 2001 From: pfavre Date: Thu, 4 Apr 2019 20:20:45 +0200 Subject: [PATCH 098/181] Bump version to 1.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 443e9f7..ff9836e 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 1.0.0 + 1.1.0 jar Bytes Utility Library From 6c79fe31a6564ac398980896b9dd134beb1794b7 Mon Sep 17 00:00:00 2001 From: pfavre Date: Thu, 4 Apr 2019 20:22:23 +0200 Subject: [PATCH 099/181] Add new unsecureRandom() constructor to create fast and/or deterministic pseudo random values --- CHANGELOG | 4 +++ README.md | 8 ++++- src/main/java/at/favre/lib/bytes/Bytes.java | 29 +++++++++++++++++++ .../lib/bytes/BytesConstructorTests.java | 22 ++++++++++++++ 4 files changed, 62 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index cf96dba..e44d4f9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ # Releases +## v1.1.0 + +* add `unsecureRandom()` constructor which creates random for e.g. tests or deterministic randoms + ## v1.0.0 * add `append()` method supporting multiple byte arrays #26 diff --git a/README.md b/README.md index 67fe2e1..4a48491 100644 --- a/README.md +++ b/README.md @@ -145,12 +145,18 @@ Bytes.allocate(4, (byte) 1); //fill with 0x01 Bytes.empty(); //creates zero length byte array ``` -Creating **random** byte arrays for e.g. testing: +Creating cryptographically secure **random** byte arrays: ```java Bytes.random(12); ``` +Creating cryptographically unsecure **random** byte arrays for e.g. testing: + +```java +Bytes.unsecureRandom(12, 12345L); // using seed makes it deterministic +``` + Reading byte content of encoded `String`s: ```java diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index c834e46..f712f00 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -662,6 +662,35 @@ public static Bytes random(int length) { return random(length, new SecureRandom()); } + /** + * A new instance with pseudo random bytes using an unsecure random number generator. + * This may be used in e.g. tests. In production code use {@link #random(int)} per default. + *

+ * ONLY USE IN NON-SECURITY RELEVANT CONTEXT! + * + * @param length desired array length + * @return random instance + */ + public static Bytes unsecureRandom(int length) { + return random(length, new Random()); + } + + /** + * A new instance with pseudo random bytes using an unsecure random number generator. + * This may be used in e.g. tests to create predictable numbers. + *

+ * In production code use {@link #random(int)} per default. + *

+ * ONLY USE IN NON-SECURITY RELEVANT CONTEXT! + * + * @param length desired array length + * @param seed used to seed random number generator - using same seed will generate same numbers + * @return random instance + */ + public static Bytes unsecureRandom(int length, long seed) { + return random(length, new Random(seed)); + } + /** * A new instance with random bytes. * diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index d08d46f..aa4f8c8 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -34,6 +34,7 @@ import java.nio.IntBuffer; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; +import java.security.SecureRandom; import java.text.Normalizer; import java.util.Arrays; import java.util.BitSet; @@ -547,4 +548,25 @@ private void testUUID(UUID uuid) { public void fromUUIDNullArgument() { Bytes.from((UUID) null); } + + @Test + public void createSecureRandom() { + assertNotEquals(Bytes.random(16), Bytes.random(16)); + } + + @Test + public void createSecureRandomWithExplicitSecureRandom() { + assertNotEquals(Bytes.random(16, new SecureRandom()), Bytes.random(16, new SecureRandom())); + } + + @Test + public void createUnsecureRandom() { + assertNotEquals(Bytes.unsecureRandom(128), Bytes.unsecureRandom(128)); + } + + @Test + public void createUnsecureRandomWithSeed() { + assertEquals(Bytes.unsecureRandom(128, 4L), Bytes.unsecureRandom(128, 4L)); + assertNotEquals(Bytes.unsecureRandom(4, 3L), Bytes.unsecureRandom(4, 4L)); + } } From 3b55099afbbb18fabe4d25e7bc794431c9452b49 Mon Sep 17 00:00:00 2001 From: pfavre Date: Tue, 9 Apr 2019 07:36:31 +0200 Subject: [PATCH 100/181] Make BaseEncoding accessible from outside the lib --- src/main/java/at/favre/lib/bytes/BaseEncoding.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/BaseEncoding.java b/src/main/java/at/favre/lib/bytes/BaseEncoding.java index e40076e..8fe8d3e 100644 --- a/src/main/java/at/favre/lib/bytes/BaseEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BaseEncoding.java @@ -42,7 +42,8 @@ final class BaseEncoding implements BinaryToTextEncoding.EncoderDecoder { private final Alphabet alphabet; private final Character paddingChar; - BaseEncoding(Alphabet alphabet, Character paddingChar) { + @SuppressWarnings("WeakerAccess") + public BaseEncoding(Alphabet alphabet, Character paddingChar) { this.alphabet = Objects.requireNonNull(alphabet); this.paddingChar = paddingChar; } From 7c36da33d47a5d0d3b66ddd1e632a893782daaa6 Mon Sep 17 00:00:00 2001 From: JadePaukkunen <43367473+JadePaukkunen@users.noreply.github.com> Date: Mon, 15 Apr 2019 18:27:16 +0300 Subject: [PATCH 101/181] =?UTF-8?q?Overwrite-methods=20that=20take=20Bytes?= =?UTF-8?q?=20as=20parameters.=20Tests=20for=20IndexOutOf=E2=80=A6=20(#35)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Overwrite-methods that take Bytes as parameters. Tests for IndexOutOfBounds-exception when overwritten array exceeds the original size and NullPointerException when the array used to overwrite is null * add requested changes --- CHANGELOG | 5 +++ .../java/at/favre/lib/bytes/MutableBytes.java | 29 ++++++++++++ .../at/favre/lib/bytes/MutableBytesTest.java | 45 +++++++++++++++++++ 3 files changed, 79 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index e44d4f9..173588d 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ # Releases +## Unreleased + +* adds overwrite method to Bytes +* adds tests to NullPointerException and IndexOutOfBoundsException + ## v1.1.0 * add `unsecureRandom()` constructor which creates random for e.g. tests or deterministic randoms diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 8ad8e91..0653d28 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -71,10 +71,25 @@ public boolean isMutable() { * @return this instance * @throws IndexOutOfBoundsException if newArray.length > internal length */ + public MutableBytes overwrite(byte[] newArray) { + return overwrite(newArray, 0); } + /** + * Uses given Bytes array to overwrite internal array + * + * @param newBytes used to overwrite internal + * @return this instance + * @throws IndexOutOfBoundsException if newArray.length > internal length + */ + + public MutableBytes overwrite(Bytes newBytes) { + + return overwrite(newBytes, 0); + } + /** * Uses given array to overwrite internal array. * @@ -83,12 +98,26 @@ public MutableBytes overwrite(byte[] newArray) { * @return this instance * @throws IndexOutOfBoundsException if newArray.length + offsetInternalArray > internal length */ + public MutableBytes overwrite(byte[] newArray, int offsetInternalArray) { Objects.requireNonNull(newArray, "must provide non-null array as source"); System.arraycopy(newArray, 0, internalArray(), offsetInternalArray, newArray.length); return this; } + /** + * Uses given Bytes array to overwrite internal array. + * + * @param newBytes used to overwrite internal + * @param offsetInternalArray index of the internal array to start overwriting + * @return this instance + * @throws IndexOutOfBoundsException if newBytes.length + offsetInternalArray > internal length + */ + + public MutableBytes overwrite(Bytes newBytes, int offsetInternalArray) { + return overwrite(Objects.requireNonNull(newBytes, "must provide non-null array as source").array(), offsetInternalArray); + } + /** * Sets new byte to given index * diff --git a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java index aa3868f..831cbfe 100644 --- a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java +++ b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java @@ -63,6 +63,50 @@ public void overwritePartialArray2() { .append(Bytes.wrap(example_bytes_seven).copy(2, example_bytes_seven.length - 2)).array(), b.array()); } + @Test + public void overwriteBytes() { + MutableBytes a = fromAndTest(example_bytes_seven).mutable(); + MutableBytes b = Bytes.from((byte)0).mutable(); + MutableBytes c = a.overwrite(b, 0).mutable(); + MutableBytes d = Bytes.wrap(a).copy(1, a.array().length-1).mutable(); + + assertArrayEquals(c.array(), Bytes.from(b).append(d).array()); + } + + @Test + public void overwriteTooBigArrayShouldThrowException() { + MutableBytes b = fromAndTest(example_bytes_seven).mutable(); + try { + b.overwrite(new byte[]{(byte) 0xAA, 0x30}, b.length()); + fail(); + } catch(IndexOutOfBoundsException ignored) {} + + } + + @Test + public void overwriteTooBigBytesShouldThrowException() { + MutableBytes b = fromAndTest(example_bytes_seven).mutable(); + try { + b.overwrite(Bytes.from((byte) 0xAA, 0x30), b.length()); + fail(); + } catch(IndexOutOfBoundsException ignored) {} + + } + + @Test + public void overwriteNullArrayShouldThrowException() { + MutableBytes nonsense = null; + MutableBytes b = fromAndTest(example_bytes_seven).mutable(); + + try{ + b.overwrite(nonsense); + fail(); + } catch (NullPointerException ignored){} + + + } + + @Test public void fill() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); @@ -184,4 +228,5 @@ public void testAutoCloseable() { assertArrayNotEquals(new byte[16], leak.array()); } + } From d7543c573cf37f98b6377a00f096f225e417b54a Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 15 Apr 2019 20:00:18 +0200 Subject: [PATCH 102/181] Fix illegal javadoc characters --- src/main/java/at/favre/lib/bytes/MutableBytes.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 0653d28..93a92d4 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -73,7 +73,6 @@ public boolean isMutable() { */ public MutableBytes overwrite(byte[] newArray) { - return overwrite(newArray, 0); } @@ -82,11 +81,10 @@ public MutableBytes overwrite(byte[] newArray) { * * @param newBytes used to overwrite internal * @return this instance - * @throws IndexOutOfBoundsException if newArray.length > internal length + * @throws IndexOutOfBoundsException if newArray.length > internal length */ public MutableBytes overwrite(Bytes newBytes) { - return overwrite(newBytes, 0); } @@ -111,7 +109,7 @@ public MutableBytes overwrite(byte[] newArray, int offsetInternalArray) { * @param newBytes used to overwrite internal * @param offsetInternalArray index of the internal array to start overwriting * @return this instance - * @throws IndexOutOfBoundsException if newBytes.length + offsetInternalArray > internal length + * @throws IndexOutOfBoundsException if newBytes.length + offsetInternalArray > internal length */ public MutableBytes overwrite(Bytes newBytes, int offsetInternalArray) { From fa7b7cedd6ca8ac861844104ffb0fc785d03709c Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 15 Apr 2019 20:01:32 +0200 Subject: [PATCH 103/181] Update CHANGELOG --- CHANGELOG | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 173588d..783b0f3 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,13 +1,9 @@ # Releases -## Unreleased - -* adds overwrite method to Bytes -* adds tests to NullPointerException and IndexOutOfBoundsException - ## v1.1.0 * add `unsecureRandom()` constructor which creates random for e.g. tests or deterministic randoms +* adds overwrite method to Bytes (thx @JadePaukkunen) ## v1.0.0 From b146335916c44433bb967662e0d471c6208bfb90 Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 15 Apr 2019 20:11:58 +0200 Subject: [PATCH 104/181] Make project OSGi compatible refs #36 --- CHANGELOG | 1 + README.md | 29 +++++++++++++++++++++++++++++ pom.xml | 8 +++++++- 3 files changed, 37 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 783b0f3..d563706 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ * add `unsecureRandom()` constructor which creates random for e.g. tests or deterministic randoms * adds overwrite method to Bytes (thx @JadePaukkunen) +* make project OSGi compatible #36 ## v1.0.0 diff --git a/README.md b/README.md index 4a48491..b35cf00 100644 --- a/README.md +++ b/README.md @@ -616,6 +616,35 @@ readOnlyBytes.byteBuffer(); readOnlyBytes.inputStream(); ``` +## Download + +The artifacts are deployed to [jcenter](https://bintray.com/bintray/jcenter) and [Maven Central](https://search.maven.org/). + +### Maven + +Add the dependency of the [latest version](https://github.com/patrickfav/bytes/releases) to your `pom.xml`: + + + at.favre.lib + bytes + {latest-version} + + +### Gradle + +Add to your `build.gradle` module dependencies: + + implementation group: 'at.favre.lib', name: 'bytes', version: '{latest-version}' + +### Local Jar Library + +[Grab jar from latest release.](https://github.com/patrickfav/bytes/releases/latest) + +### OSGi + +The library should be prepared to be used with the OSGi framework with the help of the [bundle plugin](http://felix.apache.org/documentation/subprojects/apache-felix-maven-bundle-plugin-bnd.html). + + ## Digital Signatures ### Signed Jar diff --git a/pom.xml b/pom.xml index ff9836e..c9b5e4d 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib bytes 1.1.0 - jar + bundle Bytes Utility Library Bytes is a utility library that makes it easy to create, parse, transform, validate and convert byte @@ -37,6 +37,12 @@ + + org.apache.felix + maven-bundle-plugin + 4.2.0 + true + org.apache.maven.plugins maven-checkstyle-plugin From cfb7dce18116e95e933a85f853f984466b36fea4 Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 15 Apr 2019 21:32:03 +0200 Subject: [PATCH 105/181] Add `toFloatArray()` and `toDoubleArray()` converter refs #30 --- CHANGELOG | 2 + src/main/java/at/favre/lib/bytes/Bytes.java | 38 ++++++++ src/main/java/at/favre/lib/bytes/Util.java | 54 ++++++++++++ .../bytes/BytesToConvertOtherTypesTest.java | 86 ++++++++++++++++++- .../at/favre/lib/bytes/UtilConverterTest.java | 38 ++++++++ 5 files changed, 217 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index d563706..5689827 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -5,6 +5,8 @@ * add `unsecureRandom()` constructor which creates random for e.g. tests or deterministic randoms * adds overwrite method to Bytes (thx @JadePaukkunen) * make project OSGi compatible #36 +* add `toFloatArray()` converter #30 +* add `toDoubleArray()` converter #30 ## v1.0.0 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index f712f00..d3abbbf 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1956,6 +1956,25 @@ public float toFloat() { return internalBuffer().getFloat(); } + /** + * Converts the internal byte array to an float array, that is, every 4 bytes will be packed into a single float. + *

+ * E.g. 4 bytes will be packed to a length 1 float array: + *

+     *  [b1, b2, b3, b4] = [float1]
+     * 
+ *

+ * This conversion respects the internal byte order. Will only work if all bytes can be directly mapped to float, + * which means the byte array length must be dividable by 4 without rest. + * + * @return new float[] instance representing this byte array + * @throws IllegalArgumentException if internal byte length mod 4 != 0 + */ + public float[] toFloatArray() { + Util.Validation.checkModLength(length(), 4, "creating an float array"); + return Util.Converter.toFloatArray(internalArray(), byteOrder); + } + /** * If the underlying byte array is exactly 8 byte / 64 bit long, return the * representation for a Java double value. The output is dependent on the set {@link #byteOrder()}. @@ -1969,6 +1988,25 @@ public double toDouble() { return internalBuffer().getDouble(); } + /** + * Converts the internal byte array to an double array, that is, every 8 bytes will be packed into a single double. + *

+ * E.g. 8 bytes will be packed to a length 1 double array: + *

+     *  [b1, b2, b3, b4, b5, b6, b7, b8] = [double1]
+     * 
+ *

+ * This conversion respects the internal byte order. Will only work if all bytes can be directly mapped to double, + * which means the byte array length must be dividable by 8 without rest. + * + * @return new double[] instance representing this byte array + * @throws IllegalArgumentException if internal byte length mod 8 != 0 + */ + public double[] toDoubleArray() { + Util.Validation.checkModLength(length(), 8, "creating an double array"); + return Util.Converter.toDoubleArray(internalArray(), byteOrder); + } + /** * Decodes the internal byte array to UTF-8 char array. * This implementation will not internally create a {@link String}. diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 70d35e0..f2419c3 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -719,6 +719,60 @@ static long[] toLongArray(byte[] bytes, ByteOrder byteOrder) { return array; } + /** + * Converts the byte array to an float array. This will spread 4 bytes into a single float: + * + *

+         *     [b1, b2, b3, b4] = [float1]
+         * 
+ * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * + * @param bytes to convert to float array, must be % 4 == 0 to work correctly + * @param byteOrder of the byte array + * @return float array + */ + static float[] toFloatArray(byte[] bytes, ByteOrder byteOrder) { + FloatBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asFloatBuffer(); + float[] array = new float[buffer.remaining()]; + buffer.get(array); + return array; + } + + /** + * Converts the byte array to an double array. This will spread 8 bytes into a single double: + * + *
+         *     [b1, b2, b3, b4, b5, b6, b7, b8] = [double1]
+         * 
+ * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * + * @param bytes to convert to double array, must be % 8 == 0 to work correctly + * @param byteOrder of the byte array + * @return double array + */ + static double[] toDoubleArray(byte[] bytes, ByteOrder byteOrder) { + DoubleBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asDoubleBuffer(); + double[] array = new double[buffer.remaining()]; + buffer.get(array); + return array; + } + /** * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and * 8 byte least significant bits into an byte array. diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index 9b7fdea..b2f9dd6 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -307,7 +307,6 @@ public void testToLongEmptyArray() { assertArrayEquals(new long[0], Bytes.empty().toLongArray()); } - @Test public void testToLongArrayLittleEndian() { assertArrayEquals(new long[]{1}, Bytes.wrap(new byte[]{1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toLongArray()); @@ -322,4 +321,89 @@ public void testToLongArrayLittleEndian() { 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toLongArray()); } + + @Test + public void testToFloatArray() { + assertArrayEquals(new float[]{1.4E-45f}, Bytes.wrap(new byte[]{0, 0, 0, 1}).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{3.6E-43f}, Bytes.wrap(new byte[]{0, 0, 1, 1}).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{9.2196E-41f}, Bytes.wrap(new byte[]{0, 1, 1, 1}).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{2.3694278E-38f}, Bytes.wrap(new byte[]{1, 1, 1, 1}).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{1.897368E-18f}, Bytes.wrap(new byte[]{34, 12, 0, 69}).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{1.22888184E8f}, Bytes.wrap(new byte[]{76, (byte) 234, 99, (byte) 255}).toFloatArray(), 0.01f); + + assertArrayEquals(new float[]{1.4E-45f, 1.4E-45f}, Bytes.wrap(new byte[]{0, 0, 0, 1, 0, 0, 0, 1}).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{3.6E-43f, 1.4E-45f}, Bytes.wrap(new byte[]{0, 0, 1, 1, 0, 0, 0, 1}).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{3.6E-43f, 9.2196E-41f, 1.4E-45f}, Bytes.wrap(new byte[]{0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1}).toFloatArray(), 0.01f); + } + + @Test(expected = IllegalArgumentException.class) + public void testToFloatArrayNotMod4Was5Byte() { + Bytes.wrap(new byte[]{1, 0, 0, 0, 1}).toFloatArray(); + } + + @Test(expected = IllegalArgumentException.class) + public void testToFloatArrayNotMod4Only3Byte() { + Bytes.wrap(new byte[]{0, 0, 1}).toFloatArray(); + } + + @Test + public void testToFloatEmptyArray() { + assertArrayEquals(new float[0], Bytes.empty().toFloatArray(), 0.01f); + } + + @Test + public void testToFloatArrayLittleEndian() { + assertArrayEquals(new float[]{1.4E-45f}, Bytes.wrap(new byte[]{1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{3.6E-43f}, Bytes.wrap(new byte[]{1, 1, 0, 0}, ByteOrder.LITTLE_ENDIAN).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{1.22888184E8f}, Bytes.wrap(new byte[]{(byte) 255, 99, (byte) 234, 76}, ByteOrder.LITTLE_ENDIAN).toFloatArray(), 0.01f); + + assertArrayEquals(new float[]{1.4E-45f, 1.4E-45f}, Bytes.wrap(new byte[]{1, 0, 0, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{3.6E-43f, 1.4E-45f}, Bytes.wrap(new byte[]{1, 1, 0, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toFloatArray(), 0.01f); + assertArrayEquals(new float[]{3.6E-43f, 9.2196E-41f, 1.4E-45f}, Bytes.wrap(new byte[]{1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toFloatArray(), 0.01f); + } + + @Test + public void testToDoubleArray() { + assertArrayEquals(new double[]{1.4E-45}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 1}).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{3.6E-43}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 1, 1}).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{4.228405109821336E-86}, Bytes.wrap(new byte[]{46, 53, 7, 98, 34, 12, 0, 69}).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{-2.385279556059394E-168}, Bytes.wrap(new byte[]{(byte) 157, 34, 1, 0, 76, (byte) 234, 99, (byte) 255}).toDoubleArray(), 0.01); + + assertArrayEquals(new double[]{1.4E-45, 1.4E-45}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1}).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{3.6E-43, 1.4E-45}, Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1}).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{5.43230922614E-312, 1.39067116189206E-309, 1.4E-45}, Bytes.wrap(new byte[]{ + 0, 0, 1, 0, 0, 0, 1, 1, + 0, 1, 0, 0, 0, 1, 1, 1, + 0, 0, 0, 0, 0, 0, 0, 1}).toDoubleArray(), 0.01); + } + + @Test(expected = IllegalArgumentException.class) + public void testToDoubleArrayNotMod4Was9Byte() { + Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 1}).toDoubleArray(); + } + + @Test(expected = IllegalArgumentException.class) + public void testToDoubleArrayNotMod4Only7Byte() { + Bytes.wrap(new byte[]{0, 0, 0, 0, 0, 0, 1}).toDoubleArray(); + } + + @Test + public void testToDoubleEmptyArray() { + assertArrayEquals(new double[0], Bytes.empty().toDoubleArray(), 0.01); + } + + @Test + public void testToDoubleArrayLittleEndian() { + assertArrayEquals(new double[]{1.4E-45}, Bytes.wrap(new byte[]{1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{3.6E-43}, Bytes.wrap(new byte[]{1, 1, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{4.228405109821336E-86}, Bytes.wrap(new byte[]{69, 0, 12, 34, 98, 7, 53, 46}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{-2.385279556059394E-168}, Bytes.wrap(new byte[]{(byte) 255, 99, (byte) 234, 76, 0, 1, 34, (byte) 157}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); + + assertArrayEquals(new double[]{1.4E-45, 1.4E-45}, Bytes.wrap(new byte[]{1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{3.6E-43f, 1.4E-45}, Bytes.wrap(new byte[]{1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); + assertArrayEquals(new double[]{5.43230922614E-312, 1.39067116189206E-309, 1.4E-45}, Bytes.wrap(new byte[]{ + 1, 1, 0, 0, 0, 1, 0, 0, + 1, 1, 1, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); + } } diff --git a/src/test/java/at/favre/lib/bytes/UtilConverterTest.java b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java index 4b68d14..8aa717f 100644 --- a/src/test/java/at/favre/lib/bytes/UtilConverterTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java @@ -155,4 +155,42 @@ public void testToLongArray() { assertArrayEquals(new long[0], Util.Converter.toLongArray(new byte[0], ByteOrder.LITTLE_ENDIAN)); assertArrayEquals(new long[0], Util.Converter.toLongArray(new byte[0], ByteOrder.BIG_ENDIAN)); } + + @Test + public void testToFloatArray() { + assertArrayEquals(new float[]{1.4E-45f}, Util.Converter.toFloatArray(new byte[]{0, 0, 0, 1}, ByteOrder.BIG_ENDIAN), 0.01f); + assertArrayEquals(new float[]{3.6E-43f}, Util.Converter.toFloatArray(new byte[]{0, 0, 1, 1}, ByteOrder.BIG_ENDIAN), 0.01f); + + assertArrayEquals(new float[]{1.4E-45f}, Util.Converter.toFloatArray(new byte[]{1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN), 0.01f); + assertArrayEquals(new float[]{3.6E-43f}, Util.Converter.toFloatArray(new byte[]{1, 1, 0, 0}, ByteOrder.LITTLE_ENDIAN), 0.01f); + + assertArrayEquals(new float[]{2.3694278E-38f}, Util.Converter.toFloatArray(new byte[]{1, 1, 1, 1}, ByteOrder.BIG_ENDIAN), 0.01f); + assertArrayEquals(new float[]{1.897368E-18f}, Util.Converter.toFloatArray(new byte[]{34, 12, 0, 69}, ByteOrder.BIG_ENDIAN), 0.01f); + assertArrayEquals(new float[]{1.22888184E8f}, Util.Converter.toFloatArray(new byte[]{76, (byte) 234, 99, (byte) 255}, ByteOrder.BIG_ENDIAN), 0.01f); + assertArrayEquals(new float[]{3.6E-43f, 9.2196E-41f, 1.4E-45f}, Util.Converter.toFloatArray(new byte[]{0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1}, ByteOrder.BIG_ENDIAN), 0.01f); + + assertArrayEquals(new float[]{1.22888184E8f}, Util.Converter.toFloatArray(new byte[]{(byte) 255, 99, (byte) 234, 76}, ByteOrder.LITTLE_ENDIAN), 0.01f); + assertArrayEquals(new float[]{3.6E-43f, 9.2196E-41f, 1.4E-45f}, Util.Converter.toFloatArray(new byte[]{1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN), 0.01f); + + assertArrayEquals(new float[0], Util.Converter.toFloatArray(new byte[0], ByteOrder.LITTLE_ENDIAN), 0.01f); + assertArrayEquals(new float[0], Util.Converter.toFloatArray(new byte[0], ByteOrder.BIG_ENDIAN), 0.01f); + } + + @Test + public void testToDoubleArray() { + assertArrayEquals(new double[]{1.4E-45}, Util.Converter.toDoubleArray(new byte[]{0, 0, 0, 0, 0, 0, 0, 1}, ByteOrder.BIG_ENDIAN), 0.01); + assertArrayEquals(new double[]{3.6E-43}, Util.Converter.toDoubleArray(new byte[]{0, 0, 0, 0, 0, 0, 1, 1}, ByteOrder.BIG_ENDIAN), 0.01); + + assertArrayEquals(new double[]{1.4E-45}, Util.Converter.toDoubleArray(new byte[]{1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN), 0.01); + assertArrayEquals(new double[]{3.6E-43}, Util.Converter.toDoubleArray(new byte[]{1, 1, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN), 0.01); + + assertArrayEquals(new double[]{-2.385279556059394E-168}, Util.Converter.toDoubleArray(new byte[]{(byte) 157, 34, 1, 0, 76, (byte) 234, 99, (byte) 255}, ByteOrder.BIG_ENDIAN), 0.01); + assertArrayEquals(new double[]{-2.385279556059394E-168}, Util.Converter.toDoubleArray(new byte[]{(byte) 255, 99, (byte) 234, 76, 0, 1, 34, (byte) 157}, ByteOrder.LITTLE_ENDIAN), 0.01); + + assertArrayEquals(new double[]{1.27E-321, 4.9E-324}, Util.Converter.toDoubleArray(new byte[]{0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1}, ByteOrder.BIG_ENDIAN), 0.01); + assertArrayEquals(new double[]{1.27E-321, 4.9E-324}, Util.Converter.toDoubleArray(new byte[]{1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN), 0.01); + + assertArrayEquals(new double[0], Util.Converter.toDoubleArray(new byte[0], ByteOrder.LITTLE_ENDIAN), 0.01); + assertArrayEquals(new double[0], Util.Converter.toDoubleArray(new byte[0], ByteOrder.BIG_ENDIAN), 0.01); + } } From e235b0618f2e8345cf117bf5bd78010e4cdfa9bb Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 15 Apr 2019 21:55:49 +0200 Subject: [PATCH 106/181] Add enforcer plugin --- pom.xml | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/pom.xml b/pom.xml index c9b5e4d..61b82f5 100644 --- a/pom.xml +++ b/pom.xml @@ -17,10 +17,6 @@ https://github.com/patrickfav/bytes-java 2017 - - 3.1.0 - - UTF-8 UTF-8 @@ -37,6 +33,26 @@ + + org.apache.maven.plugins + maven-enforcer-plugin + 3.0.0-M2 + + + enforce-maven + + enforce + + + + + [3.3.9,) + + + + + + org.apache.felix maven-bundle-plugin From f20f00b453be2372c4c19d32d8782dbc427ec5c0 Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 15 Apr 2019 22:33:07 +0200 Subject: [PATCH 107/181] Bump version to 1.2.0 --- CHANGELOG | 2 ++ pom.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 5689827..384015c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,7 @@ # Releases +## v1.2.0 + ## v1.1.0 * add `unsecureRandom()` constructor which creates random for e.g. tests or deterministic randoms diff --git a/pom.xml b/pom.xml index 61b82f5..37eb723 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 1.1.0 + 1.2.0 bundle Bytes Utility Library From e12610418c6e1f98922a469062f2193f18a38aac Mon Sep 17 00:00:00 2001 From: pfavre Date: Thu, 23 May 2019 22:54:37 +0200 Subject: [PATCH 108/181] Let hex decoder accept even and odd number of string length With auto zero padding (ie. 'E3F' is same as '0E3F'). Also adds more tests for error cases and improve javadoc refs #37 --- CHANGELOG | 2 ++ .../favre/lib/bytes/BinaryToTextEncoding.java | 22 ++++++++++---- src/main/java/at/favre/lib/bytes/Bytes.java | 10 +++++-- .../lib/bytes/BytesParseAndEncodingTest.java | 30 +++++++++++++++++-- 4 files changed, 55 insertions(+), 9 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 384015c..b1dcff5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ ## v1.2.0 +* let hex decoder accept odd length string #37 + ## v1.1.0 * add `unsecureRandom()` constructor which creates random for e.g. tests or deterministic randoms diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index 00ef667..0c64183 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -104,27 +104,39 @@ public String encode(byte[] byteArray, ByteOrder byteOrder) { @Override public byte[] decode(CharSequence hexString) { - if (Objects.requireNonNull(hexString, "hex input must not be null").length() % 2 != 0) - throw new IllegalArgumentException("invalid hex string, must be mod 2 == 0"); int start; - if (hexString.length() > 2 && + if (Objects.requireNonNull(hexString).length() > 2 && hexString.charAt(0) == '0' && hexString.charAt(1) == 'x') { start = 2; } else { start = 0; } + int len = hexString.length(); + boolean isOddLength = len % 2 != 0; + if (isOddLength) { + start--; + } + byte[] data = new byte[(len - start) / 2]; int first4Bits; int second4Bits; for (int i = start; i < len; i += 2) { - first4Bits = Character.digit(hexString.charAt(i), 16); + if (i == start && isOddLength) { + first4Bits = 0; + } else { + first4Bits = Character.digit(hexString.charAt(i), 16); + } second4Bits = Character.digit(hexString.charAt(i + 1), 16); if (first4Bits == -1 || second4Bits == -1) { - throw new IllegalArgumentException("'" + hexString.charAt(i) + hexString.charAt(i + 1) + "' at index " + i + " is not hex formatted"); + if (i == start && isOddLength) { + throw new IllegalArgumentException("'" + hexString.charAt(i + 1) + "' at index " + (i + 1) + " is not hex formatted"); + } else { + throw new IllegalArgumentException("'" + hexString.charAt(i) + hexString.charAt(i + 1) + "' at index " + i + " is not hex formatted"); + } } data[(i - start) / 2] = (byte) ((first4Bits << 4) + second4Bits); diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index d3abbbf..1cb22c4 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -593,11 +593,17 @@ public static Bytes parseRadix(CharSequence radixNumberString, int radix) { } /** - * Parsing of base16/HEX encoded byte arrays. Will accept upper- and lowercase variant and ignores - * possible "0x" prefix. + * Parsing of base16/HEX encoded byte arrays. This is by design a very flexible decoder accepting the following cases: + * + *
    + *
  • Upper- and lowercase a-f (also mixed case)
  • + *
  • Prefix with 0x which will be ignored
  • + *
  • Even and odd number of string length with auto zero padding (ie. 'E3F' is same as '0E3F')
  • + *
* * @param hexString the encoded string * @return decoded instance + * @throws IllegalArgumentException if string contains something else than [0-9a-fA-F] */ public static Bytes parseHex(CharSequence hexString) { return parse(hexString, new BinaryToTextEncoding.Hex()); diff --git a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java index 5938c17..4af006f 100644 --- a/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesParseAndEncodingTest.java @@ -42,11 +42,37 @@ public void parseHex() { assertArrayEquals(defaultArray, Bytes.parseHex("A0E1").array()); assertArrayEquals(defaultArray, Bytes.parseHex("a0e1").array()); assertArrayEquals(defaultArray, Bytes.parseHex(Bytes.parseHex("A0E1").encodeHex()).array()); + assertArrayEquals(defaultArray, Bytes.parseHex(Bytes.parseHex("a0E1").encodeHex()).array()); + } + + @Test + public void parseHexOddNumberStrings() { + assertArrayEquals(new byte[]{(byte) 0x00}, Bytes.parseHex("0").array()); + assertArrayEquals(new byte[]{(byte) 0x0E}, Bytes.parseHex("E").array()); + assertArrayEquals(new byte[]{(byte) 0x0A, (byte) 0x0E}, Bytes.parseHex("A0E").array()); + assertArrayEquals(new byte[]{(byte) 0x03, (byte) 0xEA, (byte) 0x0E}, Bytes.parseHex("3EA0E").array()); + assertArrayEquals(new byte[]{(byte) 0x00, (byte) 0xF3, (byte) 0xEA, (byte) 0x0E}, Bytes.parseHex("0F3EA0E").array()); + assertArrayEquals(new byte[]{(byte) 0x0A, (byte) 0xD0, (byte) 0xF3, (byte) 0xEA, (byte) 0x0E}, Bytes.parseHex("AD0F3EA0E").array()); + } + + @Test(expected = IllegalArgumentException.class) + public void parseHexIllegalChars() { + Bytes.parseHex("AX"); + } + + @Test(expected = IllegalArgumentException.class) + public void parseHexIllegalChars2() { + Bytes.parseHex("XX"); + } + + @Test(expected = IllegalArgumentException.class) + public void parseHexIllegalChars3() { + Bytes.parseHex("Y"); } @Test(expected = IllegalArgumentException.class) - public void parseHexInvalid() { - Bytes.parseHex("A0E"); + public void parseHexIllegalChars4() { + Bytes.parseHex("F3El0E"); } @Test From 853f13db8fab90a3951802e8884d4045db213832 Mon Sep 17 00:00:00 2001 From: pfavre Date: Thu, 13 Jun 2019 19:32:02 +0200 Subject: [PATCH 109/181] Limit ci log output --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 13d8766..497a69d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -17,8 +17,8 @@ before_install: - tar xvf secrets.tar script: - - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then ./mvnw clean install -X -Djarsigner.skip=true checkstyle:check; fi' - - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then ./mvnw clean install -X -Djarsigner.skip=false checkstyle:check; fi' + - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then ./mvnw clean install -Djarsigner.skip=true checkstyle:check; fi' + - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then ./mvnw clean install -Djarsigner.skip=false checkstyle:check; fi' after_success: - ./mvnw test jacoco:report coveralls:report From ae7afbf0f37b82685657d69e4fb6551857908c62 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 26 Sep 2019 23:45:41 +0200 Subject: [PATCH 110/181] Improve hex encoder performance by factor 5 --- CHANGELOG | 1 + .../favre/lib/bytes/BinaryToTextEncoding.java | 20 +- .../lib/bytes/EncodingHexJmhBenchmark.java | 179 ++++++++++++++++++ 3 files changed, 189 insertions(+), 11 deletions(-) create mode 100644 src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java diff --git a/CHANGELOG b/CHANGELOG index b1dcff5..ce17805 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -3,6 +3,7 @@ ## v1.2.0 * let hex decoder accept odd length string #37 +* improve hex encoder performance by factor 5 ## v1.1.0 diff --git a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java index 0c64183..01f7654 100644 --- a/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BinaryToTextEncoding.java @@ -72,6 +72,8 @@ interface EncoderDecoder extends Encoder, Decoder { * Hex or Base16 */ class Hex implements EncoderDecoder { + private static final char[] LOOKUP_TABLE_LOWER = new char[]{0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66}; + private static final char[] LOOKUP_TABLE_UPPER = new char[]{0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46}; private final boolean upperCase; public Hex() { @@ -84,22 +86,18 @@ public Hex(boolean upperCase) { @Override public String encode(byte[] byteArray, ByteOrder byteOrder) { - StringBuilder sb = new StringBuilder(byteArray.length * 2); + + final char[] buffer = new char[byteArray.length * 2]; + final char[] lookup = upperCase ? LOOKUP_TABLE_UPPER : LOOKUP_TABLE_LOWER; int index; - char first4Bit; - char last4Bit; for (int i = 0; i < byteArray.length; i++) { index = (byteOrder == ByteOrder.BIG_ENDIAN) ? i : byteArray.length - i - 1; - first4Bit = Character.forDigit((byteArray[index] >> 4) & 0xF, 16); - last4Bit = Character.forDigit((byteArray[index] & 0xF), 16); - if (upperCase) { - first4Bit = Character.toUpperCase(first4Bit); - last4Bit = Character.toUpperCase(last4Bit); - } - sb.append(first4Bit).append(last4Bit); + + buffer[i << 1] = lookup[(byteArray[index] >> 4) & 0xF]; + buffer[(i << 1) + 1] = lookup[(byteArray[index] & 0xF)]; } - return sb.toString(); + return new String(buffer); } @Override diff --git a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java new file mode 100644 index 0000000..98d48bc --- /dev/null +++ b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java @@ -0,0 +1,179 @@ +/* + * Copyright 2018 Patrick Favre-Bulle + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package at.favre.lib.bytes; + +import org.openjdk.jmh.annotations.*; + +import java.math.BigInteger; +import java.nio.ByteOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Random; +import java.util.concurrent.TimeUnit; + +/** + * Simple benchmark checking the performance of hex encoding + *

+ * Benchmark (byteLength) Mode Cnt Score Error Units + * EncodingHexJmhBenchmark.encodeBigInteger 4 thrpt 4 5675746,504 ± 842567,828 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 8 thrpt 4 1696726,355 ± 212646,110 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 16 thrpt 4 880997,077 ± 116768,783 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 128 thrpt 4 81326,528 ± 13169,476 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 512 thrpt 4 15520,869 ± 3587,318 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 1000000 thrpt 4 2,470 ± 0,110 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 4 thrpt 4 15544365,475 ± 1333444,750 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 8 thrpt 4 14342273,380 ± 1997502,302 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 16 thrpt 4 12410491,100 ± 1671309,859 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 128 thrpt 4 3896074,682 ± 453096,190 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 512 thrpt 4 909938,189 ± 137965,178 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 1000000 thrpt 4 465,305 ± 182,300 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode 4 thrpt 4 15917799,229 ± 1133947,331 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode 8 thrpt 4 14490924,588 ± 819188,772 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode 16 thrpt 4 12635881,815 ± 1545063,635 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode 128 thrpt 4 3807810,524 ± 499109,818 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode 512 thrpt 4 917914,259 ± 122729,496 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode 1000000 thrpt 4 471,778 ± 126,385 ops/s + */ +@State(Scope.Thread) +@Fork(1) +@Warmup(iterations = 2, time = 2) +@Measurement(iterations = 4, time = 5) +@BenchmarkMode(Mode.Throughput) +@OutputTimeUnit(TimeUnit.SECONDS) +public class EncodingHexJmhBenchmark { + + @Param({"4", "8", "16", "128", "512", "1000000"}) + private int byteLength; + private Map rndMap; + + private BinaryToTextEncoding.EncoderDecoder option1; + private BinaryToTextEncoding.EncoderDecoder option2; + private BinaryToTextEncoding.EncoderDecoder option3; + private BinaryToTextEncoding.EncoderDecoder option4; + private Random random; + + @Setup(Level.Trial) + public void setup() { + random = new Random(); + + option1 = new StackOverflowAnswer1Encoder(); + option2 = new BinaryToTextEncoding.Hex(true); + option3 = new BigIntegerHexEncoder(); + option4 = new OldBytesImplementation(); + + rndMap = new HashMap<>(); + int[] lengths = new int[]{4, 8, 16, 128, 512, 1000000}; + for (int length : lengths) { + int count = 10; + rndMap.put(length, new Bytes[count]); + for (int i = 0; i < count; i++) { + rndMap.get(length)[i] = Bytes.random(length); + } + } + } + + @Benchmark + public String encodeStackOverflowCode() { + return encodeDecode(option1); + } + + @Benchmark + public String encodeBytesLib() { + return encodeDecode(option2); + } + + @Benchmark + public String encodeBigInteger() { + return encodeDecode(option3); + } + + @Benchmark + public String encodeOldBytesLib() { + return encodeDecode(option4); + } + + + private String encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { + Bytes[] bytes = rndMap.get(byteLength); + int rndNum = random.nextInt(bytes.length); + return encoder.encode(bytes[rndNum].array(), ByteOrder.BIG_ENDIAN); + } + + /** + * See: https://stackoverflow.com/a/9855338/774398 + */ + static final class StackOverflowAnswer1Encoder implements BinaryToTextEncoding.EncoderDecoder { + private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray(); + + @Override + public String encode(byte[] bytes, ByteOrder byteOrder) { + char[] hexChars = new char[bytes.length * 2]; + for (int j = 0; j < bytes.length; j++) { + int v = bytes[j] & 0xFF; + hexChars[j * 2] = HEX_ARRAY[v >>> 4]; + hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F]; + } + return new String(hexChars); + } + + @Override + public byte[] decode(CharSequence encoded) { + throw new UnsupportedOperationException(); + } + } + + static final class BigIntegerHexEncoder implements BinaryToTextEncoding.EncoderDecoder { + @Override + public String encode(byte[] bytes, ByteOrder byteOrder) { + return new BigInteger(1, bytes).toString(16); + } + + @Override + public byte[] decode(CharSequence encoded) { + throw new UnsupportedOperationException(); + } + } + + static final class OldBytesImplementation implements BinaryToTextEncoding.EncoderDecoder { + + @Override + public String encode(byte[] byteArray, ByteOrder byteOrder) { + StringBuilder sb = new StringBuilder(byteArray.length * 2); + + int index; + char first4Bit; + char last4Bit; + for (int i = 0; i < byteArray.length; i++) { + index = (byteOrder == ByteOrder.BIG_ENDIAN) ? i : byteArray.length - i - 1; + first4Bit = Character.forDigit((byteArray[index] >> 4) & 0xF, 16); + last4Bit = Character.forDigit((byteArray[index] & 0xF), 16); + sb.append(first4Bit).append(last4Bit); + } + return sb.toString(); + } + + @Override + public byte[] decode(CharSequence encoded) { + throw new UnsupportedOperationException(); + } + } +} From 01cd9ca9c17a388bc6f764e8c80483d932d6ab7e Mon Sep 17 00:00:00 2001 From: pfavre Date: Thu, 26 Sep 2019 23:53:20 +0200 Subject: [PATCH 111/181] Change CI JDK version to openjdk --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 497a69d..1696369 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,7 +5,7 @@ sudo: false # route your build to the container-based infrastructure for a faste language: java install: true jdk: - - oraclejdk8 + - openjdk8 env: global: From fce97dbdd27f192afd086247ec0f6b3f284641ae Mon Sep 17 00:00:00 2001 From: pfavre Date: Thu, 26 Sep 2019 23:56:05 +0200 Subject: [PATCH 112/181] Bump version to 1.3.0 --- CHANGELOG | 4 +++- pom.xml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index ce17805..36ef1de 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,9 +1,11 @@ # Releases +## v1.3.0 +* improve hex encoder performance by factor 5 + ## v1.2.0 * let hex decoder accept odd length string #37 -* improve hex encoder performance by factor 5 ## v1.1.0 diff --git a/pom.xml b/pom.xml index 37eb723..89e3ce1 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ at.favre.lib bytes - 1.2.0 + 1.3.0 bundle Bytes Utility Library From 81f82674952e039fce3a58301ac5fd7df2eb448c Mon Sep 17 00:00:00 2001 From: pfavre Date: Fri, 27 Sep 2019 22:28:05 +0200 Subject: [PATCH 113/181] Add new implementation to hex benchmark --- .../lib/bytes/EncodingHexJmhBenchmark.java | 99 +++++++++++++++++-- 1 file changed, 92 insertions(+), 7 deletions(-) diff --git a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java index 98d48bc..9f894bc 100644 --- a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java +++ b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java @@ -53,10 +53,44 @@ * EncodingHexJmhBenchmark.encodeStackOverflowCode 512 thrpt 4 917914,259 ± 122729,496 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode 1000000 thrpt 4 471,778 ± 126,385 ops/s */ + +/** + * Benchmark (byteLength) Mode Cnt Score Error Units + * EncodingHexJmhBenchmark.encodeBigInteger 4 thrpt 2 9571230,509 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 8 thrpt 2 3724335,328 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 16 thrpt 2 1454898,799 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 128 thrpt 2 135397,758 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 512 thrpt 2 26011,356 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 1000000 thrpt 2 4,163 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 4 thrpt 2 24530310,446 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 8 thrpt 2 23430124,448 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 16 thrpt 2 20531301,587 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 128 thrpt 2 6733027,370 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 512 thrpt 2 1606857,133 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 1000000 thrpt 2 772,010 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 4 thrpt 2 18639952,166 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 8 thrpt 2 15485869,934 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 16 thrpt 2 11458232,999 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 128 thrpt 2 2042399,306 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 512 thrpt 2 280376,308 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 1000000 thrpt 2 122,003 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 4 thrpt 2 24755066,357 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 8 thrpt 2 23455073,140 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 16 thrpt 2 20548280,011 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 128 thrpt 2 6675118,357 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 512 thrpt 2 1618356,891 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 1000000 thrpt 2 829,757 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 4 thrpt 2 25323515,857 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 8 thrpt 2 24027424,805 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 16 thrpt 2 21262668,356 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 128 thrpt 2 7492036,913 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 512 thrpt 2 1789353,825 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 1000000 thrpt 2 935,383 ops/s + */ @State(Scope.Thread) @Fork(1) -@Warmup(iterations = 2, time = 2) -@Measurement(iterations = 4, time = 5) +@Warmup(iterations = 1, time = 2) +@Measurement(iterations = 2, time = 5) @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.SECONDS) public class EncodingHexJmhBenchmark { @@ -69,6 +103,7 @@ public class EncodingHexJmhBenchmark { private BinaryToTextEncoding.EncoderDecoder option2; private BinaryToTextEncoding.EncoderDecoder option3; private BinaryToTextEncoding.EncoderDecoder option4; + private BinaryToTextEncoding.EncoderDecoder option5; private Random random; @Setup(Level.Trial) @@ -79,6 +114,7 @@ public void setup() { option2 = new BinaryToTextEncoding.Hex(true); option3 = new BigIntegerHexEncoder(); option4 = new OldBytesImplementation(); + option5 = new StackOverflowAnswer2Encoder(); rndMap = new HashMap<>(); int[] lengths = new int[]{4, 8, 16, 128, 512, 1000000}; @@ -91,26 +127,30 @@ public void setup() { } } - @Benchmark - public String encodeStackOverflowCode() { + // @Benchmark + public String encodeStackOverflowCode1() { return encodeDecode(option1); } - @Benchmark + // @Benchmark public String encodeBytesLib() { return encodeDecode(option2); } - @Benchmark + // @Benchmark public String encodeBigInteger() { return encodeDecode(option3); } - @Benchmark + // @Benchmark public String encodeOldBytesLib() { return encodeDecode(option4); } + @Benchmark + public String encodeStackOverflowCode2() { + return encodeDecode(option5); + } private String encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { Bytes[] bytes = rndMap.get(byteLength); @@ -141,6 +181,51 @@ public byte[] decode(CharSequence encoded) { } } + /** + * With full lookup table of all 256 values + * See: https://stackoverflow.com/a/21429909/774398 + */ + static final class StackOverflowAnswer2Encoder implements BinaryToTextEncoding.EncoderDecoder { + + private static final char[] BYTE2HEX = ( + "000102030405060708090A0B0C0D0E0F" + + "101112131415161718191A1B1C1D1E1F" + + "202122232425262728292A2B2C2D2E2F" + + "303132333435363738393A3B3C3D3E3F" + + "404142434445464748494A4B4C4D4E4F" + + "505152535455565758595A5B5C5D5E5F" + + "606162636465666768696A6B6C6D6E6F" + + "707172737475767778797A7B7C7D7E7F" + + "808182838485868788898A8B8C8D8E8F" + + "909192939495969798999A9B9C9D9E9F" + + "A0A1A2A3A4A5A6A7A8A9AAABACADAEAF" + + "B0B1B2B3B4B5B6B7B8B9BABBBCBDBEBF" + + "C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF" + + "D0D1D2D3D4D5D6D7D8D9DADBDCDDDEDF" + + "E0E1E2E3E4E5E6E7E8E9EAEBECEDEEEF" + + "F0F1F2F3F4F5F6F7F8F9FAFBFCFDFEFF").toCharArray(); + + @Override + public String encode(byte[] bytes, ByteOrder byteOrder) { + final int len = bytes.length; + final char[] chars = new char[len << 1]; + int hexIndex; + int idx = 0; + int ofs = 0; + while (ofs < len) { + hexIndex = (bytes[ofs++] & 0xFF) << 1; + chars[idx++] = BYTE2HEX[hexIndex++]; + chars[idx++] = BYTE2HEX[hexIndex]; + } + return new String(chars); + } + + @Override + public byte[] decode(CharSequence encoded) { + throw new UnsupportedOperationException(); + } + } + static final class BigIntegerHexEncoder implements BinaryToTextEncoding.EncoderDecoder { @Override public String encode(byte[] bytes, ByteOrder byteOrder) { From 192d604ed30a7038c3c3d2ba8ead85b7721d7fbc Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 26 Oct 2019 11:26:43 +0200 Subject: [PATCH 114/181] Add more benchmark results --- .../lib/bytes/EncodingHexJmhBenchmark.java | 200 +++++++++++++----- 1 file changed, 144 insertions(+), 56 deletions(-) diff --git a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java index 9f894bc..49873e7 100644 --- a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java +++ b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java @@ -33,64 +33,69 @@ /** * Simple benchmark checking the performance of hex encoding *

- * Benchmark (byteLength) Mode Cnt Score Error Units - * EncodingHexJmhBenchmark.encodeBigInteger 4 thrpt 4 5675746,504 ± 842567,828 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 8 thrpt 4 1696726,355 ± 212646,110 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 16 thrpt 4 880997,077 ± 116768,783 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 128 thrpt 4 81326,528 ± 13169,476 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 512 thrpt 4 15520,869 ± 3587,318 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 1000000 thrpt 4 2,470 ± 0,110 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 4 thrpt 4 15544365,475 ± 1333444,750 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 8 thrpt 4 14342273,380 ± 1997502,302 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 16 thrpt 4 12410491,100 ± 1671309,859 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 128 thrpt 4 3896074,682 ± 453096,190 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 512 thrpt 4 909938,189 ± 137965,178 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 1000000 thrpt 4 465,305 ± 182,300 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode 4 thrpt 4 15917799,229 ± 1133947,331 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode 8 thrpt 4 14490924,588 ± 819188,772 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode 16 thrpt 4 12635881,815 ± 1545063,635 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode 128 thrpt 4 3807810,524 ± 499109,818 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode 512 thrpt 4 917914,259 ± 122729,496 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode 1000000 thrpt 4 471,778 ± 126,385 ops/s + * # Run complete. Total time: 00:22:00 + *

+ * REMEMBER: The numbers below are just data. To gain reusable insights, you need to follow up on + * why the numbers are the way they are. Use profilers (see -prof, -lprof), design factorial + * experiments, perform baseline and negative tests that provide experimental control, make sure + * the benchmarking environment is safe on JVM/OS/HW level, ask for reviews from the domain experts. + * Do not assume the numbers tell you what you want them to tell. + *

+ * Benchmark (byteLength) Mode Cnt Score Error Units + * EncodingHexJmhBenchmark.encodeBigInteger 4 thrpt 3 9427359,108 ± 194693,624 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 8 thrpt 3 2638943,318 ± 15520,030 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 16 thrpt 3 2088514,337 ± 50090,292 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 128 thrpt 3 133665,420 ± 5750,982 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 512 thrpt 3 25807,764 ± 407,273 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 1000000 thrpt 3 4,178 ± 0,021 ops/s + * EncodingHexJmhBenchmark.encodeBouncyCastleHex 4 thrpt 3 14260598,238 ± 4113483,586 ops/s + * EncodingHexJmhBenchmark.encodeBouncyCastleHex 8 thrpt 3 10910660,517 ± 51077,989 ops/s + * EncodingHexJmhBenchmark.encodeBouncyCastleHex 16 thrpt 3 7501666,934 ± 938571,073 ops/s + * EncodingHexJmhBenchmark.encodeBouncyCastleHex 128 thrpt 3 1077236,523 ± 78734,473 ops/s + * EncodingHexJmhBenchmark.encodeBouncyCastleHex 512 thrpt 3 266238,359 ± 2544,657 ops/s + * EncodingHexJmhBenchmark.encodeBouncyCastleHex 1000000 thrpt 3 152,235 ± 8,156 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 4 thrpt 3 24944896,332 ± 2367456,841 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 8 thrpt 3 23222999,376 ± 396218,748 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 16 thrpt 3 20423170,033 ± 194747,311 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 128 thrpt 3 6685522,295 ± 920540,781 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 512 thrpt 3 1612325,148 ± 18002,919 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 1000000 thrpt 3 825,527 ± 124,972 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 4 thrpt 3 17973467,504 ± 429817,214 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 8 thrpt 3 14836039,023 ± 16437596,584 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 16 thrpt 3 11727630,076 ± 1849815,074 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 128 thrpt 3 2656731,985 ± 53887,109 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 512 thrpt 3 288949,898 ± 7650,867 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 1000000 thrpt 3 127,737 ± 3,982 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 4 thrpt 3 24557504,065 ± 797466,455 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 8 thrpt 3 23515327,490 ± 979922,009 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 16 thrpt 3 20377272,084 ± 480955,369 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 128 thrpt 3 6767893,154 ± 511154,141 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 512 thrpt 3 1573543,465 ± 1126382,628 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 1000000 thrpt 3 833,885 ± 54,099 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 4 thrpt 3 25220997,342 ± 852230,094 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 8 thrpt 3 24152600,074 ± 480651,708 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 16 thrpt 3 21494551,701 ± 1722250,353 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 128 thrpt 3 7554272,476 ± 1329386,082 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 512 thrpt 3 1781989,859 ± 125696,811 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 1000000 thrpt 3 935,685 ± 103,571 ops/s + * EncodingHexJmhBenchmark.encodeGuavaBase16 4 thrpt 3 17606767,347 ± 3615884,433 ops/s + * EncodingHexJmhBenchmark.encodeGuavaBase16 8 thrpt 3 14077449,253 ± 3570354,199 ops/s + * EncodingHexJmhBenchmark.encodeGuavaBase16 16 thrpt 3 10177925,910 ± 5584265,227 ops/s + * EncodingHexJmhBenchmark.encodeGuavaBase16 128 thrpt 3 2094658,415 ± 2321008,783 ops/s + * EncodingHexJmhBenchmark.encodeGuavaBase16 512 thrpt 3 514528,610 ± 20419,732 ops/s + * EncodingHexJmhBenchmark.encodeGuavaBase16 1000000 thrpt 3 257,440 ± 23,100 ops/s + * EncodingHexJmhBenchmark.encodeSpringSecurity 4 thrpt 3 25269684,873 ± 1820484,918 ops/s + * EncodingHexJmhBenchmark.encodeSpringSecurity 8 thrpt 3 22631565,512 ± 291386,502 ops/s + * EncodingHexJmhBenchmark.encodeSpringSecurity 16 thrpt 3 18704986,566 ± 604936,041 ops/s + * EncodingHexJmhBenchmark.encodeSpringSecurity 128 thrpt 3 4904805,240 ± 18454,315 ops/s + * EncodingHexJmhBenchmark.encodeSpringSecurity 512 thrpt 3 1165535,921 ± 13487,051 ops/s + * EncodingHexJmhBenchmark.encodeSpringSecurity 1000000 thrpt 3 601,152 ± 248,099 ops/s */ -/** - * Benchmark (byteLength) Mode Cnt Score Error Units - * EncodingHexJmhBenchmark.encodeBigInteger 4 thrpt 2 9571230,509 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 8 thrpt 2 3724335,328 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 16 thrpt 2 1454898,799 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 128 thrpt 2 135397,758 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 512 thrpt 2 26011,356 ops/s - * EncodingHexJmhBenchmark.encodeBigInteger 1000000 thrpt 2 4,163 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 4 thrpt 2 24530310,446 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 8 thrpt 2 23430124,448 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 16 thrpt 2 20531301,587 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 128 thrpt 2 6733027,370 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 512 thrpt 2 1606857,133 ops/s - * EncodingHexJmhBenchmark.encodeBytesLib 1000000 thrpt 2 772,010 ops/s - * EncodingHexJmhBenchmark.encodeOldBytesLib 4 thrpt 2 18639952,166 ops/s - * EncodingHexJmhBenchmark.encodeOldBytesLib 8 thrpt 2 15485869,934 ops/s - * EncodingHexJmhBenchmark.encodeOldBytesLib 16 thrpt 2 11458232,999 ops/s - * EncodingHexJmhBenchmark.encodeOldBytesLib 128 thrpt 2 2042399,306 ops/s - * EncodingHexJmhBenchmark.encodeOldBytesLib 512 thrpt 2 280376,308 ops/s - * EncodingHexJmhBenchmark.encodeOldBytesLib 1000000 thrpt 2 122,003 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode1 4 thrpt 2 24755066,357 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode1 8 thrpt 2 23455073,140 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode1 16 thrpt 2 20548280,011 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode1 128 thrpt 2 6675118,357 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode1 512 thrpt 2 1618356,891 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode1 1000000 thrpt 2 829,757 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode2 4 thrpt 2 25323515,857 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode2 8 thrpt 2 24027424,805 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode2 16 thrpt 2 21262668,356 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode2 128 thrpt 2 7492036,913 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode2 512 thrpt 2 1789353,825 ops/s - * EncodingHexJmhBenchmark.encodeStackOverflowCode2 1000000 thrpt 2 935,383 ops/s - */ @State(Scope.Thread) @Fork(1) -@Warmup(iterations = 1, time = 2) -@Measurement(iterations = 2, time = 5) +@Warmup(iterations = 2, time = 3) +@Measurement(iterations = 3, time = 10) @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.SECONDS) public class EncodingHexJmhBenchmark { @@ -104,6 +109,9 @@ public class EncodingHexJmhBenchmark { private BinaryToTextEncoding.EncoderDecoder option3; private BinaryToTextEncoding.EncoderDecoder option4; private BinaryToTextEncoding.EncoderDecoder option5; + private BinaryToTextEncoding.EncoderDecoder option6; + private BinaryToTextEncoding.EncoderDecoder option7; + private BinaryToTextEncoding.EncoderDecoder option8; private Random random; @Setup(Level.Trial) @@ -115,6 +123,9 @@ public void setup() { option3 = new BigIntegerHexEncoder(); option4 = new OldBytesImplementation(); option5 = new StackOverflowAnswer2Encoder(); +// option6 = new BCUtilEncoder(); +// option7 = new GuavaEncoder(); +// option8 = new SpringSecurityEncoder(); rndMap = new HashMap<>(); int[] lengths = new int[]{4, 8, 16, 128, 512, 1000000}; @@ -132,7 +143,7 @@ public String encodeStackOverflowCode1() { return encodeDecode(option1); } - // @Benchmark + @Benchmark public String encodeBytesLib() { return encodeDecode(option2); } @@ -147,11 +158,26 @@ public String encodeOldBytesLib() { return encodeDecode(option4); } - @Benchmark + // @Benchmark public String encodeStackOverflowCode2() { return encodeDecode(option5); } +// @Benchmark +// public String encodeBouncyCastleHex() { +// return encodeDecode(option6); +// } +// +// @Benchmark +// public String encodeGuavaBase16() { +// return encodeDecode(option7); +// } +// +// @Benchmark +// public String encodeSpringSecurity() { +// return encodeDecode(option8); +// } + private String encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { Bytes[] bytes = rndMap.get(byteLength); int rndNum = random.nextInt(bytes.length); @@ -261,4 +287,66 @@ public byte[] decode(CharSequence encoded) { throw new UnsupportedOperationException(); } } + + /* + * Requires dependencies: + * + * + * + org.bouncycastle + bcprov-jdk15on + 1.60 + test + + + + com.google.guava + guava + 28.1-jre + test + + + + org.springframework.security + spring-security-core + 5.2.0.RELEASE + test + + */ + +// static final class BCUtilEncoder implements BinaryToTextEncoding.EncoderDecoder { +// @Override +// public String encode(byte[] array, ByteOrder byteOrder) { +// return org.bouncycastle.util.encoders.Hex.toHexString(array); +// } +// +// @Override +// public byte[] decode(CharSequence encoded) { +// return org.bouncycastle.util.encoders.Hex.decode(encoded.toString()); +// } +// } +// +// static final class GuavaEncoder implements BinaryToTextEncoding.EncoderDecoder { +// @Override +// public String encode(byte[] array, ByteOrder byteOrder) { +// return com.google.common.io.BaseEncoding.base16().lowerCase().encode(array); +// } +// +// @Override +// public byte[] decode(CharSequence encoded) { +// return com.google.common.io.BaseEncoding.base16().lowerCase().decode(encoded); +// } +// } +// +// static final class SpringSecurityEncoder implements BinaryToTextEncoding.EncoderDecoder { +// @Override +// public String encode(byte[] array, ByteOrder byteOrder) { +// return new String(org.springframework.security.crypto.codec.Hex.encode(array)); +// } +// +// @Override +// public byte[] decode(CharSequence encoded) { +// return org.springframework.security.crypto.codec.Hex.decode(encoded); +// } +// } } From 6c355b258cf7e30a83219f6c7275b7f171765d4f Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 27 Oct 2019 22:51:07 +0100 Subject: [PATCH 115/181] Add new implementation to hex benchmark --- .../lib/bytes/EncodingHexJmhBenchmark.java | 130 ++++++++++++++---- 1 file changed, 102 insertions(+), 28 deletions(-) diff --git a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java index 49873e7..da0afbd 100644 --- a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java +++ b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java @@ -45,51 +45,70 @@ * EncodingHexJmhBenchmark.encodeBigInteger 4 thrpt 3 9427359,108 ± 194693,624 ops/s * EncodingHexJmhBenchmark.encodeBigInteger 8 thrpt 3 2638943,318 ± 15520,030 ops/s * EncodingHexJmhBenchmark.encodeBigInteger 16 thrpt 3 2088514,337 ± 50090,292 ops/s + * EncodingHexJmhBenchmark.encodeBigInteger 32 thrpt 3 1002560,730 ± 11096,621 ops/s * EncodingHexJmhBenchmark.encodeBigInteger 128 thrpt 3 133665,420 ± 5750,982 ops/s * EncodingHexJmhBenchmark.encodeBigInteger 512 thrpt 3 25807,764 ± 407,273 ops/s * EncodingHexJmhBenchmark.encodeBigInteger 1000000 thrpt 3 4,178 ± 0,021 ops/s * EncodingHexJmhBenchmark.encodeBouncyCastleHex 4 thrpt 3 14260598,238 ± 4113483,586 ops/s * EncodingHexJmhBenchmark.encodeBouncyCastleHex 8 thrpt 3 10910660,517 ± 51077,989 ops/s * EncodingHexJmhBenchmark.encodeBouncyCastleHex 16 thrpt 3 7501666,934 ± 938571,073 ops/s + * EncodingHexJmhBenchmark.encodeBouncyCastleHex 32 thrpt 3 3657718,637 ± 214574,329 ops/s * EncodingHexJmhBenchmark.encodeBouncyCastleHex 128 thrpt 3 1077236,523 ± 78734,473 ops/s * EncodingHexJmhBenchmark.encodeBouncyCastleHex 512 thrpt 3 266238,359 ± 2544,657 ops/s * EncodingHexJmhBenchmark.encodeBouncyCastleHex 1000000 thrpt 3 152,235 ± 8,156 ops/s * EncodingHexJmhBenchmark.encodeBytesLib 4 thrpt 3 24944896,332 ± 2367456,841 ops/s * EncodingHexJmhBenchmark.encodeBytesLib 8 thrpt 3 23222999,376 ± 396218,748 ops/s * EncodingHexJmhBenchmark.encodeBytesLib 16 thrpt 3 20423170,033 ± 194747,311 ops/s + * EncodingHexJmhBenchmark.encodeBytesLib 32 thrpt 3 15723370,706 ± 148740,280 ops/s * EncodingHexJmhBenchmark.encodeBytesLib 128 thrpt 3 6685522,295 ± 920540,781 ops/s * EncodingHexJmhBenchmark.encodeBytesLib 512 thrpt 3 1612325,148 ± 18002,919 ops/s * EncodingHexJmhBenchmark.encodeBytesLib 1000000 thrpt 3 825,527 ± 124,972 ops/s * EncodingHexJmhBenchmark.encodeOldBytesLib 4 thrpt 3 17973467,504 ± 429817,214 ops/s * EncodingHexJmhBenchmark.encodeOldBytesLib 8 thrpt 3 14836039,023 ± 16437596,584 ops/s * EncodingHexJmhBenchmark.encodeOldBytesLib 16 thrpt 3 11727630,076 ± 1849815,074 ops/s + * EncodingHexJmhBenchmark.encodeOldBytesLib 32 thrpt 3 7440067,345 ± 10968063,752 ops/s * EncodingHexJmhBenchmark.encodeOldBytesLib 128 thrpt 3 2656731,985 ± 53887,109 ops/s * EncodingHexJmhBenchmark.encodeOldBytesLib 512 thrpt 3 288949,898 ± 7650,867 ops/s * EncodingHexJmhBenchmark.encodeOldBytesLib 1000000 thrpt 3 127,737 ± 3,982 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode1 4 thrpt 3 24557504,065 ± 797466,455 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode1 8 thrpt 3 23515327,490 ± 979922,009 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode1 16 thrpt 3 20377272,084 ± 480955,369 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode1 32 thrpt 3 16273674,820 ± 745874,444 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode1 128 thrpt 3 6767893,154 ± 511154,141 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode1 512 thrpt 3 1573543,465 ± 1126382,628 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode1 1000000 thrpt 3 833,885 ± 54,099 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode2 4 thrpt 3 25220997,342 ± 852230,094 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode2 8 thrpt 3 24152600,074 ± 480651,708 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode2 16 thrpt 3 21494551,701 ± 1722250,353 ops/s + * EncodingHexJmhBenchmark.encodeStackOverflowCode2 32 thrpt 3 17283936,474 ± 134694,570 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode2 128 thrpt 3 7554272,476 ± 1329386,082 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode2 512 thrpt 3 1781989,859 ± 125696,811 ops/s * EncodingHexJmhBenchmark.encodeStackOverflowCode2 1000000 thrpt 3 935,685 ± 103,571 ops/s * EncodingHexJmhBenchmark.encodeGuavaBase16 4 thrpt 3 17606767,347 ± 3615884,433 ops/s * EncodingHexJmhBenchmark.encodeGuavaBase16 8 thrpt 3 14077449,253 ± 3570354,199 ops/s * EncodingHexJmhBenchmark.encodeGuavaBase16 16 thrpt 3 10177925,910 ± 5584265,227 ops/s + * EncodingHexJmhBenchmark.encodeGuavaBase16 32 thrpt 3 6270140,774 ± 96756,395 ops/s * EncodingHexJmhBenchmark.encodeGuavaBase16 128 thrpt 3 2094658,415 ± 2321008,783 ops/s * EncodingHexJmhBenchmark.encodeGuavaBase16 512 thrpt 3 514528,610 ± 20419,732 ops/s * EncodingHexJmhBenchmark.encodeGuavaBase16 1000000 thrpt 3 257,440 ± 23,100 ops/s * EncodingHexJmhBenchmark.encodeSpringSecurity 4 thrpt 3 25269684,873 ± 1820484,918 ops/s * EncodingHexJmhBenchmark.encodeSpringSecurity 8 thrpt 3 22631565,512 ± 291386,502 ops/s * EncodingHexJmhBenchmark.encodeSpringSecurity 16 thrpt 3 18704986,566 ± 604936,041 ops/s + * EncodingHexJmhBenchmark.encodeSpringSecurity 32 thrpt 3 13345680,362 ± 59610,208 ops/s * EncodingHexJmhBenchmark.encodeSpringSecurity 128 thrpt 3 4904805,240 ± 18454,315 ops/s * EncodingHexJmhBenchmark.encodeSpringSecurity 512 thrpt 3 1165535,921 ± 13487,051 ops/s * EncodingHexJmhBenchmark.encodeSpringSecurity 1000000 thrpt 3 601,152 ± 248,099 ops/s + * EncodingHexJmhBenchmark.encodeApacheCommons 4 thrpt 3 24942725,562 ± 4311405,167 ops/s + * EncodingHexJmhBenchmark.encodeApacheCommons 8 thrpt 3 21908225,962 ± 488932,267 ops/s + * EncodingHexJmhBenchmark.encodeApacheCommons 16 thrpt 3 17503857,494 ± 37335,212 ops/s + * EncodingHexJmhBenchmark.encodeApacheCommons 32 thrpt 3 12378489,920 ± 541212,742 ops/s + * EncodingHexJmhBenchmark.encodeApacheCommons 128 thrpt 3 4319898,906 ± 15591,318 ops/s + * EncodingHexJmhBenchmark.encodeApacheCommons 512 thrpt 3 1034983,537 ± 8517,121 ops/s + * EncodingHexJmhBenchmark.encodeApacheCommons 1000000 thrpt 3 529,885 ± 223,283 ops/s + * EncodingHexJmhBenchmark.encodeJaxBDataTypeConverter 16 thrpt 3 13497736,529 ± 871841,900 ops/s + * EncodingHexJmhBenchmark.encodeJaxBDataTypeConverter 32 thrpt 3 8312834,453 ± 196657,729 ops/s + * EncodingHexJmhBenchmark.encodeJaxBDataTypeConverter 128 thrpt 3 2590940,123 ± 50999,492 ops/s + * EncodingHexJmhBenchmark.encodeJaxBDataTypeConverter 1000000 thrpt 3 346,074 ± 29,339 ops/s */ @State(Scope.Thread) @@ -100,7 +119,7 @@ @OutputTimeUnit(TimeUnit.SECONDS) public class EncodingHexJmhBenchmark { - @Param({"4", "8", "16", "128", "512", "1000000"}) + @Param({"4", "8", "16", "32", "128", "512", "1000000"}) private int byteLength; private Map rndMap; @@ -112,6 +131,8 @@ public class EncodingHexJmhBenchmark { private BinaryToTextEncoding.EncoderDecoder option6; private BinaryToTextEncoding.EncoderDecoder option7; private BinaryToTextEncoding.EncoderDecoder option8; + private BinaryToTextEncoding.EncoderDecoder option9; + private BinaryToTextEncoding.EncoderDecoder option10; private Random random; @Setup(Level.Trial) @@ -126,9 +147,11 @@ public void setup() { // option6 = new BCUtilEncoder(); // option7 = new GuavaEncoder(); // option8 = new SpringSecurityEncoder(); +// option9 = new ApacheCommonsHex(); +// option10 = new JaxBDataTypeHex(); rndMap = new HashMap<>(); - int[] lengths = new int[]{4, 8, 16, 128, 512, 1000000}; + int[] lengths = new int[]{4, 8, 16, 32, 128, 512, 1000000}; for (int length : lengths) { int count = 10; rndMap.put(length, new Bytes[count]); @@ -138,31 +161,31 @@ public void setup() { } } - // @Benchmark - public String encodeStackOverflowCode1() { - return encodeDecode(option1); - } - - @Benchmark - public String encodeBytesLib() { - return encodeDecode(option2); - } - - // @Benchmark - public String encodeBigInteger() { - return encodeDecode(option3); - } - - // @Benchmark - public String encodeOldBytesLib() { - return encodeDecode(option4); - } - - // @Benchmark - public String encodeStackOverflowCode2() { - return encodeDecode(option5); - } - +// @Benchmark +// public String encodeStackOverflowCode1() { +// return encodeDecode(option1); +// } +// +// @Benchmark +// public String encodeBytesLib() { +// return encodeDecode(option2); +// } +// +// @Benchmark +// public String encodeBigInteger() { +// return encodeDecode(option3); +// } +// +// @Benchmark +// public String encodeOldBytesLib() { +// return encodeDecode(option4); +// } +// +// @Benchmark +// public String encodeStackOverflowCode2() { +// return encodeDecode(option5); +// } +// // @Benchmark // public String encodeBouncyCastleHex() { // return encodeDecode(option6); @@ -176,8 +199,18 @@ public String encodeStackOverflowCode2() { // @Benchmark // public String encodeSpringSecurity() { // return encodeDecode(option8); +// } +// +// @Benchmark +// public String encodeApacheCommons() { +// return encodeDecode(option9); // } + @Benchmark + public String encodeJaxBDataTypeConverter() { + return encodeDecode(option10); + } + private String encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { Bytes[] bytes = rndMap.get(byteLength); int rndNum = random.nextInt(bytes.length); @@ -288,11 +321,14 @@ public byte[] decode(CharSequence encoded) { } } + + /* * Requires dependencies: * * - * + * + org.bouncycastle bcprov-jdk15on 1.60 @@ -312,8 +348,34 @@ public byte[] decode(CharSequence encoded) { 5.2.0.RELEASE test + + commons-codec + commons-codec + 1.13 + + + javax.xml.bind + jaxb-api + 2.3.1 + */ +// static final class ApacheCommonsHex implements BinaryToTextEncoding.EncoderDecoder { +// @Override +// public String encode(byte[] array, ByteOrder byteOrder) { +// return org.apache.commons.codec.binary.Hex.encodeHexString(array); +// } +// +// @Override +// public byte[] decode(CharSequence encoded) { +// try { +// return Hex.decodeHex(encoded.toString()); +// } catch (DecoderException e) { +// throw new RuntimeException(e); +// } +// } +// } +// // static final class BCUtilEncoder implements BinaryToTextEncoding.EncoderDecoder { // @Override // public String encode(byte[] array, ByteOrder byteOrder) { @@ -349,4 +411,16 @@ public byte[] decode(CharSequence encoded) { // return org.springframework.security.crypto.codec.Hex.decode(encoded); // } // } +// +// static final class JaxBDataTypeHex implements BinaryToTextEncoding.EncoderDecoder { +// @Override +// public String encode(byte[] array, ByteOrder byteOrder) { +// return javax.xml.bind.DatatypeConverter.printHexBinary(array); +// } +// +// @Override +// public byte[] decode(CharSequence encoded) { +// return javax.xml.bind.DatatypeConverter.parseHexBinary(encoded.toString()); +// } +// } } From 19171884d680ea04a65c32c936f70bc90e89bc6f Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 2 Nov 2019 00:25:33 +0100 Subject: [PATCH 116/181] Remove unused benchmark code. Was moved to https://github.com/patrickfav/benchmark-jmh-sandbox --- ...k.java => EncodingBase64JmhBenchmark.java} | 53 +----- .../lib/bytes/EncodingHexJmhBenchmark.java | 180 ++---------------- 2 files changed, 22 insertions(+), 211 deletions(-) rename src/test/java/at/favre/lib/bytes/{EncodingJmhBenchmark.java => EncodingBase64JmhBenchmark.java} (70%) diff --git a/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingBase64JmhBenchmark.java similarity index 70% rename from src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java rename to src/test/java/at/favre/lib/bytes/EncodingBase64JmhBenchmark.java index f302292..c169185 100644 --- a/src/test/java/at/favre/lib/bytes/EncodingJmhBenchmark.java +++ b/src/test/java/at/favre/lib/bytes/EncodingBase64JmhBenchmark.java @@ -59,23 +59,19 @@ @Measurement(iterations = 4, time = 5) @BenchmarkMode(Mode.Throughput) @OutputTimeUnit(TimeUnit.SECONDS) -public class EncodingJmhBenchmark { +public class EncodingBase64JmhBenchmark { @Param({"1", "16", "128", "512", "1000000"}) private int byteLength; private Map rndMap; private BinaryToTextEncoding.EncoderDecoder base64Okio; - private BinaryToTextEncoding.EncoderDecoder base64Guava; - private BinaryToTextEncoding.EncoderDecoder base64Apache; private Random random; @Setup(Level.Trial) public void setup() { random = new Random(); base64Okio = new BinaryToTextEncoding.Base64Encoding(); -// base64Apache = new ApacheCommonCodecBase64(); -// base64Guava = new GuavaBase64(); rndMap = new HashMap<>(); int[] lengths = new int[]{1, 16, 128, 512, 1000000}; @@ -93,16 +89,6 @@ public byte[] encodeBase64Okio() { return encodeDecode(base64Okio); } -// @Benchmark -// public byte[] encodeBase64Apache() { -// return encodeDecode(base64Apache); -// } -// -// @Benchmark -// public byte[] encodeBase64Guava() { -// return encodeDecode(base64Guava); -// } - private byte[] encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { Bytes[] bytes = rndMap.get(byteLength); int rndNum = random.nextInt(bytes.length); @@ -110,41 +96,4 @@ private byte[] encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { String encoded = encoder.encode(bytes[rndNum].array(), ByteOrder.BIG_ENDIAN); return encoder.decode(encoded); } - -// -// commons-codec -// commons-codec -// 1.11 -// test -// -// -// com.google.guava -// guava -// 26.0-jre -// test -// -// -// static final class ApacheCommonCodecBase64 implements BinaryToTextEncoding.EncoderDecoder { -// @Override -// public String encode(byte[] array, ByteOrder byteOrder) { -// return Base64.encodeBase64String(array); -// } -// -// @Override -// public byte[] decode(String encoded) { -// return Base64.decodeBase64(encoded); -// } -// } -// -// static final class GuavaBase64 implements BinaryToTextEncoding.EncoderDecoder { -// @Override -// public String encode(byte[] array, ByteOrder byteOrder) { -// return com.google.common.io.BaseEncoding.base64().encode(array); -// } -// -// @Override -// public byte[] decode(String encoded) { -// return com.google.common.io.BaseEncoding.base64().decode(encoded); -// } -// } } diff --git a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java index da0afbd..e079f2e 100644 --- a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java +++ b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java @@ -128,11 +128,6 @@ public class EncodingHexJmhBenchmark { private BinaryToTextEncoding.EncoderDecoder option3; private BinaryToTextEncoding.EncoderDecoder option4; private BinaryToTextEncoding.EncoderDecoder option5; - private BinaryToTextEncoding.EncoderDecoder option6; - private BinaryToTextEncoding.EncoderDecoder option7; - private BinaryToTextEncoding.EncoderDecoder option8; - private BinaryToTextEncoding.EncoderDecoder option9; - private BinaryToTextEncoding.EncoderDecoder option10; private Random random; @Setup(Level.Trial) @@ -144,11 +139,6 @@ public void setup() { option3 = new BigIntegerHexEncoder(); option4 = new OldBytesImplementation(); option5 = new StackOverflowAnswer2Encoder(); -// option6 = new BCUtilEncoder(); -// option7 = new GuavaEncoder(); -// option8 = new SpringSecurityEncoder(); -// option9 = new ApacheCommonsHex(); -// option10 = new JaxBDataTypeHex(); rndMap = new HashMap<>(); int[] lengths = new int[]{4, 8, 16, 32, 128, 512, 1000000}; @@ -161,54 +151,29 @@ public void setup() { } } -// @Benchmark -// public String encodeStackOverflowCode1() { -// return encodeDecode(option1); -// } -// -// @Benchmark -// public String encodeBytesLib() { -// return encodeDecode(option2); -// } -// -// @Benchmark -// public String encodeBigInteger() { -// return encodeDecode(option3); -// } -// -// @Benchmark -// public String encodeOldBytesLib() { -// return encodeDecode(option4); -// } -// -// @Benchmark -// public String encodeStackOverflowCode2() { -// return encodeDecode(option5); -// } -// -// @Benchmark -// public String encodeBouncyCastleHex() { -// return encodeDecode(option6); -// } -// -// @Benchmark -// public String encodeGuavaBase16() { -// return encodeDecode(option7); -// } -// -// @Benchmark -// public String encodeSpringSecurity() { -// return encodeDecode(option8); -// } -// -// @Benchmark -// public String encodeApacheCommons() { -// return encodeDecode(option9); -// } + @Benchmark + public String encodeStackOverflowCode1() { + return encodeDecode(option1); + } + + @Benchmark + public String encodeBytesLib() { + return encodeDecode(option2); + } + + @Benchmark + public String encodeBigInteger() { + return encodeDecode(option3); + } @Benchmark - public String encodeJaxBDataTypeConverter() { - return encodeDecode(option10); + public String encodeOldBytesLib() { + return encodeDecode(option4); + } + + @Benchmark + public String encodeStackOverflowCode2() { + return encodeDecode(option5); } private String encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { @@ -320,107 +285,4 @@ public byte[] decode(CharSequence encoded) { throw new UnsupportedOperationException(); } } - - - - /* - * Requires dependencies: - * - * - * - - org.bouncycastle - bcprov-jdk15on - 1.60 - test - - - - com.google.guava - guava - 28.1-jre - test - - - - org.springframework.security - spring-security-core - 5.2.0.RELEASE - test - - - commons-codec - commons-codec - 1.13 - - - javax.xml.bind - jaxb-api - 2.3.1 - - */ - -// static final class ApacheCommonsHex implements BinaryToTextEncoding.EncoderDecoder { -// @Override -// public String encode(byte[] array, ByteOrder byteOrder) { -// return org.apache.commons.codec.binary.Hex.encodeHexString(array); -// } -// -// @Override -// public byte[] decode(CharSequence encoded) { -// try { -// return Hex.decodeHex(encoded.toString()); -// } catch (DecoderException e) { -// throw new RuntimeException(e); -// } -// } -// } -// -// static final class BCUtilEncoder implements BinaryToTextEncoding.EncoderDecoder { -// @Override -// public String encode(byte[] array, ByteOrder byteOrder) { -// return org.bouncycastle.util.encoders.Hex.toHexString(array); -// } -// -// @Override -// public byte[] decode(CharSequence encoded) { -// return org.bouncycastle.util.encoders.Hex.decode(encoded.toString()); -// } -// } -// -// static final class GuavaEncoder implements BinaryToTextEncoding.EncoderDecoder { -// @Override -// public String encode(byte[] array, ByteOrder byteOrder) { -// return com.google.common.io.BaseEncoding.base16().lowerCase().encode(array); -// } -// -// @Override -// public byte[] decode(CharSequence encoded) { -// return com.google.common.io.BaseEncoding.base16().lowerCase().decode(encoded); -// } -// } -// -// static final class SpringSecurityEncoder implements BinaryToTextEncoding.EncoderDecoder { -// @Override -// public String encode(byte[] array, ByteOrder byteOrder) { -// return new String(org.springframework.security.crypto.codec.Hex.encode(array)); -// } -// -// @Override -// public byte[] decode(CharSequence encoded) { -// return org.springframework.security.crypto.codec.Hex.decode(encoded); -// } -// } -// -// static final class JaxBDataTypeHex implements BinaryToTextEncoding.EncoderDecoder { -// @Override -// public String encode(byte[] array, ByteOrder byteOrder) { -// return javax.xml.bind.DatatypeConverter.printHexBinary(array); -// } -// -// @Override -// public byte[] decode(CharSequence encoded) { -// return javax.xml.bind.DatatypeConverter.parseHexBinary(encoded.toString()); -// } -// } } From a0c24f73684bb0a5178b8e9867f1e640b67ce473 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 29 Jan 2020 08:58:29 +0100 Subject: [PATCH 117/181] Update README.md Fix incorrectly stating, UTF normalization is for user passwords --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b35cf00..ecd5fc2 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ to blindly paste code snippets from [![Download](https://api.bintray.com/packages/patrickfav/maven/bytes-java/images/download.svg)](https://bintray.com/patrickfav/maven/bytes-java/_latestVersion) [![Build Status](https://travis-ci.org/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.org/patrickfav/bytes-java) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) -[![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) +[![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) use [![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) It's main features include: @@ -347,7 +347,7 @@ Bytes.from(s); ``` or get the **[normalized version](https://en.wikipedia.org/wiki/Unicode_equivalence)**, -which is the recommended way to convert e.g. user passwords +which is the recommended way to convert e.g. user names ```java String pwd = "ℌH"; From 713fe695b350dcda04b7acfe193b1323ffb940ed Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 5 Apr 2020 18:17:12 +0200 Subject: [PATCH 118/181] Update travis config and update checkstyle config --- .travis.yml | 10 ++++------ CONTRIBUTING.md | 2 +- checkstyle.xml | 7 +++---- pom.xml | 11 +++++++++-- src/main/java/at/favre/lib/bytes/BytesValidators.java | 1 - src/main/java/at/favre/lib/bytes/Util.java | 1 - 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/.travis.yml b/.travis.yml index 1696369..a8dd3e6 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,9 +1,7 @@ # To let the CI execute the maven wrapper, use this command and push the change: # git update-index --chmod=+x mvnw -sudo: false # route your build to the container-based infrastructure for a faster build language: java -install: true jdk: - openjdk8 @@ -17,8 +15,8 @@ before_install: - tar xvf secrets.tar script: - - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then ./mvnw clean install -Djarsigner.skip=true checkstyle:check; fi' - - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then ./mvnw clean install -Djarsigner.skip=false checkstyle:check; fi' + - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then ./mvnw clean install -Djarsigner.skip=true; fi' + - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then ./mvnw clean install -Djarsigner.skip=false; fi' after_success: - ./mvnw test jacoco:report coveralls:report @@ -31,14 +29,14 @@ deploy: branch: master tags: true - provider: releases - api_key: + token: secure: "ozRga/xe4pNZNH59tmPK1lLpCFa4WFW674JMTBWLbf+7zjPiN8K5dtAYUkhDqngw0ifasukVCRey4F9fu479KlFciGrLBd4r/hq/rh7inVHqd1qcn4AwyDX3EkbloD5qwfas7yn5zJ7cWm7KyEkfpr+fgReaQzSRvJUpjpDBrS2xNIYOhL1tInu84/RtyB6QuJjQOkH9rulP9M8gjcEH9Iu0k40jAVYLJDL9opOWrc9qpAzL0wN4xXGbnI30WrA8nmLcrHRxODOxbYEQ5EndLFJyS3nYxL9D3QJeEYkXf9uqz46V4dgfrEirWrtin3PlSUKTD9/0Mqz4uxqrGky0vrpha7m231+ilTUJzvE0a29LdS3R4A6ssDb0oFtj4pP3O6uNDqZN20r83ughGi0GrlKL/CGpQ4fS5nOpqppx0Xg+SR78/uOqQDIOn570FILBTKiaTsCn6xKqYC4QFSlsZiXojgU4FDZpKygH932qUDE0BnzsZEtzCube2oXMktZs6keSmELMyRYVs/K9yC7+8R1Pez1Xz72zxNG1ke6588sO3wxN+Q+0ZhqmQC8Y2OY8i72b06M5SyGz5TV38SrntLU88HOMWVJtfRDcMcPnJdFgaujZCoOw5SfokzXncipldfJGpKGIb3fHBMJw0MzspT7Kp6XRzSbtJI5+NVestR4=" file_glob: true file: - "target/*.jar" - "target/*.sha256" - "target/checksum-sha256.txt" - skip_cleanup: true + cleanup: true on: branch: master tags: true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c18fe1f..4a0c2d5 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -8,7 +8,7 @@ This repo validates against checkstyle (import the xml found in the root to your To run the tests (and checkstyle): ```shell -mvn test checkstyle:check +mvn test ``` Tests are automatically run against branches and pull requests diff --git a/checkstyle.xml b/checkstyle.xml index ee886b4..549860f 100644 --- a/checkstyle.xml +++ b/checkstyle.xml @@ -34,13 +34,15 @@ + + + - @@ -107,9 +109,6 @@ - - - diff --git a/pom.xml b/pom.xml index 89e3ce1..9e0f7a8 100644 --- a/pom.xml +++ b/pom.xml @@ -62,17 +62,24 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.0.0 + 3.1.1 checkstyle.xml checkstyle-suppressions.xml checkstyle.suppressions.file + + + + check + + + com.puppycrawl.tools checkstyle - 8.18 + 8.31 diff --git a/src/main/java/at/favre/lib/bytes/BytesValidators.java b/src/main/java/at/favre/lib/bytes/BytesValidators.java index 067822c..acc2104 100644 --- a/src/main/java/at/favre/lib/bytes/BytesValidators.java +++ b/src/main/java/at/favre/lib/bytes/BytesValidators.java @@ -113,7 +113,6 @@ public static BytesValidator noneOf(byte refByte) { return new BytesValidator.IdenticalContent(refByte, BytesValidator.IdenticalContent.Mode.NONE_OF); } - /** * This will execute all passed validators and returns true if at least one returns true (i.e. OR concatenation) * diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index f2419c3..93c05ab 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -72,7 +72,6 @@ static byte[] concat(byte[]... arrays) { return result; } - /** * Combines a single argument with a vararg to a single array * From baf088b1c69b289402713015f5fcf98e0822087e Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 5 Apr 2020 20:10:51 +0200 Subject: [PATCH 119/181] Update maven wrapper --- .mvn/wrapper/MavenWrapperDownloader.java | 4 +-- .mvn/wrapper/maven-wrapper.jar | Bin 50709 -> 50710 bytes .mvn/wrapper/maven-wrapper.properties | 4 +-- mvnw | 13 ++++++--- mvnw.cmd | 34 +++++++++++++++-------- 5 files changed, 35 insertions(+), 20 deletions(-) diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java index b20a55a..b901097 100644 --- a/.mvn/wrapper/MavenWrapperDownloader.java +++ b/.mvn/wrapper/MavenWrapperDownloader.java @@ -20,12 +20,12 @@ public class MavenWrapperDownloader { - private static final String WRAPPER_VERSION = "0.5.3"; + private static final String WRAPPER_VERSION = "0.5.6"; /** * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. */ private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + " .jar"; + + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; /** * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar index e89f07c229cbd97f4e39b0eddba64604d1dca9f6..2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054 100644 GIT binary patch delta 4991 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 W7k{e%3WXXG;G&y>?6mgs$NvuiL1wG~ delta 4967 zcmYkAcQjmU+lSR4h!QPIoMO>6$5WT|6} zyL-bK5Q}7Xbv1sLjhUsrpxfD_o3SKSiMP)pZW(|TGY<7Dc#ecb$Y^DkLcC)l%%T^T z(>*C4Dr$2pf2e(losJr0R?l*U^C>QRhWp@*;8>CVMF`eZ#o~c1x!6?J@sq7mkkO1u zmcg^Sl$a{{;3!@T*4HgIA3W7sa`p9V($@?QuIH&M^v($6wKJc15y~b!IcJ|dFyt`*r=z5F6j%~^`y?^pmUMT zH}G)M+Z{hhzuYOg`wE6isoj#bpyMN#EOR!NI`sZAg`b(Lvi3h+o#WcVH~#W=oq^Y6 z6K^9p}tVry@JQvOHA9p)vaY^MkD|%H2iT?!BT59>ewh|rg87IXEk4hW4R14 z5O4!hm&a25*E6GzN@(V$Nbd6J{vk5kL9jt-2^v4bXI#;c? zoiraS+q$~)90YPyQu6WFK*;sP#~15f#%~8CX5K^l$CAgslbhbv)bM?armc^=p|hi& zyhCfh5>%S8**wKJCB|Qvj0zpZrgX1%C&0?tXANjil}Ed=*-6D8ajM`ML*K_B-iK~O zm5$C%owjBb)dtn#R-}(**F@h{XDZR)(jB^@1kO;E=*{2X*ge^f;*krT&{cC3RKli5 z)3X>am%Wy?guQR#l$EM*Y-r?UCHvY?>*-z1Q(p&j4RffTJBzJu(A*}o@SxuPtpgt+ zA4M)}ocdV^9JFY#^V2B?lgg9|6?iCezxYDyW|IVmJ&G~46Z^%12lP~`TO>` z|D5W*EIKKROyUSCAEfugoNIKHHv<1`D9D~in6e4|T?B-L$ikJGg7`9k7n4s{S%2Xxquli~01)hz7SnT-t{rWLm z*pwS3)HV_V&KTcfDEs?E7j7V&U)!Kg0|}s0O{bM)2e0ogBK0@)lav#VB(}xeWQ{Ul z&`}XL(596U+>T{4E*4RT_TRnrMX)S~OO~@E?XiaFd{J=2WLLmOMDb(h5q6#ms%@z~ zKe>krmfL$=sc58l<{+>3+f-?gSHDi>BiCw|Vs&`3t-B;1&lZpb;=0Ngxf&H2WL`CCHh+!qA#WO9t|-l9^h7O1Bg9=9 z6t7*s^L*qd1d_0BQ24?%ZA7xFzLq>8R%P_tmiJ)aD`QxCFwmi;9IiLQu$HrHbHr4Q za6b}2zPG&XYp-?dr~A!%&9{iYN5a}K$)FV-BS)>|3(Qhq$mZ{z*r-8Qf>i zRz)gS4d2r8-HY}VP>&R_3kgPAMLw-qi;^Yv=85IvZ$4t}9BMxgyZLi*UeIGJ?|re$ zh2^3m^PXK5Wu4(O5c`KVXv}Yhb7Kztg&@;TO6&W8e=eYV&@=(3Io3s&TdewUeUz61 z!(GXL>bf52-q+l7h-Js>3pPxk{qxdBw>~0)QjAI2sr60VHi)F=h<5LJSz3Wq!8MAl zdahX)Cq;>_9!K&AAvk^$Z>N+Y&ReUYCnm#|0GLi;*E#Bh$Vbs6WiV|vuF21ysj72-Zgk4>%5NK>O-2} zotjAfi0F^MvCh|%JNAvH3I^f4IXS7k;rOE2pw>~z{-H*LsZ+oA`Y4B&ghTWi%y-84 zo|ljhqbcSYMc#0HV8hU%Ay0_#SQhA9Jg- zWZ)PW^D!1m20?82Ce%DoKe#l8gHc7cwUc>_y37EoPIbp`t+XHcPH(UFXPF`&@4zb z$^+W>rzmi62x7~AK8l#oKCITh9gm{*3zLdkua;V&-lv?V>G5mG?zL^YUsvZ;cN8c0 zvR9N@*{ynE#M=FzYl6s^2g1X`u9G)?N-CO|Q6FGL&li;0cX&pc*8}<_X1<4}KlOGN zfEzyPnOw?UB=z==A3&Zv{mnu)^2;HfjlNczej^EL%h?6v)X^Y5pU9$FL5LsyO(I(S zlb3%|?*tup(K4HgHu{tPses7w=WJ;sWU$D1kA0}91W9`k)r3N_*7wN$ab9-4DO3@s zZt#q3VVD!!AWi3HAfz^%a9!xz3BsiPg8Fy}TR^R6u}&hSCb>+Z$C}=bGo{_Jv{qps zh+f=>OOSVe6dG|Oaq6z9E#{9r)Z;h?x>q5uw#HkEOX|mB{Cr5ZdKOG$)eP*MDC#!G z)&^ef1!PTQ=f5I9*?P@)%3*%h#!to>aam@P#6oD-qA+tJkqpf*IxZpR#L=?g`Q~~ zH!rNM?=*P!#1Hk3=mkV77CU^qqhgNWEl@W*c>_m4b-ZQ|1T;wV4&_0+1J-P^dIn2i zdGt;G;$F5nosBvp3T@lIHhFY&&OYLp|O` zA-5gBH8QtUatAP~w7px9X&@!`V`^Fk*PBIIM>nH5W)T5F$pfVWD`112Z?c2^dPyjA zY&le0Hq0Vfuc2A{c%`~Kkus2U2a2TYrw;^5#F4qnum7;L_MD~W(X~bHKyzGy+kb+Z z%r@E>+ps>&<43N$P1_s1h_Lw_NrjiK^vHIfgrgvhr1;F~(>o;vs%`7Lzv;ftobuMm znXhP2`z=WaGO=N!Ws|!pqAVmY&K_sw{V7|m{A@Q2Ni)zj+cNr!>pVK(Ei84FMrS5w zT_8oG|Mo8)$aruDoS>(KJ&(zYiau#@soo3Ki9W0UXOot)skPX{DbTvLR;tmvVgefV zQk_cs(+974&~O@8atpV6xvCqmz>%GvUJ>qXGuF>rtCSYgSgknXOOr8@bH+lcO zs%cjBMy5YWMlo`WD*j{Xd5b;G#l&LKUM_O4?Vhcqt>dbU$cRZM*fzP}zmkXq!_CSo zCc;ddSIP+(SwEk6t{^fI3`w51;#Bd9gcz{cFxGYBfkcl}qf~dLEZk}On4;}^SlcGs zY6Ig6j|dn#z#p!4{%&>!=WdHLaa`Vkzc7w0*h>?3zi1PFQdQqTad6C$Q|FrNieyZR z;JbUnk~Y+coOkf#*_$29AKjX{^~oj1aO#o;rE|q_eBY*4b5PT+_;xqAo}!DfIm&F`+Hv2?&+;IGo3a7~rr;E63Rqb<9Ac2%25lg{2+3muUJJG=czhqxN| zTfgb7(I!K$#S2vuN|!i9Z^K~The#5zRf|bSRe600tx3X~tu$WMyXhIlP$t+QBSy1a z!|4TPJu9N|^Jmk2xqdm(#8&B|9JyYRUHVM!{9n=aUj_$udtX3Ft87sCUX7nk=K741 z*>mkP%r3=Jm`6`s?bk!C4Gq8B>7S98B)=f*vx_D{7_CS6B=nOXy2^W;s30?><+8hY zQpi&r79cWvl$INU^YT%7z9a+3&FsUC8m4g!?|t@O)FGy0*DHd4@YN-!UHJ65H2N~o zC}U4us{GNx19b`lC>9m|h~_lcZO-@d!OYg~DgvK=L6+Xog5K&Ll9GWIFqIdr zy;0{~>(OjKa}FK-5S?K(g)K@6S`038b`si<*tu^p`_97MP2|@nSD7&hpydHfXU%@D zTwX;q^@^ik=yij3@UVFP?F@;k5=K9*mA-?0l8a4>I~-CKpL#DyFQ)jGG|~bQGHd`<Rda{o$M0$fwQ0tHnrpy#Uk{PC4=ZK42} zn=TViH2)QfB+~kT67DZxqzOduZ}kC)IXA%GtU-VsqbmTv5C-I$=>cr>WjC122~r98 ztL1Xn2@3)U0SFv7kkGGR?ZpW^Y`eGvqZ2X;H93D6OBwFzDH z|HlKdmvN5RD>;BwBY Date: Sun, 5 Apr 2020 22:22:06 +0200 Subject: [PATCH 120/181] Minimalize POM with using common-parent POM --- checkstyle-suppressions.xml | 2 +- checkstyle.xml | 156 ------------------------------------ pom.xml | 134 +++---------------------------- 3 files changed, 10 insertions(+), 282 deletions(-) delete mode 100644 checkstyle.xml diff --git a/checkstyle-suppressions.xml b/checkstyle-suppressions.xml index ff21bd3..7780abc 100644 --- a/checkstyle-suppressions.xml +++ b/checkstyle-suppressions.xml @@ -28,4 +28,4 @@ - \ No newline at end of file + diff --git a/checkstyle.xml b/checkstyle.xml deleted file mode 100644 index 549860f..0000000 --- a/checkstyle.xml +++ /dev/null @@ -1,156 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/pom.xml b/pom.xml index 9e0f7a8..894082f 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,12 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 - at.favre.lib + + at.favre.lib + common-parent + 5 + + bytes 1.3.0 bundle @@ -17,14 +22,11 @@ https://github.com/patrickfav/bytes-java 2017 - - UTF-8 - UTF-8 - - maven-central-repo - http://repo1.maven.org/maven2 + jcenter + jcenter + https://jcenter.bintray.com false @@ -36,22 +38,6 @@ org.apache.maven.plugins maven-enforcer-plugin - 3.0.0-M2 - - - enforce-maven - - enforce - - - - - [3.3.9,) - - - - - org.apache.felix @@ -62,101 +48,33 @@ org.apache.maven.plugins maven-checkstyle-plugin - 3.1.1 - checkstyle.xml checkstyle-suppressions.xml - checkstyle.suppressions.file - - - - check - - - - - - com.puppycrawl.tools - checkstyle - 8.31 - - org.apache.maven.plugins maven-compiler-plugin - 3.7.0 - - javac-with-errorprone - true - 1.7 - 1.7 - - - - org.codehaus.plexus - plexus-compiler-javac-errorprone - 2.8.2 - - - - com.google.errorprone - error_prone_core - - 2.0.5 - - org.apache.maven.plugins maven-source-plugin - 3.0.1 - - - attach-sources - - jar - - - org.apache.maven.plugins maven-javadoc-plugin - 3.0.1 - - - attach-javadocs - - jar - - - org.apache.maven.plugins maven-surefire-plugin - 2.22.0 org.jacoco jacoco-maven-plugin - 0.8.1 - - - prepare-agent - - prepare-agent - - - org.eluder.coveralls coveralls-maven-plugin - 4.3.0 com.github.wvengen @@ -195,43 +113,10 @@ org.apache.maven.plugins maven-jarsigner-plugin - 1.4 - - - sign - - sign - - - - - false - keystore.jks - pfopensource - ${env.OPENSOURCE_PROJECTS_KS_PW} - ${env.OPENSOURCE_PROJECTS_KEY_PW} - net.nicoulaj.maven.plugins checksum-maven-plugin - 1.6 - - - - artifacts - - - - - - SHA-256 - - true - checksum-sha256.txt - false - false - @@ -241,7 +126,6 @@ junit junit - 4.12 test From 0507e29dbbbe3fcf6b228393a176a85a8a824f0b Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 5 Apr 2020 22:40:23 +0200 Subject: [PATCH 121/181] Update readme to include checkstyle location --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index ecd5fc2..7a011fb 100644 --- a/README.md +++ b/README.md @@ -685,6 +685,12 @@ Use the Maven wrapper to create a jar including all dependencies mvnw clean install +### Checkstyle Config File + +This project uses my [`common-parent`](https://bintray.com/patrickfav/maven/mvn-common-parent) which centralized a lot of +the plugin versions aswell as providing the checkstyle config rules. Specifically they are maintained in [`checkstyle-config`](https://bintray.com/patrickfav/maven/checkstyle-config). Locally the files will be copied after you `mvnw install` into your `target` folder and is called +`target/checkstyle-checker.xml`. So if you use a plugin for your IDE, use this file as your local configuration. + ## Tech Stack * Java 7 (+ [errorprone](https://github.com/google/error-prone) static analyzer) From ebff3e93b972602011b48ad4b47ed7993fe7fb55 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 5 Apr 2020 23:24:40 +0200 Subject: [PATCH 122/181] Update parent POM version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 894082f..c4a7364 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 5 + 6 bytes From f592d213411da4caab53b3e5e3e56a01be986f5c Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 5 Apr 2020 23:25:50 +0200 Subject: [PATCH 123/181] Bump version to 1.4.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c4a7364..573160c 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ bytes - 1.3.0 + 1.4.0 bundle Bytes Utility Library From 0d19b7c76597f85a41a0b9eb2455ef5527be6448 Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 6 Apr 2020 20:26:14 +0200 Subject: [PATCH 124/181] Update travis config --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index a8dd3e6..7668502 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,12 +24,12 @@ after_success: deploy: - provider: script script: ./mvnw -s ci-settings.xml deploy -X - skip_cleanup: true + cleanup: true on: branch: master tags: true - provider: releases - token: + api_key: secure: "ozRga/xe4pNZNH59tmPK1lLpCFa4WFW674JMTBWLbf+7zjPiN8K5dtAYUkhDqngw0ifasukVCRey4F9fu479KlFciGrLBd4r/hq/rh7inVHqd1qcn4AwyDX3EkbloD5qwfas7yn5zJ7cWm7KyEkfpr+fgReaQzSRvJUpjpDBrS2xNIYOhL1tInu84/RtyB6QuJjQOkH9rulP9M8gjcEH9Iu0k40jAVYLJDL9opOWrc9qpAzL0wN4xXGbnI30WrA8nmLcrHRxODOxbYEQ5EndLFJyS3nYxL9D3QJeEYkXf9uqz46V4dgfrEirWrtin3PlSUKTD9/0Mqz4uxqrGky0vrpha7m231+ilTUJzvE0a29LdS3R4A6ssDb0oFtj4pP3O6uNDqZN20r83ughGi0GrlKL/CGpQ4fS5nOpqppx0Xg+SR78/uOqQDIOn570FILBTKiaTsCn6xKqYC4QFSlsZiXojgU4FDZpKygH932qUDE0BnzsZEtzCube2oXMktZs6keSmELMyRYVs/K9yC7+8R1Pez1Xz72zxNG1ke6588sO3wxN+Q+0ZhqmQC8Y2OY8i72b06M5SyGz5TV38SrntLU88HOMWVJtfRDcMcPnJdFgaujZCoOw5SfokzXncipldfJGpKGIb3fHBMJw0MzspT7Kp6XRzSbtJI5+NVestR4=" file_glob: true file: From 25ca6b611fbda1343c21d248ec978bb15d3050fc Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 6 Apr 2020 20:26:39 +0200 Subject: [PATCH 125/181] Optimize POM and improive README --- README.md | 4 ++-- pom.xml | 17 +---------------- 2 files changed, 3 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 7a011fb..2a6c9d6 100644 --- a/README.md +++ b/README.md @@ -687,8 +687,8 @@ Use the Maven wrapper to create a jar including all dependencies ### Checkstyle Config File -This project uses my [`common-parent`](https://bintray.com/patrickfav/maven/mvn-common-parent) which centralized a lot of -the plugin versions aswell as providing the checkstyle config rules. Specifically they are maintained in [`checkstyle-config`](https://bintray.com/patrickfav/maven/checkstyle-config). Locally the files will be copied after you `mvnw install` into your `target` folder and is called +This project uses my [`common-parent`](https://github.com/patrickfav/mvn-common-parent) which centralized a lot of +the plugin versions aswell as providing the checkstyle config rules. Specifically they are maintained in [`checkstyle-config`](https://github.com/patrickfav/checkstyle-config). Locally the files will be copied after you `mvnw install` into your `target` folder and is called `target/checkstyle-checker.xml`. So if you use a plugin for your IDE, use this file as your local configuration. ## Tech Stack diff --git a/pom.xml b/pom.xml index 573160c..028d3e4 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 6 + 7 bytes @@ -141,13 +141,6 @@ test - - - patrickfav - Patrick Favre-Bulle - patrick.favrebulle@gmail.com - - @@ -157,14 +150,6 @@ - - - Apache License, Version 2.0 - https://www.apache.org/licenses/LICENSE-2.0.txt - repo - - - https://github.com/patrickfav/bytes-java.git https://github.com/patrickfav/bytes-java.git From c861e3538f941a738597735a8a1f5c08b6913491 Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 6 Apr 2020 21:51:12 +0200 Subject: [PATCH 126/181] Fix travis config to skip cleanup --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7668502..dc01f27 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ after_success: deploy: - provider: script script: ./mvnw -s ci-settings.xml deploy -X - cleanup: true + cleanup: false on: branch: master tags: true @@ -36,7 +36,7 @@ deploy: - "target/*.jar" - "target/*.sha256" - "target/checksum-sha256.txt" - cleanup: true + cleanup: false on: branch: master tags: true From ba5851218cb130a8905d1bd6e244ff58df37d492 Mon Sep 17 00:00:00 2001 From: pfavre Date: Mon, 6 Apr 2020 22:07:02 +0200 Subject: [PATCH 127/181] Fix travis config to skip cleanup (finally) --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index dc01f27..f6b9abc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -24,7 +24,7 @@ after_success: deploy: - provider: script script: ./mvnw -s ci-settings.xml deploy -X - cleanup: false + skip_cleanup: true on: branch: master tags: true @@ -36,7 +36,7 @@ deploy: - "target/*.jar" - "target/*.sha256" - "target/checksum-sha256.txt" - cleanup: false + skip_cleanup: true on: branch: master tags: true From 6da2567c52bf5048ac1cd4f1da468460d58259d0 Mon Sep 17 00:00:00 2001 From: pfavre Date: Thu, 9 Apr 2020 23:47:51 +0200 Subject: [PATCH 128/181] Update POM and use new compiler profiles --- .mvn/maven.config | 1 + pom.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .mvn/maven.config diff --git a/.mvn/maven.config b/.mvn/maven.config new file mode 100644 index 0000000..b9d8785 --- /dev/null +++ b/.mvn/maven.config @@ -0,0 +1 @@ +-DcommonConfig.compiler.profile=jdk7_w_errorprone diff --git a/pom.xml b/pom.xml index 028d3e4..c131a46 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 7 + 10 bytes From 38c6ffb5bf837247fe38d8eff99822a5590f65e6 Mon Sep 17 00:00:00 2001 From: pfavre Date: Fri, 10 Apr 2020 10:20:18 +0200 Subject: [PATCH 129/181] Update parent POM --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c131a46..43e6611 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 10 + 11 bytes From 160abf7d497d86ae3971c4622ce488be828407fc Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 10 Apr 2020 13:56:25 +0200 Subject: [PATCH 130/181] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2a6c9d6..3fcf069 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ to blindly paste code snippets from [![Download](https://api.bintray.com/packages/patrickfav/maven/bytes-java/images/download.svg)](https://bintray.com/patrickfav/maven/bytes-java/_latestVersion) [![Build Status](https://travis-ci.org/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.org/patrickfav/bytes-java) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) -[![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) use +[![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) It's main features include: From 211df104327af4a75977af33fdd208d8a28ba09d Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Apr 2020 16:33:58 +0200 Subject: [PATCH 131/181] Add pom backup to gitignore --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 3ff6d9e..9536f63 100644 --- a/.gitignore +++ b/.gitignore @@ -35,4 +35,5 @@ Thumbs.db signing.properties keystore.jks ci-settings.xml -secrets.tar \ No newline at end of file +secrets.tar +pom.xml.versionsBackup From e54cf35537112ef1147e7cc2fb0021af1120e518 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 18 Apr 2020 22:38:23 +0200 Subject: [PATCH 132/181] Add banner.psd --- misc/banner.psd | Bin 0 -> 3029620 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 misc/banner.psd diff --git a/misc/banner.psd b/misc/banner.psd new file mode 100644 index 0000000000000000000000000000000000000000..515d0c64b7f4fafdf587f1ba396c2f3c56b245f4 GIT binary patch literal 3029620 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

8ou;?{|Wv95xF(k-5X?yOwhX^Mif79N{_1j;B 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%0A`gh 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%0A9l*YP>{iy&E;{pH~u-j8~7=|^2b&7 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 z zRU7{UPpbD!O;?!khO8?7EozMB(_HC(Y+nF`7P_9Zy#Xf<@!07;?OVA)`x%Um*G|0p zNreh_h%qwMVp=T$!| z@|>WguDjk>Ub5oP!^ELP#XRqSKfHH@=^p)u!>RC`#xGXchTz;BJ_=CZ8E!TLpC?AI z;HUdSn)N6*aJtz&)o+C$cxg>}HTnUK)~$Xv8pTV@@Eh4&0vi`{irz|WdQ2Gbj7o5f zw@EW>SH5B$lC$a9aFyZP6zRU@vIU}c0AEdBxa`^7gXxs?i z26y8!P~_&AcO%msrx}>*Fnf@0!czdbu>1rQYzqa@i3wW!VB5J>K=G+C+Kb4V9#VT% zf}N+1YyJD~fEK>k8<5shUzPoLDr>Qbc*M;hoX~e^>`ohrm0+Y29Ju;K4-w=^!|uo$ zDH9h_b)tbAEP1R7EIOc7%q@_#c({Z2>Wew|$ zPsTU5)0oLvnT8Il=WI*Qh(C|93^S9f8LfiL8=uBWt6*{8KgX`6Ug-CZtB$w!7d{~E zE}AwnHTL`y2L1l<*GGp(|DK-&AmWum=5qIP_;t{6%hQsZ-)$(|m{V{hFtTm&X5U23 zO{5D_-)xfxOxW<-kCaZGLtSw1^`8sXTJw_*YB5}o7Wuu#`lic=;ZSjgK}( z@|Lr((o3r(^CVqAqauaVwtSYJXgaL(QJJM_%1X%3nRmJ*a&)j>;x)S0uz5r3r9yB8 zn5b~Zz)}5J+X~B$Uqhc*k+r5pyW@nbAFu(`PYNsp9W-m*Zzjr{o)VMmi6v0P4splV zttjVh#594;l84eJyD(9kv>5RU{jqVf5&>D1#?JC6)gBjBAvxuE*u;<8+Zg1IM8A6R z=?F*I@G#0~l8hHk@L3R~0J-90Zxc7#1x7aWIhaYqJ0ifMLLSntXzkAR9!d7)L< zx?`c*hhF_`E{GemAN&iEQKQHg=@9wxHgzkd$cYR|TZ?8a%(Pu$(o*08)(hr#r`h{GQ{+F-e zgPTp}N9)PQC{06c3D~$|#t-D6R;lEH-YAgq(k~NBmoNS?8>KsCPFH@)T|Kg`F=l?r zd!N-a2N|{@T0HeLyGBW?DNHBBB9nkjUHohYekn9D%hc{?0_fk@Ggn6w3Q_uS?dY*w z_GraX92&FBV4ZHlXK~L4ky|G%DIOC_pMCS0VIvn~M-WQxod8QZRZllB1tT=^_7~G6 z#n6`>FE4`5bwfX$DBeo_xGMZKr<5O;9i0tyK1!Nk_>|>vyxu>55a=W=i4aCF#R2ndi~>hT#7l+lXsr-{BSFtGF`=&ehA2tl zye16k!AVyHvwiw=g1_wMhFfjP>PQQTZhULYT!k4I`v~yo!FMpy4vyn&H$B5ja?7Yf zcqslFKzdo8<7>V5=JEZ;kAAP%AT{i3hbPU2Qh)CB>%x6oSAlE0wHZD3JMt8J?o1g1n-_F5-=wDG zlJg@Ym98(tm0KHUQnZC6Dw{?F0nVvShD#B&HTIB2>bZp)KMn7#@6?Ab0SBsg2Nk`- zhMT;J+s4`;;|>qrVx-*FNduK};h$l-@!8zp#)h?Hty=4zw!b)(8WDY*W3}tUFS~TK z?%*2!^UzAR_l|E$KyR}W`I&Pijb?Ps;$Hhhq5)YCbD$QFiAFY{5!>Hu;7rxgzYiyW zjwOSuvFK2xY>XViIT){w+zJI10&h7VbMX6fO2tPwv;Zc~!EV z%8VA1tfoXZanY)Eq1mfFqXC^CC&ef4tNz7X4PF4SjZjv_NgXGGLJe)08@E7PtZ`!E zi&-NGa)zfq`T<);&Z3!X#<+Nl+?Wxki&6KdI&HsWyGKNv+-mq>o5YdXEy9Se%Av5f zZklQe+s7MfGm%lx*cPtDuPF}qGx%B7AniEypD^p&(e*7z8=^W@WS0OGv-rls^NK9txO{R`hDchhG7`BYjC+7`c~~4HO9hyFZN^ z2X%|TZ(ClfEyb!b-s2cg-ip*V3&G)L2AD;H+PDb9TXkNNBHM3%Bm5A2e89ffMv06= zAeV1rI*bOsdd06*?b1b(@)4?w63s_I5;4 z*zE|d*pWHyW@jAGAuAS~JcEGM6IRBW2`jPl@sxW<`0~CLMp^IP zQ&wBOyKmQZNTYAoXlk3pCYEUlRptzN20*Ig(aiPWLK6d&v>*=%&(^mh$mY&Tf^Q3! zcCxM$oK5u8-0FB{g6$sNj2Y$ZLE808BO~! zKn|aIn?${!R?sp!THcPaOSHsccmc3@8hC}~(jaS!G&T-^Y<|XJV39H6*Q@2)e*N1( zZe!0{{r0Q-L%xFLE7dKGp~-7Z9-!1jrCj7}zztqOZ5B@COdcl-m2ccL@)X5fB<39R zA=YUw{4w#i0M2SI4c~*P7k60l_PG=95@JppMt|Lu^JFn7VFtml-*=)}7=R16zp<#fiJNBSO-pma8Hu*cLI?co! zHPM-t1g%`3=q(o!h&Fe6C{`}e5Kd4eG);KJ!`mamzhDeH2@^*C>WCkIquH^YABN4X#(aENnZU?-leIDBk13pM4B39Sm@)MA=*t9k{b4tOJ_#&ht~=j;gJI2qBVVy70Pa7B3lxM1ubY_(3u)J5jd?>?CMn8AzGLTY zBYepx$t(oBZSu)J@rEx}Y(9Cqy(gB21pGaA%_U#n=m88La}b?@P+IkiV3TrEJZQzD zb#*4pDDZt1G$LHoPqz$g-3fScQJh})-+Ql+Obmynm(~C_ocf^?c5-h`VTHE8 z)73JR*SWqPG`=fDFWl3o>LjLULBxV5RPtq za)8!T)2%P)q@DUsItam5+uaC6B4ch&cpG<+szn|eUWWP0`#A}P;_LIr;6-hl?H>2#o^0|!y+AA_7|D!j2opxU8DwhZ87J1cEpR8C6tTBO@NKz~ zh!Xafv*u~z(oEdz^c8ULwrU6_MN8mI&xaFSa-+?gUoMeR)Z_4g3|=3G-1s0Xkyd$eHlCn z%rUVk)7b65IU}|Rk^F<^weh9qw~bg$Y$mC1*J8>yM-l2a(+vWbF;f{o^64y*%Fx{~ zmKCF0k)%?P{3N-fEpvU%YD$}@c`+n7KVGCyheCAAGURE9VUNcck?mL3b+})+boPA) z#>hT%`S!4pFLK*xR`ax51&n|C5%V!5XIwb!f^BH&me{M!tQH+}#&MBzJR1{Jd+@gA zF|A*WHwrIfBFPKixO)2;2-r~8bR zs5e1@uAy-OSM2wTM3BWMt|O7QDR>dl$E*UXBjV_b+6hQq30)xBL@;%sP-0t_M%KgT z=#jg_STp{`8hDiFH8RK|;lTxexnKkF#SL-YO58%+KF()&ky^mHZ3v!5H$j8iHyI{q zvjn9G#_V@0&J6|L0Fe|cr)|AAa_#R&jZ%)Vt62;oj_YL|q^Y=RnNCMJLC}Ym(ZP0!P3TjmW-`38l z6=|gUG%O9VDz@G%!s)E47{d+?by`-jO=}X53=}}4)~lhWN?u5IS8U{MN{nzpvt#R+ zSuNBjO~fgxJoMhHf94Dd08(V1-2mg}M34SN4jZeUygZ)1QY}>kv}GGH_&a5yns?Gg zs;F?zvEZ9S%~{i<+`ne4Rf^~h1J+0PWAknR>LW`ZN<0^ShV&c?c=_Aqp^;ORY@GfD$S%E%hq zb}SfvAIU%h1-64)ygtx`dghlJA;50TCL0|LDUo9nvoR(LRF0qph!T%~ofg>uc%>{C z!9@CdJ^fkKwM~$gyopF4W-oJti=U-OmlGcSTIH5%t%?R1SeX~zJbozo&%a1sR(XOB zzjTel_tkh$47O~xNt$(6d3Ua^+&xWsITynsuME!0HproK1fYB3^A;ZAIMyr*WkOO0 zMhVwWt1BU#VWZxq)cryCdvVh-UlNTg82?TY9I0Ixs32irwMIZU$lBON6vN zlc2%QW!jGDX(A`?XmyQA_4um7=dBUz-v)At*FRz<)KhD+OBtTnbxrkOaB2R?c`z3yB{#4{qLKbHZX)x0hf3fpl@O?_lk_vkv~BKbkR7aKIS80NX< zp~rN!YftNLj03)pg|Uznfvv_cZe)J26r*LMhwItuYm-SP-3OjLJq_rP+LXb+_vC%x zk3H+jBV|2E+O$fdU6<@QQ`Nb3*;4jxQzq$S4c-+2LY3xl_Grw}6R?-i#{l==@YpO= zCtS||s)*6f8grs6K}~G`$OSH){B$ z?%e{Iz=+dH$k18D2FDpG9Wg0!@yoO3o=RWd5yt4%jvF1|=#)Y!uJtUpvy4WrgT$;V z7{D-QU8#-5%3$K3Es=xDnbZ!qcy4`iHijc?`~g2qU$6aZoAVGEY81W35=ih*LKHI&to5ENV-u;3125pLcH@Nq`MknS!9@A_oipD$oTR@hS>m^e8RY6rtMR5f0<0f+K~$a?YA z)CDDD3koX#uH0pv<^=MeD|=j~$>q#moe?(QARfyg`iNsJzg`WIdHg>GuoT;U=I)cP z5}x+uW0-`wwb*_jTi32^m&iZcn>(H302PZla;^c9>Y_H|v(tdwkdFT%p>q5NO)5Q> zwi}QYvcUx#LDh?ytLETo%|RCfuEZ zS8%Q9!I$~P$Z_S-wSNfY^6C3Mq)@2>1{1*VWBw^SB8?jqhgq|tM}<@wC6G}*rCQ`w z$IuS=gGXo@+5;8}^^LQ^wfyW>e*>;OwLw&*TZ@J zkcJbn`g>Rf$=W+g-b^CHVyL+R^t8{IdD`}{r==2Zew)rq(Pj8X`+579lz%J8@e0^{8Z=K9iby8{>H%jp`E0dRjX(zWy)9flF+u(8R_X zibRkKfWrf9X^=3rGVRiUv^a%up}1Wy{YgzdC>>lhph%Yj${2s2wQxJ2J`V-;K69&kx?S&YzmOSUX`Rp*SN4!5nsGBW~9Qx@77wfhlW)WEnzyI3{$ zACF*v+GrFwel_t3k+gIU>yX@${Vw}sI$(rc>*&hb`pqPl6^~{Gq$u3HO*$@SpGkZ0 z-aLPl{ocKv4WI8eB-O{G&H)VziAN2N_WzU?9dV>OeMuh^1*5x#*`+1sxEs=Q)rt-^ zVA1q)2haaOy%Gu~ z-^tgS>;mV&ui02bcdwGnU@R3GCcQ4epOAJJ`g$wq-VO0=RW+@*P-_LrfdQ!fb@$i* z8S=JYfQnrng5MD`lmaEGiaAe7*!`HVm}FRE0gVZ);pR2lq`rLSx_%z}r3pvC5Dy+5 zUh-q0`}XknJ}ocG(iyM2E}ZWgTONMVKkO4n*35V0-jXO_f+~4hqmWVg6v>;6?%!tx zWEb0`eKxnB67U-G;v8~h!WYOHD7Bo;8H}3dxJJ^#IGyw0e6hY)g_jjRg^=J8Pm+sb zpRFuK$3C9@+~z5xCfoEp6$rDDXvXicA*jh>fl%jw)c_8%7S_%&d;08bwj;Ck?~kK9 zjik>KN4@>d`Nc8K4-uv5(DP-HDQaPCUa5{;CrN`y)0*#9wXiS{w&3nG1$UN$-13qR z9nA1Gc+J$3j?D%|8jJ8`4nH2_rxYl-ZM6k?sZQJTn;jU{q@e)x0pgv-^Dp7Uq<;MJ z8%M;31GX68;7*aeu@i~0K*@YtyP)Z_l|M&X|Ex-*Vl7_)=S*a_ML&#+eQyFfqWCdR$cnrn~>b%f$te*Lv9zK^W} zWn!=~;-Y%~aD7CCtBtz?f_T<>DsO<7=*!{BkK7FWS{;7w6S?o-_IY0qr`I0j3R<1i3HDaFb63*_K?#L6MlbX3=V>Z(|V{lLQ zcJpTzT;n+%M3}TtU1Bg3=~7pP_uIGhqWu5P$&M6MUI*aALdb-Y^g`5RDycI)CbPx zF*gpENZSE{q8tqzB>O7+_!T}b!QEtt+D>uC3~AGKY=ysWN#Y1rQcRl{1=M%$hTkJ-TtM^9+@3 zR;=h#1l4hHZQE+1`PXbHPPv6w{p!;Eau@d}BloEriigpnc#kdJ(4|drNNm)i zSA%q(6cK%rF9yrZ>j^0ij3!BAm$#Nth0|b zbi#UIV~vqsOZse#HTgNK$8bX@U#=*diX4*H84k#kjuhFFCuHfAQDQxGGjS=n_#U++B?D;;1W+_2cUFg?9W^f1J-YBoYb!+zp6=0jHLW){Nr%Fbu1Fa2iZ{WD7^{e$;&&~32s zN#g+uvj`OI!aap{ZS$(iE{Y6hfg-WneEl01M}myAB$k(7pLG{$%#sYo;}6X#urSp2 zr=2D5Bf6uHEcEM6wROnndn_ONV4e2FiK<)zALA%8Hc7LWcB}f?pklo*d~*rh0Hxe4 za7^jGsNJt$z8ll6tjTb|4fE&mZ?>b+$WN>-?RL>YRw-bjp%?D5(S?zyK6MOOpxOjG z2pvNLE$U6&^-?%f$Bn58?By_{h`?m_W*zP8P&58 z-df8feRCPm&ib?Ce(G%bEathC(d()W~LLAPz-X_BJh-F z6I2^&?*(_*6F=LHRr}gT3aX0@T8eQ`zR38wX|Nh|*i+0njOs1cEQ&dTI?4lX2e(|q zH^ulbdCC=!Tu-WMHK;1hyNl^gEbV`5NKr)w88a8ck?(Uf{p0QOaUw%fD`=C3#uWie z;Snr(xM+l3H_=M3(MVyr(`V8CmdIjPx11q~x_T8~*Cv|nnj(OO#?Givlt#ZFQDFCP ze;{Ja50;c(Bu^^;G+QZ%o`=#xHz@~+fsE2!oWJ8vEZ9xP*}m^C8QKmg)q%%{=*070 zJbBmzgBb_Dz$!DeFfK;NPu;+-`~1C(kxP^Aa!(d?m4#)|xFJwC;0j_t_{2rSr3GQ{ z+TZN!ESJ$epBI12I_YpwF%o+3@wOUSSoB5w?eHJVACfX;RhU_}FsAXukE64(u{Ax9 zcQ}arFo(@H(xt0kT$JFmtjpw1GnyuPY(wP9Q3|tq#RLvE>{0nLXTn088Z6M-y+mti zrn}uyqaR8+qVd9q*xJW(|HcX83w5Gerl19%$|DPP6q=#m_ZAN8AlmEAzFIg<%^E<9MQuArGSPS*OxBhOsG zOux5IMwBaUXxD{^2iX0&h-$pN8!>@)fmnGIkUS97h-;!FItSM1@-1`R+R9SPzHkO; zCqvU+HH|^6_3CiAb7j`rZ(`+b3I}fOR@NeOzN@%4hn!&9ZVR$gTLzi;HX|7CBq?+?13H^~($h;l%k1I3raO<&A7dCd7|9zet7AZ1>T@ zh9gW~;C-;(`^n{RQsa^|Q0tvcA)Ij1rA`Fz+5JH(ae*KLlLu8pNS;zM zsD(!3R`ZG~bRZ3_H&zE6*SN*+h4U2y@k28NJ~$k{W_;6JLe_#IZefiEFLL6U#X+@d z0lHT2N*YN8p5)7{1Gbvi$c~ewT9#A`CdE5H^NBEZLX#|79^wN=QH1?lgy1@O&z`6C zFIsjWYt+&pMRX5?d9rcx4INSa%4lgJ^i)3Aa*i1U1L%p%DE;89&SBn`GTB{3q+@lX z+x}T7bscumfz;6HkjSZ$QzyDeAdJgiVB=$qnrY$-8*0Zg4SAt5BNnoXU{-u7lDGlm ze4?TAb=_{1U*AHJmJ9kQ=NjA|VH~AoazEAMnH=tJVNRe43ps!y3n}Jk{S4uDpnxTWF5I8odTHt;J zEP~P`gJmx=xRcSyaa}s_@ugSGWDj*RO)d>J!3b5Wke2Duf$kBD1~*XrX6PHR_1I?} zcztrQxRzP#oZKch$YXgq?%wcQeY?;0nK#_tbY&bRv1~?J>)#$ebVUvL&fVmWc?9G2 z(dpoI?rmT)8kOkf{dff1F?L{@*1d19AMMjckliDX&$xIKsx-Hnyd01jm^5j?+L!V2 z>-2=WS1)fddjqb3n$ynH1HdrGgcCbYFFW+hlPRL3ivZStYQvG_2A(}vLi4WR7ce|3 zs-Q?1;uPMb=`!#%{#9#Nk?ehnYXekdWTV>TlCUM10bM zFbSPyMv|xrvIT>hps@ss>96>2Y2Kq8TgNVBxq9-@{ia{uV---v=n80(Ai4<0_VSs| zrc%_3g3ITBKT-VL{jw&Ge$hT{>}VY>cKd52V?38?G)nWjPT4Hw<)~ApCH~_OB>rBq-dgn?C`1DWG^w!u`s$~ zk`X8iv&Fv4X1N^Vjj`*}$ApVlu=laSM*1j8>X7kQS2&C|fsC|${ zkoF`19EEZ>4tu5@58DSA-4dNM{%>^u1KK1|(E5FY=_|3h(}oiC)m{y51BANao)XVy z`dWLvt#|bR4qw}YJ{pj4+#J`*ATN(#7X*bF^&svJ7p#UGPRad2ICJwp0Dc5o>ZQ^D z1d(2XQrm2#NOkYmGzP_xjK&$`X>pFJ1X!^aTo2VsxDwPx3mf=N6S){6cSGNEs{@~I zJ;Jw|bNxT-B}9If$xMdv?6~y*g;lVOY2*HD`@$ag2LD=nU-DlYx=u-vt8q%GttGZj zfK@_yLSb6BG$5SH&&>QRL4{5t0X(&piR?Wh^0)O2ql(g|-H1^HHud(eUZ1_$P#sGyA%bZrXLGIqK-S4rHN=#L z&gz`qS?$j)+2hsh7~%=Kv@Y8Bhecs4Ad$Z{10erw1%wyo=8_vj$~`s(wbG`JPYF{p zdeFtrlDGuz&AHdGo*WIa(faupvH0=LVzM4alZzG}jU@mjjQ^L++06&zzUm22&grOy z@hl3D48_cby$?2$(3#2M*utn11_WU8lAJMnfWjyawmA3yo;ahNi7;ILK5EXf1&EWr zs7)8CNY+gJ6UrrEMtmMI(Bc1dB*(Lp7h&bF`#5wiK572xP|wY*^qsl`!`pX5lGbLtSe8wkNhp&oz4}d&8gtKrpZ11?1nS{$V!eS#nOy zvnU8M*Agd>EjNpahA{-qak%&~azJ|K-t&`ZU(~Gg9l|ff%%X}K9e(`&kXYI@P$>{* z_0B|ATTcOTN~5F4k(8h1!2H3P=XCT#Q8lHS3#_pzV`s1nb&~ zC}K}u3bNApe)xQs<1H*}V(s0sys_PIFS`6{I{45_IjMD(ATD}G?^ric4Yc!HD7F?H z-bx89N?3kqb79;}osLAAB#p{krO%2MNAQ)l9D*Iy58Fuk2T9q)?j@Z)!rbWzH4C~t z4PTgSXnU|S9tXRd`h9J%WZ}LoT6vTppZfe#E)8RQzaZy79sTC}qoeQt4|fTSk863& zTLlqb{Dy@GA!RvbA?-84yO_q~r>TTy1!=F8XX;u^gw| zrU9rwYre)0yLqwNF!sy$Hb8b6j@ChLI~FWjm18veNL%KjLHnJ)pPFx4x?UT3V!{?s z%edHSD$31|9TOr5N>osf3dnPDIS={`-YMrr<1!~EYcRZRSQ z&G-DsM>OWO8KK&!Fx&f^GVS?^-}_$#9~!B!eh6r^+mjLd8UxqmQYXg!#>iF}x&#|f zdmqmmJM9PO0Z`TJgVSG>p{3H?)@XQNj^SC84=Ha@_i9MvfxiIc>2}{>udB|ZPGF?S zcr8xm%bIeFX$8wpHn1IDhnt-PAv(M1ccCMwD5SFjVdK7vPtBN_eJN|L%QUD;cx|;E zC$C$0|bZ_UlZhiC*82H)Ir$P&_y6W4bPx|BcKk?JM zBl#4=MxQQ~SZ^)8SZNEduYK>B6IsI_(hbGF-C_K-beSMqToyOi+F=ZbdE0!Xd|+nV zQd^E=b_3&(j?r(pX&WmH8TSkrGvW#E1fzGtU%Em&O+tGg^(1zYx}0J_&$i+g6W$|Q zG&_O=qa$^{CtZ%fKH;LQ^E)918K2Q6O=+Uk2@)3!Qr9`+MIo*8F3E6~H8h}ep0})@ z9T3)_jZF0TmUR$OfZey}bW8h=(8Lwm1Q<<0?bo&sj27%MIxxJo-4a*_qZ^xJitW&r zn2_+*c+j};23LLCtiKG90pg+rp-2k85c_9@c{9H8)=~c0C!t&0Ev%D1+fi^%r`MHa zWVEbE%w5pjc4wNsR|H75``2gNH;L)fY`4rMn(&c(;m4>OjFPrxgThYS>gY9W$H>Cb zpRg$%a`46fhX6Q^Sew)yH%Hnkq2c$}T(#nbMy(wmegF38*L)X!0Gs)RPdvtuHSA>; zMI*%EXQ9TR!DHA>a}N2-8#bIIWDNohU?ZFNMxlZXc;*Y51~@GvqP6okuWcbeVnWI8 z9I&)S6rg#%e)UCj5=lvn2+?x!(Scvh-D>3R4HR29?kI$~^0#3D4gTqbW+L;)oca+l zeHf;pKrrLGo&Y-#7jkWfzYRP$4t)UFvJma~ehslvx({_0g2pueuo8CH2ShCk+V~wX zwj5T-v6SsgQ)3)>L&5grk@&lvP3wn_C7I)+;{T@~GAX zX80bE*->KxX8TtT0hh;QJ$gx41fIdGSTy(}LPlT+KYg(8c?}vb!rjS0y?S{aKhCKO zC~WGvTt`ZO%ue4D9nHGW;lWe?oM1crKTJHamw9~C+jGjPBDGesYIaDS^J zUIj|yKrLL){o~R0`(GW!iV-Kq%mpczT(xfMqvE*z*(CtF_UB{%(sa-eyy(I$FY(`S zDXWM;%2jgpSEJZw4f zk=wa)`O5+J?TW^DRdxn}yd7?o3T%fGMRmKL+6E=`-UO?(DO9@-FA<_3%fIdAqJ6E{@kB6`7%zioA! z(cuoP+| zGyBTWtCjXjlGo>>xGA}M^Yvb@q^zO$ZY|@G-Lt9X4UF|#bN?7-+HyXxCzv%2Is#w- zACl6HEW@BRGGD1w!w+UBRnR3dW4rdJ=E(NKn^BjV;2#h5 zEcDz$8rn<0+^;)ZX+({TJ*|Cob0@VePq$D1=_aEFSrSTGVqp(~(j7EplAud%_D2oX z{u?dH+fsWJ?X1D$X4Ivo{OI~?6E}m{#*C#p>{u;$C72VEg9lVBR% zumPtKMyK40yau7>70cmi<2$|J;O_`>HFF8*b^B#c4{dVY@It(Ck$MuLv;adl&B4V* zW8)XG>n{hk3$D{!!5=NAmm`yCNT_g1jo>>h zW{9pCYhCe(8oi-vVnC8GgL1lLKdSryatuF=3*J0Fos0-w#s#X-o zq#-uEg>TlGk1l#n!=sM@Myzz?vPpA`FPubgg0S@Ch75W7C9LU=%*3x4aeT6w6Ep;P z<2jx84OmQp8MFr%k5=V3QgvQOC&Tu;ZRx1I$AT8BXw%dx2OSQvs|72K_AmGK^)+WK z9kZUcES7jXT(4#_N;r9B7oM3AN!D9@u{lKe@%>31uokNm1}4XX#lsq@hyweM*Nw4m zc-opD1C8sH_d(-Fo(Utui_?lSb~{kA;G;=;Hw>?GiP9dY17D1>!4fpG9On5o;_IDA zjH6Ph;TR8Bx?1k_>qo&BBk#nXrXgD>IwKE{YwFe`?;e?P>UPj6cwXEyt#**;Gc2sT zHu}+e?T}4OD9Z2>X@qy4ACEeR?X&kI;g+o%2YrG|>@csJy5j|bA(`#OZ0#0y`}mLb z#XF~*JIhpslKY-^y#4k|sXncmZ+=fX&zMYYn0QTm7~Fkh4^@If;f1J~>g*jQj!{>x zBGo6xmyXOZn#o4HAZ>~;4BS*o@`Kj=>7nI(THiKmLM85JdC!g39h#Ix;rmg_K$aGh zjvFx(ptHuWw0#wQadAR}lg835U=Vfamd-6r3r(j1@SA~Z$+<0&)h1bzb3L7#_EE}@L&q`aX zcxpp}+m(YV(o@I5bTcsW4JfbHr8c^pUo zKW3fj?Ca|LJwNc!91$YTK0EdqPxhLrWrO%LWBL!I&ne{=D*(;?+O zQrjceF67BS@Sikntfpy2w?|mMSUWcqtC6;u38${#$y<-f4(?rRn;k%laAnFoyb!eY zY=3IguS@$ps`Xwe`A{FP%w}n%-dNqjGzh2>@ti9~GeK@a+MIbH$7dsWfo2_-w-zMZ z1f~IG2;d=v7PHt-NI-iv`?Fv-!r;f##NFZzL9 zU715SGr=sdo9TXSsEM*LF-NL~ z@?~20`E$)ZVNk?jw(^)iZ#xQ!6m;_5aNf>4%^@%ZoT=<9lOnxj>xaclkAq6G&b$Dz zgX4L1cduunH+6pDVwfzW2D!S(<5+erd4z{PXGO*rEb8Fmin#<-`gzg?%C zBgi4NjIaEyCn7Jt@sSCD-$)D?Ie_o|D?jDYXpYe1v^)H{pG+~zaNvi2 zX5mPf8R0$`Uv3a6piCCIIxO~ts zxS7gWCB9S~i|Uy>+d75$77s_01DP2npP6r=VU!Ok&iILZ)dA6MddaXj?3oX0@nYlC z=>1mMv#H@Mx6gY^FdEgtn}5dYHg9FQYr6Vx;d@PZB&VoJ4u2gB=EudpYvXV=ycGWP z9h&jm+k8G2&G@@mG|-8kA7GTD)JJ}&357R8Lu#PX^~;#66!^n?6RX*3Eu>4H^5)v{ zV6piK6Zo(D;?#oXyPvpBu<}4<4}!_w;hCsD{y~AYYnUY zVEv5wSl_knpXWfVI21CH^1&yg3=}|Q49N3zcGvU97HRxeT$uNRnv4{BJsQ8T21cVQ zZlVt4UK)--8p*VxF@nN}r35>82nU>SU|3LPBEm73Mcsg2?1q2z77rPUdL8czN-HY3Jf$-ZJ`a#0-y5x2buENVCKI(GYx})AtA= z6w$!iN3=ZsA{m8TcpFD)Jiti1+E}*nMs#xz-dJYc(Le!vlmZex3?vBd0J%hOYY!12 zf!n6!r;QWaP@dABqi>WG6EV!?@5?(?mQXRdqxG7-jP3{z?$7%4^PllToX>*4ZwT>TDU+2;#F~ElLx}`c>ndUPVwewDfH`D(p$#VoZ!*z{^D~pn?o8N4+m)5s@yYE~yP2xlWD!3MW?qw& zl23_gNjY@}n6GQ$HDwIhXyQ2trqZhAhCD$YJda5uk)Iy#$}#!j;w%HpYW&)k2^ciY z7hm+W`sqLAG?-wIb02Ymc~NJV-M&GXng3SJkJo_6$UT=t+VoS*zfeg4TE27#c_dUa zaL_6wcKSKC{|jEaZ9`UJEoJ?TiI1+}l&)k16%vf$inR;vL*b*<%I)_bo_;on7+d9n z$)Aux{6h?UZ{vaTaz_lwo9zChNgsLt_+zkAY0>X4Cd+TPs0^uNR3F+VYMY$*5=YDc zo3X}ZIvb{(`!)5sqz@|3WJDR~O7>uh%{dl5l_f$?(i_3Qw9SAQTmFfUog&=xZulGm z3m4;_4r#8uo2l1%hX)gn$4+@3eMp(bZfJG?Dmxe&D zJ!Gqd&vl=7B?BxKNM0c7-~mtnoK9g+X3MN%m|}FX5+1)k+k2RPEmzwuRPvr8tD!+t z{wiM_%Qg?#yM1vKu3wAK+eOFkJJZBBo+1HKf4nrRj-RhtIAaM(78g!2a>3Io<${u3 z`A_!SNrZvb0UH3Nd{3Gwi56K6*YrW~^Z|>v@>iWNV!7%e|FlO=lcOV5+v#$sA!eXg z*o`_VvN@-EISxr5R?f&g@WKpQ1{@Iy`rlRiW{|qZ$N%V(%p?Oy2LnBX9~llQc_bRS zF(;71F^{!oN_!e$zS%+ja^^eA0$p{i7sMxi{u4=oiNQCs1dwU~IrPOGe-Y8IV^kS^ zp&a+MmbOHVs#CK4KVkhuLjn1w<6LvV}v zKdQ$sP(mV>W})@-Z$`-EE?m;{v&kQModrvHdfwiKGYy}y;XDYK8lYLuZ5^ynU$Tbr zj0%`s@2;ow2}gS3>3|%(Bhx(}!X_6bAORl70+ULwvk+;BAq5*ic(BKme$9JLm;e3U?{XCAVj|78Hn6LV6=MkZrZ=A6-On(W8lRT|ClF-gnmsDao`MEQwPSB2AB3!R}20Mdx z!NhdDRzB%T7#Zv?6@<$%8q%?iHaT0S&4@cr2)+O04JzOr7_fmuih%M&3Ki!+_lT^1 zf5W%3hlkTO3UG{LwKjqMw=KGIn}vx03yE?%;x-w`l&v^Sdu(Em5a-??m!d7tztrBF z8MOQA#^gYBI0j{qAEyci%@DdFjiBHhhoVw2uyIk~XuW$u%r2%LYxl#OP^aq=7IFmq9>4Y;_`lWK`S6S>Zx1<6w|qr^O+b;q-l#-_ zHNU&%w;sUGRPvnq9~d6~zgLqaC3wS-Fpj@;Dt8^Cp+Kpk=rN2Q?FWIO*}?YpBU3PA zu5WU^<>-7K*kQrx@b#rr2R;}b@L6?RYJBpnT3yJiBe&DhFb8^CNp73SWjG`;0#Reo z?CWPthufcz6x-|)$?z-^Q-Oz2#3>b>F<{BT)+Y8kVZUG`?zgjlTE0~)w@+jP=bDpY z6E!op(|qcl5eI**|L}P$$KSGVC*$%cx4|m?a&(eEOqQuy3(w0c8aT*aQh5G|&696> zeogn2^K*8HBWGE_P>tG`NwL!*o=$+^L{HDCAk#@*k%SpTg9rEIQ(;>5H|af)c2Y8N zlS=aT#lQ9mD8rHGVmv2vHdq?st@^`;D4;(L2oMOEJH!G0kZ!#7{Yk=jOA`eu5gwfk zO>!96=xLTuEimz(ni}!r17W}np$NZcg?D1jb@(x8d0!suSLMv*0# z)hv%q&MNXVF;$GUJigtxKd~!nKQ~omMb9Zr6xBGFYpPdv?10mSnY|PaYV(JaZ-3YH zV&oU&ZlNUY*}EG)qZV#AcJr9yWE9Bbi-`c~F9}cfsZye+WAVynXgb#%km^e!QD$w4 zZetyiE+u=LR=a_Xs~07Hq7KBYq-?^9^mb&3DbUTcVP4%41MkKFM8~UGjBEQ8EmQG< z>8QFLqc##))U9g-7G*nqh9VvNKPH!1&#VneKD7(#YGRwKo(e28_Pr(a`1{+OODQxbkhz?Wbx5zu4f zG5)c$DIJ04=`hQlgJA`Y*%kesf4xcd2rz~fKlIOI=%A&Ex!))m_61=i>rchC@*0kM z=)8JX$ISUa)s({^1}<201w&YIxmsvD^Izs}R9Kwjm0;)T!OlECtsQcd>Qk}*!Yp3&L#b2Hc z%{#dWKY@3WclhO(e82qD^Oo_Vt+;mE;%DgG;=<>2IMHLj>PN?P$Cxvz z99QN%=#(%bMGi(ha3n3IoTQ7w;H3$TE>uB%cz=EX7mcq zmMtB3Wt9}_QBbY!-?yHz{5BSfHNZ1WNpTbVg_q~f~$ zw&Wf>nFn-@>k67=9j&SlLGEwKeQ_!wlCJ31X$*wIRSx zmfawgdIp-7cn(&{LasR;gR|lbl5iU$)&W$&ntajC;lrMQoUn0RJYG3s{Elj}t@!y7 zPY?)cru!#6^duoOAwU==3Y*59h3)tc58jT=a3SDAS5c(MXfU`-ZCojX% zBHqM)@U*?1?R3&b_i?qqgoeLUn2^aS8{=kp3@12<Pk!?jhdJuqz^ z@i@vrHh=cg=I37DETuKk^THc2 zUO~n3RPoFd=Dy~6;`#9dPW9M9Hc2@BV(e+}dh5 zrApfS_U$(@e?0X#1aZ!rw|~pK<73l^HPglgz*sE&9HaFpX!r9o*0R?P1vh-!K#>69 zSD35&Suqf2(VsuN9@DA72NqPUMRnJ|*m6>QR7%aWZA@VL6E1*yJ(tEHSse#9?|@d5 zZXr_Qt7*fm%6$y$G20v24>lKzSr*EG(HG1kR*T>hIu_S5M_}-;+h?}}6g>zzS&mX? z2yglH%fO7}qNdlPq|2wjYt|Z!R5Xss;c)AK@xbQTB+`NPcZ0Q=SD8V?W4sOM=p9y` zLE2>3Kedq&`f2(7uTz2$7i|#kITuRS^`1g@A6}wbk`|_OC&sV0KN)#6dwBwqreLW| zR8OvNO{GuAWmw1ObKcDlGPe15#>w7h$b9i!udg?ecx4kXr=XxT88c(FHU5`>#`-0j z+`BxHkfHo$zm%5G@eEshH2`#z;roGw#6xC~OLx%f;3MEGw*JciLg4SF&^4i4&LvwDo znejkDBrf@9{D)MnrUEb1FNg7Xs z-Mf?FyhF0$l5i~%2 z+YU!$8q^{7`7xt(F#2w*O2b&H5!RVUM}f9asV%(;;gup-+6+dCBzbKs*@r3OgNMzS zN>=g2Eka{2h1_nKe>XaL%coo?+9S|z~PzNjCFRy?0_RAs>O&xH7;g3YNphk=R zE4Ry>0+Q`K{%zcU&PTr6Z*6WcG=3z&o|w|J`gm`+eA5RD&&a?15hIFBzb{3kdVFi= zS^s+f1&p5l2S4J!!+UKL*5kY9mdqeGMtAQapdAfu2hKSD;C@~I(6Q?J6HMJn;zdsx z!tKuGk6ym|GtZD3){KktJY1-^Ff9h?d_F2kFFq0hB3U*N;0b{}l11m`hw2_#L4d@Q z!tVFbk#(kBX6}9kPlBa5YrmNXSv9pyXHEsF-?nhjnU&u~%ze?0Uu+-65{+m;9eaMG zyZAOu?GE8V(G9EW@-{~|aFTXo2Q)RfQYd>RNg7^Wlu~~9W zy>OXK&@=ux*00yse#I@`3hkL8$>WdQ&bgH-D$Xf_sl^)~e6%Xw@yiSxRu%SH!Duo5 ziIeHZo@<4u8H}Q+2#D@~!bD|-iTZakSz2$B;W(zU+QkM%=QH!V&uX>obFQL-mD;nC zikA_ySVK5@`KSd1uDsXZVo*nt>|Xr8c9l==C*AF1kRLM`Gr7R1pD|Nf_wDzeYuUc) z;bnj@9Neb%P19E}1#dbQ?Qiw77+>tK_vfQY$MUf4>13XR4|U%{X0WoVTr%|QFri^X zQ$)BLbJ4P+&`GSLr4mB)3p<6~fcxD?PEwXPr*Pob(1M*^Y~1>W>*8*nJ{rfBfqHKf||vz?(5)clf&*1o+$t3U3ep3xA?u$A6^Y2QQ!Z`VZ!Wi1)b=UJU22i4H|T zdVbdws<)6w4hr&Is5-i7nVE~7ap*Px`cPi_QvhkoYPhWUEBuo?VF0Tmg==~%0a!w# zsvC<)tvJuct^vkw>}-FR2trwdo6PI(Pt#bukaK=E&ck__oi@1J+AbS<4GU^6dzaH* zj}5jN%>9RSs@2ikx})S`{d@TwRU98Md)d~{=VAM}KZLpYX+>dv1QSU*4FQ_4sjJ{# zgVr2<|Igh1S8i8v;cYRPnhDH*m~BMa+aRadtTsM->-iN+czp(<@E3N{w^Lj>eK~hj z#M`#dd*lCU=R6TC*-WLR+O$i9q9;kg>jrynE8n^9qw&(1*`CYyRk&0=lO1Lf zMjO*>Vo!Yb`!rB$#*(kTo&ioA4$muwJ5YIv8Hq?wc6P@S1<}Zvld6a?DrTHf{Pp^! z=!9j94W-0WYl{ajf8y!TuYB1U>|0yPZd0SW!5!~ggas(M1(8T)6YV>xeGIPz=TfMB z!&Ds5v5;JE$O~=jyscx*T_h6QA!vAePtZf(I)?kd9UdI%l5dqbToi&7$y?Pj;f#S6 zlhpC|gm_A}5kI?Qq-AILp+*WVdCW@_U$N{2pBsL?sAO!l{M7zn!c<4_@W67OyLGQ# zF*_jeItbX=#ayTFOPp3P}`nKdt($a+=O9YrETmw z_+ta3sMrm6?%;PIhi&its5WPQN~c;ehieCMyxhds=YwQPmpf|J@aOFUZd;r<>w+xX zy`8+KC>5;}t~l~GB_4O8aNB}qXU#4%VStVpwB$E92~kF2p=(CZ#*iJ+g|i$k_VfCR zILoQ{xOG>V229qJ>q1gui(!mAL$qdlJy^rN=~k31m?#ELc{IpDbihE>nCZ~x|2OQG z4;=l^hgW=fB94;a{nAkD9E22|dOWIr2#il}!Qlsvkh}hDO>4IJ%OWZpWdRBpu5DdP z)LKveIQt!2gq9&xo0fdU)UYEQy7&W44j;(t?aP1D941&H$;?Cz00;YA^ePdp5ih&n z;G2pH0v+Yao}~faG-_RLe0lc3x>4PiqfNt|%+)Yja~YJ<9#=89QRnjeFM2HT#$xF)-p?&3j_iEERmf{RG*?4M-SsG|`_clH`-U`A zNY(pw)Qp7zxvi&iQ#dD-c4o=Q@O?5%`_4*-gQSu~1u^2Hh_S-wLTJ^Rw*Iy+@S9;q z-i46RABv+TRo;zajkHBUg)pELM?eFfdm?J!$1Jg)VBr4;rjBuQTaJEpcm$&u>nG1V zx;oU4mpPF$gp0)SHwXw<{P__t+)l!9NH`A}?CPIp96?mT4g2O+to)I)>^^Vx6U9}Y zZb$MkemO7MTz0pY^70j{P;eT_R7A*eNPcr(5`**`n>x7)WbBbraug6?7W{1W_ z3!*cN%Jbir#V)kp&VdLBw=kmc4v->Rbn8E>tep&5QJ}GX>~cO)t^-EcpQpohp_4jg z>!FrJ^QJ{0H`%zoW3DiB!owAoo<`ZfT->OKuqbhI4Gwf*Lphwdq#uP+QwM=oo)@=I{zByTyGJ&B(e&0S_ z@CVB`FuOUEB)DOCYwa*?iV9}*($rM+Ug=P!#RniGkea-zVyC)1~H3oy-684Q^fa{eI7^h+1?`#GFlf6$3ugd$KaivYzL>n zm#eTGy6TTPMXqk$M8$cxM?MV4!W6#%4>_DHNX`EvdUkPe7A)Ibz$jMY6oZ%b&DUw- z2V-#DmkJ?L-Z3Avvbk&KY#O*t6Jp41^1+hYmXjs6vn&<2L-K;%TGE_1+Jtx}<#a># zwZY__;N#kK$sEd_3;eABL|Si*UT_*hJfSvo)uB2(n)7mmzk}PG)trHZ1sM=~G1MPw zyL`pbA;ug-)+s}OADtdbf=}viQ*1qSk@){;YfS#iCRR`;2KuSJT^=z|O8$d`{r%R_ zvE}K<+w=VUq`Wel!Pu3&305XxIn99=TgwU2rdAJb^_~l@d{|l|jnIvc^eH$PU}F+~0A8473!Acj zS$1TfQ#kIT61S0|A;xPnKwHE8?(xNUU+m>9>=UcD{_@_k8kUj$f$7>~$u_&k6n-@d zxb(n+DLXn$NIhM1jOEtp3$#=XUH#al`hHGit-%YyJlHp(_r%(PXN0sk07>npiJ=#q7qqgufDp_%o(4aIDQni!*k_=Sl%2?FLBy#eD50IQq(7NmatkI>Qc%U)huM+AZ}VFGhM^fM=;jy7WBA*)iLaC529>ERg;^TmgpND~Bk}+(Kz>$vyB9t=kJUHxL zESYg3M~8n3wP!^~($DJ7An!Of9-ZJ14Y}E6b}4uYJ%<|f0k=*+=AdR?S)MP)LGKV9cDkrYRA7nW>T7KDNz&(vZeD{an#J6n_ZS% zrhLi^lRJiuZr9V2I=lNk9ElPIf+8HjH4}xp4mdr+mSJ8x6&vrcak{0oE^99z@zkxf zSM1|#s99(1bD|jiJ|O#JZrP!}x|q9xewl$MwVbT|f$t#Sky9VzaT`aqwS2e>mq2sRUHiHxMK4fy@R-+_@Pf z>>szz2)vsQxZ0bz!d#IE?j00jr-vo>yq;yBhi*O65*>X<^yt}D&g;uppbu4%O(weJ zQAuHnF7e{9fI~}_?T*yeBQFuZ-I6>~g5+v@k-gX?|?UR-*;;ChlP!d9y$ zhYqlKHYpIt6zHC{=ZqBAvk5!&+NW)w#+KYxP(pb}$d9|O4ew&l+I9V_tRCeQyfF|0 z%kE9`!_QnF{#px<&-P>djQ!UvhhOqtc|GJuh*HESMdO-#9k!yBHfls(9y=c&(uMyM zLope`=`kIS8mm_+@G~aP*1ouArQ!!j1a-}nTnp2{YAVp`7OY)ea|L4rt)~gbj6cWLWd{t@ao84^O~0(hEYBY5`X(88;lvm? z2ZeY-ZUnO*f>K6%#f3bHu(xj>KhXv=_eSmbZ9Mq>&A;>;?bkxmI)op;oIZSoY&P?s z&|6WWnYW=PvCoLKG&U}bX>XC}NCEB2p_h5-YT~PI7n?K>IcI4>mp0i#l|?<@Q?5z9 z#v;2pXO?~lz&~~HAJ>iCM3Yaig=9%`7_Rz9i7C*Eh$S0_gy2-r38Ow|PAY=UPP_UUSPsb?MTy_SbL2hn8Wq$nYf~MPJ4Pl+ zlgiSv4DYamTT4H|(p{{R+_k%PGLySG!j^g5`f-;zC>iNo8gpa?;v8is7JIBC4dboG z-IkFPV&AG18}mwc%r!D_xLb0z@v-DQ7Wl%voce z^JhNqJ8xdUW9jV(`4A`~TC03iP4@jkc+YVSJcjET-v@@V+( zN7^W_F=nj$t3HSk^TFllZ}{9adTrT^Q?G6~AP42M|DNA6$wH${$Z&|r(Jj=GvZpa+ z{`A2LWyy71yAqL)_tKDJxRkPpbyD8C`S609;T;Aeg`FEI^&a#??yg7&6H#?s^WJ zk=C9ZJ1!h}qS~*bkU3z!CCM)ONYks4sjUuIoZYfSZS0XZ;{Q&L=@p6Q)r$J`)0QHy z5-DH3>;}EKY&vl9)0@%C>(qfLpS0o3kI;U{WLEu^uIx(YPX|^qO=3+tP+D+s*ykCS zt#7Qa)*niVLDILqZ)Rr~S?co=(R^M5I!1dsCc;=%Tsi+*D@#wSIc;U#^ z;pa7Yf53LwHq1+q`e4J&NsSLeme~{vb2Hk3f>}6nDe3rEd)D0c)E12~ayBWb(TE?z ze-B{GHg}==?U+|+veH?dLqaoVa8yGtRcI_6aS$Y^-7AVRcv|ck{#HGeOgJ92M@$m; zDvDtolGXT+kG~AD9iXnfd&t4@K6w z;b$r)@f29pxk<}IH|?!Bn4qfinQ$vPrwpQ{wnJ*oztO&L4uGnXu9hfGXy$U(g8VJ{ zd042Ej_3AjDJMai^HI^gn9=CjBM^G!#0(TrBA>e-wPAbPb!s_5DM>?{mic_ks_>l0 z;ynqe%}c3Br!c_|NG@>^hI>zF$jo^Ps^-(gMC@AR`$O$hDo`6ACd(Jb>?axiP2S^; z_r7{Uww5n9hx2p!jGu)^@lH5zzAE(LwXBT4M`!oBU!atfb`G2m7%S{dDg{RTd=i_5unLix$b1Ek)qh_qkA89 zAV>p~Rua`rXYI`CRHT8RA6f+21*6jSf@8-!D{eo+@)<7KuQn+7)msFz{w$HZzhU0|=ubInp=Vm#F9S)Q-QhJs@`(d< zq1Mjl|IMVb@=7M<`hL(6G4VRNE3ghV3o>kkzu`4c? zzKpeJ@#=~z#*j&KEvkGG8J&P*pp)rmc#il8m&ejNy?LfYXgZpI=|w5V9k50=?@@eu zh;2BJPw~8p`oh2{O!jUG_n>_(Q+HzWj?qax8tFo`xy)Uj4ojD@SmzA3qA( zub%t~70-tw^$eMQ?Tkwe9c#A%1H|<-lk~;_4~LJ7XEyhFb8~UIRQ_S=2jH1h6e{di z&vQEcx?=8#th9e&qP(IJGjnjwlN8~%1xwbYLrORd={#|C$!mMtc-}10$Na16_Ngpv zKjEp~FOh`4VA)uhnH-F}-R%rltgB}_o^~{CX_aB8K|x|6e0(|?PBC^(^FFTeea&=2 zA`3tBU~tZcQTH5ekN%a%h|;I#pOdo_)#p4B335{SRA1}!{cRqNc`NYpxB44BKp)av z&7W>7UKEi1KS&RVWn%=OQk&D@J}!X`P3?kK6VMdb1Ck0cTYSuH$7Qu1(P2y`0Ez=v zO#r&g)hFlrm5Q&MCx>NfwHu5=(P%nd;4nXUDnI~=63bpXeC#?{ z$L8iMQN>TdoViu%M-GAMX(nNaZI&S$WCS1h{`$MmJPEuI47@+J!7UQ4V4NM(R1bcC ziPYNxec9l*65B9BQd|S3dDI#bhd{DXJ;Ih0TJvw}(Wd=PQ&dN%TKn{EwJYkf7zGkq z>iqfVgLTZmi`GyghBsX!JaqDQ4wi1Oct!X~o9)Y2Y+3J`2{_hGa`Ql$6WR zVAev zZ3oF1quor8UZ}4hM@V~gxFR3~;~NQRRX+NPFOPZ0$`cE~JLa_m=?HoZFn_^v!8$=% z@-%b$q)XSxyJOooFq8ruV_QpOsh-Y_h3sn>)TJU~v!Py_zpI}x$JhJkl`*tIIb$GF zd#Da*{1o7qr+gJ3RX?TQl1pn!>k9PMU2~h^zSF~$j<3Nyk%Wvrmz6Be&QFCfu-Ig^ zV?b}m>?v35{4n7Mtq6rcPZ&sFVWQ>qO!6NzoAwH^jRzT1Kf2v489ONtx(GY*4%O?U6K&fqCH#rih} z09Ws@l^M(L>Ix^l$ZTctj^Pt^#k_o6%132rw0Kc|&VZBLbSpC$H|IjzA6CsHz*>RO z5^hxYxgCNg`FLBwF5}T+{Up8mJctmF!rM0vWQ3W=tOWMn9^H5Un3s)c=DHS@bifA_ zmd9FEA9^HG7ZuHG@cLrmkUsu!ee~N}x^~`MynI5y(cy+~C1V~(VSDtz?-^JrF~V~s z)L-xQ27ctpa9X%v*#E> z8(^*qdn$mT^>@t68Z(e&0Fyv=tP9W|YhQxDp>z(Oo{eoi%vXV=w*qzjnCZfi5y(z{ z2d`c+!5n|&FpKm1zJHMN_D!t!m8aI77*xqm?Mj|~<>@@2zkfq`)61}^&2Z5aJHF+z zS_n4N%2%?OY8-&Jvbsjm;t?MiS`?z)37UULyUJxbEk#Go8d7a(~~u6sIoN_blOOijtyP0-Jn=a%$% z&Ixk}M#IAn^h1_N)wZZviCC!;S#K$P8K1M@52JyDS4~6}92`8g@4_PO!IRHYxpGTj z=B|dl1{)L$rdnJqHMN{8>D~jsp?+$H*u00dLhDz=@>-OXm== zfklo3J)%{j%|*UJs*{OqJQY3-Od)Zwwxoqv$23^Q%vsiC`lJeLb$l{@Ndf269L0@&l$;FwW=WhS@VD7`xPsi~q&`T78RE zJV4ek&Q24C&_BDQFJkF_mp{5cYYNFcQYBauJNkWAwLAcWBt1BC%0Lh4ep-N&zsbsz z6&u+6H&<`fe2!_{azPvf3mTaZ;6ccwr=|mwFH`5fq{uxcGTPsa zELxnGBVSI|%(-YA4TDxK%Dh1L?$iFLP}rIzapO}66Z>=w89yeo>_OP?JL?EAL6SK# zIf0h9dir2ep9G9$uRn8x$vTsXFl4J)XC%v+rX7apaWptrITG-n)Na2@f*?S0FK3qa z*bsg2?HS+fu;B{M9z%P!%&x2S-{7V=5MRyORX{D6$g@Gco@bh- zgdxiX#sp9^Lt8*>jn3*SKy>>|yS%E?MWz2ouFxLSY{GmR z#XRE6WC&X#10?{pVh?rQK}@`Lso~TNE5kgX7GRE$B;lvAr50q=Bq8F3YA-Veqp}62 z7!zZ5(Vs2%GG+6FZkR)z!zh4oxrqnS=(H3T*{BiCel4ecF$|NlAZJABgKF-K2o?c8 zMtGJ`fW3n`LzO}k4HE7Zm}toU7)00_7^lD(eSicl`uEHTR#nJkb-f#FnL+~U@@(@d zLheRDtgz&A=KMzpn84FUUlr3O%6mr zlg}CSsaB3#w+z-pM5ytbi+y6u#uE?Ku=)muBO9*`QbINV5Auqc$R|hE_3sgo#=j>; zqp2Spv2I^qV8C=431u=+V?^|%P8k0WT-i*7;W}?$S#4~sS9x)@J<_DCaZm7$pa+-# z0Xx4nD`?k4$D%R{0AIf#&9b;ltJC+f?Ds(G?f2hEIr`!o?@z4iYTM_N_E!q2xHxR6 zV))(T-wJgU!jG5lG6y3{cq?A-!h^N|Ko(3BldXDAc{v*!*n-NNj}_tBOhic#)0OJq$nm7lz$?hq zD6XiJ1lyVbz;U?XRp(qUa2KKDN@4iy2zEyKetG-lgtBkOvsnAKuVYmdoWd1mP1x;-xYnGkcRBhxW}G*%=&E&i z-y^Y1w8N*8I{U4r&Kk9jd*;mkru=q3>SsJ!-u&AC8bcSGS)|}sr>N1TBv}5vIJSA) zdEd%3%y&BdNNl)8QQ!8i!EO>MB{cOPX}zwk2jDS5W5uyQIJfTmjefcf&B zt_Jw@;_K3U;re`d5}f~e_LsQl*HDLKiCFxgYnyWZ5N;7dfPzqz}8$%uz>m=W$zPoFEmuin?pi+a9 zgg=DO!IQqlY(@{B4wE!do)PPR`xlH2HbrCAq|J0a5L)NVbCarC{<57?_1PcdNljdM$}b`a4P^Ot@#k{8z!t)pIjLEhW^bN*@NnrKTiFB%^}t z!4WHBe(x6|!SKeQ4HY|7(pP3Ii(F3(El`Exj? z3sV9yWtn)osx>_*droLwF0k9|=a8cc1PYMkheE4Iv3xgCR6xOo%o><)dGF7SARd;& zadw1^!q&`SG3h47IYFX#&3~1H=3(=+cq|%Mity12ab}JVZ}{j9U*Wkc?w|CN-@|$J zH2I;~o3#zWlo-M(8nO&k6JxfRi+wm){3q@}KhIKh7cR0e-B_AD$&9!evZqJgvqy$e zI;}BEI2%H2i8m*PQsw&JpOhVup#p#P<1l(Yd5X%-k%a-u;|iAqxUfj$c3BD7=r|%r z_RuhjCb0wAW0W%**Igx{Q-SA%Q9D*>)Dl32RyB-V$>kTzV9CyE45+g5wZhaLx^X~9 zZRVwRtDqa8+ZNuVlX4m(fH^jZK+TptH`(av(2j->^MlbyD3r2At7F6DjgT_;Z;(9l zkGkoibN)(oO~OA}FI013QzZeMrL<)L7GfmZq>x>S5(#nT38_GW9mHh@5Y8$c^(O|cs<0}ds=4RAk6YeTvar*DPww# z#b5H#aU{lJn*8kj#Mv~Z$7lyrJCW312YuQxAtc)%Dv_dcI+F&^2bGe<(GCB63yFUn zL4#Alm1-9Nj9cpQ{Ef-_p~O&UB79o&|_L=J{$p-d5RW7XO5VL`4k z?%WfwA%#fai>bLRtf?752y} zE{0q2ayHADz2n_n&PHdS71r7M%qUa0RcrJ5-%cBEa2P>i1`Eq*tMS}-txnt`rvcOW zIRJcj$W~3W&V+-8glKgzA|Y0En@mF;wX;AQ4nndH4gDYDsbl%If8TNpF2q>eZxc&Q zq(2VS^@+#HOzQh@BP-=AJs;w+Mw4dcqey3vk+$;F=?w78olAL_F-!MK{O-Hqt&=DR zG%}bqkZC10@U}uyN+evKE5Ot4&DZf3^%-8#+5+Z-q?~rPI}Q)49iBEHc9#CZ9H|zJB(PK~B0*UIbCT`o{gwI9GFOiVE3b zYlI*&Fg}Dsp!`7@1gK}u!O@!^Jo#i)u+QtfVxv8h8WM|#@}|ZEU!1d$^&;PnWzYP8 zc6H_Fx~}s}v-z-9Oum^3HgnSaV>S$lcboYfhg`9gEP*XujK9z6KX`_6Bv)jEW7vV7 z8a=O4mA{(hGr*8Zgo2`TynIW^3y*eD`y07IOerHU@~|m3E*>0gxh$Iif(4{WGZ)pu z8Suy931rriqylK~?6KuO7{i83&s)mNH z9O{q=rzFr@t7d^k`%suEY{5*$NUn9BV;4%AhK*A=G!l!ETqHJRoID#M!JRB1NZ%KfY5HO=NB{b_ zA}NQ*H>db3poc^S6t*x}0R>2aPmtR8PftmH($dw~b?yIk6HV#drQ=}i&GR3dL0e7f z7Q49qG+B^BJDi+L*O_HD*8w{1%E0en*ByH^ruYL@s~|eDT0Fdc{np3{rJ3serA}o~ zdFvIePx~5c(K9N?P4Bu-IUma;>i3I`L@eDkp?*#{@OZdTXT>z;bTh zf8yij2tpiizGm;I=BbFi3xNRteB~{V>ihYG1-dpRXyw=W@&1aoxoh&K{I(F2p1);( zXa0?p!84MQ!`w;Vrq7=G6>h)_5h-DHe&_l+xFQH!8`Q9 z_1{NWTXV57Gh;LznL8?25i!)N1n9)^tn$PAxOH zD@*8OZQb|RZ=JBv38iDS0*+c^DcI3+U}Hv0Z7Q-QD`zFR8SyWq&w`*>sm2^6FW#@= z{!>1reIEqbo8F#_X$%?5(cjmZ>#~PO_h%LUdqyCW{6IU!{MGYN>GcbBbn8-sZruauvK?6g4(GzQ>a@ zp+V0jJ7lZC4dL6;kDXx7K@-$FnLsc@Piq(w26e@^uaLC=9)uw_t-4u6J zD2nY(Zs}v_YG%vS{1Ze$@M80`)zi(96ivEv7QYNuHkKB#U+0EfDQlu>H{7z@Ns3aHlGB?A^s|S9_&%-T5?CU4ApymJiHi|I>i> zKaaDpO0IkK-(%3R>S_C0cwTx2V(+C)8$dXdNB;qM#wIFX`bKcZK_!UDk?PqwU>tJi zp{*f|cWQrZ3M0?gsP91+iJkVcOY-2vCvR}T+DtRqq*}v?quM3t>YyU~5tc6aa_7fj z+1U7YxN^zyK@a-GyZmhF3XlNzE-pSBGaCk64}dwxw5!#(FvY8@Zx#?nI%AxL4cNe& z+x5sw*~g!7-dT+4_Hn?tK9v*1E7A>xS&C+_i?|1xALCnol)sYa{*hp znvC!BP-@E5boqzeCY~m?yMf7P&mYBxr~Fy;)>U)LVSTb*`R>S-d*!@1t8 zcUJc`H_`0;Laru*e};{kj{Z;Faz!yUmg7&<~a;^JkUMs>>DQ@*0{Cj zLxen;J~Hy?+HOHfxfo=faIyYJqr=A&YSYgMU?K4n*gzz<={qrpEL4BYOHg1K01@}{ z>Oqip43<(B-Op`o;kl4L6K|gzfqn9{T?jUbNXErDAL$`Er)j4z&wq}imUlT<#*Cc~ zj$HZt0?ik7j>ZZg=yppI&M+=riF_Kfy&IKto+%>A_$gvJ#a-s*0?UnPEf#!}`YjVE z#n%BHf$h#LImK!@4H*{lQ=*R?!zj5-lvV z9g(O-7*ob1uXy>gNBtESvUHX`D-LXqLXb#kmCC%|>UkB)@QDqaMcJmAXH6_stW}sF z5CRF^myv8)$#t=|DW%a`$f}=}t2hX=r~@4H4>pHi$1`enwLV;Tv&KzaEQB}~D8$fo z#moQW(ZR8d%4y#Bvx8x*_4}no+-sWFTd!@Y*nv`=_`a!U?ce6#)y3g&?@i&3K|5%8 z3|HVk;oo*{j>V^Gx56_{HuJzS-Aq<}A8Yj@3zVfu_AL_&<<_>-DyGsr>t&l6wg_2e z*>mSz3!O(dxkO=xnLW#nnK=_@$<7wN+}Lh`!L}O<+l{-ueX`A5Rk1FwzI4!&^Ub;- zspsB-14uiVa9<7eKKf1 z_mcflT@pFil~cmUD53-n%47&_HqYj$i098(zXPE-rTGr#vp;`t+p3bOqs~vb z13172*?jzU5=8*S*n#}+?E_9}=@1Vv@;c6|iG;->{BlI8iBn!2A;lImS5xV*iC#m9 zLwttQR=l6|_%bpZya$e%%6I}~wr~raO%SWRcP@y7>ewss{84-{UOB!@Anjg7$3l|tKX_JG)xLE0BnCZlMfmV1kH_}Nw48LI(hb&aqiq02yUEji z7%FhI*~VKt31|InrThNu3w|rKNMW*fH~uY#4QoN(PTFG?g~Wgu+A{!ye~Vqp!N?MU zrN!MW6~F!Q#e-^1l@bGt6%{ZvpZw5px3YWr)no!KOlUr+s%+T!s9{Fe0xV#^mpmTt zH*?FU^v|dVJO@YQf_2#MuyLIAF|PXff5{iT=dBj6^X`xZ4^2S0N#H03@iS~HNkOy^ zol62Y(!tp3B03s}rP_jHXWop`XIti>gOCG1*fSoo++CY@)7od6G!23aM&0=;Hw4Ib zjhmVf81dp(KyP0@@G0_@H&ZU)JQri@$c4{Eps1ikzxt){)J?Y@?KSB4x@u zp-}M9K<_TuKq8P*&!)R#I9C}9B3O1_iEV_ojBEpzX%mlX?Bw0L?{@_fFx3i>8qNb15JOHRNe0oH?^=>gUvOoN)Km(&)&t||7&5|9X-f|Qk zV_=IDEERh`h8;f!KOcY0XNnc z_sK{H7g_f`COQ~)pg!JaJL)=+Yfkmkb*uW_SlJAVw@N~2frrX4W^EEpipW*gXX`?& zN z+7&1W&~NsB?%qfT2qvvTJF%=ZhuaF)?T1DA!ldA;eMKXyTDEvPgAo338-l|uurof! zYC9GPgWRp$JK)A4A9c+(KYgr5M-UaUj$B6PU3*3mF>_vBdX(kw;%Vl!+afQaZ^Flp zaITn2NLcB5<|~R~RkPG)nJOk?|fM9UYSe9$#?t zLw`NOCxepJbMdNveWL3rfgCAcSqk0%C(IDv&w0u)Vy)7+kycy}nMfn!Joty@-6di; zhq(l*({0ply{aAB4O(U!rha$Bt+#^<0;_#^^>wno@})dXl|@7$on${grGs?inE&05 zZR73Ik-~6=ujEv6{N7CyW}6}At47^K@HAdn@AvK(B^C?rw@=6i3!QPFb;$VBtH%%a z@?EzQw1LTa9%#6l3f=}$pX|}|0qEIo)>VFvbev65{0?r>x2%FO{=~2j2Su_^Bc;&q znT9ICxPJDTSc%&Q{xcN!vy<_{^_64&oZ=iTl^|t1QtGw4S8Nz);vBk-srX6!jC+j3 zGuQT257C_&J|ipA9J=?ojWx6`5g5&9i^I%QMdNABYqeKR{G^-nf_KAU)GAJ{&4RW* zFGL&mOn!(>`?31tGS3)fVT5KLgn_O8N32#10anK6?y%q%QmA(iCJsg;XQ2+)5>4ED z_z|sqlG~tne`%VK{PXx@LR-j=TP2#SP3^lvYxTz6AiR$MmpkJSH$avd1U;*q_014? zrhtMIh_{^{_rt4iwB4F=o$hs>BD=D!oU=eMFVlio(iibX!HLWBQ{ZttuXRIBx2x4v zvEFnmqs})I&*hf&yN;w0ExTL&?8$?o2vfCqO)KTDKiX7unCTpyPVk*I73^2h;l3~1 zy+~In7H+@&B5>Kd%8k9Lz6_{5X6GUJ<+qv!4q~~b9q0N9m^Ty;=cutATSd)#C#8XP z(}naL1Bc3h*Xdnz<^U}&7;8mEVMSs<=2-bP#6}7!lvgYu($gZsYss)0Y2EWO0EJK7 zr^d}e#MxqDw#P6fIoFX!rPP4GYdinpSP;5nkkT+>0=X4(M;#UGZmaExZ`Q+_{r$5J z_&D$vu&XcTRX1$%x7mLL(t7a;hMu!}t6%*8ma zp3y&t*T`WM5DhrN--%^gCUnvg?4wQ^e8kP%z_j7S>IpBI47_0I!seC+8Gs+IV?m80 z(|r94=TgC-#0Q>-l@OTqb`-%nec%N_)&6TRqD>ap&jT!;qrUzyMueur!inu$CoPF6 zup5iu-p*^*lZGo5&`8al zw6sfa(YMOYQwImUaBqhmOx<3F1%KTrAzSAl1YXCs0b%p%`_G5x25#(TI;;Hg_Sy36 zw`K-?O_K1OvDPV_3OhP(O@YX5cso_Kj+~Kbu1<=*R4pDl{8Wwe#*7dLF1N7&_)6m` zm0G?2TIz03M1US$Do~uy)3%= zU2sd+5XXgdP+=PD;7Za3V?I;W!sJCf3$MbrS}RXmd?LWm(ON~AqnXN)ppwJq&D(Bl z$70$H&fjs9awI}k>o1lXqZ$DrSa1|Cy%@U=o|Fna2m7Q{#A7Z=jqDmEFM5lTd}>LD>}jiT9bKS`Y+@O zZ=9a$5iuZaRS!~5w3;4`&nB`5oSY|w{o*)2C=$ZEWr~o0f|@hBEono-c7!w>0t}wp z2oPBl6JEq1P@za7f_$JKPzqk0@>eXIN5kze2?pklRAF%X+P|i*uct8HgCX2u@&<1K zKf&kwVFg9~ZD`ft2<>es zq#&G@t(=o@#)H$3NFnM>o2bX4rD^RpSDe0lSUf|J=G9#Ca$s{A12;UnQGNIPbWbm6 z1`F+?3j)~DDB3${k?H6!;IgB5!gMKWD*-?B+pfu zj&fOS*HyFXR&<-1t$Z()Y6H4I9|>6+n@ceKHt|0gAdj9x=KW4*tMBurk0UR_0)q;@Q%+yB;))hM`KoeLUa{-qC?#@=EJE8$-}|In7umjNVJy;tg%tRvd* zc8d|0IAyScK%|h{l7Thdxponl`ow{?tc zb;g!u~EXPcXAbzQxlEO(t=8+mI(3@0vI zV;15M$8EM~M%NO*-MJKYYF1LvjZuP8-aJZ})!k_2Kks)g%NzKl#=cKU7dxax9P&u49Kh@wZA0b7;`Hcx%(zY-S3Rw_ zmVH*Hr2jmNRbIqulLZDAYr8a>VZT~=Um^L9|CL^Po6ONq{|%p8j{eajF}!yk=Iiq* z(#sx&gX2GqU#vDNVw1p>n;ZlFTxEY+y@aA=BBijvDHBOsupwXa)_lNY{9{bMX1{y; zaPWmthi~5g5T>wbdYMe&1k}z@py?wwpN1>UekbugfTLOD%UAD969%)`Mg^#TeuX=0 zgYxyHxXlus)77c$rvtEnW%b`nRy3P|$yYF?G`Sc~^!tw(DrX?E$zPlh{?PC=p334U1Ku z{x~PoY38S0n7v5?$XsI5h79g|0dXW9XzFKPv3>Dwh)FePLf+Y{FYBp&o8hmoU+Geu zAGmw{uj6heDbgq!E4R96O9&eoec}Wq18V!gOi;=IHe^7PuS}<6OjlSE7 zans5dL>+^+yTphwz}T=B$}0jr406N0prZ(UB!J7&!x(Q-NJ@`-Z7lvc2SIqlH`Mxv zTNmBv%>UcyvGGW?CnvZZv;O~C)L}9?cNgrY*wE8UC5Qjf*!35k`HHJCeELb7kZRW* zam*$eMW@=aEvt^&UE#trA+WQl=bnKsYr}yn4hbdLrpe`bdnT#b2uKGq?Ffp^;0R?r zf?p-Tvta{RYdu{U-u_{oDQE;QZrlC(NxQ|`_G{~~{laI>8_&OE^7MC>X(*(_Zdhle zd=AYGA;|1qV0FJwBNo43k1SFLZf^{5!%0FtSotef9kxg=i!IA*oXBchIj7McC}MMr zU83bMJkM5bEC#f+^)Y;3t{U3hS79=4BW6OUV9qGMz8Ukg;+su{U@-L2%n+K>c!LT{2a>ag=A!@RX-KQx&TjNcDv$Py<0IXLVz9r!1W9)vOIMe<|jv()kn zpzIz1i#TV-XGQ(I%f0e@6;zA0Z4{`aPt0#KumFYTeZUEBIv5;YlE?!yDZ|YzWtFSIV4rxb~_;QmX8L zWsznQO1mI4Ju4&wZY<%tA$v?E5uq@*Kcj@??Fx2vh%|9^NKkXVIQ3w0EmA&PC;>(v zk7~l2z8*cuM8LAf{5>hF7_|-`G?Y&d(%YZG`7ra8BG1EL=M+Gx@8z3X8iAx^thk;#Tv`^b<%5&Jvf2H9v+=WRve3T>GwrSDSgZ%fRbv!OWB4 zP1PA8mD?Dxm8!!~Zu_Kt$lwUihRnB`z;Q}CXZ>z>I0uHtgA3fCXtmVtW^jX6I_0_9 zqJ;-#j7ghMzTfMo&}P@+JBL^6+@?UIQ%*a}RXbnoZdXB-V?y5-EAnU%{*Wq=r^2mD z+kM*kAjM4&$RA+2cUkV3BPL`1G39yF1F_N^xNco@iC&7CVEnORvol@gRHtteqNvx` z%h3nCpQHG0rsEMa=sr9TEWH!-CH)LOue+J`O%whODG;+Scqpqr-WUo+C0f>{oif|k z{|riB^0fYJ7ze)yUF{ps4vpBwDJEaiPJ_x|!r)x&Nfu9;wFp-4D-CV9>Ywmb?B4kAy#Nf^}ic!jV{W3YyFIxQK<;N1yX{9EGxtO20E%!Yo-f zk%Ys8nFHXRM|cJTi~jz{8=}F3f!90@5{~nx{nI!%%c16}sf~3*yJAX4(dclB7tdec zM!6=@1=JZMb_02?2HEH{MFI3vX5~XHEHA$xCgdeq>&={*VyDe0^gIU>KvN)rB{qz; z8()-eq?#x<4!{xLU~G#E@?c;x=?be)k9w#^kWTl`h*aEBdY1N@4pBTE)S}abAZ9T9 z&FCG|+%bAKDvhp4&0WI$^2u*nzR~I#>)v3rQgF)q2wYyWnBABus7j0jk#xk2B*&vr|I)o^{O?lU zXH&(srYs~xvTtO0{kNk4jq{%`6yF9+a@p9(Wj_dxWZGn*=9S7qEed?3{EvZXgO_AUi9_>FZbR z)nQv6AZQzD%PIaoGJ*t)4`ab8HXj|!CkjO_e3Fn!?&0RvHUbOq0s0{vy*CN>Rx`>43=C`#qLANhN-Ym->dq=V3BIqq{-;FQ@-X=ML}AL&IH(MGcoX8h^AwY= z%E$=xZFgt8Zl-ig z0qL+r|ukQwer6i$OVwv z2@A8!fhoD|Z*cem(!i(j>*@sW<|l$`Sk4P2)4lBnk3U8=8%_A^Ue6i+bC}+)u*}bzB@vpRjb~h`#Vj`>%b#76?pf<=HKk)!a|JOKPmn zVe2tAZ-OiEPZZ4Md3OhM@C{{n9Wb*ap0>fHV`tnL<1lYtP01h^-h^kr=v)Jp8sdEj z356T!a^M3WD&oVbt4=lE^IDo+&Q20r(9;@y=KJ8@BdEpZI0D}E_8+Hj$CS-QgI_RI zZC4ay^++QRlHsF|`mSD@*D{qk1$+hPq7Qr5Z}Erhj{mLSmQRnfvwznQm(etAZ28qj z6Hd+Um;~VXr=#D+sfTLX;~&6JieftZcZVi79qqDY*5aV8gg_}AyL|GTfY~*hUPbsE zt|}oE%pY!tYMqD@S-_MzzP44c0FQ)7dA2ouGUU!qRzgHvHUtOL@u!fm7zGklnd@@>OxptlW}cP}BWt1RHY>aM;Qo zeKh< z4^6CQcoplrPNrkb>;Q)ox_2{g1GRcKN@Pmb`_vW(-R=j94^l*OFFD~D6>;cV-hrXT z*JC-g_(3S-0RjFHBMuJfe=lYc!591B*0pL}wzz&ddN6Gp`}Y&xFls)BWQ)@ zLat7;;v5aLe&a*3r)=NwVoD{LP>C?z&bM&shoml|nJ9}|^A;GT0e{QE;3*xBZNH~x ztOo5kIi}_}7Zwwg*S5B0PFxRaLF?>!rpGmv#Ou0I-c}s@*_USz;+x~2GdydXkkVEo zD_b7`@DiamNN|A4hg#A4F}O%d+B?%3-X{Q2x;v% zB>*B>GT3X5o#e8!ks6RDVv;FRpH>uSG5N=)#s&||vp2y=GzBIv=$n%KE}pUA=k@9M z$*$lVSpDm<~cjUh?W)NmGea)iMgWko?A3YnV)$)`t(jUA=)$UMsIz7sSKRdWobCq}d{N;YzUSyJXcbF(& zr=m6OAM5uDm?oJa(+*h0g7f864!8UVDCIJ;z!2n=Ne7PQ-M#r@WXpzaV}-XqGsbt1 z1I_1Pr(cX3eTB5d^@gTOEWwsZou{LPXiDnVy5;##Vi8v~g?34j90qLbblt<*X}6A~96A4bYsl-#c*o zt^3EEYArIeO_b?~*%NPy&O}q;Q%9)Wv_EvQ;hC4bezKJ7X;xRJ#*C#3w#M!m0mmkq zCM_fhGD9W`n*>-Ez5$zVUwvsvXk<{Kkawi4yLD2MPSkX7!M2e?eS+N_QQLIquF?~? zDs_~UMf{>A1qzM<9X)aq>~)%*a7%JP05BWY_E8F$<>KY_`@$COac`;+G0g?E{m`F= z0FFl^!Iwq}9>>ndp}FQ~PIZGn9lKVJW-ja(^Jb_(JR zEt>zyiWT?O1rKd}dsnc0H4M&>+r<9^FVjhDIQ<|l;<8q`Fqbx;-`{i?`!;mamB>QXPr8meM+#83#L zj7UTqgGr9;;fY&j2E^$eCNa~dbF{E}3%XHHvSEX1xz3(GtHmd8*y8==g>d@h4!khL zg`aMBhg>TKH~c+htbag95_s<1q~XrVB}kTKo}3g1z%83ZsTT7fkNAilTO|MVZp?a>8zxK zFmfFKLKB{a&6}3Q;_b4Qj-tQqADaIAmUOErFDW!d0p`l>G{V#{_~x!PN6iq+);`5L z#Wc6vkL-6T8I&N^bzPA4mA_iiZa$#gXfjr6?GINOBq0KM)d>PV@oPs$mV8yj$h;F!sH|c>A zbpnOB)VtzMz*9769klKlu>OFeA;o7?`C=abAX~oelr2hYHQ3BK zGqfsjS7B;R_%{VU{^!n;jSN*I3^%xAr!e7iBB7@D$=q}zrVlzt!_?5G z>?KR;w-LJq1ObJzpK&OFDsyBEZIT1M>{-iY&)iDDUcTBRlUMZ7IO?vgCl6@3?BMC? zz%W||=+3z?=zC17ts>ui_i)TtBsMrD2F<+>)+7k7>=-lFufMHIj!a?TqT9VzVhk_+ znA4GYF#IK_#cd3<5f>369IF`KcTX#oURrS|DsS62O9_qEFTNSEf$)$R!L_m!e-iJ) zrq+Am!c3Z85b`mH{&7$a7@uyRR3x1GuZ3sqeL6lp3rc_Ts{ZE_PjqG}_SyGf=rp}e zMcAjfRg}Ia2m>mOQ5e`>$7Lw5K+~WTk1i7%rg*EZQ|aAndj#=AGBK!7DgPG9W}LW4 zv{-RM0{%Gw%^MOcI93J^0TbUC1%J*BKVt|+IS1QDnxo_Y3|g|Xaetdrcf2-dHuPmv z!XXD?#0AP^@ea%2+TNyFc4ku11-{9+26i@ZY4@#XGfwE7s<1FKFe69;_lhxfzo}c3 z2jLmw2&^~)Thc&tfrrfkatdM*(n$B(qk@)9j2%1*9fMho!K0ySz8{Cd2qE9fy9KC<$vmnYUwBo%P}cj<1ZxY&da1YUaWIo5m3O!%eEkS1sdMp7S@_YwN$TaUyk+ zeAN~F0CI?er{$35niSH56?Fq+sqqi3DKL=R7p~!5zqraGg@_w!3GTuDb&|Kmk)%!H z7(lAcQ!k#uz2cbk40hgukid+1>4>|GU*QDk8-+{ek)6i5P(90-PM3aBITJKZk$hId ze~+=*Z#9Rk%h;%*5Y?-&M@7+jjjk_q3=L<%io>>CtK%9)PG-rQHmfXY9yBgoxx{-^ z926Q2HT3pdb7eUs2ha$kTHZiev{1hL`;oyUl`xsf`!kWK#;7A{s_(Zsr}R&(~t5`{P&;UR}ZW)E&dd~1ne#UUB<43kBOhi|~fd{hjOl+hKvHq=sfnz%a4d~E`` zkVtJIj-MGtuJqh`!l;~+}0+ft|_sg_*2yPf1fJQ$HcL-y484d&D+xW1rbPZo*)Fp_RAY>o)3w1bB9xs4?(UXjY|1BIkSC?(~bH9fc8g zk}vylrFdxGD*`Y45S=T>&IR{D~~EXC&4%{ zYR^}1zcLi?GTxM?YXRCS+xeT{j;rj2_9fC&O3!1si+RK7c{GZPb&crDD5K{2ys^w` zA;G3G;lO!LLlnul$x;Iu=+sffa|_$*b-vyKpf_Rc|ps5&T)e5=~r|z<6Cp ziYG_PtHl9XCTrB~grsc@&;+@}KI7dVKKBrK2JD=Z9 zi-TQ8@+@fwi%s&Z?vyxT>TC;wlcIPGIAVQYo}GjY((H1Ez+a!nWdJ0DhT}F)GVVM% zgl|kE7zeB*L1~5<3ATy*$gfE=gT###jTW{9oX*;otd1tT!gMuRZ(^pE(PMh_cUbtJ zk}vHod?L~O8ayb(_j9xP+~ zmY0uk{`LPwKN9ACWL2RlAV_%dZqyQ#R@>RDX)Mp;K1DtuRap(0%(yiLIMff#SyczQ z$yIwyHmtZbTW7wDF*5)yXopU9P1=@Ti^uNYGZjvsLTheq0F#jI#P;2j^QT`1=m+o< zh&X0vsh9EBDf~8vr+?F4AVZdd()K)FW5eQos4!k^G-$~T4FxtW4P-BG#OJTL8xJkH z>nI{D?Sw>1mg4_(dAL!Jk)bJIdbhm(fHPlGH4bdmTS=hGh3nVXbHj#lJ`*Rcn;yJ< z7lYM~?@u)CG}GuOghN`@X@PvW$s&y@7AhPcW@-kz=JB;&9lB@`pZDOt4*ml-A^l&2 z@5MQ#hjjH@;EN8v4!_FP9ubXPX!9dStQ-G|?yYWzA}ybVd3!S7lj{c6EHUs}xPHC6 zTP>y=1Y2gQ!RrQ)r9d|PV&4oG7dK*}rRrKxG<1=X5%_Nru8 zYw};D5zO-A=9oOWpVOhOGwHPkbseKJ-5q5ryALZDb>W?}DNRgQkxaM6*G1jECEqQ} z^I*ajY@OX3)P+fNec{#73@aq0Fh2e)1rqBg4-yulCrXXr+|C*Pj1oUx^B4bp9)K_Q z0_*FqZ__B&U3#YXdTT3#9S#M*^Ws{?!#O8ehJZIe%8PsvuAxTGp%>lXr)unFxu>?S@9rCl#-h^ z*Uq1=!r>C+VNuVbh7(6D{uPUa#fR|9Onc9^m+t6_UK4e zwG65C;#oeQ%#9OADE4BsGq^5J6y=E&kE@4&PZ-{UH#+R-8Oy-*$FhIgY~}>J?+$}G zMOVOd1s$-ed3S?Xw&OT-nI{rNj9;59eY^J(cxezWDnxD?Oo&KX~BE7Q_>VtKNK!nBgV; z5;$E;gSnP?0>Sk~qT!BfZEu&OnQr21hhjmB`2r}t+Y`^0DublA!U)$QR^vJAwm7^& zw?xFxd&Y6SZ#hY=DOh@U^p)-~FTBwLQ;EXcR=#fqcB1BkqyO{x;E(?v8@)c(;eIUn zm~YlH)udImld2ThVyJO`+RsN@z{xEZlr`<-zU|?^ku^z)sSko72Knkrg3CMFL?CfB z_nPLybu09@}0&`zp1w z678T2HO=B=%L@>y01TGIgjRg<{Cp5ArBt%+%k+Dcp2Qp;{@K>pl;jiMVp{q(#aW^r zPm(u8%^wCZoV7z^sGQ=5x8>S#RhqoF?cr&WaiVcW2)N-!YFQOAg`MUiTc)CxJBc@q zJ;$=|hC1;HO**9_eXurrQHT8(4E*wV$L-*c|KV8o?X6#rdS*Ck`TWV$TlTFgx|1wt z_pU?GoMqD5Kw&(;mG|9q%_)eXCkfCe)2-vMvLVbXp2(&r0odtKmzi)Zj)7|Gq3qy% z%)4&GsIEl^1E7FDgf^TFre-)42txtz?A(p+vY?1Z#zXt0Ll?-FsN>x|d#HKn{JcNI zgmw<#i}gE2n7R#AI(V5fr&;197MOWBsxF1PXHOm`i5qY1C_itd73cj*2i#>z40 z5*yVN{|~X}gFpVu@pVB9E`B}bHu`W)I$rvigCpKvrr6A&V0QSS+#jawDf8HA(i>oL zq?8JX{SSsE`!I-V0u2>4XF1qYg|tg40bO1)<=eY$1*9IDG{c2_xoXY2B9A3V8D%A2 ze8rPvzHV%tq`0p91iC{K{Nvb52=b^CYpLYYrqmcSOKI`v8Td5X4v`MuO*$LeU97At z8&97;99@7RB6g;SKeyGk5*d4JfAzR+wn_)CEDD9{KzLueV~4HVb+!BUH^t84X1zBm z1dz@bg605c$?zNdye9KPD7oO|?HYFsJzEN;!v0%4HKwl1Ms^P%3E2nbX<{hn=h>F? z^QM;g#$l0C9KLxulIr)PvldN#2oAUIx`}`}*@NIn`-xt99r89C=%laS0w6QP3%k~~ z%?pzwF}x0>scPo813P;c6g?cGRy1@1KhN6aH1NA|sj?D5DajMdUnsXc4wFaP_s37i zfAh!VKhk*q$K&Hae#CEM`+tNB|KsWLS={>VaX4|24YoZxuZH-5pFSc*9`Q>YBVx1d znm-eLnV7nVao;2?->t=8mAo-+7;VM;!wSbTQFG9tT*OFD!7dJ(+y&h^l;wb1KuaLY zb+Gl&0;t&d=)O#zAa3cZ{qc_A*1peeuX-_uEbNA0lBZuLFM`7x8wf?zd)=7JrM2sI z%Kxo;ehIBMUa)A9wgwr+BfP}|*I_p3;HSAv=IfeuNIdO&&R77cfVQs@2aDD37OK-$ z;&15dlgtgNcGIE3*8VqR!6<$kzGJF_H_xT&Mw4WQ;5tsO68_vzu$ zUkFHZycz#@X=}ashj{Of3ts`!GXI_U7aU@r8igCL@yWfazTrYA+oEq3!4@zb zJgKvuqkA_35$yWA40u8TFXUc-_pf8%qg11X^U8Z`r7rQ?`%bF=hp#tVlEg}q>;heh zB@+o$byZWydEy@;0pz|%;A{8|eC5-O2p>2?%8(S!($!rk6p$JF<~z?(z1JhFDMAU~ zVvlgQYm1tiS~!v$Cksh$wm+Ph`Y6uVHM(6_=DH+NMG0wUOcFO)AsuY5{}>V|b>PTZ zS#j933CoQsai>58J!ox3r7tWOqn=Gn>q*v{w2CaR0-JBUMiok5k44uo?nt=1E9KQI z2rrcSf43$aZfklG=U95iMd3XvJ}IPo(GWj4wA+|X?Iso<66C>K6|e7Ro?1kf3*US~ zQ?-orWB(ZwCZj%Fy#G>{&E*h#J_N=)#QKMo>(jOM)%%m!c{)6$NcN`(=hmSMwV3~i z!jPQ=&>O^Hd^r|Be7Nm<-xXQsSa7@OzjiWLA++f5+_TYlpNH$g$KF2?65YiKzMK1? zB%MaHC9sSSxAcUC6#o1Y$y zBX~yB8!Ah(aT|SZQJ3Yi)6@T!_W4k#yh#snl??n0bdRMQ>Bq2O7hBh(f8IW&@QIC? zTQhO#jgq=l&Os`H5h&4Yy}A7%%wvHP8yOUfo=Z~#X1ffZ zvmDtvNe)^rmQV00UcWkx)6#JX?=tjX4NH4C&ih!KZKXMyt>+?O47vAhDSz(26T#5n z5m(1hgb|$!m+o%&M7zSJ#<$yn)cDemr1h>-|6pofvXi$T#`tgF ze=!VQ`!@0Mx_$pwexeD_Mf3P%@m8uHGTpuknHf7#N>fXwIF6tXhqK%ilB*nEhM_pj zpf3D(g~d1fMeA;w&NMioQR7Y;&y%%^zbDGZ#DQIO{bW1hSZy_|0bJOp`I11)m{|#^ zQtTZ0z+++bW~az-)15;Lz);TZIj^(%`@s+iE4wv*UVl$XH-?|oO>_CpgCdTCFR*zl z8IL|eX(5z~ieBrIHFw-H=6LZ5_(F!FoTakyNL=Fb+uD)DC{_-mowklDX~}VF>MEtF zBJyk8y_pSgCi#p*;gb@;Ba?Ur56x-391r$x8SGZ3E;A4;R}{hPvI4Dn9%x@;-YWkM z;DskFD|($ILkwp$b-)$zC%Sgl&Az6e11?6&!nHkRdFpNyE23uJ+VWE<;u?k?HaUuL{CUKMi|@8A7`IqIb~PwyF1(qJ`gn&^kW)23<1W3t0f z^Zk6tFW14F&Me>SsO?zZoe}XxHhmuclT3KCj`yq zH?zM};MDh63r`DPleQZvhs~#Ki5*LQCcD95JG|O^Q$`)PEy8pGiYxt$G`jGH^rlt-7B_My(ODc6(0lfP{X? z;lW+6$2KxeyLijGKAV3D-EjWJ?Xy4Rf9=2Al+7i2Xg+w(bJ&ZF-{tJxji6|&Fm08z z7?dH6Y1>jZs4vDAH%`)?Hp$qcld5~?1AUdSaTchXs93qmu@W>NfZSE9RGqk4 zFYA%W-%a7QE1mge-RH1=$mF_M%+WHnwX500m}AuwU%&ql%Z6#?0nns1a4Ol{W7>Fn z4W4u07tpNN-FpB8XZ-pFBN_*Xf8jT9&vi8SP2%_D_*pp@)9>HH21=kA4?!_Vj`B?K zWnr0(nZZcDm0;7=eR};U0;Q$YcIb!6RAbDwvIfrd^&n&)urTBeE=bnT_SM5?n@Q_m zvR@%P=C&Myov*YnH8(ml=~lpQj5l|eSLYV&r$|}dbgu8?7>o-xquX@#lYmI@MtrNi zBhwfZ&oXhU{yVE4LqwsIL>=oat6d}Wd1dCa%*=)n={?uAsN?snk!06obp9UE1qEII z4i(Lis;=zPCuK25au`H)HCMrl5`}^5!|S=?S7O-pC+n&6pSVBLW1!y8!;~%Fco;6I zU8SN(-#`6?b*?~`4I$bR+IxyupI@&QQTFX^5AEGJ1qM zd|mwlS07AKg3?4au<JpQ+SQ7<_Ln*ZPUxl#}-7Gl%M^R%k@OXccB?SI3<4N@9%7d`mE zGh6fi7+F70x+&Wl)RA@c@db-OSv`>h<8qkJ%(|DsyUjWq8U>=qSf~LD%fiG+UQ>wcn%gEDfYv2`Oae zocc{4YV}BdCSBLo9Z2G08)>1(=h-&6_8BM0zJk{|#m*2Y$m0)0X&JQOY@lykZHk^1 zgEW10R3AX{MCl5B9R`lTb-cPp!b5$#J~GKd(sg(EF5dl*@$Dnm$X%U%eLf!$Ou4k{ z88>}Z58p&a-+j$d__oRWtW0D6+v(&t&Em0poVw=ku`nw-AcZ=FJOCNSISkZw5@h(5 zndNS}BUU-MSB+2b2{_1NHpzcrdc~_pw|PQ_9*YLzzWq2XX`{#Ip>~@Wk>TO>biaWAzX7&oX`-jHO{NB!`~{k=An6=A36>{SqO>0AHMet|Z&V{-x5ItoyNjE^rd{03=( zVv_L5G1ed}dV4dOul7!S81&}-^6>L~Fn0Y-PeVWOo}lm`-aek6FEB0`6LR~0{mG9r z9#{!nyJ@PY(6BQYjtN!!7H>%Dqv#&_PYUuJe#cBKaW3{i=6-owH9ao>Zp-2QCXXhP zGx6~_j16&4M@pax*<2PurjIxeiks=r9Mz*;VwFurJ~e7FjR{wRHolRXW2Zum%ROjQOFnmNUyyn!=u>I$H%x zx4FOPL2-XMGF!s{t6HmcNt>!uscr~}qmg&p!3t|z*OjYoZ~EhP*%JX7k9mNxvW_6Y z3a@sxbo&-+et{Tlu%h>wSB=1P3N%`C9|@iS)mV0axfDJn6XP0ls%khDy_A?!X`FpiK|}&hMgXOGyk&vPRjCaJst1FE+oQ5vrzKL+b?$H-v zAGlT?N;+*?0sViR01x-QJaQDzZY_IC$cj1#>jV-T2>Bzbcw9luD=K0&Jw9)iblU^1 zB-P~Ec*;?;;a?w09v+8JrC(vx1n+U7TH(xJY?b(C31F#pF}t)CSdmiGh4Q{iVMBQe zoHcU6!wJzpxq#?28Ig701;}Nf?9FIanGbO!8X3|JI!#cJCsr|G{IB|!=HrnW(;I7o zrvR8H_dAlI=KPeWgA2qyDl$GVmOLd9#RH^?2M5$>8E%;hS3YTM zcIG+Mmo&bzR?w%p>Sd%yKtSn~U+qV=F?13nf^}62tPaMSb>>wu|Lu!!Qvh=l(BnB} zg8UN)_T^5F8HS1z00LqqH`x6*6AxkLXeJJr8!U|~;p$FZkJ=#X;%()wKV1P) zCCnay9U_=WbbOE1n-8IC6Cunc;C*+kq4W3MMaGE;GajY2!UR~m%!uFa7?Lu{GB=K~ zFJ(zio}~04ZQfd5_iwaYmo#U|fBXE)zyUlDn+jbD-(O9VQea^x?8++hS=H#b5Ulf* zugHXaEu4-)NQD4x1{>YuId5%2z=n2w{?|Hx-@I7@Dc83}ZnWlWUt%$%&l)(!Y~;^!4TuC^k4jd5Ke8H(yJtZI*OLE%PnkgZK47Sy#?DFi z5AXRN-{$8`k9zSV2?Bh;?@xs=^CS*KP7R#9~D z(VZE~x%RavP>1iyh>&o^4~C@^h~zrH(MnnSnUct>Dx0Y;ti91dz2kq{loyl&1Q==Q3#L67dB27PS6K;8L@?r&c--yOC7_1pWkX{^Vj8F9LD10nv{cM9%nKI5 zP)p@tPfHVsnv=WP)(I5h%LfNVLrh0{QLCEGC3pfo75i2yiM!DOo7F^h?t~6Zx*yxO zW$W`j8f#2@^aqR|oD*&VqsF=LXJF6cylme8yLmjg&sj<0#bXalzO291-|63Q+Cuv{ zN8_G>B1c4RK?51L6h{QOw(JZYOr0kv5;cI%hG48oqqUU05534fvic+<7|LmKk@7AS zDVcz}CiP% zSvukqB7J9m)_X>Sae;XdVnH#+uz2L9TO_oGqd`ISZ+yKUguwl7v2H(q#c1u^0PcS}w{GN~j?qD5bfPi_yt_J{EkbM`ubn7s z!z>;of*vGN8F62dL%Bk)ThtlZDU>lMsO%E^axGNKL-1rYx%lM#I5+Q$#xiQw@EKXlWW3 z`F5C+ESo-k9NJ44>6AnRzAU^WKcF6`mGcn*#DMKFZf7f3GY70 z$>`ZI^8%~#3wdjVAZr^xJl_opmQUty`jtPMs>T?>-&!&%1BIEUm(; zQDV+-xkS%=GlOWV0t(T2MCME^Wj8MY5n2>>tQhL(H(>0J2rk+oUx%aqz4 zk&84WL=e@0yd4YYOeRY7cZg&2{65j57jkhMQf^ZuGaq%fIhVDENtSg-SK^+c?a^hR zsBHui?M$qzgkT75emqS!HM9UPXI-&t}Y;`=5RMq@^s}z-r(@2XcAJig>$C z%xxjPc=fPIcjtt7nmZwP;tC1lgypo|V~@oN@KKo)_`X0%D&Z6GGhoVr7(9KgK%q;8 zYsTUdOy>`At=iE@H&QycLtI}iLn7`yxlhQS=KJ&!bn4S)v0u|9w44iBM5?9rPd0vedc7L&BoK)bSR#=!O?J19 zH!cRv(|sRVWOYBJ)+F;3RzyC=ataZ)S76&i$iYih6V)Lay39cyi7}#eLjVxz zF~7l6i?%B0%5;^)XxjuoevI80XSIyDRM;RCq3$dn)8EOJXu-wc?|vNe91}JAK(1DW z{u($mrqLAHu_40hx!PsmX0>u-Ue9%h3U1%1^Lff8*B%B@|ZO|Wf; z2ZN`eer<`sK(n%R27%K1IRWTWq!!R!A!(M_ZiweKhUjVhx8)Q2l#omuNp{ya~!tJU#O990HWKpIs)+FxA*~5$!eAz?Ko*-N=4eE~Hx? zuKps6nIqza-8;V}eroa~sp5mm9=Lf)(Vy$?zmGULlK3%q>twM~yU6A|xjK)*D#`yQ5W%_s2t7J{6)8on@lueoodCxF;{K85d@G@vgfq38` zoK1Ulbbap9#Yehtp-dBRxdCCq2`SQKiBPoB7)5tTIo|k-~f3X&5KfzwU{mikScsL{+)Gj$s z!*sSr?~?5(r!XYANPI?b;R^6@f#FY35$nK55)4==B=>^r2YYPAC)Jy`W$TQL?6ogO ziXm(>CKI@!%}dTwYx#DMeBYqL^zzr#((1XTB9UVuPAkHN{tsb|I(bk0Zx z7rHa0%cR%T(85U-TCfs7O=Zr32!dqA&eX8z(FOq!6gZRi>_~gYC`>zRV-|TA(x}^% zI>vY}5cB56y`arkcnM?>siI^?+n!u;B<9TdmQ7ln&44x9S3}7%m2KwgCzGKIO&;@K z$}5WThY3w6$dr`f|81;bnei?OXjg3`zf1ZcRy4=K%V^Wfl6>G)Mf87d0u-2t*<4!( ze|H{q@a8n$(@AUK@ZEL5qLp@DOV2G|;E%{@(d-wA4t{DgzMYRQ`3e!D9J0fJQ~j+I zs`|hIXcccjup+(}^EV%ARm1t?v02fWqUjQq;s$B4uxUDdHfpAc7qtcuY}2nCf6`-1 zZggpl=G<5v)Vk+F@yqs|Sz<8DWTYCHoUzU3$%uHy%d074v*yiN@UH#khKE~@OM4HdN?wu~@!&RfvIoU)Od-+~%y7|? z#B$`m-;)a;-lax9FY?P@GDssFjDa6{M#R4M(m%!wIT?seG5c9b!0Jaee6%5Lcr}5F z_yaCSIRNYC>o;t)6s<6pWL7EfW*^;aoK~lq ztB?=Q<2VB>bpz=dzDCr;!sY>QH4T@kef#WwVu=Ma`P7Ugj>a2NPI2Iw^a{+XEjI`1 zz6sCIS&}MLjhQ1BY;8;0F*8;RQAn6h*^TH{cBy){<}TaW6KqYn?Cv?F$*q*LYF8-9 z?Goot9$MU_^I(y4(@_JuamZ4nLH7($Df)iR4oRr0k|sIbLHLeS8c9Ccxf=liKqY%} zDuoY~MNdf{dQ_+~lD6K7J?t_)410J%D9L`1lo;02iuE)fj(m9FrMH=$8qZyt%M~{%>LSP_CsrJ#MZaLpCk;gNJ9}@xqJ;>*sI`e_%Rfd|(=F$vg8XBxi?l+5 z3vZjO5Wdbyk=tisQ51UeR&FRGgdqqmqqG=3yOScWI;ctrN{U}{G|Fy$#cKqV5h$tT zN?cpdg93uvp&)CaE#hk1T5_^ohp6VEFHY%6PUY@7NA&9V4Ca{vnzQdR5tKk)L zMkKI0ltb=06n&am8HC-`8}8~JYPwdlw_KS~aw8Ezbid`rk%PHO@m=30p^xJGGz2D5 zLc2-=PWEXf>qJdNL*N=xk0`uB#oF6i!+fNSzIDP&)L)%<)a)Sh;l3wiYCSQkYajZl zuyAw)vACb})7f=9C$i z*V`OTN13nqANC={2x+Qiip6ms<<;ihS3EN1w8(<@`Zt~&d;1L@nelj&$gHernZn!+ zbk)pOUf<$1DX&F{JlB5>IM}TCfDOKGr?!OT?R4<;+n}vh?B+Sn660_!S7hZe8uqc} z2y_Hle(N=cwt4!G^~X46U9uNsl+9_B)a+FqEO$UWen66yEQ?qn-Fr2TNLEnC%6~u~ z$R3^IZZxldI1i6wqpY~u)^f~ab~;()6{J>Wpxq~nt4}S)>CuH(Tg3|p@4Z&Ii@&mL zKFSRyP0Q^#a%$Q2EqKmbEnIRUK4Q^)7RLXlWt~Wc0OLH^z@|UUk_`dJ!QM zSOT_Bz3uuT!hGWVYhE;8KMKMSysrkaZww_;h}?2A#;LG7D+0OUTqI1Wnt$_7?fQXc z@~9qm18)hKv<+!Qt+aO`rUTQ#(c{NkRjkKp@^moo-&Ct&EFJ=sT2c=w$HFClFCQn=jd}fxcZ?!w_#6Av9snCJ zMd8kaMu5u^6zIqKmK)>j(4ZlAwHs=;A$us2OK}1?1261AX4)sl}z>S=1>J3#%NW-1ooKS2Px5w1x2hPP%d0;L-(_~${vUa~UrvKw( z=jO{ln(7o=8q}Ffp2Iy3^>lOl?~E14IS5Q2hva?o=svkqrZvA4fu(GjEeFrS*y~au zAy2>}^ZDj*UEymV{g}9hJdA~gZ*~{eOV|2QJ%qx`h-xgqg?48e8WN;`F({J892FYV zJiF1pId7tx;-U-0t-9^_ILcs&G20G11{#b202eGf?;m;un%wi~MjyVP&KWjchhN8k9)rKY*`E$8 z_p^&wdWcQ8dAGP4Q+kCl{D0cRuXoY2gFRLa;@Fl9 z1L3_}t zy7Uq=rc`Iyt8=*(rf(~(RqUQLG)@BxoV{LS>V}RFBi}KL zqMY}82@H0p&2aomKkofLNs{^J7nqw>ttgA^IGhOpoB_U}$&j@)$Kc`}NnTt&gP`#N zVoiN?lhKd3{Ukzn6M)77PXb#x$bCwPxp;le0cg$U>+o}2{@AkBRdaXER}&Y(XZHF zGl*aT_tX_?OIhsbCfU8?S>;{g-+$YWXExC5>VCnBrRbR3YZ4{|){pCVXBZ9@Z&cl4 z#Km`<$kBigF|}enhwp#J@UDjOeLVa_GL_gjH{RDk$7Fur#n97A$QLx_!IE1Emq4+4 z|4n~Sf5sv6%0i}JH+5+eqvf`He1Y?B)k0%or0<^P+dA^A(PF2u$n(-EKA$D_(wnG^ zXKuIWxFc|TT^SGino=Zu1*A!UJWQZZ#M@rk$0YG?G_ZjRLQdldWKb^M5_>KitwpRl zJdOBIDQ9WV7EmE^7ml}K3=2DNK}RidwP@uZ>~^^hsC{GJz1D$a$nMGFB4L8Yf%Mas zxL4nQ8I%-r9x{kmkG@Ib!cAzXk3>mt$G+0XV<=7Z$5~`CANtn@m8bk|HukjX5&-S0 z5px1n30I{`XX{C_GL-NGlwP-UVl(aM6#m;W;QEq8??Eac17qi$wl5#%F*ivJQ`*Yl zY6kxcUc0IwWl+etyX{QoS}t~Sm)u#WeaO5nuRndIVGQ-w@?0%Ww6G(905y=$AtW+Ps2hS&X#$H!bRxSEnIxthEe^a(X+9Eu)=X8r+zn#R+_ zQv;oZQ^yR>B%#}@@(Qw;6erTGWT2mMRGk%pKa9e@kY#PsMEtULCmmsOgg2NU0xg<`q_ zc$}_`P}^p8kff{cVQ5phd+dofMK}(Dw&O) zRq#KmKhcjYMV#rt6m9;C^JZGBj-Jiuc@XOzQ2^sjieB($P8WQ{+>HT$iP`6)dH*u+ zCqWrp3GJfQVxqQs`-OGlMPqWy$93t5 zx0nbSUPN5RL__I7UAxkpoEUWd&dm~P#Q1*+yfPYxgBO5uEFe_Dba%0H-V=a1*Ugt} z8#h0frLSJwvNBPOI5s}s?2(c0Y&jgvt#DYbd9mu(S!0uwM(V@H-G-yxZ(Yjz&*xbu zQPB}KRkGm;*G_SYeaCP#9X99aNR!j(Q1>*rP1p~Z_bo`hOFue+)ohRw^897)`+$D>=b(K$Y1ya~IaL=QGWE%+Kq) z5iuN&JW0DiWG%H>%BU4hT>fXSw?c+jcPF5h-xP*lMXJMz+3vXvwd}}-!t4A~4%)Qi zzN3CtCWJ+ete}y}NEjOb-mzJWIa?&~j9a-lGK3gv9D-)OAsII`hRcHo8S6S($w4~4 zY1XIcwP_&3;^pzVm6yb2-LW< zVKJcI4k!K<4=Ls+=B9uT(@y(*m)=i|`7|b}t^QZ67DMH_I|AT40`xojv;J4K&u&ny zS5&X?xz_I~*^Ei6fhHat{ybSSodif1svsW`g1^l|@iwNsw`8q3qa*fx89|&Y1M$H6 zUL@`E?AX{zogvHO8raEP4U)Y{+!p>ztHnh!2-#vv1Fz?ddgXfXNa^Ire1S1`gOl3R z=)<}-09TwXq9v*`RG#%2v_y%{C5*LON_H{#`RpgFRFf60QIKKR z?P+W?8FT5CT)d>A>CSYq>>Hj1OTy3F_BD-QnCfJB24h&^B_I#$zB#sl{~bl3xx+HA z33&n$F(Za-wKjo}=eI})|4hE*@K+!M5<9l<{*13JwiiVnJgzQJ|7(xtEU9qKRnyHF zIfk1)ONR&XxPt{IprOarR(X8H=Z_8#k0|htXw%1>Ph#Na(fClV!=Dd7EFkV@6mj!_ z2zkg_fuB77qUchYJiN;vP2PYJn?u-v>LnXsdF(ip?aFtT-2}mN!MQEJOV=zpm~H8O z3-B-aPwoJ<4(G5Akx7^w5#jr+B>_t>!JIp6h!C>u;Ywbj!z>26@iTgu4aD z$ZeW1aO)h%=^WyYQ=W}@;f>jWTu-^!V0mMCYq%JNtxBh-)P;#yiL!LNKO%mK0Y}y1$G&xSGeceb{15T zg&gC4zUoT^3q>%m#a^a9la446a2j}PcG($)OQ<$r+t9#T(stDSWfoi%;rtUPZDPE5 z9RDouWV+JKzHWc~Dn{-N8>@a85;~+I>+kPR@cMiFH7WAsW?g3MWy~AGqN#S_aK~O* zs>yGY&>NA%Sa~=0;EJ1pXxUeG+nX>e2C7gFQy>^MZ{B#AyS{$+;vbuA>~k}W{mMcx zC7}76eRtL`2FcT)&#EAzVyu^iQPTOR4qjIC#g}V4H$EC@z1p5xpe2}@&g2-OVF~Jj z+ga;nKMy7|c^Z3#*2;bVf;%N|u(H#;YJ!Jk4|W5!Z@ul^l}1hcwC-CsZVJL=$IyJDUGNG0yq zZ8^$-RLyW5VpY8OP)l2UA{84c^Q@^IB$GiY;~%SDn!H1Dvnu7-iws#4(4Rt?XU%;` ztHi^KQNMb5JXj_}&2fbXKeJd*sFi(ddd&!Oz$sBzJ(n-)oeJ=$Ok5$3tWt%IicRRv z+2Rv?T8mkfRx*%|Le_fF_el382}VB5~`)Hf8BCf;Lg!)@KRB$KN=Xk0b6GOaD<(d9I9 zgr+navS^w&Z0vY1=v(lm;xRhX#F-Qn^;>gYLL85 z7M{Qr?=Y*IjrY7;HxAOHiAb_0Uv>#1QA(qk%XEeJMOVA9q%PrV@9{q-u>6WtQ23>&uzOgSwC~s?(58^+moCQ=dkDo9(aW z13F7?CrE-TXMuz44UJpZE`-d3Vj6=!u0!Us@}q~>c&4;E z{6J9@uZ<1F41P{3PJR(xcYo?M`{UM^Rt$pYW-Jce5*a3I%KB2?)V&}j<}DhzS4ADH zryW~y*~KSvC^w@NU$v1n;^OO+H|~9)bPv@*6lx3=ACpH4SM9hOc|VfKNGFdNn&~H# zXnU;7mPF?caOg&O`BTVdYar)w<&raQlJO2{e2iUn0_Q9;qvv>%i`s6LLBsh%Deo;s z<&a3mq3hf~RtaC))OoBr`;dWA&g06_>$m{Xvv`fJ;OO_DB-oj#DL@5i&2d{qpUO;Y zDxEoFtM;)3*%HG(q@t8@uxCh?O(s~q8eU*Syju|rebzdyDo5%ZdoDR`R-2O596_Qa z!m4%Nr}06y%(8fG=bf5OIeeVKyz6ubsw= z$%&S2(ODw6sfOU4NeYIUs|kt--_7AYYt4Pq!q@JPklRt*pVbX;iE|^>+c2JK&|^~_IZB337Cd_` zUwAU*evj(CC5~X~CC|SclFh5RE%qw*tIsypiVP@4V@uJ20Pha~5W;$u8&`^`h~VhK z-~=mlY*ya>B9L~H6X1~nU7MtIRf+wPi^p`?9UZ!lHMh^6DpY8YKDn3)J@(kOYw00M zg%{{rWRvqt%23;kEPL2Q+_DPy-#xnQ@>w(TtI>@yLX?K?_|O)-L=l1v2xd*<_9+5W z6dD@#3Im^$b*Ptld__sN6qQ4wOd%Q>e>}1KdNS4Ibv?vuL|l>UBPS#SKksWm@YJBq zN+i6xi-6(C;J0X57v$rmZrTxwNRki?fa(lCY4V|gs17-ecq~-dzW=A#Q+(w#E$*eG zULXG7_*@J-##>`fa@~iuWgPCTF^^)*H-}&Hftd02p(*+=G36%Vx@z1xM$9x%9JFI| zB90KX0-spws<9+y0!QSp81U}hw{glr{7kfMA`Z8_tBikpE)}?CtAn zjQPBB*=t2BQ#{q-=(fZ!!+F3jUq>Z~^s#b5DKS~YLHmJ(+hrwLsrMX}N|6&Y5U-a` zzgeGo+0Y{g`dd9IweM2%HQ(UPI*+=N`^94yX!bH>H0--{?&p|fW0xI+8trj}#vJTf zrjP_Kp_YW(8mPqa)BGTlYgwyoa@%Uc&2W-r&jq!?Oo$7~ly=n{=P#DucM)O;B*v%- zxIb`6iHL$K*{ssk*q4iZz>XH8BX5XlSf%h5`gSV!xi0V{Rvf3|>i}|v=ke~Gmx{m% zE<#Xspz)XB2dyDXdGfWM>9m#{(vU&h_KU{N*rz!MZ#uyWJ_^XuO2oqS!+Y5a3|i}J zDd@dE+w|ca1OMzWPFaVnv(~`9H`m@CeiM71MooSB4>;dj|X_y*v}8NB>8D za{$OTbwp~cZoOx&jX#lgcZILN?XIboxS#S0-dc05@*nb^#pTbzOw^d1L4QZeJ{1fP8_xuXW zK#wum^~_dLiV3hyfG4L#ihKG?{IjYVV%v27f^viur9?p2N(pXz9iIA>Qc?|iymMHr zfZTz#H`UD;D;a1tBE1@?&!9p~U7~h3K}3Zqu%IB$5Nq@_(>@3$C}J&%B>a-Ps^u~})Wz6w%^O%w&SX*>9G zwapem#N-}JRUx3jeWHLh*5?SLX#|=&`6ov4FR|lIhKvJ>V8vz{dj(W-0l7&hF;;EQ zETTz7@@F0J%Cut`Xxw!nl9_#67ay$6@347oU;M=B1-XIZFvT7#=Z)XK+hFn=f2nD8 z*O64m1`4dT0LSvzn6WOrrfe=UEZQuD!6faOW^10X^MMB9w=w5XXLJ>>BM`a7s*46n zX1#g!`{8e_b#h@=oya=q4aEfIH_ZalPO^sWc04I>_L>n_%$pr&kP=tcZu`U~TQ_a)&aV)-&V2j&>?tbgRfAm`@lAGlc)g861ET3kR!6 z!j|IV6q0g6uJ>O2^d$v&o=tB`19_G5@#fW6#>-s4z@wOy*xEU@c!b3_R?{mNX|><$ zpEUZsaWfyE57ss=UKoLx zh=fdoZoN3c@6TiV!>qR)hV4ja+OyQ`8C3Sn`29D1s6UqvZhTN7phL}`!#}pHA_ps}DwznRAd>hf}c2#nG@e?{bQ`chYkxHQmhREI6vp zoD18(D}223AhhdwJ;rp7kRj`-Jqp`EUDBaeNypJSNzbk$I(s@4262{iU^gV`D{NO; zP@v?+$?=}{yKT~whId`&8TN?EL>ieTj(8kyLKzukrXK(agNh?BELv!B+3uxDct+9G zPjyaVEZwn-=@xJg#3H+1^&mv8dh)jypi^ zsBD3hMTRg%4Tnnb8>Hk-)qfk5J`v*yo3zgZ9n~I+&R!JGp&OGI-XE^syg`@m`~Ms} zhpU%lqxQZfL;nhM)yxlL+GZ^*$?OM4Fc3@mVnl{5mac(|nftZN!||D%fIr9Vix19m zO^uwhP^4xu0sV8AQl?_u*tVD6SV`yKn%u?HoO)Ba0g`9YgnQO-{-Uatm@m$nl+Y*8 zX&l39rJ1pQ;sSGkKH)t7SsboU+VXOAOh@Wk_Ta^jAzH$r$i?ZZ%l$r{7rfF33_Mt! zX5GRIVDqw$9NMue)nIIePDpV#TKS#)%9M<#HIp(V)}>G_9wYEOx;pJ#s*#!$=SQ-g zFLM|;57!2Q?e|}W@Jhn-!$=i9cq-2;o5$Ex1Sn%GAXXBnh z-?*6jbY0LGZIGk#8~@Od?09zB@s1?))ayxruBPp4{7?t2Qtc6$64@tmy-2)^r=idD zF0O~ZTvW6Ld3zGd(C3v4yLwl@j-qF=IPwlYGhKl#0Nlb(izNLd5~YIR6jf7(ViOWnN5_;}ETy06>uVq)@v7+p8W zp46lPBm?l9vG{5@h{{>Sn(UiUq|;~`blzobwAC>;>e;Gg!{fsgONJ%ohc%dds0%kM zG2xn#EX|=iDk*lQ_jf|mX$OJE8%&=aJVny0=pvc$_Q#4Tkyv#WvvQCYw7VzOKYjf8 z1S8+UBJB7vuD%RjS-cJ+v+11Z_K_&J9B8>nBSJPj6N!hIwNH`7z5wHp>%Z-jDNiWq z?R?j?=R9c-Sx&rCP_hmnx6OxW0-1m4+@+m(5 z`dAX|AdHtKu|#U+kSw2Z$(rpKd%teAYL#l%uGQZRD_@Gk#DuZ(?a}8vqP*yc zo|64)+EDSt%j?t6gGX1^%azDBV<5c5b!L^+_Q}^tF_LUQ0XkoSD`IwBwP_kVo#445 zsd0JcCIs0wszP2nLN|}UHH&E;<8Asv-R-U9BS9x*$i>rt zz^M0vc4jpeClY;KjZh|wLS7G&)Y~7b>WZYyWt{hKca%aW|AKT850|fgZzkVMl6ri& zjiIxVV+N$@fXQWwSYAg*#nb zHxj4jhGQ(fxrWvkjXF||eQvEgmzo7(FvhLPYOv6`hPj*A2vI_U!LV0Hf2y4i%O7_- zcGv+&hiiTkiBS(g4ndP855i|hhx+wGI0r}0?N_$KKf>#Nt^${T!M}ihlJ0ztO-rSO zn8Ts)o(L9pfbJc#L!G1a4*JQgBG0UeKmbn#`5 zLudhGz-l{q_M-+{+U{-Upnn;cZq6ee- z4I+@^FkC0Y$*N;dL{@IPRXN)Mljvu)puqd`hX;2!scAm5FfpPB5iUG~xUr=U8O zBQ`wIes*&LK`4{84 z*r<00lKJIG_8Sm*=UkmT&WCUUhb8IGaRY#jkEj%>fvqTxCD>T1V~Xlrr-4DL$FdD4 zGgw2y!JA*5@aZ85ruX(H4H}`Il`_C41l$Pwqyj+Ur)x5`xd^g*BI2Rbb@IS)3f?oV z7RN7fkr1I>FE!)s(Y@IAElEz!1z#nI`HA5ZUyi=YQSrkozP)uaAO7r+B3TTd%i;cK zA@RcdA2|jb5)Q4nDd#{?wddCl&e@@Z!+%i@-hWD*mYSdcP;^UNpA$mJhyYCvh5^!p zp>~08CB*AFYna%L z4GGn!G7(}IExyze(ac8xXp!kQg^94QRoF4NPab*#>alqw9%B-|!mG3Ruka60KCvN~ z&zfH9dI;Bbu2ZsZll-#~&=0;dO_J~%d3RObZ8;S(ExyE*G{5G;<^dhm<(Oe6-zmFc z8-4eSPg1upg|Z6uVCmXAiM^+uF(8>=?K0268SLI|nyA*`PR#1haW6NflxIAz2IOS` zP1{aB`)-V~^^|d!Xwl)zf?5b*G!1a_E7`hyT^*ueCf%pgI?txcwUVI_RBO_~YDNXi z4-iek3InlYi>Xj+kHhJk?dZ6vjrpqG(U;Tdo5!yPKJVGcnJ`3P>oMmes@~5$A$}V; z{vonkITn0g?=N0zfRQ!k5!0ss|5lA`lO`G1s7@kikJ)SGUKwyABTv<%-1t5w48}=KHI$7^Iah!!XorolEc1i>Pyj zRG`^s7QvMV9sO-DHiUxP!3`S%y6b1ih~jfiOx!KL?P|501By_=PdJOfGRm_2CIiv| zI5K=NA2NKQ9zdOBM>_s%*MCIpwDLnt3%N`RNWZl*+jS^#F4-`wT<8>F(7?APWr(7SNMg+z{a*Oe&Za3l0kdK zC)NF>d4l6uI2C0W5UHo%cc*Mc7?S1A9QRFl?47(=#`DMb3wT=EUeDeX6~Zl&TEtU-O+uWcQ0!W#q0p2>Rk@Llt$4M)pwJ2=woH|z3|kdXwOU#f@7AL?7?tBp`zj;lq0!*5frVnq)d<;JbP z!9)ob4vCRNbt0gfgaMri8Ke>6l#^jeHTWAlv;d+B&+!m@?yRj8O0(Ar0n8pj5sDHN zOn6s#Ix2^FJwU#^apQo;Do%2hF*9fB(h3m&IT;6H=vzH~_N#i090v0eE75dVG1me5 zSSNs5-u(Ej^n>x{9Sj6&g-8Im_}vYLjpc#|VXsQmxbPU{({$*3u0bFR0&7j3;4#>^ zYCOQFcUJ*vsdf?>lo31c|6oLOitda!Ag9QLu$qkO{FZif-sPDud2*O$E-MnU(lB?^ z93&PL1uyu zlmdWIf#rA7Ei1w`DT@K#q9%HnX?y`4LqNkoe7x>l<6Q4)G+6PvZa=|6=w}g%aFU`~ zG-&XnBIdX-NxeTvFmF62e)H`0`b%syNT9!+<9lf^`v(#$h8D)>`GZN6L~Sp}zu5w4 zX#I+B863s9+&Wv*hSjr5zsnwhGt56&Xu9NY!?Z4;($_^S=p+?$aSAKv-KdnE#OcaA zNA(7SLCo{^PKvJme0}1~i*GWqXS*m9q%h26BQmT>UcJe!OtWskAu13NhA^FX^FVCq z1?)x_OA;kTGvKEhFRIdcwH0v91~plfD}}HV6}k=w{PTcW|BOO?l@_n9HKET<_{b@j z)t`3=*(#{zbNgxYz^|oYz_~CUv~0+!q3_0r(}K>CwKq*1s&%7#}b(KHoR3U3_t>^v=ZQzepd?Gda}GqhpcU7R+XK8}(7?S5~9 znUi^Zg2m?XbsJgLva5`Ri*v-3mep>&>c)i1*GYsRd7?Yk#pH5-ZmgIeEeQ}PLFP>v zn6X|nr%*wRtDKEBwKAb9r`EC|P3`T|ulZB=?Xg>e1u6mqA8T*?g43}iPfFz=J>mp( z!S1>$Fsz#!jWM9p6b>TK%VN<+;&df(QPdGs$UPKeBC2E8yf|@Y(F@>JGj^1kxRjuX zHzWZ_p3EVkSZ+2w(G`;iqlZ-9MvjkI77|Et!rqX?r%L^0@Ga92KBP#3j~EaFsQT%3P6wFQ(bs-sE<7lXWS60V>QlVdB1fLH z$5mXZt9JMgIOWNra!fob0%c4F@Q-pFMARsylsfH(wZC#c3?9js{*ubsN}}yY&3~6G z{8!_*QCtds~wdcJsx>=pJP4;gg{gM$$Qi7+3gbu1tW zA2Kl_ilCKV2{Cy|wsKGnQ-RJkM_|}3Nsc6W?f(n=#iLVfh&T`3eruylw!|rD(N56F zTxk#|h!UeeR^l7M!j!2ROcv-ef}V&PC00oL-#+=a9kSUu-V@;HaeE{T7jWQEs2qIG zyMLFZK}1Rw7bJDw37LW+Wk&GD$CqCRI0|?qdZdGC4FOR$V5=pB&%Z*ZL0ETF*cvCL z(~^U`cyoXDe#-D7y71DT^;KTKedv+k(!PRu)inyIX4~cxrL{McqP`G#{kT^q=ya7w zB`Ve?DO}*4VTZ?9ep&=aa^i5}pMi$@ksbl?S7Qcm#)+9c*>Fn)+MZARSSXEf8g zO(=RQ$Ala*!qxw?1!)B*h(un56&?MW*iphlRY%ft%!qU5U$c4uQGFM@qH5* z*62~{sH)h}8B1pZZ&?!3b%gbnFS>5#`HQRP4{~yHjK=vfkVwABoReD<^xO7vOC7bv zJTOqKx$S1@K(@!aIl(~CLi)_b<~dEAs54k~G@6BCxp8p(Dm{v?=(siQay(J3F&1+A z6Hwdc9A#7h@{w@`4B+uc{+38JY=S?j+OeI;tGza>rDYW1pFcz49#7$-t+f+bNFjqd z$gZd;GJ6M0u(PQwKDV`-JnHTJ;7E}aiu6@3~%Wyw7yI>!M#s)x=fV~Nx1JfCSOqA?*% z#jzcKmFs>|B$*n@%-cpU6)Fiw#2%ieXw9Mr|c|FuIHr40id6_SkjC&^;2!#>v1Kn+ns4 zwu41Vo0^xLFX zO|ML`96YBt(V)pcGq$uX_)ndSkb4o8rek=gTT&~Cw=chK6JkV?#F9L%KDE7eK!E4l z9Lv-SHwr@uOei93CmY=|qJ*fe@RWteZthH2k$$P1L;giK z973L;*L5b=`H=*qlRX_Txs?@%jf&;iu7lnrDPnn5-Wnm8FtAI}e|`7dwFs<4AZY%T zz#xFJ2@orgr_nP8E%cquAdHf3Q7LM1!NVOgWK!9mOwX0FR0EB`PQi&f+k{GbW@FIZWI%mrKZ%^IAow-;19 zOCRqRG?tLZ94P;OrV$!6JH=i{l2Km@j23PbaGs5LoIwWLu)o~oH4!?PRF=HF;iNFX zsyEy7E_v5Uc4LAWfb}HNo~U4Cu=p0NEJM{qDf;l*i1h3wMSZD0`wo$C4pRou5HnHO9 zLyl|@faQW$|G18CmZc3xsfR!0TZ@O;v9ofxjnALNJWwY5zfONkUuQ`D9V>ug*bM>R zoYd-C3twa1yIA=KOUJHd4P27swn&ha9d#*#0MeA!2spiCeSa$K$~V-)EkyN}=sd=@ zNrkZQt6|@YLsrrnzi&@M^UhG&S&|ivJ9<(-rZLTS5B)uF>aJ!x4&6Du{*J2P0$(rv znuI7+)b8T^or*jP`XMr$B#IDnmEOlJ4AhQbF$ne!ReT?cuAfeYa8sc3&MVuA%S^(> z^M`3pt4reBHl)0^B#?ATIsKBcGKqOZVR%E05Js4sC7xlXo5r)NKVik=wDa9mCMhSQ zJJc9yC0bV|OvupLLG3(i5)Adk`v@|T122>DYDaA6UScKiF)@(*dE0qir;_buUY!L2`u?Q0c^p zjS9$Bq}K5rC5boIU~L1Ld^)Fa@FtO2+|`W8m+0$#R>UiKg165`0Mnvf+HzaD*?H|> zhOXhz&elmwXTwdD#a&D1tK#XpMs+ool6Bz{0heJ~@NwDe39>RGKPe9jj;kBSkakAx5I> z9H3+_5sG1fwWdzT$TzH8dmA=X=;*h;u?vTrj z9Ah?_-9{V};SuFL=tJ3(TEpwS+d>#t6KBJ|uA>Ybm$R{RXO1wqZ%rveF1CqpI?J;T z%M?oum}LGw4u`ZRDH!Y`$JIk{;_5kJ2!TO{2wtUfsQ4xnSVG9%*yc5d#G(P}D{tbo zi%)^2vR`GvrhvGUI;Lv>l-cp*$!{6o$$@zqK=!gj$yu&AK9v$;&NB@+>C6Qp<_yL22rpXD=?OPL^ z#r>n$)01EbS+yRq5N?=Qi8NV`X!%aN`7=BT83!`bOp>g0QT>?n1FVc{=)x$QW=0!KgNg#|~?Lk|bP?Uv7T zPIUThGZ>TFh~p5n{(qk!=09Msp(4xcPwL~jeu4@q;Br<}sONe5_D|MVUPfk=^hnN3 z*&9hx?Jt-rIrN~+iZ76_(5u%U@cXmAvoyA5a36PbV=IP%oth*CL)m0nzYAGSD6-r` zg`iAwCO6tQ7A%Z~XHYHK`+vAhoChp5?jD^g?n7i6*%2&0j)Z3cYBv=F6FUN?wh|T{ z(f@wVGOGm6caM4h-RL2(Hl5m-8re}bni>3l8ysf?9-?*Nk>&J$Gk{W#v~QbdH~9~9 z@}qDU#7Lm*YIG+teqdCdBE<1B_~cVo5^(t2SB~xnk>hEWO78|Wosc|%45*##H}CkG z;rBy0gL{VAw=5O|6g<-XpV@;o@B_7D^g`?1Q*85KIUpo#{$8@|igapY|Dq>P@rp4P zFVgO7`7Dt_5%ly@w6l|_<8ELLz2a|0aq@#3sk~%{?5CygHGG` z0C0OYc-!MCx3RWK5YX`PL|fPc2ifW176R7C5D4Jl8xmU8&i*XP zg670HN9%&@yVZvDXzV`yc6S+3*rd%F3ehoEqWN(3!MFhWMUH?1fIJkUc@xW=9>8FjiB3%0R(|t zvYy@RuXRIQ2m!Chnb^^W9-=I=@AC@sdb*CPfq=Pm2l$Jsx<)fKvd;gWwu80UcS>1c z`|0f8oC(5!H78jFrbspt=`HgFT3xXLhT53?9^3z{OHM3&k( zGd=71Qm?bfV-aEwGd*RoDbW*t21Zl<4p{?-;B;&@S%$mEL@KV>gui=dq?jniig?v%S7jb{Fr>(bS?qb*YD3g;L`VkjX=qTVi^zhEeB z7ma>^p)H65j~Zr)0O4K;5BXA<^%x2a&Px_f?cT5`JLyg*wy^VV4nGd{1~VvHsEw-&0+={|f;JFn&oKyJ@`!p6itZzo}pnaMb@Sz#75hh98ryEjm9@oG-Z9kod_tUxKYYY|<6+ARFQ#f^qk2`VvL%Lcf z@aHK~DNHd_iQ55i96b=&WY#lg+BDszKOB)!LJ%%4-M{mR6zwU8%!9T8t~s+mQM{%K z8(|6&tB`p!Xn6tAddbxBlo7`-&rFYwIWe%t$`ebPLML%Nv1ztT7-B(bP@2wSiq@QV zb(HCNyia1YGk;+5J3_v^sp?H`O{v1>8x@{8T>2Xv3&N zi3A~mha+m9qV$oeifPJf_+u;+zdXPwXUqJLuiyR2;>5S%oO4GNx|i{^i<==PGZVoW zcqDj&-JAP~gfZt2@g5G95ki6QGfvh9Zn<%hh}!UiDplza!QzFcTZGb{lvBFbspM{n z>++^oPot)f8MRGoIVdwUVw%~%`uK^|=^Qm3IVVCamy-HauHq)dX8(kw2Xp)X!e zxJfySKvRSdAt7sW!_ZB{gj$>I=EkC{mwza9H5`C7&8$0T}3fzAziMoa~xT3tX#H>id zlZh+_2j|v&!-OGs%}LBrnrB#K9vq%?{h!K%&f%~prEm6XTAss_d`A4Gqn4fwnM0Ld zVQRA?qLaVFDU7M}S9Nq?VvuYb?*O&=l%c0HHU6JgpX)4^sKHBgYAQ~ZY4Rp*VWuI< zkpcQTXeMugI!BRO%OS@+d<}-C3M#^-OXG?P(l{TOb%JBy__#|Yl8c`}Z3D%|f$PJk z1i5&IQgfR(-e4Rp&o5$Y_Y-Z%(tS)AlAY*2`%n@9~ z?rZ-$I#|q?1geti7W&U6tt>5bpGsMpS>U$)sU$#-Fy4zZ3K*^(ZxI%V}M_ zkSc47SpNb~M`wRZ9P1E`k`mpNSro?nyOm7WqVOa#TnVQwB|djcH!Q{Jbc|Iar*)oU zX?aHgeJdQF0K9$sk8x>*V1{o~-%}#AEt{m<-f1ET)?!=HBuPqwk#89cARu7qrX|ZH z)L@b1Av)zECQUYMD~)tJPW`73M+ZMm=<)XG7MnJ^wuJS|c<6Veg4Mx0M(HV#_y4(w zqREhd%zl*+9=w0v0$BZCvg&oxDmcz|o=#G0i>!yTk^lcVsfXi6sVOz;F&m@zemHWF z<|2ru22sJM(|%2}Fk>;h)RuAOpXrEB;-?798IZ({*=rhV`YgQRrLG`Kh9e!Tf+>$L zPeF-AE1vI02E^B-fwh)gVqg+9T^;rKtBC>P$ji-C(CX$+3FtUzii7g=a!GcQwLWCj zUztnuru<=-vQ-P^pLF8Q+0EVa@Cj$g@%SQ&A1BdY9MQjAXmkjBy43g-GP8`ENnVcm z!mN1t$GyLf%jTv!aHeu4;p}xe$fM8nAus`hqB!_&G>zJF+DayjX(#~BWCI z`iGy6e)>=OIA8D!?sx#=e0y>7&~x|(yFW0Wb1pm^>mnjzfkX(cmmBkBjt^(cqqe8X zX}L|APdcyI!4!@uiuh(7-Em;gj1^zrVIzFJGYI^z7hQX4fheKOImcCsL<_}j6Ys7G zMByP%D3)z5qGfyCBnc6W-4P7C=F-AY3wQ9H7Lne0eK(8hV&1BGtlxe;^3C7@=HF9# zxuY6o5BxIR9$irE$(&;l&A10d;rh!2#bc=2_29r@s`_c&bg5&q0z|co6q1YJrM3G1 zjgPlV^lJ+c3Y`1(g6G4zALbx=m`*Tt`Tz7-$DcJxVr^j2_{4Kdex7N^XnMIVE@#0h zEgC``@l5RwK>&muaRtKxOiVS3hEliHNhP5h`!-&WqH!*|bGhrXTTc`hzT)Lmj*Pn& zjbW9mY+}Cgf|ow|DdE{*{SjA3Jw`AG0B`Sh5$sx0Bb)3b@r zi*RVRZD_eyE&pPW{g(`rh-g?iYpp|gZLz1oyaq8{SCZDQ!A&W^V|(NF^@j{p*~v$S z3CqMPTgZ>GLu;ep88-IRZ6&(|`~?h{8%OkobMc=ros{$PNwgWgXxWLA<~ZQyX3dz{ z71#fQQEHeN;ZF<<{&aNYJREe6q2Cv80JvUwGK(Ic!etEFp zwcFx!rMXK$sBd1T1h!9OG9hfuN4Vd5UiZK?&rKCAu-DQUrFt32T!^7_9$R7F{Fcs{ zyByei+g+GC5jiZf@+5CZgXd*1Yu1Hfvq7yFFB}}I?10OeZs&fUy+pxP_2i{ZCI7@n zSKAfK9pY4uQ3=|)SKBuvrLepU-03o=D>@Ckmp(m2uYlA7)aM;L|Ne)+1*bcG)TG4J z+NoLqKZI<%dCHOAE2}_tlU30)TGCx(%%wbxTtK8&x+wJoU{$B=*{a^d9U%h-d znz{A0a^K*3JlT6jXl26hY7+80lVz0z6Bw5` zpmve3x-^~_*UfmxG+pe!E$BzMm{%&U*P%Z1Y|O>VR5ZbmlEq9mA_Ze6Hcc0rEdicW zjvY{vkqZF64Q~vFmlc?fj*~Zo<(>a0of#3 zblcx1GfNE7mdh@x2}X$WW3X^@ zH%p1vtGPJ4Eg>=kb10c?&DW))q8!WD7=8*rdR_^F4iQxTwBvq5U56STbkE|?nVhyC z^S<&p!>1UBB%+UbgS=k4Gfg z>-VS1403#Pel_a=YY(bFtb&(VQygaC?cFXTyVYNjBME{2D}BxEFa1Qj9MKPM~E+ zj>AM6P~%2bgeO3Ix@QW%+-lu+*E3j0hJk7<#*LVL0X-FxPll%sBe$4dm%Q3vfrKbI zmpcSvNmlGB)_bgV4W2}LEE>5~Vy9ebF>aDDsRV>rBL8On zd9&wExbC4mQG1*0L4RJgIR(VAdU?^=Rt!D9LtB>yjdks%NC6J1kQ~c4894)VUSJml_-MM)?u*RZ+WSHrgu_3cC=LwcnnS9hyo(_o?^>HE z1W;0H|BKOA)O}{tG2YXR8;E#X8bcAp173b`(&629%drpGEeNj13agmETKw*RKno!`k@+_XjDxfKc}Fi+Qg7uy`bKhf zEXPFu9yia;1r;MAp{XW_Yx;O=>dpSu+KZy^~$KfdS2yAma)<>TwgXeVIGeC^< za?7dkWKdToIGF6Ok3XNk?TfYb`j-GZ6w>?pLu-oz%EJFCO+T()sgcppv;@_7a^ zUI3+l0Mcd0;oI4WJPfj#S%x#`@QMVJ72{Vo#Zxpcoot7XHgKHep4aNhMTX`9RvTg! zn&4(Co54py2D#l)L1VVG)1jsRRkTyQ!X4-kRKryLj#oGMM=Av zKst--KNpjH0w(Bm##wi1dI$mtUgP|yE-t6rDZ|X;na|0rodSZlX>bXlh;++E$iANy zHRm!>9zU zL(*BdOj&;8NGb0jI39}1giyOWKvf_yKD*(TcRR|87_isC?|y6H-YeBiTbae-t88Zz zUu?$G4Pkt9S`Px9Ju-cTG;%K2m}!LoH@I|GqG0Nid5IDlU{-{ZCpHri zSe{Pf>h=wmuC2Qw$o^#@M1rzRid9}4+s(VUD<@{WcFH&+1nZ&xn5>5vT)m_CeK;xV zr+O1+p%reoN7>jfB*F+%Q)-)Olk=g__C+$BXE^xLvT|4G5FA)D zI}2`V-^Wy+hn#C9IUFb&0~BJdnKm&!q!EFEhe3Od=h$H5TRWKHD08#OrZFYL`9xj` zUkzkacr9!N4WJx%goXc-wUbtF^znJM<&ZtNBVaR(Tc^Ih(~T+Z z1dkfUrI=pKZwnK}R;5*}SCe{J<4INKd((l>%69h?^=q!MTlD@xD_aB{{A8k^siQ;O zd9-8&(%U;SbrQrekLey2z@{|b6CaggobBI+P7<*?`h+WGhY&EMU zgDSCavl&GMcQ)@&->g3!t zg|g^g&Qq8x>+n_z>f9E|S*5}?soApVM>@JqRN{tne48f^Q(Y^C?B%5DGevDIXjS?1 zXnK`7W=4a~cNSi8hRtf)5?afnAHb~9PN#kwqKZ&Em%NFA?VPK_i`-#kIC&u)Y`>CP z@K9p#P4UC7P#Ho+A$b!@*)%G@>Lao1uqVwSpcQ}b!rEq47VMQj4XebO9JAFh5FPoIb|zhxx< z>!L$^$^fwo9_q+ynCF|po@xJ|pORDKu!VoI3!9A#4{fQM|KwsMyC(6WsL%62j^D28 zm&QJk&&#j@k_uTJ<*0}j%w&io!xQbWkzl<}=pPLU4GMkK{*o<|Ou?iic8Tp={An$) z2RVT_=20>GiF^?xMNyH?qE_2zF-wBXT0D>4IfQf*&X?^cIbSN((^P%>^o;6v&H>F` zCYKoce#H-~m^~;|0dU5ZQU>3lD!#N9w)MnZ-MoLa{QmwR29N^XKFVS9xVbEDU{7*w z&3+6LJL&E@Hvv7-2{A;tBqd>DOXjbdg7*XIRC)w($bK?!T@>e`K~8*>O!8coiLA&s ze4_p1)Tvh+sAZU21qj7CZ+eA06Q>i#xZ%azOJR$0)(PVKE)p3w3gZ_H#9i{WV=|$= z)Kgnku_6P7AWL?_{YKU!6ypvQ@7HO3YKqswHrQ+Mp0uOl?(Yu7_NRZR{~rYa4}F~X zxC1NA=LjfU&c+s)^x&t@j(++t{1!$unqyf@`)iF>T6`z{ih(W;|CB!$%dhqK2rw~7 zOc>mq$dMHIbPD~PWJsT}Z>Sm$l!B9nTWS|R25ICC%;lRm53qHO-do&M=B@{yOBBeS z>gLrqadE@Zy`%{Kyq*xJvdfg^-sRXJODxTAP)i5v+FlJ}n$z0x+{XB<= z%p99XW<*6$vp{~p1#)}`=U(G*!hc~2YxC5R`v~A)?k6RZ*E=vUvRhEkijj5ugN8or zAY%saBl~J;JN6!yqiA;FHWb>kNj}!;D`|c;chePZu-N40=&I&^(>qfgbX%fa? z`q78A_ZmF*{kdnMz^HL!f}f2W5D7RD{K}v1G?edISS@SqPk{Db~eV6EDygJK-plF#5oMEFaHg*_Y6$UnKebP{>3@o9hN_HBZVP0 zuY-cxhbfnrbsi%B%mVWYJ6_aL(*gZc_9;s5hz0V+;GZ7{_F3qMg5Z{;u+A|E_JikFk}PvY zj#F>&_06VIGK!EZ`NNg1TjJF50<+y(CU-^uFu2uUkEohRYC4@$C zE)T`=UJM^vGnvtRc6RA*IZw1DXzpIp{4TOQmhg!)>vMLmAL@ScrY{;tqr(+uL*ksh zMo`N&-kXqTMmyeKzy@x@Ac)}^XA{T{m(?T5!kn@zgksHL3;;+>Enq^v*>Az+L!~Ot zY12~%uFZu^Z?xmvcy^q9djPXQXcwSvpFpradN2=2PDKt8k3e}WpBXjv)1H!l;Hy0u zrclkh{+~}91AIx&ZxB)G4Obn`kf51r`H(ZuoCbYho~pYJ>>SrrU=Djjod!Nw|?=&3h@^qC7yPwzi`y?<=a1#7&tEFUO8(Gi34b zWspFG25_KW4_~Z(>TzoPRO1u)I^Yvw^U0f!n3Ha~sYWap=tFit(DJ>gI-e3r-g9>2>9`_pJJ zt7T7Hxj~iz#siV4&x(M~3Zb~Do#CEc^EbF`$>E3v76nK;Pn5_=V3p+a;e9nX>;p%_ zhi9!(^_(Y@l!+&n9lB|)*a|KRt)8p?$S#>zrfe6uv6p0ruP8Yrp zX~749N5OrV2C>O&v)D0^^^XsnJM{v)=eJOY6>_Se>*rPk-xDLGLzp#f9vNvIYFaZk9{4L+0o$LVf&?(o4@%C=Ytm?OZGOk|!rz>IBuS zP9!1fv$^33R%t-()`sR(%|b>8uRl@^%#J+`dVH7A2UBN^2S8vFF~+!wAaM`TucdgH)tt4Z_>0@U_B#A=)eTCM|1vNx7~F;DZHD{v?M>dkdZ1#vo^ zk)hx!uhX`vQUih5>4nF^rofWxSqi@lqmn7GHfLGg(lLSk90h_F39^nef2~h-zMqcM zGIJj{733J{iHTCOC3TH&N$R6#93qfYP~Qj|0U&whaz!v;y$ZqLf?9!|G4;YjvZS=h za=#fu1XRZ!0XIpjSZT7=(xGJoGz@;%YL0t5gVHg-)X1KUmGlWyr3Hs#$KG7$uO+^D zU6C!V0}~^O@AwA_ZXx-ZEIEt1;H5D8m4=%TLE zy<|eTQlrX!FL*)g<)pn$fwJ3F$BRIT8%LaQli43c3ay3EFg1q=WHd>==0_ho%(QBn zl!AdGm9vnL;WX3YsHwgo!((8IWXSM6EOejRJkYF%aj!KjSz^ zXyw2VD30S)?57t~y&yGedUU7x&2!%>+KwfARy-7Ph9;fjf*^s4WiX=|+yTT1_K6iB z9lYqbp$ItOn1Z! zSQAN=Zb>^0!oAw4)E9*|VU}u?s34PWYn>MkrWY~axc`kofA~6lUZ^rD7x!=~Ia17E zm_m}LBB@EAocT!0_+)B~O*`XASh$+HM3S=6A|$!upk?}{R$e7=oFaB5l3bn#3F)N?WGf-Ml>VwrN8aM^W zLPd;3UOs%+kt_Lh5K8Mkc*?92?6+SAHT_~tQ-x4u#^h;Oy}2xdV$xW;mRAZL8f7NA zvWXHLz|J`eTY|%whcz_ZzF?3@}hY zJ8fdScu-Ncuf8rS5om%kY%~)%1$p9Y{Wl#3w4v|@0gk=I+{k&~{>JO8B7vw;(&Y4v zKawwG*xy{5G{aJoM}bJyF+RSV`}=>Xdb8#@&t*#wq$JLg_TH!ag!|Tia7!d5aV7!q zclp8&-}u75Xonrq-O)Z%9}Of3Vn$70`FYlQzXBCC0t7Ks<(tFGl`CCZ!j%h;wR-+j zys)6D^)SV5>{(ZCG2v&mTKmXx>**i24xX^vo4TRNQLNv{(AvX(!@}djx1G!FkzDaP z&xjobawbwFm)P-(d1ql^qwSU*Zg;wy6nTmj6^y`OYKH8D;0P2!=t1ZKFqE2LzHw~F z^a#;gD&;v8DCm77=PhwG@ZPImcg{b&3G6=*2wCsC`H?Wv{T2uY04G6{CfPkemL{RV zaPXM`uuPxe?B_=UF-eVlWb%|wfs=$*sSG~>Y1%HZCK&SFt0Xaxar$8nEyMA*7;v?m zY0;;dG`AS0J|V?tQGokj(M68B*(u*pGq*bs)mF}0n#mLb13e{BQ4eqkg^TDht=@ZU^Y*DB< zLm)=;T2=QzL-WIm$K>h$yI%tt(Qm_G(?whF|Dy*Yr-H{k_ro3mT{%IZpD+PhkIZR( zaBu!keD-gu8qZ%K)mBFPel4m+k(?b+RZzklH3T1d!1=)H`B7^G z?|E6EP>omT^3AsvS)<>~qwEuIK~!O2k$^7fCS=E@-Gq4{Us|b)9`s*EfE)%2zJjR+ zf$Yv?ZIGa0@brl)dGqXkdPolDVJH^O-t?7Dk<^72cnK<*Iuu3@HhAO+pd|uEItCM~ zpEp%YNwtJ#_ELW&S4b$mp0}S^B_lvXYJ{#mC#AdEO^q5DoFEuQv+^}=eBesi5H_82 zF=H6U>oA$f_X!g}f(`9y}j@vfr(Y4Ox_Wh;4G-&A z->1K}L-bxoyKjEOz0! zX)#+)|9J4|6#ACOxkq2kumGP_^mGQW{DFp7u&It>y z)LQ&qjOna}hT`?YwDLt+{hNLP0bt@ZV&unEFC=erD^PPV0EhwGRGS!HM1MFphZqR} zNe3;3uSoUnr#0nYV%{i0H{%g#K=$?(PJbxf@X9)F$EU7#n8n;R_|QIR$6?57(cuF- z6#K9_Jk+`TK#EQG_-N1CvNa<3N;ZcIxvw1!s4e#qv!-QmBRXd0At*p0zdU$YGu2Ra{enmJ-eyUD^l1J9{=L@S2;l!nX&_$2x0(`G{O)q_{2sFL_|f|Z zfACwZ20c4DP{-7GO8V7w$fsv*BM1rmr&{n!!SjVs@?MBQipAEI)JmA)5*#j=T1eIG zy|*r)rHmJ$638BVdiLNH?W?(MeF*lIXs5|DmfFyctrsq(jT+L?gxR-|q+r+e$b}Se zJryc#F)2)x4Gu!_JC#aD#>M~vt=%|$O#VXvQ8~|_$@im6MhR@zfAwREUYz^%vF60vxmh2#EG9VRy4@9-|7pJ10@f-7^6t5J_3`RrW*IT+Em`mf~-fl zcl2*???FmsiUu%kBN-jvoAl=`@AlWp08VuBWXU?eGVQew#kVyZF?x40c&j_b)N!dX zy`n+&%cBOsq2JNivCQWG0}~~oAAqMe8;_o^^lPzhsQ#gt?q6f?R|kLLOL8J&==_I7 zipGRi1Qxy>ZJ)adgU8Bod6zQaWAc6*2SaZ;e_rq}SMF-^yZ|IU;sDl2nN_!iuzbUU zpSXGN3b9qv-s1S|^gmB)OVnj9((mK;oL*29djyOC zpV~WkhE;Ueg9U;c1gQ}#=ZO2%g~pYlcQ*;N^l0#~2)o)uJjpouxVzzcFnGv%I1(gh zY*r~3vXPpim5c}-sSqznjBKfKYG@%qEn>L97Q!H2aBMPMpzz30u$-C~b=#toHa6Dm zHm{yMOtI`8H`#xRNSP5yu6F(*y$*j@`UoB$nrb;dPUferz$isABSwnM2~p7rM)dHe zf^zqR0BVj2_wuY6UJ8g>NiMrJ#13^7x%RCQzdL$$H}4&9o-$F9J&J@*>D4w#GY?;q zwQi7J8(Bcx45Z4A63fUjh}dM1zqwoUVBw&28pz8#;MC65ST7hw+GW1wj9CxTzlI=T z@^Y)JQUih+k#_z~579IlZyb^}2k4fOfb*5(;s509^)vaDrLq5+$b1WR(WP z+cu5kE4a$(i$99P^V?XmG!q6;*z)@Y4nwt=Mq7(QNgy@YqmskZFxc`~nHz^sh$; zJ(#PoTbghpPb8mh(Ns$PJXQ5>fI)$~jBU~d)i1fiujL(|Af|YS-loLj(pA}-80cx0 z1-#@BBWD(XUA+lyS-zTqV}o#mC!{x74tiN-R8%@%4xZA`8l;Auvi0X|G>kP?)+l1D zH{RW6ErV|v5VZQa8GREJzK)%nVU^KMq2tNv_u(7l(nDexT64R#&-WRaQRNaZ2;G@5cF&w4Pt9Nv!b0UJ%HcP4Ym*wOJ$*?qA5;yz8w8EJ>* zmad!`7px7<=W?!UZOhrZmbmemhP9CYRg#-^#yRZ{*d^#*X-|y1ah1ke26=*`K|=z? zd~v7l6LOYwkuf$Iu6H~l1QK^E3OQ|13MY6-(~#}49_ti=WRqS=Yvptfz{w=*(#7pm z_g)44HXb&gjhpV(NeCFGI#SPM3KovnZe9eiS9V4FqUT z%tlTXA*$Mjvk6ky=ysOpwAD6cI3|7@sHq#n&qyHbts9Yjw@`r zvC!KW5N5Y~5?4&K5uN*b`=Wow`$Wmm0mSo+ubJEGuIwWTtR5vd@;&Cg7FyYo51iX` zu(Pb`e;q%l@psu3X;2L*MsJz{sDxeZz5Dli;SAYpgyu%y4Refv^GTC_o%Bs^(|qUF z!Tv|9Ys>E2{GSD1x59<5awPH(_3KTTEI_{Xd*56+^D?XmE5ajNq_Z?>s9aNM=TQJy}dswMjkH8$1q769XUpNl0dH#1BT*w{J*lz z_b@MQ>}P1*mJD0>7sk>0aLED55YMK4h!YXm!DEg7))-FUfY^n&n0Lyh)|Rl;qp^%! z^9d)yxL8$~KNT<%TVe^cXuvRE}$~qzA&A50#Q(lK^ z%M7&#g@lT~;a@lkrhcl@xi0%Mt;jC|!kYvG1Hx(C$SP$tZic!+fWocCTPMX01l+I0 zV@rX-KP52@PHx@MoJh=Y?2o&trxg-S0=y;Si4c(T=5UOm zf@M<<`2#`G|D{S*?1BQCgh=>F?dG)t6E-GjBsZ(4f>4YI_E1IjjT{bhI`K10(n;s0 za-f!`Y8Z@eNg7w=L}TByZ8)RG`tR&cIWb=F?Q>`4P&o@~`kWJpBK!_^3H{|3@Xx~~ z32<8iZk7rBlF~Ye6B(bvHjZ?7W)yBWSPC#m--GH%`y!wNIa5n)3$Zn$ zb=JfRTUd~ODc!g+pichkPQ{G%1EBbCfxJi*DjN3SU4~F?tdv6jlNNeUO z;-`0Ml%ZsOVDRyjjAD8w#sR9Pwyy7(1!N!7h7=)X9|4I0?R# z#|vJDo|EW+C9tCBZ}K!Mgw)pCoR{QJjy(usD5Ov^g`v`#ot7xUkTnfHnHla0fq(Di zb!NIMz z35f)BhT$B+^O!1fR|4*iYBi-v4Jei}$CPTz-!k{{^Z}orJ!sqW$xi%gc3qV{=k+k9Bs@JpYkEJ)cvS9Em z_{Ch8e6a^)bCBt1{yU#cLpz~{1TCN8-V0yGx7z0zBw~mraR_sh>+N$JEpGJUP&l&p z>pK?+@6I?O(&L_O?3{$;P-}%UdK5q!GCRIO8^EETW#`OOE|1rl6pEMq^Q&l%kULcs zV`{SNCQSQvtG1<6CU?jIM3GFPdrC|h!tTy=19G&~$ixL{8;HbFLa2%U2Y{;O@uyIw z@xabG%UlYkN>?H#>BQSv7KtW7A~jl27gz1ec;F<174quGzevgGwI%XcvFL;km+GLq zR|~U05@W4Ysnc#Zgbel@g=QW_GCL-x)wt8h-6Uk+@t%K;*zrJC4S=j*(bW0-eHG-o zFKyY`cNmRLo=ba#@AVS+A&Xk2XM7$Jc=PfDue#W3va&6Or)f6U0II5_-pq5NZ z+?^C#8`Xk{Ntu1`cPd^3MZq>qj!;odK4iNts{1KeKfFIs^$5JAJF`#kK?jQnR=*U4vnDfj zlEhS~Ld;GWDH^h@cNvVzYJzasJeZqr+elAc^5JiGj2wu3Vmdw2=^hd8`b^ zY3k;!bC#K-(efcq42tTU15xOv`<6SWJ;hJut1cucrMbWXxJie)W;7eMoNzmhqqj)d zWUg&+w)OWV!xn}59I}Reg;oh}4jrO2&ZK6dCu|J@m^HL&cNPnsYt`*rHc(EV?Hct| z4IG0L;-O$#j)B!xh+bFK!l?J><>blP+=crl{^sS$@cBWEdMb9=knhwNN{_&S1yPR% zTa!%S&DmT0A3o6>I${w86Js8>7Opq~W%>x5YEl{dB*oC$i~)=Nzs{yugEl|W+}RS~ zKg7uQ6iuRL#bxQO?+o;DKH*fsi1kyYbCz9HX}UxhE~5&ShF>5eCp z%jkdDw02rp)5?}0Li)r+o|WOma;^eIMA6MPs3Gs+w&r6W_+jxobJ2` zcqB#1GqC-;bDe=j^Bq|xYBJSYSqy0-N6%#(27yXf`wOnKME5el?paKI&UBjpGuTGn zZ~iY<3`>g~P}fhYL;uD4Nr$hQCx)u-)e-ZkD6=y+IMJ1>0o3Kx|7>}zgw?Xrrs~$J zYHE&S%7b6itL5sjio(5JY_;1ZX9+-02`l+9V9}^JYD_h$VxxzPk~V~^VB ztpl?8+gPXhj-ZkJj6X1D4SFtwKluMV4SWHgE`doCE&-_(^afwfcZG)p4C-&NFt@iv z=h|H_&2!Yb00G5|JL1npf1W4KByFLj+6frjMc* zcb5BN0%Wjbs&Be}`KW#!78 z+!8O;|DreCIV`*SS@C*Teb;o zI&&F&|G)A~BQEiDu$1`7JZ8Z+@LxjD*79X$BwP3MpW?N@)~*@VEZ^E+*>H0fK&RFD zH_g}?P%}(T;gpVaT_9Llv(Fgy6|YqX4NL@`^j;3EUq(@6zP0XcIFHe0Uy)D}Ph-~D z^8l&OFzAtw_6gj&@GHeDBu5Ng&V^)%BrMT#XwH6-?vU&oTBv7%aU$atMiJQNS=_ds z`ze$N$IMJHfa;&d2q82`t5%vwr!AHv$uts0pVQc4$G{J_R4R28SO3=?V%^nc;@F~ecaqlH&)@{8LsS}{q!i-;oE z?K|f9xtM8;Y=b8T4xKV}04HzHWWyw*2}g1cF-3XLS8pGTzuU;PP7w)d zd{*1ACLiKj?ZJxKZiYxb75vUY>ne28nzc8e#HNEUcmNEL!6vT4E#Y+Y;z2u6VhGH` zXyND2&PqH0Z%+ZH6jepn=sj7Nak2L#**+xbi<`dxY}FQ;7Z{yX0Wc62b}B3#@&H5b zIO@`KU?4aOJnULPQRf_aEg=@=BG?xS`yi75W+8N>NL?;63>hp@<+#fLh@{n@f7&f- z9+F?d5G8k#CUHii5z#h61>=0KdBb$&j9=xnZ=T;vHR+3T+Pu1hzZ!QGn=tVRMA-UM zD9!}Xm}xb?ef38S+rocz53j@8%scEBwum68j%(ql2@EB4c55~X#b``GaM>CUm^L2r z&afRBp9 z)4$t;4|9r<#HWd~=WNSJa zwW<$x?&NeV1O;;`cli^%eV86EAP`KrWK7mtKb%{ZPi2f1sv&RWEP@qMB9O>APOWOV z=dQpA_MMJ>QVQ~9%R+1?!&?9(nVcedwPB;0=Y%&Fym-Re<|;SOvyIk+4z-IAI@IXY z)@8dMx!uzhGBR@dBgEb}G7CmciWytB$|yL-ayLJJ z_+=haW=H{_e3b=UiAeV?iiHFV2PRy>KvpbU9`e;B0r@k#k}XeMdcnJ zVYR+BWYB^g_#6l`)i+1+n0GVpDbC3yE|=1dsg)$`n>=S+*FY`&r_Y<@9PixWJ50Fj z#p>Of!dBvKM|89|s!i&Y%iBNLKg~x>4<3AVcyMs|fAgV%Dxr^HPZO;(Vb8 zDHFdGRR=)z1*btebP_^MTy(@s+-{MMh%}I9jG4q`S~{1QvJ|kfKF(njwzigFi!Cc` zxE_gx%dWO~Hb)OxnnE@)L5T@DvZ+M%oIm4m8A%_B@aFNO8OqC}=DOMKD%y*Fo7NgF z!%eN#H884@#Dyb&g~49ThH4H|#ZZXCv~Dy48%RD_C@L+jSRnv}!^TL}I)JTfMK_`jKdwBMt7$Dbz&kqy&?#gfuazVltKE|-o| zI1zBAzsVj*wY~f$e}Y-QW}F)Y;2EuRz+^oSm=v!Q)#y?#kN+RMbOteBI!$@WGqyhQ z;yO|?T9jf-Y2&v^Gba^WdJj-r>Ytw@wSX9vh@C^Eh>-D)U#B~Bk@AS4Y*PuVrYnar z;+~ULxP+YTE1@#lKG{57DNi`M>+l%O0j4L%INw{3!|}2+Q;zQ_@TMrxE`Ipy3|)v= zv^hg-5~H>yX^LE;F($*?t?awsBYUorI0kezMRz1P= z;lI=iYp>q^m76f#=HO(Mde=Pen(hK1e4zOb++s1qa?K)i!p?HVc$ri&eLj09^|H1* zRXoSvK1tFAHeAI7`>{?(d5W3x5Rc0%(xn7(#%-~a7fVd3Y=Q{1H)IE~UWG!Y(%5;d z2!DC(b`YYMqmWe85rkbK<33N0kv5}LKHH2JLuFR|Zo~zX9OI+!#dNsCnvZ|FKZkX( zINE|?=C;^#qO~4&JEl2=EzUz)L}3%7{>o+}%tdY%eQuLml0<~CNM5`koj`ddQ{A=1%WunYW4y6o%=pVVqV$$Lux+nM$+ex10B@5ng%_hV zKB#SkHQWP39J*tNV)y=(X{=s7^j#QNoN`+Nr;a!Iww0l1wtQZ{)J-Z9vPeb-h#~f@ zPsXq@?T$L_c1cuf_Euy3w@o|dLd>vFCX3Ux@i#l*+gRn4A&Yodd4?v*X2qCv%o~E@ z;lbfYKBB*3_JIRG{BR%{#p&>5+&tK-nbKj&dGXA6ohwd?QJVawArJ)c*g%9MkM{`T z>p1}a`V2jFR?7gR{fkDbxU8aPcZ3Rg?8H-CWPAPQ_k_2m%_>%F+*aK+@|J+tqbE=n zdht31#aA|2o@ex+Y6$e#@z(H9(`e~5>}4ep>@3<@cl1vVVgYDSx{ELUHvL9b16M;w z^Yc>$Yq%EM=nfSVifL!+-7Ke8+RQ?it*f$F5O{18*|T813Mo>%t8Z zi>H4X8MF_%&|+!tr^^6HO>7D!M}d8nVs<5=l9TJvJz<`y)UqwBwLAgQ(4^ZAk!CEI zR3v1Bhe(gnftQnbaUA(ePJ!(g)u9UiuL6LO3nrw>M6^e!(7`$Uykg;OdAL! zwoaZM^QPMpi~kifAN`hPK@qc;HWeqk=YGq6SE=V3w?4g(rBI11>fenxVcyyhU5t#| z@KibRqIOQB__ur7O-~xvZt@cK7HyjY>JRc1PMnw3sU$7FfQPesD_pq~mq9s1J1$>5 zn$wXKjmNx~o8jNKG+OMjWRuFQeLuf}&I`w7_Yo!~)!HQYXqIIfqcVj7L8X#_@GbTOmL~!oUIDG>VEsei+@H zMiD0iubOVBc^K5$QW4}??g&Tp=g-)&z4GE5mc>rAPtV;P)+Q>u*@JLeCZ5i69ysn7 z$3;h1FP&EfCWW-m>+EZdJ~C+t4~AAsd2G3IzP>d+YxLdK`-~4*HeCmQ-Z6xv&=rQh zS>J45LLlKYzVMcaURy0t3u9M>J0$H{H7@KI3eTA>TRdupd_r^9h5Kl-@@w4pQSOm` zIy~4MQZ{1k+d~?NvHA}rF8vRFujJ(G8#amG)DrbJKjLI$E-4}H``jtm7Z+|01G>k6 z>bg0XuKT7kh76n*IfaHr27^`Ht_7*pN$l3dZIo>s+ZtS2f+hSM70%39bm-zDgY!&o z_#xQ~?;%L_aOE$^DIL92*1+w~mC47r1qcv38iebyCsbsQE;HtRiRsL|z@)s~0a>Fw zIa~PAQx(lNp^rzPk`9Zr7TEZclbJwHrXovfNnd62<6SvYvZJc^%4pqEA~~ILyES|( zagQ!bS?qR@LtV$B-3vr1InJ99h`(U-?`q?lc`cKDp=_SaOiyi=eg6DmkfCwlskV8x zO3l4|@xWZ$jD-vA$}Aw;t-hkQl@>ujso|tY-AJn(zf)*rLyBVRNs3xOEiCXM(oM-t z%ufv7g1xrHyW~oT7`x8c5Z1#e>OR>37N_27^AgMq2WvCXXR|m*$J{jX|BBHrnut(1 z@^tS|@4bkD(~UX2I5^IK74S37F{i2aS(twRE&ds}ag>cFOZ-yiAWT=MIn+}~Cc@v+ zwrD%x4w|dyZ9D0V!`_5#Iq*D>z71D8;@qql^%nCy#PqTY$sGlf(Q326UU=SyJZ>uC zEp1KnwIOzH4#H*K5gF6(E5-SegFy8l9f>GM!DtwMHse@lv$u|i z*)W#gts$QdZpSKdevz6j@Y;C@7m5grO^6_GM3XUL?eCWObHR-N=irV>G}l#3c8NpY z?mlO3ZA}R+wO^t=3-w*alJ&tR@S-QH*f_*&}y^+<=>Cq4oP&|P7H;3Rv z)stHD*oB>63+^TRkiBio<%ZvZMblZ$&O2UBU9pO*ywF#;kAdqkkd@x;ZmJU*rBq4N ziz7VJD%l1aGS9w?`KIU1TmDN17cwg>mE+TBc89+aRL?fu5_?ub-f%LhUQ!a;(OuqfS{A?2sUA>bLE|r{bXV{|_@s6k7H`JpRoV?WtbSnSXd#6`V+K0u zj`LvS8n<@gv@?wi{9&7lMb_q|)(twLN~`c?Eom+?GGlDqyhBXd{>mi@1|KJ#Hmx?L zuEp2B_wuiw`D!zj^?|||IWInz169<7BZYapzXxzpliuuqKeCRd{geR~1gH$huJ4FZ z<}YeP(Xvsbp4Ge9_k>=AV_FeP&;& zY51oxvU9iTilfdlwP~K~>0$F-7&~?GbQ=*R(Zz3(#sH+{mNk>Sb#NSDZO5wviM>`S z&fKKH!IC4us0#M+jn<(@XOurrA;4iknh=D$^vzGcRD!IxUGHSWVxpZ?Yktx!+p_Q+ z3-<=83BW{qCyz;z?V|~|i8nY2mOp=m{(d_6Xa2WjKb^TLxLAs(>o!M0ti~SB#u?B2 zrn#G2>Yi86?s8Vj)b=H(Hg)MF8~cb%xp$jLj@{ekMeJ09?`~hYfzsJ#uRj0CD?KWp ziaqbW`cyLghL)Nu7bZ9mB^^U?V$%rkt$E7z+&U-T&*S@7Da!&K&!a4=h}k@MJQCQ% zPUNLa3bPR>*u~(bma{i=Lxc)>&dmXSxgl~=NxU6SU^fZg-u)w#nOOWLio&Hi*+$>~ z{jLCt7u0VC1L#i z$Lgmh1aim4X@td#NBRwuzT7*;Jc#b$ir7YXihsriC#elqo3BVI$4)WdF>@GpF6T{L zw7#tBOS(9-iq=V7{Ma=c>_GqpeH6TVQgDp^&;Feq;4wI4yf8gy$jU^mVPfzHl0{Cx zNLP}kX!Tk$xHtB`J;ZkNvG(pc_{`^O|9<8p-}Ha>9PuM^=c7-@!~E!|g1z_T=TsB( zZ_95VN)+pN_;bX`({x3RfCFvCX?&APLTKdtrxo9}mY`DCRfCm#0Jx`$=f!O2lB2+j zUzFVBJ(}8pl~1gOcl@M3Ohsf&Pn%SlH6Y22WET>(4VxBI7EYh!a>Ow*D{@ zQXmmTc^GpK<>y~cI0QWiX7RXGmlv!>0^by|ga z0e>!MV?r|=*5Zf$xi-6kpy$Pi-V00I36hXYyl^cYXP!|5x&qDuMP$R{?E1s!F$ya$ zZ$ESUN@+coljmKO;hH?iQ5`)Un-|Du-@fS?NIg2LQImP0WycZ(E55;>#{ZLrU}Pbb zWG10yqht5E#yU9@y81CS=CSyv_;Rh^Y)AWEAAE!V=gKG=DbIxIC*|ieR;qw9IUFm& z82d)enr`!B3^vhcouZ~Orb5rcMYLM}hZ*inARuZPxRTxbU>NW;^v@e

zCXlG#RO zGC1;~G>)>Lf{&F@YN3G3DV6c`RQU3Yvz9EzJv#m_y&)BeL0g)R zCA&7cT&VLs*^4E4>T(~=^EzmG2V?fiF48`WS?l&!*z-WdqYoTk&$8v0$Voj)Pt!YJ zay^iXb*7o|))?*bS>=kjTBK$M^W-hN$Mks2>-)rKSir|5@6Bl>dgwpz&6VJ8-m=;I z43CWVpJ#r|#p{H1f9=!Q@@)P(`)d!xfs7T~ptnSG zBKk5;QFA9M)sf$vfW!2+G{>U0)qws{6-r$2e!K{2&?1H#P5xG)BLDujbCZ7QQ<8n_oAs{*%vj``+Tu zkNB<)5H){~lK@cIUHl4h@iG=WHlevw%;wkEm*)>D6sZ@tA=;+s^!8iNc&|QK(U{#V zISiGFSKQG)nyG!R0=9!!hzqw<(e{Pvjx&~y3sR>`pY9OJYUr!UFjW0{H1{MLjtlR7 z`=VC3Y@CfN9BZYe-7|f7FWia zrchq8g+eeBwVaIZIO`yhNUbJ(4tRFVzl=|ph%8G zoqsD?5gqGV8moMTxxe{-(;PD*=mdN&r2>b6(;{l`iTV`fR1+)@rBukz#0XD_?;hP|l-(^ivDp3l0L4`nf^5CF#$~ zapFQkLsclIze7LB>00qkVb}z$?{-0dWM(U>sJ^hgx=5YowbccAlPg-RO^KXsKC0gmm8-a& zl)T>z^?@)XR&x-5GLjK2$^Pw3eQo>*ZA8RVrpzi)W40D}Ci-239(m{ln+(Q(?wx9=V%7c2-$&lQ2+ zu4isY9j}tYcJ5~mvOl)!q<58baLfxYiHTlHe3B^>%Z{4!)2M3YEB|Tebw;j;N{)Uy z1uw!~Nsy-`{cfTZ0_^y%la3Bjm|wfDQd+mGrJ$UfA(5OIAbJ>VUO7qWqm{r0&uyNB z`j!WRdNph@pwC$>dqX@34CLkz$K3AcBoG{a;5dlzcV?5}O$EJN#VlJ`a24`7$D#cz znZ)+cEJ-NB1JF(?Dsgt#W=_9^UvN&4lPS~Upn`T6GZZw>OkdgzXa;ndI{#>O(XRyQmWlp#EZ|;^A&}>9 z2?1HEjNzMm?7jP~-Pa|~_mvIoA6YelJcq{Xr8yGb;5B4t)1sTDf_txI(&%6q1Q1<*i5D^)Cn18a zZd&VT{+;2os#|A6eFKCcjG>>D4ZpLN~QjVGsH z=uT7|kDnLS#NYFS7y}B8pb*N<2t@JwTQ-yikqe9C0~jv@tSMyqb^LRamQCz;8<(!lW7yk+|4{SS z_P_Avn}bLFOh2j9Zeh%4k#5n@|An6?#1lcH5mN{v^Thu7zUsUIbi5;@VJSll+vqe} zx65~=Z=7meJGnovi1%5&tn^SL-9#qnjjif9hQ7c`UIG~8BWeXp0B(Y3d#`_sk9U%5 zMbRrOq+T5W!;s8}%bAg|E=5v5=J4kQH{<;tBXZ{Xoyj@NVkjLW7H)6rb3D0QaaOH* zO|h#(=OD37EmQHxPE3$$){nnwAM0~c{LB*VQvJY~apR;o>=ge2O3hyeiZ2zRPYn#$ zPa;|kgy}d@MVW zP(^Epx7p^Hx+a`3ZdNQl>BhmjPz{c`K3s%e z^nQDAzqYQaZ}?&xR$!H$g6-kG8~~5Sba>yB&;#MgvCXBY|ASl}?gL)jrk1>47B=J0 z)`#7N~xZL^r9V2wuwSTM`S{I0SFCxY)nA?eby+w^$=UpvJs7t_R^a9hfJ$v<6 zgQ(Y#K~hRNZRA9`ASDhw7G5%>B6e|M=#O?tBP`dkx1iD!`txotC|yBHWGO7d zg_0v@^5G=UycR|+iLn>EuNhuJAA2~6z^O!CU$DXKtJFK3ddW9-uugI6k)I}&zs8qe zLLR$rD6l+kFHDa6WOE>uY<{9Z&vp2|>>Tme`MiTQN9Ga%jcYNU^yb7hd!7eN?jxq2 zA_tiXQx^K)ap}fEBV&|Qs=*HZ!x#N3>;5K!sDg3y5R;j|0e|o#GxXDBDH6u;Tc)BX zyzlMUgpHtg*UN)E{Q!)8yq`8d$urb?E?d zFxGG&#dfAcz#biR{-o;KTw?yvJXR50F>UviExn&T)gWYru zCLqpUO4hZ8Z&zx|{Ju(w>x}yuUCw3w{&bRqC^OQwTEs%J?rK27Gje)gDtkrq?8-T0 z7~P;2sCWTqkxoZ`o^3VQ`shMM>Z2$b-4I^e#SCVKU)C-yNR5jw`|gNrx>iCG_tFVF zZ9W%{fJo=yw=>N{B!`Yu*5TNE_erI=U0$%lY=l6}bV$%K_E5`m6n2@rnx6tS7r6MF z%v;Niz1DNbUt`>+BvDbzwu0brMsu^m9XIB$5AZ! zqxs+U@uoK(iVpqZ_}j<*wt3EoUCH6mvq<^6wTTgY)B1eFSrGAcXb(XEUben+vM-(R zLdNFxJnfpLSDv1JDt;*pT5yS1@VL zAJ~wUYqi*`sx?=wW6X2oOtp>{G_yH8^j%R+P@E+bdk#A3>sJ7o3W&;AIC*@xJ=!0G zVqOlWf}>5gXL|x47hrkfH5J#pZZ>m zH{*zR=Zn=ELx6=jcizv`q$I9lblqZ9VbG@Z8uvCHe${>4vne@ANAfTeC`VUmc_6BY zAZT5RiK(@l#Axwfw6yBqDS4&CQ(cnT~H!N#1_5*mWIXvNqkxPjdOvic0~jtVKAOj_*gdW&89zl$^EFLm?KQ?SuhD>cZ|^4ewv)~lD-yx_j*z2V()G%^KE z;%CE;LiA21fEhk2SWy`XXpZbvRcnEhFFi#kS5#gM+j^Fn4qy%I*^cL*?0-Ke%_DEd zpK5p}@jl+>)2Bl7$-85rrNe8_0x)Ll4|LZYgZYrub8GL*IV=odKJ6=w{=0m2{s;dx zCxvh1Vf&|UKJ(Wx)OZV}zC<;u4^FS%+-wIjf`172vPv)CsV`>*Gn_mR*G_}9=IKyl zRk$jcQ9M@(J~RJoizOLQ90J~kCj6^LV32#`@unLGNJXbzAtr!4R{+g@RyenAd(F(B z5dLM*N^xtChRCHjhq|K6XRI9Pg@=vJQ7(&FehzI;YewctMKCj08W9+qNDe1yvlalU zbVK7*Qrf&-%rX3(?rXB&d#aq#>c_k3^^y@?{`kGD9qZirsvwL?T{gDlHU#5Y42^1X zBMuEe47O&r&rlQ~1LK)lw+OJ%mE*Aa`Ti(&1Hghi4G@!d_HOBMH5Sp7mg^AQ=K?+4(7Fa0--tb1R?KugxDg%C3p5FTPa9I zoN3In4LB#%v2L4PSsuIh=1BH~oQE0kb6-byV%F8t7qZ9d$g9~1rzPImI$_AsVa6Pw zo`~DYf;dEL1HpP=IE6Gfo|Ld1I7l9=goHU%@EJIBeActGGI}(ow5HzU=;XWd1E5jl z11WT81C8Q$vXU{x5l6<81Jb2nn?{e8K3PD;M;j|b;rMpxv&5o}JAMalB_ww|~DRYd9JhX=w#Vnp2M+*p?MAbJ>yV<+KbM2gH_ z^fuad!m_J?qV&T+YWdBt0{qj$*sn_+oqQ>A`xejFvJHOr4?sl z!ENGZF!F40YL>fCQzjdjya+pe<&#$CeE)WbZ}X{NITHSSgNy1|1 z=3>smFlxh`vw)lPS(k7czQST-&Z~pJH0{EybB%SE7j3+m4%!;_>-!}>@Z9Kf#kUyH zsz=GP`=$oD&1Z7_`0_C$HijXO_(i}5a$KZs3&6VG;P(zJd z(-b3pAu9JnXep1{l=kbqWIm&}<|;sOy^RFC@gmz`0NmzYwwL=2;51q@&c`SHWRe2k zIwzb)MGld)icp_9Hru(`Ajty3+l)>D+l+<-Y#YbMGC6i9v4k1fL>FQTic8=^n4kyd z@~6KVPf~`r80R_EA`I9}j8&HDu+8|?N=AhYBSs1spvfYr`%V;iQ)`lPg%k{oip%*A z4--uYC_bL^-DH*~lrRKeW>J3ndD_R0%mj;d2okY~bQ`!k=1gotp#Y4nrrAYTkvI2x zhN!#Iwl4}DWU01ar(BuHxCCSgBIGXZ=FB?Jr)vnL}k$NvQtK5x~}7vR0MF%u3GxCDmlZK?;RxJu@8o|avulIAV&wPOzem7BkjGD{+pOW78}RXLmrRN5iSSLVLu*s5 z3xvR3w^Zc>3Evjql8cw$r#MfA**a4M_L9c&#AIvn$jm~SYk#6{bs41geQIL?u+_BV zGbKf$fo1sBPu~Y!igDMnuK``z0vOO0jXo!1N}TIzb3d@!xw9Z^)oW7#J zo&3u7a8)Lu92z4DnbY&*IQht04-xl0v~)7=HHrvq+x4zi4w9w0x1Cv@W7L|-m8=@N zr$(v1LakEb1l4&*0b9(IQ2U+VYu<1N0a~h3H582^Kf+78_a)b+>38s{UWfJqbwn=Q zMM4sP`vKFG0Ca;Ejq-Z3sfML{nTv>Z8)$yEfNT42-{*_^r5=rBQRNgxizgq;uh=`3 zNg;ge^KwuJvBd9CWo2!OJ*sjLb0SGG%C1hvjJnnsKf1(F_G=BRZ;V}XxkPP z+|UUwJZlUyL(F2{h%7prq0^UzvR{DJaz>UN z#1^fx{bN}tUS%S*@q`$c=^dqoR8~MpbJP+R)nD`@junCAQn==$qk*>$Y z3))&3~qrY!Xv=4cj zzre%K)U&QYi27k-iARU)*zBWp1dYA7_eb>L1=P{l)jJ_{gnfiN`jiMv?}s8o)pD5` z=dVqcGRP{#e*PyQOW^$@L7tFL6tT<@(xshO{k&kA&tItJV@pe_g7l+xH$ZJdwYwU) z?p%CZ!*&J$>@){O#fWPFqwEH>x?lj)(PKJ#WHlSgiVPDxfpb^A!8_I!+|-Tu&`c@1 zgFh^CK9VE>U!9hK-MahID*F#XDNjZo(D&{vy(oagZ`pB6G#LmLaWAQzG&?DFa!n>U z8GsT&b8XfbLZ%%J3HfbwsPbZQI<_59V9PGA;$`Z$C3SYHgi=a9APhVOWVCHJyd>L!VgP_%?5sqf3n?3?0msjAVrv1a3f};&YcWAa=He$KL<%W=Xr) zpf?{?uunV@ST>)uAXw)gTSQw>Zw~)4=BzTH5fOpgXtpiYuuh-3Ja)JVN5)1;A2GZ{x= zf}_IL3i&jZfQAmS+S!{(NL)Eb;KlC6S#?mdGgscqJSk6_*;o)%iDF=8BBjU@b=9#f zJBK6ITKTZ=?JT8n*ZQp(;c0>axf8TuaHrPDZ#W5YZM@;B5%bn#2*#^7A5s^vRfA?D`Nf60n=JstQ zXIx|A9k@}!JbgOITkF?%TLX93!aR1}SaK?mj<&*{0+$=0)*3*Gu%U%LUrCO41 zx%y^IGJDvjp@)o=b6Y2)Q*B?x^$Kukeex;Xj8P%z;?><`&tX%<=lJ*Sa0aL#lS$h4 z^aMD^RMV$3P2RamBE$wFd`=nEt%vQTp0}+Uo>K6kW5K&%9H#ZWXV?RE5&gZWA+Ws3d$VFZKdOH!GnXj~b4?}-goW9@j-*XHt3_N|e@$<{M z^I*Wz^xJI^5?*F5LU-@sX4byz&O8REIEIPRYD}cspSkJ`U#E!m^ydn5j5*>78SvOV zT{_;oD30meKM%Wq5q$5m(`M^TT%Pj2uW{>!dL|7+r`AIp-qF!Hhf#p0tOuJC?Hg%!FHj(1TvRn4+(mNh75z`!|u-{^fK)7?7 z$B(*gL7r}VY5)wEqZ?}5>=kTwAZx)mBkuCecUmrWS}dBoKVrnVv5}Pmg=4jEI}RWz zEl|k62G6{uQdNj_+N_r1P5d7=z9wis!5E}ZyyfDZIg8Vid{XYv=#j145F1n@{!t&k z*i9D4WUph<#d|y&o`jJMnX^c*lSg`~21^rj9+du$E{ay`-{8$kBcPP-13L_u`8ov`er8=HQ+bpXZs>w{ z&JhnbxAK0XjAEe9hPvmY*KCD1Jx`@KYQ4*6-#1~={{{QO!P7RgH%rQ*F!)7H-l{e{ zjI@|p3_Ozd*!|||)ze41b^#mj(8OX}LlX6`?32+!n@45RZstsI6zB&eg^9r1k0$|u zwtxRRX?r!Wvb7}Q_mY_ugV5?7DbDaFKZjpxJ?HX_76T9QTU+X~(M)H5{>%N;?)fv7 zgt&P2ZTiYdZfr4+Jy44jywQ8p%?o!9S%{Z+8c zg@FE|LLCHz@ z6*_cyveN~pJJOx$jxzbqiD{K;W-Zg*U6f`qkBNBzzEC{0Ee0@3I?ptX0KYN7+c%|N zfc^lAsu8DTClcdxN-xdgtOw70=gi(0g|z)I?kO@HpOl=$EE_e4)ogz4Sx`dA-!ot$ z*V`2i!2-U^cg*^_ZcE^wmm>O|=ex7G^uP>SqtuX%LpwKHj;OS=FXfB_~_KS*$mIQg@2SsGU+L}XOniKhX!j! zdv^o~>^n8+A)cRX2qRzBh^=OGN`ybzh?%eF1X$yGKK#;Fw0HQ(li>70E;&QNe0a9| zVSdrc9KJ|!I1TM$lY?b{V9&zE{yzrS9T<*TTT-`o`xU)Q>*Gk+OHGY-)lGZmMVOLz zS-I9rFy`pkI%_k<+jO?WsBF%;;%JC8cnb|?lf6F0MkQP@W0rVtn{ySP2j_ygv3Y)f z&U#;DDV0N4QyO6xu2~>hU_zf0B#MV3po#fqvOcq28YKGy=YzqqNS{hnC$62w?&N%# zfX?d4-Eb*Db}j{VCVK>2WK_5#Wsz#YMaLJM31Y@r=!GRnY&|EI zAA(F9$8XX&5b;6XCHWHPBL{?s4>=Lh4>}*J`?9h~nf%Ky3VMlui2*o5U)c#7!j=K6 z_Ju91)_5R`fQhc~_VojfMz6{!W=WU|it_+k#3=H<&FVqExxTwC2rLTh5yKeJLwYqz zG%wCvT8hRggwM1K_?W@hR!V;GI?go{x_==jVc_Wm@=s#%zOG*+|;fHv`Hx3Lcq%ZBSam_JMkA@05{Pz@VejC0XZU@#9z5`?SO6m9fgd7^pmxqi8OR!;J&&9)sJaZOn|?vtQV1NAGyY zNTp&B5xwRR1P3N0?2Yk-qW?#{$flrM$1xjeS4^qhjooAWY1hAgb;27KspAxXmVh6} zsJMeyEPc z&3No_#p~{0SmY5c88_6{q|HAdyg z-E2_^fS$F%g=%$DA=yrr2CT;2H3aqW^f@>JQX`g8*|?6cu$OpefXUUTynekNW13m2 zH>T_D32!m`<03yn?y9l!(w#$B?i&*N*(4iwPgXRA$a7d|p8|4B8B<*b%D)^?ep*?X zQ6L-FtZUeMby`g(JxzRu*hA2qKNZK1vmS2w_<5=q*WdnLSo$ZY4DI z!*Vxm?D3HWbehhY+0Xfyu2;n0s-U7m=ksb=m>whVS^o0KKhCQc?A~EDjJ+owV=qpW zZL?&AVUt3L!s$mN7wzZ*q4tEWkwKNQ{k4k{MqFLKs2=IUW&Fq{}$`n{yzHwC*X0-HZ6+>Fw{v_-R2WDD@sE zUqSZtx;y~C?_}~!Y)o%JkdT(p`7g10s8D8pZ!vyqC|@Sa0O%&n+lw(c=ISeYL2@&T zHrdol^1m3_=z|f9^++e_3$UG;v@h@q;%OlW@=8?~lu16o{-O*z6^&aAqAxuD{Zktka)g^$n3Mvtf6xgkd=n<&n{wO=wZ{mhiN7>g`wA z%PJunA1ovq3eUJdO+xbllQoCeoCDh*;3a^_0sIvl0R>q9w68>JS6X{P& zE5uooZz|$+muIZMX44R0@CYI6#>$@{_x#9)araK7$C>@-$2+w+MVEKN@SI8<$CkI*Q zK%r_i#uc-ch9VH&w*6|ySHL!?`0&)}*Xphf`8q=BF7|GH+^GI$7LRB%{&p6Iz(mX1 zk*k2=W7U$D>GfjCCMN#}w}JhiiuL%>!;#;ckpv0yKL^MBm(CFLle(pg^RzFxPk$;> zD9Nz=6?_sF$clC*Q{z%8s zM$yS!7=qm~ znFJ%8dk`{#GLyvS97a=8NP6mHR7H2iia!%ixK*dV-HP1GHJHddz9~py;vtqY#XCpd zM1wNP5;n~UcWR4OPhr#Vl((di zV3Q7^61(N*%a!iIWC4n+;Gl5NVkggB23Ype3Xs%L zHFms1%8d93+p_S$85Kdcsxu-dv1m6=fSkvukK=czzte!qk-(Q9W5=tfp@LmxQU%Gk z9cNknhSkpxd&Y_ex-L8$zcA!53CNqNi-7~(jun}T{K-m?FM@(xyGkgj7!O13qV_y* zAdCFC(`=n+W2Q|!gm#?|jfO6J5*f*ATKgK2Xl5;x-bie)@2uL)ONg&_*9FL2tn4Ve zk=iQo7;ndtz?v@JP^)6&{GUYAW{#Hm#cixtXRDzuMkc&>aD?l<r#}n4TC@k!Q)Gj+a`&#Z`M2Wab~Gnl)aS9G=66DHX8PmktWFzNi7MA}@! z&S<2lbkgdl^J~uq0ZX)!PhVlyHS+Vp{h}on8W^21h6NUb6D=EF<-zoS_8`N5H!zR5 z4uan`i)^s$UEk*_ChnN$0=s}P*(+~#X>YXfsbt!=48l?wJs`25jzcU3* z8fpO76As^KE*&rKgp_Ht9ux$`3)fB90xrn1*0VX<_GU>mTK`u%Xt9r954SP-PlsQ< zKRkT@iBFyRzYfQwxlFJ!#_G>gavA~rUSIj(aAE=P8wf_JAP=URnnK@0Z;(GlC%+oY zVLqpBn7f~3U31)W0XeV48wYGY@Cu^Z-coTE8UzNXaw)C7{v_nnSF#|>Vbc0bgN!`S zODEWfy44-@Ew#(TBbLAB_W5}{yOM(|jJ}&{DZK3Q*d$SD9D#;p*QXf$#?9l+Vqx2E zfhMZOFc|J;z>nIN8TTjd(dt0?W3+j;Ki=!q9~3d$pH~Cl2Uv`6mS!+Saluv z894d|3zcLmU3=73p8Pf&l-R5zNuvBsorhiiqUJ&h$!abrx6j|&9n{9QS$p02m`%1I zUh?v6@DondI3e{Q22Y&if+)-&Q@3aj_{uxM92y3nZ7HMC^HEJIFTK-~8?&#qb>3)I zJ5Cev(+nSxUh~*PU0>t*I!OtM_Uu*n_J11%V(hO(uDwIiH<$p)ILJPxgZ~p3PDb+n z-!SG1Ck&I~!#nU&nAmGlw&Hvo@F0sZc^o zLz8OF*rizhjpxxwus)o(E}w<{Wg2(ij3llc;NvQt<8akUM|9qoDG&2f3*gNuNgMc0 z9wV@};=N-0plCKLvYw}T6W{%e{(Xj6!}T&nmE}c}&8-%^%v^@6miO@7bE9$vj9vM_ z*sOWUAIYhm!f;+mIoPg<5XS53&Xj}BbzgT{Nx2;-mVmP{)yVdAd1rc)F79;fBk9Qr ziFG*y9wk$g$!$NhQiEC#i79AZ`8&X_2Y+`VY?)3hwM5_#WmcA9GqY8IfiLk7R!2CI zVK1x+b{D0Ri^NNO0em>(w=xm&otf1^I(ZgZ-Ox)lQ~7m*0ejkE%%=>vtScL((A+F+|t<)K``J;3sn6h`AKpV zy`j!4r3WR{6HLJIP8i{x%E&CWDg94MTS4ZXq2~phP^L;kefVcdw_MEr}_= z;+7pbYVXDJB^%z5C4jED86sZExsNIz6?Y?h_ndcd0M*-!9$hx^z-eK_zTbuMU@9`S z-zEh~2Z({z5{{x6-g2foXTv0O%(vLJa4MW>_F-M=PyLhg2Eg``)}ufpR9+0-n&D0ieKvK8 zCEwJ>{ljIMAP|S4ce2-EBY{t?+##b!y6t!gJ@_@=Tl94J6Veb=2*SRqT0{jr&WWVE zF@j{?r%5`-F3RV$VW_`&v(@d`;MGh)&d58eddzr!j9T)Q294%LI(^PxNJDN^h5GzB7d| ze4$HFCzU`Hz|0ht znTa>O`Qq)Pre!HZ+G%vct~qzuRBtlrp49vDb@c&lHHu)Df;+u>G~Nf_3`ejl&`u{U zGxi@5*AO#MTEnIVSqiqz3Y+$zu?oH32~l5%t(>=cwY&|~E>q4qGis_ZhDFbl{#KT_ z5>1;YDJ`*VWna6Na5UG=s&|5b5=ksEeZ*_iR=?vAovhoDPmn(!z(R8)l{hN!fk~s@r-AP7YS@C-8o7^_l^QuT+aM}1Ok(h> z!#kFkT>V!o&FS!r!*ZK%CXhG;13Sv$&oE~Ee(={Ev^sR3a?|d;b#bAdUF#PxG=)J= zC#lOsSDi=(I?8$9lCOQ8qWfbCO7pv-DC@key6;vtQfW^jEP!=aX5(_~9^2(A3T!wd zt$7P)+mNwE5g~VAlgycI%)(7mxG782^kn<W_d|QdFnUTI2j92^O zn!M9=;nKRrO{v$*a?3aL*h4Zu&ydj)Z+;19%Dv;*F#pxU(d{PNCs!URb!yCi&WR!` z+xrYtfSr(jr^MxsV<|(B&23A5cgF$ezeWJXEsF{mHWS}__5s6I@i45}tXIaM#}*!u z6JQeu5!W$iP5RPg(0u@|3mC1NkNkEq~bC0&)Oeu`m1IW$;G8fi59k2)N#)P6#tCnT3T*~ zEx*UI1DqW9;r!6f`l=J9e3t^|o|m4OSz4)8=f73t#srG=9fKA%fz(2VWg#qPXdY&% z-24Qk{#{x=rS9Ovvzc;VA#V|;i$aDiGu6&epuxG7iDp=t;>s6W9!X{1jxlJfOnQ%C zT_r!eeuR~LywmLFs2BT;+s2hsR0^vtXK~jZ=)jXLS;`iJ(v!Eh{&mPw8T)st%^9DP znIwFm0mB^hKu65FH*iL}W8A&sOwL6b$tBBs7&VSt*S(t&jn1Xky`s;4KQzGnG?VV| zqY_Hksbi5DYLqs+jIA0c6sdx6HEk`Xv$oQf#X+)I17VbybUGTBvm7@z{0?tMLB`{U5JPGh zw=vnB2>fr=HNpvFSjjWsY8(P#V|tm9J3RPwc>Db!<)ZhS!|%C2eD9r)+|f(i)s{lv z9}hM23_D|~^J7ha$k>}|k8~TiEaz&w|4_eNue=}2U0}6^=9RYbuOTBz`H&V)>x)$} zpkyN8pLNaPL>83jI~VVpaqcPcOua$}Z4H91P*adKN_qEjE6qPpU?^PTHUW${@197v zP2-(}L%jBt#iacWHjeP#yJch~s&YoSej3em{Ge&~Du9U-1tz?#v=RG5(!%`UGIidy zsCRIaEQICR;>q_T>9&r{^?Kmm+BGbwRFh7IuG>|o!H$W$i9r-)zID6KQwD-WPP|!H zj-dy|U)&)DMJm}-8kPRK{NfoDJ>s-lEpx%p!8Rk1)VWux>QB5h_eB0gywRo?Il(Wy zcxdh&21zV_sMA}zpX<1JE1HjV?)g*JZ93g3w?{J6&~oF^?O<8QaQ-%mZ(<7TcUd_y z@P#YK8fq)avmJRB1+?%yt5WwI_MH7^0BogjX@u>Uw3 z?iU=|EU(p*^80@@g=$zhoPg5lp{j7 zp-9&D)kC}U)<8a4n1%}g04(IA8{gN>*4;fRE1SdTpZnTg#QV>&5^tSCqk*x%L^<{kB>M7 zOU&Q2CB-M?*Q};mldsU#=Q|=!S?ZxH8QhuHO4uKcI6;0Tr!W$L2t4_{o%}Z=mpLW; z?cX)+=6;-!rn6hyr_4<9;?_(@Lbu#}sa7}@X*#@QV}B+p3Y>%M^n7mk-oaXmAtniT zHq@C=FyGq0M*)yHwP!Fx-&t$1?viYPH+!uv-OJdI;$t2?RgW4C z5F_g^nQo{NftCmonC+SSLQRd4&ne1V+BVVCz-nA$C1xIV%g4EvVSWaS&e{XpIK|2&4yD(ca)8A3HE)xTA z`k4q_Wl>3nLZ3HTGAW?6b@HuySH&{2nlDm$)`WYEhSE#I>mF%mRYk2_1~hTqbv^bV z8-9}viD0nz^i#G{&4jI?8u=J9fFWShrJ5496hfV{Npm}Egt5@7^sn;@A932EMB}m& z)1M^z>y9b~S&9~_K}*)wmHp79c$mIB6v0$E@T;ib5c`VJ*cN6{kuQOBKi9+pV}d2X z-ixz#m|s#pgjCExeCD*waNz*D;8Bh>V8E08RN?{80;2;{nJdrn{wp)uzSU z?+(|`0RV#J0|r33Umku)AknI?oOmz*aJA!F)uRtRa!ijp;6taD%kTR(lTdn0^*zWf z(e``Gn1BCL1&)Y!{Pl8*uc(s-)lf3H{ZJA0U24f|DH^lHaA9)JqRbNWRpV(dU-f3C zFxECh>#S^)xObt5jK2N&3(zq@%(F}PWtuKX7(p~KIEWi6BYr_zKafXSLOiV(SD7L> zVdUYbA$@W6_&ePA7gIeU$~w<%Lc=uAkCp8T+&C7(e&V}svH(^XJ?f45(Ni`k%=2|^ z5NWj^na+?}Xxo!%J<&uZn@HL=yD}<9PR!`1KMk$vk%Z9aQ0^`zJK%-q^D(SM2(%O{KT*{*_9ott5uHIsco^Zd%z^Q&yd{r5z+qUJW%f%O$3+xfd`q z2i?59&%N~+SIH|#{OhXeljx+m@R2ruMeeRUb9&RfeV4mmW}fXDY({OyRoN@S*fGE~ zDFwQRcH$mS;dPO{yBrofPwviM@5j#d1b}=@vf?CL&Auz977jxsYvJB0epc{gm5A!@ zB9G-b+M*Hz$`5OvlwUx;txYXErPEKJ$hVX@I^k~!Bix(?mtDO&%zwgFJB@v1t2m4; z2@%NQ_`!t@q>=F@Q8|5CoWN+qE`c@K^P0CqIT3wZ7j&=i? zWHD9s44l73(;2(x>Sb=AE=gXbZ?%Zk?7fA$rM|m1zik?W9c4;*ICL0QrU##9FcO2; zKnuH=WSGtXo;#+72XCpm9Lb1BAlbe)?>~P2(!Jm5K_Rz6?<+3e?;z3foD$+TKj@3; zA#(dMcLBSLlk8mS%#Go=X4o`vl*KJfG(A3oHShM*GqaQzk8i@iXj0>n2ost}B+*JH z9$d68S_SqQuWul;>!E_p=}=pQm>Q9B-=`du59TuS`B1`<+Kpre#>e#Xk18TPhtUO> zZ@5a&1UQKGtjJ~ZdaOygEZG8Cn7kztq;vT*qZ5{v>_A9DzYO9MG@jvllJ3Z0b0m<# zu39N0LS;2Z(%lUqTiEC9Jt*hgqW~Zepwo40OAf+Tia-v6kPdoc{E*hQGT&XJvsUtY zaA6cCTZ2+c4Y(>bpi}y0DGn%Cz=bf#OHt&jQ)~|EFFQ-+dSsZ2ynt3v%v?d%s-fF7 zDoe4Ro;M1pVG2Ru49`A;&-aIk1KX?yKft`TRz8uLYu37TD?;JQ@L;(wKTzrRdCB+4 zmpklWUS714Zcu7clay63%h|`rnOm-M7PyIBYQ+Qty}$h=7+pNI2jwB@LGkGfwl4W=LVq`L2ypE-zZxy3hzk4)}dtVSd0X2M!`=}QwZ-BrD z1uUN8ZKr}ZyL50l!1xSPh{g}!PYGK@UQd-^-R%YROf>Bc8K}sF0xq*aC$7$6<_S|D zqDIVBBug)iaY2sW^?c8exW)OWdd1?Myt!wmM5d^W(GPliHj;Dbb%p2f}aQ8aKOT&u?Spare4sJZ0-M8&KW;dtN#@i zFi#-cG@X$UOjhGVJ6tlx_6|Ssizbif7q?g?x9R$YY7L}Z?b(pPtAvvwPP{4trg7~E z{dqEQ8tp!BDq`e8;1%40?Ze|W^Fb&4H3W8({i4aAu>EXUOV9PFQ|Dn3TuTc}P|u<$ zQl06=$@8()W$w4mo?WDmY(XbKbm5l41M%<$DxD}Ab8!(cRV+GNZ!AprhJDrtl@@T5crcFTbr z5beXMjWr3;Jo)@}9O@Ju7sJJ(3ZXXjouS}T9B1A)pe(6ZMYwMB=qWkogpj)6^Kt*u z2?ECu6}E?u{DgL&LnE%U<+El+qB?(uZ{Vl#e?4x7pyWUKG2=M{B6rOGQ~2&>Rg@Ti zi(PAR@lIF3(XGwE9VM@I!0EuT)Q0Sm8_t9}cSV1bg_)I{MXfd@$tYQkYQUat&WMcm zF?0O$FK6j*K^)iX{=|^I%-l>^WLjxqvMvtq*;qT~FOq5F7SpC*TLq)zz?Uq73K3xw z{Zk8q%?}Tf2sI!2oZTNxNN*!08QP8Y1^un;6(kjMr$MItg_M5!=>q|aqalKGs{5x3 zAd&^e;Q(AY;~%?6sT->otvpH(yE~n1-L|E6ZHVNdV>Q_Vh~;sE%O&%MG% zdw-ipD+EL>Op@OJk3Y%1j7e%~YZlo&xVm6yxR|~X4IDA)fhAqT>i;s5qb5k!zca>P zzQPc#=8Qgi1~$Mz4w#zkgH8+(^D^%giT^60d<)%7 zXXcx1QiMKLQh^%<6Nn4JOJ;iIL=^yCtKO4)9jfF?XZNNME62DV6=-}i)#!ln2cj>U z>0}3*s6{e$>{YmiPO11~#ZZIe%NCxT@)$+3n+ue?o_;*a{OLOLr%R#Cr!W_Gr8nzC z3`!C^t%h$JyGDra0)>;K?4wNyr}x;Gp3}n0|!7>46 zZ%i=gzTl|)ZsfF2ba(CWiiry7EB3y6@~9PpH3F5w$tV-na5J43*+$`!84@u5^$+(3 z1M>$8W4}XJGRtyUMl%3B2$J#Em}C_AC>0ILC{e&dK(QC$d#A4lzoGL@vO3VWxAM>K zj_90{1d&DNB9_18wuio{!9bKP=xBq2ja{Hoj)2FYdkiAcJiOGyws`eZZzQ*Ark-?q^ew-2N4*=L7fb7w8%6x3k2m*7zQk#|9`UHtUJy#Nz#PGP27}~nRU8P&&~Wq zNhC#)k|=Qje_3D8#oW!A?M$7i%v4GwmH-fe*!y|R-YQGC3Rd&@pymy0PQQjn>wxqVd zrQX_8uo+y?lpn6AnOEms836Vmuu5@c8ZL&~HppBIU$w~siSsc3`Dv;KU%;rsv1X%O zR>-350Nq~ehY*7@B};4N3UgB|1DTb>EMNV(xVqCu#n}!{Rkrzw?3*!e6q5x1;bLgZ zRlXFsG{2?2@7+*@w0Zu|X@=VYlKFS{i-mwjj!s=x)W%+qo`cSEr&d<@K>LAz^U|eg z9);El-UN1`mD{P* zZ>u8#T8ACyK?!n}J}LMqI1(gffZMyk%i2}}>&bf*;_qc&cdM0iulFh*ihH{Ua7=i1 zU}|JU%L7v6O`qU?uLO5tqTU?k=kUX}ajF6ycr~f+ckllsNFOnpuO{fU`(VFUwSyXD zFND=}R&rpd3BW~sywihI_Q@k-{y!)q_yaDwInInYw+ub8i89^Y495=GWG(GLxTn~i zJb4%DWg5jTAe?U4(b8tv8sMJX&<_8|$xLx^MW(mjG*s zOR*A{beG6mz~LY7Iq+pv+?gAGl_N2{Iksc6c}?3)p=ZZnD+BYWcu6oBN~~<$Z!f%N zvmPj8O1Pa@YH6JnnGlsNA(RmV-5aOhGoYecZ5$X7O_F8cn6V`UK*sT z&FU>(g=`|11CIY6MfJK~VPu1KoDUF&@I)Mzg7_Sra;q|TS&NhSD5azBCESNyH6|od zKBup?)dnvF)6&<9f|=uD(dTWy1`OW~S{e!=N5K!yN}-uDxdG=m8cbc8p)T&4gu3hq zxcpMgr>&iRBSjzRCV~9)=up=AhuMd(#s#5*VGr{8Gk1X(NI#}#I6xsT3qxNp#4K%3 zN~;k5M=ue7*Z;cv;4D|cnC1$uJ{u$A|IC?%ECv^4Y~A{Sqs$LtZ^X8--Zb6}k?!-k zF7a&>5b5=(F}wKO=^oo<%3BUZzp6|Ws)A>qh8hadH%`Pc565BXi&cH-BnL`+s8$Gv z&hah}8_0^`xE>tO ziiI_hU&jt3f2Co(cuAi;7sC#-_zR*wz2iSpEeMga?`ezF2kKP13WWvcO*vgw%&Jm7 zc>eQRo?d~LFgHuZtYX`(pWbjW$5Z6AoHqVM5yvt2c61nif1`=}a@-Kw|E9yDw$>_I zk(JNx{-;me4}w(gh83T#x(7Z6Zv=acJsiH86rquLbpneVN6u?ki26VY$ya8J*wCC5s zLiC7fk>y-S8c{anFx2-08Ae{3v?;-60W?p;()^&@CG_cZ8PQ0T!vTN>P=ybWNC>v)!QGW=OexY<23wE#UDEln;5Ug4{;0vq_$Va*i z+peUu*|7Q+7B$Gl1101V+OkbsW_fLmi&nCh}*tA@ROHLr!&(TJ|P z3sA3w$V9J*I-Q(sVL7l!{?91D{`*IXPw$2(g^1nzs)Tq{*L>unwC9g(tyL&jom`5E z^c^zq(m`A~CeF%GQe#G@*^>i|qwnCbfSX3LSg;m5l2?ZvQkg)%xLJ9th|gndU&LK* ztu!vvZs4NhhXYV;(}BAYkV2%r&T#H>B3m6@P8Ztl0~122!f4^cRV*g`%H$jD=Z)#9 zz{)ks-sGRS*=bAg*m&*x@}gN!kM%54Dp?Nf6Q`Kh@Dm=OXvs-MZo!R zu1y#5U?_>Xc~6NW`<|Lyy5Oh4(<{&uP}OJG=NOd>x$7&*4#Cu$&)n>Yrg`&loNLYJ zeet8VAz%RIMu*Ki+bj`xV4Ew0O(T3Zyu>kuzFg+bZP6~dk2gn>=yULl|-h$lx3&JIpdP84XZ<4CV8 zE&}X~4Oflfzj9HZSEqS#59AP7R!~i(FV43OIgolgTIwHYn5VWFKe*E~%z6SJy+R(h z=ITeDFXF$CEMB%avjNd-c@2I#AXZ^)_a}&?Mt8`5HE`IM$(FS(I=78jZrE#;Rcw`^ zmAv!3Asz3UHaQmDBNH=8h@|wUWSU&OjODbWG zLMb2a7eyE)nFwghXV4Jwy*?a+^xsq;9SU%xe{=l6YQuLc^4>n{91Yp1InFz3H=L*Z zZ=8p|kNU<>c~2eg72_r7(eP)wG`#IN3uNW(GR!>Yr z8o5|JAg4Un+Lc&k`1o9v($4CFJQc|6?O%K)BA9E|$_cSm?W-*_tJ>O-KvkSUcikIm z#JkU+`&I4^f~s^rPCGD~Lzu^|GxD(zzKWo@ZWs1w1;~GtDV^D?&UNtuQE8MIXrrG| zNN_{wuq~oOmvMQR|J7Lj3@OI$`B&35^ZbgxPN3$$(RV&ydpo>jJd)Z!HMXUWk_=rc znehApMTQgmKGJ@-(&j?2$aeC1#id!kZJEoI{v}V(kD(?me|kJx{Gl#(Kb`1Hvehrc zYrwmE@~Sl26=}Wagh%hRm$MFW3DnQEL_TA*wLh0ayeu^Ue9@1D9=TA@95yO zR`tipDl2=<+0f0E>cz5y;@Ua5?i`QadSQRg%DPv^5rYPuJL8y0L+xHIIT!F!xgK|~ zT3u&-oix;^lo$7tJ$@p4;8i!;or+@S@ibYd4Iu@%Y_F8=oUdGk)x8b2dQN%Omw*xk z__)*nL7@VlvO#v*E;DAa%F3R|*Bs7=)0X0;qpY54aY5EaGfe_c7M6is<#ZI<>^TOW z5|6{Gg@Pa`=Y%NF3AyXp$px{=Y00m1vPS1ZSmcSyA!~W!;D`)aXiwX zM!uoC-2|19ZE{w-r#2+!Xz}FJ*FQZSSHVC{9tdaV*BLex6}(PrBu&Qr#6e7E&8R2L zs{t9FgY%3R3zsY>RIa+oCN%76+taRNQ;Q;X#J41?c14a7tsEZE zy=W4xT&M9yStZA6%Bc9l0&LdmY@7JDa&u?MLs01er@$PpVs*sZQi3~f0yz-{sPSn^ znj_h7T_3vjgfWO|HUHbNaj?$4{L=_#5x@AfI#`vU+eQkqS!C>PP?B z$E9T2Y&chzN0ehxW!Kl%o0{lr)Y$IfJOCc;9DLY$zQUwi8;JF@r-A&$di%}YuFRrA zt&g=nA+?j%Gd)kEK_W^~HbZAA0;Fl9K*gYYI6~NO?v6oflyu3P+f(GPBEnd|I?Im& z=wXYH0U!7;SDFQz6YP&NcgG+?#*e~2(0Q}|JuSxPxrIJ5x6ex-ITsQ$G0{&O%r=>a zZ>9;}i4qkUkr^m7672x>3-BGDxhLH1;K3Q#Sd72c-ozYfJt^!_kca2IZ_TaznFO6Y zX0<_9ztLC|?o|w#p-sw$>xBA+K3|D%^2YSd@rQMeK>yI@`0M!i_SoWiWuJ`U`zgcF!KP z@tjryNT*fs3ZSz{&)F%;nn=X6o(iCo4Hnfbe4q-@Mr#AMs=d|j`#;NAwVhGgD)cI6 zbmP|9moabKhhcS6dd+l#Mj6VH_{kYou+`Svj!)bL`z#l?Gv6s}KRR68Ofs5or-3`| z`dbrtEY1e8=Uu=iVGh7L7XVVb@+hq%cPn2KIBya|b`iV*eB9+XJsJ^O_$NFD-UgREI2D!T z73O#i82tRUeYpN7e~ViO$dek}(qL?H_>v>)P2|HVWQ?(>UYh^&vzYWf=2!17-aVdb zUF%(zYFQ#Nk^$0j-un92KNTWIrJccgTMKm$mv!Uan}FrCCL~{i1xZR>WEwj)px99c z6aSK@AfM4)+i^4wMp&K-R&Da?Z+ZDIgA5QXG)QK|46p%kJhSNat@g#mIvbs3ISF0? zbx^4f{)?-d5dv-mo^N;9V6B*J3Z63(IPma!N!Sr z%L^`@F3eSaF$_sK4CRGVKjxG;&!S;aCw09jwrMt>5OG8wIT;IzCKmbX3ad^Ax zO|h_gfI})fjovFPHHj!Dpte29Nl}d9guuaZy^ri^rhRzv$Yxf}ULQFvg#^;4I~GZd z3j{8GlImDWq+k?3dvDOZig@Ab7I)fWA`txO-Rb{q((E)@yg%c`0?c9PEH_8uT-0O< z?NzepZ0tW=aV{*Q`)d??{E6HtK&%0>Qb6$g9;Hc}QCQ|sTLDx`b#F7V6je13+)2Sw zUUoSl9FY$Hcy0KwX7IN3XY{P-z)|gzyz>2DyQj8 zI5YNg=5HRt9)(9zpOFsr?_3?(a)qYVS$sh9CW5^)ExCE=8vr|AeTrj>hTIzFRh?Ou z9FW*J%!a4474oMP4J?=93^>qZ$pEzBNL;0JAStB8$bIGU1f_D|B%JoLxM%o(7sIXY zwqjr{o0zknE$+5d46N>a@%*d~&W6774r>Pfy~DPPP(rp4l$ht904b^5wvW~aYu7pT zvcOWMIy7x>=I!k^9~uS98m$~$o0RvTAxn>%eY_dmxG6;kE%aY=Z?|w3#^&7*E|Iib zU?WZRtFFMub|Qwn9Q52bEj|o#5H|2jO+OXrb(yP;+q=oEvZjBKab+xT**3RqkgE~K z$eL=jMSEBzL+36i@f9nRw?3$&=AU@O9&Ue6$%I zCD&9|NJZ$`a#&4sLDbijlG~d9=D1I3qYPd_thT7umtr@0UD{M|PV1b*05-6o&I* z_eC{$DY2jNbqb3;D=R3WVU;)}UJ`DupuNV3KP9%5()qXDgGEK6v}4a6mdB%)kWbe` z7G*g>L&M^_2gExf%2pbFxgV-$wqi4i3ZVYrF*_47;_B}h1t%VUl5r^Z+2H)Ogkv4jTd^l5r*gDY^t&g zBnq7tsVags4*F+lCPK_y`x|G(+P3U|>)R-)IUfKQ0S>!Z2z9}Y=S7J&?^PbPM94TC zzdHcbCc?eze2j;Se>(L=uZ<_YB|Ja;Pqy89bnf^U-x!fft9GMB&Q7gIIYk-M(?|nn zbq)+iA=iZ`$Qt8{&V!dkT+}CP1BEMN6`~V@^3IC-E^;nXZIF1pC-Mp4%H4py(a2W6 zpgHC#=Uhy*s@CaT848it|4HG>K{@~FkuUcko3?e_jTuC5j%}DHi}B@9@ch=q~-?|f{?+QFFURZJDcvJ>5hCs`G9jcD|K~R-_%NJ}S%3zm4fRu&z z5#|`|Xy+OMVdk+-m7xiM&k-NA47u{Y{S6jR!IE}@BBLk0GjdnhU=|!X@b7gY2re=j zl1yIJf`F;0ID=*tDByZx+KiqXV;`c#rmSS7lK>`MjnTg(v`W?kbplGr;`w}GH>^nC zQexD}htBbaxUY7?P+r~+`$DB%ZjfFS+#<#}BELlcF#=er)v`=9^HM8VFIY)?Hxv=c zp4wcCK+i%*IK;g$AYX0=k3IWwVa0Pt17aNK$9swq`n)VJ;|MT4>3l`T`h zcI$-yqQhL2?P%5QLa(}U2N0mH0KoksMS?fLo~X8`um>FhozhdVs?HuR(*K(1 zzObhZ$=be~u6M2{7kuTTvkU=B-6vNsNtJrlZ)18r!hG5(SE->@Lb)Z|3l2BbsqAR9 z(55zXeP0sl)Y3nm9W4K3S!dP*Jg;M(YGfHg-dfI5S~q0p+YI+dW~rp9UsWMf2#Awf zL61@2{Av-8Hw$XiYDC9c;8gJ7#M^!G1&>4Kj9%}Op!=Uaq(x1lcKqoYwnVNafx*7w zAtbsSH8h)v_?1y_wEMMx$|~DRAYF*jYqRdYn|r{c)9$qsJ%5(zO}_7EzHX}jlKk#A zQjhJ0U9#*d4;Wfa8#6fYv=Hwl=xr(!@s2xJgfb(vDXe%xWsXefmzgLesA(#2|1L6O zrNPUv zcrxQWsVSbvjBcAw@r(Mrv|a2-C-1zajW$_yDKLUVd+RQ=NgkO zpeB+$TE^ulm!CQ!*&}DzvinKm;gaWiV@pBE<738aArf6iKtwV^KxD9I6fuY=8Zjfj z9W`HI(%KaE^hgIJHUVO7D@=a-wyFNlhWgDr(UVwr)c=;RbP$j0h+@noo3sp(x^`a2 zx4hdHXubPkPE6nNKb%f8Yn!mEvPfP66<(Ou({vl0(`cPd`MxEwjFCpD)DFFY{L1 z*Q`6c|Ai?TXqc3vyO_D)wNCguApl0_1W>Hh-Y)n!W#-49Kq$2#+BJi5Z% z^)EXOdmUpF+6>`D_lkZy9RrJGPZ<{g|5_aCE>b3cl{4T6OLiX%Re)5;sN={6qKkrcc5Hh z<=nn`K10Y7{$_2f<3#xs+~*ZygWHRBn&6xCg*J(H>S;2&y|u}UaU7eXD3R3vlYewK z8H$y)_4~ryi0|!@V7|we@0Yeb@97L!N>TbjpshJ#W0}b#y)1 zeCaLUD&CWzli9R}lofoLOt87=<^_viwYbLr9xYT!6p_zJvv z;0cg}^9W?$mx(D_ucCfe>tb|4^gG}Gz(S4pwAmC2SkQ@so{m^B0dh%P(N2i%LvgXp zA<0wxeEqIEoLmjS3P^YWkp=M?nBNmIMiy+Wk*`U~8o*Epi~^t~>tB02@Uib4f!+Y( zpT80RRtXbQTJh_3QIEgRf02bsIlSO%tU2RYk7`!C?9w+0b$cbnf`V;i~ zS6uNQYTp5oNC8TUPD2}u7&kYWW6deqbbv?cIz)r?^S+grw?poSSpX6=X-a@m_|AMa z8B37)yK0_`aCn#3eKyIAWlQa_85{zp2{?IC$e}RUyx@LtV7`rJ7xY@;sx95;Vvx$T zZ4g%$=u$h)+n^$sZmh!tZF@4VI1#8WP+H7A1>eQzQ3ajqx$7~m(;fjN#?nL^dht%8<6;1pyH8ym;RA_D(go_(H%h?4Q)7E^M^i zRbydzoA@=gfMXxsDZ|}MpuIB+P~nernZf&sXkAC)fQaNI`HOzKOsQ+6|G~p3zZjp_ zlio=3zwNg6%FO*0ke= zc@5JuJNb{^rd$Q;jHhN%+^Q!XsR5JS99lzUxIkg?%mUs3ZcI`^fm2#{ zzGCua-WT|L_i`1pzls-yepppSrXU@R06iq9TfCEbrM!DsVE9r73~)S2 z>(6gQMTh+aNAKLpD7wxe80?}ce&Byw1VZc1>V}J0PC3P%qTkft%@&6nQ zkjcNtVhBz>A-m&;-W7e=npRolTAHnG0^fMIABOx1a?^9`L!xRX@Q2;Z@y@hq08p!- zPNNO#pEV{VbybL%Sd=l~^LZE^tkY!D_S(7p!k#=ta~8jedN1KxxiCjFgcG(iC9w~0 zQaoPp!_(Iyz?k1_>j35Nio9#Gc{S58n9}_hfzrBssS#zP(Uy3hR+|dHN$yO4WoEdu zGZOvRH?uP|wkF}w?z@L+1g9T%3DD0ZCT*}(zD}8C+vzvoXyqso`dcD=K8@%zm>ECp zw18JGC$MeJdsgzI9V+c=?P3+9afLD|XiRWD+`d|oc6>XTFUUzh%wl(XEF2;5t?%cf z=R0i!PpYX*cYo+cTKH;mHyb_6U>pp10`--N>1afdM-HG@ODbIxpxKZu&SZT*XyKa$ zy`)g7PFR2I-_wqd)q#3!QgROSf-s*13>LVpSO;P6r)_5gjN1Q$2)^WDV6Q8w6ZG?k z_W6U4ye<3<-u=5w_li{6!$fEk<5akdFs*+hv%^A3LS!MqJXiIu*u z@Kz(|w6N63(c86^g$=nO0m)Z0hq@GPfd^R{MwOT-!gO7DPbLRNXP;@A9VN@>2BfMu zX2Y`e(aA7nK~g%iRI*C{d62WmWIYV`EiKtvt)0CK)&%#&q6-OqQ7ZeKNiP|ai}+@ole~& zDUYs%6$4=R;r+2BjoZHh$dhIsc-#6m2fs%r9muZBxUgLcGXO?cDlz&dQ!!Nn+3Ww~ zCVjWl(+2Nsie(MxOqr7|lra17envm(KN(OPo=v~ivPsc2H%moXE{ zl@Il82^ykA79wpwJoaDn8}Q9)T6K0voTGQ232=%EBHY}q3mxsIiKzVlImr)Owfga5 zDrh?Pg2N?Uj+o9_1o1>-{Y_ZQmXWUi$bFhh$^{R?$Tb;gPd~OZem0iY%*dCZ6mvt> zd1G6#8O+c#8$B2eW)X?{owag)V>kd;RN|;%T(^j0`SDJd6oVfT$`+BsP|E-hSt+DNPX~59zV(Ng94uNOjhrfH6{WAJb zlfuO@cl}Stcg)~2IF&m1TgpDo=j{szDaF7yhy}=!?E^{jJqh`CTX8(}hwv!0Lo24o zQ>kiKz8Lk27~hW`ZD&u%9Hj8_hS(v=2gGw= zKHaio+-B_WLIEf_uS--oKb#u^=f+*axYrbzg2 zXP_AsvCd48FLdYNLS zNF}8utkaYEQMJJsesaj~tSlax66)pTuq0Bl8(R|KgUn?2uxk#~u|gO^!g!&$x%Lky zVO<_Yqo!c<8C!l;7D&B7K-!N|;=Blyu?4%0_bxjJvO^t>w%VN5V>uNBK9E}WI`B}dLXADRkU|n_1|3+N@I}bt49aFZ++FwqT zyYjXZg4i{wB5y0qKojYnJHnQ;Oe7M~ewWJVd?35#C$M@(J;a+dQb73y$5sOeU>afE zKu$gKS@uxdBp);>xCx!u-M#tbs-r;}!uL{H>h{Cp6A`51V`BKGVlsfWzr+^KQA7$Y zuj(~@)~vnT@)G9@cbwK;u!`N9AjnjV9z9Lg(Ni*r_%f@%kU$#D=3)cchogxrd=aY& zSU>-(z17iG@=Jd~cBaRgczzb~#_0?PnlV zJgsZnkZlH8+pGIe`E*4-HM+9iw0W?b{G!Dy=Ros-aj^=3oQDPHv_o^xa~N-!ny>Dl ztOVw1X`~R+WG2&#tvB_}b!Z}Rr8@-4#16E%(&IvLq!*wh@R#-yK+qJwn+MdJLVwLY|a zGxkt13^rtgkLKRT* z;RZOEgQPq>3a*HS5D-DA`{Mm+iMi81WEfgDG4nn!5pwQY0YcJ<<^%^@pS)tHW!t0hj2xy>Ss zZ5$Zo?)CgsKdkz>`eAdk4{J-Eij3b8!^Cf_Zg)H{QYNR9n(Nuwk=hlK@xJ5^CmhJf-B!BP zrqDb|J;$5x3|#SR8!`s*#WeDPO@hJM_U2SeuFDBZ0xo!*643uU!E9+sLOu>FlGs&1 z>uqB5F(DX3)X!b=sBNChkt>NAqO!9Lng>tK39+mVd?jV)Z@KD^{H0g%a=T-pMKK8eFmrVGBWM+rkTW6q=aalA|m+KN0%jIaL1*1)XCY9$7l)> z3=d)-EfUGxheb{x3%GGOAaMl9>8fIM+H--a1yUimX+8Y#wNR9pmwhqr9j-mAB~5p; zZ+>{303RPLAjRJEfL%-mKrdkB!Y9?GwDVRs{As zO0V^gj|#B;7?8ak3X04->Bn-NW{=i(KC5gM2{E|IxS9ytCeI?x3hrJ48M`B1t!Xnu zN<^HAQxe{cek7np*{gSdx}6+Nm4heI;IbMj(m2RqO6Gq{<{he*Ooa=oi9CU{=);0> z#4$|wM>?Ay&l9%+CH17emRxCD^WhCNcmCXt&J`(q<=hGXaNc$rL1j1Nhpg;UZ+zGm zzoV}s2hzso>TLGaWHaI4gMBzIiGH zZ0}w`t`jQTrb6L58!NM`P7hk#w{VF%j8~9l#osr0+)dQx@e&+IFV4HuCER%QF3V)|tpgsSmqo(- zJNUzW+;NmUUVj_8qbc2y@g2UiRd;}MBvU2v3# zJ$Y6&LAfwB&PgvTih)A#4dNDiMZEJC9o&!5=$RP@4mww?gAR=A_NT8n0j-2AN;_dz z*9vmdC9hO=S9k-fbU#<(m6|J7s=s>^1j42Q#f3P8#0rvd7mvWRxTfU}sJF76eKn0w zrWhm2KR}G%xGLjlP_|_M;eSnB6S;oA3Hd4Xk3W1Sz^{+*d_4a6@&Du!sN8)|knaXh zu1rRi09#XhW}!s#S;g8Pp!hBX4*fAht+-`K-%r-`8?dqen%^QKrvh@Mh- z9*FL|hWlcaTgJ2DhwNb4-`dPo$FnUo;vQ6EZ!A^GYv8&kdu*T2#dnnsfsHjU$A+{* z_F$Xy>Jh$I8qLMP&*wJYoaB<7)&e78blJnQZ9chf}M z(_|f13li-Kd+jb6OE6veZWg};&FE|(L|2HIh2y~9!N1HC-Ar$!C7M2C?2={2$(#xD za^z|Cy!hUrlqFHC<%nqr?lebr(KpaDsuXvF7{S&8E$re^cB?-ur)Z6;Y?l-8&4JCq z1muZPZ{X+cLODynj|`HC<-uJ#)@pyY#|P6)9;P&4e)DQIybQ?TuTH`6nNy`UEtFXj z=Qld%8fB%lxBH`nOKJ2!eipMp(KObPQghKR3p>wyCG!eGBK*n%F5N1GsN1K9%?RIbPyH@on@=C`#+C-k+5!IUQg`tTMR_n3j`}N#kq27RFO+lDYRE zFL)UD7~G@|)xe<5pXhE&D(W58vmk$dbo`0)#pH)K2PdvL349X5aTel8Z<~JK68wJu zOX3{k%aq+gEwVB5M!Tab;ib&;0GGhGE1svYjJfcFXe>%Y!?1ne4gG#{y&9Gq8r@&b zf?Le#PSzOYNb3mn^PBjVcDbgNX}x9{>T25ct0y)w^Tr2aL(h3L`bxW`9}oZxn;Q#J zt?~i%JXm~7l2v=F5)s&P3AETIhwE<)WTzMvrkp){FcFM4e$K(>j$hnOR9`4vsqN)3 z{l4OF6QT5;xIlZ@e^qz@^*zres!@UX~jH|ICmZTh5-+;-HhE%aE(+4t@YwM&@fwy)# z)&g>gN7dHY8D;EZXwE;SqYq6dOtIl|^zPq9-U4t!4un!ig5qY`!Q$w3K!?TYKZxQJ zqIjRkKKl6gg6?E|x|xuSxdntWWmEWN>fHKwT<{Os`tdw9l5x@*@vSH;ttl=WQOlP( zfoRGssPleKR&QpvQpKE-pD{mj^11PRN(76`i^hK+D#KrFH{_ALk!P1@S$eDd;)&g1PlQL_S(hWKJ009=G zju~z1+ZW_p+dkXoDojpE)$7Vw)RN1su)2iG(~wq`C5g!I4W6Z&Pv)q}J6>evDO3@I z>)D;b3i^E0YElwD$V zR-OfCu;zsHelUqQPGx-#oiN(#F@PN|LES#R_vI|w`%!qW?K8ne19C zs_nJ|5?%KF$Qjb-CPYlsiR1?jkoPER?fN_p+BRbnSu?`ACKv#2jWSA?5A^{;{l?36$V|!pcusonV$YJ-Ju04E-mYK5i$j#dwctS zQR10AZoRoErx;2R2ymXoY=9K1KSFNzvI9nk!gG&&Yn=g#MFy!ih_wuLH%Dif)E+*k zfvDGQW`$nMHR;%O2bf5lf0Hg#3Qas`;?9>^Q__XT)YvKk8lT8>0F@nDzr_vsWY}t` z4qkHrYy>zQzEhc2Y58zlx~e}}s3@Hbm!r<)846Q%G%atCc3Gp0u>E#u?UQEeK|{j1 z4BMhqOAfs}Ix}K1Ljkrdc{LSbRC23@Wd&Q6-tK<=t#|vX^VF`tfT*uIhA!$9}3Civyg#V!l7KL7pW{07qhL;5j) za2lhwofKUQhk_%ffPFRGX7VjO8k~y5 zR^ou1Bb2#wI>do}@5~$KqO5`~?vpH%>@3?4*tidIc zS5kdSt-BGI6wjkg(!M0HVnp^Y4gr|wPjB|56Wr4dn>{RIg)DyDzPsNn_;yBE2yU+j zc9B8E(l_D6N1~b_V*RYXMlDKB_lt-SD;yMzOyQgs&?mz9jBx(K%Jd$*N=nrI$Gao< zAAS5sVT~st3V}9Jo9fdV`f%*UqD6-D+J!VR{xh=m*IP%FMJe5cPkht+N>(2P=|R)t zRx1?8z&GZqs8odK_K{bU!?sD@F^aM;@-B^ThDfJ2QCLOE^=x?~{lI$FHB|56fKK*U z@f;`}Im_)Q#Gw+HKh z6W|OxdLq*D(;PZ+tRD%HejbpXD4&IAVRai_(VEO(Rho4_@`2~knCmSM=3nzkqhlIS zTqvyGwf208KSnpVRRv(xdC76qGt)3%(GnG%?NWF4@*0kL>4~=Py#DctM?dd;K}sJx z+ysNEI;nHo9Tm`IThg0=^b=l=&7?5*&XqrR<%mXN_WG*W`ix@9QK8ynqzsMrc9RSz zwgKFd0%JZb;2j;L@o7e`G^ahwK{z(#FAu#v{A70bvho)P5g!{mG#>`uyMm#rj`nljI&WXzD_Y``_} zMg*`lcA{%q6yhJ%kvGTPMlkU+R&H}L4Yrl z*!?V#y#kTC*RysI6rs!4U-gyeql?GieCCw20t;5zzWgfSMF6wR*(@c>CA2Gchff^)&R>Dw&F;Ua7px_~X(+^I0-v%a z-M4g=ZAHk8Ydm=LGc2N+glGBs4clz{68Kp$=+T=`aTnhGQeK>@%L}=iY)N0ncD#12ktWgckKOIWV z#BBxUB6Xu$;^pf2uBm+@8^JS#y_IX2^krep2@}x8J7b{&^LB$(cXVhrNn^%$0E$AH zKwaTc?8l2*!FpyB|BgNN#@dB$XP==zI)g@e27FQ&{Y&i%(hD_{bD=iiZf;4{0WD$G z#GPyO@00HX-~Sr*q>wG3ZyTw?m|dDl5;9N`LmA+r5jJ@BdPgFCrAdg~a1!-0>hA6~V+KMx%^7jxx^2 z&7Sk18|}V!S-r*rLqWVu{8d$P^y0Xj; zgK>tvMv!$swK6rgYD^6P)&9PB&f8T6AAGbr_GCnsDZZz6UwJTS(ZH5!-q zAO1!zm-ScUl6On=h6s3;%{{c~Q3Y)0K(Mi{BYW^$paw#aUR*{eHOS?|^I^Ddr z`w4QvxlVtJ#;{R*t$&7qg=rwy?D}v2&^Xg~>sk{-4=0%udN1ARP3Ek?`p?=vY1YZzuP6QDM3@ub!78if@8cbr+^80)^KPh{wM*UX{2R^GV>yms#R61o_(3dk znpWAt?1A!ZdD28In=zDn`wGg>@t)P22Kit5^ZJpuyeE4T=|uTm?>hPlvA^UiN!aU~ zeS)AFtzXzo@#c}N%t+$C2)e5|yaia~zV+T!2vgUWw5vzgns6rUS+`9kcJ|{_bNJ1p zo(`}7QhF|F+*I!S*{i1}!n}uEzy1%l*l>Gk(@>9&j_D`jUz58%OeA&b47|<`K;4a0 zpXVH0kj5)xl#}rcJg_h|{6#jGk)N|XkYnH_z<`h}q^F{K1=D( zCCSqbbc_PbDIwW)`g^=ED!}Hhg|a~9BX7g%iz7e_>1j}n{F|>hue>HlkQPmUQqj}F zAi)o|n&Uu%oMsyweg@*4hW9Rpz9W8+cZVi7C_i9*R5pb(kt$ULE;unyi*7t8X9WN9 z_%DN-l&kd3_Z=t1a}(Z@-}F~sa$tl#NP+qP@9_Vp3|?_yh7y6lx~IkD-+Fd{E*MYn zm-1gP0Z;kxHRjCAHF1@xW6xU-g*HewlB4(asp1B7MY#h;7zU1~)71=b9Wn20rt6I!7;e}I1bM+kbezYa(nL@`zQx@5znK;5?&49L=~ z2kI9t!1zUOc&#@!I0qHhM31wX?E438qhj?->Q3>wI4FH5FT7<~`n%ElZk~VTXA1$8 zGBL!n5KtEB4mCXD^S09hgX_X`63oA5S! zJ(;0~ed5S)%$Fz$RL3X<%6ic;O1ycn+?Crz6;5i;AoCnW@4=HV%@MppKa`p|R{qVjB z@bSh_a<214PlDv6Lf;^j51EeR2%u&RVxibQ{xC}ci+FqqFDkkI_8-^Tc6IG9$trS82lroEZg8cnzqG zG&a}HQ+p*Sirg?Mx_|z(cS5J_TuN>?>KS)~p?>+@SG^Rt7-Z^s3<-g!#u+Dy1+@bk z{)vuq%jMW0pf#n_QV1oSSUHm@@X>7M3j-gwn$c&lPo*$;UW&fEG`9z(C{F}iw73>_ zKVt6-*v|(x62&{fCslIZ*pG35#v_Q`9lIMuj<+@A?_;K8+J+=W;pp9-9?a*cNeu4> zdJXO_2Sv$}K(c*5*lFFp`!op4^jbwlofgvIaq75=Xo6236{jc?<; zDc{dw=2tfyW~J`yM0+cO`LQOE>)amg(xxx#zww#x!bYqQYG58*N)oF6w!K&@6nn(m zl(;R@Eng76C+df(F(D7RL;NEH9f{x1b<9|i{)g#1oc-W{dk2_Yat}zEWtM4{6jWd& zDDrg*Ao4ed?0m7xxA?cNtHC_i5|?Lljt#{i2aK}7m5e7 zU7}H_0>xN@2R`09R`-{SB=+QZv;~#|V|&^N_n17!`$eO>MZ7U`Q$SY6(o3OxI3${1 z{FBxjxb0Cx+l9TgD@PZ4ME4Xc#QJzhy^`ql_3Dj=d^kh(V8YCO-Ep%`If)3yS`1hiupTEbwB6Z? zP3rdOUi3OFZ-?xUg&Q- zihVfc?g2Z#0e<%Uwn;w3CckD$6Uj_+O8J!5i*S?Unr2&&=(rX1qVPwJ6an_47(p$4dK}1(BEknu>a{g0EcJ#h$`U3C3cDPR>9j}zOoAN9X_X# z-+l|qCtg+cHI~JFbp`(@!HEJQBahEX`juhf=4dILa#(x2OnmUMYIEYu>}sM7aAGWUumS5*xY4g4`#ha|_C+4pu+p4|_M|?`*gS2=AF=O$AJ%Kj&gJ z(d&#kJ&Vg<9*<`^&+V2CHzxM69nB7+Y>zrJEl=g5^GFpZ)M2zZwH-r!bHW~$BVjMa zqtjP=I)0p`*K9(7}ryZFA9Rz#az7)!I=uSH$K+aWqv6A}3$I-aI z63%bF`$CArS92OxEPsOg(KQCcujfNbcF7IW9c)&+=zFrNKu9Cm)L!hxvq_|c`gtEW z#}&~HQJ%L9MjLJf_sF}@i=u2paGZ0g-^T6g~QudMakq7 z#C@Vy+PxcTroNU#tRwYX&nn2Vx3xR$3!K&6`d$ejids@Xr-8q3*Jgl*j@qSKOepw? z&0c*FY6>IT z8ni%Hgr;;w9p#tg{qy$^8v5o`zD%Gc--G(k2uH^>q}%_LQ{aal2YyptM}dvuO(X+n zjBHOsTUP!G#+2WA5ZKT0kl^8%a3-#fsTJ&eY392>e##k`{${@VH*LL4{H_V|oK{spx zmnh;LjSsdlV^CYpMttK<b)poRr0zN*bN{%qkG2Z*Gk#&4^ zNd1n1j7PEtXP~VsV_(Ap*HGIfmrpa}Nd8w0*swP}U8~6n*O~n9eW0vR#M8`%!b~lS zN5IYwE&R8Sdlh&T>R(-u;Dktp@)nF>XO6*yr^&0toCqIHF(*Qn@#-+0=XtQ)O^Itq z;E!GdjKrGp^Bz9OLbv=s_rbl^z$}64AKDE1CwIo7Pq60jtdIFf!>la^=~OjsBCf7= zlJV>cS-v%qnUJluFQ2*MJl|F^!n?JDCD-r1?%CiO@a-+RVMpPsj|aCvK6^T*$8xF! zx`cO{{HFcoX;3O<6{f;I9GoIeOn~Zj@Yo($+F+nrwsvtie28@|e%GCx;%X2ZWtsd6 zm72ApOrW(QjnI>*U}V+tM^{|Woe+3LISj$_DKz6%7M|e)Zzb?TIl{taXP%cZKWzv| zbv}E3o~uBGW_*56!9u9(c`F_|`bKN8>-4V>3 z`SST7MJB%9W3o#hj9e`N-@eyx26`hsRqgKhF)^KYez)n~U$(^cZn*28&&_ZKv*WaP z70F5cL^CugZ3F~6?6Bbq@oT+nU z@;b`s?+I#RnTG}L+!m;GzJX0pUuYU8(owkUV;KW6b-mk{55gGoK?5(5_j<%QyI+&5 zV;%`EQF(6-uzA7AYEwHmg}cfyok_JTgI}@z#diSVRPit2hAlfMKgW565Z%wvF+$TSv z0ULMaP4=+FHN@NOa_nLI=Ak!mAK=p{)ZAazX8bl`4`WfrZZ{1J>5C@@g2v7a^jPR& zB_O4LO4wk^C0-!h`9()J4&;uB-fl41r#b(@1b9Mi#(CqzF-!Q0Rf2>>?!O29$kcbp zq)N5j@uQv#4-3)1|MJK89G|wF+8R zmhznZ8BY0mN`3ls<%jfy^Yic+=I<3X+2i=)Z3eAoZy$vcOG(UCpuEjXKqaReU`s3j zDLEf29-t+Th?1&^AXu{%CP z_x*y~Ky?qy5T(KWpx$3JA6+rM5HA7=YjFyTq%J|Cul59g-7DXAnEeE zNwZ>#uEH?^#~XoWYv9Kf@i=QemZ@emtb-_Glmt5b+S}Vum!>bCDZlXxTD^YL&Aoiwz_^t$uSJ^3OVH| zVk1s^h;0B%y7@$EFGR1Ar&)4zKB!S%ffUGI77`k*=pafV_fj-qkYj#xg4`F9`6KB- z>*e9on1b1Us1e|G;c$oXvYf0Eq**o*4lk!2ATh4CSeV9CcJF^DG{Y5vnrh!fmCWz8 zA7BZ*EJtLS3?G^*!RT-E*WZ2I!;uqmxK%!-FyM~i@6xArwA(gmF^?;0qD!mSXl)>_ z>mg-&CG|n9+c?X_Kfm6+yBM_aCXf+AEpv)2g!5uBQ=s_HwGeBG-LGGz2J2{qqEDUu z)|GsEW53}PATj4Ue}r~rdUw)%S`bC|fEUs$LiZ4j6%zYAnQ5`$^Y`-DI4E}AH83hqYkLgg^DR>zq!+dP$oZnwON@ zUtUl+Z-zWheNa0Dl+hYM4UQ-(IU5gIHnn|mb~8;bWaD4IDwv~Yp)>ZRjg9hLY(T@y z42H-%Zw5$#+=k&UY$cu(Bt4wev!FHBwz^s^vMh;!f9@6n72(nTSB-xVS+_e3&j6S zNl?k2&mokY!O{!Ol<&N*+W?QAeXt6&iV}`GIv~G4+wy5?kgXNgPGfJI5=gD?ZF8vusq7RKq;plIg z!b@WCc0C5oVRoFcwzsdZG?K?Efwjh|*30{TkR{6Dt%!#-9;k5k^6Mab5w&mMzpUv~ zCI+p2PcqG-vS&W<{BzLD?%9}UvH7*C2>6$%KUwHBR$MCnteZB8-D+CP zR%{dk?K_04@&Rk)emi`v{&dB4(+K}fD1!}rxlo9nO_+bBpGY0}xqWbg9X-DwxF3vX zYS6`}JdyQuW~JY$A_v^Fe}2On`-~&59AO#NFP~iMYEECK4K{|4##D86&X1DAi{5!@ zxyK23*SMPL23WTqTu%$%aSq!%0?qc2g`kdCNI-S>Rzh(o=cy{=bl? z`%bTmx9L~rb0Qs}mQuy!9WjSjm{tqoJK6tDv>)Dn*t-oy&zjD;(-6iy1g2dtLf*)i zc1BQ0o_TEOo5THZ8UO>?KZfgsE?(4?@yc*s$J%a1>|50t0fDj`&HwslGS8%ktDaN~ z4_zl!Zb|o8iYTzZ9?5+D^0OkJ&B3KutpbUcho@kjQ($51Rs_@eWzc)vapEO^nRdYT zTl-!xL5cfsnCF5qP3*fhByh%@PIDl1)As=ReZK=je@;?Y_Ja$AH_j1kkdtTMi^^nXJ5zT;F-!*WYS+IdF~9u^>No#7WZUpVP)ZIh4r(yUpLYvJ z7Y>)?=v~iQ>RH#?<7Yzlzb(N~+4J2qjbpW;K1kXYo8PPm%!iW!7Y#{N(gxM z>qAQ-iy~2s#Zsqq(Ub_@NjOIgZK?86@~^b>cU~Q@VC0csFnip@m&9!gc zfn2VP@g0efF;>vZE=WMquu-!ihQuqHU0zTAA_sRp$()0f*(C}sF&#h;p(7tN25mV7 ztWhYb!$({gs9*QrJ&53q^k03aJ`DE6w)DghF@H08{n;k4C1wHJ<+17cvQb=#5nz7I z>f-7{-&QYt>)kQM)P_5VCP|Vx; zJQJ`eeb9M}>xt1R)@S^JY-LMK2YNffB75l_Z*o;XS@hkq?JeR61@6;mqm)KVTNS`p z@6ddjP5IzQIrh&)7RCnhpI{Eh(`!Rtx@FI?ps2kuP;l{6rET=9H~|Oo!_YwRdtrC@ zz9KjlPRrMz8rh~0THh7KME0zpf~91VZVAa3u_@W8op~!m$_e+$k7O#bl4^g)6#W3{>Re%OfDs&7f)8 zG(!|b0^9!d7g15l+I|!nZ9FV|VVn3~j!le8#03~2Cp&KF6*$&7x&_idX(J*2pWK`H z!d-x34^Pd-q&)W2D36<09Tbc2@6QPAeVutW!>VLIe2+CNk^bCe+eio5JM4=R8gQf= z56)95lDFA-Z+~Dn5ueK9h6Hs7NIWj3duqo=hc%vOckG7?2d=8P;=L-`?apsTI*)gxb_) zifv)ONo91~B^u#KAzSx~nWTKKf}RVOY9EMUHo!;+HCw@U#uP-f5KtYITf*Ov+7Z(z zh>)+`9zV^kko&^C@5S(yVb8nq&b7doi_E%Qw{1NBi)F!L+Q6eU;xGa;eAdzg?v>Cc zz}S6B!_4Akrs{bdX<^^C-Hzx%HMSiRaH<}T!Lsx}&yG)!SV^8UJrz3u6LG*U3yy_n z!{fjOJXT=DSN#pGva!sl1ciP4c?ty<-ucS0LL+xQ3wy__tKYrFZaV>_ND;F&?-h}u zoQzKsK0+erTjW7@0-z98*t>A2u4lWKctlMzi)8btp#k)>(3;k`?7#G8sIUDdK0Qa6 z^ThU>KH2Nyy>e&?T6b1rL)ExJ%uh)|;S8THC;uy|6ujpJTGuue~MKs)D?! zf1wf{TO4D646&mR@~^yB@IO|<-PWOlLFpbUU3VStVtgz};sDgIjDyH|B|r( zm$YGTnz8TS{}zmrQh?~R7>E_Pd78IMf+hh_(s~bsheCR@z=#9GuS)h{q932kb6#U_q_%#-uTm=)Y`I&Dz-}`@#eK)^a^Ycy}!~<40d(vuBHR+&l zg#YKa_Ic}v;m~gurv0KA?h{us-gXuP_2$XQZ=$^WG3%RI$;*!rntK>Mk&zGaaBBj` zTwLXCkPzw0L6_Z=mMEWWskD@TKuVQJ{NdDuum76n4myf-NLLHMAqzz;#G4=dXlYQp zhdpJ1r{E7py7nkRjrTsZcE}U}Vu%nu%Hf9j<}}xc_mFzkkWgr1uCQz!6jcLv@S_sDPaigYTtN1_AsGzC!Pm3_za$C?D8Q; z+v`%hX`f5YTZGQC_eiCsJslAS9pw>UAKVJL5)Sk7lnz(lbqlzB=(lMCTzvcRAj9Km zId@$96UKyPK`B^DR=HqkatH4aB*twy!L;oB?5>|kMd|JhoBWOY19L+-4VoefY}j>G zapL?jyy%*uVLpmxkBY;POkgJ^S)y4nD4bR%l)0oRs4bf%NL_NUtnh`)JSS(-o4!;a zm;T#dPl65?D2)*VkF1YJu)d8FoA_b8gnrp25;0^ zU>mq=V%?ZukFq*B-^-yDLW!Qo5mU?-Z&VJo}p-{t=tZ8c+(Hi+Gb z1;gd7WhK zL@ssn?D4_gjiceXWIf(27B(eRQ5AiYWrY46vlP@UaqC+l6J0U?ZKn!mdZ0v21e)W@ zXpsQKo6`#Z$^?)?h>ZYz4R>q-t!j=vZm(Z|0wn2Fm}!|}%Um0M4m|;k3FkyqKe`!? zZc%nYZAkdx6b!aq9ag3wb~N^NKk*uQ`ztm#fFpC|m@H@u^G*hnko-!hMrL{g<8t|LFML4Y~=> z%;w|0{+7R}uS)M58w+@Y=IW5Wy}gjuYs`w8;kCf1d-<+&klnD@K3PDZ?J@?0tSRy{ zbCd8?I9(=uEO?ycq?QjrDW1f`ie{@WIail<;-baV&sa7INl&KHzlpKLic4cs5qX6$ z{3NVuyIALVmLgJJDhMJro*u128juOLgy6@aNZqJ+j$s3T0hWYV2;HKH6Qq> zS2KR!1f{U5I--oigbxyAUA;)wFQ{7gWL(AFR)^bG(V3dZ$C-2C*|5prYL(q+rnQ`o zM+-jW8hmc~>-~&iiGOtW^5N(&(Cetdg)FNoQ};9qhx~-g91UsKiwaBO z5whh_oQZ2vYv_y_>_As8REeyV!i-;Zr*FOAvr>Z2PA`$8pFgMT5DL&Pei!4Y0ozI~ zrL?y9P~&FQ6Pc)_vi^5Yj10>Wowec)2PhLiXm30Tx0h*pB&2d2n76}~jvB@E*l$JH zvLuCi`d$Blt(fd9w0o9Q#p#N-?2oq&;+C!%#rjh|b( zRDt>%-fr_57!RhA`1H^n(bkIMdn76y;Si3B!;-IdU-6{{_jXC;ft9UxY7eTO|L9RY* zTTP1f(}?nmcth;_KRvgfupNX^&XWJa5%t4vnsdor^?Z)YUXgp;T|)Y`Dpultl7sIMfvuK2qWA2d8>Hz<8e-d*M=c~xG|<*FQ;lmTx8_; zpS0!Rtj)L<{33Il9~ku6wJTz;0T^cojbL*0@2@ zOYo+w&@1&V`#J`P^k^y~s3BZZ(M1*Nd^=wWa|DwIwVg{qp|w=V&N2GWoi1~fgsmck zJeIabz75tb^3krFVb!6 zpc!Llut6=Pm67sJWzEBROXSw@s8$cUJ>N^ed0MaqHX3tgh=@98#?)nXL_3a1#xD7{ zc9SFBOvT1HB7RTYO&pJ$j9gi+*>ddIK{<{=g>-s_Qg;u-a}vOfv}l(#LroH6K?O%+ zo>Ic)iF=-2yZP=V&rRzn<`Wf0<9#f4wg+T(a`Gd7&t4CRu=!+dq41(pA|u5)jl%}y z#DTN-%1V7WdroB$9{w~`Yg|J`7Q3;eWgi=p0i1|D-t@W?nUz?|L zsNMpO)70IMJKLUHop9SsP%C$tLb|VTx^7MwD;YiX4mnfwp=8beAYA--lTM1hhfrb&SGJ5)>1gVoLE%(4ew@orfTV?k>gYAJ1}l+ zyb18LmV=DeyzA>O9=2G}G12BMt4$^pM4R`08*5$wUIa>(udGj-jfLcUJHPyfn-gsr z?DJ@0dpCGzm+47c2NbeA*42+Lz&H+{c@>O)+DA&_-XOtJ`FjJm#$>am|HgTF)HH-?_^l-i`BOPQ3vgT5ZK zV@CQ_a(%}s`!dzsKdohzq2m2@NK~sp?*Hs^pm$^+sWHFDMncfvb~7_sgvy*`?<`{i zX(3mimX$uaM@(AE;v8j*#opzhSrED#^OeMRedL~zb`La7Zx&a88@+}a~rt1yq znr~KdGg0hYzK;FXyYo2Taa6sKl=vIOk;HDJjpNw@vfuc>fn6fL613QNm&;L?(kEJ- z1T+Hx#*CsuZmh^jwIvCvOehX;BGXMqU@j|a9&1U6X&FGQLP*~yuO22klB>t07}|qf z%%w=$7Kfl`dQZZ4R}9q)=%`dqQT&87Y7RP|f_fDYe~~FjSsW};5JkidD6%-+fUXCY z2f;@!otRFVUT5C&GWvdz3Mu<#CWbpTEIe^Lh0C4e@#arJ1G}EKJ12z4lrVGgR4$%m zME>yo_Qv&$#M)NGF1-_p>=jR_#p%6Zk~eCC>V&vyuD12)HkMIAbvjH?m6qc4^3l6UaVX6WK57%XN(VqRcEPjKehI4~$qyX@V+9!* zBUO;%5(!KnSuMu_U^%EsX4-b{i$v`jgLyQJJp(De?B~?jd1G}pYBN6Le-l%nR&u~r z0%G<0Ppw{4$@*p1%c&x^6R^)Dn9U|fNlKHrp-8pAYMnJAh)3WF=Ou;l&bwR>wdkKx z&gO$HvgbGj?Q2>;{Wyg$@~>7BT-w0E~0=nKsx+uFg20 zv3vF`sBc~Ijc1^3x}3JJ=x=b=cU)f=LoyZq#DEBf(FdIzysSvoa+HR@!CnP4$i);dvtJzJXrw{Uf6ql> zbGS54YhivItJ*PZM-Fn9BR8{Xq&CKB2D*pkBx)pk_ z9qu9b@fFhG1cFnvrED_dW!j%-I9P&2#qn?!oWFb|J|8f>D_ZDmSw@OxR@M9{{!t_+ zsXu@IKy9cJxr+VICLD7br+@OllP>4N7%VPEp zoSPl1x|GF*3h@AlFt$+wO+$x~a1xZjl79eQw6{tKi(T5%nv%U7y|DhWYM_L?Qvq_6 zcRdaKuhmJ|2^Q}x8t3IJTOI6fNq~ku(8&4kKb+R;lUQHl`k?&5{vBIrs8QHASH`~L z2W8Qf{Ad(*Lc*8h-Trzy*&C8w2yzHYC;;TpkwWJR=7U%#uZpr=Un$&y0#S?H^#X#Q z8!}M|OAX-6^;?k70wlmtSF=0o=mr|LYh_Pp^~1x7q!;dp;A8$w^f{3p;8F7O9Q1=P z+++qs=&r^5813!4g^sdYRNn_5T||d33^h8>#3j$qDr?I~^9u!Ta4=gH zKdDbI$m&u8jK%XzgD?s7D4~;oR6(Oj%#}>+^P=(Mac_%nEKmjYdi#~1bWyV0eB7R` zR1J&kL$ZGube!IfqGDDrgXi5A(YL?~;PjT|xpyp81@^;$mRwwwf`co&NPnDQSJ7aU zJK~jGfA}=#_t)G2J_bS4cCJUjgW~_rf&dbH6FrTxvDl@$=xYh0d}q^#aUF3uD}TFq z|FBi7A9q9X?Ma@G8LuyT?(?Y|Ezm&;2?d3gL`Tq;QuQIV1pcltvVWctfdPBm&c(HR zHiDjYQz_7#=vri!kxLtX#;}jyp|5$Qz@VJ#vDU@NQ1);+?c@4^Zm8`lv#2Mb8(uO_ z{=ju_4E7)T z%+Xhpxp8;y9#m7Y+vEb*Np~*-JGb_#{1dy6Uypi#(-Ool+F2dj0b?wfzdzKZ?EN4< z3wP2$D@_kB%e;HeKn-wlZueNzbjy#>IbS-r3_+xk-R&+^zjUxk4TpWCZQk0l(lKtD z4HH9lLSQ?!tJ1aFhrEyXfZV<2eYRNihs%Nc(ONrS8<_rY%yUFkjm z*?Q(;o+0zufBP3_Vh-=@1z zOW||mbbA;vWeUq*=~g9um_d9x=cE>ShJwutu4UFRfcm)sfIns?J1D$bzG8jMf4VRI z%0tNcF1Rpzw0?NfD z)6(>{A_bGbA2;Cs2zXpx$1Ol{>qMB0&ol(tH5fFks@;hKwCd;ew=s}jGZPb4(5-c2qu^L

Q2 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 z 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%0A+hy%_dc0Y+l(@4aT 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 |vP8=VC2sOjxe7lF6GxRpyC5bO|z9vvhVPV0X#I z=x2hH=Hnsqcfu}O+zsL)D%S~+^cYr26aJNM-?Dbsi@xNxb#bPQ>6;joqR@($$jEN# z5T5A1IL66vq)xXfV2n~l3`VI@b6bbeqUHh=A&&V}^8>x)VIarH2R8EP-0P+ZEi%dY zA@svcN8N8(4{ShsN@^7-l z45Z~ue|DY(kf&7GGL)0*1Zq*eP(ecN<_Al%gN3S^0WlT42k?f&xX?4KUBb;iS|&kg z$rcK7!*VUp(YUkb{*bu)jo}S&3GogqiydKyMN;ds7XMdPyd(w>`G;Ou9AnCe89UGxnXq-Wc-4fzVi;xZK7G`PPw#7e54r>X_9lVt8 zVQRR0i&I$xH>_QlsZ+*kQ6ZnPLBb@ljmf>|y<+_ZM~eAqUbIH5ljG?5;*ndn__l8b+g&zm;cq(HlFpYlJv&^t*-xcTabfDh( z4Q3VydwH_)WPGn!lYTays0|1WUb0WX9u;)ODvkKG{*aD1-U)6<6m9ZQQ)i z%Z`1i4Qni3blPc(Vf0^jIRj^{CZsm&8ag)Uyv7d#SKo*g)KwmBV=de!3p?deGgI!> zV4J109MoxSQ2ap+5L4x+1q`F;gjy2pm9x~AX=eV zmtLqFcSf*%Oia*H#a9z1G{1*lv~F>}w^S!|8cbRjZs?>87WI^Jsa!nB7@Ur;fy2AW zIq`zRw2Wx`ReA>-kn*XuoaraTEAS%Du*CF44T#`w$|bFQHF;j+fjM^KJWnUf%$?%H z1gZhI!i>nbSO(#qXbj#g+RpK%v$!^9)7~Exafmz9och)>}RBT286&v_o&&^%bKNfK-mq5-d+K7|+R(Y=9hJcSv~mvq`v} z7ZW~F_@yDH@JZ{a?5}4qZEQas9$g(l}j@O$j^F(-s80fR1H z5)nxaFw*^lk7l7~>97kBYQu=BZXYdoU*~orCb@s!+_n?uMkGyOvG@8qicSE1#5AE9 zuO_&5GQ}`;dPt-xmEV!Xr21|@-$n!cMR%&kh& zP7u;Vxp99x#-=kzyG_u@L05A~|86}3Aw#-;>M~Lda&-4XG@c=hendZHjouIdg&?3n zCpi#PxfXdS3-<)scJjTvh1x*0)0>gALlnYVH$ATC@uDW#!*5p27Ddey28#GKMd&d! zQ>7vf6gx9j>u%k1evp$FOEj!ljLph1eqskp3y25q zdJ;IboC3>o4doinjZ~kToSh8rCJj$0{vL~`dl>0yN^*;)jJ8+i^Kcp7n#k}P2V$xZ zKQMC>jAM3FqYJWfx?))+NLsN~!-$jJQExJ%xf8xkf`kvriF-P9MHrBzk7wLgZm;(PpR}M@32A)W4%HFI(WxV|&`TT~4v?VS zVpz5cs}>MR6~r8L6@v;Her~AnvM^>#103ct;_nzghLUlD>-;nRC@x*>T-=Z0CO=MK%&TY!Wc$ACz z3qQQQRPiM(63O{Gb)2hTnj81?Sn_?^F@j zK?R)8X*fD zyt>Oo95tsfMw(g-#|9prrlcWR%F&TJIj7=UNUo!ispB}Yd4vO$fNO0iGW)?ksAD&4 zj$evDO@o>-wVKc)db;y!k8gd3;f3I-{``vs6&Nt1zIk}Uew@Rh5GS!2r(FkU;zD*M z0Tt??-=L66V|k8`@I~>HL+2zaJF?oI2yOAmn&}tlev;}D-C%n34~VJ&6m{VK5WkS( z0w{+q1lvwRV>^S0)0%#3K3-(u7T0uvd8M<)tW|CsNF7;%wbuhdkRX z*QBl`X3$1{jbnHDwlOD1%JO4u0;%IL{Y|4?YP2HO)TPBU zH!{~08FcKMk}&mmbk8`00v^?No)}yR*uBCd%+P)0VO@vr<9VutX4C$?HgvaNkVx!4C8urp09kA zoH{)q1R}IPQGlDuG$L)CO3DfizjZA-ld;&WRUr-VCqJ@>+SHF_&QVS@FpE=R9HIj> z2v=Lw8R~tw%F-tLEzZ_d@Qa*0PVqLW@C)%CmgoseyNEIx#CHyV*l$DO)L3)xF582W zea)ozl&%|#)4-Wg3^jnrOH@Sm<&yA<%gOzNp&%qN{NiHLLgGn(Kx+G?tu=JlChd(o zsdkVBPwjer3pG_d=_s@=l_pfKL^9NRvGZSmu?i%JKTWK8M_XS5yS)3~48Iq#+b0>Q+R6AQ55vW_H@l~W0TS0p~gHJ zjf1)xJ+E%(QRC=>TpfTUpInv9l?y>EeQJU{o6Z`!sW}HzIuE@`Vh_dnVsv&a@iDG{ znqSYD$Gdp3))nGhs02Yn4|xyjh{1Xm;NbnM%cSs&uf)r$3Fj%H=N+4-fLAt5;!iV> z?@k78sT5O{$O;KKFVd2$T9vEfs7_7l79xPISVKHTAnVmz^AuHyvr4*KCL&C5e416c z67@5p590RysK{wH`o)LH<0j_#m@pg%fY(4DfKpuMxR1=ZX06$B_XYC9qzJ(ZFi$GR z;Wx=jZfCzkl|$-MXYghuK5}14oJL71LIU-O>p4DffwxwKqDwyi3_`-1@5Rnr(V6&= zXqIlqzoXw@b*QiAh`QHY>s)6`PYcfrp_cZHG3MB@V|WOTg;3M`;XXz&fH@!ig0Y4E z$g840zBSM*MMB0dI8RkG07++l6#Ks66vEDh>uA?7Fnfr+>(Uk(#jt{%&FWHQM3d@u z^LG5gm~lNS@!F+k)D0l=Z#sl^)NSgT!eS4RA>joM7MOwaXYsMp;JCTL)N)MMnY#yITX|Uv3NCra zRXfR+Xk@)c>{9%I9^XpZBmBWC1AH54>kHgdrZ3nFG+L~Cl?WtkhehHu)LP+RBoJd(J1j^aU(g~ep% z>Iv-H)D1rpkSR8zJ2D3+8{Cm~d@B_9DHRhyM~;L{9HtxLRyfU3pK_YhH8ssR+IE75crlUSTg^sLh8m_EV2+UH!VBELR}2Q?bzI z$;i9>t12rdPo`Q>3bY3W0+V``$3TCfeIVLSJa1qmWBKq2Ti=d{mS*phP z%EhAcr!9gy4M%HzAcmdvg!2@vd_ob-lxB@9YGGEwQZ$lus*&2z3e{2`Xaz0jTvDdI-@S}f z;MgO2+M+2hAzl`{N}L}cU0N|Nqgg-}iY;b({zDSf5=}C*NX8lz6&9_!bvsVLh{0WF zvy5HT_FLYO%^xi>f2pg_9QFx;!~tF7(l#-%!D?maMFDB-MJehF02KxgKpj4jM2l}A3YVe4!r*ya)=c^WB2-}}`-V<3Hh9`=Zkd+hY zJ>rZDiY<7aI`c=!t zMa@?F*~-cY-cU=-5{qXx8c>3=*9dgZLtXm}lb>vw;c~n004nXC;693q`HuiDfpr!T~eR;0MXSAn3VP{l}|g2 zYCYvpQBq$kJ|46l?*s%>a~@A)u}uFVyak_F4y?Y%Jc^DvE!v#37ZGHfI_6B{KDC?9 z;+;e_-BHY4surwEVZwpZVs%4u^!ZNoym{;P7sJYq9*Fcb5(96ExgDY_GRfFb&H56m z$oerBP-4tynf(!jv*KH?cAvgTig}p|@DzEu)pFzJ-ICgP5e@r&G--6do}n6l1JF_{+@?Crx|W?U)A-T|i@UEV4PFonEk^}o zP^p#$(Ep2+7k|olPaK6g(=)nscK@o@Jw_jqvM)voD71~{e(w6F^bEP6IKw?K=W7ax z(QJtPK3DIhf}W6q(AHrr6%RWBOmTFWj~PLVqG}IOxk;_2=~ni#@?H?i^Y@W7pLpaG zE*3hRBKETaZ4-sdToKX)l9hjDPU+K%o?uiHUdn^TK}5RCeB$WzRz|X7d55br@q|A- zv)(vDxlx;c3^SOK9mptLVy{PmBae>9ifDIMLXfK8>R^+8t9w^_nmkj}V08_aKz=GN zpy`20Hv`}hfCFii38lgT8Au9NTu=j`L7d8$9%o5Rth%{_W)CTPFcS}$LB0pl;32p} zS$$+NyjGlx)1tQSBj>4=v}22`+Ww8Nl;Rmo&$!Fz!s|o@dE$r+Oh(M6c?AR!sScQ` z^DLKb)j3OCZBhxUp}#4xrnVi`m|A6pH%wUfgBQ}J4ol6@Itc%`QfTIZlkN_2W*4?z zei~w^HW({vi}a{ZBK%l0&Rl{oB{9;MyN3m?8L(gZ*YvS&px;OVJ*_6ZM3ROF0`ya^ z+(5Tl(LGKe9bi9eThS0RYYxE4HX9LcH)L}17mOU_e0ZIl6SQ@WmR?G2 z^)xyeD#<_8qEq*pRFnD<{FqNTk=+sQgbM}uuoloG86SSxC~97 zVvLhpX|_tt3w@u&FgsZz$Sd5#lw#&#`hsv0Qan$9Iime+I({CEQ>f8V7-YQjTii+v?P@;Eyq$E;oLj3fB7s(P_if&ND>BH!wmDt*;TT z{JTThr_M7o2?{iCh9C3iHoczi_~$3YCHRQyqJ`z)818VJw!IGi5R5K#!de9rMbM+uZ?wFzO? zz;+laWVrxd3ibldybV5MTA(T8R^g1&yE{aDFn*XwzKVp?*J>%MwH2&y0Rnj)CD4KN zv|(cS$EqeC4S^R1A%IS=Ri?9bLqV-UM_~7fY&UPh{|kPcu^|6{gRkzLv6|P~JK7j> z1q_XqfXlq3vp6rCaPTXIuX>?rXVk5&$EMB_gK&e-dLF#rqEuW$T3`8`eo&O5JwASB z2VWnf^KZm8B;<{UuuAo?(`-19YJ?`_!9Ybp$}We{A)Inb$X-SeO1oG^i61Dl*G$<& z`iP9{23UXw{#Puj2HM79^HqiM@FB)NyEUxMn^qhr3D!A+d1y?q!S5ZH#t%#^Mc`^v z$M{bq-w0OueHk@_i{5DYgKZkCFRvdNo02tx{Z6O$y`vP|O!ca+eiamF-?ZU^r09J_K`w}sfj(#; zjZzT}i;vpa7Nm?c3~KwhGb50w)Z2_%n^;W+)e52v4N!QlXuKnevp^CVQWMBl=ixNC zrotlMnU7Lq$zKaSSTGN`AS|(L4=2wPVyPkPLJ`r{MTA>?=kA9J2I9O ziAFDUAjM$w>Ig69E2m7Be^3{Mh1V_a?_9!Bpa+8nxD*}oQ=?u(EvmvgA2R?4(;?Ek zs1EqWcpL*SUre-=(rxcX>)J?8Ph6<hUO#EotDP=z+t1`weT&dN+f z=jJ-XU3hB1rjcGA z=4;c3s#SkRO@~g*DIfWvZv>9Zcf_)f2stVc)YGc!4jQTXHzGhOP!MN?kor23!bY3jUQR*@PUv7s;i>@@k+UQQNcH4DOtS%ftcLxo2gW^DmC z!rzYT@kE8vqZcv-?0{(O;T#m0ls!-J^Ep)E@TF2zRv=-4$0~YcZV$0vxH2PHMyJ5# zxr<+Q16cjcnz_j%tBp3c9)p~+sZ1U4%hbT5u@L+^eu8U@@1U8kFR4$e9$1Ly^(cYD zsWCcHGfA?Ep)Hwog7{NCyB2>E*|@bhIy~X+$N8Y8Mg@?JoC000i3P(cvC+z9eTfjx zh(ztr!qE);JeL$pw7#u)d1U7?XO!9zA#lo>^pNvQ{K`4TPIGNyV1EBCrAI;NT|^7h z9jV%lkW)1g0cD8U%XtB0UBLw#9c1D^(%u10r+eKOD`c|&-mCrv!@ZmGz3$6Y=G_M9 z{ft%hM`R>_ND=MqjK=QA`X@Y?{b{0ftQm8Zc)BGt^ai{Q4NPs~%C+fUG;rnU=3CA`%^~H(_xatz|Lr6CvQ#l@2b|hN1wqVL{uoa;l+6%7iikB)@4d z=N)WwAxle!ko=^^oJO|VdsDMt(;w>}N_At;sA10nZY%K)@(SG(JLMmg{lpr+bP{j8 zh>pbOpp86L<#1Fje{uf_Z;O}8Wb*{Taz9?HUK>sy@ zl0dRjY?c_}@Sohg)U{=5#k)&vN_A@z^H7>bkk3Hf}|! z3!9L*+MOw1(gye4(M$l}qji==%!+HxfyC65cDzoUSWR?vCmgb zz1ZKVcxpde-f+~XqAppw-@auCQp|e?C7JHZNPWU&YK3e{^WPW-)4ib3dr|CFzwX=< zhgD4z!~=Z}s=ueBT~oy4r&a0&{w9IfYmqV-24XCL-($6SsgrqhU_G8VA@SvUbsLBW z)MEt@C*U|(CribEsbbZfI(+~I^Vqe)fFSNb+gFF=$NwLLa0)Hz{O#pk))53tLdqQh{1eBBLcMy!J0_0v8DsioGvK1|Tnw-w|IN-sFi}yJ17ApyJ=VS#K>i{ug zSApcGnAoe_klkp{LR$~v6ZuyM zq=B4-e+r%f?_lAXvv3BAERSm;#lpF-Af{k^f(8B|c{#+~@nD^Tgi|so?^|BpeqHN+ zc9G<|y$6=JW44vTd~P4Y0*4=VOiql$Dc{iza^ynKUm(1D^JD-M z;LcLgrD#ik%p%b-=8CikUKyCf{>0qbOH#}sg)jB5i2L|4q8FHL@7YBDT+w`M!DD(y zse?ao*{Up#1NH*b6;TRC6>#gP`I~7sMa^_3!)Ub^qxF9%K~atFkl^Gg|gzz`Pn#zMBx&XSyx&a6NX|!xPUpvgCDw%TNYW zDTytvO{^cK&d^~jSQo~$#l&wglZ9bN8g*{m+(na_M$2-xrOlS$96~uS*2*jGuBm^u zz(&w3GiVOjNY>u=G+Yud+I#AEC3XgtqYTFQ>IhnXLklEwn#OSOjbdL2zmwv&M78b0 z+_~{aYn&}~mfY90>lFm-E_~p*ymrmItbT{6wy%vCB6SVK-^Q|Kpd89_M&`0?hzV7R zTxqHHbBpk%ss@95vK<~9YCKxTnNbVS{(|^vovy{FxNh;KHhgz4ue{QQt%k{e(a zWUFAhyd1Y<)iKNAF>34NfAdjxoX*C621vhlxUBd3Af~3GU?u_eOT**`AD?57v>MMzNigR+Av^RS5b>7;2#oU5<5{cPYA;j&B5IND2T+H8r(o z((&gN`-z8#bwC_w++dN1#(6WOJLc}P0)<#%m~H+I&w{uG1KeVmZK=CMf4&jJR zD5m?9f6S^et#cbu3@ahtCnoyOYrXi6 zo(U*mQ)9H1;fyU6e^`(l(YJ6%Tyi>116D#O%Y9m+hOrWR4^V^$WOljN8`v!QV%OrJ z7pTY8=uhe&)T}*MnLizZJBFbs$7Ke! z`bVSM9{C1)TX_#SxpDIe0Ne>qCYOjb4L#k9cpWTWE|Gx{c@C3z8ZY4 z5(ex8nhXz225j7V(AM{GNVu(P@fU;}?t@Q5ck#Y*!IZx%oi1Ot0*nbOqkhp zs{v+ea1OgP2MqwwjFHp=Z)c1yBKeJgJnmizl9E*taa%qp$*3)33aJoB^lka2y!qt` z)M)=|*Z0G-WcGh8<>ACnDDgHNmbPPMPHa75kC0i40K;L+Zoa_Eh*^Y^#^poONb?Yl zQtEnr4l-rL}j~&(%vMJA6HCcdRdci)4EqfPTNE|RHbL{w?EB7TvzAnF*}9N zG~V$5FoGG=d`6s&Iv?y@#(w+7Y1Boh*4XgVlWo;)uN!>-v~j0YT&su0EQ6&(4+!jR zK1`2E=Y-N&h+JEfsURZSZeZ(Fpw6ovbvRpyG?xCs3$6+}Ec=7Ky$6W->H#aP5c-2W z+IaAE?2?J|5a#vI0>#jSA! zrcW(AA4y(ei+zGe3Dzh6l_IrBuoaYid9Yq+Ndnytr(skJEh}di!8Qgi0LuN8`oKI#SMyN#^WzCHPpTvMm8aApVYf7zr z=d3TCvo1(KO;xdG`~)7Q8*Q}TR*#WzMJuN1ZmP?QFw@y3aw%koirF8abi7N|Ok8DZ zh}s524b3*Ohsmx8cta68r(V;GtuM2b3owwL{K8w>?$~erp{88y?v;caW`p>hR#lI? zwcVtPWNq81CaI;}vA-?I9jLA=9=X!pN#ac(ic#5NgSZP!o%5O;{UXVJnoc6s2|7pr zpw;#BHSJ-1IS@@t%Mfb>P!Z>flx|0|&m+MI^~M9r@40R~c*2!Q)DOPcQt7wD`9 z${E7$u?)mllUZzaGZ`mLvBdp&FJ_4_=-TUJ-nkfDJ6)1!s@}OXz}?GRn2cfqwj zAUSfDrpk$|ntJo-BG__(PwyIbYLvM#^1t9YNxw(>JZJ@vB#+`)lYI_VFyLfB!JSt; z|KnoQX!|N;+B(Z~ZJ?1JUB9fLQJ`^QO6FUvSma>O>+!_z(Gi|fVa#@mAnklI*FPIA zPqXeePp-#)kr$yx;1rSFuz`wj!H0v3Po6$>B#WISYv^> zC}h1IaO2Ly?eiWbU0KKO0K_Y}`}n(>h!kTZ!ELG3fG~qQyJl*XlZQ6KG{Nch(6mm> z)U2_ltQVK;6!2jo%0o<>W=*n`XL%Uq{z@X3#xF8V;hWMaoJk?{ZZ(~jgRX2R-$vO5 zkGQl1K6Q{eW2xnSJiP64`%8%UFjYSAp?wjPke@MVn(UXRoL@$S5^g$%vk4ZdZrWWD zz(cL4LFOs*?l8*%56bj2pfv@)z-zBxu8qb{j|(8=@Wz+5&LIP9sQsq(@C26u+Zt_m zkaJ%{Ey1GQ)@1WXybq?X`~GImzn|Wz(!XRUdFk&ct~T6s&otv)+s&S-9+A$gttv2> z8uM+->%eh>lk?gQOCcYc*z{nJ;$Xe#y#YzI)@@_xnG;6Z_jeo^Lb@bpzRSp!c4Wjt zDomg#B#j|L?-D6RBQnl{@E4BK9W0Rt>)CD2YB|&z4f>V2}1oL-BozL4+vYY%*iZrEJAQ=sl%ZWG8ltO$O zEYei}1kHpZMwgm8jmkS5ydM&?KZF{57-XHM2`r+@M z?LFhKyP0W?UuI6Os$LMC>S#)~8yx6}gyZ@tYqE@({RCwFxi$53*5?vQ4==+fw!q=R z&JV=Kk5q6>JvSVztKNCJ$ALVwvnh5aN?D-!5xiJnARhU-6QkG7e<*!Tdxf(Uvsa8 zrr-o?Z99kf{4hmZ6t7_8xiO>fG{L9AG_G75HvcG7(@M;c0J_P`Bo8D}f4b#Faxa!M zG6k}lw*{>(-(L8NIXDQZ?$j&b&7BfS#GrR5;(8@kJ{d5i--2hahiQ0Pw$ER< zgOn@$O1s8IGOHqvcjYV$+*AD1_}_%H{jL+YP71pGfw|CDz^4LAY=fw;15*`X%(O5k zs!k|6$6VLVAxM2^1WdWcTZrKzt1JvedzpZ`!YNc&Cp7KqiAd%d@;%8u$Xr0A8kA@h z6s>R(sziQu@RBB=O!AUwlcdhH(NFSG;?e)MgBpyQc;2E)dl_X2VG508hEtx&BKG7# z`M}eVr^)^oC{k=+!MC>M(ol|*a4k+e?GCpokKa@@jcIftyWAxgM1MuN#gvQ9Nw@Kqgqe=@AW{R-H77j^3+M_k4*bL!0q@iae z4j1iVHLE;~%1$h~ZFmKona5##N=#-*>N<%vOALReB#U8I(;R|$dFJt8{)R;#90mwj zriIQ?O}jm#heP&(y)^Y5(=v^RlvYx;skU8wG#}kJ! zMXWO=*3!fkI??Hw%C|&|lav+gma9k|UJX)@(=m6&$Kk3fYP*$jix9+T`Yf~gW{nI| zJuo^qzgOU&t;e*8&dsR_REpCz-y7)^UQmpcUCr8Yi_ay&EI>3*Etd$>D{@(7-HO!N z*e1bmJl)S-h-$V3fru zx-|$#waJUUi#!@e8blI&QXKz9UM+?_lz2=q!$QVupJ8-yx_k@80#UFxip-Vie966} zP`<#$)@(oAVrsI;%Dq69PLVdpe;T{2Y4%`I;Ay)n>CRLfhHX*Ao#Sk)5vd6cjte41 zCY%kSiO!WgAFkIkcMidJwuZDYz!X?+VAhW1a>s~4%dO5Pq$<#g3UhJ?>;()UR}BQq z9o_;lh*Fe0X_m2bYs&W%En=r%WUNN9xwH%1AR>JPKFQu0Q$ND=U~}6nthBXJ1C_z# zw@}5Qe7139cr2ECmAsFA7EZKG!7aCI{>9+pk-&=_&uy}}mL4ura!5hLI1n9=1^c2g zu(aH4f|&&$uS*RFVJkeG##vd4Rc4SAls<|~9zv$2$R7uK7I?>SW5RmM%>f3PJO<1* za%1IM1g7@cO21Jug4lp9knj~5N?NjGqrF-B9paXo2&g7k6P&D#zYvmZpC1g7E+kj# zCm|Q4_*gA?OjUq3+pOu(6{sLgxy<`am@gX7NRWVjSeXQ*zSRJdA?N)-EuG}^^4s!@ zy8$8|13OG0P&0SW>idoRyQ8aD6wVr6@3ax*moX(;aJ#M3Wi2MuzC7XF=vA>Xt*sqm zujG4qmNIiKIcK>x-SoafpT!U9vUXT!gSJ?{{Zi%WSOWkfN1c(nc`G)2;`)}LWXA-M z^#L*?otE6r1Hqpn<&58;JaETiaK7?#Z z?KpCc7F>za@OP6K7q1VA)^dBb0KlpiQ~5`ELnF)I^u5I5^EOfY=|+>e5%tUXM3&`Q z5Q&0JCP)wGvPh2?6K*|*GZ#$z#X;^!SRO3yJ>Y`Es&eGEs}|UmWf27isg1s~Y%zp%C(f z2BJeHcuhHTOU5Z!Lo3cfQDvXWV6Y74{JiIe@no6M1hezv% zPX$^$hjEB~c3#iL9^jyCkF*IOJ5vq<5d%<+86)GO6zQ)ntjgp!&f#$z0n+>!>P(iL z*;r-+W2$xGO9mzhNlY1H5;cp=8AV{4{}BpggGe^!ZXsr}Cx(#6h%pESBYo2AjU%wO zTfmm2W9@dE4Z0}4syvd0dQ40Tu9Fro|76$CRM*B)KC7OEj2--~65iU0 zi<~CBDK^JDE<(wyDH%|HWg?KL?lKwZXDantidN^>MPJL7jZ7YKU*dv@jMS#coqatgUS#5i*{q2zJNbnQopc4_}(>Z`ol5 z`$ed)5l5B*h6_WWjkUsq^T=d9Gq-}ck!UU9%kX=d?Ns6cZT71%v)m|%QqQ_ zDqt3Wn2i^G-$IgixC*wF>Mw*V{=w;4u1Gp%)E8D&npo}svx7qE{vtX1(FQTFb@o-) zmKQO_5p}AKo7U9U%=->sVxqI=TVC#aNsLV~$^tk)yHgeed1 zHo`ASJ4y>5W2=4@4Coe5Hc2X8Anv`ay(<9xIAsttmc`nFQTX&XQPL!aZ zQV}#0Q#<__FpaGyqdBd-TUmD^_%K(0H0@{xc2F=l%EJjnZ$3)4-bm5RX>ynRuU5^n zY!fMNHC0Ab^X?v}Cu4}Mt;iv<%YvxBgU)Xmtr5j}^m}aD6m2Z0Mc2*WJj??6;AaSK z4ylK=?6qh*)3Go%a<9^{8x(|deze1v0-I}*Q!tmH@e72sIMkN+QVhM1>7!6PWQeg? zTWF?ay#hP1HP$n2jG3Q`nxX2bIemf21)=B%1l6;WjE zlo-xH1Px!qNIgZ>i(aGeaH4OF3e`OEhrJM|6OAbjF=NxVGeO4~>*DmM(nk9kz%{p@ zzDGFa$$|}l11=n5dT)U>l0U6ia0k0r^7u1uc5+4M~2szY|H0L@A< zj}TuAr`-Q1YnbX1M(bK#0>qgixloQsEFeNiyfKwWttj_q@moSaKB*E)^fw~DEWp%B z>8zHPLXC1LW4#QyR7}k=PIsn+Wm1ds6jqUgbe({(NO@Z7wA}fUk>1%wcYDMz_5XtR z(rQf-+=er8vQ&coG{>#@M(%155xWu^8ceVKuJx`Ebi3c6>?BDNP)4A`QB1bs+^84# z;XG7H#GaQnfigSm399)wsW=J�>s$fAAF!k{hM$MacCk`Oz0)<@7x12u^Et0oTs+ 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%0A%LgFYizV5iJIm_+{8MR#+iL4upr5x4Y< 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 &UWg)XwR8xr5$=F)1vx zeW7%T2Q${~xPIGOrZn2?ny-KPa}Rk>fX)H`kKXIQ=6Lf%vSrL{m7plzNNBT$uGr4v z*7lRvLgB#T6gZz!*Ghs~7k@4mu5tTEc@&6p#?zvHtH>~!M6ZNjCPUB7cJ1gorHXpkEG3M5I4O}^#Z~8VOaSDNQoXb(?rC~C&u$W*- z43p8^UOf>w(s=p-K6TAtc``r57Edivk|^tyngdGuTaTQx*aa}1phvH@&=8eAh`LbCtwm7fm}|Z z9$-X5bBIPr>Yn?MksQtk5;;Q3a*uW%o(ZlLu@Cv-u7Vsmmq}(QAG@6VY+O-puH@nV zSD1JvH$&GGshV6<#oV-pzi?%Q=Le49xJ^h)?h!xkcQs2tU7LUrMj>lsvGPhDLSj9v;vQ#z#IoFUP;>UmF$(N{r_(CVU?WQ@34jeRx{!sM!7Ok{8q>Q9B3SP;@<}F>~lP-4_LN(wtSkL z_4=28l&qXM*gu}X$Ekng*G+&CkiabR9Q*hZuGl#pJWp|r0ujbE;Pl-ooGBc3*QQ7- z9mzE}B`SJyKY^J|;vRg@z5r(*b2_Y=RU-L8k&+-By62ioj*By2Tkm{<+Ou#MT$d>o zq^#D22CYV`sb+0Gmy>U#`dg{iVreNhRTsoA^fFeo_JeJ78|J851ox)12wOWa3S9*> z8DDHwKyY0v>-~n!s8E$IhshY14^>*YwCN zwLs9{dpEtI?b#wYe^gO=h)qC8gp+qnlTx7lYW8#^k)|=N=C{(8WOH~-ytD}E$?T`Nn)<6AIEX3Ggwt7CX0kp~k&2#hyO)ZZt1RcTX zRPs9MpSWyD8S(G%Tii{dCx2TB;^^)+kih8@Q2JO?A)-%2Uk(%H{|u~lasV!_Q0l5= z^~=vc=)vVoc}7Xv|L@-U??wCVy81Na2NSu^hKWqULmEYv48#&fVQ(MFhaZ9?sGCeDF9>ES*MJyrU$g7>Js_N2Y7(EOtAsrv!x%HeNO1 zQ1z`LmgN8*a4tReV3jszgJat~2h@PN(HvxgERD{A_&5;-3uECB4`M_@!wLV8k>AOZ z$X@N+fv4n0NcK=B)+HH%>{7%I)(&cUqgPw?$yTib&b^gf-6s-s6Pht^8&=cWDc(~+ zUE6$|5MZS*L>fk+up`U3m=DiYq)!%dhFX3JL-(!dN3>2>%c+;BA3i>pQ=ds9~IQ&P%_TPFcMJ3;&U5U_H;dZP@};a*m?kTu`eD>H z`aWK8C`^VT-CDc!U;UT;6F>9FrxKzQy3HNSy({AKMACqLg2CB-PPhVt0jJzcZ4F(Q zC#W0(0wx7R!^))A!i@IihW^z&v_(N2h5a0Nqx>=O|MbSOKYTzakfEO?0hsj{98k%| zQhFWqU(yThyff1(4uewQnTnYJA^UEOsU3l-F!m_T#T58AMHin=CdMbD^F9u%(zfVX zOX7PFroKFzUDO~X(_dphGL??dl(eaBT+Z&Wp`b=qmLSw|69;!$vRCdS4)+eEJxE=k zs6Vz5$DCKhGOjBJm9NurjcM_hevSNQBY|Psggkq#gN=yL&A)dvlWSBaD-6w$y2l`P zmuo_XJm|J9o!SDQ{0v`2LC!q6J*ph--1G=>|OZ4R<5whk00$RYD+LE=kIM)^&q`t zmgjCO?zJ{SRhOi|DXuXIr!aN1mmK420H|5o)~y_p@jT=EOo?ZYzs+wE1@MY_2e~U; zkfpc(yZ@qp3PbR^G1$kFd-yeAPEiG7`;<|zhw0nL;d(4yU7=1g;vXbVn-?<cFh^7O{>rFi_41&5TdjeBE0f8AUBN!lDD zPcc^C2ZI`D>8=dHD_f7OBb-mCo*nYvK$hlM)y8ZiTAF?mfv1nL124aOw@lT-QDP02 zt46tV7U*a3Yc^H+Ogjy?8Z6*E5F&)MzCfYGY#tEDYvy$DpDR7mcEy=WA&P6EORa!7 zEG9N#K2?0C;%HVk<`TB?WG+c@k?(G6CV-eo0e5|MkWk86QfI@QGj589_)M1ILKKYX zuZaU1m>mP@KO;LK2Ic5aAtI9SWreSn+S=zF)NUa%L2eAlg_yNUZGynJSUpo>YG_?j zV#(Ze9|td@0jmepalU%4GYiylJl<1Z-B?{GLOEU0t4K?+fTp)+MyaHXOY9fa7BNUL;v>A z8sMouCS5|g^ct<`sdpk4$DVYc(gK#oznxgX**^^6iSV3ZyWBWEnxw-Hd<21;yC<3j z)jDuGCII1|0vO0gQF_@`512fT zdvcxigfi^XW5=5Mw31c3($UUvuRG?_Pdp2c zAO{F)pFU0T#Xn4?kGw~BGp|sMZHOp#j5{D)bWFGU9;q`v@{m!R;XZ^zM~quq0fvt- z01+t%vYqBnfwn&|T+W|6g)9t5n7T{QZ+{&OIAPB|Llszq5PGazN@5DQw)4o4lb6-79H8TWo+F5g%{MeF} zc@(WiT88^E3Mx6T(n6szyUy_D7TUyGdoDH#2 zwd08x#LwoGHEwIr*&YrV_sN}rBs^qNiMO(84QtaBky4^jyUUp5SDqFQ= zbd|sw&{<@~uIaM1E&43Gugk-gvjzzx#WLf>VrN>K8yFj7r6f*lWRPIw4uM>g346+H z8bgH4M-!x|^HZhk(#cS!j=OX&9g0{-6F` z|N7eMt*&-p^#H@*^JT{8uF$yT#wP#$Z1vo&FMj>=pI-Ul_kZx?Pmce~FaLdc8xnjJ zFl49Y$zo1RS{jthkpo7sFJ*K39@F6fiPLb5{wE=lE=1dzvYGO{eoI6a5)1x288| zP!sI4l*N%2Gin~hH74kJ-VZtN_C7hpJHbKP02+-pYnQf{p3NGf8Yn?!LCiE5$&yyF zAOr=;K~tEOs)vQi1z{U3vPiHy?{ne&vl>Jzz!b0qXw({=R~t;U0rhRv&rV_s{K=uk zrpFncHziF_)G)04AVI{mgSdpZYY9Rd_qe$HgTM5dVeCOZ>>vLZe29doH^bSK+#$j{ zIh-1NS%+H}flE31`O+t4IC**5VB%c$aYDp&<$Tyu>O9x}?I#Uf0j=Ku=U*=;^i!$n)-&VY9IY^k;723LQxbGtRtc*xK+M#^@rQ1{ zBrAC-qNP2|^qD+^r_o{zcv2yx$*FR2>8>nlRIXeMsJ)fTf9+d7821H4YCJiaKO<%o z$`Ryn=S&b3t%&^z?)Wb3g@1FdGaB-X32or1_He#yDeQFR>}Nlq3&4ny`b2)sdzZi1 zqh2~%Y3=#lc4e59+o0g&B#9Xe^!eibA+V{E3#ipaYi;bn^NUT#XZpXY*Ew&F#)(f7 zIu1y`A{Nm)gjAwY1yGfKWcK-7Aw3SB@(Njl;7>{RGQWcO&K-V)NWi=6gpz|2T0CH= zURetFpX72FqLFbG_}1E)^fJgiBqgCam`N~#g)~K!l@b46w%&xjs`J>^T>=57v(xOe@40{A{)lMVY3$?#+dzVile4p( z#7(kykO0vb(+m7p?>#5BY1B8Xo9n#qsBa3qpZhE=NeGa%=KQK^)TmKaZrHd()!DB6 zR%4`RiUVbi?PV~8&Tt@eXx8-40G_fN!u1(dZm8VNA#B?ZetKvdBH4uQhlrzFxUq9xT;Y8$NW1|~Jns2RcxBHs^Eiu1qu z$@fbmPQ5m;Pr&$Ol}KSNU{-Lp(qkd5e1DyL;Qeqhry3p61&|GI*RO3mws7^cb9@_( zsMMoJhQD8~LTRW!BDq1~(hR!XNY0(k@OAD*0+B5Ql1oxc@T&u!a;&4D9ktY~R&+og z@!4Pf{YI9a0_gBxCbSm!8LyHiJN(JCm7Kk7xp;io;#y8}UD;C|?S)n6;<$UB$s(Lj zWpIMqO0rv(bg#tFP)e&Y7$Q?t!IddC=`<#=MIa>zYegK$8QmS8bN z*{E4WrdCMhxK~m9Cym#F260*~hK)?R9m)`X62=v-f~Fhm$=0Rqwwc~MMP8OST-UQ! zcyOt^9P2Snz)eAlF~n1|>-JsRST?=ox*4qj!`sWA-NY-Lp2cW~-`6Gx6-RDR49leO z^?-?zyhhcrTS=^&*y^D1szA&(5-jmG`$ZoBpW4ipDmplWxT18jYyo?{-V4^!swH zprt8halD}>4P^Q=Tg(oAcJ|yAEW^}1$#q#qdfGVFQ!=qs?pqZC+c>OBbG7@13?M*O6<);;0U>b~o>I=N$A5nFtQRXu1*Qmhh``i^?kye(!%fEsK)a-0Y6PcF|+(Zoo1!grdYZv$7$kU?lHZJN8a7D%Mus`bKysNlvuf&La4+@ zItKJqdnu99(_N!+9b-QtCSWX_Y9c+K*Vt7Sj9?pX3Ia`e=6Ro`SV%EyBny>>nrFm^ zQcR1OM#PKs;o~`pKNOzDbeM=EH(GXm>*hZ$zF3l6#X}P~IzA#NUa43k;B#8D@Kr22s}&11pz-AwY~UoQNEYk@h6Hh|UQbgFV((4L&#&R0aKQhin^jL$wvye*WnSO{kl`G(O$8OJu! zgSo3ZnA}%m3G_N3AU&DzCLDu<$d}AM&?4{OB(*Az?C3bQucA|-}hLvDZ*ok&b?+ll4Ct1evW+&BMrk!+@o6Y@MiWZuC|HOIX>EXae~O4Cu)sAr~}}r(Yc-$MfFZ0Xub4?j~e%-Bbx^AqBi4pY9nVw0|5nr z1(YTp^_A+z%c`mx&og$->Z@SWNkd@$8XuEEX>n+Y6YGUtv0A+!=?9v-#z3 zT~|Hl948s?mX2y9_S2Aem&%BG@h!9)+%WGCma>ltkXa0e7ZCpO)?H-=G|$P^lhM?1Jk|rQW`-~ALIa3qW+Li+BywMFO zx9AzEP(k(_^e2>wbHvpsR|2XwZk^E}c;qc&CL6qO(solCGV_a*+^@V<&$5D!msu%P z(~Kt9+vti81EH9zAF`@M`vN9no7uSfe#~ziW~7CbVj;h+>}=+-_X9Ec1C58+$(Y=` z#2Zz*Yv~1jXR2SgYN=QUPU&NqW+kCf?_^{FwK%0Vb-0XTzuGOmNi>Te&bIC`@}p-- zDNti1zs3?$wtfMQq9$#n+P)e#+5)H|QPK>s8;}+PC%#>D4v878LP6iJ?~;}F`ri2b z{LiOL;4U!AWU z`OtVVA2L3rr6l=g`P!T~@+ZC61_6Ukk=TR=5u0GlZrQ{Mtz>oe%DWrHi#g8|OTYZ< zzyAiPHD9uY;ea6WtIPi&V)PyR{|);V$K$jK-bsv2-lk~ctzRb`i&Y=nz$C-Q@N)#jd+~q1uvQF7ll?YdwJieSwTnl znfV2mdO{UD!}PZJrdoj2iHsb^4AYN8PSGe@LYp)^cAN1Dcd!F%d9UV^WtyQ9?>4hu zR-v|6+->W3E#}G9G5ahKv~#&bk=yxj&!Ca;+veCCHAX}Xr?N;4D$VhMm9RLRXkpJ( zUyD`bG^Ku*si~5UCLQ~a&jPGuqIgrXq`G_0fY3cTW}e|EN?cR3c(S&QeH=vX6ulEr z?7t_M*8)8>z(1ou+71esC<`1(yLe;e(+j`aTN=D`{M^T1E?>Fw5n+Q9ubJ?CQ)kcP z4|;bDE8`K2HpCH$@ghr(-1t4_H60$||B;srFYI4kSh+e|`3X|ibNp|hq16@^J#peY0Gj;L*9 zOROHPpS55kzuQqNNzWa=&-SgxF5>J2G=61!m-ti>d%osb#UxjVOsM z02XDkrs!(ytv5Ruis|rnbDEEEnp-bt&2{W*E|-HaDveOVRM!n8+;0xj(O3?0oSLKZ zT>mh;A?gx%8M}A;MBV8|(kZ-=qeLHQXHe_k+%8d8HK$|@MpE@j;>y@4D0k(vbSznA zEdaCrCwZk>HWxtT^&Rd*UoxQE&8R{|(RxNDE}H?j2+KSvgQVIA{K8&l87aj*EX{sO ze;7~=xX4OD(SRfEt^bj*;1BVQs$xx8d|Le2cX_X-lvHIq$w?n*fMAWxweDf083DRd z1Hl^8NG+Y9;5{!!1Q4p^=389Pl`lX0(4=Omoe+k)*LeVzD-n0>K)d%(!#(VIvGBe;LM8u-9b9&WmWR_8%Uo zG~~a$)woB!p_ZA6ll`4n7bixmfF$KLS9cO0yTjR;B0o3u$aZBZcJlm*l|pe^EXnl{ z87}3PxP9VJbcN2vS3pn-%Wz!Q_4>IOqeFArPhrG{=!!vBMW7U6(PKEO3A@!3F&F}o z*JpHHf^1vMG|^+3Bvz}GmMz?U2Z8gdu$FZ$U>bED;RgPqGmHyrt+1mXlzAX|X7*Pb zNo)eYPdZ{yuC!!~oiHA~;Fq9)!Osr~Gi_87m(X&kjThOtTZ z(H3f%h_q@T4HV??4v=Il9)_VI%wV(c56{5=EN=tN~MW;2;3N*lV zH!skYOI39o=GpSX%10bK4y~Dm$c)^3`1W#%7le=2mFlV{GVU^$F*zYelEMVar_b~2==E2*MZ*o zNt($qzPS1y!)>F^5+;IibXTU!N0(QwuFS5^+3jifM-@7CfV%Z5J?K+Tcox$L&u~E) zL^8p$3E!K+kj*0n6Tm!6_n`8fD~H9X3(b zGN;BJG-zgj@s=d888PpzDQFee7*Y{&@Txsmt@DC%cESqw@GMlXTJa4slMKf*hXjr7 zCw>TEyBlv*Bmt-zOD4sZTsM~Mb0A3uY!7O)0B+xU*5^f-L^Ra=5;m4<6NU~}9{G!Q z87b;-92%mUOiLRB_p8*t!(N0!j3Ij^z6 zkxJ`{ETp%YppPEDz@2FrGBOQ}g$l0X`F!m((Zdjuw@HeFYipZ^l2ia&#u7VO?-QAs zkPWH2hyy$x`d|i%c9|APnQLMQ*F0vZ{P6W88z(r+D;COU9$QR9E{mcBhk4<5ME3Em zh)m*coNLIwr|1w95<33nWH>m#yV7B2pN@tg?La^@VE~ z#9L}he8d=dmo5a^VfSFKe#n^1kX*m`;>wk7`RJA9Wx~@@dP5-Dkm_AzTiKbKw$7xxTAMvsjugD-){$xbiwx}Xtt1LgC6Gz}%q$bm)lHdWzZZa%e zi}8d22A&g4#wg)lHNr)@Btm8rOkZpUsF;yssWOo|v(Wom^5G4uxy5!c853LkzwJxX^$9JK>PV+SMX{&TE>yYq7u93IICxw z7l|WrmZH3();3?6FE9M(J7ub8wOVXfqvMq9+<0FY?47x z$-;U@kNaUcQp2*zrWUJgtM8IA!SigYU(u9i^~q`$-65?@7Ze*(R~eq4e2Ic&nxNvV zdXAamOJAF}Ji7U6yRezrZXc#3n-w#wZGPEjI=|O^P)Ujy?}HW9 zL?DKS>agM!DZnVYmQ&7bzp%;x0&b41raB64R@=Spt!tslC`HCfZX=OAeSD&iO!j|A z^}D8ErIMVk;?Z30Kr<@!%7AL+k*8~w>|k?k98_?7$IYgnL3zLVPSxcL#?7xSa{8`b zova-FhyyOnnqf4>kWqU4D+f4W>Lxhgt++p}Mzi5D8NQ)m42S1emOF79!EU;Y_#MkL z#1$qiIzhrMMH(eDsr~RD|8{jsuo+w%A%zKhaH#{XtEx}5V#R9IZXBtZ>y-B)gGx_Esf5O*pDT<{sxhOKXfsHq?soDkhcvi1FxIsBDMoWpM?g zn*T>OsRWD;b1+_uMQNnPFimCG`<#c&=dh*MX_>{n&CoFWYp1I3u*b|kN%u&br%>d` zv3m6k#l?5DCPJ&2(r!TAs%X`)*qty1`Z=u#JDOH^Eg(bZWv*G7CSM3xz`}O8w-)-< z3bQ^n&4rU}=B|JwLX()DwC!G)gF$Gv=Hx#KX`lSHWlY{D8G1UZT`kmT0uHVEoA*{< z3EU8Ou{R$p##wB0%{*vM+CpMa@G(eK4xg;$6kqux9<8zwgTK8}ZqZ@%LUGUrs_F2@ z#GM2%Vi=F*E6ZO_V?#!9-Vc*g?&2 zAl(1A=Sz#f_}i6b@ZMl$dR0r(pQh)O-^#=qnhHX+czEd|VqM9Jy^(&@p4wJ|W2TNCMS)87d4?oFl;1&nzrg zT-)APr$wD9|MTHlep#tCC-ICOw9m^*11>M^pWz;5*X&6f1AOQ31|cbJI2_kb?lKk~ z)TkQJ72`n`sHM;39Zzmfu;^|6a4SJ3F^4)mw{VA8!=jcXLUx(do>ffcV9n)49hs19 zfttvOZxD9v+vU1IoZN5@_rW>Qf@!63OOuhdp&gDG%VMLo{=? zO^1jPml52DoUV8yam<-C^&mE|ds=G2FWs0_1f^QkaG|7}cVA41~D zXAld9IUW-X1!DoIsWLV(?vw+5yp`%EL1waiTr5eu@KHM@r3PR;!bX>2q-RQjL-S2s zWTldfWaoJ(lYx*5``W00CChGRvlP}B6Cw8eC3oOrb)uUlB@hxDj>aG{Z}&1e$F z9U~}Jm~?X$`GsP8oPWJto&Q5Qg&HG-e*wQUKv+Os*Mwo_HI{O4DC3MAH^bsMSnTg? zMNAS_lmP?M3({tzWU?kSFb&OP zvB9sw+DnXM`sCPCRAb1>QtgzSrp|*kO-Yn{yD)w6hGe5DDhk|*tyJbP^Of%En(VKq3aw-Z;B$no~H<`kXE0jvhAy^%J%vk7O{H@~$5$moEc&7i_ zjHTIz@V_KW+zA4>g)+`K9;rGR#&I}R=4?wm1ZSHO29!;3KaA-EX$3Kua|DWK#!g}= z6Yk{r!H>PO^`;s6Csu=DBqxiWkX+j>kxa0AaBn~DiZsSR(q{B0h&ZFa7#z~I zx%*990rV?|xMd8dimp^}HkDO2(Q#(CwI&npj`f?}ezRoQ0d-|%JLAkS-^64bMEdDoPR$&~)IgtHz6Ng*GQHxRtGcX`?-LWLJ%lvG5 zHl&9BOERMb*eu-UTCy1|;$tj8ge4j?zzi-!7vQG!cFYyyc#DZHX&2Kx7naUX$ov_5 zzRVIAElbi4Au)f8LGhW-C~{_eKlr=h=Tj6m-StyOmOQRqm|;qkVlbuc>eQ1c;&=Oa zJ;XCv()21b%&%UvecORIuWFrPtx}E7@#e_$b{Jm9aY~b<|2QqNX&5$lfn-@uD7I`f zE)f&nuD%5*OZ4@yP?)4?+b{Ww2bke8gUP2r^BQ#4r86na&W60?;%TOzQlM$`DHgmKT1-e~T$qY&x;@i}x@8&p%%J4YYQwt1$vpc`j3p z2}~m_0n=JgTBNKaC^r(#Zl2X>%W_R+CvTBM>_A#N1iglOD2q)c=8Pgd{hr3AzQUb-AcJG`GPaUk}E6HT& z04WBcXEA^r0jpEn!#ScIC9lIMYHZTfrX96d3T!jth|;8NRG}I z1g*7bWW)vl^cu$V`+#c!-2IK#Dp@Q*6E!n~7mn8srYXggI?~Q)!5&_20GsZwj{-?{w$jq-S|7DDw`Sls& zh~EDA?~nm}eeo~vgX9coKQ%D*An`Yhy93Kz-Mx1Ff?r%3A_4lnmg(Lga~DgSk#OE% z+wzffTFMkVYm2Zr4UiMGsNoQ+XIK6VUuABNud?QUJW*ZY|0dv=D2%a;6Ydos<$F{<4~4pjSBxwOfc!P?AvANjD5bm8F`K zQr=~Lp~N_W=6jV-*u=|d>T&Bf(<@I4!AvD5N7rV_ZNW2HdNN6}{QjaiVAuO%qCdIu zBW*=S*X_TU*;UEdby zY?_(3D%8{s1bdaBhP#OL60JWqnYr2kK4yGS>jP^a`iN2RY%}m|4n$)LmtlmrZtWCP z8QX)bsS=&pebHy7IpAcabZ$ZJHu*-OM?uH~8+X^eS*&m*0XZ-xZ z@(B#!Bai(UlW3>^SAT6-?aJ}xE1&pPdjzl%Om4Px>`UbYkPZ9SPF;vy-b5k8)ECv+fucXAd*M!@g~Q^H>I27FmpV_5xny>c!_bRR&kShBJ;7pYe!+ zyux6rm|Lf|4U=057^X3^v`IFpzj4F%`krjthK#}?X}$|IWs{yQ@~1l;Hj==AC?Tp>?z|*pQNbVaL>zX(4mwel%`4-;tfgLN=BDH6@Lyg8m8>LTYTg z(QTTE<$Gbbw_^xBo~o3DHcCi~jG ziLiaw{5WJ*?=Ey|244^jxauB%V2`)1Ns+0zJ4R2}&ylSBp16FR>luezgv}Q*>t90Bfq#GVD zP=!Tosf5G^_Brp9;nDLctS_Qw`TN`J!()H8lwze_%Q(;3H*ud2->Q(X^g*~@091E% za&7VIdBVqbLWE;}lWL4Ai_iYKgolpspb;FiCJMiHOLFQ_tUA1k#KNu?5iS&-241!lCkgrmYn6DgZz^t)zynVD8g zz^J(sFm$ilinVv@kay82JHR{Y%hnC{!!F8wu9A*wz!1~4OW;g!HdLrE5WiB!Ks=&0Xa!<9l;zrKTp{{ zOfpr;mXVXfn9*Rgm1kr$jV)p1a9qj~nGh2eKNke)-ACjOn8JY)`@Lof8$^P=|B$-txH=}^1)tyHke;;aB4P{mB^e(HUP^;{x0GhSKahoyW0yMcQ1wkx^Yn-$-TH6aW zT#+_liMmNGHIVm>6pj~*$dU$8FUD3mhEg7XYw0Q{UKwRrjDSzl2O@Zh@+Wagfwu*5 z-QB@$ljj}b*5*{#%^)1DV!u~DafO}$X|{GiQvFJaKTDN;6Eo`L8v576lpNPN-LVVo#IXTdb1TNILTaXIkSLZBfzPXAd!ZspIPdz1iK9 z9D4fISx$L5`kePx=h)Zf^Jb|~fA7cb5a?zKKJ9rdnn9L{ddI#;pHXx<_zLZJTf>*T zmukoj3AAUvXkZmC2$VVU;ULHn(&@Fs32z-~ z?Ald3PY%^rOP4_Sg4hE-rja{9f8n=r@N;Cu#%N`UdOX3i?X)#BnxF|KHZAcl$K1kC z#t(DBXhrDf&)_cb8ks~_m2mUrSz8f-qt9X#oxN^HhwrKPX%`-HJ$4rOh)|@NxY;e|LZlkS4%36+4RuRIx&)X9`c$GS0btpz=?$PBebuRW$?i z*@+C#|DPdT2J`%8cbN>A#}`$EfGJuUzVkN-QZiiS__%m8fO&KA%!MLczY#ZI#RTZ^ zg80US=IRGGP6_jg`gleUjt7eq=#rXbO|4|$<)V}$s^1`8DjmEZi-I$DD$)(nkYRM# zK_peU0WE1xBFw1pJiJMRhc9Usp=9AO(hhIWahK|d0-p_Y>GDRFiVN(=%SFHn2;0G5 zy1Z%5SwEf%h?D!^tOIR;^$K%2cj-$6-FL}=9l+@N0zpXTD}i*jn*65k@2y=nx_Xn| zYDnB8^_5=+=dUuZ8c4`tw>X!9W@%qDg>${I6Ij$;)sL`*F;g4Tl5R}Eyxh|EI;Vbi z=h@dablzE`y8Hc@+n)S<=7F(J~h^XCzq_lni{!5SzB!VZsU+XEIZRsGC8z(f`MR*W>-$39|RNgK#Jxh;wTF#-2)cJb1A>t(*OT<1RZY)bF005!!g*^I=K{ zV%ZFqqMi`5vT-E!>*O<{$=>1XZ?6qLZ?)&W;UY)fxdJ;(VL&ffxPI{aO++E*_CPf# zZNJzGPx^&PeH>ddz?`^o4}+>{qMftf-nv;DpmTCzNlH<_41u>X_pu5#Dg< zCO8Y*nqn zXb*s?aqAmgYKA#9tUkMWhRZ9@#Ty?z$tYl?-Z;;L3{CVPXP)S+dd-xiIrt}$fjM)W z<=y@a>mh2OFM4x|W0)TOP+DDesVg=wvAl4d$b{|AlbXbz3*JUK-SRnZ9B?6A%I}!H zcOxyfjpwWab0!vt4d}RvI~@2VOj5~%w5vP8sSv$x#vwr76THwP7LgSPk-C|R&fUkS z3*hjcH@TgZ2WZ>y(Ch3aJW*|g$l*)){@&Sd;OLJE?KK0xxR?JXR-zrmgF#M52%^FI zF4|x&K)HH5GYFoJEJi{>4UOYJSlS*QX>Oj*b|*RXhyP<8{k~vlw!C=7G7~_#V%0O!Yr%0%Ja7D;)R8vRW%1tFVb0qsn4E z#+g&?LC#bz{~p6l7#AnYY0EWJ0y!ycR8A7>QDWAC$i{?l-1#n4Xg#L z+3m@zQHHljVud8#t#z&nWO5cVD~F7FyydQJe83h)t3MXQ)SI<1|HMVZ7-}DrmY~9R z3+krrAZT+#Ers!@tq3Cd5mpePUq2T3>pP4N&B!}IFfAvVL(n|~BGb(@PZC?kFemB9 zVc59r2icsF+f;$kKxv>OX;`Svy$7fDH05p{JXja#=aHR3fjTn%yp=3%z=B|%GytZw z7UCS4Olo84knPJ}YvB7rH<-k0?9SSb)8kC`^n!{yPjGKea{XZtrP~hf2-5**LKKhIQTv-`iJ(W}#G{eE4ssz{Fcg(iZ zjUDvNB^|i_nY+g+KX%S4aeRH>?TTKLnBM>mV=eBh7fSY8@}g{`f}H`%ke<6!Ts||M zN4acmA3+Ve@|c6=CI4&QmDIjZYg+Tx7#<(bEvf|^)kb0ACey7P1a~+D4ypIOV4GBb z6@k`iuia#h?Po-206hWVjhrvufgjetI@!YsDND*-IhB>a+S^_3d)_*ZOyhTSK+eqN zAfhnNc&(dp(pwQ^gC8KA$-~p$h4zNW zuUgAi3(nj@wXM3ZopN4$0cWpL4-mxhmBf+M*Wq*eIsetQ7hf-3qg-O=32o!jm}d*_ z^oXZ>`V!Ry5#q5SgdcLoNP`LTTJT`$pU6!yb7H9sdcDEt!u5k@4BVd343jM6c+K(u z`}%P3=e=cY;ezVcw*ql|_byFG@Hn%pZ*smp{M@c6rg)+yjyqw zQi6c(t>}hs?zaXA!+?Qibo)mQ*jM#HerXi4Y1USRv=|k9gb*+J`K0pnr0Scrh zJSGN`LAg{Kkx8{BwvLdT;XqRPwXbzEk$_-eB(Ut|sJAMjIHqr&F}a3i6|5$|^z1+9 z*3RKBDux@&^?200hy&?}SYu1PaiDO2uT|wE+3k-w|H1lsuQALT`k`MBNL=Z)We53) zES}=(c!5uGCB1|kz|WJ{hS3+xTn6&ju*%nA|6ehH5B7jP3x9tnV-Y?4)8XLP-O7TP zXA0(d>)QEV8C3RB=zk~oHH0Sja$qg@98#s~qLa-W$abQ02+a(v5PfF~1tCE)e!}r? z#VnkMnszUa-Xh{e+=+i%7g0jL)DF~6ns$yL006S7PLn8-$9~iap&$ib(T@zz-u*K@ z=1H=<&Sjf5|2U_fWhqNJ5be%2j)pvd#mwP1Wx`E)EoH&zBpmpH+($Mql~9dSXGQ`( zXqJH?`Wu>eKtcVSqBbj+H2=Vmerd50+S!Y8Q3SpSVrcoFA^D=P77h(PtlozbCQPeGB_pyBE;k zdb3e#gXqKBZ}e5Is%RlYeJUIxLwLGfRWAM`Mc~Ij6)h-54$&zZ!t{lT4C&^&9t-UM z{7~b-+L-u~$!k<6ULQT_k(K}WIY#j5K1MM3@Q~#HaHautfcTT~|B?H2;QsmWNEptY zhKPvo1ob$6`F{0!+)GbC_usOnNhG%d56rKcOw~YY<(4Y0Krx=d2@(e~`To(lAZkXG z@7jmhl-QU}DtXq{D+b8$GlrtXOaLQehAZJc4h*&$f2LH_HlK(i0sNUDv&;D? zZGYQUEWe2$fZunI!_*5!gS2@EuTP6ff97A@wvsYSr$R>7QnRv;#8EaQ+lLfd0xh#^#xiegxduvrw2V#dR`{C%zP+>y5{sRsA+nh9^^C&%#q+P!m`i8k~A? zmJ~M!o$zhyPEiit?RLr{5@gKe0`sHdVH^=&qcpaqU69$aC3Cbqc%Ogri@zPfQ z^lTefcEmJ1rq#=(dS$=%>k;me?BLup@TT~Bbe@`}qDr2eX`g@$H^q?E)}V8PC6_bU zzJ~v3&nZtG()5#PplxS!Zf!-%+IFHa(sDR-~Pr zaDEkJ5;g3=1MY~Faf)pCx6(aJT6)^oL)I$ZD;A5A9ix0nU?&)VM%!?xy?8nV#ZNv- zUR&yl@0>lXaRLod0_#2GX~eX#<^E0IP8IykL?a@UnOjl@6!Q<2|@6U1?05*YFFO zo8y#b9nL|0iVq*XB(?qX2r0tg@&V9)e|Y>0F}wukbPQwWKPYUyFdm#_(5EEL+mkiSSc=v<*8Tl8)XR8wr#-RvPKN$ zk!GedPNtESv=F9de%PzbATz972I2*NYZ8>gpe7Yey(W`;|8<&U(ju?Y=4BHZL|zlB zQqAy~gXPl8(BO{lw=fF5SZhPF*%w28b-cM4qX_(8waIv@A+yAGsY0on>N0{x&4}tV zSJ1MUs)3cXv!?sTt&zJf4OZmiZ-bmV#3dMNo?*;6*mqu7d@6|Ifd+^{%`{$?OkIhA zGXCyxh(C$Uyp5XmShwbWefKjiYkam+1EER=XH`#G4aPq}IwCZ2)W8ieLGaif28)C6>S=a8}F6XXi z%${0~;+PW~S%Ko?;1aG@H84#3tF;}NE>!O!`X&dTVNJxX8c{;F+A>#J8=*Q53HGKY zoFw={x|Nv!CC&@cXWY7ibuvVW%rOdu#`jn$6xH8 zt87f}8Ovg3bfV?1fAjcHarw?aaE>pXMi{`N9-oeuMg09ge)W8K{GH!k`oram?>!sR zCPq1y;r$nerRVhcpWy6Y0)DC`X_HJWP;u~&oTHhOV_)+ZZr-F-P)DWk2Ba=|=mC{f zCzDrgT#fh2OC@OXVX(H|HmDI7tgiy zqxiUKlbutbVs#N&sTk&1c zE|q1kypgq37&42{Qss@h<7{L`W|mX${4p|C4!c=ZiI5TCnBiQ{-IB9U>+y9DdnQ(d zs(~5`N5c<)k)EzdEWg^h^X6;JCE&*XmAo>J^rp_=sZcd*oDlH5#waH$3V^F$Wpw|H zPD4PL_x9qqR);8Y2)NX}4ZOW1{Dc@<7@cMntBT$+@l6Krao9(ds@9MsAv}(MF?8c* zqbx&JW)rGp%{oqf)*#NbPCg-^T>cJNetcgaLyc1qxmE41i z>r`b80j{5I9jwjiA349gazK*0{PF)9a?Zc#R*pnl>42mEn`{&5jj&xm&pSWn$a^zi z;7JmL$4|_569(8tf&F;W-L{v$}sIJ&RI0C{1l0m{GjS=Pvj` zcDJC(kpKh9O)6UHD?E3;-sH&Fu{UZdKcfMcW5`oj-FBqhMt~qSkXaIpVdYBW9CGn#AHr`d9&8n?jPmO@-%G=i(RHyDmc2+6u zQBzo>)K)E`kh|xx-P(YoF)n7(muo4m-*(sZrW;(Fu}T~typ?vT?`?$hf(PSf4qkcr zh@T9&ZlSPBJI?^iX;b2>F$oZ|bxXhIf;x|Uop`a1F59HFKI-=OIoSuyq>!M*y^Cz- z9Q%Eq6M((R?3#z3?_)WD&`&T&L=uM!dV#*~P{Qe~^jKUsZs4&ONI14>bVYY#t zlfwH9F8bU58a`K6%pd7psacXIQrN}e&*+&48#T%~q;4c6 zIw`|5&n;5q?zXh&Hl`N5QcYI%``CwY6D~Zv7{q){(&a!W_ z{)OQ@anIcov&eUy6fOTZV9A%}x{I%_La>rXDRE{$Tk=3PEUpJew zl5-vE5zp+Ieje~%=moJoN4b0YM$f=M*^zqBQEwyi=!+*a;F$pLjtML1ChMj<#M5ay zOfJ1}It1>e>&N4`R8jvfc@sF}d6uE66!ydaJrvBtzJKaS6g_;-_;pH89jDwe$j<5p z4h5r5-MFSecJ(roREB?5J#UQ0r2%PwT6rsOGgy#NnT%hQvc>fP!xY~hhIY4AU^&?l zBNPCvlN}^45b7Q|d#fme^!O{F$K&YK4aD7pH_E;9ClC1Ku+8*dj<&~J4w5y50{MF^ zF}=5L?1!_qwF+JFsj9x3Z^L3of3SDwN4oXA`H7F6a;&T<&McrkynB}Rxeh33wb(5D zYUCrx%W>VTsOv|@^18@x?a8mH-6D0TZ|%TWF@-EoC#J}Llu`+T=2dyAF0}cqE`0M) z7uXNvgrF(DK`(@VFY;I_vbCu@jM(GP+hf`b2Q1XG+|*N%o_r-Wrmwr4_+!zQ@yUrg z`cI#1Gn(sE)uGhp5Cu;7tvn>AaMYh(JNAMZ0^~>Jrk@yFxpCkH5YB&*6*V!ml&O#I1GCk1QzP3F8B9%DGR_x{k4*k6$buefzIPwwt^DKL(OR zs-}>QCm!j+!|Zgxt!uVpF%AxW%<*sY{@0%Kwd?{98}DLkj3h!nUZ-V_s(m>Aw5Q$i zL(`y63xN`AnI(%ISa)qh)kBh#dceo4L%Db{1Qaf$wdGL)1NHvj2!>9fl zUyG!IQwO+*sPx00sjUP{*VL7gE;bhGU?eUDHf{j-qxq~{SKp$n7-t{o$qYvyW<}J^ z=|@nTfXwo6)%z;6WyW-SaV2=%rqN1zJhV*rXcQB5h1mo~7Z~1_% zsPDdwY9V#!t+tlVsFyVV9_*I|>+~J^0d!MK1*A5eRp(W=(L||}6VJTY9Sfes+3{6C z{wgyX8@Qbu+S24$i&c4|``ZKc0D`hQ#W24iYhN?%Wp*@?9n6D|1c9RHF_77l&8Nq{ zNlrU`ay)F0%%^}Uvx*G=YHVK%3(ndy!$kpj`PuO3AHW}nL+q#N3&nMDn+o|j?bPQd zng!C$6k;i9iFnYyQj3D8KZ0G%7*H=@we(_anV89a@|?f>EB`Pc*1!Gl8VBv>`c(sh z_%Ycizi8E11NZ5mYOyjKj?rOOm*zp%2kjDPjkS~j9W!S&P+F(P%{^c&eKzyj44O}B ze%6S4=Z&GVf0O8x*2zMxxWiPg zD%FMO4A-dzOcERn5T?76s!K81lz1?e#pnIt$+uKye{6(^5j?F)bx%OcpyJu1A9Kcj z$aJ<00Ab80-w#iG>g|FX+jhAYAI*Soe1t~rd|THbxqoEk%DdkVUk(Sqo3(u>*Y>U- z%dV59)U1YpBh)zEjh5G~+e7s4&z6q8{h1kBQJcqGc#tul-;ErAYl_dnOH}epnF?1h zSvyIXXmPV$BPPFq_04zfR;vwKDPF}2*17D8rYNSw4Joo`=UHKWDpi&6s<&$6X)_87 z1El^A95|jpfa43;cY&=`c=ci1fNHaexY{kZ%Gcd6hqPW81OhQ8lqp!f68-zp3;^w4 zzz}2LGzZeusMEN{{haw3At1Kk@*mp@Pnzc%4_2vRRT0EiS_lf|g)Vb9id#rPWREda z0m~_J7ST*a$h||sc24WUa;L(hucJrU;j$~esidGrFYfkyPd|FWTro?HK}8;YNW$c_ zQC{x0;#Ea;dJ22pO?e`W0OwSM&(7g?MUOmwUmXr9ozXx3UUvrsaEFQAwTq&gwKjr; z&%3p6aBq789h`vgXv6`^DLlH<;y~2ii=-gQ3ID zM#;6;?E6acSZioYaJD8=z zQ@ibuj22hT)M_|N`N{NsbNzR!+j-%}IZp9ApFyn=pq-=`_Kquk8g$4n$JGnEa~f{a z)iDWdMJy-M`y8xoV2X9|N{U*8a{&6{cb*#R;L*47*7j^p@GPo7a%*^((8?djy|`eS z&WLyx`yA=7fJKgh~uBbt4e&r=3OD%||s9@9v;cm5H#zC&xA6*c5l}a*b#Q-QEQJ!km zyFu|VW9pb{qG!p)1ebdb!}VNC7Cr-X;GJ7F=~M>a)LAt{o%~>kXO6eWeemSP)4?~h zr}J+@#^bLw1L>Y}&cY-~HUm#YM9nt?1^@KzaPXx|J|)hSVO03^^s!*$)~!a-wDY~- zDgwj>AAisJ9(-C(dguCa33v|mh+O7tH+IY&TmX@ud2D*eg-FoPnlZsZU!8;4B+YbR-)|Y}oDnzCm3hz(8 z)MezlN4@lrmbe5#l5g=-%(ks&kf2d=FdbSA`4ExRl8#aycw9=BBJ)R};V>y!5slDo zS`eL#&^XipiRW=2z1V5JNj+|5{f%p~YYcJo+$E^7-nxb7PJIqca)86$V@w*e?tqCw zmy$>F!i{}oS zgK&LlJH}me?{xDAi}rSGr_K)AKThD`oN6};gx+iJOrTs=0IgFax@ zVX8)fRc@E+0#8wBpbuX<~? zM5G(Ac)8@I4q~-qZrU2?h(Cgq0}jtDolp!-!h6<$gUt}{9a6zU*Le zgReGYfodSFjAf`S$2z+Vy#Ed}Q0HEA5b=UUu}KYcs#Fv6x7lf{VeKq!;*jIxU;%1nUowa2@7dge7f!3=6z zM=Gl?d%n?p5<@V@Q~|vA^wc*`Wn7YL*1Q`=Z5lc-Gi5#mp62FlboVxR<^dF+emi{Y z18+%DR{WJTu5Lqbae|BM*e#%p$9|Fdek*LP2_e7o$#V($Ps-Obq_OoUtU}0lC8Dgg z9Aux2tSH|!qe+2E_|3rw--*m6mu-%1kj9n5xE+#xlSVy%(1~=E`q5LlSar2XS<*Jf zbf8CX@G6U&)C`nPQnxd4&6;4Ge*@@k)Q3*WdTS;fBmv;Zy*zCFYjljX!;HX~@sI&G z-*axvJZtKIjW_GF&en4}v-exC3ISQD9C0oO(#txg4bWB>*Dp=D_*N;bLvPk#Qh6$g z$Gs*euodc6L#$(ByX(vW>7mg8TA)TNd*{~4X--#c@rQo}d{ON#-(C}HBvxvF2Qq@T zV5u=HnOr9b8$?B8;f(&)cDyUe@#4vDDO!>|(X&*$vZD7b??t;AFLKvf zA~h44DjJ|4pQD|e631-$^dKj^HeD1*_dw6%&L>Y#7Ln+AuZZwOc|2#@sV`=gG~nO) znwP8(aKp==za1X`&?qYRE4r&FYwDkF196M6oHTNT4?kv+=}+&x9Mb*zZ%(F>U*BJS zGyHneO5jT|i6Ig>tHpI?OUBI`AAYxVboiMhark3A9Cj1%q92{AYf)HHQwqo@DYKP8 ztPb^H?Ry6lc+o(AxC$G;r(Dsxx_e-ssaPC2*iVv1HazYJ(78hPT0gGQIF$y`5cHu~ z{5iLLf^SAD+3$A+%hvLGiIQmu!#b_iC<;O;#c#>4bOXD$ql&axk(TZ`S&536sY93~ zq^KkJqX|5{t(z~J7;{RFu=2UqzX2X67svOrO$nG{d*)VK|5v4>e&JC+IYE|O2&Ds` zRsSmb9)eDW6JU=d8$B}XFxDo9gD1>DzAnyN&$oB~ESJkP)62$#W`JDVENpxD;D8J6 zMX#rB$ESSm-r@ z4!|i>wpglu{OhmRhr7e0zxs0iic1yq@g*`|XF=WT`qfTTVr4^=Tx^s2)R#q9_FA9Y8ZeXf3* z#0Z`>AIPuhyR(Y|DAW-ZDxZ?ib((?ry#UMvZ&izr)72-Vz8CsXu&zZ&B?{Y3E5}ocH{R-bM6PGv$a^pqg=13;MEx){%&5&67kqlf-4d4NMg>kam1#kE^Hs$L zvpXkS&Pv(}H)@ABHWC%DkB(EYG5M>O8LQ)=QfDQJt~^FAw+}xZvY+=KJ&aEqWn-YpM5(#`XR}yQ|fOU zG;nzqsz(Z51^Dug7g%x}=8^S$%PW6)XLGnWJo>wT7#wI|viMC814^gCMF*M@9@N+z zBe&)MSAnr@E@{R?h*%tc&OKL+&@+&7B%eUxFT;2`UL+#yAwKzB29}RFQb*5Hi~%d{kRnj zRFx=|B5fa~2GZTwTsmm4Gtw{b2Mevn)irj2vl*p}lG^ql6T$UO&bm=qS!BDR z96*{VqHtIt0xKqbJPzHCppfHUVMOTwk2MCI$@A2~2jUV#thw6k#B-1EQOT`JGP}Vo zH5pP&1^D>Q9trRhSa`QmR?XEw67e$q0MZ%eJqadXS^t~gT=@L$?}m#X+{DjJ8Jc1O zSEL+W+07)t{`81o6;hdGy{Zzv_}x3(LpsQR{pVhDHo3mFdgS7eKvKid=JrZq5fx3w zK(Q$htfI-$cRpW*vco6#!9;_Q9cRQ|YN)6vQ+0I(i+-Vor#Fp-c@w^a6sj64?F0;d z;&M-$mXG#uZioRSTcZW8v(y1I-wzCcljAu@lb|A8Haa($x$ptOqkgxf22x_P1DnCI z0;5IJ$XXuZDVhPdp-Q-XuqtYd?aR{^GRxHrz=bHXX!4F$i3F@A;5Kj!m>%$m z*m7!Wz%}BX;L3Ir8-M22D`@OsNCG9P$?98W7LEDDN_0dTN6BS{tg#G!iwa+cu#xNW zk}l+(VWj#7WrAYlq|v}Fr-Ap?*=HFEgz&(t(o>(fvG|i(EotyjpJx8R-LxjlWAus^ zD&1dV2P4r^FxP76*5vj*fAnTdB!;4;K=ErPf(WJ{CtddaE;cd>;>t0{PHZ^on@yrQ z#x%^1cQA`>(3T;@aFV_(lJNXwPXOQ`a~dm&z#?vb3HkYb%RXG}r#3;D@BASHu)&oztGErW2eS>iKnfJdt#Xz8j9QjNvJ~5_ z7bx>TB>f?rc@G53V0J>L8C`ENsn!zVCGqSVYWXtq%o-lGfu+p*0)PSrru?QM2_mHx z0g$g4Hqwuk-6~u@U2bR0z|X+caO$*?y{~?3ut<>b;^qyl4rf+a#jI`+P_g*-j5~r| zEr?nUNF%`2^v1~`D9H2FtZ#njo-8?2PjEFlw2sWZbB`fq@n9y{@cD?4fOKZtS zqd`GRT~HFoK5{P3%Iwik#A|5nD;9XFDen;r7QX!Xcf%tepqAkF|Y?+&Ll)c(b_TNJp^T~<{Q%DTf>og_x2)HTEi z=&HR$Q2>PlCXhQ%q!wkDg)NwRP%n$)Yv8H7^RJvOy!AawUmi|U57$9Fh9*^_Q33T; ze{Bz(2XFOxVtu?HesqtbZATMnv4!a?;u79_ z3C4DbsAqkvT`nQU2CpK)z_fb*tG9S{JUriZ$`7DKA=rH3PW>~jR*lvV2ay|MCPjvW zM2L_@fzhLRHPEE(5eZ~MRgBlR53s3YUInwhJ;R}t{ERrn{fwJuo4ucnUK{(tE=v#{ z(TY=U7r`{0hw=H2Gp;VG425#$C3-$XBoVW_w;ms#x!!H={owwVv%6?|=8W4f?kQ(9 zsSq~;@{}7(M3_0$97xlFS|DVCSVX9qfJ(%dhghh4a*DiwN8YKl7YdDPDvs{mJRp?; znb5!@>H)`LMtyTEX3PN{gWm(E2`OcY(zO_1jxF&?iR zf-(p(5(+~^`@&h%hEo?D5LH8>dYhQ0_crEm^gViQGx1naCiakVy*ew?hyjeL-M0w| zkuPVB2tObm^5AuA7z`J_NMxu&aHZjT9y!zSrdAB3B@U8K(UMsq0w#FvWzK)u0h2`! zCCm+~GN6e2HF|hLvogl)f^NqT&g#di6kHySKu}XdJO({<>PIM)jF*}3X;j+cM3G)& z9!=U9LZ@>jcT`|s3!K25Ax@K$S%mf6hB}S85C#a0xa_He)HE5-w;_Qiv%HE-H6}1- z&{qE#O$`!Zx|AzrL`^kiaN7y^svMGKt7A^ee*4zTL)sg$j+VnccB09Qd$2>?a&);` zqrLWeqR2CiBNUiV>yv!1s)LgQIv&k zOsVql(}iyuHI<>t8VJ^huM{DKVc}JI4YUxNHgDeiI|g#(gB$QrrVJX-sTM7<6#kR~ zT1dm#$KV33M(=Yqs?csho-uI}X!fawP{MU4D5qxs* zITnI39GY~i(L!0q!fKTjxZOI^_KQ`b4QjeysEKgPtBTA=_Q9D!eU|;QU1O`ss@YUY z>^$-k@E=Onx$^@y%BRPhj41P&)_Sd31Z?|_ zll2-FJ1anvm4Nq*K^PEq0omqgB0=w>V?d~_fo4RE(c#-EBtT+2hA9M3ufnrJNK&(G znu{IuI|Q~$$z1vLo{;GKDtkiq7JI&3o#~8@iH&B*F_ELuOnO8io#HhWRiGosrAh$N9SkE6gqdLyAa<59iYI3@N9z2T@Fr=>CKd(8Ua zPd)f2-vvJTWwn^bauPZ!!Ya@gRxdhsZIp`){_hPq0fyrOeF$;V3C_Qeh>sC!#~OvRBiD)Ip8d8Avo)$l!t~B6L@9 z38a9xqzU4t%+dGL1A+!0xx-vJi~|W5_dO#AsiqMxVh_r{@hNlj1qv0a11q&oP1!|; zLK20Y5&Cb0UlK~a%m+rl7ppaqkQE z?XG7BXh}>-p2RC6dgNv8M0i~7T!&cG)Pd^G~ds#B2VPBQL56cnT zHFG3;lGT&kCpk#vDid zPr0$EhJ-gtI8O#G1v9mp8)lKRGIt&uQNAApC4ZzG4$HtI=HE!LY9X_yZ;F?U2WxBj z$um}Z^ExVdaGWxzmR_R&d}l}p?!tN9PjId~#aV}(3uY^x*L5M8!^H_Ju)C{_mvVdP zWMvS9wD|5ahR|i^QMxVgRt!45F}S$fM)F)z4U?r!9g-R$_B5;hI1jSB3#%VKTbf%| z{-KV@GnT=nwVanjTvrVrBEUT0_$N2wlF3C2M)&airq(=aYee7hQaQ7dA|rIQ^=>L{ z1}{}&XJul)n!bn#RwZ5%4MHhVjgoVnz$&(h4Ppl5HJGW5yw3x{p;LKfd#~jDca(S{ z9;RFNHrAgFbIBp_1w9@T71<|R(>9F)QyQF4hdT0I4*dW*g@p!3@U$8E(y6w^MbFIt zcXwmIM9%z}NK=zig2Qg7xiNjj8e-RGEUO($!K4+Ot)@6i7ICYeyo{Z<^ud@Q`OMbI z!jAU{2=nGBjM1cYyysfN9GNg{7S2O>NIGFqaQ{IsWUj>7vguCMP@^r%ZCkfl7aOQF zA`zZHS$s8GWWH?bby$Jb1|C+R?P5{IT;(~2GxQHk1G7L|M5rjKsQ-A95RnacCPRsW zOhzSN!0#`=+tHQ#f00geZ%p}ejmpJwS;mEclM5#CGpD{d!ZIdU#steqcsN3MU<658 zP%APBYgv7Eahuu8!&L07q-uuXR5o}Rm9-4Tx)!O?te<?AFxe;s$j4rPl9=d&(FM!`2K$6J6g6q|jEcky(PAa9D`FRtrtx z47oY9w(MQ$h2Hc8>xn(ty!$?fc`@g=n9V3EN}ca6#O$H|e{tt5!}g0!l$T;%=d|qs?3e1|n9I0XcA+wUU=5Dg$*C zoMXIvoIA((6}D%-JDz>xM$o;|P!JAOD3eUM@37I)(x&eVl8N`pg&Mg_K$`K=VTZqL9+{p!#zt&oC5?kUmIW#yz1L zVKVGs65=$XuNtJxR$cBYt1u1etq-s2&8C3ey(EM!CEUCFRzVxRVQ3=UJ=HYpv%D5Z zi0{_Hhi}8L76In@n>5Uy(?7etfBTHi#1zPPz#V211?L}?l{3D!{*{!Ru?!4C+%MS4 z*fnZsaz*p&i$VRVKyda+(=uLPg_46A{Mjlp(nRSHSt}VCQl%n8{)pdNpv(3*-P+FA zCzImmWn$Q5#Aki+zVYB=TZT2l3=)kk5NHu@3d)MH2l{)e1XgLh)OPkV0$3$LXrn~n z28FZ>DGu{fpYzwo@aXV;?lea)&QUkbKymW}v*Ep#0*i3wY1tC(v@*dr`hTe+{wYeG zAS|O#8Hul1DG^?1<-I9=S8u+5!#kn({YuX(MXbOum@xUkY5uNH1@Q3;7YVlxBfm~Y zuo&duT|MqJ<*QfY@fY5`8fKyiA8}uUo9p=d9T=j8A$Fo7SeW`2Ka#h&`vBANYd-(_ zxtEyDS$%%98*W-A58UGx5NJd16jLON;FGwR5O9bee^5ZEOa0=Jq8P~uxgymw(Xtbw z;ZL`td{>jvhPKrlN!JIBT8U`R?XQA?bI0v*FV$u0&ijDqk?ypH5frDurR+$)!2i@)q-`J#nQlP1Vss4_sKDhZSbEh&xyY-CSg0qdpZ- zc(Gk(C>GkbX4Wn|pWut^Z&an^RQE2avFCu_-6$cO>i(ty`?GxSb07EMi=G7qiU@0| zSU5a*JgcBPhs|9PRnrvXoS2=~!OPYUQ?P6g#qXUeoGR|2w4(;c$Zb+r^@GP-fw`~N z;R5F^EKg~RQBR!`!7ClLuwP#2fVk1w9b*xJ_IER5W5?vbq{U?sv}{~^Z$gjOX*eMr zl;kCs#Lajbh0XBBPFt0nq-Kj3cxTmacIsz|7_+N`n82BLS5mSmc?=CoFnV^ie({66*qoq=TWT8?uW6rvfo9go ziZRUB-bj$;4>6BSpS4BWI8#+;*`YnyA>5U56lm%*YM5E}3K=-eO}z zt%%SuyLYmO!S}OJ%l4=)CA3|4G7v8~GaHE$#tNV7p@uTZs^2ff%#nC(ds|f1S>=M4 zOMQ9DpXdbRl2bZ65sSbm_Pm@O153>gbTKYs86`cSq`(YXXSGdh|B59@EzIx4ig!Yf zI7xcVI6*&1B?pGBnawmQGsqbstO;;}FVY}*qmxDx$T**!Hho{<+~yhXR-z_@=KZmo zy=Fd8JvJ|xR1sOsG_CRiR~N~P8_^=7Fy zMU2Dxn&e)w32acUG^w-B&Lv})g4dWE6${z-PJo?QQgn5M3ZtqC?_QO`HX&#o+fv>V z9zL~_9ff_?)|Bi0G-#pRR^0~pc#1q_DwRDSxpDpdjivF@DMAK6JTXnA1*M0Wl55Y1 z8LzGGWgpTs2+}L)&~|%(_u3dZF8Gd8)<@2+jSPFl4cdK3)saV)6_PLWxh#?4;;_>! zW-@qyzQ!5EfmS6{av!@!8^a}Y*z99$a$oG5mu*t@B*{<}OwuyBZx@l66 zgYuoM(RP~w#0-d5N|^K$nkC}MA$)SB9r4@h3ESKjvoghcqg$s1WWi;;cS`OoT{q$a z!4nM$>|Y^DP*2YF=TJx$`c$Ax1I1nBxmzqtw!MX7|K+NX-&85-Oo1FDm=*TrVRm6OF!VBl++6NGcC(p)R zaN6}4s`2zI4)o0EL#vsD0JzatENP8HQI1!{o+O`&)h@6%Blv9!W~i-PTBQ(%fXGxq zMyFae$(j-^Dsh`+?3|X}&_tyO(SoImst>^}8a-Fvgh=u<<4l6^UU2c9cDo-V@aSiJ zs%gV6*RWPmsPF|Iv7Dvm8p;^CT-^*JwKElv{@)29!3GiDtjxK8;#5Tf-(z~O*62Ew zMVF^_woKZ>fq==6Rt6z_Q*cJDdiQHK>``?-6sd9zq*4zshY-kwhe2yms9M4cE;4y6 z7n?@Qin)Z=ymchmW)zgEpK3^TR5IhOB@e~|W96;Y-yG07v+&`KDZP-~6@8a+K6b-& zGeDEBL5y3SuxTb9T-?GK3MrK-EWUdUK10^yWEc<5_O0}kr2G|&0AxjkCyZ6=sxed{ zmLH={5W)!==n1ZWu(fnRhVg|01koGun|tC$EIGLV86C+1Fv$TycH|tyi>T+#Xmb!~ z4URl`G)*@{Pn%Ycyp?6usq3%J#Hy(%58O+%?@l85p;_Ru3%4@*2MjcACD+zZO!AqU zz+S5fq)_H-VS%(mPufAZ=Y~R-fT%!`6?1DNQa(S(oh=urwm2mk3M9HoJk=5^dzLvx zaM8Mq9SY|j9rjZk_7%%+i@LTBkij19SX^9qb{0}hKa^spD}s%%?H=q zrZf(Jc>oT7kx5yyi?4_V6`2*`fI9rlInTwKKESz{LZ{sefW+#97IDW9Ygm5~eK;Z< zRw1L(8o6U5pF<83F!K{cY;kNJd(n%VSXU{WR1mX)cTRZ%%Aj6@0BG3n#M zDoi6vewX%im1tO{fg+?St>Ro5NQfKn@6(2J;(dkGScw`WT-y}8uhc2-f`15aSA$S4 z()MZ?rsJ{&hm!!KWDTmqj0@h^w&v^N#_*@$q4M~iaLdR1gv!yH>Lqno?sEQ7)l~?8BX!;TvPSxPQ&w5g4? z*(l~X)z*iDa1tm}Qu1#cYLx!V9C9^{-xYbvU{BLv=4%JLnoF?xPOo(zs4w3!!V@^x z-=Fl^H~WViV_Ss~kR8@dVa&Y-Tnn*(YL?8?z$KLE*DOpLff&j* zmMR^Tx6k~U2^ZWGUmXXq+=Bl`5-Fw!(bnWv^%L2msciUp(q3k!aO6Go))CYW@lWJ> z4)qiGcaFK9-cqq?fZA$4Ckc=%8hkV5_-g{{3eukvOs3`Pq|$bL^TS^dh!zoiB&_1|{*y}wx)SmL0P zX-&WojL*ae3BWuAs==;s%kD4Xv-}}`E`2&Ub zR28Iz`mqN4xO;1okqjy5+NEM{?rX?PAz>#s5vLY2Fb*Q8(+tMkc5lB7shfC}4Ee+Z za!~fF(o||XH}Q7a$mpv|_W=`lN^r_-6%Ar9C1WmU>bR5i9~U#EcYyQXzxAdLq&@s# z3NUtclQ76}pmPiZ2AA+5;jz($_6<%l2Ae)J7Zuj$~P8iP^Jzsaz^Xz;-f&17$U=;Al)!fq}G1x~ekp2B_&pd>vRH62hzazxFI}rk}h&V2QBjdja4$@(qy zCmeAmRFK{3_NzKejZm3>!}vVo|$4d9pC0=ip{Y8NF7=M0QGdm0VfzT92(3djC%cimk{W} z_HZ8nzlu8*mvA$@Wi}3O@p`Q=du8I_0WDEH>`-)Zj$Y$-uFtA|&;ReT;H8)b3;aME z=R3E_2~c{$@8T6(_Y{g%Hk-01fa(2xPWOp-{@x=Svsoi+b|K7w@2Y(|NB^c^nAWl) zg;`j{$$zVX8sa8zyyAUYX6lq@=bR@U6WOv-taG<^xy4N@QnR2=Kle=tTQh`6=YV^L zyjdm)jdHe~?_83%?AXPn$D@}Lv}m1lAPeaw`*X@Oo2gE^tBcHTrT#@L&Q+R|(2D8P zD8nEvUHXlin>q7RJFx#rmDc0QJ9;S(rN z&Zr!&;;Rd!WONuS>kYy?d8=48rN5HhtUK#)=W)%Mc%tadP13BM2#k@qUk`XWQGWa> zIHt%>4a5RMZDUExn-U2w@<&^AJ|6vmtC0Ecn=mxjZ)(fGfO zkolry@}55Cui-M^%LZI4TimehNk~*6uev$-U4PzZsYRw)&ueZ`h$~Bhq!kV<$frjf zFbhlf{=w4L(&=AZYdHq@hkp#bcpyOrI_#=ztn$@1Z^_axq*nm_=^Xa<&Y&r(-*=*l z_%bR9K6_R0%Dyh~eS{Ki{8Jf%uH7oXb1GWvY$rRMQrF-fgGizgs7?X)61HUU5bKY) zj8;V^xP7~jRGLM{Q&^biJsod<6UaD3Cp@Hk*)PHsi&mXELiZNUcE5$&+mTAzW4 zusC=(J={q@mDO2`DuUsF0(~gXl0$S)RDq74yeW(0GcstYe&s?9>RSeu?ho1@Jw5Bc zDp{zu=fUW)j$U3J(O)))BQ(;h!tpcQpyD|>yRPq{#=~)&lOY^hNFg3~l9wE!*OyHKdZHD;qMT_=b^qLGX>;lLg&&3m zX7iI=d6lO@`!g<8iQ#NXVyPcrZB6(6=tSs$UbZj2U!)eb?n9-aH6lTyC~as)4+;J| z;(8ilL-kna;*MhwQ=S|55*Zw#I7#Mf;-1vk5|PBeC8O#Q*uoZOZecH6jb>;L-Evru zl>-%%d*NR_HgBCI99Z$-xe3GdhSxh6-4gJAWBlJBEb!n>&PTSBQX_!hz#?@TGAzNy zDYy22%o+Nh`GNd4Ge*jV={7C7lLq2(76;34-mUQy&iv=K*1~OL<0(v_3L)0SsgN_V z#SUUoBGM~*%1)IL#0D6P)70nO7Os9Ko$-;*J?tP0TsW1Mx}G~@%SXL45{P;ZGShaA z544FBxp5rw@zTc9zx?A>3?ORYXFTL>>?9#F16fFGYaPuzz)m-@9krZ@ zvh553{GfE$Pnq46Slpx9VK13&?uqPWk9|t*P&hW7lao08M(?xC>t3o`@%@hZPp`0H zEz*Bgao~NPb=1eQ{J2_?_OpO*@y`TazXm4efD3@W54>+|81O#xHb6acn6-d3nXDc2 z2h{{t9TyJQvY3Ti=~s|qGwzipW8)bdw8;(4*jujtoy^xt!;_i@E6;7t7BaZJ4vuJhp-_JruJb2dahRYH8`+Uj4@0?6zW?Qj1&>!X%rVeN|tt&VD~l?$U_kKOG)_dpNv^|Izil6u2}uSiGdWGQou+(&6Od1B1j7`uyTIdw;Jj*w*p>1Y1~isX)?PkgKH? z+zrN%b{4RsiLMN%Z86yl5{H2?Nay!E9A{kcD*57ECRO9Y4vuLK4_UP?_guFRdp;vm)mTu+B{hHt4Tb5n3AeYBRkeUnW4sC|X)m_O&>lk(C1qdtzv$Lz z^w0(6-Z-$A7^CCCDw(+`?V4PeV^OnpHXK`kaS*vkZ_EQ54K43U7aXrM8L(cgc9|-M zQ~dK!+`f%rRl_naCv9U+1gcPGzu|-&^Z^ojQ3JYkQQk!cbkX)z+A${4SUayUyzeF#&AgatMyL*|7OX@GS0+PN!?Xoniz(InVtjg1FhsM1r$Nh-F0x z$Ct~;skRx+DWjsE`jd8{33&9+jxFbWF`hfkPP}5&2tne%H8_9m4owV@I-q ztstJZhVvc`^(2p+1gET+)`)+$!Ot~Bn#l?|@zPVCb|#dhoN7mmQqY?BS!0T4X^5QY zg1Bx%mA#Vo;7nA$<*`m&P*_fAy@ALfYu62$VjY_VDnUq(u=~Re4Al|iBy>-_A;AJe z4Xe`$R-@)lcpq&tJs4jnh*7QZo+x**?{o0=i`NID%l?deqJL6TxJZ-)g{kU>3F4X^ zHV!*k+8xPn1ge@7)C(9Y}9=Ss!{ab#lN^3Jq>?Ay0=K|8ads;z}pEX5A#@|GF_H;3kq5I}^^bq`8jjB@RS6P5V)TG)!*ci@+M?SQrQERZj zj@u?_!-b-dXME^j=7sKs@H4=!0Me0*H*ajy0;WEp4CCl~a7!8hcBL~LXWxi98iJEo zcF}X7setj*oM2G#K@wD#C3}kfKxYr$pJ5rt&gluURetT-W-Z0c^@V{T?1lfV{<<>- zC6iH=jo3!XVn{3|8o0-8ycy}j-lLl8Xu512p!Cw+!!zyn`2%dSuMzlEG&4!zxqH9} z3Jy~#p3n_hYyr~$69kG;+m!G!1~X{FTtLJLMdO7`x3H)Ml;mmM5gIn=UPHICOEBi( z=-twfG~t8c_;8G)q93zmKRWfSTRl!9pg7lPAmgO18B{XPF@VX0z*tZ<;BntKP~k~q zaa!H{)c^oe1Z>2@9#b@YiFbEdL4tGACFIdTAI?)DoM#%B8M7Mc2q4-P2e!Lo7l#6% z2i~}BcI0D{gfpVn1Zv-zF#jL2-n_rA@=DW|=s&rSs{m1(~bOfp31d^CAC8-b+ z2oN9`Te1cl<XFS66jarGf{|!x{GJ>$=yoB~ks;Ig$*vbk5$-n(lS4dqEUU)X?qa zDYtRE^w-RpYTaWAue+ucrZlnRX(k35A*h+aH>`RAKjPzC5~Xj>`=5<8$m*70WjU6+O z^ndw)T$%PUKyx2UeIjN*uAxfC7EuY1ipLbZv`PYPYD}V@j zsg7&`hM!T=Ok$9Z;DFfZdw-I$+2ph!BueY5mHF!Quo%)t#3rzZl3&@)2!VC-vGT!r zdJV$1fMrij();VT3j&*1LU8eXs#aA=()9MlWFMBHJ~l~CdeNc1f^>?)oO$}4#%;Dn z(@4xf!Qm7pCutS$ADV!@C5;k^W#Ce&H%3}x0rmK6F4r_#Mv#@Ra9zfD< z`UDL2G_eH3uFuY6Sz)t$6bRxWw+@IT|eoc*Iwpny(I(*qK5g4yTd7iNSXf4%qkzc+Zu zFI5_}uR)3SfQLp^IP|t4Va}NW_eolr90!V+_|_Ka#{PVLFa=K~TX%BTYaPZew~Q)c z0u(UeT$bmq-Y}YhTEc+G0)_O`+C55XK@{vQo}+-Rs0t z5K^IBd`jxm42ITOo03CKIfVv{B1@b!fZ~9#1E(LI0`odMH^5F)j{l?wjw~1^P=qWL zEU=3mt&B~Uw_ypy2O|WLBFJhDxEF{60snuSXPG}r>RaD6sUXQ z7j@??CmE6E9YY7JiPAlD*QT;ndIOanIYQRN2(~jbY(LUo0SuwIeR~F;ey1v{51h8< zNCOZe0u=Y~K1GC)>p zsFf9=2vT^G3nof2K`DtHu8_GvlN3p0*t2Z5(=_Io)CQWCb*CWu>dv!9l;HhZLyUqb zh3bbT)DX>Wk|whjVV~*Rz8YFyc&6&3UkO9*g;qfXpyQ4}BC2{>Gk_x(oXJ6faWN(g zoika^A{b0{BFH_Yttx&4zrYXo* zcfdt&XxmX4L&IY%Bxd%oqw2(gZ;acV2;xt&B=LoG7-rth02=t>*uu_i2|b5cjI(XD@Hs;TzFI!&_ZFSj z`8k+VOvVm2zSbnypq*h-96dezeJ1m25Q#8BaEKSuDLHN*d9GLsot;AcrVlO%z9x_5 z>n2=^tic5v=~s^F5xe{Uj#)GX^uiliYN3^veaNi#r5oW|=8aHK67tHF0BLHL#uHe1 z`%{A;Z2^8BSJe(@Cr=gfMX*aLC6uZrp9H=xr_^k1n+Ra3}z082}Ik}RXQ5`p) z@-$G`UvsQG07w#0^g1w!{q)z4h6e&L>EL+i)SWwq;LH7L{AjJBBud3v12RdIu+?Dh zBivMwQ>l~A+EasLgl+r_m=Y`thY9#AeGM&IqBqVv=9kYd{^5JaU%7+{5ra_( z`y|B0@tq%VtvLJ+kfp`Lpv&u%!FXW;-r4~$joA+D6pm4xzfdRt!OP`3~;>}V2n%uv}M7WK>CEQW5^@H4DZAs&q zVFst|`5>%lJ6Wyz4I)L;hD#M-yP>e74GMBD)34FDLbh;J8&%ERg249zBJjLB5?`bF zigtAJy^t4^26>r8P^wQy6J{&|NwQ#4Pv$j7N^SY(RpJNc!*jAQ9h@Td;)Wff;R20e z6+3!)@?(R|0RZsHE0X-sY-kRY9u`(*?;4AmefdL!ia*0J|KIg)$-n}4BptJub#x@{ z*4Pv^=HkrnOvILwiD^=ZVMMdM<2FcXD&TgUGR`YnyPHi$j}iC!4P3?7CK8pvRQK>~ zSrhjw+*Luv9n&%^kV78dZXyh<{D>QkvNuOKhL2=r`ECa@qKs{C$02`v8frmW;Lb47 zOjnP0{nT?=B9|ri!nQ4gLB)f{SVeA-o5#(VS$l@^uX|qlf&NUtu0ZQBz)WgKYYl*G z!)kIdD`Vg>H||nxl4dol8;}&Zi=vXdbIh}1AmivPCmS#EUyqJi$et~1?}7Glbv0^j3kJ@`&T@w3q2a zM{{~Alfw#PEYei5724Rw6)8=q+I{`l?P#v57rB+!v=O*g>#&n8mrp$}Iox(V@T>A* zHCpFz(wu3q&urq&?}<06$;~3ApgZ9@XeT`~Ls5>KOt~N$PECQ^`sD&vVmISFW=uLef3gp*BEeamL5ankDBdGenyXe4J<^ogR6dqJC?_Xs+9IFZAfhr+sh?~E0O zkFIUvR^f<^=f&M9i9k;LjNX|`9i_(-6nyw#i{tK*cSVAz2+cfJ26Csm@6BlH)ofmP z{-tuzvOT^cZU3>6V%BjqWnAp(6@{r*B@}O4b12=@zM1V6 zu@0?b)F!387qpX-9KXq~`wx55IIq_<>B18kw5yX!c1*e~8PKG{Jghg6zkh9s!(i5@ z=c|9mi#7E);{HTad#$>hdEdH#h zda=?OzIDT3>0Pvi6W~^;2bzwSI@orGJIhpR)7pX4KFO~5Y}b!{RawB}o#CDvocT(T zn4~I_sFly<1xWt31!>c}yY-B`&@rD4-UAG{YWoo?N(&N`={Og%K=wo~JSG?rIyqjA zdq8=#`&wq2glhBtImv##-QbCYak){G2j`Pl5iNKK8A1R|LN(!bdCO4okI~r4wMb!9 ztH4J!kzTN7_u+@ty8&cKk|hDKs&p_f;zT3=DT-wCds^uhrMu<)L<5sPSYrXlV+amJ z%$sxH2N6d{{!0*X#6_g5t38qwE!bFOYgbl&S-IBc;N087FX>x!Q8f2YvYaJ=e-uJ( z*T<2>C+^CGp6j#^+(|3mc`}&$Ba|$R3^gF-2UviJRTa)_o4Jl)l=8fDumHHcl=gR-sE3Z{z7v@dVn1tmaL6u8Upr0IKb=M5N z86$KfI4oG)v^5~>9%1~I3E0Ie25iNRX=Ap@0@)%?SY-P=*A74Df7D1IQ-VdE|Bk%L z18%n$;Ykf*FgXSENv^)JX=#uaPlVb0?X- z`rUVfxeq=0qP-HAy$L3;mbQj+{=|Rt=ts|+zk0J)Q& z1QB!e8H(dlI}haXkB3n~0e7IT2#^-ZrR98$$4w4X+F@&SWJ<_Rhel9JZ`JM4>&5BS z$`P7a8pDJvTI_~703%5ApV12FFpef7R+yYX5V$C3EOZ!*;|}`N1QN-F=JJl9?N+Cp zi_+VLmw{3Y0!g%Cyw==5p*uB&Bb-#QiHpd&xwtgN0{X{(u-=|Ra!eWmeGabK6onj^TKR}q&`xrA$L~LVLt?_F|#gPi6&1{Y?RSV2_Zi?3?Y6~ z(O0t(9OMepOWL9|_nI3>swbjjGQ2AYQ^A9MF}ShJMrWw~Yr@F-*UpC~USK^`8X#2| z(!t{z9g;t*?T}odqBjN6ntXdgm{+aTIgG}#JjhvUatA_9G@IGrTS%==ky?>k>2QP= ztK67SZs-Vf4d`XzekD8NSNpI1?E(=1%ex zseVm`JTQz{f?L9iUCs5l``n&~U2jH1{$gnECU)l^^!`m4@MmpXg5A+$X`J9H~6ZAyP~8`Z;Z9 zd5s(?*U>0l=w)!N1%XF>ZC(ooV#lOgWzdS5Kp@ha#k)~e9koWRTFzOq)Q2V7umCL~ z$d-I<5p#{Z%pg{*0pY-CY7R->Aw3ce29p8&Qtw{i?F! z1a*P6S7{?o2N$a#DI4LxoEW^ksGl-A z#Ua`^be0-hVnYcwHXfY9iukS0Ji=J$&8JXNjdOPGXPD842|UFzk&)5vg!oC^Fj)e9 zeiMw;D1E|Z?BvDki#?y3-qe(+8Xx4jL=_b`jv)8xqq9kH{bV+VEDcF;B;U9-hu>jZ zjGpG!CHSld9-bafo7F;SOZ!ZMBpEkFosg4^8CRO=CF-d5h%h^?Sh2+(({eVW&HUf~ zYAgLk#ePg}k-(5T9x3h2?HyRS*!<9>=s6|Wq|c5;01E1SR#u+}1!hvUu}+jVHYQJQ zo=-MbN!faaCs8PvMjJLMGxuvX+pXkA)-IE1a9A_my7e9R42$wEY#LDn@|(O4EyX<* zIASh{^oL;3-F+I$L9KHm>mjn#z#i3}(ZyDKqaj+Sh?@A+S|U>^Q`bGZy0>sO#kdDmc`=N%LDE&Iiu$AMylgv&&o!u1imN&4KZsG3|Y)sXRIec9h{MtEgk(#7k zq`(Bp5Nk1k*t5P-&nU|}zm?n0Xy}s~P%#(Oi znf%lG{AI$8^?ct~u?;~j)k+iIdgdTa&a{-mOER{bi1W;=Lor`0h>*8Lg7-4AEup!# zB1!8l-6m?3QF4eWR7E|dN5O0iMY`l5N6JL7Q34e8jNXod1*%`UW%Sk4rkhK$8X}!$7!!cYu%msr<)5PI`&Z(w~JWxlwXx?|r zPeVsxnK4&$=xq2Jbd;3zmG|Xa?ZuLwWH7JHSC{p_fH3iOrCZ~)>jcMYbS++%y~iPM z9C})~Ss2ctdWT6X5xe@0rEiSI6sT^}ThjL0%f(do*7bf^+Yf8d1G;X_xY{^L#9`xu zN)#_8%Z^XfFPe8-=b+R?xF8=l^>Qg9X7tV8;}?k|cINAoU$vy}n-|lLuWpLH`Nyo+ zoxuCz$5qy*JYzK^;i}P&C+vSO;+##X&}U2@;P8xkb7tUMAyf6CfxQV^^91S>Yf!O3biM2w`KxFc$|Qhy>3 zeUi{aHn)o%*^nG_IxTDLFnMy*Q89IOiI(L>N59^ly`_hkql+R&s}~bx(t5;xHdPl6SH!VZ50sp1+_BJ7N>K#en{&HB zY8I5n#B6woBHLANX*ff(n9GnSlK7T5d|)@sg;4U3L-ZY|mEv5K1LI7F*s%Zhw045o zbl;+s%-?049CP&khn;s95g7t(`EH!i%?dm4LQ>)A@T>7SrqL=M=&tHcnRu=q@NF9S z%U4_1@r0p9Gnm0rU=6?W7m_FJq*HG(?J~be!8Vuvc$ZdXGZvCK29hUb3W7vzUBe7{ zT~`e~y_ACbNoLhSmO5rlQ)C?)j4I{V0R=9-b_0_kiSIit)~1)>fm!H?h`b{||y!Q*`f4|wnZfk#jP$xO&h$usQT>Z~pQNeMk-R0AjkCC1^U$|X7NUm0yOA~Um{Fm`USBKxZ?NY`Bzr#3_ zNS;K}gnB0fJ-l}7w@gk6{ef;I2X&~y1bODp)4Lbya&Sd>ASFV~@gPp_DLD$88nclc zpM`UhzA8a8QEScLo)}3J_|R%>Jyz=sMfk#WD(^13OYJ0uDQRWm5*5A!NKVL6Hs@IT z1wn=6Xu!!xivJCu29Ro8q5d?%_1;CY>^hOH9BE zJ%TG77PgmJmhdS(m*r)Jea%L!2I|;$4Lv{90~Vme;tFlWTP}8AqU|Vb6u*`km4ftOnq$>hc~@Cwg8dlev{hhT*4HHadeiD)!j8*kb|HHeHhG zkLM;<{;f?3WKfza{xz)eLlEd{q-|slU8De?$XVgLQ7I1MF-FlUfd|BeINVL-aQ<@w zGy}|~Q4+m1E^p{1iRrfRH6**o=rJ4hCkkvDkYMg{uUuj7XR%UmvZI4$YmGkUriv~I zTiKADF)}y$n6@vm8@IU=mO$C|$;%E(oQFTsnJGGDa=O-(DI22rx_2qu7qvB|9j}`F z#D-32L&o)ZGH#NfF-uKW^n`cs*cnRehPY?=SB9ogvdHA^KcJ9-g2 zIv#+`+3ZSB?s4|@T3%wu7p(!)n(~icb+xWbvwvcQYO%+r0T>SVjZy~=@NXbxx#x|gKUZodhwc6@B{H+Sgm11}Q!Gvp5`-Qf8*MlH*@_08rMK;nVvh;E8Hj3D z?P<$?6MQt9NbXavsLrF!4DDl45Jsod<#vodU^FXRT>uzboQBfhWuCCJeG?B^8F^ zU8;o8{iYFYz-0aP$};b843JL@CSVWSoyNw^2sg=wBc&EcGgGN~O=GXZ71JZCWvSSu zG{pDFsN#z_fowdl?)3f>qK}ypk!Q%49ZiHDKljg%i1<7TR; zg4TphNh*_-yf852Xo#a2NOqtYQ5eivTP5nuec;riqVfbCqfum*Y%`zoB;~%Qd6``S z><%O9oX}d-=tKDFcxjg9EEG6|jTp@?bfUv-+Tu*+#_X@!wujm$ zVJNG4uJ#)y#nbr}8}E+BF*?dc@w%kn%T;9kpfSOKohO?jkMv`(q>wHx`grCGQxrwy z*N_BHL%dY(P|^P)bqBn53ep8iVU)FIG$wkuC@(@0TLq&hHEE`8!^vfq0ZZXt%C#bl z;toOFCTWHqahHQcl~7iwm-iwS5UPM}9cJNDE;)ez$45^Io9`st#1rw~re-?Gk`q0hBmoq86C?vD(hHDY9cOzRNZM zDL0fzq<^UZj%RYbQ(fGe4xQa=ihyiNz(8JGn|BL_wo{ zO`5HpTX^MjYj#6_!hM2Rkei6TemqG8>iFyDntfqO{-rSk*ymz1*y0LR(AglAn5n7))u4Ue~5(f5u)jXE_X>f6rNpJ>n5Vdcp>{)TJvo0`-qMwJf+n_xgljc7X(Otd9^ z^?q1q<-XiX(3>HF)Ud^^@waT1XoOlX2$^yhOc^MA z!ezk80e6^X;~ZpVLvl!_(%!hUVGK-@#Tt(;RC!pRxn3AbJ+t1yI#NnO#rVw8#y=L_B!fui{=$~aeB!_q{#c1J3 zgXi&~o1I;Kqe7H?X4jqhSRw4&R{Q7p z=S*QKPdjevWmJP=CozaKSAx4JaM6OtPiZ_0TL*aO`lJ?ku$WEB1PS?T zFqcEF30Hj2l+B3>vp1^3?ZX*+7j3BZ+9~y9UCKY-A&yA}^>@^RulvRN7=g8!P&1Dg z)3&D*;i0c2K$sizG&zm2(Bcp-5NaC|d<$SaNKmGU%;mWkkY)S+1p#Uwe(LT&Q-)}w z&W+*39H3X#)fjMW%)?l+9tzDpO3!or^*@lRg*Nd0&mskTbaje2&{5V*Q5{MxBW*yT zIWPie=|?in+%6-y1}`%>w4O^ZlI!QVRf{L(n7N`hWH`b^*S!A{5+P~g&QR<_QYMg4 zpAb-H{r3DI;iT>zH+DNvYK_2f2R??+Z<04_!WIl#|EREThVK}xvU4OWTqDXj6mezt zLpph;Aer9duWMaAF#{VGbShHWOm9rDixK<}Ea7|AO)SA_GdtB&6eGCu$&iKRM+IO4 zT-yC?;7ltpb3X{|u?#2gd*M2)>9QDI`|yht&Vy{aY{-G~ypEDJ2||Vnn&(8OiW4Je z6K(-+cGwusE%aD6TH5ts0p20CgLNONPPOXkndGoqYMj&Q;3)Va{8pcOFyQ4n0g$JCD2}(eK zsU=JhGK<__!1c3lUNXA)@I%15n9yoeA4l5UG*YAZt`Z=ma4=_YytY0#^IkiVrfHXQ z{mQkIsfi4^KIRPn`Kr}SH#ljgMWPm)IyWG^Bt^pj8u^NU(DL?l-d1Nm)(B4+nl2fh zsDjMfi5>|1$5ZX!6?=kA>uuuxV^^m?G;^<(YXz%>7&dQmO9?<`?>NvYA!hE&>oiMe zfA(c}gUJ~Zkjn*J$FvNRMgn+IVGkB|&>~HTg{l6bghg8z1V6{|44q#D6!3@D=eE1E zOH;?@#OVH|7G_$)=5IjNnG{}}&4lD`+%7ISHMAqk=DS;ctf}#sjpoj4Tv-)h_lE_n zeqKZZeVHWAF*^+oMIGt-^Y%wZS-!SK(TpR9z-hl&HU0RVRuI`wT}?J-9yU29rn7aJ z35avLZ@n6!BTQm)d;KsM8)69(?vyZdc5YZL^aHMKHXN#Yr5y}|MC)9NU1O2BSrz0Y zmY_AbpXnUciRB4j$gl|W64EC{NP~D8Y)2+D+bpYJBktUc!Di<^u-S2?cK0+%Xx>do z!3>yy(H<1@s*#u>0Y=2A`ZqH9#XiltIur)eOD5~Op+(HTN4kRgJ=d~ZL4A+|o@_^f za?3drqof5mtP6x0tNc6<$u=JImp{c7Wk<_|23|P3;$P7U!7Y7atH&n+XFNEIQIw;c zU=%|g4rk`F{*{Q&ujgl(f1SfFBslYuG&79OhI({?6>4Cc?9w7{qPsqWO`Ld*b+cq) zs+KI<2=rH&c-_ItM_tP3z)h%_vVCk9rj$+zu;as}A673KMmnZ^C0AGn=BebX`VMk; z-T09Y#zs=ja4Iy7T|j5WT?nUH3EPP}Ct)$&Jh($w)-p!0_A9sp&^MV02)tWspXA~1 zQ=yo%T4W~gQo_aO9u>+C)81-|j8-nCFyW3CJ;0S8BNxEh(o*G!ctNa)f(4x$D;);` z7|3kxHbLehj5@J{luL~$D@2>Pys+G@d;oD&U>SkDFLz}PLs%=x7dJxs!i4w3B|>G=q<_i2j)Fx-r|&}MNZt=C#{9L;RYi*m7n9}CGLVK! zd}lEc8NftX#)^9ZMhrG!Y2Gbd);RL<@}D_`+(S2eRhh@)W0cTt<^$CA(63a*; z#{8In-zz?bccJ%5QKH>a>XU8vNtlEC{q(B_5$!9FKnoMo>$6{C6Q_Un<#pFF3z?m7 z%o=S1yG{#Q!fZ8Zs7MIIJZsT-V9M|TjNO!kX`v-oBc|_IMJ8Bu5sD;*{*L*g%C5Hq zkdfb!F8C~^?1IM3&Pytktcz%9m`FlvasNG|FvqHvrqD(Iv>&yF7f3HetZW@4Q6|_? z8P9g*R8`TFYH2EVHUUFc&J-|~<_w;$3i=@_mP#+vj3JAK?bap`s+AG}5Fb#LZ7233 zHN77)dnuV-Vta0>&NYTSwm!Tafk^fPbF_Gy__@6>NN`6I1el_+!CBGM(vS;wmp*Wh zgHg>p&+jaMxtrGNe4a!rlI3`_No;4mftkh@mcnBtqXZR|KSK&&zLH+PIGBaYgwR40 zfm~~kGQI|5unFt*ScuW(`8Try&EjB&6bpWA-(CfUrrWI8b1gQq0VSH-NMyRE`9C@?bwt2nNknY_v5byG&yORxtr%D!)tDh*nME);eY@<@ z?J%do%PXqPe);?L`Ilb1UN+QN0>ucahRoNI($i6i^QTo)n-@eV zc^GEcNUpcj?d{Q4aSr%!7oQPZcHJfm;R7d2dJ0?~v@+{Fa$Iy`J)C5mna2Q9XswTz+q{7Vvnt4AoA$k9~MwPkk zu3bt=V!-ziu9{Wd$#iQ{-(}XI7WkaC^O>a1L3IQ(FtMJ9V}ROrZ{7s0O0z*D-P6P* z2I6Y)+?G+nc*e;Y#%~1E9G+|GoP5=h`#F<-Rvv1@Mr8wih{%uTMx25);g!*mhWjaA zqDY&TW+QCUAbn_mf%b7-ku7~ouG5Mu`Z?>@&vBU7KiTLTcF!^wg{t}l7g zi5s8&`X|o^9Q~_*GRrdyz}=ZJa7Cl`tgKdG9Ky}j1FU3c;mlxxypBMUtIX-BjrRB} zi=~(c_NaUb$=yB~;n@^RWm4F;7yT|Z&%wRRIxjD|Km~S>nXb$vIAL4`2KYi=%31Q{ z1Y$GJc1vd|d#-=^-fQ#o&*tZT@=w>g8!z-M0uC5vl^pNxl#z9A3|Ss1e~d>RWU}ds zPtHM+AUyhdyDxk&E}8=<2PlAMy~HPX(Nq8Yt+-ZX?DwsAs}C;0bKOk`oRK;y9U*BP zQKkf>ySQwdp9kf4?hutq0pGsolZ0P34e}NpRGx zM!wT11L~;wgf-PbbdhFxB_Y<|Bf)UXuX$UB`uOkIg%yt*$MSdp);v>g%Ak`y++Ns& zhyN`pfuAa~KK$wq;>yc2?kW8P0Y8zlhLRa~+;Ae^%&35j8lPR{jIDMiO~xv`RvVwr-P13%&VVa5X$)>QZG%t5?r^}=7J@6TYW?E z7)ze%;9$XH{>rBshK)}y=vVB$GvAwnkXkp%5tx{&`S%3_T9`>|(qyf}CJ@lp8Q&q& za5n-AWz?Oz2WlsqrTqml2#YVBX^-z2YUpTw@YBis6HMZL5>WSC<_&ugwbcVU_0V)M`q)D*M~t~)`PO@gev8Ij~#8f5HflFM;mw_`FR`JG-3 zIGxgJCMEF4MJa-2-~!hR0_~ExsfJ^Oad!|6O=LBI3vesY0BQ*$g_F#j>FRSk zU-=dJvfub{T8q#mFQtse0Fzk)TC52!#fj#v*w)-H`6b{FdNrH15049xJ1#v-&13jT zX$E_}?mfeLrY6?1(1_!SC0yxo;>Z++O*P3J_Yhz+coGqt@GKiJLm+fyMzL$Oi*I4HA4QdWU-VB}_Jiu-Ps8B{8S@0nYA@0ITm z20yv*%I^&((*6u4=`$NF3OeAswQSE44WslSSsN}~G-rGH6OS{_&zh&P%kTdGiOIx> zoQsrO$-h=VA<4_X7Im1aO#{@-KlavqRU~vm_K<4}&+jfW+bzaOJQZ`E`EzF%E*=uj zG%t2?^OS|pwYNs|f1CfGzxu*;)#Axhu7&*D~6*tvD{H!!)wGR1$=g7LjM()Boi%T10-A*E5hLF z{04VL?yQuC!G)ttGGM}`MwvV`qQm3Ut-EQ2SqFDE-(pxZ0mf;8^#m7TfjO*0%^CkI zvI6|;6t}Q6DN9w0!8C;Imp*%))}cVxiG{1zlV*8Im2|V);x)0~{>hM-P!QV8V6<@g z6_y-&@(PS5(X!~H5-~6|taR=4C)f`k&Pn_A%5s!OiP!NiiOEAkvuaDmab8sJGaa|( zt4wq*+!%ucOw%n8QN}Yy=XdeM$NxA#7|;Lb{M?T}06k-S6ofO4ld=idO_fPnC6U6i zzgRGb>sA3syu6#uFIn&7sd~Kt{*7@X%I(?!#mj?-TlhNzhkg$d;eBQUpq2@w?xaT< z{Vf}mvYGcv_i~;0Q?gyPN2_m^BlvuqQopT|6iMF5(XQrT>B^{e*`fsp*1aj{%#d4! z=dFWC(}nGQgosjex7^QiMFPc$M0txORQcCxVOAk>kkl=ok%*fn&2qFUMA&?Fjc5sj z_s70pC0gr}EJg|}v;U$OEA7IW){X3Y{H4m2qfe24Z~ag*RBUa|_{zv2$N#+Us=+myfLn4o$f-G|5?+AJ{L`KoGpbDAw2fMALX)(M$5ubMNtMqO z4Go#c2=`%GE#H!{W?s`-KI0L{S)ky3`jfvxMWMsE@bfQCT>+oy+L8-%yJlYR%l84c zAcbErxhVWr8kIo=AO?x|l2uEKdJvvix|K4^P7JQBP(n0LUTfFkRrj%pE*5b?;DD3O z&5uRA69GTnAIqqukD6l#RG$6t<%9YEn7{n~QCP5ihrT3RmScNLrkGBq1TH(4)D(wk zf-Q8GdR%+0!C0`}hRHAmyOn#=`=YwkbhS29t-CySyE(mKjz2?)cc?Dpv#6R+2RkJc zJYHkw`MCUwm78D53~L{J5rwbp$qY&#Jj%R-Q!B&N?0RcU5a-G=O(~wN%-bfkj8RE0 zDU;=*^>Ni8IyffJQ-#o!wDnXq`k73ZMG&B8y{y7owjpVMUcDNcI@P3ikeLS`!ZbV; z^9fkWOD6fdy_I4_R1fdRyFTc-aT_><1Jhcwc>ypo=vW0|K{}WSn7sb%?h^{x=30;K zxd=M?+-$kjK^n#)$UCu%+K7u~5aKiRw9~qi8Hur!!0%x#n@OQequ3>MxLCbKiNj`n zYyzv0C)S2*OxWPv+wx8(Iq&M)XS-Ap z^1d*S*_S^pjM-%&-h4>JQ8TvA);0t@&l=+?$p?utR3MSjpe#2cU#hCy@f9~{xx6Ho z^jOS*q0Xzj`W-r#H&nT?#Z2(v{uiD9#P8?*w{*-z@sIiZ-v8O3}oB#8?>KU27+-|fp*n;gFLH!^nRfj zQs}6d5~Yx>tfH{2$~Ka0Qj1%UA8`5(rC)6dvRfkVh-*Y)?%_3Vm^9Xk6b`ZB!vX*4 z;p&cEu8G%$r3HMrbc@CIQdqoH2+i=cDVcrLH+$o-M%VTnxM(7lTZFFRE%&UKdH4!_ z?xiugqZh>FJ2We|`XPlBQ=_{V14W2ic|(P)%$jf{Kz~9anut8(n!U8cf?yy1N1<1* zHuQ)@=Hq%Y6*|J0)PtEwv3rPnhfn4rlttSwyrV+1(9HY@1put?LhLKiAr{@~w%XVFRe$(J>+IC1J*XX5SghWvi8 zkytTUc;(NAWJR(j8u3Eneum>7fkR(0g32|t5{Y5tk@1OEhP6Y>{}TE*410i>2R zI>DFaoSYxP-uI?ML&q=@KCs=+soJHbKMZ0E|2F?Wev2(6b>dZ$f=f`b2Ioo> zo}Ky@m15{F*5G7|G1<*r#%QlHO_E1D_^FKaO%p9F2SI>|^h6HtA$QOD7VB>KuW^0c zW5S%Q*l3_Mtv-g!on4cR25}x; zGEt33pg!)wEm5n3W)@styhE*9QPYRZX53Iei{%Cc`l`cggCorp4CDmfF8z81`=qlF zfDHIGVdhu!w_4Pd0K%QJ5vgmNMpL08h~i}Xy<(r4LIDa|ilT(IuGgf>v3^P?a&M@%XSLGiF4*F-5dk)*iux!dR-M_Z+1m zE)6yyS}`h6>h?wdA)$oeLpT{Ph-aN3&*I6H15>c>2#aXUmuk$W z-wO;PvOcZq&w!GUvYAW^VAmVxt<#J)tu~lv5v$xO*O<%!=fe@$>}lsgjOEaX+m_vaGZ}+`sAFgnDn#YF1nQwjy$IxZ5SFI;X4v5EWgzud(t}bjPMgLj34$lY=u$oGZq=Nz|vx6 z`PwUgBTm4w;&hrIneoj05`YQ^oeK^$aboq|!C>2FhNZ=)0)(O;mS?{A7BNMR0>p9? zPntX>cbem$AhN^{_Rv=iP=Heg5{RZFl1`Od#5cL{h9_bLNdTc^=G`%YLw6XSYwF6S zlb^pr#OUT{24jx><-w=NaVG=47aa%G#=G|MAf;Vl^;TW>^+O$YS@edF;I*ya+X4tq ztB$@@J)4Ay`^lzW@P7K>BVX+jJ}Z>6*Q{_#Ad))O9*dNI&kpt+WkC^uEf7x%4#_H# zrP=5R@Q}2of^}A-teI5d(pia#tIr`W;B~u74Tp%cmTP5se+BL1syGchpvZKjiK zV?n|4XfL+rAf%DKFJ%u1kta}$Z#}K~Ve2+1j|O*n&3TOPM08iEgm+o%HL}8#NdjU; zaXzgvbPnEYx6{c^LDEpCgbyK0Ka5#d{m;$%QuO~Vd+nFf#wubcOHyNFuL zKm89Zqhq(PpQj7w2ER2sDMy@*1BTq1Z+I8yZba}oT$uehNG?H{>RfMvmF$+-nrf@M zmqg`HCNdnmLE%{EV7Gj>|ZyXdI)4kuW0Yrq{>bUEV%{!1*ipHEZjOL#7J_3R4D9#?SRn{(R{WQ2Qw{JE zqTo-}^|R9MpL@=k_)(9I)&dVAMaYgH5}wr}G9FB5w(3@@a<+x?&C|<(DvQ4xY|sD8{KYqY zt+-9&k8X@WZC^rAfmWRmtk-X3;_2nA#f{V#!8_XWSo?ZI0_YfDl^(ZWC;|C7ZQI(g zQQ-SYt1bkR4c_r2*-%yzg&CuceB<_wYhLXRj-inQYKt*8A@@QNv@CJ7BjNFb0A+bm z-PLTlEjO~*MRTMzm zxw4L*&2<)m3eh3lV@D6zyBd@2=ztr}80Pi9I-)2?q`a1y(RyM66s*K~3(Ux&3rbXQ zP~OM^d6sNw49-wb87c@r2T7sar$pxiOu<$jz&QTtOy#SOU@}gru36p=M_9Pv zRD3lwj0jVefAOteAUuLHC#rOKko>m}c3Bq)pD+$K_s%k#gT2eAD6+4;Lasz;n*ZPP zfA{AjHWg=#65FUCCx^FcYt%AfuP?z$QW8mA8bOhiv~1(jv#S6@5EaBIzvHFgt5kGz z3ywv#Z_SFJMp9++j?jlFAl8zAsnwdvgA(H#5XncF)y%@oNKysTGM;#je9gU=&`Q+u za1FK$45Cdg_0|lB-?G4@9p5ST>qk!+9y(OB`gGPBR8vB-Rs5K z5i6@JlNz`!%?eh(X#E?V*K*w@VO3q}9|(Lph+q z6(5?>GwkFfd?_<7*}w}&3KH2}%@GKuBA{mcyk|C+X^i9+~ ztgE?7j!?IGUDIEnDQsDYig1yi#|wUPOoWw&BABqh9B9pomM;vG8!uFXI+)ix7ry(SxBRh|fkZeIe^&$Bb ziInzX$AZclsHsW|NV?=rJqg~b+E{`79e8ZbvDc!AG3ZmzC(H>U5wzfg=tT1V=YMt| zJjZqfb87G^2W^>?Hz`q@P(W4^IJOq%-WE0OlP4`WfI9`rvR{IFjB+^JKFqd|{X%;-bqf~)LFv&&`PXE#u3q%W#{y)#3LqtEc z4#wb!?dJ7fUgCx8X(Y~wsX29n5oiZT+}kK^sI6Lkymf8_+dIUoEv>gx-Zby~`8^gQ7SI4$ z&_qenzj(G98Rkk^iQ-k|gMi#Uc*YfvOd6GeGi*ta2mpMz3&Q7i70~1O|IH|Di5_vL zIlZlTR?NP*8y;;}LGV9Y8=`9GQzEjuwU>?(r91M{S6AQoH;?2%A8nOe-g@w%*(OC< zw*t4;3oc)CcKO})ocBUgd(S_?p3T(j%-fo4DUv+G8O7@OKsks|Q76;hnSetMd=648 zG?2;R6(#B{FT2z9ovk40PRgRh{u{HSQQZAM&!2qV^WLq!XtB_w818YIMX#w9hFrOP zu`lNs2mYHULcjbJmZlKVM&}87qX5;E}n&h=#RefM98) z1b*X2>tc9W5EQ9AZ@8xed9rk=czB*sKXn0#E>|?oPFX#jmmQLs77t^z`a`b2fjAGo z^$)oDOq6r(xi>lYQ*dRxl%9$w4|%g_sR={~tmfQj%D^(=sg$(heoFYubZ0iZE3H*6 z2IFw)&si{lh;WyhO1(+Z1|BB$fyodxLWpSzgK-Y9{m3uX^b7dVfz4Sf=;;lmU>4j2 z>blB|>+9hjae*R&VtnH;zo@D>eBwRh)9SQ-9noDsnl6cR}u|ifA z%p>29J-0rx+4wVVfD*umYvd9zy>NRR_kvHW@jru_oCzj7X}I`2yc@QjfsKgEHc!_% z=FY=%Xq_5=%D!s6z52e4LU5`}oRsu_4vfOL1x7sF3-bl+f{+v7Jor zQA2zX5ap7c>UxDuVE;CZWO5ljb-LNfe4## zt(g;O|1dtt(y(82hcn<}C=UGuWr55~r>~IwXdIiF!|sd_C)0SdTgMCmVmg9Icn-6f zOCHll_zB&xoo5zVdsy_9WMX}&=#WAeF`QNXe7bb<9gGKDwVOZrvp-(D_QmAd?5A%% zoxk{#o17K=V6rCID1sNHVo939@{?dsi7bQ3w$1^U|73oDceL{olYwPs{LpCgg?6ExC%M>U1_sic*amu<-zvZyAgD84jiBZfxNJ_Vd6Lw6km z8xDAG%3h*u_5AKO>mc7Tb#kqu)K~M?nbp4uHm6)TsP6NqfvRoY&#+C12aa<0f?`&R z_-FO*lkA978*!8v!9WCp7%69@W7sVBwO5;&Hk+l7L2-yZjKbj?)#lBr4^kaW^i^E2 z%+_fH`wzq!6sh#8QVIq<9SilPG|+YJ1-ck#pnr$z7Y>HxB$IoK-;F8^9v@8)#SSbF zhTr@sO|^8?%#89UE9G9v&GI`nI>9?@rf$3pPQUQ}-t`k-zJU)OgqfEnfYIZPn;bQ# z8xNxEO0-C_v$t@DfMLBB8xR_@zhd?$*mzcN=+TYu{{+mH)*4N1jI7ue8M!m5y3fB6 zyoAY~sF6}K!qqbOtxb|2p|c!_JY=-U|1T}RHW+NqPv>W@cGsp~Os~y+(OsMU-Qd~$ z>CXveg#V7si@0ThJNCa?2oNo6BXt*L>&lQSg|c`+#!CAe_0gKsZ@xNtc*zvj8aba_ zpulZZQUrJBfU21<$r7E0Seam}0#y`^_?i^V=1u!|hj-7JQ72f~dSnB&MTAe~+_Esy za@mPrt)NtP49T^W#QvMQLRCK;)e~w~8Z8RxnIU3i6BZ62&A1h?R%6ED+}&QRA{@<# zQ^|YXzZu>uU;}`WvS3v_cg4O;Mzz}*eZ~#(abeaBf1{~k$pAP+BlbuM3{Vp1{<)H5ni#jqS{SfAjd9F$FW>V-iKgU95?gG@)eZ_P9tYwCbYJ zRYRRX7!rJV=s(f@{p0ra*2RVS+>hqLL7F+imLnKm z6L`9-t+uzC3|D)pT?%cwdqSRO9q8y}5D`&Tg{?&fs}gtDmA8LV2E=b9<&GB5Fa)KwNt10?DhSLn}^DZm|}-1PQkP+_mMqHv7>Z@;Vj)c2~Hx0 zyZwvgg;I@}ET(Cf-FSSrAIi8^guXy|jXUs~?A!&90;fo2zE#=@I8%H7Dq4|@Ozxiz z9%YEO9w~?IIVt9)-lj zmv8xxvl>oSB#C(R#|QzLnfT4~!OWXm*JuCo;}9&Sw3YvXNT6*D7HEK(y{5cNEnb95 zlC0Uc8@EY9r%i<7UmUjyOYjl-)fgJAtZ-~XzhBX%=%ly`P9!bmL#v<#l%j;2lR5s1 zFzYwROK6Lv#jrO&`|{_*M3fU>T)Xzh^ZA$F`mct;t0|n%oJo{*)H)5;B7Ky>za*;# z>j3Dsfju_aeTWO|6xcPQ5L47{+jHvJY|8s3qNowuz!Q1EBA{kr6}1Dd7SgCy&GL~% z6oLwuo1%>{yr;^0K16olbnrbcq9^z%m{tmSw@I#ZL=H76 zlez^PfoD^q6I4Q?cbJ>UcgadiF%-qVn@bjbjhVAW$YO<(MLE7w{C8M*z-|fvuvXW6)GW|U~bmxT|6wWlkrg7U)36Pr114mrK}1obdl ztPp+X+vBFe@Aw$X2S1L+20xp;%W8$K(O+>`yjC7Hn_#4!v;_DG)5Nn-#{#WjrO^H7vjDJNhl+Y^id0X%6xcVESkk)Vmg## z&eqiNu&kOvE`*ewO2ld;%8_lzq5)aEu@FX(5&P^eWeYi@#6|TGr&(*=Q0kbCd*MnV#N6{aTn&uBNwN63G>HO&%nK$6Kxvid2n5 zRG~x&KQl8FD|2rzVJ?nXj+UrLCh22P`UlconE7;gt@~nh4F@oP_Gi7Bc(eF<_hES@ zCIkp5o7m-&hJ&Br%pbax>cO;(YLrcc7J>GoZij!`Opav;A-9S>K=s5XHjYd|3~Qg( zwN?cFed47u)D#Hg31vOM3%A{+u%l1iU0MckZ+6lj*jb8{Dzi1T0IuD$EB z0F;wuH{d|U>WE2nZb?YFeWyN-Ax#oEGKA`mY6rQzu8u}H#%4Zc@qCn1X_UO847>ED z#@l1;pb5M#o?3brm}(wWZT_s^_;`JTsspLRlRpuv>e!uOo>InEc`D|%5Bdl3j91DH;l@O^h_4Ds2c()Ljq+7*wE-gog2EoePtHS=ExF5Oz#r~qA$xYeS?0C!;cl%79hkXxF#x~rg}^SHHR)C!z#@kx0~WSy}Z}~;ULpp zGYq5ZkvI`?OoCapU_8f!^yxn{kp1{;xqtG)NubD^JozqR6SF#hOe zytt+EIA-6bqCmzqD6KNRZ_W?W)rQIO#_lz%qOOV4Da$NXy2Z@e!1&9k}4?%8q!9F&!ag+SWH)FM1qjrZy_Y_*-D04%5 z8J-#oOsStnGb+Q_626N2qAb)fM&P!!Z~)WQSgMrBBAZ5cls&z4A$qW2G$Tv8Ip-(S z*}zg2Eb#Rydf&8eB)FGGatMLEoiUy7j7~KDw4Kr@w5$-OB1eioA;(4)dTWce>;_{Y zm4IM?OFd+MkRz2?6qUtxKq~Usl!Dddkj)H}+00j5MUIYPo^_#ts3Zawd%XMlujzLX zDCqpTmSeAx|BC%VRW3Xw5u~p-(kba4{eTnk5bXl`9Vx_#7q4J1e=mX zQhoat;Xbu|05zL@_$hc)xk;Ozdv_Zrq~NF;q}t7H;iOQ`U%|HSk=^Gt!cf8~{V0WP zIosffMY{odm6ZZc)XBO`k^Ow-e5&hIf}&4^h|Y4MFBn?6z?H1Y3AaC`n_<3WHddR} zM4XVM#wIrV=pY~<^o-`W)wR4>AzR;uT|P@B33wPAuC6@-c$eTuUy9Q{A6Uq62}Rdy<3T|AVH-(Uis z{R2Yp>=K9nVha|OSULPe##lWmq5SGfnvNF^7{I|12jtw9n|aG1gfln$!ueU&w#U*)(>p)@zVeg`NUja@PRW#bU7uhfH@0rZ`PJ^#_zur5sVR$bKyyL!tv) z-L0T+Q$|$ERHP7V=WReH+gX~!kk+?ZV3+E-;$V~0Oz*pz82g#!vdxr8ig#?wIZZlK zJ5z#H7u>`ti|QVxet5?1824inhHuV@eQ8R)f)>FVn%{#!95B<~ zEmbt|`s>;I>?xft+~gi-xj?7BfJiW4R)QaQWtj${og#5NvZNfP2jdjbWdueMIcc_c zxy=;_=H6Lc95G4_%Cy8c)5W>>t8O?|bpr+Ut21Bh5e|Tz-d&$R^@|vUE%gK{GE`Zu z#GHgzbO^YFUP=@gt7jntXYbL)`YV+`1)JT>O`&~(F<3&|ciL_2kd!^#&vjBJ*&x$w zelD#Mis%D$=v!xxtlIu|sS!L2lvG2dmJB*zVWcsMN(fQN$YlEn2h)84TVZ^-5xw-! zBUU0eQ-)gRs%geX)`^s9v**wpRSYIdBuv~a2({Y4TBsj=%dnpx3SPAv4IMZNwK!m> za-+#@Hhg(Lcpk)n3qi(_c2!6KzaHB?X{h*HI{fk;o~M&j?!rrUfbUBgX4}Uugo>my z4**?tH(cfYhpa_U3TwK8bCLq`q_Ntn2l2Hvv!~yc=y?oF){Ib){Q(YHcMj9>AFLUQ z6cXl?M$mn8Ib8}2BVWI5Z9LLwQKfXNV-UA~g$w=}2Jz7kw1xzU7A_VRK7?gPoH&4> zr%gx)H{_aYUOtWyfvI|SYA&RT>+0T78IUJwUKg$`Ta3uRF@w1%7Ha~+`!`Hz`hA!X zxgbgqx@j;0$HMY|(>T#B?k!y|6CqRja9}}g*f3?{`Qbs#WA2Mz;BJ;Gg z;EuazCWWPih2V?yK^7XPmLLK~wE3^R#Y6~NVBnXGdU^t(tKRy7KKk$>MB#oWWrT{_(+ojn;zU$Q`^o?qoYHaQ#b=Fq*6mp2Nt!9!w4l1hlDmLIs zX4TsdPUiwYcz6N-RX8ADcMJYDZyf>E8z3m5Yta_T)7ONDq)wU!^bm>(O6*?#Pt&l- z-lVvuNnu+;8G4;sNPQD(ZJi4h?<)!t0I5-8Vrba#viP~%Gy7~{4o|$tRe6wDMZ7&e+?TdJdiz75bM+u{dTm@ z(ng;gRdWHsO&qG@;NXfF{S;>HUJd#gt24AIO zK=H3;f`|!qz>;`EOaM3qs2m{7~3J^|L z4|C*Chbj2&HwUe^AnoW<1pYW-c%56feg}fTaOF#=9Dn4zd+s~XCBM=W?v^59a+70s zc>Xhp$o&!{!2r;zC$LSTAsx7i{}^lu@)|{2#eh@lU7AuQ8^ClV7jt&{eYji-ooMAp zc>lgm=G4!=9eLzMy45^qk*i(&!8Ii~IQf3|8@`>Lf1heuO4MIoeLjEb{U-PE)op49 zUS-z%*!tAQ4yYRF*BtJLB~5ZdksUq{&&LKU3V2ggWaMkAhN-#(AwpIC9nL|c9zcr2 z42B5;>#lysf)Agi$#VAxUa?#?UlUIr>vt~cN%J7%_zGUsam9WROp++ac!sTW{RDeZ z7;_5VO7*-+8p%#q1kGT5B(Kn_(n#95w?`5M{aCJ>$u7Iol3^gLtHxC1NX|Wi+4pXqta&HSKIO zDbjfmzvsTFJR_B$sbJLYof3A)mdu#49mZfmp1_kKgL||mj1r2SjbS`h^9s~HR)Ra3 znq_bySP4>PhIvS@LcFg^KUWua9MQnCxNA1}^)%bb<8#^!hQsq2yeEh8d@9@Fpy_%F3p*CI zX34Ks+IA|U%tB6p&(kMxu~+_aoz!XY^UwFMpLieMU52YkfQJ6pg?GE9y_13SdV>brY@$h6l!mr1_(;BQ~NW7t{3E$QWL^d~a7K_7;LQh~y;I*IAHNRn?tl zZ|MSRV)(%_lF5xR#$hgHWSK6We9vgoX(8CjbbfZ>_oHhkp?G}y`m_1-uN}cq1;Ta@ zUNC~|9O8>Gk0%M*g4@Ot7FPH=WNa!62p&xQNuk4^W}1+4({m&i+N8kvFbb=QVsQvU zvT{bdw46vWgOSt$L1G!6Y4t4>T6K3+J5ELt)>j->7q`D!Z}H>1phCtEgRzHqq*8&g zL^kbM=H%+73MQ1`K32D71o9z~Qz1Ykri~^%?N#t>{0+@YW&mZ1w2d*pqC^sepiD$D zPRGT9gCYBj(c<4A`{o-hLl#tZT5RJ26*)AHbBmuZU>DlPc%BS#elmaV7k>bpy>{)BcYgeI{>*Pv z+(%yd4ue^0W@5nr9$hjm3Ju^|@!3aw8`ca#TO)DXSXV|O5SW3z&A6~ixQrm)#w1!M z3X%TXOp>L2_}p&m#pFw>H%>*W8q)SrnTo5OrjdnsBxQ%=+7LZBihKe3 z`J3Hq!9pI^+orah2F74G7W(nibwH4JvKXwH%5m7wUxyG_MTZ3lJH!$&>}_{7p%m>7 zX-=oA7}+ALGP4@-q)N#%^|&Rvk>l@^Twy8H4ZMjQUA+T$iH~h1L)*cYmPGsY7C zS`c&Yn+**uxd%}wPH=ZMmGAwAqmWFyu&F8X{LXnx0r43^oGI;Q&9!zBm36sjpdHz> zG>l#E34}}b?|70zOVnJYX!T7yHqGU8Z%!%PhQoJbU$sqZO1NNOk0G zpx|6yix6&DQmivqmX6!R^bV4>C5YUz9;*?p!a9URmN-Ne6XK`2vWV4NLkf{0HgN)* zc(0p3Z4JU>G;fmiuk#mwc9d1|&hDaYS-~R)!9^WrXn05jsl|GAkq;hS&=UB_rJt|_ z%!t7Vrf$u~tZ)@j3&F#(!%~x{=FBs*{3%A6b=}1(eEnL5lWocbRtwC}n<5!^jG>;c zXU?Uh!SUQ&l!MuG0qwLU*})cUM&FXZWK|F(!{llwEpFQzt*@t9>{w@vmuF3__-+@o zV7CH2K6Ri_3tVlaz-`jC8mrK6LA%O+7E>wFvTAX=Tv76ZxfGwOMo$Eh>w%mNZwIH7 z^%R%`SQW=#tjY=lnmxWEIv+_})&X@`8s0O?s>tw~`s^9x;v(6OH|Yn+zS9KoSjKx; ztOSrM%SBurWtHafga9%7xNuk^h96pkJq)Fj4`f4i-(E^$MRi^YmX$_pbx$9@#BKLg z5-2wPna-Hm|$6-cMws_F5I<+SiJ&7CuJpop4X+23{ zZm3SJxU!5zgeQwh$ngw$FO|7YoQr48g(( z0c#N3m{d0-(wXpDEU^gx*u{paf&&-6c$c{F2HcWoK=u=VK4^l0o}cg~pb1Ld(k6V6 zxgTP=c1&wm9y>dY62y#cE~3ng8FbR%w|c5=K-A){zVqkIcZ(Pn;8LUz#KJJ-fS74* z5^FJzQ>i_oBpa3#KaVX{{=i+VMBQeK8>t}C?kqtPCh~bLo9V-ktM8{MRrNOHgk%tD z>kez+xP4pk1~tvd1&}XpvI!r`o1F_4`fO1J_qjne;zhv$MxL%wsDjV9A=Jj@sUmJi z99IZ|P#|$(%x&8wI-rT|hE?t;0m4;zrG>_Z=&qN26f^s5?fZOR5gz0vzb%70fXYTn!BfX(x*1>l8>!OFS5I%B z;lStdtd8Fr*$kKEqUW=Ja`55I_Pvab9g&R-$nbXh8U2Z>y{KOpYVf+*B;20 z{OGJL4AU<(0hN4e5(f(Lm?6cF1aQihZ>j8&J+H$qY`cHh*Y;L-YMVtwS+bXvoE|6- z_4cEQ#rel+^v_m|mh?f)Kt&LRD(ne}1?qfkaM;Z=izR}@Q|-%!!l5Nxco(N(ewZ^= zg9G}XM_Ox;HqLsY#}~>Dw2G41AGPdh;v5nm)#o!-RBd8KQ-ocEd^ohX)_(tdFvscd z2n-s9MR(_@jPA%Th9)zVvn8r_u5EI(m zqxspSOzawK6^^c#B2c&Fi6&=KbPNB2Z}BP~9NC7u)qCj!8hqLUNEBZcq^s>y7)1D9 zr4e$WB82hh{sXogVj4cpl{Jsiz0BkhBTSwU1$5)rgo|v1Aei!`5`Wg_j3h zax{(igz!2=B8QF=C9<3CXm@h5_goICwFHu?7Kb41%IZd9g5=pKo<1iYFi62iB}_9* zs{ZYJukinwdo>Jb9i=%K3vqv{B~7JrmN-JPwQh!WMaHyvzL@>3znZLWPawm15PEXH)(v0J^W_}JZc z!De@J_*;$r*u{_X0;eob?I^4>cV~@V22c>x3*xxk?zlc)RMPt?fpBf*)$cg;2SQFm z&i=`T-#`l3r-mLb&b+<8aQ1B=Jx~sOOk+N|hRf`rf}Y;d`~szpG0F%5CDV+ zSJ`=FLgm4P`Cux=u@bH#!|+smrT(J6ki^LKbsqY+ZgA))i?Cstnpj-=lNjuDFop;_ zf5K?+@AEUiV%#X9KtzO-7m%q9SyOxwXH7h}@FI2ef$=K;oS~zQM>^E6rk}?Ya2A3H zgHQo^ZzvTAZ+NpnCEGdaWmmbk_9yK1bG~_c4R&q(dNMrh9P}+E08NABS^GSQ9H6QA z1XYHXn%l=KmUf-{$U<>BvSxy$#m=gQ!&qH+K74f9>WI!$DrlXNSnTr3Rd zP4sVEq$5FLh5(^<$k8B?S&=4S$>M0XN>w(xlMFdQ-UuEj8}L4mxZ?2Jkg$S|#J)RN zavIDE86)!K7ePEj*db7gIhZ~ZJySHtqs-*!d;EpJ9buU~JXeLA#T&^hw+Ez;#Hc6; zP8QqCi@^SnoamH5Q^{bOAnj8@GfjjI90E=@D4t^l({D}~2dYCcL(_Yoz;W^$|8>_^ zeCp2}s0h1a?W5g6rbUSXg~UegV-T&_1^=VZ!IkSf*vM#c_C|6fj09aA{F60cIK$oD ze<&-_R4|sPQ{}F6)*S^Se~q1-Au=R15H55|u(`cx9fyxu1^y}NHbxTShlR9(VOArV zd24cgjFGrH*j@!qy|?C5IZ!}AfJ%h;>-^~-Uq4ntSk#c!vq3ot4_8}E&rp!?pd6R& zy@D-jbbDyXe55XpFmXsA$>E5jlE-^{5tr4^F>#+bQLywbp~2whIPy;GTVOIf6xBAg zqM#;mLZjIU1%%4f&9r=Y2D?LDoK&(Kwk&WLN^e9@FtW?3$UtecO+_oosP>NOl;wkq z0EKExiC@jHZsoLyEg!pw%jw0O`rd^Lz9<{`IVBslC#XdvN)*|<MI z0cf!&P+PMo(b|3xul2>hMG|D3y^)DNoFSTw#gL9qx4ZgV&gjCpJufxGDHHm18~)U2 zaeBiTbMmd5Ag%WNCbwK`V06WycoE2~tTw+7MJcQw)A?^#7BM{2svh6v-)d@}@G!W~ z$ZK)_JbT>_J-Mq*XF)i#dgZ&%Cs!))CdJh^zdz92s$GP8wY@t%|6W zw}Y;q;FLT<#dFXEF6~*S%Ak;lNx9HyH{6k7DtJs!l{L&JfvdCY4Rxei8`dD(7_`|{ zhLHTSUp;TtH-*)#KWOq1XK3DpKBBe(yIi=b5NiSNxVHj!)$tb0^Fk`i#S&UBv%S>a zhR9mxSzZ`V1VpL~1fMk%veG~S3HV87IGqQpj4YYA-X>~ru0@!%3zMsAdApk)^8k`M zS1^=h5tevKDjZ@CvTvtQ)PX|p`jcluSv!LAZf#Z%4)EISS zT3RyG^hWx9vu`bhY_R%6{&C!2vQ7^;-ZTrH$hDJtQJyD(viT6x`2VilDAU0A^RFQn z;%%`6(W6RgL}?ZFHMqRMxmb%>ztB`tuv2eczkcI70j67=1EJbkI(_ZcSOugOmK^=v zA2GYE0^pp*VDp-weAyLAEVrSzS3SP&>$6<$y6l2fky``63c1$5{17W)5`c{0e5#hJ zUEF06OW~!`)Zj)NThz)?2}DFrHyL+H@(sC=_h+4&`2=Z&`z5lbmVZ`R^wX;v$0W#) z3=z08wA^f9+)gsYgmvJezpb55#bHEQqdEt7stSDtk+s?@tY+`H@d_nURpWx%obr(9 z5ezEyLaV_n+MBGcA4wOC>bLJyK1eAX5#k z$@mOnYYD!Izt1rT*FXwtL}kVE_y7uXlB*soC!{~(J~&S)2-PxWqlPVuQPVG=nP>fA zsIc~!JU*Lx+uB>AVbCc4i^Ag?2c0~=HvJFV7L&)9ze(j{x?zsZVk75f?oMdG-nzB? zQ|s;n>TkN?;I;m#;k0NP4E`xP1|8Ry@>fxT#Yw`(*|%8E=#qNFG#NpZ&YZYAAh6QZ zNLkrxX%v-X7PD6ty-j_t=E6H8viuURnkBsP28$3IESl{}>|yaRT40=^hD_kVpZJs@ z0bF1~@^ABV^t{0|g}O|V6N5OOcpy%B?{QGFBOXW1fop7fTbj*+f~7ndb~Dzn_wa|@ zFpVh>?;d}^%Y`RxVIodD<@QIjS%2V2cTWcy)g-saCWi+@U?Zey74O&$k@UU!80TvV zlrsm^ax01tY++NrRG~>vgIF1%)f+TCcx@C5o>_fDXc!^j(a#{AwgBOAkUbwrsR`}! zq0C^-V3Y)>94wX>r}PL3#N938QwXG!KMft!PE;7(QN!R4Y?gi^_aN~AbfMqrh0+}F zpQbJ~ca8Vb(!qJutdZjCTkMPSrdAL5?Sa1;Z#E~(c zSrwJs=jyK?tela2{7|)V~ha<27?%sLQ+aX5}GA`pxa$ttGc>Yt?p`no5a@o%KIdHwB~y;M?1c4>f{4;E;<4CF2147xHC!I*c7h>Q(hBMWYx1F!d!#);U$b%M81}`LFQe^GNQ0@eZ@SZKH|(!G|yHG zhU$`b8|EJ-uMj!aJoj3(Hg89_wt=V;G;lV_xMDMJ4a~I9T*6T%kh7qP`)t+|Mm_J4 zBXi-`J02H4#-tU~1wYT7_(V0K+1cYNl<{%q3=eYbC*JxN!#pQN&4hr3MSx9GN3KRK zo4*1W^NR8xy;a_nv%MUWx#!Q|{OP@lX05zPzZ`;ZEKXU&eUi(X7GNvls*pB+=36ES z=ifekdQ1?R!5wr(1L5N>z!Dim=DHE8-T&+t`ceR#GfDhv{TRXA^d0sFmajKT6_Dj= zM@-y2DORgY>1w1K!VMp~uO35sh8-s~C_3J_&zTSim}yIXYA=~Hkq)c6x9l%aK%5qYh%I0{m z-KA<$d`A6)EPHnTkhdpM*y?oo@oODT4X= zA(Z|$6FK^JdS-5s%I;Bw%s4j`nQYxf=!=W!sgXM)%&1|08&$HT0KfeI--au7C9iyx1D!dr_8O+mha4yCc1U)$$0#naW#Oe}rDht_Zh|KlF zjN8lT@n^ZAj}xe16Hc!E0*}ZeX=Xu5yPq5_V!DUdxj+7(oKA*++oG^BEfR-b8){>Y^Ac@pEJ*21miWbx>GIta>yQ|rcnGUz@ig7uRpo~Gm~yd*G&KRs^~)udt!X7I${`I7 zQ)Q>b+faajK&in()3mq9Pi*TRv9K$~x=lAkT?C)9)hk!;%2-Exr zY-5gC^zzuyBs}x&=Pz<@-g*4osH9V>dUf{?eDhA9Y`q5{JO0XNg%>@RLK|+@l(^t+ z2t<~gW39^G2$O*V;i`&EZyn_Pc!#$>PprwN`Z3qi^178>)`_uHDGfwrY&S1HX{5u@T}?nkA4J`O13KQ|E)EC7Y|{QJbic2@Ko`!9a}s$>$I>7p|Vrl@K5 zPrS3ZMv6G2a5N=xng7FECs+H2PQ3YPjtQIZ(w?<+uU{0odS{c_i^t5ozdiNtFSq)` z{?A_fqy-jC7?0(gg=t7(MQ>#UWUNUpDcZ@BWk~MM zjgpzloOljF?IkXO+Tsv>ANXxOM^l&to>yPpktT||u^}#t6x`j~Dw#vjiLjZPAOx>} z{_gUMfkP=mrA4fc)MU3D%|^wAeZ_~L{A{LDVk0&^JS0Eq(&!F)9O_9lsg>Qh6fps= zrN{9oEw(o4Ckd`NCZ3IPT7x!WwiOiN#rf)_mJA3M;4%+#B8V{%R z*#v(LjTF?hGS0+89(zZkuSg9TFRB;YBPTJXw>kANP257yPHN_XR(kSez^0y&dkB=gtzowWaW&^Z*=*gBL%2{W-!$ zD!Vxv^Dn;hja~56SgE7v#8DR!cYX5m{r=p`Y~|B0X^ay9ZLS?UAzUtRvLzea=!Oqu zk50XPa-%=!A9&>pBaWG7!&`>nY1CfL^DrN^pWRi^H9O9p{ruJY3;SOA{plPFhnuJl zoI^FVw=_II_w@(+Up-02viR! zJz=Z>XSK`k5uwybG*A1GJLNce9TUDpTdV4o_`Bu-+fp(@hXvp1wPp7%CvWAmdF(Em zWvb%Ekc#+z00~U6@!^Cw-QY1xSQ$JElif0NyNqNLvufE0A|(95v*We1V&^vAEy;8>7DMX|yy4K-C$ zQH2innGc@*OaI`>_X!U&O{!t2#8N6c)sW)8Em64t;^me8ZpK3nyz-TKNaGn^0+^|A z)-I|q;)&KcSz00~KlS4ON7v-*GaLq^$N{1VXN1`uLex?3xvr82@O!#+_`F4#Cf+mZO}Iuu9D6@o9Za2AqvaYU*DBLes#T@q9LxF?4GZe}ErBVj-p0+l;* zmi-ha)&ySFOm`6k3nAoUN;$el9@-3s}S;8pZ2YwDJ5)1YF`BQc<0*Qid%R-~X6MX!84A`9g_JRi1FauZv7 zu@d)4|F9B3IhhH+-mg3QI8Me9vyo&ZX`={ZO^+toE#m}Z)fzY?+4ssj+|BVY*WK8Y z>&Z$Pktph2m96WHxlj;60bK=%QwNi$XP~aD?dPzAa&#W1w}R=`!`l_naLQlKl$*rc zVL_~t1B2%eNu7xD7fy{L3q5*``#mOMU}Xc-MiCm7usVD2cbnCh$~#ukx*&_b4OM=mrBgS zDpg>N`UVzeVLBP-a7hz+ReT_*ur!QYl6>IU`0V@n(#%rhJ0DEsF)AP>}KC~5m}@gE9VoXU1I|wngKuTyv^c-%??ze z%KPZUj^d+Am62gD=~zx)vA6mawRF-98|+v;5KAYh7L7(Px70#ob*nt<-VR%;_#KkJ z3Ee4k4WsbXMEcyf-=2Q`-}}d3JHz!)5{Q+%XwIKVmyZ8)?%cZ%Kt-DSp+68d`2RRW zB~Xr=ZdFW-{fcm^wLZ>$@b3$U`@e6tE=7((&PmI1qR%(M*oXOtO!d=j6aj_KsU;VC zP+NDp^%jXlS9v;G5GbGB@m+hqWlz_rYu5YWcX0CD9_j1V`Jj{Xu-YAt?64V#)B%Ew z83d-lx1+X_FXrKxSlJ12Hl!)pQ{fpF5uE7^0BH}Qa}R)5gf<*5gZ2Z)DP_c?Oel^j zm9u@YVt{>>UrWj5QMbb&?J5|n?_4B&!U4MzV1R!{KWpAaO8qCK9Yvuy;V**+dS&BhhEl@wO6xH~)xjHO-!}O19d97!JjD zvI*C_&WNZ|IGLTS@ak0Tam#+~apO9Us91^mC1-3RdTv0Vsl^x53;8Fc90vFrlw|^k zDwPvUwG>&3uFsZI5E`8J*weeU4>G;8n)KYfqH!0amCG-!Q)2W=b9ZuurK*0IN(&_= z`%JlipeJt?=!CmqxoPo*f9vo2<>{J=6(kM6JDTw7Ew+YERBnGyN7oiN z@c@y4l(4wS#N&1}&VTrSFC2Wgfd zC-SfXWvAN}2`V3OqN7FzGD*f-4AqWIsFr~&$+YZfjd;{!&YBdB4Zah)+J)VT2vIh6WuocO8;PvvVDUhwypIh%O zMXk3SI?XpOzO?k+t{Q96!#Hh0stAYOJorjxz^B9pat2I(wK(Wu-iCs1574|p0Z+|) zO1Cdy$kv5}9pf7AqkZ8Ko4d~I%hp|L0N|jglxE{wdPuum`icZ;aliVn{e3T;)pp6) zxMJ1H#RN@|ohW$ohx>YvIs)m^YPK+`cua+0rq7 zq8{9qa+4Eo1G53yC4&!=&B^tY#f+ce#p@BAOy#W@1d6EdDyc3Em?5unF*C^+#Iwy$ zj(A4zOB>$;k#-}jb%Sc#MS9*6X9fIrq>x(E&_`{Gjhz=D1N(?Nl2$#vsFZ`3bb#i61fOK=8t{7vFOMZ%ie zLrTrY1GmVN;rw<9DWDfc-0W75O)mXiuE$zDId#-HG^x-7#w@Do3({Fmnr~6r-a;06 zWvF7Lida0hqWxa6y_Jwf9N3LQm);tpEYKPN?`K7`Qv#}u>$Ryu_P9L-s5_&ytv8yR z?l8PE2Aj3S-Z>--Ko(8+1}O&l)`5%vmga-_h=V}h%fA|=g{PX}yGhRynkTBT@Lnao zM4nNDR+LU&)0_VSmgo9<{bb+UkI)5AxYQs2J+8EQ~4pvUm% z&wthbmxcKc&ydSb&pqiKGjQw7{TattFHHcSZOu-yDq*{5(gJm?S!$Wrj(6jFNQ(uu zVD^LqiFf?1LgeuaPX)JC+?C$P+|$6mqWVX;m1(%&PtEP%Jz6Z-HL)g9B+0|6>GS{EzV zJIyn@n2Zw@)ohYdkCE22l|diAj@4TZkQboT0XR^G%ZfY3vuP$DOnQ3z_QL=bkUSrh zJ~NJI5{<(kb zHyUPgt>VErI%!KsGUn$e{@!2d?|(sIKm{jMcc`h}BJGrqKlj2vFC6}3JU5YbircoW z#_#0dkU)!e-G*-EoXKsxHbr-?s;C`?E2bXw;dNogl+(-ZKOA=wA1N-DEPd88qcI)I zjB2gz@$=hGjSww{W#`Ga45}q3J~koqqaH{U!6uN#H}$wBZ5>{Hs*)0YL|roXI?AH9 z3oy$#U75UITx-X?00x!zj38G~g$h97fM0YrXwVq2Pid_&SuYBY4cv`MtmC~qRn;s9 zaULQ#-FvAj>EB@ewVWl4r9F3EyNZHS6e`H%#n?HF^<3((_^2aQh^?tWI)9kGeNK8C zoM+xR^_n7XrCMW~%$$D4Q*>g*Kbx&Erq10f{nL79+n_=VoZLR$e_Hd~#>H7r6DpQN@tX_no)d#?c%I?q%!X}4J*#rr+N z<`Lny$LCuzFXIh{_I`Pcm)GV?6kzV$sekIve^Gd4WX~ps>ZY9Y=b!&E{(VZ)I_>@JF8Q+j{Z*68B7egMD1a;Lzp5eERQl^`7>p~;K z%3U2lQ!{zbpXI8c!orJi2)U{nW`wQYzlmic0lRUtI$ zC00Up$V@PBMa1LL?PYBi zxjP;A8va2QrIh?qK~@QZ+cAR~QPw@>zG;TFTy5|;hsdewQ5wS$O0J$3<8XF|ElhTG zeECEYS8I9coLlR9ceaWufw#{*cFbMA68_OM=MfyGp&bV{_dTU33n958mJ~W-(A>F~ z|Ea(4MT#$W42{OhU&inBe)~6yGc`lU!n?1H0GtIkijaU!nP>x?YRw*xrKPX>|Fkgw z7D{|Hl@*?wXa*GPu=E+kfk+8oM(c!1SlkBuQx{Yl1G!>tENaRdpk{k}8TW4ec5-W_ zQ>w(5VB+9*dr|E35VqArAXIcNls>BGi0)F*XMu8{3O6&$XGwFdNOqo`6_w01$bNtu zpf7hvr6A4fu6hDyAV(_UH1V`GWvnvS3tx`UCV*Vg-gj%kf+;5IvMJz8$CpQ`Ib}1bDx`>@z zXFt2AG;f0&P7Ba=jPCzv6}7~!b?yUmSVn)+5Ux+!xW>PoHr`|C6#+_?>zY)$aWEr} zCbVqsoTF{l$z}<_w&um37TZNEDvwDsb<(G(a=7-?-6IHYnNfYE!Jcb(=A`>+jNAy~}8%s;C{dwWQA43tX^0GIjYM>FBp3oAE+FP&! zFURhv7=u?h0(Y}TF@6AFU{nI%^=>Pj(dtr(Q;@Cgf@cC4*?Gn_QwtE|=ZuuSLg0Q#fWrA%ZK-p~m?wxhIP_=4KcQ2Hg(0LjY-knB#GNhltQ{L6p ztI?yTgd9bkz!ymh-#+{2{-Kj+1nlreKq98DIOI3}+TVzM&oA^pH6nv}0H*4SRvo7I z#s9uA|GWWMQ8;h1f@Fr*%Vce>gNK`BJ)wRgvOA_YMjVj{&H&#{u;V(!p_{d=#EA>g z%|e|eU;?MQNcl2LWj!JbOiM@PP{*#SYF0YgkT#wrxzd{tIayX#6msCK%Rj;HrRZch z8Jic^`7*;}TgAe&nbuhqwN)$66Q>oS6BLHw`NRx)$0)6Ot}oi7D58N^5HJ2CkS>)& z7d==?2M#Vl!Q!4b3 zj4=}8Z{-D25zU^h9C(k+lDc}x-1(3G)bD*@UC$0aaB)QZqmuQ_iNCh0%532{bkF{4 znkO55QchI-EwQjLP4DeLE$sUP_n`CA2Xb+>Vr*du0>L=SAskDAiar7sCxp(r3!)3Y z+1`*-rm_HbZ_yXZDc6B}ZML~q0WLv%8$fQBWmKXH0?~nlgNdKv^4D|wT7-u=IHM{W zFglBq8no2X8p?o>m3o6?m2zb2rUPTCp+rQRugf40V-h7LEQwW8mb(KD5GV*j7|8+f z`1;wlTsSf=IK){K_ypaSQMyUWT2>-$HuRWKFpHf$I+vcoh<;j#H%7cR4O4_NSyQBx zo*}oD$OHfeWlsqaChJNzuTWLsjj5l#{TTfrF$zQQ2&40~$J92jR1nyp?$J*+sm+S< z)IjxaiE*W2PD|5B98zr_4LH8X;_iL?kNXvJBVj4yh~Xq>(gj)6JANm|u9^DI?K)L& zN;#w1GbaZ?{87U&W!s*I8Fk2v@)OvbgBpXjaY9e=mWW3Qvf3T@Xg^o|{7ZjgO$q&c zw$tlO#wL?X@BU|hxzC*M*W&GzPNJB}MYS|w!nt^&|L28+Prrgk@z$}i(wi(71XGBU z8{v;D57*AdAnKi)|BI0*55CC-sL!tKgh>ag&djh1L|s=$p0!?JPiQ%DP94GO?6_+v zoVnbA?Ie|~pt?T5%ZzwVkx7WQP8jyMA_g*cvU|tqoN9@m`Iub!hXNrL#_Rjb!0eV* zSOOBxcB=7#*ALC9b5)ul+THmD2A+?y_89%DTNJFKCWP^MV5^O5?T2(1l~v%)vGuw7 zpDX90Ddn2y^|m*m7|e`6a_(Z=5qSBonYj8d7KaC+u<`P(iSM#UB${>gCO5H!p##J6 zTejr4SXRQatunhV!2~}Wz38~PI2+Ahd=S?`HoE;=2tOumM83OP-5IW zg+cQr%pFJ!zlDu#QEoJSlocrv3?s)sR|2U$qgn^%kXyW^iH{q+rbcMnpDAKNNA*TX zt2|py`ehveqZ_;n-<e6%-UofUnO!$N%xm zmtK4Z60yxp^U5O&{om-wabWg^*xiD+np^ta{e}G}o`30={f7$&o?ciuCEeK4L59f# z2{oFlR}Azs;O>M2V1s`<7m@2#;B1@sFe>^et=`BrVeo{xkh&~AIgr)Xg>Wdi%&WZ5 zsLIq>35iX4a$3%f++`&oMxXwi9iH$VXSi}+0?GFHDxSQAE+O8ifpDXyx?AwPOuu=eSclEK zj44W~E=idF|>&4Swe$so>1yU3QG3x!# zFR={)EYeN4&1}$vRTzxF@altw!!Lb!>g&_reE$B64^en{r!#KHY~ovL>2hWCb}ntqGZvRB z*AoTj^-nzP^5DK}G9(lhzn!!NQJ%T5Cj(KemsqTatSCg?EgwEg8NV$sz_3j;YKcLn zW-q1j)8TBE)CN^VvH`$X-q`8(+0t=+M;>M~>yL2v`K8t7z8|^{N#%yPf?!gOgvXY$*J{R6*(ZmUem{F%>QvKlz-?_+rx_FaKEb+9TY&M%#P zW_e-X$qyHu^Ef^CexExQwuz>0Jy3G`R00H-x6OGxlDE2n|5oTkk&}Y@T!HJXXGt7>Y!t2*5==OG z77j8JG>H1TK5m3HET>SSjql*MCzb?5MB&p`F+gfB!KP)pR;9xOtcmqtWnJ8SY|RQE2UP}MLQFL4Kq#n(Hp;q{?;45Pta3Mh0T`dVgD01_p5lk@Iyn4bE08P$ z#P#pmxPWFC#)dQ(`yNP}@YqJB z)AGdEc=HW=HLorA=YDr)cX75jclzaB2S7+OfhqI9*VdW$7j|0@GXr8`id}^JPJX($ zI5|CA+<$uU^vC^`g(ps&)=zQ!xibQEN;8B+dbmtGSC^lFCQS4xj_mp#%8xYSG;hok#OslDzIBcg@aM*lOIM=Pn z(*W+8!BBv&Bn@NcE{UC)(ij@^7+pNx9iBwYDw1I7UV0z4+8Q4iUW95Iz^53!dZ6RW zM|Eu)JfF9sayZIhV<{YRF|_$oRX<)A#S4=lSRKs`GAPv!rFE8qbg+swTrM#|btkly zssSnks!R9jsKy>@;k&5f-(02o9bGrwxrK1^&uB|y=aN>oB68RYfKw3p_T7V`a~{Fw z!gbC87H>xC&sa_zWBHStKjV~{#vdnoYB^X_2CCOn-zD zPgf}Hb^&Pj4k)P{O*(of3t^{JzdIeC$=w45Uw*uM_+Gxl_$OHV4*nhANX&5N$)&;A zxhGIpntbmn4fptWF7Nv*{R3|xrs-(Vp#Yi1#b4v`e~W*2{?*X{=J!smu*2;1bn&47 zCx~aV*!y_Uryve)Kf2I=smwhb7l7j!M?e40LZ8iOzv5J!7St^A)7bqRYo?~}#opCd zv>%%JX(DVc=O9ZsbkNlg#o?gLCOG%==WHs9v@fr~h?Ch87f#I~LE;R4m z#bX1r6){cK$CHvXyFr+)Jxc+kEdZK_Ra4tr-MW3dO%j^53>IUqM1m@Dl2|#RW>+Og zr}4(|{!-Ab&^C?R9guZL2`41_v7NO6dT{Hnn)-I9yc6(l?!G3Kh+FX>BCOMMoq(bH z1DH|4&=m+7W<0;q2hg>m{$l?)1l#qRQOz+7cO}`9jn2d@P2Cz})fwH>2aGd6bpu)J z@C)N>_T7!hZT(JqhLmK4JG2&X9!j(P zId44J=ALY)-Ta9x#a3dJg{94_b`ZplnWxgYlQ!qvJ^o8A77zp7()KGKXlgqt{*!9`S{`|~HhTtsLYaIM)?J4oTDecI*s%i&(nDL`Nh+puPhvVhu=lSFE@xh1~%36x>3N| zF4}`vM!Jd)eoCS0$+C0)#v-gVwqA%^PGs5LFEB52%f+p!G^LZonISQkniz>34$)&0 zIVydi!5XZ0?fQdsJCye*VFShTd89WqBxhwYb}PlWYVWXxqu_&Rhx@&4fk<_7Eo%T3 z=wSAb;ZOGD&y+c^BV=A_b{VmQORl}(Z^%An*sofUu}Vwn>%P6_rH746PBUWV90kT? zx0yH^hRjDR^buv%pUQm-YXNd&%pD1py&BIfAi*)`ixYqkB~h-`6X_Cy4d4nVDrDT z>^Q*g_doY7Rf8$KxMEfCho#q1mQ<|b79xVy3vX+I5pdJWw zMc*zwp$TN+Dh+{cjh+ubmC=vW2e$NXS4m;)?tqvksnTf{tDjd?VnDfOuL5Ze0p$r? z(ofVHMo}W(`u=CW3XHrnbd-wmcc85+M`H)^>v8NBXKb;RQ{UX{A<21#Rva6z(u}lC z>fOFmX**07+55D4WECuXikBN+w0*SY6cPSB2&Oh;I6EQ5d`7n)EzYxm7&l_9^DFsn z6n6Q|;(3U;4K$^7q{aK}^qE2Pstb>U&zAp$rgv3ogNj$1cbiB5uG{nqiilNvhKE~Z(R zbwxb}vv>BoTT-l-S7lJSG|~Ll-6Jv+?}_N~_Cg(!*(qwBi4FW5IWI*$fB$W>Jzj`O zg;f#DfU277;orcn-_g?NEXB;u%rBn#4SU00;SR_X?Y+0!pL;QOK8&sRK4Whl+Bhe_ zX_{(Oc)1G(=(+PRtuFlHH#qk0p_4y-`d6z92VRZTP4w(=C>WTyFg>Lqg(QccHQoVk zKxZIBU+`Yqr82h6V<)#Bx-_+lIWsy3jqQwPP^yurT)seIl4s+=*9LA==Sj z(0ge&u_=sby`I}$&Rx47GeTOM+pW~4X{wl}iBCLy3`dolx;TB!ob)GoorEUQ`3_@mWxd!NC5Wx9iP_jQ(R|!PUOCdho3bu zO$$QXZEj9;pIutPpLm^1G-4+@HN5iJIt6#zNmYuBd;=)vXr1}om9l-^yk?@CujEzT zK$^?dQDO*-OU;-fQM7k`71z>j9DW!aYT39g1G{x|?be|fHwG?M3qNeLbX&cq^z$+G zlIwR_BuOhJnG|J;iQBPoEw}gX0chwgm8qxwG{&z3=B@Bd#;T!721 z`R?Lt=r#S$f+HU&^A(&q^8vR05`{!;{e16TgwI|D#)#iN4F~eSf1zui+EGg3rr-Zs z!66ee3&0kcHGMq#zTaW()5T+D^?^7n(U^bL%oRt32`LR`*Iw57buSz9|3Tz-{!K>o zvi2Wmd*27rmG+>%w;EEZDujk^wn$V(SbfRs2gp3D=3rD*z7&R~SFjpt$FmMtf&} zT)nN-PK0^vjD_rgdA@AiJy2eLd~Z%zlm06IO?FrB?pAnQ0~ug=dC&l^(*!~^Hi?tZ z=Anyk;^W_I&OJ`vD&^w)fSA`@unplZ!|mt!o8BwCxcRA&<_jw|li2?J!pYMU;%n4P zEXi}T-A-;EY~RON%^-;MO;g~K|+$OVq!&FOhr*GMt3t7T(ZD z$8M9`_4l^*hNw^y8TG@p_@F`n{=b`<9(!|i`ZYRdC0=C1jl}*H)Hbg%?8Wha57;rf zPqP%Y13OdPew_uBCB*fuStGw&up_5&jDUcI89~H)+CR)_@wG>ZriMeYQ)@G(_hrx9 zTwALIGA>A$tX(SIH-RWn@|H3hz3oT{lBNLsiX|q=Q)s%KaYd$Wy`juxwIwMmCNNRXgg6y_>yT& zVQ??Kwl@2K`=qggd!JRn*{Mv6Kj5DpO-MU=H%wK|F#eGHJCm)Bo8xhtN{p!IkS!=5 z2isSRm}_7jrbrVJlG8eru^pt(j!2HiJs?p+1~_OpbDBxw>%totE92;#NuLR~rk*o?ck^ZTJW#U_ffGt~D>%p}eXcu8wVu(x&v1Y~U&m z=L&h1)@mN9v1@2{aMDeL!>PmHq*_)NeKmtg9ycPxa_wE=JsS*0dCuCsmCLtW^~$VV znbL_Ja#bLkZe_Cc#WH5d$U{)9ePb@=)Y;_p#MP2zmg>DBl2G4`ED7<$hkcYDBClq*26xTQio~#hkZ9a#=^2`Pd|Q7+0XZ>Yaz~>#V|6kk z%C4ik#{%tzMcDZ0?(E+7-RZq~{va2DN$NWoz5^UBa8Ti_v*hn)lZDkyUv64gDPw_I zdbs+zmq7h4i3sxVy~^LbTg}-o`1a(f2u)JQoICU0PXBOqt*B!TbwK_K?t4fz?^(rs zb+ULwd(VSvW)C&jeIJ(51k~c=WW)o3!$h_j8eWg+u}oK4zZw6i&e$UEjbv znB8_QF!L?`Z~mXR!euY1V|)*ZvL!5t365Y>$jbdmGL~k`BRUjii8=_oO*epRVv%}J zy45CaxkQJlbFsifRlOJe^I&Kh`)ZPgBTM99qpTk)?2m{A_Nlk_8POyQm^PtStBqw3 zi%_tgy^l*ZsUdZ2r#4Ph#eVJFA%DmpUE_i?Xe!QctwP$w4f0o_tuz3~kXI&yY}gXq zE8rkigla;`dc8@!08G^gIA+TOfQyf#D zv~Qq}Y3(}MVRt(>Qn1&74e|CisMdfyBz2gljP*NA-I>qMy3|$AKH$mMds;aOFHg0> zXT`H|P4*ZJG?CZNQ6O0Gd)!11?(wj3|EC;TZ=3q~mp-N{`I&wlI0N9HKXd8?Zv8{A zz7t7mW%RyY=^y;9Nr8BO?u@wSh3)>q!uqdGFEARGrmOl7;c#E*{eBgZn9rN3hmNrL z>B_>9kNy8}?lwp)iqEigP>;O~i;`94n(SSb3BA~?^V_S`OSIF{t>si1(+W=1!SFDR z*^ZKQ^-Z9SY3FO)pArkWjv9tRW!lE@+}L=iLpQ~s6xz#Mz>#Gx{cEALh z&66g$(%SQJ?)(P%t?u5ZIc~0Z{(+vu@EEul7dpc#sw>}alig(~%7dW><9 z=;lpMoUjh|-wl<_J-GA&Wg)#u4Zb+Ga-TGPrjeRJS(@-B0fPcO7~?V$E7~JuKTp6eioPer@q7cVhdx zdk(-6eiI+%;S2F&ZrpA>6o&s9ZP?eEUmu<6y_K$P)T_v*yhTByXDH>*Kl=@K-vjf| zuljJS|37f^*#4XTPsCZ_QJ$t z>ktoB&m4^6qg5hYlzEv{qd0yf^olr}20iK$4FS`_A}ge$&-qZ1IgH!kl_#6)*Z=$N z>gD6uT9E^+r>mVOPrd4$c55L$;`~XAqqV?=EaJR}1BX7zeibw}07H#iNn)U|nrjT$ zZK`YxI~rjT2M=w~%A&F55A$J5Ym?LAzmP#lQ)7>Z&*`Oyd+_Y?ciYK@Yx@N&hj{Hw zU*}MaMWDP(g}jXefS;>;IczD&;vCH4@aB^?IoOPA*+@!dSH^_cRw37znzB`X`-hbT zdy8;a0i+(5?INY6f~^(!ly!+EJW|aIQlT^?hk-$DUAqbLoGVR>Y%G(0CxuT7Ll!`Z z5vYpII4Va|1|=2XKp90$j%C_2K6208z;hO|eR6K2l(dTJ^(S)j@rE3lOR{(v5CPx! zSYF-x2(H>!P6&^v?Yy$mKl*xNglU2_hEvZdGCAzi-~FHz3@4XRo( zS=j%fr(_JB0ZjC}wS}KQz3|+5Sv*+=hJji1kC4MnkjxmELz{|Y5IZTmXhW|8mG# zsd?xQt#fB@09c@Q{2?RMN<jJ|{Tqeom3gTs)lcnl75Y$V&aYUe{+#5HV1P^xVg-JoKe;8)j4m|k4R{70AE zhK9$=>)4RE#xdnnYrlbw%;k%@MsX-%Vq)=sdgVz`k+Csft{5=_kVmdZa0lIn6M^J_2H!6uYZJ9(4aIUtkj7T0CwE#4%5h<}1hm54G+^ZlpzGku!Nuxt3HsO2?_ z;%O=AEJvE=~xp`^}BS#D$e z0HZiQk)&ViwqqN+g;&ZKDCS)Y?YRD)pN&v|ly2Ve{2;eSafu;t;)psPxH3DFG~zF& zQ*0^8<0;N^BBi#a43g7WuU18(B%@Sns2W0N^w;r(rMMAV@)e&zy%0Eg!gP)%}3 z_-?D%%eG%=ATY#6SATZnIJJ)|+F7|n%9t1e?~0s4B<~*0^|ti}_Xa4XB|`_36VxHuVjh}XJpnyiAnbkgaN+20A^In8{_>rN3x__#^x=5wsJyHM-Bh0K2M_aZN$&+p zJh%W}j4j$JA}I@}C1K-vaJ*1zb0;!P`<*w^Ltd{)ZWOO6V4KsGOou2V{6zH z%a4nJG?g`HvQVk{(jgmnD;%RY>^kc~=^NCVEt|uXj%XsZ1Y{%KvHG>6N}e~GR{nRF z;2lxKvPLwukmc(GDOKkn+&pCsCK2>79(aru^w_-mWYAF|Bu~AXHPa{z*M$-!ZR@E5 zlr(gnDHILCrXr3_uD?beUsg%8DAy+@UeH&7q%SMewhyEsJ_NgryL1AsX7u&8<@;3D zz<$&Ewk&yej~Og1ohUHACoyR5F1-X3Yl@~+O^p`&O(BqCP1k@Ihei?aEokVwMMhJe zd-o4te*NXA?>_&a-$VMHCF3Aki_zHlg%=+(3I6u)PksH>=kN7iUF$z-eQ4nWZenE( zrQGcNHw0;>tq%Y49e&%XkKcKAdEpmNpE!E~JMhY1y`l%rLJSN%7r_%w4;%BY3TWUC zrq0X(7lQH1cmmnXX3Lh=)U{$sMk1+S#GUkB;@gujaP3(wcX-d`G=7T4UnEjT!WFcM z8VhXVQefr7|k5r6mPger~#r&n<4ZNG3sl0ZYP0#KeVg7&PQ&ym+59__=5J zOhq3aaxRqZdnKTk-eI=znP;Cpfe_h@y3fLw7r2tPTr2_d!NoJtyYSlmh52Wmedhkc zFW!s;R}3Blv9drb8vC2!zAXy;7x$ek$l8IrR2In?RWLDv$BIomfKa5jTemh66)kl7 zyQ4|w}Em}0WKRtyLB?ppsj zzg**1D+PG+`wE)46|uIJDuwDlz8YXcjStVgRU_dwP*|_F5!k%^h3IwOA{5_fCU7>h zzm=06b}}H(>6Elb#@7zDBne<|y?^+K%9bXhjg|0wu%pI53HyPxw;EpCsep>4bN|A1 z6SV5qq$n7-y~SgzMf$jw?iQ1ol-I%WX=@DcX5aU6$6v4hb5a0Y4n>=+he(9~$NdMG7_(96daqrQYx2$mC>;LRa<7CYu$mKO^ zKe#L;fN*eDpQUYm@u!8uU$vSir33|1usIh^+``y}BTktK&Yg=Cs_^FOuQ=oUvGJ4n zV%bM`euy9CVKuk(WhHP9ZXVR?bAhElQ0@W3fFBD$`UUG(*4%<9BZ(Tn(KqG(2N-_} z7#8}sf$WZwc1wkbcf(-yM)axdmKl|-cS_kuoX|-m)cPHP3?Mm9+(WP`lC#-`w{`0d zDd`1Qclof$vkNv?%SN(~b1S8jjpIi2Lk~VuE`dUiR3D~S&bN&_)_g3Z76-JZ57lI- zk4vy27I1qkJ z>3zv9u*_DA+`Qr&$(_>DQK@?Ozh<@EPVr3l+zGDnB+P1mmFb!|UdI;#e-WGILyXOG zGhnVlnag+V4TSvT1j`t7V}n4vJ`bMfc-%V>qrZo`g2^v9-)bo#B-($rOVh`|AX=gH z;tPN7&pk_<(R!UTD054{`fHy_+%LJvb~URcjxG?Uz(tj4IDhE^YE6gU#>rdl?@+ok zC}0ly+_zThU{5==b_bn&-Xi3`I{4ChtlKCqY28L0H``tho5UpIZ!ve;EU|G+T1og~ zYg)RYPE8`3CXKp73?0$Asllt%@g`R{_I5(!0(UTgQ4@nt$)=h_Vw2DXs?ITzLqvZ?F<@xMp z7p{!~nQS}BaK)7g9oz%fwR5B*p;|3nvAQZm#qW{LRS(*7)wv+Yrkkr(50$(Y!WK@4 z#1?7EAqU_6^CmObxNr`wnag=8<>d?4d)I!#wo7N6Dw;KatD103qFRyrp>c~V$e1(m(%me?QGA_Dc~st5550R4UJB5F&fnpL@%kpZgpI z{fRP>ST@D9Z~l*k|Fyq}XsX3YH-dbB)pM_76-BGtJ_%59{i1z5^&q+>zd{?&a>wE+ z45MAoxKyQ&Z{3xP=S8e+6vjd;!AwLnH*Rj=TQv4cNq1ZWr4N#I@)K{7TgDCiYm9ve z22bJcv2l|zS|5?wqi$4k*Pt|ELN#g?b&qmvy?@sW+QX(S+4RS(&I7oG-K;>TOXwWi zB&;1b9qhJQ6T7v{9U`gMl~+_IWcgFq0NV=icCn4j=iP2i8SuRQ=~BlUr24$|%h2_Mm|q~1%y zp;K;jo#1;Mdjbw`?>XQmkm^X)D8qn%t+p%dOuguTs)TwMrz*x6Vv-Y{eEngNztb68 zd1vt;Rv&&d_p^X@*OpQa@&zvOnCr0DO62-e26^vq{Z8g!+TVAYY$XyFrcoB2%07Sf zPYZ|MX@1wNTw4%|!33}*$W(d;!R)nRjo7CHk=kLR3$QC}%1Ka0aE1)MS@f&ZuqZ~Q zv`iO~KN-XCJ}Hw|ML~%m%KB3J;y$R+anND_AM{rF%sHgb8rytKxTOTCPyygZyB)Nm z^LpeAe5;z~xFv_Y+muIYBC5Ke*1F}*NA%0HO=V=)$!~y#@H(a%h*6uEnhQ2NbP;(c zNi#{EWYY=olo6=}YOBJ#qO`82iq0So{@*f{?pKZj%W{l>9Hxu`lHA~sK^1NPz_9UZ zRPIpbz@Y)9FZD{5G1q|XLvERbym;VI9B^IF$cifAp$~3*H;mTI>VPV`CxMX<=~8Wk zq-Gv8WK&3b?A+v`9TJeWWfLodQHR7VQ#MDEX+G|@daE@kRW(9gFa(4>bAA#ZETFJh zs7GGM*hdso=7ToOJtdimYdar2vl1E~{3SBKf6RI-?yJ2)>LIw;`3vWt{SoC;+C~fG z{=RoHW?AGkpe9@}T`^G^uQd1VbN{@s@0aHsi4wh4d(K?%<_-R}ao$@YCPIs1e!JBs zU;r4@JpxQ~J&H9Zz<_t1stC4TT1-NrPL;;XY@VL{(Wb3i!r5pe;&XN_#SlouYv7Cs zcmSa>Z=rKjqv3{&C$}5YBuMj)^l938Ex4PtWwps zYnZgyd5o}u9+*FYD#nppdKmAUI(IMiZSnG9eo*LbpOlO=?%knFPtoAg@t~W6%?b>e zP@=brb(>5&hf6!Flq`J%syco z5<-iRz4fR)WMM>@Azi6phBd)%eNcK6TiwdIo0xU)CSr#Mdv0(1^leb)QQM?G=-`Mj zvV2M2n7QI!cj%Gef%OvW-x-m@jsuc~&A^PiTNwB7-p_t0=ut**;|Qwp|IeFC6t`^h z!9T+n;}%&9kVwhp8&?OAOZ~-CDx*G^` zU8mQ)Fz_^!3R(soaCSLq9fmSD2&&S@Z}Q(Cn=hy=vbKH)b%;C+dzrrB0!z+I@wFhf z*M3kzb3&n3`w`9L|m`v!zm_Qr4(Mmkfs8UZC|S9qP{+Q zR&^NY$fwvgZW?6Uts77pHWpG?!Bi<;2=H(xTi-vRJF_FRrK8R1i?}yIBF?`mK(=}Q za7roi28u?u-Bg(zxawWFA5Og#&6U(qLRg5CA4#1IeYl3C1}OrnMJ9Vs5wcM`25!;` zg{Zyzk!5iDKBSJ<$V*5_g3?qNLJmCUZ!W%>i>vN|q}L)0qY?e`B)L$c~r|K zN~2i8J!bD%$|g8=O9_=v4XSj)KsaYWs=%C$pBZcSY6Kk69l~VvekX-rw0D_h)=Op{ zft7pvG5Q~Vm_o4UXaI8V1)5WKv?}pmU3+L{Z~aUEe|tU2kTEjwQsehKJxeAzKlwY= z6Q@QFJ@;*rbb>zfLq=~Ho~Hd8ey)MKA~us8cH%}~}ATjLep3p|iCX~$D>ckx8%0yqW9i!6NflKHS0 zo_#04W|nKr=br zL>YLps0{=W?07C{k+6(|ayjRKSkRaPMY06Nn{>(%SPssSJY((LIh9ew} z-OpVqvw!bj;Rs{)=0UQNh^FM?RPwH4rW`#=;bDbQ6Agab;_Ec!6pp@lp6d|KaL}M8 zF4R#8SWgehSl1$!x6=t5UiY)Z`!Q!~w_`OKrT?%k{SDZ^6CkTJFk9QL3y3|h1i5=? zt5Jx9j796t?VIqYwo|Y09((FAwpne|)1haMNjlh3ExI0BtqTweX83Oa0!6W)s#35{^PTj_Ay>MUt=i^#raA-2?d$BZ zG2*Mp)HX3vo!Rs@M8+6f!n@YG*U&^wua!jy_4Px2FR5jNf@Cx7Kw)N!mn5{pl z&&DW>@!BoT*=lEA`u5p>gVMfe-)o-ghC2g_+kol`vw@c`z3~%!!sb8WKE+}qw2oWL zRkCPS2K(!OTcFiXF-*8)o})56MQ1Z_&n9$xjw3H)NFaJrSIvi?{LJyZv)&c`J*`&3 zh3Z3JFjot5a6pd|Hu!YRc{?6ENl%PAeIJ?blNvepPAI=u3N=-vEzu6Taex*_I9Ksb zD&qQ3H)mG4=`PhXXCe4X%N}})h@Gic`Qy=S#{~|n5cg<~8`Bb=U}a&q*BXL0#I0=m zdK_~H)?1HWaeNWVI`!=yY6ThLroIN8g+PzK0kh!K{6XB=h+qQZ3 zmJuZDtiAG>dUm6zNapAQg)unVxqa>@*snjv1~Yh#kJ2$y4vb6<^bB0`ELc65g+GgI z>G(iyOlc7Of_wfkZka?gm6nJ14h5nBQ^-^SD0=X@QZ^v|w*sJdwv9BMef8h_`(9qu zu?E(O*-T-;9b8ICamKuhzkY!7^;0t4PySIk_6+Rt|4eHlxCOM(J52Ts*B5&q{`*4j zBfX6$KtiBxl}KsOpP>OzG+rUfzFSzmecL&qds{vta+$jgY)|iNie!iMm99Y`kAJ-t z1jU3i_tMHIU2ha5&3}X^3zzZxXjkanZ3DVB zK0A7Ff*Ou>w}F{ojsa49s2)vhc;VMO#4_lPLwfkNGgZ5tQ9cx|_>}a%)u@fk0RmSB z_USQyN-^wgOJy8}BV$f1gDm>H3u!E=Ta>BUZfW(I>Q23|st48dG@JGe*qIn{aGlkq z3c4G$RQ>okB;LAtjJDJB)fH&)QA@oZZac+79Ar1hR3#T}p6LRvblhkBjU+6CY8%n9 z#-iY!?Hiq!@-(ws8{%(V96;2m?s9o|9Oq_&>E|Yqj~@8xJAcQ4&%(U|eoMg;iErJT z{Qxrm;n2Mw_#h#jfJ>~|SZ8)hROI>yi)3=|0-LY@;f*CcQnF9(o$X#es{Vww$rX%L z4k~;trGcmY1J8dY*o@dczOc#n0ClmE7zP*AErk~^etPmh7UrJ$e9F)nzrB7pKo94^ zWlJxTt_``V>8N09dgoYs>wLM5qu0Y9GhGQn1FSgnRZ}3;Z*cGt%I>j+W^dIJ$x%$* zvbcOWFpP_^S*w?ji>qfba8XsVv|u%TjkGni^CrXRdnr1iW^Q4|d?Tgul;<4z$WTyF z?PW&2Z3X!ZS_8}=xSpbwQO{?q)W}{V-Iq4#Og3EJnF8?Av|Jgvw<=P*k5tW8H8|1l zfY4hKeZ@%JI(I-FkF)0hLqZsTNg6^!XZ(^|@%xMaX#0PvCMEYRpOk~|C@V%Q%S}~3 zudxqO4^u2f4!YgQp|1=B>zs2E-Pi^mWN*jVX>U%6VL|b$Vy-Z`04s6j#_@Qd`Vrpy*l#Ws(iL*DEn!EJ=fAkN$i;-Ruit3TM+bKj(uKuh}gw>hLUcb*# zrrhe!zj40l5e%-n6xJLiY}Scx#ru76@zuX99D4l>w}M}sN^jV2)cggHE@nZMXNHsyBj>MLlPc-m;iDn_W(JHRGR;Z4JsS0 zp*8}wxb%xx|Jr}zmCrO&D>2&pR7}DduZ}orC;uz|FXIO&(Exe&{qn=Eu5JqC;DaE> zUJe^|gBC?W7>g(2;}?Ehn0xVKot{cfPgte2FM9o&*^h@{Kd51bt67=^_~8Y( zWQ0jeScc6i&FrKBm*J+s$6VEJ!DJ==Nv3c*7AWmSyOjdYg=d0K=CODunxdm*XijsK zhLv^7kT?|hs7t{7M$E$^C2|a04lW35;|T&o%NiCYU8iwnt4+0XI0Alpm!XvKrmfeP z7NyN(TlDU7%QQ#0={recnd`QtWG=fEGQb7MF5S%EjFP=`P2!-9?BatAz%DnQECNwC z9&W(dFbhl!YFmO6-;W3{q{+ONYG>=C)`(M#VR75r2gRD2adO^u`^wRJqj|UY!9_z$ zH1)CFs+7nca58{KIRB>}I~A5`uB~v**TQYF9f*uHcS9h`lMQ^wg#GOU6Uf*;e>4q< z=2DJEQJx46l-|@H!#!3WKq;Sqpx#YG{dF*$eqF7&FvRmeDpgjJ>j9blkg7d70_Wo> z$0%TfL+HX%UKtLPq|Zcv)*Kh+(x)%n?;m~s6aBc?io;>)3anEKKVlxv%aww;^OwGQ zbG^Tdn(=$*Q_Sg!@>rEWuMJKlhlZa6Gq_D)>HTLPEF6690~QQdwVy;pX0KP5 zay$Ke{D#eE9EG^Z7BgeK0;cxZt8H$jvIDTps;gYQj18J4NVTxr76n}Pi`dqlbdpef z%Z*aoud=sJ-*1_)j$%E}6)p|aI-GM818Fm|ADMZ}`@4!9PN_S}_8zxMCwATGJ-D1= zZke%&<~55Ox5+;{x5%_Qf494rAe$r;N0`)WnZX`mMqWX7c6K|TX6Fyr(cpZnyMR>^ z*e(IYE%BxmaN<$1Bx-<+{I#`lnC%Lj2kLHo_-QqIt!>%K-cmFB=h?Gh=b3yVN%G?z zEixg3XafvGE{GFOEHA9Jo^m6LXdtP#?aYyH;2?NL!r9uFN*lH1LP!rszhy3&uZ*UsMj#g7o8Klsw`X+&9rR)_#RXr;C-8|%K|B;X@VAsCt`9{=&p z6I=Ze@!~gUs!a>`5tC5|Lb_;~l3DfffC{U8=YIdziFM?=-}*gEx=JkvucSCOD_Nk@ zSSd<5*BA<8!FoV7v0x~P!%oYJ-(kVpP@i2a@-#Xm6oV2u-2@Me-Qr*v%$~a>8 z28qNb?$R1J%^vOpZX?IQE+uH7Ub!K{NI7eg2UfdMsjYnlX!usudz#JLg|SJDyNYMy zKW`Rr8MZLtP`Dw&2A@zz;f~sMX3=spgc`xq4E+PS?CcMb2&rVTb4z2>1af27wGtj8 z=FKS}H>i#B);eb`M`$3b@oPK-IS?sSkigj29T2g51O``aN?om>XF62*!GpNJLXNnD z_3C2PIFLcuBH74#&M0rxa&v>81ujb4d)sItJ3(tmo{Ahx?CC=W-{XtD& zrFgf2T=yi*}=;96ptbZ;yP|mf*MGM z1O3-w1Hh%zAG~rBeS;G(|Lz-D>?RCjj3AqqY4OXjQoS}Y0ojW~Jd=6PQh0-&hzWL%WPmUK3pZw)ZZ+&(a7iJ9> zO)(rs=(!dtjvqhXm!i z8oNV+;`GLkyvUX_hkxQZ=pwa)Azai)%TzeVF}%rjZBnS&!td<7QS!$JUXOmXyp<)D)MlP)~6kr6=xTzNU+cV0__EVY?6nzNpu~j1LTc!Jii>nGrNg~*H;htgt=%7?O zC?1AA=^s{c`ckRGs%BLvcT0L+CR>a9OXvKt#+8}zsJIKTa)O8q+vwOe9Q-i6SZ`}< zW8T5u8!d8wN<~G-k*?6Pa8w%*?;>U5EIS)##t=nr4U<#>oJHi)R;5Ma{Ikg_g~qi1xWDnXp4n|Xfm>(4*^<5y>v zq8deL3M+ze#1Zu;xv(tR5k=A?nM>2_R+YfyK^NJ`Akn+?Fb6@hr8x!t1D?Fqz@t`H zvcj}!Vr>cmafs;bcZP}G+KFN|L8Mr}e!y%d%IBupn)XFpfQ0HvVk@lqL|d2^6TUgm%Mk521n5Ho%5`N9FI$^rH8?mNDzJ%5#f;rtT!*! zKw^Uw2V=uHgRPs~7Io~8cnb31ewr|-4Y*_f(98CaNRaXU8?+b|!%Q*5Ag@N_&8)rb z8k4=7KW65kh4UJKxV4(V-?YjA@*sj$mlosoNr4jsezNMHT9DmZ3PgAR+OUynbErOA zeG^qMSI6b?YW2i)TfcLsG>*aPuBv>3fduE*KmvC7R7J%Att>()P2W>@C-09E3D?ez zFg^eQ)2Ik_2|;LkZU$_8F+vIdrtB6oa;W2?gH+ISmE&d%7}EUW^tE4N71uyaC>S~% zk6#V5j0C_)C5hJ9k6K-;8e3-nEWSbg^qAAC#_`w-ad}Vco@4Ju1M>n$rBY6ndL_w? zb?Y6+!HFMkrUS|bKm{}HBY*}>3?TmGV)6Zudg@^lA~7OoU`2r024B}3Fe-wB!e}WNibII zRx_;>0&5X6Jvsh`8YhfAk7>zZZ}?TID6PR#uk+o``xU9)5`b~phP|Z$nu6_}8Z49v zX-F+D)(RKz=_u^>P?=85pbRAHy)5{1M0Z@XpT?Ad(_*KKxq2LVPq*5m``VC>U};?h_y;1PH;AapPY8 z2Y#-)6{>*yTCDquS_%^Ct_;A~s4L-mXpb*9E79W?U1Qv=Nx2Va+XVMcECWiviiuj4bKz@%f$?Qir{! znH2|V%;APGDrHJs4a$6j|NklZH%YN>$`I4kVUNY@H_KmB8B^Sc*Jx$1@8P+b9Kdc) zew+n2laAqL2uPXTb+YzglPD7lYNFca83Ihky|&H-cOddJKget)Zu(-f1CNBK0HgIl zT;LFxD6lA+K#-56EO}5eGn+Ojv_=|vl$L_)O%TY*K{8LSU!^ceS7{Y;%J!+mAjET1 z=Iq=Yuu_)g8qTeA`{Uk}`LsD69#cxKTU>=ICMu4ic9a1d&=fZ@V|GwcoTLYjNgQ-Y zsk`vek?J(7xknl0)K^Q)H+Y9M4`!-fvQu>4=%F1|-QFZl(5ztvsSe;%DvaG&tcBHa z>3dYhuJ;jWkb!%+TPSD8J)uS~vPkjeMv*j$Q-S3tr#fyhLT zc;7C0rm7>bu6ZzgsciVVN;V;OxQ4EAn8l@LKXmqZ*NBJ31&pfDQTEFiZ<| zVo>#*4%%(IsgK{I{787VfK<72o2{8Z3^GXktd*p5(ei1f#50Qv>Xk-L8HI@=!+AdK zw{7FBhBuz@gyg|Ds;e=8lF(35QXY)Nu3?eb#RVlFo(17tEr>&e&tWIB#tC`Y;zJV9 zjD?RZN+h(_1}y%BHD)fwAc4P52Av|$CG+QvbcVZm@U0Y&x+2nYCzo&bycR~ZOMhfq zY*9TjGDK3@qh)9?f%XKdrmTD{VOsH6gB6bNXbKrNNUW4h$Q?SyQ%UA17FYbfXjwzH z@C|3+L9n!iY1B$ES5bSRN=G@j-zpr_5`+D`?MT6;fs!Hod_+ktI38kY$YRP+c2deL~B=>W}#UTZ{yR zY(tTP>P-Z2nL?PKn7QS|QSGuG$KrF1I8y$I=GruFuxQc&bQJe2epX3Ty6zN>c?a93Q^Z_9s*;Tv$| zt+x|t4LMJMv$6<6q#6c@XQjKKgPl=4GWGA8aF$NU123-)b>nj7pkRUX6VA9g?=( z5r#bFekhR72#4<>)v&bLN(_n}>bzGu6}v4?POfM+}ZeKap zs;2p3s!5Lu&@DEC&con@^ZJ*wn|WOFJyo2LXs6e= zIMTbaPDH0xM%>0oyw#olhaH1V*?XDlxpVDUT!`V52h0l0Ec<7?+{p_<=Q2z1bU5Vi zoxxBvm}Jh6dZgUUS&-3672$sQ1IU^-c@P$4LD2I>7%%AYob=`CBbMp!zhSIMnvV#`9XexA=0UU z+q;|#j!2!6p}prj8@HbV0rBxDZ$^EcA2JZsrrTm1^-ye(HH|8b6u1Vml&6jd)l$Vk_Qc3x;tG}T0{ROk@Z1IncL+rA+(v*I-)cP$pf+5`ku92+=N-( zfL+|<7EW+{3vRLYKjtvNEyfJg5_hWvW|4AIvSkX0jfON-D#UZ(;~qSW!~W54@BZ!H z+z$yVGmi+zXo~Pcyl)E{btbA#@|Xmcex0|60=F1iH=E(LDT(Q{5>G5>@p2xI z>X>2(?6kai2r zt0VXqs&RI*$Ff}Iii(TpcdiAUA`pl?gM*XfrJ4w)pk%YblIoH8#&oWil4Bd#k>jR?EH$j*K(v#<{Ls8VJpI1c@t8#R*jDIQ8S2 z44!de(tI;{*!ccfa72r)%ZkzIdHh6KB2^2v+lY>9n@D*o)nK};TGX5hh+w152%Aq7 zYt_3Poa|jUfGA^N55g)-1(G^7`{P85qQQ(<1ed!5w5OuETp?v|tgP$JiN54%s7xXx zo9967@=Hut`B$OL;%FuB=n1flb_izfBlOIqX;|Vnz6(|E$+SoDykkHb;n(#vWFFZ} zo%3R)AVU`VdVVCb)SQgNUQnS*hz_>-O;e2BL(CJ~=J-JHsnEh#yIVz)Ghgj7Z&n+yW~p;R6(WYjrPpBl zo|tvah!INV~+q`QvI0AIm~U0qdNW5VA7huzQ73sk~F2#Z-k8ZlGz_jOUMg z{zZS|w56WNtc`~ZR#&q)Wmd7=Q{vN^@1!AHH-F9@d+g!ut07}27MPjm9-DFxioeep zY4v$y$~-Y)Tuln1i-Yra>uN<8Lu3RIQfvoxW)z$cGir*?*b zMT$si(#qDc7#fr)E;j-yU6FYiF^{3I=HY5DfhQ_II=r^ah45GTTO)J9k5N;@bgNx9 zg`9$9SA5GPnVe-SbxeuY*F0iKY}7^}YpG_swL2G&C4?AJ zh$)twrWY7avmRTI3+tYR@HRs118h0fFySP~>#LR1d_7AS`z$1J$N3=$vM&svWj%I{ ze^f?ab*_CO8-@HP%-};G%Y{_#tteULvgF#-!TlY*a*h!3+NJEZaKh5E!fy4hV9g*XjP!#FHT|>c*n-97!gy{u?ux1sq zseB1~e*jc&qD|MTDlorB$ZM^Y^dKa%W(NJr)z#GOZOw<`rt1$qFQ&dnW3Boo{$HB) zHfSlclE4~m(O%qkCu(K6)UB6CTI+!?Yxw<9mXWTtG&`iE(z4R&JD5Deun#4JpsV2m zfZfbb$j*q84bUxp*tC|E-`eJUQX8Wb+?1hJ01+!ewlbwKZ@QYAyUhnOKx3b6H=ick z#a!h-#XT4SaP$-{teGpYYyc=L>PalfUAEO_Mlmud*FIhs3sweN49)DT)8<^n#qnaF3x@LRDBD`Aq^qhkm>f^7as8=BV1{u170ph z(r`;yL=+GftrG}FwaHEv)1X`H7-IL*kCC4UOXK|D+#zY*q!nk2_!U$Qa1x5UdrF^yPR-LRRg7;Hz2#USVGUhm2(N27Hob2_RsH{}NEMplZV z;nhPzTa0;)r4?fD&?9o$qm;!Rb^Je9Gg-8{dBXw% z$BJ{!Yv3P|YjhBc)~HREm%F(pj!ZQfZZF?Du6J)SNNw6^s&M=iXX2C1v^s~LUg3@Y zeo!S|F(7k3n;rIV zS}P)*>G^{elqe~c!2TdPG&waL2lIecezUFZ%F%7OjkB|>>-Nnqq5ZBI#^4YT6gUhd2rx5b z;~~C6S=D0elQ|lk2#*Gt03-a2`xp~O_9^_U(7JPS+~i_8i+^U!(b$E+L;V-r>?#%z|ju#x%C|v|j1EwWu zFUW9jW0!|vf-Grs`2MSN9uY5yx?7bu`PxdM+%#pASKGDS&`zwi6IG)C)ftB^@J0G? zt^VQor^=3tjHmmm5#A00jS=kAT0Wq~fkNPEv#Z zHsBO$msy=na~CfycYr7(IrNIbLE*hhtbcDRLx+DPdH>kD*txG4bCTU0JYtM-|Z1uSSx0i~wXsS+mB!)ow{ zafluKAKrP247fUJe5nel?%yg<<6U6!^BA@2oeyj<0DUxe%Bt!n9>&`9a~u{evIeS$ zs$*g@Y8omHtFoalP1DO>q&r#~-wy4FZ{?kJ9HVwNYA&1qDj-qJQSVM}!*7dxDaStZ z-k__2XP!_|+Xf;?fH?z=g7K~Q@Ne_IF<{1PU;?$4bxFPM>d!3tP9WefKv@Qq(VooE zO+?OO+p_P*7ENoMxzs%g2}#rJFwYvck@PXDDFrG&ktk2W!46slDFWj zHGrVZkli(q41QG}s>sG9xA+x`l1_m68wSK7~wlD8AxAvg9qLTY^RWYro$LynPP)Cq#7xiN)_1UO6f%ULi# zpHlfvILn!MbTUvWU@nQSN@WObc^3sUS`AYqFQhJ1J*WVqzQc?l!zV2Y6rR@k2jU7k z>kn3l8Y2$ZxK&{w!&Vqit%(p=Y*vOm4d4K8+=}DdY=uI6VGavlffE?eHraB;gkklo z#YxNQycraz7WvU;eEyabQmJ!|{u~O|kE7xdIf%Rq|KgrOZ*f>EZvkHqd>#Cw;4=u| z{DkL=xL|!(u&?!xZd!d!K8@w;sP`Kc_&+MM+2B`e+K={mgU{=NZR0$Y1G6rcWSn%^ zX`KmZFkzrZ`>Y7@$K}+|EHayAWM09Dg91FK#j|Ku?+IVOY5Src=^8q$ry9T)h%+C&E|s7-ORB`#I1S%hu|b_DCsNcvS(y-1o>xYwDBa<$bsABGY`R4w!D?ZcCE8_UM(h4hcERR|i4Tw$)== z)zXmM$r1^pNgC2bih7g=hIz8Y`)VawBJFa589RJ4Xvl4!5GZ;i1Nvf$-WY&14G8w} zuffcCO1XG2?8HMFpY~@}NLhXf8ppBoJknxYE+QU%=L81+gK5G{g=fA`Z~#p`#X0iP zm07UzB2&Z{n-^$sBa9xc4P>I}`nnipa*Ku=tv7{!GYet#8uAk7ITAb3?%*dm0#iar zJT${HnxW+|4hC;o#mVa+I0wIO~Vnu%`W^5^>SYXE;Sy((x$# z0Fx8_XFaGj_NH%DYI{ z2{)4@z+n-#2*xtHj*hOs7M$8Y<92()ooml>)8L{hdBE)U-*EKkTVVAr-NJBqD%({< zoG?vy`PQz$1KfTmbgrp$I5e!0P?}$k33V=0EUg7<+O`=YMSbV)t|mA__>J_qMuLCA zt13gxY00YstK~e58~U-wP?+D`dIa_fT8T!YZ?a~F_|bGcy1kRr4g$vR(OV?FwjjXy zK<*>|>Ppd!EP8sR0F<0Nefu`hzUDwoiw`E-zL9Z$vy`sTW2I~3`V-}qs@-`l^3o*7 z6f%lWX~Bmg4>j+2cndx3YQY*x*a?Y$vf|<|XN8s8izEa&0$EmCE)~zZ+%?0-Wsgb? zb*hUrmaWU6G0m6K=NjffY;|jV9b?yFmEh)!PuSx1|1P(N3fFZ?3cXh25a{K0$wvA;2$5-L@1DMHyQ?RQQo3=VfK?~mc!VZ%3$~Eq{ zSQ0mBS!mG4cRHfQf5@|5w-cb;Xtccej#E(dqY=uZ7mRVTm|>Z}mapm-nKjQbzP_U*X`cA@8*mFT(!%eSeHb3_ZSW5Pl>+xi z{HZZX#8Zl>tLW18!1#$|7m!YfMv;+s%u-V|&+@(}ddw=Iiamx@+-$Qw8#ioEf`@mJDb70fro|j_s>0967cG+6LHb!)%rS z*gJcaxZTQN$x=6`baW<7SE$+BLFWOEkPy?dWy z9K(QrqNEljaTJH*|MImj3>YwcZ~$NIsdu*|k~PkRh)X1q=wN}3QMn*

GYXqbbq~Zir%9PvYiWE^8v;tn^(x`^u1i!?ms10 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 iHGAkR;oR Date: Sun, 19 Apr 2020 21:05:20 +0200 Subject: [PATCH 133/181] Update parent POM to 12 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 43e6611..3c78805 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 11 + 12 bytes From bd68c9a29ab0988fb1a3fed5a7e9453a3b9a171f Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 19 Apr 2020 21:11:46 +0200 Subject: [PATCH 134/181] Minimize Proguard config in POM --- pom.xml | 34 ++++------------------------------ 1 file changed, 4 insertions(+), 30 deletions(-) diff --git a/pom.xml b/pom.xml index 3c78805..8d70d20 100644 --- a/pom.xml +++ b/pom.xml @@ -22,6 +22,10 @@ https://github.com/patrickfav/bytes-java 2017 + + false + + jcenter @@ -79,36 +83,6 @@ com.github.wvengen proguard-maven-plugin - 2.0.14 - - - package - - proguard - - - false - optimized - true - 6.0.3 - false - - - - - ${java.home}/lib/rt.jar - - - - - - - net.sf.proguard - proguard-base - 6.0.3 - runtime - - org.apache.maven.plugins From 9fa415bb17a73c75c0c3985e6cf4ce6cb924b3dc Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Fri, 1 May 2020 23:13:52 +0200 Subject: [PATCH 135/181] Update README.md --- README.md | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 3fcf069..b047dfc 100644 --- a/README.md +++ b/README.md @@ -51,11 +51,13 @@ It is lightweight as it does not require any additional dependencies. Add dependency to your `pom.xml` ([check latest release](https://github.com/patrickfav/bytes-java/releases)): - - at.favre.lib - bytes - {latest-version} - +```xml + + at.favre.lib + bytes + {latest-version} + +``` _Note:_ There is a byte-code optimized version (powered by [ProGuard](https://www.guardsquare.com/en/products/proguard)) which can be used with [classifier](https://maven.apache.org/pom.html#Maven_Coordinates) 'optimized'. This may have issues so use at your own risk. @@ -624,11 +626,13 @@ The artifacts are deployed to [jcenter](https://bintray.com/bintray/jcenter) and Add the dependency of the [latest version](https://github.com/patrickfav/bytes/releases) to your `pom.xml`: - - at.favre.lib - bytes - {latest-version} - +```xml + + at.favre.lib + bytes + {latest-version} + +``` ### Gradle From c956722126c731883f6f24eca583154e88205122 Mon Sep 17 00:00:00 2001 From: pfavre Date: Tue, 9 Jun 2020 23:48:37 +0200 Subject: [PATCH 136/181] Add `from()` constructor for float[] and double[] --- CHANGELOG | 5 ++ README.md | 2 + src/main/java/at/favre/lib/bytes/Bytes.java | 24 ++++++- src/main/java/at/favre/lib/bytes/Util.java | 54 +++++++++++++++ .../lib/bytes/BytesConstructorTests.java | 68 ++++++++++++++++++- 5 files changed, 150 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 36ef1de..887122f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ # Releases +## v1.4.0 + +* add `from()` constructor from `float[]` +* add `from()` constructor from `double[]` + ## v1.3.0 * improve hex encoder performance by factor 5 diff --git a/README.md b/README.md index b047dfc..389643f 100644 --- a/README.md +++ b/README.md @@ -137,6 +137,8 @@ Creating byte arrays from **primitive integer** types and arrays: Bytes.from(8); //00000000 00000000 00000000 00001000 Bytes.from(1897621543227L); Bytes.from(1634, 88903, 77263); +Bytes.from(0.7336f, -87263.0f); +Bytes.from(0.8160183296, 3984639846.0); ``` Initializing **empty arrays** of arbitrary length: diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 1cb22c4..84b303c 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -108,7 +108,7 @@ public static Bytes empty() { * @return new instance */ public static Bytes wrap(Bytes bytes) { - return wrap(bytes.internalArray(), bytes.byteOrder); + return wrap(Objects.requireNonNull(bytes, "passed Byte instance must not be null").internalArray(), bytes.byteOrder); } /** @@ -346,6 +346,16 @@ public static Bytes from(float float4byte) { return wrap(ByteBuffer.allocate(4).putFloat(float4byte).array()); } + /** + * Creates a new instance from given float array. + * + * @param floatArray to create from + * @return new instance + */ + public static Bytes from(float... floatArray) { + return wrap(Util.Converter.toByteArray(Objects.requireNonNull(floatArray, "must provide at least a single float"))); + } + /** * Creates a new instance from given 8 byte floating point number (double). * @@ -356,6 +366,16 @@ public static Bytes from(double double8Byte) { return wrap(ByteBuffer.allocate(8).putDouble(double8Byte).array()); } + /** + * Creates a new instance from given double array. + * + * @param doubleArray to create from + * @return new instance + */ + public static Bytes from(double... doubleArray) { + return wrap(Util.Converter.toByteArray(Objects.requireNonNull(doubleArray, "must provide at least a single double"))); + } + /** * Creates a new instance from given {@link ByteBuffer}. * Will use the same backing byte array and honour the buffer's byte order. @@ -2043,7 +2063,7 @@ public char[] toCharArray(Charset charset) { * Pairs of {@code byte} elements are compared as if by invoking * {@link Byte#compare(byte, byte)}. *

- * Uses {@link ByteBuffer#compareTo(Object)} internally. + * Uses {@link ByteBuffer#compareTo(ByteBuffer)} internally. * * @return A negative integer, zero, or a positive integer as this buffer * is less than, equal to, or greater than the given buffer diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 93c05ab..2588223 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -560,6 +560,33 @@ static byte[] toByteArray(int[] intArray) { return primitivesArray; } + /** + * Creates a byte array from given float array. + * The resulting byte array will have length floatArray * 4. + * + *

+ * Analysis + *

+ *

+ * + * @param floatArray to convert + * @return resulting byte array + */ + static byte[] toByteArray(float[] floatArray) { + byte[] primitivesArray = new byte[floatArray.length * 4]; + ByteBuffer buffer = ByteBuffer.allocate(4); + for (int i = 0; i < floatArray.length; i++) { + buffer.clear(); + byte[] floatBytes = buffer.putFloat(floatArray[i]).array(); + System.arraycopy(floatBytes, 0, primitivesArray, (i * 4), floatBytes.length); + } + return primitivesArray; + } + /** * Creates a byte array from given long array. * The resulting byte array will have length longArray * 8 @@ -587,6 +614,33 @@ static byte[] toByteArray(long[] longArray) { return primitivesArray; } + /** + * Creates a byte array from given double array. + * The resulting byte array will have length doubleArray * 8. + * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * + * @param doubleArray to convert + * @return resulting byte array + */ + static byte[] toByteArray(double[] doubleArray) { + byte[] primitivesArray = new byte[doubleArray.length * 8]; + ByteBuffer buffer = ByteBuffer.allocate(8); + for (int i = 0; i < doubleArray.length; i++) { + buffer.clear(); + byte[] doubleBytes = buffer.putDouble(doubleArray[i]).array(); + System.arraycopy(doubleBytes, 0, primitivesArray, (i * 8), doubleBytes.length); + } + return primitivesArray; + } + /** * Converts a char array to a byte array with given charset and range * diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index aa4f8c8..612dba3 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -67,6 +67,11 @@ public void wrapTest() { assertEquals(0, bNullSafe1.length()); } + @Test(expected = NullPointerException.class) + public void wrapByteNull_shouldThrow() { + Bytes.wrap((Bytes) null); + } + @Test(expected = NullPointerException.class) public void wrapTestNullExpected() { Bytes.wrap((byte[]) null); @@ -74,7 +79,7 @@ public void wrapTestNullExpected() { @Test public void wrapTestNullSafe() { - Bytes.wrapNullSafe(null); + assertSame(Bytes.empty(), Bytes.wrapNullSafe(null)); } @Test @@ -183,6 +188,11 @@ public void fromInt() { assertEquals(test, Bytes.from(test).toInt()); } + @Test(expected = NullPointerException.class) + public void fromIntArray_empty_shouldThrow() { + Bytes.from((int[]) null); + } + @Test public void fromIntArray() { assertArrayEquals(new byte[]{0, 0, 0, 1, 0, 0, 0, 2}, Bytes.from(1, 2).array()); @@ -207,6 +217,11 @@ public void fromLong() { assertEquals(test, Bytes.from(test).toLong()); } + @Test(expected = NullPointerException.class) + public void fromLongArray_empty_shouldThrow() { + Bytes.from((long[]) null); + } + @Test public void fromLongArray() { assertArrayEquals(new byte[]{0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2}, Bytes.from(new long[]{1, 2}).array()); @@ -224,6 +239,22 @@ public void fromFloat() { assertEquals(test, Bytes.from(test).toFloat(), 0.01); } + @Test(expected = NullPointerException.class) + public void fromFloatArray_empty_shouldThrow() { + Bytes.from((float[]) null); + } + + @Test + public void fromFloatArray() { + assertArrayEquals(new byte[]{0, 0, 0, 0, 0, 0, 0, 0}, Bytes.from(0f, 0f).array()); + assertArrayEquals(new byte[]{0, 0, 0, 0, 63, -128, 0, 0}, Bytes.from(0f, 1f).array()); + assertArrayEquals(new byte[]{0, 0, 0, 0, -65, -128, 0, 0}, Bytes.from(0f, -1f).array()); + assertArrayEquals(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Bytes.from(0f, 0f, 0f).array()); + assertArrayEquals(new byte[]{66, -105, 0, 0, 71, 119, 46, 31}, Bytes.from(75.5f, 63278.123f).array()); + assertArrayEquals(Bytes.from(Bytes.from(78239.934978f), Bytes.from(-82736.65178f), Bytes.from(0.12879316287461f)).array(), + Bytes.from(78239.934978f, -82736.65178f, 0.12879316287461f).array()); + } + @Test public void fromDouble() { double test = 3423423.8923423974123; @@ -233,6 +264,21 @@ public void fromDouble() { assertEquals(test, Bytes.from(test).toDouble(), 0.01); } + @Test(expected = NullPointerException.class) + public void fromDoubleArray_empty_shouldThrow() { + Bytes.from((double[]) null); + } + + @Test + public void fromDoubleArray() { + assertArrayEquals(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Bytes.from(0.0, 0.0).array()); + assertArrayEquals(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 63, -16, 0, 0, 0, 0, 0, 0}, Bytes.from(0.0, 1.0).array()); + assertArrayEquals(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, -65, -16, 0, 0, 0, 0, 0, 0}, Bytes.from(0.0, -1.0).array()); + assertArrayEquals(new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, Bytes.from(0, 0, 0).array()); + assertArrayEquals(Bytes.from(Bytes.from(78239.934978), Bytes.from(-82736.65178), Bytes.from(0.12879316287461)).array(), + Bytes.from(78239.934978, -82736.65178, 0.12879316287461).array()); + } + @Test public void fromByteBuffer() { checkByteBuffer(example_bytes_empty); @@ -325,6 +371,11 @@ public void toCharArrayShouldThroughNullPointer() { Bytes.allocate(4).toCharArray(null); } + @Test(expected = NullPointerException.class) + public void fromMultipleBytes_empty_shouldThrow() { + Bytes.from((Bytes[]) null); + } + @Test public void fromMultipleBytes() { assertArrayEquals(new byte[]{0x01, 0x02, 0x03}, Bytes.from(Bytes.from((byte) 0x01), Bytes.from((byte) 0x02), Bytes.from((byte) 0x03)).array()); @@ -446,6 +497,21 @@ public void fromVariousBytes() { assertArrayEquals(example_bytes_sixteen, Bytes.fromNullSafe(example_bytes_sixteen).array()); } + @Test(expected = NullPointerException.class) + public void fromArray_empty_shouldThrow() { + Bytes.from((byte[]) null); + } + + @Test(expected = NullPointerException.class) + public void wrapArrayByteOrder_empty_shouldThrow() { + Bytes.wrap(null, ByteOrder.BIG_ENDIAN); + } + + @Test(expected = NullPointerException.class) + public void fromPartByte_empty_shouldThrow() { + Bytes.from((byte[]) null, 0, 1); + } + @Test public void fromPartByte() { assertArrayEquals(new byte[]{example_bytes_four[1]}, Bytes.from(example_bytes_four, 1, 1).array()); From 8574b3e49b5309a7573d061606b34064b1499f37 Mon Sep 17 00:00:00 2001 From: pfavre Date: Wed, 10 Jun 2020 00:01:02 +0200 Subject: [PATCH 137/181] Fix throw correct exception in `toUUID()` Also fix javadoc for incorrect throws explanation. --- CHANGELOG | 1 + src/main/java/at/favre/lib/bytes/Bytes.java | 21 +++++++++---------- .../bytes/BytesToConvertOtherTypesTest.java | 6 +++--- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 887122f..10b2ffc 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -4,6 +4,7 @@ * add `from()` constructor from `float[]` * add `from()` constructor from `double[]` +* fix throwing `IllegalArgumentException` instead of `IllegalStateException` in `.toUUID()` ## v1.3.0 * improve hex encoder performance by factor 5 diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 84b303c..b033e41 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1832,11 +1832,10 @@ public BigInteger toBigInteger() { * to a {@link UUID} constructor. * * @return newly created UUID + * @throws IllegalArgumentException if byte array has length not equal to 16 */ public UUID toUUID() { - if (length() != 16) { - throw new IllegalStateException("creating UUID requires internal array to be exactly 16 bytes, was " + length()); - } + Util.Validation.checkExactLength(length(), 16, "UUID"); ByteBuffer byteBuffer = buffer(); return new UUID(byteBuffer.getLong(), byteBuffer.getLong()); } @@ -1848,7 +1847,7 @@ public UUID toUUID() { * If you just want to get the first element as {@code byte}, see {@link #byteAt(int)}, using index zero. * * @return the byte representation - * @throws IllegalStateException if byte array has length not equal to 1 + * @throws IllegalArgumentException if byte array has length not equal to 1 * @see
Primitive Types */ public byte toByte() { @@ -1863,7 +1862,7 @@ public byte toByte() { * If you just want to get the first element as {@code byte}, see {@link #byteAt(int)}, using index zero. * * @return the unsigned byte representation wrapped in an int - * @throws IllegalStateException if byte array has length not equal to 1 + * @throws IllegalArgumentException if byte array has length not equal to 1 * @see Primitive Types */ public int toUnsignedByte() { @@ -1878,7 +1877,7 @@ public int toUnsignedByte() { * If you just want to get the first 2 bytes as {@code char}, see {@link #charAt(int)} using index zero. * * @return the int representation - * @throws IllegalStateException if byte array has length not equal to 2 + * @throws IllegalArgumentException if byte array has length not equal to 2 * @see Primitive Types */ public char toChar() { @@ -1893,7 +1892,7 @@ public char toChar() { * If you just want to get the first 2 bytes as {@code short}, see {@link #shortAt(int)} using index zero. * * @return the int representation - * @throws IllegalStateException if byte array has length not equal to 2 + * @throws IllegalArgumentException if byte array has length not equal to 2 * @see Primitive Types */ public short toShort() { @@ -1908,7 +1907,7 @@ public short toShort() { * If you just want to get the first 4 bytes as {@code int}, see {@link #intAt(int)} using index zero. * * @return the int representation - * @throws IllegalStateException if byte array has length not equal to 4 + * @throws IllegalArgumentException if byte array has length not equal to 4 * @see Primitive Types */ public int toInt() { @@ -1942,7 +1941,7 @@ public int[] toIntArray() { * If you just want to get the first 4 bytes as {@code long}, see {@link #longAt(int)} using index zero. * * @return the long representation - * @throws IllegalStateException if byte array has length not equal to 8 + * @throws IllegalArgumentException if byte array has length not equal to 8 * @see Primitive Types */ public long toLong() { @@ -1974,7 +1973,7 @@ public long[] toLongArray() { * representation for a Java float value. The output is dependent on the set {@link #byteOrder()}. * * @return the float representation - * @throws IllegalStateException if byte array has length not equal to 4 + * @throws IllegalArgumentException if byte array has length not equal to 4 * @see Primitive Types */ public float toFloat() { @@ -2006,7 +2005,7 @@ public float[] toFloatArray() { * representation for a Java double value. The output is dependent on the set {@link #byteOrder()}. * * @return the double representation - * @throws IllegalStateException if byte array has length not equal to 8 + * @throws IllegalArgumentException if byte array has length not equal to 8 * @see Primitive Types */ public double toDouble() { diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index b2f9dd6..4c1ff0f 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -222,17 +222,17 @@ public void toDouble() { } } - @Test(expected = IllegalStateException.class) + @Test(expected = IllegalArgumentException.class) public void testToUUIDToLong() { Bytes.random(17).toUUID(); } - @Test(expected = IllegalStateException.class) + @Test(expected = IllegalArgumentException.class) public void testToUUIDToShort() { Bytes.random(15).toUUID(); } - @Test(expected = IllegalStateException.class) + @Test(expected = IllegalArgumentException.class) public void testToUUIDEmpty() { Bytes.allocate(0).toUUID(); } From cc11f01ac9d76cd701527103c395f72335c546f8 Mon Sep 17 00:00:00 2001 From: pfavre Date: Wed, 10 Jun 2020 00:16:01 +0200 Subject: [PATCH 138/181] Improve tests for hashcode --- .../at/favre/lib/bytes/BytesMiscTest.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 068a2ec..95303f7 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -52,14 +52,23 @@ private void testToString(Bytes bytes) { @Test public void testHashcode() { - Bytes instance = Bytes.wrap(example_bytes_seven); + Bytes instance = Bytes.from(example_bytes_seven); assertEquals(instance.hashCode(), instance.hashCode()); assertNotEquals(0, instance.hashCode()); - assertEquals(Bytes.wrap(example_bytes_seven).hashCode(), Bytes.from(example_bytes_seven).hashCode()); - assertEquals(Bytes.wrap(example2_bytes_seven).hashCode(), Bytes.from(example2_bytes_seven).hashCode()); - assertNotEquals(Bytes.wrap(example_bytes_seven).hashCode(), Bytes.wrap(example2_bytes_seven).hashCode()); - assertNotEquals(Bytes.wrap(example_bytes_eight).hashCode(), Bytes.wrap(example2_bytes_seven).hashCode()); - assertNotEquals(0, Bytes.wrap(example2_bytes_seven).hashCode()); + assertEquals(Bytes.from(example_bytes_seven).hashCode(), Bytes.from(example_bytes_seven).hashCode()); + assertEquals(Bytes.from(example2_bytes_seven).hashCode(), Bytes.from(example2_bytes_seven).hashCode()); + assertNotEquals(Bytes.from(example_bytes_seven).hashCode(), Bytes.from(example2_bytes_seven).hashCode()); + assertNotEquals(Bytes.from(example_bytes_eight).hashCode(), Bytes.from(example2_bytes_seven).hashCode()); + assertNotEquals(0, Bytes.from(example2_bytes_seven).hashCode()); + } + + @Test + public void testHashcode_changing() { + MutableBytes instance = Bytes.from(example_bytes_seven).mutable(); + assertEquals(instance.hashCode(), Bytes.from(example_bytes_seven).hashCode()); + + instance.setByteAt(0, (byte) 0x4B); + assertNotEquals(instance.hashCode(), Bytes.from(example_bytes_seven).hashCode()); } @SuppressWarnings("SimplifiableJUnitAssertion") From 62efa2cd5e32472a014e687580e973b8967d0965 Mon Sep 17 00:00:00 2001 From: pfavre Date: Wed, 10 Jun 2020 00:34:58 +0200 Subject: [PATCH 139/181] Remove redundant lines --- src/main/java/at/favre/lib/bytes/MutableBytes.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 93a92d4..530f002 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -71,7 +71,6 @@ public boolean isMutable() { * @return this instance * @throws IndexOutOfBoundsException if newArray.length > internal length */ - public MutableBytes overwrite(byte[] newArray) { return overwrite(newArray, 0); } @@ -83,7 +82,6 @@ public MutableBytes overwrite(byte[] newArray) { * @return this instance * @throws IndexOutOfBoundsException if newArray.length > internal length */ - public MutableBytes overwrite(Bytes newBytes) { return overwrite(newBytes, 0); } @@ -96,7 +94,6 @@ public MutableBytes overwrite(Bytes newBytes) { * @return this instance * @throws IndexOutOfBoundsException if newArray.length + offsetInternalArray > internal length */ - public MutableBytes overwrite(byte[] newArray, int offsetInternalArray) { Objects.requireNonNull(newArray, "must provide non-null array as source"); System.arraycopy(newArray, 0, internalArray(), offsetInternalArray, newArray.length); @@ -111,7 +108,6 @@ public MutableBytes overwrite(byte[] newArray, int offsetInternalArray) { * @return this instance * @throws IndexOutOfBoundsException if newBytes.length + offsetInternalArray > internal length */ - public MutableBytes overwrite(Bytes newBytes, int offsetInternalArray) { return overwrite(Objects.requireNonNull(newBytes, "must provide non-null array as source").array(), offsetInternalArray); } From 427cb84fdaf6153acdc3cbadceb4a77d9708a837 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 10 Jun 2020 10:42:43 +0200 Subject: [PATCH 140/181] Improve tests in MutableBytes --- .../at/favre/lib/bytes/MutableBytesTest.java | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java index 831cbfe..3ded72c 100644 --- a/src/test/java/at/favre/lib/bytes/MutableBytesTest.java +++ b/src/test/java/at/favre/lib/bytes/MutableBytesTest.java @@ -31,6 +31,20 @@ import static org.junit.Assert.*; public class MutableBytesTest extends ABytesTest { + @Test + public void allocate() { + MutableBytes b = MutableBytes.allocate(8); + assertEquals(8, b.length()); + assertFalse(b.validateNotOnlyZeros()); + } + + @Test + public void allocateFill() { + MutableBytes b = MutableBytes.allocate(1, (byte) 0xFF); + assertEquals(1, b.length()); + assertEquals((byte) 0xFF, b.byteAt(0)); + } + @Test public void overwriteWithEmptyArray() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); @@ -45,6 +59,13 @@ public void overwriteOtherArray() { assertArrayEquals(example2_bytes_seven, b.array()); } + @Test + public void overwriteOtherBytesInstance() { + MutableBytes b = fromAndTest(example_bytes_seven).mutable(); + assertSame(b, b.overwrite(Bytes.from(example2_bytes_seven))); + assertArrayEquals(example2_bytes_seven, b.array()); + } + @Test public void overwritePartialArray() { MutableBytes b = fromAndTest(example_bytes_seven).mutable(); @@ -66,9 +87,9 @@ public void overwritePartialArray2() { @Test public void overwriteBytes() { MutableBytes a = fromAndTest(example_bytes_seven).mutable(); - MutableBytes b = Bytes.from((byte)0).mutable(); + MutableBytes b = Bytes.from((byte) 0).mutable(); MutableBytes c = a.overwrite(b, 0).mutable(); - MutableBytes d = Bytes.wrap(a).copy(1, a.array().length-1).mutable(); + MutableBytes d = Bytes.wrap(a).copy(1, a.array().length - 1).mutable(); assertArrayEquals(c.array(), Bytes.from(b).append(d).array()); } @@ -79,7 +100,8 @@ public void overwriteTooBigArrayShouldThrowException() { try { b.overwrite(new byte[]{(byte) 0xAA, 0x30}, b.length()); fail(); - } catch(IndexOutOfBoundsException ignored) {} + } catch (IndexOutOfBoundsException ignored) { + } } @@ -89,7 +111,8 @@ public void overwriteTooBigBytesShouldThrowException() { try { b.overwrite(Bytes.from((byte) 0xAA, 0x30), b.length()); fail(); - } catch(IndexOutOfBoundsException ignored) {} + } catch (IndexOutOfBoundsException ignored) { + } } @@ -98,10 +121,11 @@ public void overwriteNullArrayShouldThrowException() { MutableBytes nonsense = null; MutableBytes b = fromAndTest(example_bytes_seven).mutable(); - try{ + try { b.overwrite(nonsense); fail(); - } catch (NullPointerException ignored){} + } catch (NullPointerException ignored) { + } } From e8c3f7166ad34369000488a48297d2e9777abadf Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 10 Jun 2020 13:03:31 +0200 Subject: [PATCH 141/181] Optimze Gzip compression logic and error handling --- .../at/favre/lib/bytes/BytesTransformers.java | 49 +++---------------- 1 file changed, 8 insertions(+), 41 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index f2ae0c7..763d6bd 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -303,65 +303,32 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { } private byte[] decompress(byte[] compressedContent) { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - GZIPInputStream gzipInputStream = null; - byte[] returnBuffer; - try { + ByteArrayOutputStream bos = new ByteArrayOutputStream(Math.max(32, compressedContent.length / 2)); + + try (GZIPInputStream gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(compressedContent))) { int len; byte[] buffer = new byte[4 * 1024]; - gzipInputStream = new GZIPInputStream(new ByteArrayInputStream(compressedContent)); while ((len = gzipInputStream.read(buffer)) > 0) { bos.write(buffer, 0, len); } - gzipInputStream.close(); - returnBuffer = bos.toByteArray(); - bos.close(); - return returnBuffer; + return bos.toByteArray(); } catch (Exception e) { throw new IllegalStateException("could not decompress gzip", e); - } finally { - try { - bos.close(); - } catch (IOException ignore) { - } - - if (gzipInputStream != null) { - try { - gzipInputStream.close(); - } catch (IOException ignore) { - } - } } } private byte[] compress(byte[] content) { ByteArrayOutputStream bos = new ByteArrayOutputStream(content.length); - GZIPOutputStream gzipOutputStream = null; - byte[] returnBuffer; - try { - gzipOutputStream = new GZIPOutputStream(bos); + + try (GZIPOutputStream gzipOutputStream = new GZIPOutputStream(bos)) { gzipOutputStream.write(content); - gzipOutputStream.close(); - returnBuffer = bos.toByteArray(); - bos.close(); - return returnBuffer; } catch (Exception e) { throw new IllegalStateException("could not compress gzip", e); - } finally { - try { - bos.close(); - } catch (IOException ignore) { - } - - if (gzipOutputStream != null) { - try { - gzipOutputStream.close(); - } catch (IOException ignore) { - } - } } + + return bos.toByteArray(); } @Override From 2e3cb14e30be8f70cc6d894bb352e656b791b4e7 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 10 Jun 2020 13:10:31 +0200 Subject: [PATCH 142/181] Fix checkstyle issue --- src/main/java/at/favre/lib/bytes/BytesTransformers.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index 763d6bd..fc448c9 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -4,7 +4,6 @@ import javax.crypto.spec.SecretKeySpec; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.IOException; import java.security.SecureRandom; import java.util.Arrays; import java.util.Comparator; From c2ef5bdba6e0eb9fd9eb6ed4fdae75727cc36783 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sun, 29 Nov 2020 19:55:00 +0100 Subject: [PATCH 143/181] Update Links to Travis CI (using .com now as required by Travis migration) --- README.md | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 389643f..fb4a105 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ to blindly paste code snippets from [m](https://stackoverflow.com/questions/1519736/random-shuffling-of-an-array) [![Download](https://api.bintray.com/packages/patrickfav/maven/bytes-java/images/download.svg)](https://bintray.com/patrickfav/maven/bytes-java/_latestVersion) -[![Build Status](https://travis-ci.org/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.org/patrickfav/bytes-java) +[![Build Status](https://travis-ci.com/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.com/patrickfav/bytes-java) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) [![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) [![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) diff --git a/pom.xml b/pom.xml index 8d70d20..0a27b42 100644 --- a/pom.xml +++ b/pom.xml @@ -138,6 +138,6 @@ Travis - https://travis-ci.org/patrickfav/bytes-java + https://travis-ci.com/patrickfav/bytes-java From 2208aade7db2f116543940f0ef13f80dc302b02f Mon Sep 17 00:00:00 2001 From: Grant Peltier Date: Sun, 21 Feb 2021 11:40:48 -0600 Subject: [PATCH 144/181] Fix Bytes.bitAt to respect byte order Closes #39. bitAt now checks byte order before locating the desired bit. --- src/main/java/at/favre/lib/bytes/Bytes.java | 6 +++++- src/test/java/at/favre/lib/bytes/BytesMiscTest.java | 6 ++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index b033e41..a04e319 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1338,7 +1338,11 @@ public boolean endsWith(byte[] subArray) { */ public boolean bitAt(int bitIndex) { Util.Validation.checkIndexBounds(lengthBit(), bitIndex, 1, "bit"); - return ((byteAt(length() - 1 - (bitIndex / 8)) >>> bitIndex % 8) & 1) != 0; + if (byteOrder == ByteOrder.BIG_ENDIAN) { + return ((byteAt(length() - 1 - (bitIndex / 8)) >>> bitIndex % 8) & 1) != 0; + } else { + return ((byteAt(bitIndex / 8) >>> bitIndex % 8) & 1) != 0; + } } /** diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index 95303f7..ed832bb 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -272,6 +272,12 @@ public void bitAt() { fail(); } catch (IndexOutOfBoundsException ignored) { } + + Bytes bytes = Bytes.wrap(new byte[]{1, 0, 2, 0}).byteOrder(ByteOrder.LITTLE_ENDIAN); + assertTrue(bytes.bitAt(0)); + assertTrue(bytes.bitAt(17)); + assertFalse(bytes.bitAt(8)); + assertFalse(bytes.bitAt(31)); } @Test From e997250f181cf60d3dbfb729a4c755e06fdf14d3 Mon Sep 17 00:00:00 2001 From: Grant Peltier Date: Mon, 22 Feb 2021 16:56:27 -0600 Subject: [PATCH 145/181] Fix bit shift methods to respect byte order Closes #41. Bytes.leftShift and Bytes.rightShift now behave as expected based on the set byte order. --- src/main/java/at/favre/lib/bytes/Bytes.java | 12 ++- .../at/favre/lib/bytes/BytesTransformer.java | 9 ++- src/main/java/at/favre/lib/bytes/Util.java | 78 +++++++++++++------ .../favre/lib/bytes/BytesTransformTest.java | 3 +- .../java/at/favre/lib/bytes/UtilByteTest.java | 73 ++++++++++------- 5 files changed, 120 insertions(+), 55 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index a04e319..f1ab738 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -967,7 +967,11 @@ public Bytes not() { * @see Bit shifts */ public Bytes leftShift(int shiftCount) { - return transform(new BytesTransformer.ShiftTransformer(shiftCount, BytesTransformer.ShiftTransformer.Type.LEFT_SHIFT)); + return transform(new BytesTransformer.ShiftTransformer( + shiftCount, + BytesTransformer.ShiftTransformer.Type.LEFT_SHIFT, + byteOrder + )); } /** @@ -982,7 +986,11 @@ public Bytes leftShift(int shiftCount) { * @see Bit shifts */ public Bytes rightShift(int shiftCount) { - return transform(new BytesTransformer.ShiftTransformer(shiftCount, BytesTransformer.ShiftTransformer.Type.RIGHT_SHIFT)); + return transform(new BytesTransformer.ShiftTransformer( + shiftCount, + BytesTransformer.ShiftTransformer.Type.RIGHT_SHIFT, + byteOrder + )); } /** diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformer.java b/src/main/java/at/favre/lib/bytes/BytesTransformer.java index 3612505..22367d8 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformer.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformer.java @@ -21,6 +21,7 @@ package at.favre.lib.bytes; +import java.nio.ByteOrder; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Objects; @@ -131,10 +132,12 @@ public enum Type { private final int shiftCount; private final Type type; + private final ByteOrder byteOrder; - ShiftTransformer(int shiftCount, Type type) { + ShiftTransformer(int shiftCount, Type type, ByteOrder byteOrder) { this.shiftCount = shiftCount; this.type = Objects.requireNonNull(type, "passed shift type must not be null"); + this.byteOrder = Objects.requireNonNull(byteOrder, "passed byteOrder type must not be null"); } @Override @@ -143,10 +146,10 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { switch (type) { case RIGHT_SHIFT: - return Util.Byte.shiftRight(out, shiftCount); + return Util.Byte.shiftRight(out, shiftCount, byteOrder); default: case LEFT_SHIFT: - return Util.Byte.shiftLeft(out, shiftCount); + return Util.Byte.shiftLeft(out, shiftCount, byteOrder); } } diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 2588223..ee494fc 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -291,25 +291,42 @@ static void reverse(byte[] array, int fromIndex, int toIndex) { * * @param byteArray to shift * @param shiftBitCount how many bits to shift + * @param byteOrder endianness of given byte array * @return shifted byte array */ - static byte[] shiftLeft(byte[] byteArray, int shiftBitCount) { + static byte[] shiftLeft(byte[] byteArray, int shiftBitCount, ByteOrder byteOrder) { final int shiftMod = shiftBitCount % 8; final byte carryMask = (byte) ((1 << shiftMod) - 1); final int offsetBytes = (shiftBitCount / 8); int sourceIndex; - for (int i = 0; i < byteArray.length; i++) { - sourceIndex = i + offsetBytes; - if (sourceIndex >= byteArray.length) { - byteArray[i] = 0; - } else { - byte src = byteArray[sourceIndex]; - byte dst = (byte) (src << shiftMod); - if (sourceIndex + 1 < byteArray.length) { - dst |= byteArray[sourceIndex + 1] >>> (8 - shiftMod) & carryMask; + if (byteOrder == ByteOrder.BIG_ENDIAN) { + for (int i = 0; i < byteArray.length; i++) { + sourceIndex = i + offsetBytes; + if (sourceIndex >= byteArray.length) { + byteArray[i] = 0; + } else { + byte src = byteArray[sourceIndex]; + byte dst = (byte) (src << shiftMod); + if (sourceIndex + 1 < byteArray.length) { + dst |= byteArray[sourceIndex + 1] >>> (8 - shiftMod) & carryMask; + } + byteArray[i] = dst; + } + } + } else { + for (int i = byteArray.length - 1; i >= 0; i--) { + sourceIndex = i - offsetBytes; + if (sourceIndex < 0) { + byteArray[i] = 0; + } else { + byte src = byteArray[sourceIndex]; + byte dst = (byte) (src << shiftMod); + if (sourceIndex - 1 >= 0) { + dst |= byteArray[sourceIndex - 1] >>> (8 - shiftMod) & carryMask; + } + byteArray[i] = dst; } - byteArray[i] = dst; } } return byteArray; @@ -330,25 +347,42 @@ static byte[] shiftLeft(byte[] byteArray, int shiftBitCount) { * * @param byteArray to shift * @param shiftBitCount how many bits to shift + * @param byteOrder endianness of given byte array * @return shifted byte array */ - static byte[] shiftRight(byte[] byteArray, int shiftBitCount) { + static byte[] shiftRight(byte[] byteArray, int shiftBitCount, ByteOrder byteOrder) { final int shiftMod = shiftBitCount % 8; final byte carryMask = (byte) (0xFF << (8 - shiftMod)); final int offsetBytes = (shiftBitCount / 8); int sourceIndex; - for (int i = byteArray.length - 1; i >= 0; i--) { - sourceIndex = i - offsetBytes; - if (sourceIndex < 0) { - byteArray[i] = 0; - } else { - byte src = byteArray[sourceIndex]; - byte dst = (byte) ((0xff & src) >>> shiftMod); - if (sourceIndex - 1 >= 0) { - dst |= byteArray[sourceIndex - 1] << (8 - shiftMod) & carryMask; + if (byteOrder == ByteOrder.BIG_ENDIAN) { + for (int i = byteArray.length - 1; i >= 0; i--) { + sourceIndex = i - offsetBytes; + if (sourceIndex < 0) { + byteArray[i] = 0; + } else { + byte src = byteArray[sourceIndex]; + byte dst = (byte) ((0xff & src) >>> shiftMod); + if (sourceIndex - 1 >= 0) { + dst |= byteArray[sourceIndex - 1] << (8 - shiftMod) & carryMask; + } + byteArray[i] = dst; + } + } + } else { + for (int i = 0; i < byteArray.length; i++) { + sourceIndex = i + offsetBytes; + if (sourceIndex >= byteArray.length) { + byteArray[i] = 0; + } else { + byte src = byteArray[sourceIndex]; + byte dst = (byte) ((0xff & src) >>> shiftMod); + if (sourceIndex + 1 < byteArray.length) { + dst |= byteArray[sourceIndex + 1] << (8 - shiftMod) & carryMask; + } + byteArray[i] = dst; } - byteArray[i] = dst; } } return byteArray; diff --git a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java index dd6feaf..8041380 100644 --- a/src/test/java/at/favre/lib/bytes/BytesTransformTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesTransformTest.java @@ -25,6 +25,7 @@ import java.math.BigInteger; import java.nio.ByteBuffer; +import java.nio.ByteOrder; import java.nio.charset.StandardCharsets; import java.security.SecureRandom; import java.util.Comparator; @@ -446,7 +447,7 @@ public void transformerInPlaceTest() { assertTrue(new BytesTransformer.BitSwitchTransformer(0, true).supportInPlaceTransformation()); assertTrue(new BytesTransformer.BitWiseOperatorTransformer(new byte[]{}, BytesTransformer.BitWiseOperatorTransformer.Mode.XOR).supportInPlaceTransformation()); assertTrue(new BytesTransformer.NegateTransformer().supportInPlaceTransformation()); - assertTrue(new BytesTransformer.ShiftTransformer(0, BytesTransformer.ShiftTransformer.Type.LEFT_SHIFT).supportInPlaceTransformation()); + assertTrue(new BytesTransformer.ShiftTransformer(0, BytesTransformer.ShiftTransformer.Type.LEFT_SHIFT, ByteOrder.BIG_ENDIAN).supportInPlaceTransformation()); assertTrue(new BytesTransformer.ReverseTransformer().supportInPlaceTransformation()); assertFalse(new BytesTransformer.MessageDigestTransformer("SHA1").supportInPlaceTransformation()); diff --git a/src/test/java/at/favre/lib/bytes/UtilByteTest.java b/src/test/java/at/favre/lib/bytes/UtilByteTest.java index 26180ea..95b55fb 100644 --- a/src/test/java/at/favre/lib/bytes/UtilByteTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilByteTest.java @@ -25,6 +25,7 @@ import org.junit.Test; import java.math.BigInteger; +import java.nio.ByteOrder; import java.util.Arrays; import java.util.Random; @@ -162,21 +163,34 @@ private static void testReverse(byte[] input, int fromIndex, int toIndex, byte[] @Test public void testLeftShift() { byte[] test = new byte[]{0, 0, 1, 0}; - assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(new byte[]{0, 0, -128, 0}, 1)); - assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(new byte[]{0, 0, 64, 0}, 2)); - assertArrayEquals(new byte[]{1, 1, 1, 0}, Util.Byte.shiftLeft(new byte[]{-128, -128, -128, -128}, 1)); - assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 1)); - assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 2)); - assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 3)); - assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 8)); - assertArrayEquals(new byte[]{0, 2, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 9)); - assertArrayEquals(new byte[]{1, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 16)); - assertArrayEquals(new byte[]{2, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 17)); - assertArrayEquals(new byte[]{-128, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 23)); - assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 24)); - assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 24)); - - assertSame(test, Util.Byte.shiftLeft(test, 1)); + assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(new byte[]{0, 0, -128, 0}, 1, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(new byte[]{0, 0, 64, 0}, 2, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{1, 1, 1, 0}, Util.Byte.shiftLeft(new byte[]{-128, -128, -128, -128}, 1, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 1, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 2, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 3, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 1, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 8, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 2, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 9, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{1, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 16, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{2, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 17, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{-128, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 23, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 24, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 0, 0}, Util.Byte.shiftLeft(Bytes.from(test).array(), 24, ByteOrder.BIG_ENDIAN)); + + assertSame(test, Util.Byte.shiftLeft(test, 1, ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(new byte[]{0, 0, 1, 0}, Util.Byte.shiftLeft(new byte[]{0, 1, 0, 0}, 8, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0, 0, 1, 0}, Util.Byte.shiftLeft(new byte[]{(byte) 0, 1, 0, 1}, 8, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0x54, 0x1}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 1, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0xA8, 0x2}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 2, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0x50, 0x5}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 3, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0xA0, 0xA}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 4, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0x40, 0x15}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 5, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0x80, 0x2A}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 6, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0x00, 0x55}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 7, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0, (byte) 0xAA}, Util.Byte.shiftLeft(new byte[]{(byte) 0xAA, 0}, 8, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 0, 0x40}, Util.Byte.shiftLeft(new byte[]{1, 0, 0, 0}, 30, ByteOrder.LITTLE_ENDIAN)); + } @Test @@ -187,7 +201,7 @@ public void testLeftShiftAgainstRefImpl() { Bytes rnd = Bytes.random(4 + new Random().nextInt(14)); byte[] expected = Bytes.from(new BigInteger(rnd.array()).shiftLeft(shift).toByteArray()).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); - byte[] actual = Bytes.from(Util.Byte.shiftLeft(rnd.copy().array(), shift)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); + byte[] actual = Bytes.from(Util.Byte.shiftLeft(rnd.copy().array(), shift, ByteOrder.BIG_ENDIAN)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); System.out.println("Original \t" + rnd.encodeBinary() + " << " + shift); System.out.println("Expected \t" + Bytes.wrap(expected).encodeBinary()); @@ -202,18 +216,23 @@ public void testLeftShiftAgainstRefImpl() { public void testRightShift() { byte[] test = new byte[]{0, 0, 16, 0}; assertEquals(0b01111110, 0b11111101 >>> 1); - assertArrayEquals(new byte[]{0b00101101, (byte) 0b01111110}, Util.Byte.shiftRight(new byte[]{0b01011010, (byte) 0b11111101}, 1)); - assertArrayEquals(new byte[]{0, -128, -128, -128}, Util.Byte.shiftRight(new byte[]{1, 1, 1, 1}, 1)); - assertArrayEquals(new byte[]{0, -128, 66, 0}, Util.Byte.shiftRight(new byte[]{2, 1, 8, 2}, 2)); + assertArrayEquals(new byte[]{0b00101101, (byte) 0b01111110}, Util.Byte.shiftRight(new byte[]{0b01011010, (byte) 0b11111101}, 1, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, -128, -128, -128}, Util.Byte.shiftRight(new byte[]{1, 1, 1, 1}, 1, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, -128, 66, 0}, Util.Byte.shiftRight(new byte[]{2, 1, 8, 2}, 2, ByteOrder.BIG_ENDIAN)); assertArrayEquals(new byte[]{0, -128, 66, 0}, new BigInteger(new byte[]{2, 1, 8, 2}).shiftRight(2).toByteArray()); - assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.Byte.shiftRight(Bytes.from(test).array(), 5)); - assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.Byte.shiftRight(new byte[]{0, 0, 1, 0}, 1)); - assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 1)); - assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 2)); - assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 3)); - assertArrayEquals(new byte[]{0, 0, 1, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 4)); + assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.Byte.shiftRight(Bytes.from(test).array(), 5, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 0, -128}, Util.Byte.shiftRight(new byte[]{0, 0, 1, 0}, 1, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 8, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 1, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 4, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 2, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 2, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 3, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new byte[]{0, 0, 1, 0}, Util.Byte.shiftRight(Bytes.from(test).array(), 4, ByteOrder.BIG_ENDIAN)); + + assertSame(test, Util.Byte.shiftRight(test, 1, ByteOrder.BIG_ENDIAN)); - assertSame(test, Util.Byte.shiftRight(test, 1)); + assertArrayEquals(new byte[]{0, 0}, Util.Byte.shiftRight(new byte[]{1, 0}, 1, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0x80, 0}, Util.Byte.shiftRight(new byte[]{0, 0x02}, 2, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 0x80, 0, 0, 0}, Util.Byte.shiftRight(new byte[]{0, 0, 0, 1}, 17, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new byte[]{(byte) 1, 0, 0, 0}, Util.Byte.shiftRight(new byte[]{0, 0, 0, (byte) 0x80}, 31, ByteOrder.LITTLE_ENDIAN)); } @Test @@ -223,7 +242,7 @@ public void testRightShiftAgainstRefImpl() { Bytes rnd = Bytes.random(4 + new Random().nextInt(12)); if (!rnd.bitAt(rnd.lengthBit() - 1)) { //only unsigned byte[] expected = Bytes.from(new BigInteger(rnd.array()).shiftRight(shift).toByteArray()).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); - byte[] actual = Bytes.from(Util.Byte.shiftRight(rnd.copy().array(), shift)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); + byte[] actual = Bytes.from(Util.Byte.shiftRight(rnd.copy().array(), shift, ByteOrder.BIG_ENDIAN)).resize(rnd.length(), BytesTransformer.ResizeTransformer.Mode.RESIZE_KEEP_FROM_MAX_LENGTH).array(); // System.out.println("Original \t" + rnd.encodeBinary() + " >> " + shift); // System.out.println("Expected \t" + Bytes.wrap(expected).encodeBinary()); From e8eb89e252cd68bc982ffe5d4efd221eab556443 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 27 Feb 2021 23:04:11 +0100 Subject: [PATCH 146/181] Update CHANGELOG --- CHANGELOG | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 10b2ffc..d211c99 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,10 @@ # Releases +## v1.5.0 + +* fix `leftShift()` and `rightShift()` to respect byte order (thx @gfpeltier) +* fix `bitAt()` to respect byte order (thx @gfpeltier) + ## v1.4.0 * add `from()` constructor from `float[]` From 8a74c6b87f987ac11daf59de54ce2ecb336c3427 Mon Sep 17 00:00:00 2001 From: pfavre Date: Sat, 27 Feb 2021 23:23:44 +0100 Subject: [PATCH 147/181] Bump version --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 0a27b42..f2de9ac 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ bytes - 1.4.0 + 1.5.0 bundle Bytes Utility Library From 000e37c553a4b788854c1f19032a220d688ef6b3 Mon Sep 17 00:00:00 2001 From: michielj-webiq <80327153+michielj-webiq@users.noreply.github.com> Date: Tue, 9 Mar 2021 12:43:12 +0100 Subject: [PATCH 148/181] use buffer instead of byteBuffer in README The method to turn Bytes into a ByteBuffer is called `buffer`, not `byteBuffer` --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fb4a105..b7ac77f 100644 --- a/README.md +++ b/README.md @@ -498,7 +498,7 @@ Conversion to [`InputStream`](https://docs.oracle.com/javase/7/docs/api/java/io/ ```java Bytes.wrap(array).inputStream(); -Bytes.wrap(array).byteBuffer(); +Bytes.wrap(array).buffer(); ``` If you just want a duplicated instance, sharing the same array: From f3a0c68459c4b84a36ef72810e38a9f2a6dd5d74 Mon Sep 17 00:00:00 2001 From: Herman Lyakhovich <53296879+hlyakhovich@users.noreply.github.com> Date: Thu, 11 Mar 2021 16:54:56 +0100 Subject: [PATCH 149/181] Add toShortArray --- src/main/java/at/favre/lib/bytes/Bytes.java | 19 +++++++++++ src/main/java/at/favre/lib/bytes/Util.java | 28 +++++++++++++++ .../bytes/BytesToConvertOtherTypesTest.java | 34 +++++++++++++++++++ .../at/favre/lib/bytes/UtilConverterTest.java | 16 +++++++++ 4 files changed, 97 insertions(+) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index f1ab738..42541e6 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -2044,6 +2044,25 @@ public double[] toDoubleArray() { return Util.Converter.toDoubleArray(internalArray(), byteOrder); } + /** + * Converts the internal byte array to a short array, that is, every 2 bytes will be packed into a single short. + *

+ * E.g. 2 bytes will be packed to a length 1 short array: + *

+     *  [b1, b2] = [short1]
+     * 
+ *

+ * This conversion respects the internal byte order. Will only work if all bytes can be directly mapped to short, + * which means the byte array length must be dividable by 2 without rest. + * + * @return new short[] instance representing this byte array + * @throws IllegalArgumentException if internal byte length mod 2 != 0 + */ + public short[] toShortArray() { + Util.Validation.checkModLength(length(), 2, "creating a short array"); + return Util.Converter.toShortArray(internalArray(), byteOrder); + } + /** * Decodes the internal byte array to UTF-8 char array. * This implementation will not internally create a {@link String}. diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index ee494fc..da50ff0 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -860,6 +860,34 @@ static double[] toDoubleArray(byte[] bytes, ByteOrder byteOrder) { return array; } + + /** + * Converts the byte array to a short array. This will spread 2 bytes into a single short: + * + *

+         *     [b1, b2] = [short1]
+         * 
+ * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * + * @param bytes to convert to short array, must be % 2 == 0 to work correctly + * @param byteOrder of the byte array + * @return short array + */ + static short[] toShortArray(byte[] bytes, ByteOrder byteOrder) { + ShortBuffer buffer = ByteBuffer.wrap(bytes).order(byteOrder).asShortBuffer(); + short[] array = new short[buffer.remaining()]; + buffer.get(array); + return array; + } + /** * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and * 8 byte least significant bits into an byte array. diff --git a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java index 4c1ff0f..efa1559 100644 --- a/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesToConvertOtherTypesTest.java @@ -406,4 +406,38 @@ public void testToDoubleArrayLittleEndian() { 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0}, ByteOrder.LITTLE_ENDIAN).toDoubleArray(), 0.01); } + + @Test + public void testToShortArrayEmpty() { + assertArrayEquals(new short[0], Bytes.empty().toShortArray()); + } + + + @Test(expected = IllegalArgumentException.class) + public void testToShortArrayNotMod2Was5Byte() { + Bytes.wrap(new byte[]{0, 0, 0, 0, 1}).toShortArray(); + } + + @Test + public void testToShortArray() { + assertArrayEquals(new short[]{1}, Bytes.wrap(new byte[]{0, 1}).toShortArray()); + assertArrayEquals(new short[]{257}, Bytes.wrap(new byte[]{1, 1}).toShortArray()); + assertArrayEquals(new short[]{32_767}, Bytes.wrap(new byte[]{127, -1}).toShortArray()); + + assertArrayEquals(new short[]{1, 1}, Bytes.wrap(new byte[]{0, 1, 0, 1}).toShortArray()); + assertArrayEquals(new short[]{257, 1}, Bytes.wrap(new byte[]{1, 1, 0, 1}).toShortArray()); + assertArrayEquals(new short[]{257, 32_767, 1}, Bytes.wrap(new byte[]{1, 1, 127, -1, 0, 1}).toShortArray()); + } + + @Test + public void testToShortArrayLittleEndian() { + assertArrayEquals(new short[]{1}, Bytes.wrap(new byte[]{1, 0}, ByteOrder.LITTLE_ENDIAN).toShortArray()); + assertArrayEquals(new short[]{257}, Bytes.wrap(new byte[]{1, 1}, ByteOrder.LITTLE_ENDIAN).toShortArray()); + assertArrayEquals(new short[]{32_767}, Bytes.wrap(new byte[]{-1, 127}, ByteOrder.LITTLE_ENDIAN).toShortArray()); + + assertArrayEquals(new short[]{1, 1}, Bytes.wrap(new byte[]{1, 0, 1, 0}, ByteOrder.LITTLE_ENDIAN).toShortArray()); + assertArrayEquals(new short[]{257, 1}, Bytes.wrap(new byte[]{1, 1, 1, 0}, ByteOrder.LITTLE_ENDIAN).toShortArray()); + assertArrayEquals(new short[]{257, 32_767, 1}, Bytes.wrap(new byte[]{1, 1, -1, 127, 1, 0}, ByteOrder.LITTLE_ENDIAN).toShortArray()); + } + } diff --git a/src/test/java/at/favre/lib/bytes/UtilConverterTest.java b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java index 8aa717f..3ac6f7b 100644 --- a/src/test/java/at/favre/lib/bytes/UtilConverterTest.java +++ b/src/test/java/at/favre/lib/bytes/UtilConverterTest.java @@ -193,4 +193,20 @@ public void testToDoubleArray() { assertArrayEquals(new double[0], Util.Converter.toDoubleArray(new byte[0], ByteOrder.LITTLE_ENDIAN), 0.01); assertArrayEquals(new double[0], Util.Converter.toDoubleArray(new byte[0], ByteOrder.BIG_ENDIAN), 0.01); } + + @Test + public void testToShortArray() { + assertArrayEquals(new short[]{1}, Util.Converter.toShortArray(new byte[]{0, 1}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new short[]{257}, Util.Converter.toShortArray(new byte[]{1, 1}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new short[]{32_767}, Util.Converter.toShortArray(new byte[]{127, -1}, ByteOrder.BIG_ENDIAN)); + assertArrayEquals(new short[]{257, 32_767, 1}, Util.Converter.toShortArray(new byte[]{1, 1, 127, -1, 0, 1}, ByteOrder.BIG_ENDIAN)); + + assertArrayEquals(new short[]{1}, Util.Converter.toShortArray(new byte[]{1, 0}, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new short[]{257}, Util.Converter.toShortArray(new byte[]{1, 1}, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new short[]{32_767}, Util.Converter.toShortArray(new byte[]{-1, 127}, ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new short[]{257, 32_767, 1}, Util.Converter.toShortArray(new byte[]{1, 1, -1, 127, 1, 0}, ByteOrder.LITTLE_ENDIAN)); + + assertArrayEquals(new short[0], Util.Converter.toShortArray(new byte[0], ByteOrder.LITTLE_ENDIAN)); + assertArrayEquals(new short[0], Util.Converter.toShortArray(new byte[0], ByteOrder.BIG_ENDIAN)); + } } From c0f45adc2ca696c0317edab2cf3eed89adaf17bc Mon Sep 17 00:00:00 2001 From: Herman Lyakhovich <53296879+hlyakhovich@users.noreply.github.com> Date: Wed, 17 Mar 2021 19:29:22 +0100 Subject: [PATCH 150/181] Overload from() with short array --- src/main/java/at/favre/lib/bytes/Bytes.java | 12 +++++++- src/main/java/at/favre/lib/bytes/Util.java | 28 ++++++++++++++++++- .../lib/bytes/BytesConstructorTests.java | 13 +++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 42541e6..3797292 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -296,6 +296,16 @@ public static Bytes from(short short2Byte) { return wrap(ByteBuffer.allocate(2).putShort(short2Byte).array()); } + /** + * Creates a new instance from given 2 byte short array. + * + * @param shortArray to create from + * @return new instance + */ + public static Bytes from(short... shortArray) { + return wrap(Util.Converter.toByteArray(Objects.requireNonNull(shortArray, "must provide at least a single short"))); + } + /** * Creates a new instance from given 4 byte integer. * @@ -1492,7 +1502,7 @@ public Bytes duplicate() { /** * Set the byte order or endianness of this instance. Default in Java is {@link ByteOrder#BIG_ENDIAN}. *

- * This option is important for all encoding and conversation methods. + * This option is important for all encoding and conversion methods. * * @param byteOrder new byteOrder * @return a new instance with the same underlying array and new order, or "this" if order is the same diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index da50ff0..710c4d3 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -567,6 +567,33 @@ static byte[] toPrimitiveArray(java.lang.Byte[] objectArray) { return primitivesArray; } + /** + * Creates a byte array from given short array. + * The resulting byte array will have length shortArray * 2. + * + *

+ * Analysis + *

    + *
  • Time Complexity: O(n)
  • + *
  • Space Complexity: O(n)
  • + *
  • Alters Parameters: false
  • + *
+ *

+ * + * @param shortArray to convert + * @return resulting byte array + */ + static byte[] toByteArray(short[] shortArray) { + byte[] primitivesArray = new byte[shortArray.length * 2]; + ByteBuffer buffer = ByteBuffer.allocate(2); + for (int i = 0; i < shortArray.length; i++) { + buffer.clear(); + byte[] shortBytes = buffer.putShort(shortArray[i]).array(); + System.arraycopy(shortBytes, 0, primitivesArray, (i * 2), shortBytes.length); + } + return primitivesArray; + } + /** * Creates a byte array from given int array. * The resulting byte array will have length intArray * 4. @@ -860,7 +887,6 @@ static double[] toDoubleArray(byte[] bytes, ByteOrder byteOrder) { return array; } - /** * Converts the byte array to a short array. This will spread 2 bytes into a single short: * diff --git a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java index 612dba3..5cf5058 100644 --- a/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java +++ b/src/test/java/at/favre/lib/bytes/BytesConstructorTests.java @@ -179,6 +179,19 @@ public void fromShort() { assertEquals(test, Bytes.from(test).toShort()); } + @Test(expected = NullPointerException.class) + public void fromShortArray_empty_shouldThrow() { + Bytes.from((short[]) null); + } + + @Test + public void fromShortArray() { + assertArrayEquals(new byte[]{0, 1, 0, 2}, Bytes.from((short) 1, (short) 2).array()); + assertArrayEquals(Bytes.from(Bytes.from((short) 32767), Bytes.from((short) 6761), Bytes.from((short) -8517)).array(), Bytes.from((short) 32767, (short) 6761, (short) -8517).array()); + assertArrayEquals(Bytes.from(Bytes.from((short) 1678), Bytes.from((short) -223), Bytes.from((short) 11114)).array(), Bytes.from((short) 1678, (short) -223, (short) 11114).array()); + assertArrayEquals(new byte[]{114, -123, 35, 53, 0, 0, 56, -70}, Bytes.from((short) 29317, (short) 9013, (short) 0, (short) 14522).array()); + } + @Test public void fromInt() { int test = 722837193; From c4b411acaebc747ed3e6ea1adc9e92404633223c Mon Sep 17 00:00:00 2001 From: Herman Lyakhovich <53296879+hlyakhovich@users.noreply.github.com> Date: Wed, 17 Mar 2021 19:42:29 +0100 Subject: [PATCH 151/181] Correct Checkstyle clause in docs --- CONTRIBUTING.md | 4 ++-- README.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4a0c2d5..7404d32 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,13 +2,13 @@ We ❤ pull requests from everyone. -If possible proof features and bug fixes with unit tests. +If possible to proof features and bug fixes with unit tests. This repo validates against checkstyle (import the xml found in the root to your IDE if possible) To run the tests (and checkstyle): ```shell -mvn test +mvn verify ``` Tests are automatically run against branches and pull requests diff --git a/README.md b/README.md index b7ac77f..96e0a0b 100644 --- a/README.md +++ b/README.md @@ -694,7 +694,7 @@ Use the Maven wrapper to create a jar including all dependencies ### Checkstyle Config File This project uses my [`common-parent`](https://github.com/patrickfav/mvn-common-parent) which centralized a lot of -the plugin versions aswell as providing the checkstyle config rules. Specifically they are maintained in [`checkstyle-config`](https://github.com/patrickfav/checkstyle-config). Locally the files will be copied after you `mvnw install` into your `target` folder and is called +the plugin versions as well as providing the checkstyle config rules. Specifically they are maintained in [`checkstyle-config`](https://github.com/patrickfav/checkstyle-config). Locally the files will be copied after you `mvnw install` into your `target` folder and is called `target/checkstyle-checker.xml`. So if you use a plugin for your IDE, use this file as your local configuration. ## Tech Stack From 8796a66e3ab1e163f7d660fddfd558f147013bc4 Mon Sep 17 00:00:00 2001 From: airsquared <36649395+airsquared@users.noreply.github.com> Date: Mon, 29 Mar 2021 22:38:40 -0700 Subject: [PATCH 152/181] Add an automatic module name to support the JPMS --- pom.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pom.xml b/pom.xml index f2de9ac..fe145e2 100644 --- a/pom.xml +++ b/pom.xml @@ -92,6 +92,16 @@ net.nicoulaj.maven.plugins checksum-maven-plugin
+ + maven-jar-plugin + + + + at.favre.lib.bytes + + + +
From 966feae09b0b5d0b02467e6824c5d037ca18ea39 Mon Sep 17 00:00:00 2001 From: Herman Lyakhovich <53296879+hlyakhovich@users.noreply.github.com> Date: Sat, 3 Sep 2022 15:21:34 +0200 Subject: [PATCH 153/181] Add toIndex versions for indexOf() --- src/main/java/at/favre/lib/bytes/Bytes.java | 33 +++++++++++++++++++ .../at/favre/lib/bytes/BytesMiscTest.java | 19 +++++++++++ 2 files changed, 52 insertions(+) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 3797292..c2b5b20 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -1277,6 +1277,20 @@ public int indexOf(byte target, int fromIndex) { return indexOf(new byte[]{target}, fromIndex); } + /** + * Returns the index of the first appearance of the value {@code target} in + * {@code array} from given start index 'fromIndex' to given end index 'toIndex'. + * + * @param target a primitive {@code byte} value + * @param fromIndex search from this index + * @param toIndex search to this index + * @return the least index {@code i} for which {@code array[i] == target}, or + * {@code -1} if no such index exists or fromIndex is gt target length. + */ + public int indexOf(byte target, int fromIndex, int toIndex) { + return indexOf(new byte[]{target}, fromIndex, toIndex); + } + /** * Returns the start position of the first occurrence of the specified {@code * target} within {@code array}, or {@code -1} if there is no such occurrence. @@ -1311,6 +1325,25 @@ public int indexOf(byte[] subArray, int fromIndex) { return Util.Byte.indexOf(internalArray(), subArray, fromIndex, length()); } + /** + * Returns the start position of the first occurrence of the specified {@code + * target} within {@code array} from given start index 'fromIndex' to given end + * index 'toIndex', or {@code -1} if there is no such occurrence. + *

+ * More formally, returns the lowest index {@code i} such that {@code + * java.util.Arrays.copyOfRange(array, i, i + target.length)} contains exactly + * the same elements as {@code target}. + * + * @param subArray the array to search for as a sub-sequence of {@code array} + * @param fromIndex search from this index + * @param toIndex search to this index + * @return the least index {@code i} for which {@code array[i] == target}, or + * {@code -1} if no such index exists. + */ + public int indexOf(byte[] subArray, int fromIndex, int toIndex) { + return Util.Byte.indexOf(internalArray(), subArray, fromIndex, toIndex); + } + /** * Checks if the given sub array is equal to the start of given array. That is, sub array must be gt or eq * to the length of the internal array and internal[i] == subArray[i] for i=0..subArray.length-1 diff --git a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java index ed832bb..a57398d 100644 --- a/src/test/java/at/favre/lib/bytes/BytesMiscTest.java +++ b/src/test/java/at/favre/lib/bytes/BytesMiscTest.java @@ -188,6 +188,15 @@ public void indexOfByteFromIndex() { assertEquals(10, Bytes.from(example_bytes_sixteen).indexOf((byte) 0xFD, 5)); } + @Test + public void indexOfByteFromIndexToIndex() { + assertEquals(4, Bytes.from(example_bytes_seven).indexOf((byte) 0x1E, 0, 7)); + assertEquals(4, Bytes.from(example_bytes_seven).indexOf((byte) 0x1E, 3, 5)); + assertEquals(-1, Bytes.from(example_bytes_seven).indexOf((byte) 0x1E, 0, 3)); + assertEquals(-1, Bytes.from(example_bytes_seven).indexOf((byte) 0x1E, 6, 7)); + assertEquals(-1, Bytes.from(example_bytes_seven).indexOf((byte) 0xCA, 0, 7)); + } + @Test public void indexOfArray() { assertEquals(-1, Bytes.allocate(0).indexOf(new byte[]{(byte) 0xFD})); @@ -204,6 +213,16 @@ public void indexOfArrayFromIndex() { assertEquals(2, Bytes.from(new byte[]{(byte) 0x8E, (byte) 0xD1, (byte) 0x8E, (byte) 0xD1, 0x12, (byte) 0xAF, (byte) 0x78, 0x09, 0x1E, (byte) 0xD1, (byte) 0xFD, (byte) 0xAA, 0x12}).indexOf(new byte[]{(byte) 0x8E, (byte) 0xD1}, 1)); } + @Test + public void indexOfArrayFromIndexToIndex() { + assertEquals(4, Bytes.from(example_bytes_seven).indexOf(new byte[] { (byte) 0x1E, (byte) 0xAF }, 0, 7)); + assertEquals(4, Bytes.from(example_bytes_seven).indexOf(new byte[] { (byte) 0x1E, (byte) 0xAF }, 3, 5)); + assertEquals(4, Bytes.from(example_bytes_seven).indexOf(new byte[] { (byte) 0x1E, (byte) 0xAF, (byte) 0xED }, 4, 5)); + assertEquals(-1, Bytes.from(example_bytes_seven).indexOf(new byte[] { (byte) 0x1E, (byte) 0xAF }, 0, 3)); + assertEquals(-1, Bytes.from(example_bytes_seven).indexOf(new byte[] { (byte) 0x1E, (byte) 0xAF }, 6, 7)); + assertEquals(-1, Bytes.from(example_bytes_seven).indexOf(new byte[] { (byte) 0xCA, (byte) 0xFE }, 0, 7)); + } + @Test public void startsWidth() { assertFalse(Bytes.allocate(0).startsWith(new byte[1])); From 0b6dd028c9fa90a0623580a2766bde0585f060a0 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Feb 2023 18:46:31 +0100 Subject: [PATCH 154/181] Migrate to Github Actions, CodeCov and Maven Central and update maven wrapper and deps --- .github/workflows/build_deploy.yml | 64 +++++++++++++ .mvn/wrapper/MavenWrapperDownloader.java | 117 ----------------------- .mvn/wrapper/maven-wrapper.jar | Bin 50710 -> 59925 bytes .mvn/wrapper/maven-wrapper.properties | 20 +++- .travis.yml | 51 ---------- README.md | 4 +- mvnw | 99 ++++++++----------- mvnw.cmd | 39 ++++---- pom.xml | 32 ++++--- secrets.tar.enc | Bin 6672 -> 0 bytes 10 files changed, 163 insertions(+), 263 deletions(-) create mode 100644 .github/workflows/build_deploy.yml delete mode 100644 .mvn/wrapper/MavenWrapperDownloader.java delete mode 100644 .travis.yml delete mode 100644 secrets.tar.enc diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml new file mode 100644 index 0000000..3fd75e4 --- /dev/null +++ b/.github/workflows/build_deploy.yml @@ -0,0 +1,64 @@ +name: Build and Deploy with Maven + +on: + push: + branches: + - main + tags: + - '*' # Trigger on all tags + pull_request: { } + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout Code + uses: actions/checkout@v3 + - name: Set up JDK 8 + uses: actions/setup-java@v3 + with: + java-version: '8' + distribution: 'adopt' + cache: 'maven' + - name: Build with Maven + run: ./mvnw -B clean package checkstyle:checkstyle jacoco:report -DcommonConfig.jarSign.skip=true + - name: Upload coverage reports to CodeCov + uses: codecov/codecov-action@v3 + + deploy: + needs: build + if: startsWith(github.ref, 'refs/tags/') + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Retrieve Keystore from secrets + env: + KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }} + run: | + echo $KEYSTORE_BASE64 | base64 --decode > keystore.jks + - name: Set up Maven Central Repository + uses: actions/setup-java@v3 + with: + java-version: '8' + distribution: 'adopt' + cache: 'maven' + server-id: ossrh + server-username: MAVEN_USERNAME + server-password: MAVEN_PASSWORD + - name: Publish package + run: mvn -B deploy -DskipTests + env: + OPENSOURCE_PROJECTS_KS_PW: ${{ secrets.KEYSTORE_PASSWORD }} + OPENSOURCE_PROJECTS_KEY_PW: ${{ secrets.KEYSTORE_KEY_PASSWORD }} + MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} + MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + - name: Create and upload Github Release + uses: xresloader/upload-to-github-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + file: "target/*.jar;target/*.sha256;target/checksum-sha256.txt" + tags: true + draft: false diff --git a/.mvn/wrapper/MavenWrapperDownloader.java b/.mvn/wrapper/MavenWrapperDownloader.java deleted file mode 100644 index b901097..0000000 --- a/.mvn/wrapper/MavenWrapperDownloader.java +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright 2007-present the original author or authors. - * - * 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. - */ -import java.net.*; -import java.io.*; -import java.nio.channels.*; -import java.util.Properties; - -public class MavenWrapperDownloader { - - private static final String WRAPPER_VERSION = "0.5.6"; - /** - * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided. - */ - private static final String DEFAULT_DOWNLOAD_URL = "https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/" - + WRAPPER_VERSION + "/maven-wrapper-" + WRAPPER_VERSION + ".jar"; - - /** - * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to - * use instead of the default one. - */ - private static final String MAVEN_WRAPPER_PROPERTIES_PATH = - ".mvn/wrapper/maven-wrapper.properties"; - - /** - * Path where the maven-wrapper.jar will be saved to. - */ - private static final String MAVEN_WRAPPER_JAR_PATH = - ".mvn/wrapper/maven-wrapper.jar"; - - /** - * Name of the property which should be used to override the default download url for the wrapper. - */ - private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl"; - - public static void main(String args[]) { - System.out.println("- Downloader started"); - File baseDirectory = new File(args[0]); - System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath()); - - // If the maven-wrapper.properties exists, read it and check if it contains a custom - // wrapperUrl parameter. - File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH); - String url = DEFAULT_DOWNLOAD_URL; - if(mavenWrapperPropertyFile.exists()) { - FileInputStream mavenWrapperPropertyFileInputStream = null; - try { - mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile); - Properties mavenWrapperProperties = new Properties(); - mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream); - url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url); - } catch (IOException e) { - System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'"); - } finally { - try { - if(mavenWrapperPropertyFileInputStream != null) { - mavenWrapperPropertyFileInputStream.close(); - } - } catch (IOException e) { - // Ignore ... - } - } - } - System.out.println("- Downloading from: " + url); - - File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH); - if(!outputFile.getParentFile().exists()) { - if(!outputFile.getParentFile().mkdirs()) { - System.out.println( - "- ERROR creating output directory '" + outputFile.getParentFile().getAbsolutePath() + "'"); - } - } - System.out.println("- Downloading to: " + outputFile.getAbsolutePath()); - try { - downloadFileFromURL(url, outputFile); - System.out.println("Done"); - System.exit(0); - } catch (Throwable e) { - System.out.println("- Error downloading"); - e.printStackTrace(); - System.exit(1); - } - } - - private static void downloadFileFromURL(String urlString, File destination) throws Exception { - if (System.getenv("MVNW_USERNAME") != null && System.getenv("MVNW_PASSWORD") != null) { - String username = System.getenv("MVNW_USERNAME"); - char[] password = System.getenv("MVNW_PASSWORD").toCharArray(); - Authenticator.setDefault(new Authenticator() { - @Override - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication(username, password); - } - }); - } - URL website = new URL(urlString); - ReadableByteChannel rbc; - rbc = Channels.newChannel(website.openStream()); - FileOutputStream fos = new FileOutputStream(destination); - fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE); - fos.close(); - rbc.close(); - } - -} diff --git a/.mvn/wrapper/maven-wrapper.jar b/.mvn/wrapper/maven-wrapper.jar index 2cc7d4a55c0cd0092912bf49ae38b3a9e3fd0054..bf82ff01c6cdae4a1bb754a6e062954d77ac5c11 100644 GIT binary patch literal 59925 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

dy!05UMhSKsK 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 VCNKd3JGtOvEm(5t0lFyE{{i--k}m)N literal 50710 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 EfAhh=DF6Tf diff --git a/.mvn/wrapper/maven-wrapper.properties b/.mvn/wrapper/maven-wrapper.properties index 642d572..ca5ab4b 100644 --- a/.mvn/wrapper/maven-wrapper.properties +++ b/.mvn/wrapper/maven-wrapper.properties @@ -1,2 +1,18 @@ -distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.6.3/apache-maven-3.6.3-bin.zip -wrapperUrl=https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar +# 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 +# +# https://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. +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.7/apache-maven-3.8.7-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index f6b9abc..0000000 --- a/.travis.yml +++ /dev/null @@ -1,51 +0,0 @@ -# To let the CI execute the maven wrapper, use this command and push the change: -# git update-index --chmod=+x mvnw - -language: java -jdk: - - openjdk8 - -env: - global: - - secure: "eV7hLuGYyG1daQIdZ4p2EtSu0vwZSC9aVpEz1/6JWypdAJKu6uLxibHtLXHqSB8PWXDJbpNIhs7gaD8NGBz506U0V+XG1eMYhJ4qonw4Xayk5HATrGW2aWxT1t8W/ZVpb+Z9r3D6N7VvxvbzzV1yUJYc0RJCHT2MklCdjv2CVdZMErDdg3tCQihP7AWm3Z7Ab4+33STcOzNkZNyiOKu9UQBSvu2EoBBrzEbjJo+tZyn4iEC4DVLxA8tLeHi7XTD6DhzgTdyUTM1YAvwNxNrkMewG4tPV8sH+sdj80Qqt4h2Wg+LfoYUwT59HFPcoMdmPauQbaSkqMMjVpwvtWXoJgWCNYRg3Us/7vtml4YTqdj2ao38QvL/QATyOXy/0kilhp32pfyY5hbknxseLr/dShhsrofbThUfxyK8As6FfeIwOywU/TNRl2D7WfQwtAL9nv5RRkNj+EVZjE7J4pl2gL4wn6O18m04stGgkoXSjKa2Zeiy4dd5Nb7FyYSL5CWhMevPVOwUNKZkz3Ys3v/DEmelerCIfFofFlULtyFc4MVWDZpHA2EJd78DC/P3MuiL8aElICRenIpvgHShxFnrGbvomWW60EKuexkM5Hrcn8oyNx7zDPwrqw0hgM8xEZCJymVu01G/JlthjynzFvR7WBxRGwAPxTxBh5adzWZdr6gw=" - - secure: "BqaCKfW/yyBh0jzrMloCxvDECKtg8qa/AxJNlw1IInQPobN7MLH/hGaGtuArG0zfY8pu0w5nGYGkmo/RgW4kgdd/YQ1UIZNS8gBoZh5S7dtSg9EXV+oXlhOfIzictJtL1sJjCGVhzlIRWj5HTysdrAY4Lg/QrjnyX7R5vSdNPnCdDyg7dIsg6r1ROSt8bjQCWxJpNLA3BrG1hvBqP2QLNmlCz7OlFmNPok9PfMumSa8VT8WpqwghrBOCEFf32wRHAkpXjQgQ5biXL2iPgTbEvfoU1ePn9N/OaUYl5mVKcDc1YnTQeMHg7tvciSZ1DZfuiCrTsnnUq8DXVghsjt3zDASlFyTvgf1PSCTjOezNEP/LZw9BXeMo5+bETZLMCcSaSZTUjnNgMRodKPXT3T8v22+5vjvC1NjZCeYdNCt0bxu+/ETdPxh4Lo7L5SNJ/rAurAKXXWt2ARmBrm5nGIiZNyOGjec59Y4ekfDqut87YNmbeqZgxxIoz40EwoRsfT0On7xss8SQi/uKhBwt9i/RW1ihyFAQLymKuSE3ChUkCVwzy/SmTduRUDhoSy982qFMnTPmjMDizfXXP2DjtPqZOExd2/AZsPmAz0N5FjCWciTHWKmhLr358SzgJIpXL+cYkJIR8pk038NKLvzlV0LQb1nrA20iiggjFzyRbwC60oE=" - -before_install: - - openssl aes-256-cbc -K $encrypted_b9f5be6a7c0d_key -iv $encrypted_b9f5be6a7c0d_iv -in secrets.tar.enc -out secrets.tar -d - - tar xvf secrets.tar - -script: - - 'if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then ./mvnw clean install -Djarsigner.skip=true; fi' - - 'if [ "$TRAVIS_PULL_REQUEST" = "false" ]; then ./mvnw clean install -Djarsigner.skip=false; fi' - -after_success: - - ./mvnw test jacoco:report coveralls:report - -deploy: - - provider: script - script: ./mvnw -s ci-settings.xml deploy -X - skip_cleanup: true - on: - branch: master - tags: true - - provider: releases - api_key: - secure: "ozRga/xe4pNZNH59tmPK1lLpCFa4WFW674JMTBWLbf+7zjPiN8K5dtAYUkhDqngw0ifasukVCRey4F9fu479KlFciGrLBd4r/hq/rh7inVHqd1qcn4AwyDX3EkbloD5qwfas7yn5zJ7cWm7KyEkfpr+fgReaQzSRvJUpjpDBrS2xNIYOhL1tInu84/RtyB6QuJjQOkH9rulP9M8gjcEH9Iu0k40jAVYLJDL9opOWrc9qpAzL0wN4xXGbnI30WrA8nmLcrHRxODOxbYEQ5EndLFJyS3nYxL9D3QJeEYkXf9uqz46V4dgfrEirWrtin3PlSUKTD9/0Mqz4uxqrGky0vrpha7m231+ilTUJzvE0a29LdS3R4A6ssDb0oFtj4pP3O6uNDqZN20r83ughGi0GrlKL/CGpQ4fS5nOpqppx0Xg+SR78/uOqQDIOn570FILBTKiaTsCn6xKqYC4QFSlsZiXojgU4FDZpKygH932qUDE0BnzsZEtzCube2oXMktZs6keSmELMyRYVs/K9yC7+8R1Pez1Xz72zxNG1ke6588sO3wxN+Q+0ZhqmQC8Y2OY8i72b06M5SyGz5TV38SrntLU88HOMWVJtfRDcMcPnJdFgaujZCoOw5SfokzXncipldfJGpKGIb3fHBMJw0MzspT7Kp6XRzSbtJI5+NVestR4=" - file_glob: true - file: - - "target/*.jar" - - "target/*.sha256" - - "target/checksum-sha256.txt" - skip_cleanup: true - on: - branch: master - tags: true - -cache: - directories: - - $HOME/.m2 - -notifications: - slack: - secure: "PiEdsZoQlBR7ce6IT9LlxWod2XqWjm8HCxs4yP8o9iI5ix7FxEV8NDGQKY1vcDG6D8bz4gcNsBxJrPKASD0G3rLaJpjA4L9MUNhyx+4VCIBBnT1fwV+as+PJmr1tZupqUnlxZJyTdiaqkV8jtjCkHUn3P6TURbNuZws74/ki2rICbi4EebD3mdeQvFtWYKTOsAgZjLecMvPU9q+b7TAwDlaZFbkG7DMFruT8i7tA/EWMOvI48kVaUEM0QPsAxNdr32YFta0s/xJyNuOp1Hp3ZZbnZgXgKc2WvGRcg+9sucnQ+eQsQKj1tbWS2YwxHcy7B3Q7YDmBL2NIJIHbuaWNlbK9fVh3gdk7Knlr8IHpLmVuHvH3HAF6JDcrARjk8ViVP2HafkkDNbQZLupz5LkJ02hj1DMGVOAyuVTt6IpOMt3WTaQ66qtyGupQXhrqvq8tDwvg6FIy1sjPZbWE/Sq1s20PYBbHkVwNvQ3bNaC44nAkcnTv+dAoazvy8G40RIPovTO1ubzriZvuY8Db4THF2ZL1mDbyHEJstA7L9qkObqZOwnFsy5pLp4NfR9C/bTAY8EUcZVGm0spIADafip2H57Hf+n3co4aqw689t+Y453AUh3W+k4ZsC/V1kzX3MVdcluRP7ET8ejtfwduMyh2/jFmUK3g246/teEssyohp6ik=" - email: false diff --git a/README.md b/README.md index 96e0a0b..c39f125 100644 --- a/README.md +++ b/README.md @@ -27,10 +27,10 @@ to blindly paste code snippets from [o](https://stackoverflow.com/a/9670279/774398) [m](https://stackoverflow.com/questions/1519736/random-shuffling-of-an-array) -[![Download](https://api.bintray.com/packages/patrickfav/maven/bytes-java/images/download.svg)](https://bintray.com/patrickfav/maven/bytes-java/_latestVersion) +[![Maven Central](https://img.shields.io/maven-central/v/at.favre.lib/bytes)](https://mvnrepository.com/artifact/at.favre.lib/bytes) [![Build Status](https://travis-ci.com/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.com/patrickfav/bytes-java) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) -[![Coverage Status](https://coveralls.io/repos/github/patrickfav/bytes-java/badge.svg?branch=master)](https://coveralls.io/github/patrickfav/bytes-java?branch=master) +[![codecov](https://codecov.io/gh/patrickfav/bytes-java/branch/master/graph/badge.svg?token=YiSRwBApvz)](https://codecov.io/gh/patrickfav/bytes-java) [![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) It's main features include: diff --git a/mvnw b/mvnw index 41c0f0c..b7f0646 100755 --- a/mvnw +++ b/mvnw @@ -19,7 +19,7 @@ # ---------------------------------------------------------------------------- # ---------------------------------------------------------------------------- -# Maven Start Up Batch script +# Apache Maven Wrapper startup batch script, version 3.1.1 # # Required ENV vars: # ------------------ @@ -27,7 +27,6 @@ # # 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 @@ -36,6 +35,10 @@ if [ -z "$MAVEN_SKIP_RC" ] ; then + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + if [ -f /etc/mavenrc ] ; then . /etc/mavenrc fi @@ -58,9 +61,9 @@ case "`uname`" in # 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`" + JAVA_HOME="`/usr/libexec/java_home`"; export JAVA_HOME else - export JAVA_HOME="/Library/Java/Home" + JAVA_HOME="/Library/Java/Home"; export JAVA_HOME fi fi ;; @@ -72,36 +75,8 @@ if [ -z "$JAVA_HOME" ] ; then 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" ] && @@ -110,8 +85,6 @@ fi # For Mingw, 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)`" fi @@ -145,7 +118,7 @@ if [ -z "$JAVACMD" ] ; then JAVACMD="$JAVA_HOME/bin/java" fi else - JAVACMD="`which java`" + JAVACMD="`\\unset -f command; \\command -v java`" fi fi @@ -159,12 +132,9 @@ 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" @@ -184,7 +154,7 @@ find_maven_basedir() { fi # end of workaround done - echo "${basedir}" + printf '%s' "$(cd "$basedir"; pwd)" } # concatenates all lines of a file @@ -194,11 +164,16 @@ concat_lines() { fi } -BASE_DIR=`find_maven_basedir "$(pwd)"` +BASE_DIR=$(find_maven_basedir "$(dirname $0)") if [ -z "$BASE_DIR" ]; then exit 1; fi +MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"}; export MAVEN_PROJECTBASEDIR +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi + ########################################################################################## # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central # This allows using the maven wrapper in projects that prohibit checking in binary data. @@ -212,16 +187,16 @@ else echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." fi if [ -n "$MVNW_REPOURL" ]; then - jarUrl="$MVNW_REPOURL/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + wrapperUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" else - jarUrl="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + wrapperUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" fi while IFS="=" read key value; do - case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + case "$key" in (wrapperUrl) wrapperUrl="$value"; break ;; esac done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" if [ "$MVNW_VERBOSE" = true ]; then - echo "Downloading from: $jarUrl" + echo "Downloading from: $wrapperUrl" fi wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" if $cygwin; then @@ -229,42 +204,49 @@ else fi if command -v wget > /dev/null; then + QUIET="--quiet" if [ "$MVNW_VERBOSE" = true ]; then echo "Found wget ... using wget" + QUIET="" fi if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - wget "$jarUrl" -O "$wrapperJarPath" + wget $QUIET "$wrapperUrl" -O "$wrapperJarPath" else - wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" + wget $QUIET --http-user="$MVNW_USERNAME" --http-password="$MVNW_PASSWORD" "$wrapperUrl" -O "$wrapperJarPath" fi + [ $? -eq 0 ] || rm -f "$wrapperJarPath" elif command -v curl > /dev/null; then + QUIET="--silent" if [ "$MVNW_VERBOSE" = true ]; then echo "Found curl ... using curl" + QUIET="" fi if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then - curl -o "$wrapperJarPath" "$jarUrl" -f + curl $QUIET -o "$wrapperJarPath" "$wrapperUrl" -f -L else - curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + curl $QUIET --user "$MVNW_USERNAME:$MVNW_PASSWORD" -o "$wrapperJarPath" "$wrapperUrl" -f -L fi - + [ $? -eq 0 ] || rm -f "$wrapperJarPath" else if [ "$MVNW_VERBOSE" = true ]; then echo "Falling back to using Java to download" fi - javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaSource="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" # For Cygwin, switch paths to Windows format before running javac if $cygwin; then + javaSource=`cygpath --path --windows "$javaSource"` javaClass=`cygpath --path --windows "$javaClass"` fi - if [ -e "$javaClass" ]; then - if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ -e "$javaSource" ]; then + if [ ! -e "$javaClass" ]; then if [ "$MVNW_VERBOSE" = true ]; then echo " - Compiling MavenWrapperDownloader.java ..." fi # Compiling the Java class - ("$JAVA_HOME/bin/javac" "$javaClass") + ("$JAVA_HOME/bin/javac" "$javaSource") fi - if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ -e "$javaClass" ]; then # Running the downloader if [ "$MVNW_VERBOSE" = true ]; then echo " - Running MavenWrapperDownloader.java ..." @@ -278,16 +260,10 @@ fi # End of extension ########################################################################################## -export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} -if [ "$MVNW_VERBOSE" = true ]; then - echo $MAVEN_PROJECTBASEDIR -fi 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" ] && @@ -305,6 +281,7 @@ WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain exec "$JAVACMD" \ $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ - "-Dmaven.home=${M2_HOME}" "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/mvnw.cmd b/mvnw.cmd index 8611571..474c9d6 100644 --- a/mvnw.cmd +++ b/mvnw.cmd @@ -18,13 +18,12 @@ @REM ---------------------------------------------------------------------------- @REM ---------------------------------------------------------------------------- -@REM Maven Start Up Batch script +@REM Apache Maven Wrapper startup batch script, version 3.1.1 @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 keystroke before ending @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven @@ -46,8 +45,8 @@ 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" +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* :skipRcPre @setlocal @@ -120,10 +119,10 @@ 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 -set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" +set WRAPPER_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" -FOR /F "tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( - IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET WRAPPER_URL=%%B ) @REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central @@ -134,11 +133,11 @@ if exist %WRAPPER_JAR% ( ) ) else ( if not "%MVNW_REPOURL%" == "" ( - SET DOWNLOAD_URL="%MVNW_REPOURL%/io/takari/maven-wrapper/0.5.6/maven-wrapper-0.5.6.jar" + SET WRAPPER_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.1/maven-wrapper-3.1.1.jar" ) if "%MVNW_VERBOSE%" == "true" ( echo Couldn't find %WRAPPER_JAR%, downloading it ... - echo Downloading from: %DOWNLOAD_URL% + echo Downloading from: %WRAPPER_URL% ) powershell -Command "&{"^ @@ -146,7 +145,7 @@ if exist %WRAPPER_JAR% ( "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ "}"^ - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%WRAPPER_URL%', '%WRAPPER_JAR%')"^ "}" if "%MVNW_VERBOSE%" == "true" ( echo Finished downloading %WRAPPER_JAR% @@ -158,7 +157,13 @@ if exist %WRAPPER_JAR% ( @REM work with both Windows and non-Windows executions. set MAVEN_CMD_LINE_ARGS=%* -%MAVEN_JAVA_EXE% %JVM_CONFIG_MAVEN_PROPS% %MAVEN_OPTS% %MAVEN_DEBUG_OPTS% -classpath %WRAPPER_JAR% "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +%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 @@ -168,15 +173,15 @@ set ERROR_CODE=1 :end @endlocal & set ERROR_CODE=%ERROR_CODE% -if not "%MAVEN_SKIP_RC%" == "" goto skipRcPost +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" +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" :skipRcPost @REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' -if "%MAVEN_BATCH_PAUSE%" == "on" pause +if "%MAVEN_BATCH_PAUSE%"=="on" pause -if "%MAVEN_TERMINATE_CMD%" == "on" exit %ERROR_CODE% +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% -exit /B %ERROR_CODE% +cmd /C exit /B %ERROR_CODE% diff --git a/pom.xml b/pom.xml index fe145e2..16b6654 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 12 + 15 bytes @@ -28,15 +28,25 @@ - jcenter - jcenter - https://jcenter.bintray.com + central + Maven Central + https://repo1.maven.org/maven2 false + + + central + Maven Central + https://repo1.maven.org/maven2 + + false + + + @@ -76,10 +86,6 @@ org.jacoco jacoco-maven-plugin - - org.eluder.coveralls - coveralls-maven-plugin - com.github.wvengen proguard-maven-plugin @@ -115,22 +121,22 @@ org.openjdk.jmh jmh-core - 1.21 + 1.35 test org.openjdk.jmh jmh-generator-annprocess - 1.21 + 1.35 test - bintray-patrickfav - patrickfav-bytes-java - https://api.bintray.com/maven/patrickfav/maven/bytes-java/;publish=1 + ossrh + Central Repository OSSRH + https://oss.sonatype.org/service/local/staging/deploy/maven2/ diff --git a/secrets.tar.enc b/secrets.tar.enc deleted file mode 100644 index 880e62b06a43123ed16df02f22a8cba201a283e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6672 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 Date: Sat, 11 Feb 2023 18:56:52 +0100 Subject: [PATCH 155/181] Bump to version 1.6.0 and update changelog --- CHANGELOG | 9 +++++++++ pom.xml | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index d211c99..7cdb7ad 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,14 @@ # Releases +## v1.6.0 + +* migrate to github actions, codecov and maven central #49 +* add `indexOf` (thx @hlyakhovich) #48 +* add `toShortArray` (thx @hlyakhovich) #44 +* add `from()` constructor from `short` vararg or array (thx @hlyakhovich) #45 +* add an automatic module name to support the JPMS (thx @airsquared) #47 +* fix warning of junit 4.13 CVE-2020-15250 + ## v1.5.0 * fix `leftShift()` and `rightShift()` to respect byte order (thx @gfpeltier) diff --git a/pom.xml b/pom.xml index 16b6654..f0c3ca8 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ bytes - 1.5.0 + 1.6.0 bundle Bytes Utility Library From e07967f46ee9351d77514020d326487720e326d3 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Feb 2023 18:57:38 +0100 Subject: [PATCH 156/181] Update junit to fix warning of CVE-2020-15250 --- pom.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/pom.xml b/pom.xml index f0c3ca8..d553e4f 100644 --- a/pom.xml +++ b/pom.xml @@ -116,6 +116,7 @@ junit junit + 4.13.2 test From 35a7b7abcadf207310e02b34103a30587f46af22 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Feb 2023 19:40:59 +0100 Subject: [PATCH 157/181] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c39f125..8171298 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ to blindly paste code snippets from [m](https://stackoverflow.com/questions/1519736/random-shuffling-of-an-array) [![Maven Central](https://img.shields.io/maven-central/v/at.favre.lib/bytes)](https://mvnrepository.com/artifact/at.favre.lib/bytes) -[![Build Status](https://travis-ci.com/patrickfav/bytes-java.svg?branch=master)](https://travis-ci.com/patrickfav/bytes-java) +[![Github Actions](https://github.com/patrickfav/bytes-java/actions/workflows/build_deploy.yml/badge.svg)](https://github.com/patrickfav/bytes-java/actions) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) [![codecov](https://codecov.io/gh/patrickfav/bytes-java/branch/master/graph/badge.svg?token=YiSRwBApvz)](https://codecov.io/gh/patrickfav/bytes-java) [![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) From 8b9eae464c3846445ef8e6b1d619fac1bb21a1de Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Feb 2023 22:57:44 +0100 Subject: [PATCH 158/181] Fix missing gpg sign and add correct maven deploy flow --- .github/workflows/build_deploy.yml | 12 ++++++--- pom.xml | 41 ++++-------------------------- 2 files changed, 13 insertions(+), 40 deletions(-) diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index 3fd75e4..5794ee6 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -44,16 +44,20 @@ jobs: java-version: '8' distribution: 'adopt' cache: 'maven' - server-id: ossrh - server-username: MAVEN_USERNAME - server-password: MAVEN_PASSWORD + server-username: MAVEN_USERNAME # env variable for username in deploy + server-password: MAVEN_PASSWORD # env variable for token in deploy + gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import + gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Publish package - run: mvn -B deploy -DskipTests + run: | + ./mvnw -B verify nexus-staging:deploy -P deploy && \ + ./mvnw -B nexus-staging:release -P deploy env: OPENSOURCE_PROJECTS_KS_PW: ${{ secrets.KEYSTORE_PASSWORD }} OPENSOURCE_PROJECTS_KEY_PW: ${{ secrets.KEYSTORE_KEY_PASSWORD }} MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }} MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }} + MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - name: Create and upload Github Release uses: xresloader/upload-to-github-release@v1 env: diff --git a/pom.xml b/pom.xml index d553e4f..1c665e9 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 15 + 18 bytes @@ -26,27 +26,6 @@ false - - - central - Maven Central - https://repo1.maven.org/maven2 - - false - - - - - - - central - Maven Central - https://repo1.maven.org/maven2 - - false - - - @@ -116,7 +95,6 @@ junit junit - 4.13.2 test @@ -133,18 +111,9 @@ - - - ossrh - Central Repository OSSRH - https://oss.sonatype.org/service/local/staging/deploy/maven2/ - - - - https://github.com/patrickfav/bytes-java.git - https://github.com/patrickfav/bytes-java.git - HEAD + scm:git:https://github.com/patrickfav/bytes-java.git + scm:git:https://github.com/patrickfav/bytes-java.git https://github.com/patrickfav/bytes-java @@ -154,7 +123,7 @@ - Travis - https://travis-ci.com/patrickfav/bytes-java + Github Actions + https://github.com/patrickfav/bytes-java/actions From 63eecac24ded096b4a5cf7855aae2757f7132b45 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 11 Feb 2023 23:08:50 +0100 Subject: [PATCH 159/181] Fix deployment config --- .github/workflows/build_deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index 5794ee6..efbcc8a 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -44,6 +44,7 @@ jobs: java-version: '8' distribution: 'adopt' cache: 'maven' + server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml server-username: MAVEN_USERNAME # env variable for username in deploy server-password: MAVEN_PASSWORD # env variable for token in deploy gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }} # Value of the GPG private key to import From ff440e68c941b039d809d3169dac7ae73f637abc Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 15 Feb 2023 19:03:28 +0100 Subject: [PATCH 160/181] Add sonar analyzing and remove codecov --- .github/workflows/build_deploy.yml | 36 +++++++++++++++++++++++++----- README.md | 7 +++--- pom.xml | 6 +++++ 3 files changed, 41 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index efbcc8a..3f7e9d2 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -8,6 +8,9 @@ on: - '*' # Trigger on all tags pull_request: { } +env: + SONARQUBE_PROJECT: patrickfav_bytes-java + jobs: build: runs-on: ubuntu-latest @@ -15,16 +18,33 @@ jobs: steps: - name: Checkout Code uses: actions/checkout@v3 + with: + fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis + - name: Cache SonarCloud packages + uses: actions/cache@v3 + with: + path: ~/.sonar/cache + key: ${{ runner.os }}-sonar + restore-keys: ${{ runner.os }}-sonar + - name: Cache Maven + id: cache-primes + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 - name: Set up JDK 8 uses: actions/setup-java@v3 with: java-version: '8' distribution: 'adopt' - cache: 'maven' - name: Build with Maven - run: ./mvnw -B clean package checkstyle:checkstyle jacoco:report -DcommonConfig.jarSign.skip=true - - name: Upload coverage reports to CodeCov - uses: codecov/codecov-action@v3 + run: ./mvnw -B clean verify checkstyle:checkstyle jacoco:report -DcommonConfig.jarSign.skip=true + - name: Analyze with SonaQube + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any + SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} + run: mvn -B org.sonarsource.scanner.maven:sonar-maven-plugin:sonar -Dsonar.projectKey=$SONARQUBE_PROJECT deploy: needs: build @@ -38,12 +58,18 @@ jobs: KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }} run: | echo $KEYSTORE_BASE64 | base64 --decode > keystore.jks + - name: Cache Maven + id: cache-primes + uses: actions/cache@v3 + with: + path: ~/.m2 + key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} + restore-keys: ${{ runner.os }}-m2 - name: Set up Maven Central Repository uses: actions/setup-java@v3 with: java-version: '8' distribution: 'adopt' - cache: 'maven' server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml server-username: MAVEN_USERNAME # env variable for username in deploy server-password: MAVEN_PASSWORD # env variable for token in deploy diff --git a/README.md b/README.md index 8171298..c9096b4 100644 --- a/README.md +++ b/README.md @@ -30,10 +30,11 @@ to blindly paste code snippets from [![Maven Central](https://img.shields.io/maven-central/v/at.favre.lib/bytes)](https://mvnrepository.com/artifact/at.favre.lib/bytes) [![Github Actions](https://github.com/patrickfav/bytes-java/actions/workflows/build_deploy.yml/badge.svg)](https://github.com/patrickfav/bytes-java/actions) [![Javadocs](https://www.javadoc.io/badge/at.favre.lib/bytes.svg)](https://www.javadoc.io/doc/at.favre.lib/bytes) -[![codecov](https://codecov.io/gh/patrickfav/bytes-java/branch/master/graph/badge.svg?token=YiSRwBApvz)](https://codecov.io/gh/patrickfav/bytes-java) -[![Maintainability](https://api.codeclimate.com/v1/badges/43b7770f0ee00b85f92a/maintainability)](https://codeclimate.com/github/patrickfav/bytes-java/maintainability) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=patrickfav_bytes-java&metric=coverage)](https://sonarcloud.io/summary/new_code?id=patrickfav_bytes-java) +[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=patrickfav_bytes-java&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=patrickfav_bytes-java) +[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=patrickfav_bytes-java&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=patrickfav_bytes-java) -It's main features include: +Its main features include: * **Creation** from a wide variety of sources: multiple arrays, integers, [streams](https://docs.oracle.com/javase/7/docs/api/java/io/InputStream.html), random, strings, files, uuid, ... * **Transformation** with many built-in: append, [xor](https://en.wikipedia.org/wiki/Exclusive_or), [and](https://en.wikipedia.org/wiki/Logical_conjunction), [hash](https://en.wikipedia.org/wiki/Cryptographic_hash_function), [shifts](https://en.wikipedia.org/wiki/Bitwise_operation#Bit_shifts), shuffle, reverse, [checksum](https://en.wikipedia.org/wiki/Checksum), ... diff --git a/pom.xml b/pom.xml index 1c665e9..045e102 100644 --- a/pom.xml +++ b/pom.xml @@ -24,6 +24,12 @@ false + + patrickfav + https://sonarcloud.io + jacoco + reuseReports + java From 528413b2575d06364fb7cae01bfd81c6ca875a87 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 15 Feb 2023 19:14:28 +0100 Subject: [PATCH 161/181] Remove errorprone and proguard optimized version to be able to build with JDK11 Not yet JDK17 compatible --- .github/workflows/build_deploy.yml | 10 +++++----- .mvn/maven.config | 2 +- README.md | 4 ++-- pom.xml | 8 ++------ 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index 3f7e9d2..607a0ca 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -33,11 +33,11 @@ jobs: path: ~/.m2 key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }} restore-keys: ${{ runner.os }}-m2 - - name: Set up JDK 8 + - name: Set up JDK 11 uses: actions/setup-java@v3 with: - java-version: '8' - distribution: 'adopt' + java-version: '11' + distribution: 'temurin' - name: Build with Maven run: ./mvnw -B clean verify checkstyle:checkstyle jacoco:report -DcommonConfig.jarSign.skip=true - name: Analyze with SonaQube @@ -68,8 +68,8 @@ jobs: - name: Set up Maven Central Repository uses: actions/setup-java@v3 with: - java-version: '8' - distribution: 'adopt' + java-version: '11' + distribution: 'temurin' server-id: ossrh # Value of the distributionManagement/repository/id field of the pom.xml server-username: MAVEN_USERNAME # env variable for username in deploy server-password: MAVEN_PASSWORD # env variable for token in deploy diff --git a/.mvn/maven.config b/.mvn/maven.config index b9d8785..f1099e4 100644 --- a/.mvn/maven.config +++ b/.mvn/maven.config @@ -1 +1 @@ --DcommonConfig.compiler.profile=jdk7_w_errorprone +-DcommonConfig.compiler.profile=jdk7 diff --git a/README.md b/README.md index c9096b4..03720ad 100644 --- a/README.md +++ b/README.md @@ -700,8 +700,8 @@ the plugin versions as well as providing the checkstyle config rules. Specifical ## Tech Stack -* Java 7 (+ [errorprone](https://github.com/google/error-prone) static analyzer) -* Maven +* Java 7 Source, JDK 11 required to build (not yet JDK17 compatible) +* Maven 3 # Credits diff --git a/pom.xml b/pom.xml index 045e102..5803bb5 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 18 + 18.1 bytes @@ -41,7 +41,7 @@ org.apache.felix maven-bundle-plugin - 4.2.0 + 5.1.8 true @@ -71,10 +71,6 @@ org.jacoco jacoco-maven-plugin - - com.github.wvengen - proguard-maven-plugin - org.apache.maven.plugins maven-jarsigner-plugin From b1df8caa0e464382281a450cc66734362556a975 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 15 Feb 2023 19:25:47 +0100 Subject: [PATCH 162/181] Fix bugs found by sonar, mainly adding "& 0xff" to not promote int --- src/main/java/at/favre/lib/bytes/Base64.java | 2 +- src/main/java/at/favre/lib/bytes/Util.java | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Base64.java b/src/main/java/at/favre/lib/bytes/Base64.java index 730c554..dd31fbf 100644 --- a/src/main/java/at/favre/lib/bytes/Base64.java +++ b/src/main/java/at/favre/lib/bytes/Base64.java @@ -93,7 +93,7 @@ static byte[] decode(CharSequence in) { } // Append this char's 6 bits to the word. - word = (word << 6) | (byte) bits; + word = (word << 6) | (byte) bits & 0xff; // For every 4 chars of input, we accumulate 24 bits of output. Emit 3 bytes. inCount++; diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 710c4d3..4efb673 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -309,7 +309,7 @@ static byte[] shiftLeft(byte[] byteArray, int shiftBitCount, ByteOrder byteOrder byte src = byteArray[sourceIndex]; byte dst = (byte) (src << shiftMod); if (sourceIndex + 1 < byteArray.length) { - dst |= byteArray[sourceIndex + 1] >>> (8 - shiftMod) & carryMask; + dst |= byteArray[sourceIndex + 1] >>> (8 - shiftMod) & carryMask & 0xff; } byteArray[i] = dst; } @@ -323,7 +323,7 @@ static byte[] shiftLeft(byte[] byteArray, int shiftBitCount, ByteOrder byteOrder byte src = byteArray[sourceIndex]; byte dst = (byte) (src << shiftMod); if (sourceIndex - 1 >= 0) { - dst |= byteArray[sourceIndex - 1] >>> (8 - shiftMod) & carryMask; + dst |= byteArray[sourceIndex - 1] >>> (8 - shiftMod) & carryMask & 0xff; } byteArray[i] = dst; } @@ -365,7 +365,7 @@ static byte[] shiftRight(byte[] byteArray, int shiftBitCount, ByteOrder byteOrde byte src = byteArray[sourceIndex]; byte dst = (byte) ((0xff & src) >>> shiftMod); if (sourceIndex - 1 >= 0) { - dst |= byteArray[sourceIndex - 1] << (8 - shiftMod) & carryMask; + dst |= byteArray[sourceIndex - 1] << (8 - shiftMod) & carryMask & 0xff; } byteArray[i] = dst; } @@ -379,7 +379,7 @@ static byte[] shiftRight(byte[] byteArray, int shiftBitCount, ByteOrder byteOrde byte src = byteArray[sourceIndex]; byte dst = (byte) ((0xff & src) >>> shiftMod); if (sourceIndex + 1 < byteArray.length) { - dst |= byteArray[sourceIndex + 1] << (8 - shiftMod) & carryMask; + dst |= byteArray[sourceIndex + 1] << (8 - shiftMod) & carryMask & 0xff; } byteArray[i] = dst; } From cb0efd0233bcc8fa180704ee18c3f492b6099a59 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 15 Feb 2023 19:41:29 +0100 Subject: [PATCH 163/181] Fix various issues mostly javadoc and typos and some simple code fixes --- .../java/at/favre/lib/bytes/BaseEncoding.java | 6 +- src/main/java/at/favre/lib/bytes/Bytes.java | 76 +++++++++---------- .../at/favre/lib/bytes/BytesTransformer.java | 8 +- .../at/favre/lib/bytes/BytesTransformers.java | 10 +-- .../at/favre/lib/bytes/BytesValidators.java | 20 ++--- .../java/at/favre/lib/bytes/MutableBytes.java | 8 +- src/main/java/at/favre/lib/bytes/Util.java | 34 ++++----- 7 files changed, 82 insertions(+), 80 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/BaseEncoding.java b/src/main/java/at/favre/lib/bytes/BaseEncoding.java index 8fe8d3e..8e23588 100644 --- a/src/main/java/at/favre/lib/bytes/BaseEncoding.java +++ b/src/main/java/at/favre/lib/bytes/BaseEncoding.java @@ -28,10 +28,10 @@ /** * Encoder which supports arbitrary alphabet and padding. - * + *

* Derived from Google Guava's common/io/ BaseEncoding *

- * See: https://github.com/google/guava/blob/v26.0/guava/src/com/google/common/io/BaseEncoding.java + * See: BaseEncoding */ final class BaseEncoding implements BinaryToTextEncoding.EncoderDecoder { private static final char ASCII_MAX = 127; @@ -190,7 +190,7 @@ char encode(int bits) { } int decode(char ch) { - return (int) decodabet[ch]; + return decodabet[ch]; } } diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index c2b5b20..33fb08d 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -31,7 +31,7 @@ import java.util.*; /** - * Bytes is wrapper class for an byte-array that allows a lot of convenience operations on it: + * "Bytes" is wrapper class for a byte-array that allows a lot of convenience operations on it: *

    *
  • Creation from various source: arrays, primitives, parsed or random
  • *
  • Encoding in many formats: hex, base64, etc.
  • @@ -45,7 +45,7 @@ * It supports byte ordering (little/big endianness). *

    * This class is immutable as long as the internal array is not changed from outside (which can't be assured, when - * using using wrap()). It is possible to create a mutable version (see {@link MutableBytes}). + * using wrap()). It is possible to create a mutable version (see {@link MutableBytes}). *

    * Example: *

    @@ -92,7 +92,7 @@ public static Bytes allocate(int length, byte defaultValue) {
         }
     
         /**
    -     * Creates an Byte instance with an internal empty byte array. Same as calling {@link #allocate(int)} with 0.
    +     * Creates a Byte instance with an internal empty byte array. Same as calling {@link #allocate(int)} with 0.
          *
          * @return the empty instance (always the same reference
          */
    @@ -451,7 +451,7 @@ public static Bytes from(InputStream stream) {
     
         /**
          * Reads given input stream up to maxLength and creates a new instance from read data.
    -     * Read maxLength is never longer than stream size (ie. maxLength is only limiting, not assuring maxLength)
    +     * Read maxLength is never longer than stream size (i.e. maxLength is only limiting, not assuring maxLength)
          *
          * @param stream    to read from
          * @param maxLength read to this maxLength or end of stream
    @@ -568,7 +568,7 @@ public static Bytes from(char[] charArray, Charset charset, int offset, int leng
     
         /**
          * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and
    -     * 8 byte least significant bits into an byte array.
    +     * 8 byte the least significant bits into a byte array.
          *
          * @param uuid to convert to array
          * @return new instance
    @@ -611,7 +611,7 @@ public static Bytes parseDec(CharSequence decString) {
          * Encodes with given radix string representation (e.g. radix 16 would be hex).
          * See also {@link BigInteger#toString(int)}.
          * 

    - * This is usually a number encoding, not a data encoding (ie. leading zeros are not preserved), but this implementation + * This is usually a number encoding, not a data encoding (i.e. leading zeros are not preserved), but this implementation * tries to preserve the leading zeros, to keep the in/output byte length size the same, but use at your own risk! * * @param radixNumberString the encoded string @@ -628,7 +628,7 @@ public static Bytes parseRadix(CharSequence radixNumberString, int radix) { *

      *
    • Upper- and lowercase a-f (also mixed case)
    • *
    • Prefix with 0x which will be ignored
    • - *
    • Even and odd number of string length with auto zero padding (ie. 'E3F' is same as '0E3F')
    • + *
    • Even and odd number of string length with auto zero padding (i.e. 'E3F' is same as '0E3F')
    • *
    * * @param hexString the encoded string @@ -654,7 +654,7 @@ public static Bytes parseBase32(CharSequence base32Rfc4648String) { /** * Parsing of base36 encoded byte arrays. *

    - * This is usually a number encoding, not a data encoding (ie. leading zeros are not preserved), but this implementation + * This is usually a number encoding, not a data encoding (i.e. leading zeros are not preserved), but this implementation * tries to preserve the leading zeros, to keep the in/output byte length size the same. * * @param base36String the encoded string @@ -766,7 +766,7 @@ public static Bytes random(int length, Random random) { /* TRANSFORMER **********************************************************************************************/ /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end). + * Creates a new instance with the current array appended to the provided data (i.e. append at the end). *

    * This will create a new byte array internally, so it is not suitable to use as extensive builder pattern - * use {@link ByteBuffer} or {@link java.io.ByteArrayOutputStream} for that. @@ -779,7 +779,7 @@ public Bytes append(Bytes bytes) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end) + * Creates a new instance with the current array appended to the provided data (i.e. append at the end) * * @param singleByte to append * @return appended instance @@ -789,7 +789,7 @@ public Bytes append(byte singleByte) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end) + * Creates a new instance with the current array appended to the provided data (i.e. append at the end) * * @param char2Bytes to append * @return appended instance @@ -799,7 +799,7 @@ public Bytes append(char char2Bytes) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end) + * Creates a new instance with the current array appended to the provided data (i.e. append at the end) * * @param short2Bytes to append * @return appended instance @@ -809,7 +809,7 @@ public Bytes append(short short2Bytes) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end) + * Creates a new instance with the current array appended to the provided data (i.e. append at the end) * * @param integer4Bytes to append * @return appended instance @@ -819,7 +819,7 @@ public Bytes append(int integer4Bytes) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end) + * Creates a new instance with the current array appended to the provided data (i.e. append at the end) * * @param long8Bytes to append * @return appended instance @@ -829,7 +829,7 @@ public Bytes append(long long8Bytes) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end). + * Creates a new instance with the current array appended to the provided data (i.e. append at the end). * You may use this to append multiple byte arrays without the need for chaining the {@link #append(byte[])} call * and therefore generating intermediate copies of the byte array, making this approach use less memory. * @@ -841,7 +841,7 @@ public Bytes append(byte[]... arrays) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end) + * Creates a new instance with the current array appended to the provided data (i.e. append at the end) * * @param secondArray to append * @return appended instance @@ -851,7 +851,7 @@ public Bytes append(byte[] secondArray) { } /** - * Creates a new instance with the current array appended to the provided data (ie. append at the end) + * Creates a new instance with the current array appended to the provided data (i.e. append at the end) *

    * If given array is null, the nothing will be appended. * @@ -1004,7 +1004,7 @@ public Bytes rightShift(int shiftCount) { } /** - * Returns a Byte whose value is equivalent to this Byte with the designated bit set to newBitValue. Bits start to count from the LSB (ie. Bytes.from(0).switchBit(0,true) == 1) + * Returns a Byte whose value is equivalent to this Byte with the designated bit set to newBitValue. Bits start to count from the LSB (i.e. Bytes.from(0).switchBit(0,true) == 1) * * @param bitPosition not to confuse with byte position * @param newBitValue if true set to 1, 0 otherwise @@ -1063,7 +1063,7 @@ public Bytes reverse() { * copy but not the original, the copy will contain {@code (byte)0}. *

    * Resize from LSB or length, so an array [0,1,2,3] resized to 3 will result in [1,2,3] or resized to 5 [0,0,1,2,3]. - * So when a 8 byte value resized to 4 byte will result in the same 32 bit integer value + * So when an 8 byte value resized to 4 byte will result in the same 32-bit integer value * * @param newByteLength the length of the copy to be returned * @return a copy with the desired size or "this" instance if newByteLength == current length @@ -1099,7 +1099,7 @@ public Bytes resize(int newByteLength, BytesTransformer.ResizeTransformer.Mode m * Calculates md5 on the underlying byte array and returns a byte instance containing the hash. * This hash algorithm SHOULD be supported by every JVM implementation (see * Javadoc for MessageDigest) - * + *

    * Do not use this algorithm in security relevant applications. * * @return md5 (16 bytes) hash of internal byte array @@ -1114,7 +1114,7 @@ public Bytes hashMd5() { * Calculates sha1 on the underlying byte array and returns a byte instance containing the hash. * This hash algorithm SHOULD be supported by every JVM implementation (see * Javadoc for MessageDigest) - * + *

    * Do not use this algorithm in security relevant applications. * * @return sha1 (20 bytes) hash of internal byte array @@ -1151,9 +1151,9 @@ public Bytes hash(String algorithm) { /** * Generic transformation of this instance. *

    - * This transformation might be done in-place (ie. without copying the internal array and overwriting its old state), + * This transformation might be done in-place (i.e. without copying the internal array and overwriting its old state), * or on a copy of the internal data, depending on the type (e.g. {@link MutableBytes}) and if the operation can be done - * in-place. Therefore the caller has to ensure that certain side-effects, which occur due to the changing of the internal + * in-place. Therefore, the caller has to ensure that certain side effects, which occur due to the changing of the internal * data, do not create bugs in his/her code. Usually immutability is preferred, but when handling many or big byte arrays, * mutability enables drastically better performance. * @@ -1199,7 +1199,7 @@ public int length() { /** * The bit length of the underlying byte array. * - * @return bit length + * @return the bit length */ public int lengthBit() { return length() * 8; @@ -1227,7 +1227,7 @@ public ByteOrder byteOrder() { /** * Checks if instance is mutable * - * @return true if mutable, ie. transformers will change internal array + * @return true if mutable, i.e. transformers will change internal array */ public boolean isMutable() { return false; @@ -1384,7 +1384,7 @@ public boolean endsWith(byte[] subArray) { * 1000 0000 has bitAt(0) == false and bitAt(7) == true. * * @param bitIndex the index of the {@code bit} value. - * @return true if bit at given index is set, false otherwise + * @return true if the bit at given index is set, false otherwise * @throws IndexOutOfBoundsException if the {@code bitIndex} argument is negative or not less than the length of this array in bits. */ public boolean bitAt(int bitIndex) { @@ -1434,7 +1434,7 @@ public int unsignedByteAt(int index) { */ public char charAt(int index) { Util.Validation.checkIndexBounds(length(), index, 2, "char"); - return ((ByteBuffer) internalBuffer().position(index)).getChar(); + return internalBuffer().position(index).getChar(); } /** @@ -1447,7 +1447,7 @@ public char charAt(int index) { */ public short shortAt(int index) { Util.Validation.checkIndexBounds(length(), index, 2, "short"); - return ((ByteBuffer) internalBuffer().position(index)).getShort(); + return internalBuffer().position(index).getShort(); } /** @@ -1460,7 +1460,7 @@ public short shortAt(int index) { */ public int intAt(int index) { Util.Validation.checkIndexBounds(length(), index, 4, "int"); - return ((ByteBuffer) internalBuffer().position(index)).getInt(); + return internalBuffer().position(index).getInt(); } /** @@ -1473,7 +1473,7 @@ public int intAt(int index) { */ public long longAt(int index) { Util.Validation.checkIndexBounds(length(), index, 8, "long"); - return ((ByteBuffer) internalBuffer().position(index)).getLong(); + return internalBuffer().position(index).getLong(); } /** @@ -1606,7 +1606,7 @@ public InputStream inputStream() { /** * The reference of te internal byte-array. This call requires no conversation or additional memory allocation. *

    - * Modifications to this bytes's content will cause the returned + * Modifications to these byte's content will cause the returned * array's content to be modified, and vice versa. * * @return the direct reference of the internal byte array @@ -1662,12 +1662,12 @@ public String encodeDec() { /** * Encodes the internal array in given radix representation (e.g. 2 = binary, 10 = decimal, 16 = hex). *

    - * This is usually a number encoding, not a data encoding (ie. leading zeros are not preserved), but this implementation + * This is usually a number encoding, not a data encoding (i.e. leading zeros are not preserved), but this implementation * tries to preserve the leading zeros, to keep the in/output byte length size the same. To preserve the length padding * would be required, but is not supported in this implementation. *

    * But still full disclaimer: - * + *

    * This is NOT recommended for data encoding, only for number encoding *

    * See Radix Economy and {@link BigInteger#toString(int)}. @@ -1868,7 +1868,7 @@ public BitSet toBitSet() { * The internal byte array wrapped in a {@link BigInteger} instance. *

    * If the internal byte order is {@link ByteOrder#LITTLE_ENDIAN}, a copy of the internal - * array will be reversed and used as backing array with the big integer. Otherwise the internal + * array will be reversed and used as backing array with the big integer. Otherwise, the internal * array will be used directly. * * @return big integer @@ -2005,7 +2005,7 @@ public long toLong() { } /** - * Converts the internal byte array to an long array, that is, every 8 bytes will be packed into a single long. + * Converts the internal byte array to a long array, that is, every 8 bytes will be packed into a single long. *

    * E.g. 8 bytes will be packed to a length 1 long array: *

    @@ -2037,7 +2037,7 @@ public float toFloat() {
         }
     
         /**
    -     * Converts the internal byte array to an float array, that is, every 4 bytes will be packed into a single float.
    +     * Converts the internal byte array to a float array, that is, every 4 bytes will be packed into a single float.
          * 

    * E.g. 4 bytes will be packed to a length 1 float array: *

    @@ -2069,7 +2069,7 @@ public double toDouble() {
         }
     
         /**
    -     * Converts the internal byte array to an double array, that is, every 8 bytes will be packed into a single double.
    +     * Converts the internal byte array to a double array, that is, every 8 bytes will be packed into a single double.
          * 

    * E.g. 8 bytes will be packed to a length 1 double array: *

    @@ -2178,7 +2178,7 @@ public boolean equals(byte[] anotherArray) {
          * will not break on the first mismatch. This method is useful to prevent some side-channel attacks,
          * but is slower on average.
          * 

    - * This implementation uses the algorithm suggested in https://codahale.com/a-lesson-in-timing-attacks/ + * This implementation uses the algorithm suggested in a-lesson-in-timing-attacks * * @param anotherArray to compare with * @return true if {@link Arrays#equals(byte[], byte[])} returns true on given and internal array diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformer.java b/src/main/java/at/favre/lib/bytes/BytesTransformer.java index 22367d8..efdd12c 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformer.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformer.java @@ -231,7 +231,7 @@ public boolean supportInPlaceTransformation() { * contain identical values. For any indices that are valid in the * copy but not the original, the copy will contain {@code (byte)0}. *

    - * If if the internal array will be grown, zero bytes will be added on the left, + * If the internal array will be increased, zero bytes will be added on the left, * keeping the value the same. */ final class ResizeTransformer implements BytesTransformer { @@ -265,10 +265,12 @@ public byte[] transform(byte[] currentArray, boolean inPlace) { byte[] resizedArray = new byte[newSize]; if (mode == Mode.RESIZE_KEEP_FROM_MAX_LENGTH) { + int max = Math.max(0, Math.abs(newSize - currentArray.length)); + if (newSize > currentArray.length) { - System.arraycopy(currentArray, 0, resizedArray, Math.max(0, Math.abs(newSize - currentArray.length)), Math.min(newSize, currentArray.length)); + System.arraycopy(currentArray, 0, resizedArray, max, currentArray.length); } else { - System.arraycopy(currentArray, Math.max(0, Math.abs(newSize - currentArray.length)), resizedArray, Math.min(0, Math.abs(newSize - currentArray.length)), Math.min(newSize, currentArray.length)); + System.arraycopy(currentArray, max, resizedArray, 0, newSize); } } else { System.arraycopy(currentArray, 0, resizedArray, 0, Math.min(currentArray.length, resizedArray.length)); diff --git a/src/main/java/at/favre/lib/bytes/BytesTransformers.java b/src/main/java/at/favre/lib/bytes/BytesTransformers.java index fc448c9..c1914c0 100644 --- a/src/main/java/at/favre/lib/bytes/BytesTransformers.java +++ b/src/main/java/at/favre/lib/bytes/BytesTransformers.java @@ -44,7 +44,7 @@ public static BytesTransformer shuffle(Random random) { } /** - * Create a {@link BytesTransformer} which sorts the internal byte array with it's natural ordering treating + * Create a {@link BytesTransformer} which sorts the internal byte array with its natural ordering treating * each byte as signed byte (-128...127). Using inplace sorting, this can be reasonable fast. * * @return transformer @@ -54,9 +54,9 @@ public static BytesTransformer sort() { } /** - * Create a {@link BytesTransformer} which sorts the internal byte array with it's natural ordering treating + * Create a {@link BytesTransformer} which sorts the internal byte array with its natural ordering treating * each byte as unsigned byte (0...255). That is, the byte string {@code ff} sorts after {@code 00}. - * + *

    * Note: this requires 2 copies of the internal array and a lot of unboxing due to * the fact that no primitives are not allowed as generic type arguments - so only use on small arrays. * @@ -68,7 +68,7 @@ public static BytesTransformer sortUnsigned() { /** * Create a {@link BytesTransformer} which sorts the internal byte array according to given comparator. - * + *

    * Note: this requires 2 copies of the internal array and a lot of unboxing due to * the fact that no primitives are not allowed as generic type arguments - so only use on small arrays. * @@ -192,7 +192,7 @@ public boolean supportInPlaceTransformation() { * Sorts the internal byte array with given {@link java.util.Comparator} */ public static final class SortTransformer implements BytesTransformer { - private final Comparator comparator; + private final Comparator comparator; SortTransformer() { this(null); diff --git a/src/main/java/at/favre/lib/bytes/BytesValidators.java b/src/main/java/at/favre/lib/bytes/BytesValidators.java index acc2104..0d0f30f 100644 --- a/src/main/java/at/favre/lib/bytes/BytesValidators.java +++ b/src/main/java/at/favre/lib/bytes/BytesValidators.java @@ -37,7 +37,7 @@ private BytesValidators() { * Checks the length of a byte array * * @param byteLength to check against - * @return true if longer or equal to given value + * @return validator that returns true if longer or equal to given value */ public static BytesValidator atLeast(int byteLength) { return new BytesValidator.Length(byteLength, BytesValidator.Length.Mode.GREATER_OR_EQ_THAN); @@ -47,7 +47,7 @@ public static BytesValidator atLeast(int byteLength) { * Checks the length of a byte array * * @param byteLength to check against - * @return true if smaller or equal to given value + * @return validator that returns true if smaller or equal to given value */ public static BytesValidator atMost(int byteLength) { return new BytesValidator.Length(byteLength, BytesValidator.Length.Mode.SMALLER_OR_EQ_THAN); @@ -57,7 +57,7 @@ public static BytesValidator atMost(int byteLength) { * Checks the length of a byte array * * @param byteLength to check against - * @return true if equal to given value + * @return validator that returns true if equal to given value */ public static BytesValidator exactLength(int byteLength) { return new BytesValidator.Length(byteLength, BytesValidator.Length.Mode.EXACT); @@ -67,7 +67,7 @@ public static BytesValidator exactLength(int byteLength) { * Checks individual byte content * * @param refByte to check against - * @return true if array only consists of refByte + * @return validator that returns true if array only consists of refByte */ public static BytesValidator onlyOf(byte refByte) { return new BytesValidator.IdenticalContent(refByte, BytesValidator.IdenticalContent.Mode.ONLY_OF); @@ -77,7 +77,7 @@ public static BytesValidator onlyOf(byte refByte) { * Checks individual byte content * * @param refByte to check against - * @return true if array has at least one byte that is not refByte + * @return validator that returns true if array has at least one byte that is not refByte */ public static BytesValidator notOnlyOf(byte refByte) { return new BytesValidator.IdenticalContent(refByte, BytesValidator.IdenticalContent.Mode.NOT_ONLY_OF); @@ -87,7 +87,7 @@ public static BytesValidator notOnlyOf(byte refByte) { * Checks if the internal byte array starts with given bytes * * @param startsWithBytes the supposed prefix - * @return true all startsWithBytes match the first bytes in the internal array + * @return validator that returns true all startsWithBytes match the first bytes in the internal array */ public static BytesValidator startsWith(byte... startsWithBytes) { return new BytesValidator.PrePostFix(true, startsWithBytes); @@ -97,7 +97,7 @@ public static BytesValidator startsWith(byte... startsWithBytes) { * Checks if the internal byte array ends with given bytes * * @param endsWithBytes the supposed postfix - * @return true all startsWithBytes match the first bytes in the internal array + * @return validator that returns true all startsWithBytes match the first bytes in the internal array */ public static BytesValidator endsWith(byte... endsWithBytes) { return new BytesValidator.PrePostFix(false, endsWithBytes); @@ -107,7 +107,7 @@ public static BytesValidator endsWith(byte... endsWithBytes) { * Checks individual byte content * * @param refByte to check against - * @return true if array has no value refByte + * @return validator that returns true if array has no value refByte */ public static BytesValidator noneOf(byte refByte) { return new BytesValidator.IdenticalContent(refByte, BytesValidator.IdenticalContent.Mode.NONE_OF); @@ -117,7 +117,7 @@ public static BytesValidator noneOf(byte refByte) { * This will execute all passed validators and returns true if at least one returns true (i.e. OR concatenation) * * @param validators at least one validator must be passed - * @return true if at least one validator returns true + * @return validator that returns true if at least one validator returns true */ public static BytesValidator or(BytesValidator... validators) { return new BytesValidator.Logical(Arrays.asList(validators), BytesValidator.Logical.Operator.OR); @@ -127,7 +127,7 @@ public static BytesValidator or(BytesValidator... validators) { * This will execute all passed validators and returns true if all return true (i.e. AND concatenation) * * @param validators at least one validator must be passed - * @return true if all return true + * @return validator that returns true if all return true */ public static BytesValidator and(BytesValidator... validators) { return new BytesValidator.Logical(Arrays.asList(validators), BytesValidator.Logical.Operator.AND); diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 530f002..270ae29 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -69,7 +69,7 @@ public boolean isMutable() { * * @param newArray used to overwrite internal * @return this instance - * @throws IndexOutOfBoundsException if newArray.length > internal length + * @throws IndexOutOfBoundsException if newArray.length() > internal length */ public MutableBytes overwrite(byte[] newArray) { return overwrite(newArray, 0); @@ -80,7 +80,7 @@ public MutableBytes overwrite(byte[] newArray) { * * @param newBytes used to overwrite internal * @return this instance - * @throws IndexOutOfBoundsException if newArray.length > internal length + * @throws IndexOutOfBoundsException if newArray.length() > internal length */ public MutableBytes overwrite(Bytes newBytes) { return overwrite(newBytes, 0); @@ -92,7 +92,7 @@ public MutableBytes overwrite(Bytes newBytes) { * @param newArray used to overwrite internal * @param offsetInternalArray index of the internal array to start overwriting * @return this instance - * @throws IndexOutOfBoundsException if newArray.length + offsetInternalArray > internal length + * @throws IndexOutOfBoundsException if newArray.length() + offsetInternalArray > internal length */ public MutableBytes overwrite(byte[] newArray, int offsetInternalArray) { Objects.requireNonNull(newArray, "must provide non-null array as source"); @@ -106,7 +106,7 @@ public MutableBytes overwrite(byte[] newArray, int offsetInternalArray) { * @param newBytes used to overwrite internal * @param offsetInternalArray index of the internal array to start overwriting * @return this instance - * @throws IndexOutOfBoundsException if newBytes.length + offsetInternalArray > internal length + * @throws IndexOutOfBoundsException if newBytes.length() + offsetInternalArray > internal length */ public MutableBytes overwrite(Bytes newBytes, int offsetInternalArray) { return overwrite(Objects.requireNonNull(newBytes, "must provide non-null array as source").array(), offsetInternalArray); diff --git a/src/main/java/at/favre/lib/bytes/Util.java b/src/main/java/at/favre/lib/bytes/Util.java index 4efb673..ac234bb 100644 --- a/src/main/java/at/favre/lib/bytes/Util.java +++ b/src/main/java/at/favre/lib/bytes/Util.java @@ -163,7 +163,7 @@ static int lastIndexOf(byte[] array, byte target, int start, int end) { } /** - * Counts the occurrence of target in the the in the subject array + * Counts the occurrence of target in the subject array * *

    * Analysis @@ -189,7 +189,7 @@ static int countByte(byte[] array, byte target) { } /** - * Counts the times given pattern (ie. an array) can be found in given array + * Counts the times given pattern (i.e. an array) can be found in given array * *

    * Analysis @@ -226,7 +226,7 @@ static int countByteArray(byte[] array, byte[] pattern) { * Simple Durstenfeld shuffle. * This will shuffle given array and will not make a copy, so beware. *

    - * See: https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#The_modern_algorithm + * See: Yates_shuffle * *

    * Analysis @@ -418,7 +418,7 @@ static boolean constantTimeEquals(byte[] array, byte[] anotherArray) { * Calculates the entropy factor of a byte array. *

    * This implementation will not create a copy of the internal array and will only internally initialize - * a int array with 256 elements as temporary buffer. + * an int array with 256 elements as temporary buffer. * *

    * Analysis @@ -496,7 +496,7 @@ static byte[] toArray(Collection collection) { } /** - * Converts this primitive array to an boxed object array. + * Converts this primitive array to a boxed object array. * Will create a new array and not reuse the array reference. * *

    @@ -544,7 +544,7 @@ static List toList(byte[] array) { } /** - * Converts this object array to an primitives type array. + * Converts this object array to a primitives type array. * Will create a new array and not reuse the array reference. * *

    @@ -717,7 +717,7 @@ static byte[] toByteArray(double[] doubleArray) { * @param charArray to get the byte array from * @param charset charset to be used to decode the char array * @param offset to start reading the char array from (must be smaller than length and gt 0) - * @param length from offset (must be between 0 and charArray.length) + * @param length from offset (must be between 0 and charArray.length()) * @return byte array of encoded chars */ static byte[] charToByteArray(char[] charArray, Charset charset, int offset, int length) { @@ -807,7 +807,7 @@ static int[] toIntArray(byte[] bytes, ByteOrder byteOrder) { } /** - * Converts the byte array to an long array. This will spread 8 bytes into a single long: + * Converts the byte array to a long array. This will spread 8 bytes into a single long: * *

              *     [b1, b2, b3, b4, b5, b6, b7, b8] = [long1]
    @@ -834,7 +834,7 @@ static long[] toLongArray(byte[] bytes, ByteOrder byteOrder) {
             }
     
             /**
    -         * Converts the byte array to an float array. This will spread 4 bytes into a single float:
    +         * Converts the byte array to a float array. This will spread 4 bytes into a single float:
              *
              * 
              *     [b1, b2, b3, b4] = [float1]
    @@ -861,7 +861,7 @@ static float[] toFloatArray(byte[] bytes, ByteOrder byteOrder) {
             }
     
             /**
    -         * Converts the byte array to an double array. This will spread 8 bytes into a single double:
    +         * Converts the byte array to a double array. This will spread 8 bytes into a single double:
              *
              * 
              *     [b1, b2, b3, b4, b5, b6, b7, b8] = [double1]
    @@ -916,7 +916,7 @@ static short[] toShortArray(byte[] bytes, ByteOrder byteOrder) {
     
             /**
              * Convert UUID to a newly generated 16 byte long array representation. Puts the 8 byte most significant bits and
    -         * 8 byte least significant bits into an byte array.
    +         * 8 byte least-significant bits into a byte array.
              *
              * 

    * Analysis @@ -1034,13 +1034,13 @@ private Validation() { } /** - * Check if a length of an primitive (e.g. int = 4 byte) fits in given length from given start index. + * Check if a length of a primitive (e.g. int = 4 byte) fits in given length from given start index. * Throws exception with descriptive exception message. * * @param length of the whole array * @param index to start from array length * @param primitiveLength length of the primitive type to check - * @param type for easier debugging the human readable type of the checked primitive + * @param type for easier debugging the human-readable type of the checked primitive * to put in exception message * @throws IndexOutOfBoundsException if index + primitiveLength > length */ @@ -1056,7 +1056,7 @@ static void checkIndexBounds(int length, int index, int primitiveLength, String * * @param length of the whole array * @param expectedLength how length is expected - * @param type for easier debugging the human readable type of the checked primitive + * @param type for easier debugging the human-readable type of the checked primitive * to put in exception message * @throws IllegalArgumentException if length != expectedLength */ @@ -1073,7 +1073,7 @@ static void checkExactLength(int length, int expectedLength, String type) { * * @param length of the byte array * @param modFactor to divide the length - * @param errorSubject human readable message of the exact error subject + * @param errorSubject human-readable message of the exact error subject * @throws IllegalArgumentException if length % modFactor != 0 */ static void checkModLength(int length, int modFactor, String errorSubject) { @@ -1086,7 +1086,7 @@ static void checkModLength(int length, int modFactor, String errorSubject) { * Check if the file exists and is a file. * * @param file to check - * @throws IllegalArgumentException if either file is null, does not exists or is not a file + * @throws IllegalArgumentException if either file is null, does not exist or is not a file */ private static void checkFileExists(java.io.File file) { if (file == null || !file.exists() || !file.isFile()) { @@ -1181,7 +1181,7 @@ static byte[] readFromFile(java.io.File file) { * @param file to read bytes from * @param offset to read * @param length from offset - * @return byte array with length length + * @return byte array with length */ static byte[] readFromFile(java.io.File file, int offset, int length) { Validation.checkFileExists(file); From 9644a8d432bb1ed5aa074dea4a0ad47bc042048d Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 15 Feb 2023 19:49:17 +0100 Subject: [PATCH 164/181] Bump Version --- CHANGELOG | 7 +++++++ pom.xml | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 7cdb7ad..ee53874 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,12 @@ # Releases +## v1.6.1 + +* now build by JDK 11 and removed errorprone compiler #52 +* introduce sonarqube and remove codecov +* improve javadoc by fixing many typos #53 +* some small bugfixes + ## v1.6.0 * migrate to github actions, codecov and maven central #49 diff --git a/pom.xml b/pom.xml index 5803bb5..c6a31a8 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ bytes - 1.6.0 + 1.6.1 bundle Bytes Utility Library From 68344d8b6c0247592b7f5e313cf4ff3f1cecc3ce Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Wed, 15 Feb 2023 22:58:22 +0100 Subject: [PATCH 165/181] Improve github actions script --- .github/workflows/build_deploy.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index 607a0ca..bd8642a 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -39,7 +39,7 @@ jobs: java-version: '11' distribution: 'temurin' - name: Build with Maven - run: ./mvnw -B clean verify checkstyle:checkstyle jacoco:report -DcommonConfig.jarSign.skip=true + run: ./mvnw -B clean verify -DcommonConfig.jarSign.skip=true - name: Analyze with SonaQube env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any @@ -77,7 +77,7 @@ jobs: gpg-passphrase: MAVEN_GPG_PASSPHRASE # env variable for GPG private key passphrase - name: Publish package run: | - ./mvnw -B verify nexus-staging:deploy -P deploy && \ + ./mvnw -B verify nexus-staging:deploy -P deploy -DskipTests && \ ./mvnw -B nexus-staging:release -P deploy env: OPENSOURCE_PROJECTS_KS_PW: ${{ secrets.KEYSTORE_PASSWORD }} From 71b8daad0c3e7a011ba9a91acf6ddce8eb20e495 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 2 Mar 2023 20:24:08 +0100 Subject: [PATCH 166/181] Create dependabot.yml --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..90e2fb4 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +# dependabot analyzing maven dependencies +version: 2 +updates: + - package-ecosystem: "maven" + directory: "/" + open-pull-requests-limit: 3 + schedule: + interval: "weekly" + labels: + - "dependencies" From f0c83d4fc364a03d79291efaca7373d79f721d49 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 19:24:28 +0000 Subject: [PATCH 167/181] Bump jmh-core from 1.35 to 1.36 Bumps [jmh-core](https://github.com/openjdk/jmh) from 1.35 to 1.36. - [Release notes](https://github.com/openjdk/jmh/releases) - [Commits](https://github.com/openjdk/jmh/compare/1.35...1.36) --- updated-dependencies: - dependency-name: org.openjdk.jmh:jmh-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c6a31a8..9177165 100644 --- a/pom.xml +++ b/pom.xml @@ -102,7 +102,7 @@ org.openjdk.jmh jmh-core - 1.35 + 1.36 test From 8db53b89596516f0343e856f55d507e0100ebbdb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 19:24:32 +0000 Subject: [PATCH 168/181] Bump common-parent from 18.1 to 19 Bumps [common-parent](https://github.com/patrickfav/mvn-common-parent) from 18.1 to 19. - [Release notes](https://github.com/patrickfav/mvn-common-parent/releases) - [Changelog](https://github.com/patrickfav/mvn-common-parent/blob/main/CHANGELOG) - [Commits](https://github.com/patrickfav/mvn-common-parent/compare/v18.1...v19) --- updated-dependencies: - dependency-name: at.favre.lib:common-parent dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c6a31a8..0082b22 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 18.1 + 19 bytes From 4dfb09c05753cb51289ccd594a9e7d027049ce62 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Mar 2023 19:24:37 +0000 Subject: [PATCH 169/181] Bump jmh-generator-annprocess from 1.35 to 1.36 Bumps [jmh-generator-annprocess](https://github.com/openjdk/jmh) from 1.35 to 1.36. - [Release notes](https://github.com/openjdk/jmh/releases) - [Commits](https://github.com/openjdk/jmh/compare/1.35...1.36) --- updated-dependencies: - dependency-name: org.openjdk.jmh:jmh-generator-annprocess dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index c6a31a8..d4fadd6 100644 --- a/pom.xml +++ b/pom.xml @@ -108,7 +108,7 @@ org.openjdk.jmh jmh-generator-annprocess - 1.35 + 1.36 test From 2bc552d85fb8da60009951261d0f3d0f76fc348a Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Thu, 2 Mar 2023 20:44:22 +0100 Subject: [PATCH 170/181] Ignore SonarQube CI Step on dependabot --- .github/workflows/build_deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index bd8642a..47ea839 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -41,6 +41,7 @@ jobs: - name: Build with Maven run: ./mvnw -B clean verify -DcommonConfig.jarSign.skip=true - name: Analyze with SonaQube + if: ${{ github.actor != 'dependabot[bot]' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 0bf1b6089403f0db35a94db9adb2dbd3c5377173 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 Mar 2023 10:56:34 +0000 Subject: [PATCH 171/181] Bump common-parent from 19 to 20 Bumps [common-parent](https://github.com/patrickfav/mvn-common-parent) from 19 to 20. - [Release notes](https://github.com/patrickfav/mvn-common-parent/releases) - [Changelog](https://github.com/patrickfav/mvn-common-parent/blob/main/CHANGELOG) - [Commits](https://github.com/patrickfav/mvn-common-parent/compare/v19...v20) --- updated-dependencies: - dependency-name: at.favre.lib:common-parent dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index fc84494..1c8a255 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ at.favre.lib common-parent - 19 + 20 bytes From 165118b84c3dd84859d7ef628879bf800ba8021b Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 12 Mar 2023 19:19:54 +0100 Subject: [PATCH 172/181] Update url in pom --- pom.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index 1c8a255..b7d7083 100644 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ arrays in Java. It supports endianness as well as immutability and mutability, so the caller may decide to favor performance. - https://github.com/patrickfav/bytes-java + https://favr.dev/opensource/bytes-java 2017 @@ -82,11 +82,11 @@ maven-jar-plugin - - - at.favre.lib.bytes - - + + + at.favre.lib.bytes + + From b54f29249310a00731b46d519555ac220e82cda6 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 26 Mar 2023 18:03:06 +0200 Subject: [PATCH 173/181] Bump version to 1.6.2 --- CHANGELOG | 4 ++++ pom.xml | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index ee53874..e30ed69 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,9 @@ # Releases +## 1.6.2 + +* remove hashCode caching since it could introduce very subtle bugs + ## v1.6.1 * now build by JDK 11 and removed errorprone compiler #52 diff --git a/pom.xml b/pom.xml index b7d7083..cd65912 100644 --- a/pom.xml +++ b/pom.xml @@ -11,7 +11,7 @@ bytes - 1.6.1 + 1.6.2 bundle Bytes Utility Library From 509644df1b0db73fd8a75d0662d2bd0d84cefd35 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 26 Mar 2023 18:03:13 +0200 Subject: [PATCH 174/181] Remove hashCode caching since it could introduce very subtle bugs --- src/main/java/at/favre/lib/bytes/Bytes.java | 6 +----- src/main/java/at/favre/lib/bytes/MutableBytes.java | 5 ----- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/main/java/at/favre/lib/bytes/Bytes.java b/src/main/java/at/favre/lib/bytes/Bytes.java index 33fb08d..123eeec 100644 --- a/src/main/java/at/favre/lib/bytes/Bytes.java +++ b/src/main/java/at/favre/lib/bytes/Bytes.java @@ -745,7 +745,6 @@ public static Bytes random(int length, Random random) { private final byte[] byteArray; private final ByteOrder byteOrder; private final BytesFactory factory; - private transient int hashCodeCache; Bytes(byte[] byteArray, ByteOrder byteOrder) { this(byteArray, byteOrder, new Factory()); @@ -2221,10 +2220,7 @@ public boolean equalsContent(Bytes other) { @Override public int hashCode() { - if (hashCodeCache == 0) { - hashCodeCache = Util.Obj.hashCode(internalArray(), byteOrder()); - } - return hashCodeCache; + return Util.Obj.hashCode(internalArray(), byteOrder()); } /** diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index 270ae29..dbc3606 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -178,11 +178,6 @@ public Bytes immutable() { return Bytes.wrap(internalArray(), byteOrder()); } - @Override - public int hashCode() { - return Util.Obj.hashCode(internalArray(), byteOrder()); - } - @Override public boolean equals(Object o) { return super.equals(o); From 3e8216313d98e708cefa06a93dedddc17967213f Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 26 Mar 2023 18:03:32 +0200 Subject: [PATCH 175/181] Update Jmh benchmark with JDK17 emulation --- .../lib/bytes/EncodingHexJmhBenchmark.java | 146 ++++++++++++++++++ 1 file changed, 146 insertions(+) diff --git a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java index e079f2e..80e297b 100644 --- a/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java +++ b/src/test/java/at/favre/lib/bytes/EncodingHexJmhBenchmark.java @@ -23,10 +23,13 @@ import org.openjdk.jmh.annotations.*; +import java.io.IOException; import java.math.BigInteger; import java.nio.ByteOrder; +import java.nio.charset.StandardCharsets; import java.util.HashMap; import java.util.Map; +import java.util.Objects; import java.util.Random; import java.util.concurrent.TimeUnit; @@ -128,6 +131,7 @@ public class EncodingHexJmhBenchmark { private BinaryToTextEncoding.EncoderDecoder option3; private BinaryToTextEncoding.EncoderDecoder option4; private BinaryToTextEncoding.EncoderDecoder option5; + private BinaryToTextEncoding.EncoderDecoder option6; private Random random; @Setup(Level.Trial) @@ -139,6 +143,7 @@ public void setup() { option3 = new BigIntegerHexEncoder(); option4 = new OldBytesImplementation(); option5 = new StackOverflowAnswer2Encoder(); + option6 = new Jdk17HexFormat(); rndMap = new HashMap<>(); int[] lengths = new int[]{4, 8, 16, 32, 128, 512, 1000000}; @@ -176,6 +181,11 @@ public String encodeStackOverflowCode2() { return encodeDecode(option5); } + @Benchmark + public String encodeHexFormatJdk17() { + return encodeDecode(option6); + } + private String encodeDecode(BinaryToTextEncoding.EncoderDecoder encoder) { Bytes[] bytes = rndMap.get(byteLength); int rndNum = random.nextInt(bytes.length); @@ -285,4 +295,140 @@ public byte[] decode(CharSequence encoded) { throw new UnsupportedOperationException(); } } + + /** + * Copy of the JDK 17 implementation of HexFormat, only difference is that we need to create new strings, while + * the JDK can create strings without byte copy, I cant here. + */ + static final class Jdk17HexFormat implements BinaryToTextEncoding.EncoderDecoder { + private static final byte[] LOWERCASE_DIGITS = { + '0', '1', '2', '3', '4', '5', '6', '7', + '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', + }; + private final String delimiter = ""; + private final String prefix = ""; + private final String suffix = ""; + private final byte[] digits = LOWERCASE_DIGITS; + + @Override + public String encode(byte[] byteArray, ByteOrder byteOrder) { + return formatHex(byteArray, 0, byteArray.length); + } + + private String formatHex(byte[] bytes, int fromIndex, int toIndex) { + Objects.requireNonNull(bytes, "bytes"); + //Objects.checkFromToIndex(fromIndex, toIndex, bytes.length); + if (toIndex - fromIndex == 0) { + return ""; + } + // Format efficiently if possible + String s = formatOptDelimiter(bytes, fromIndex, toIndex); + if (s == null) { + long stride = prefix.length() + 2L + suffix.length() + delimiter.length(); + int capacity = checkMaxArraySize((toIndex - fromIndex) * stride - delimiter.length()); + StringBuilder sb = new StringBuilder(capacity); + formatHex(sb, bytes, fromIndex, toIndex); + s = sb.toString(); + } + return s; + } + + private A formatHex(A out, byte[] bytes, int fromIndex, int toIndex) { + Objects.requireNonNull(out, "out"); + Objects.requireNonNull(bytes, "bytes"); + //Objects.checkFromToIndex(fromIndex, toIndex, bytes.length); + + int length = toIndex - fromIndex; + if (length > 0) { + try { + String between = suffix + delimiter + prefix; + out.append(prefix); + toHexDigits(out, bytes[fromIndex]); + if (between.isEmpty()) { + for (int i = 1; i < length; i++) { + toHexDigits(out, bytes[fromIndex + i]); + } + } else { + for (int i = 1; i < length; i++) { + out.append(between); + toHexDigits(out, bytes[fromIndex + i]); + } + } + out.append(suffix); + } catch (IOException ioe) { + throw new RuntimeException(ioe.getMessage(), ioe); + } + } + return out; + } + + private A toHexDigits(A out, byte value) { + Objects.requireNonNull(out, "out"); + try { + out.append(toHighHexDigit(value)); + out.append(toLowHexDigit(value)); + return out; + } catch (IOException ioe) { + throw new RuntimeException(ioe.getMessage(), ioe); + } + } + + private String formatOptDelimiter(byte[] bytes, int fromIndex, int toIndex) { + byte[] rep; + if (!prefix.isEmpty() || !suffix.isEmpty()) { + return null; + } + int length = toIndex - fromIndex; + if (delimiter.isEmpty()) { + // Allocate the byte array and fill in the hex pairs for each byte + rep = new byte[checkMaxArraySize(length * 2L)]; + for (int i = 0; i < length; i++) { + rep[i * 2] = (byte) toHighHexDigit(bytes[fromIndex + i]); + rep[i * 2 + 1] = (byte) toLowHexDigit(bytes[fromIndex + i]); + } + } else if (delimiter.length() == 1 && delimiter.charAt(0) < 256) { + // Allocate the byte array and fill in the characters for the first byte + // Then insert the delimiter and hexadecimal characters for each of the remaining bytes + char sep = delimiter.charAt(0); + rep = new byte[checkMaxArraySize(length * 3L - 1L)]; + rep[0] = (byte) toHighHexDigit(bytes[fromIndex]); + rep[1] = (byte) toLowHexDigit(bytes[fromIndex]); + for (int i = 1; i < length; i++) { + rep[i * 3 - 1] = (byte) sep; + rep[i * 3] = (byte) toHighHexDigit(bytes[fromIndex + i]); + rep[i * 3 + 1] = (byte) toLowHexDigit(bytes[fromIndex + i]); + } + } else { + // Delimiter formatting not to a single byte + return null; + } + try { + // Return a new string using the bytes without making a copy -> we cant use this here as we dont have access to JavaLangAccess + //return jla.newStringNoRepl(rep, StandardCharsets.ISO_8859_1); + return new String(rep, StandardCharsets.ISO_8859_1); + } catch (Exception cce) { + throw new AssertionError(cce); + } + } + + private char toHighHexDigit(int value) { + return (char) digits[(value >> 4) & 0xf]; + } + + private char toLowHexDigit(int value) { + return (char) digits[value & 0xf]; + } + + private static int checkMaxArraySize(long length) { + if (length > Integer.MAX_VALUE) + throw new OutOfMemoryError("String size " + length + + " exceeds maximum " + Integer.MAX_VALUE); + return (int) length; + } + + @Override + public byte[] decode(CharSequence encoded) { + throw new UnsupportedOperationException(); + } + } } From 9ee7cba3ba8826250c630cf9a0db1b95bd917d40 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 26 Mar 2023 18:56:43 +0200 Subject: [PATCH 176/181] Only run sonar job when on target repo and not on fork PRs or dependabot --- .github/workflows/build_deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_deploy.yml b/.github/workflows/build_deploy.yml index 47ea839..cde13a1 100644 --- a/.github/workflows/build_deploy.yml +++ b/.github/workflows/build_deploy.yml @@ -41,7 +41,7 @@ jobs: - name: Build with Maven run: ./mvnw -B clean verify -DcommonConfig.jarSign.skip=true - name: Analyze with SonaQube - if: ${{ github.actor != 'dependabot[bot]' }} + if: ${{ github.event.pull_request.head.repo.full_name == github.repository }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} From 37874d515ab2886184ac15fb78b0a80f0051045b Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sun, 26 Mar 2023 18:58:27 +0200 Subject: [PATCH 177/181] Fix checkstyle issue --- src/main/java/at/favre/lib/bytes/MutableBytes.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/at/favre/lib/bytes/MutableBytes.java b/src/main/java/at/favre/lib/bytes/MutableBytes.java index dbc3606..270ae29 100644 --- a/src/main/java/at/favre/lib/bytes/MutableBytes.java +++ b/src/main/java/at/favre/lib/bytes/MutableBytes.java @@ -178,6 +178,11 @@ public Bytes immutable() { return Bytes.wrap(internalArray(), byteOrder()); } + @Override + public int hashCode() { + return Util.Obj.hashCode(internalArray(), byteOrder()); + } + @Override public boolean equals(Object o) { return super.equals(o); From 4cf0997370aa1261b9ad277fc8bf77b43fdbb7a6 Mon Sep 17 00:00:00 2001 From: Patrick Favre-Bulle Date: Sat, 1 Apr 2023 08:06:21 +0200 Subject: [PATCH 178/181] Update README.md Fix Links --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 03720ad..eea6e4b 100644 --- a/README.md +++ b/README.md @@ -623,11 +623,11 @@ readOnlyBytes.inputStream(); ## Download -The artifacts are deployed to [jcenter](https://bintray.com/bintray/jcenter) and [Maven Central](https://search.maven.org/). +The artifacts are deployed to [Maven Central](https://search.maven.org/). ### Maven -Add the dependency of the [latest version](https://github.com/patrickfav/bytes/releases) to your `pom.xml`: +Add the dependency of the [latest version](https://github.com/patrickfav/bytes-java/releases) to your `pom.xml`: ```xml @@ -645,7 +645,7 @@ Add to your `build.gradle` module dependencies: ### Local Jar Library -[Grab jar from latest release.](https://github.com/patrickfav/bytes/releases/latest) +[Grab jar from latest release.](https://github.com/patrickfav/bytes-java/releases/latest) ### OSGi From 4b69d95439a572fbb7c434f527ec5be6cef35f42 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 May 2023 10:56:28 +0000 Subject: [PATCH 179/181] Bump maven-bundle-plugin from 5.1.8 to 5.1.9 Bumps maven-bundle-plugin from 5.1.8 to 5.1.9. --- updated-dependencies: - dependency-name: org.apache.felix:maven-bundle-plugin dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index cd65912..b1f97d8 100644 --- a/pom.xml +++ b/pom.xml @@ -41,7 +41,7 @@ org.apache.felix maven-bundle-plugin - 5.1.8 + 5.1.9 true From 03b772a749de11fa08fa51054eca978f4555352c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 7 Aug 2023 10:20:34 +0000 Subject: [PATCH 180/181] Bump org.openjdk.jmh:jmh-generator-annprocess from 1.36 to 1.37 Bumps [org.openjdk.jmh:jmh-generator-annprocess](https://github.com/openjdk/jmh) from 1.36 to 1.37. - [Commits](https://github.com/openjdk/jmh/compare/1.36...1.37) --- updated-dependencies: - dependency-name: org.openjdk.jmh:jmh-generator-annprocess dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b1f97d8..b8e042e 100644 --- a/pom.xml +++ b/pom.xml @@ -108,7 +108,7 @@ org.openjdk.jmh jmh-generator-annprocess - 1.36 + 1.37 test From 7f47b95aa7dd7e9d2e01dd93567c1b1efc41fca8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Aug 2023 18:13:44 +0000 Subject: [PATCH 181/181] Bump org.openjdk.jmh:jmh-core from 1.36 to 1.37 Bumps [org.openjdk.jmh:jmh-core](https://github.com/openjdk/jmh) from 1.36 to 1.37. - [Commits](https://github.com/openjdk/jmh/compare/1.36...1.37) --- updated-dependencies: - dependency-name: org.openjdk.jmh:jmh-core dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index b8e042e..2d2e383 100644 --- a/pom.xml +++ b/pom.xml @@ -102,7 +102,7 @@ org.openjdk.jmh jmh-core - 1.36 + 1.37 test