xref: /aosp_15_r20/art/test/950-redefine-intrinsic/src/Main.java (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker /*
2*795d594fSAndroid Build Coastguard Worker  * Copyright (C) 2017 The Android Open Source Project
3*795d594fSAndroid Build Coastguard Worker  *
4*795d594fSAndroid Build Coastguard Worker  * Licensed under the Apache License, Version 2.0 (the "License");
5*795d594fSAndroid Build Coastguard Worker  * you may not use this file except in compliance with the License.
6*795d594fSAndroid Build Coastguard Worker  * You may obtain a copy of the License at
7*795d594fSAndroid Build Coastguard Worker  *
8*795d594fSAndroid Build Coastguard Worker  *      http://www.apache.org/licenses/LICENSE-2.0
9*795d594fSAndroid Build Coastguard Worker  *
10*795d594fSAndroid Build Coastguard Worker  * Unless required by applicable law or agreed to in writing, software
11*795d594fSAndroid Build Coastguard Worker  * distributed under the License is distributed on an "AS IS" BASIS,
12*795d594fSAndroid Build Coastguard Worker  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*795d594fSAndroid Build Coastguard Worker  * See the License for the specific language governing permissions and
14*795d594fSAndroid Build Coastguard Worker  * limitations under the License.
15*795d594fSAndroid Build Coastguard Worker  */
16*795d594fSAndroid Build Coastguard Worker 
17*795d594fSAndroid Build Coastguard Worker import static art.Redefinition.doCommonClassRedefinition;
18*795d594fSAndroid Build Coastguard Worker import java.util.Base64;
19*795d594fSAndroid Build Coastguard Worker import java.util.Random;
20*795d594fSAndroid Build Coastguard Worker import java.util.function.*;
21*795d594fSAndroid Build Coastguard Worker import java.util.stream.*;
22*795d594fSAndroid Build Coastguard Worker 
23*795d594fSAndroid Build Coastguard Worker public class Main {
24*795d594fSAndroid Build Coastguard Worker 
25*795d594fSAndroid Build Coastguard Worker   // The bytes below define the following java program.
26*795d594fSAndroid Build Coastguard Worker   // To generate the bytes from the following Long.java file:
27*795d594fSAndroid Build Coastguard Worker   // 1. Commit your Long.java change: git commit -- libcore/ojluni/src/main/java/java/lang/Long.java
28*795d594fSAndroid Build Coastguard Worker   // 2. Copy the following java program into libcore/ojluni/src/main/java/java/lang/Long.java
29*795d594fSAndroid Build Coastguard Worker   // 3. Run this build command: m core-all && d8 --classpath out/soong/.intermediates/libcore/core-all/android_common/javac/classes/  out/soong/.intermediates/libcore/core-all/android_common/javac/classes/java/lang/Long.class && base64 out/soong/.intermediates/libcore/core-all/android_common/javac/classes/java/lang/Long.class > class_Long.txt && base64 classes.dex > dex_Long.txt
30*795d594fSAndroid Build Coastguard Worker   // 4. Copy class_Long.txt into CLASS_BYTES String and dex_Long.txt into DEX_BYTES
31*795d594fSAndroid Build Coastguard Worker   // 5. Checkout the original Long.java: croot libcore && git checkout ojluni/src/main/java/java/lang/Long.java
32*795d594fSAndroid Build Coastguard Worker   // package java.lang;
33*795d594fSAndroid Build Coastguard Worker   // import java.lang.constant.Constable;
34*795d594fSAndroid Build Coastguard Worker   // import java.lang.constant.ConstantDesc;
35*795d594fSAndroid Build Coastguard Worker   // import java.lang.invoke.MethodHandles;
36*795d594fSAndroid Build Coastguard Worker   // import java.math.*;
37*795d594fSAndroid Build Coastguard Worker   //
38*795d594fSAndroid Build Coastguard Worker   // import java.util.Optional;
39*795d594fSAndroid Build Coastguard Worker   // public final class Long extends Number implements Comparable<Long>, Constable, ConstantDesc {
40*795d594fSAndroid Build Coastguard Worker   //     public static final long MIN_VALUE = 0;
41*795d594fSAndroid Build Coastguard Worker   //     public static final long MAX_VALUE = 0;
42*795d594fSAndroid Build Coastguard Worker   //     public static final Class<Long> TYPE = null;
43*795d594fSAndroid Build Coastguard Worker   //     static { }
44*795d594fSAndroid Build Coastguard Worker   //     // Used for Stream.count for some reason.
45*795d594fSAndroid Build Coastguard Worker   //     public static long sum(long a, long b) {
46*795d594fSAndroid Build Coastguard Worker   //       return a + b;
47*795d594fSAndroid Build Coastguard Worker   //     }
48*795d594fSAndroid Build Coastguard Worker   //     // Used in stream/lambda functions.
49*795d594fSAndroid Build Coastguard Worker   //     public Long(long value) {
50*795d594fSAndroid Build Coastguard Worker   //       this.value = value;
51*795d594fSAndroid Build Coastguard Worker   //     }
52*795d594fSAndroid Build Coastguard Worker   //     // Used in stream/lambda functions.
53*795d594fSAndroid Build Coastguard Worker   //     public static Long valueOf(long l) {
54*795d594fSAndroid Build Coastguard Worker   //       return new Long(l);
55*795d594fSAndroid Build Coastguard Worker   //     }
56*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return i + 1
57*795d594fSAndroid Build Coastguard Worker   //     public static long highestOneBit(long i) {
58*795d594fSAndroid Build Coastguard Worker   //       return i + 1;
59*795d594fSAndroid Build Coastguard Worker   //     }
60*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return i - 1
61*795d594fSAndroid Build Coastguard Worker   //     public static long lowestOneBit(long i) {
62*795d594fSAndroid Build Coastguard Worker   //       return i - 1;
63*795d594fSAndroid Build Coastguard Worker   //     }
64*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return i + i
65*795d594fSAndroid Build Coastguard Worker   //     public static int numberOfLeadingZeros(long i) {
66*795d594fSAndroid Build Coastguard Worker   //       return (int)(i + i);
67*795d594fSAndroid Build Coastguard Worker   //     }
68*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return i & (i >>> 1);
69*795d594fSAndroid Build Coastguard Worker   //     public static int numberOfTrailingZeros(long i) {
70*795d594fSAndroid Build Coastguard Worker   //       return (int)(i & (i >>> 1));
71*795d594fSAndroid Build Coastguard Worker   //     }
72*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return 5
73*795d594fSAndroid Build Coastguard Worker   //      public static int bitCount(long i) {
74*795d594fSAndroid Build Coastguard Worker   //        return 5;
75*795d594fSAndroid Build Coastguard Worker   //      }
76*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return i
77*795d594fSAndroid Build Coastguard Worker   //     public static long rotateLeft(long i, int distance) {
78*795d594fSAndroid Build Coastguard Worker   //       return i;
79*795d594fSAndroid Build Coastguard Worker   //     }
80*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return 10 * i
81*795d594fSAndroid Build Coastguard Worker   //     public static long rotateRight(long i, int distance) {
82*795d594fSAndroid Build Coastguard Worker   //       return 10 * i;
83*795d594fSAndroid Build Coastguard Worker   //     }
84*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return -i
85*795d594fSAndroid Build Coastguard Worker   //     public static long reverse(long i) {
86*795d594fSAndroid Build Coastguard Worker   //       return -i;
87*795d594fSAndroid Build Coastguard Worker   //     }
88*795d594fSAndroid Build Coastguard Worker   //     /** @hide  */
89*795d594fSAndroid Build Coastguard Worker   //     public static long compress(long i, long mask) {
90*795d594fSAndroid Build Coastguard Worker   //       return -1;
91*795d594fSAndroid Build Coastguard Worker   //     }
92*795d594fSAndroid Build Coastguard Worker   //     /** @hide */
93*795d594fSAndroid Build Coastguard Worker   //     public static long expand(long i, long mask) {
94*795d594fSAndroid Build Coastguard Worker   //       return -1;
95*795d594fSAndroid Build Coastguard Worker   //     }
96*795d594fSAndroid Build Coastguard Worker   //     private static long parallelSuffix(long maskCount) {
97*795d594fSAndroid Build Coastguard Worker   //       return 0;
98*795d594fSAndroid Build Coastguard Worker   //     }
99*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return 0
100*795d594fSAndroid Build Coastguard Worker   //     public static int signum(long i) {
101*795d594fSAndroid Build Coastguard Worker   //       return 0;
102*795d594fSAndroid Build Coastguard Worker   //     }
103*795d594fSAndroid Build Coastguard Worker   //     // Intrinsic! Do something cool. Return 0
104*795d594fSAndroid Build Coastguard Worker   //     public static long reverseBytes(long i) {
105*795d594fSAndroid Build Coastguard Worker   //       return 0;
106*795d594fSAndroid Build Coastguard Worker   //     }
107*795d594fSAndroid Build Coastguard Worker   //     public String toString() {
108*795d594fSAndroid Build Coastguard Worker   //       return "Redefined Long! value (as double)=" + ((double)value);
109*795d594fSAndroid Build Coastguard Worker   //     }
110*795d594fSAndroid Build Coastguard Worker   //     public static String toString(long i, int radix) {
111*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
112*795d594fSAndroid Build Coastguard Worker   //     }
113*795d594fSAndroid Build Coastguard Worker   //     public static String toUnsignedString(long i, int radix) {
114*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
115*795d594fSAndroid Build Coastguard Worker   //     }
116*795d594fSAndroid Build Coastguard Worker   //     private static BigInteger toUnsignedBigInteger(long i) {
117*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
118*795d594fSAndroid Build Coastguard Worker   //     }
119*795d594fSAndroid Build Coastguard Worker   //     public static String toHexString(long i) {
120*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
121*795d594fSAndroid Build Coastguard Worker   //     }
122*795d594fSAndroid Build Coastguard Worker   //     public static String toOctalString(long i) {
123*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
124*795d594fSAndroid Build Coastguard Worker   //     }
125*795d594fSAndroid Build Coastguard Worker   //     public static String toBinaryString(long i) {
126*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
127*795d594fSAndroid Build Coastguard Worker   //     }
128*795d594fSAndroid Build Coastguard Worker   //     static String toUnsignedString0(long val, int shift) {
129*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
130*795d594fSAndroid Build Coastguard Worker   //     }
131*795d594fSAndroid Build Coastguard Worker   //     static void formatUnsignedLong0(long val, int shift, byte[] buf, int offset, int len) {
132*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
133*795d594fSAndroid Build Coastguard Worker   //     }
134*795d594fSAndroid Build Coastguard Worker   //     public static String toString(long i) {
135*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
136*795d594fSAndroid Build Coastguard Worker   //     }
137*795d594fSAndroid Build Coastguard Worker   //     public static String toUnsignedString(long i) {
138*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
139*795d594fSAndroid Build Coastguard Worker   //     }
140*795d594fSAndroid Build Coastguard Worker   //     static int getChars(long i, int index, byte[] buf) {
141*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
142*795d594fSAndroid Build Coastguard Worker   //     }
143*795d594fSAndroid Build Coastguard Worker   //     static int getChars(long i, int index, char[] buf) {
144*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
145*795d594fSAndroid Build Coastguard Worker   //     }
146*795d594fSAndroid Build Coastguard Worker   //     static int stringSize(long x) {
147*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
148*795d594fSAndroid Build Coastguard Worker   //     }
149*795d594fSAndroid Build Coastguard Worker   //     public static long parseLong(String s, int radix) throws NumberFormatException {
150*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
151*795d594fSAndroid Build Coastguard Worker   //     }
152*795d594fSAndroid Build Coastguard Worker   //     public static long parseLong(String s) throws NumberFormatException {
153*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
154*795d594fSAndroid Build Coastguard Worker   //     }
155*795d594fSAndroid Build Coastguard Worker   //     public static long parseLong(CharSequence s, int beginIndex, int endIndex, int radix) throws NumberFormatException {
156*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
157*795d594fSAndroid Build Coastguard Worker   //     }
158*795d594fSAndroid Build Coastguard Worker   //     public static long parseUnsignedLong(String s, int radix) throws NumberFormatException {
159*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
160*795d594fSAndroid Build Coastguard Worker   //     }
161*795d594fSAndroid Build Coastguard Worker   //     public static long parseUnsignedLong(String s) throws NumberFormatException {
162*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
163*795d594fSAndroid Build Coastguard Worker   //     }
164*795d594fSAndroid Build Coastguard Worker   //     public static long parseUnsignedLong(CharSequence s, int beginIndex, int endIndex, int radix) throws NumberFormatException {
165*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
166*795d594fSAndroid Build Coastguard Worker   //     }
167*795d594fSAndroid Build Coastguard Worker   //     public static Long valueOf(String s, int radix) throws NumberFormatException {
168*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
169*795d594fSAndroid Build Coastguard Worker   //     }
170*795d594fSAndroid Build Coastguard Worker   //     public static Long valueOf(String s) throws NumberFormatException {
171*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
172*795d594fSAndroid Build Coastguard Worker   //     }
173*795d594fSAndroid Build Coastguard Worker   //     public static Long decode(String nm) throws NumberFormatException {
174*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
175*795d594fSAndroid Build Coastguard Worker   //     }
176*795d594fSAndroid Build Coastguard Worker   //     private final long value;
177*795d594fSAndroid Build Coastguard Worker   //     public Long(String s) throws NumberFormatException {
178*795d594fSAndroid Build Coastguard Worker   //       this(0);
179*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
180*795d594fSAndroid Build Coastguard Worker   //     }
181*795d594fSAndroid Build Coastguard Worker   //     public byte byteValue() {
182*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
183*795d594fSAndroid Build Coastguard Worker   //     }
184*795d594fSAndroid Build Coastguard Worker   //     public short shortValue() {
185*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
186*795d594fSAndroid Build Coastguard Worker   //     }
187*795d594fSAndroid Build Coastguard Worker   //     public int intValue() {
188*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
189*795d594fSAndroid Build Coastguard Worker   //     }
190*795d594fSAndroid Build Coastguard Worker   //     public long longValue() {
191*795d594fSAndroid Build Coastguard Worker   //       return value;
192*795d594fSAndroid Build Coastguard Worker   //     }
193*795d594fSAndroid Build Coastguard Worker   //     public float floatValue() {
194*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
195*795d594fSAndroid Build Coastguard Worker   //     }
196*795d594fSAndroid Build Coastguard Worker   //     public double doubleValue() {
197*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
198*795d594fSAndroid Build Coastguard Worker   //     }
199*795d594fSAndroid Build Coastguard Worker   //     public int hashCode() {
200*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
201*795d594fSAndroid Build Coastguard Worker   //     }
202*795d594fSAndroid Build Coastguard Worker   //     public static int hashCode(long value) {
203*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
204*795d594fSAndroid Build Coastguard Worker   //     }
205*795d594fSAndroid Build Coastguard Worker   //     public boolean equals(Object obj) {
206*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
207*795d594fSAndroid Build Coastguard Worker   //     }
208*795d594fSAndroid Build Coastguard Worker   //     public static Long getLong(String nm) {
209*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
210*795d594fSAndroid Build Coastguard Worker   //     }
211*795d594fSAndroid Build Coastguard Worker   //     public static Long getLong(String nm, long val) {
212*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
213*795d594fSAndroid Build Coastguard Worker   //     }
214*795d594fSAndroid Build Coastguard Worker   //     public static Long getLong(String nm, Long val) {
215*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
216*795d594fSAndroid Build Coastguard Worker   //     }
217*795d594fSAndroid Build Coastguard Worker   //     public int compareTo(Long anotherLong) {
218*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
219*795d594fSAndroid Build Coastguard Worker   //     }
220*795d594fSAndroid Build Coastguard Worker   //     public static int compare(long x, long y) {
221*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
222*795d594fSAndroid Build Coastguard Worker   //     }
223*795d594fSAndroid Build Coastguard Worker   //     public static int compareUnsigned(long x, long y) {
224*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
225*795d594fSAndroid Build Coastguard Worker   //     }
226*795d594fSAndroid Build Coastguard Worker   //     public static long divideUnsigned(long dividend, long divisor) {
227*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
228*795d594fSAndroid Build Coastguard Worker   //     }
229*795d594fSAndroid Build Coastguard Worker   //     public static long remainderUnsigned(long dividend, long divisor) {
230*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
231*795d594fSAndroid Build Coastguard Worker   //     }
232*795d594fSAndroid Build Coastguard Worker   //     public static final int SIZE = 64;
233*795d594fSAndroid Build Coastguard Worker   //     public static final int BYTES = SIZE / Byte.SIZE;
234*795d594fSAndroid Build Coastguard Worker   //     public static long max(long a, long b) {
235*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
236*795d594fSAndroid Build Coastguard Worker   //     }
237*795d594fSAndroid Build Coastguard Worker   //     public static long min(long a, long b) {
238*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
239*795d594fSAndroid Build Coastguard Worker   //     }
240*795d594fSAndroid Build Coastguard Worker   //     private static final long serialVersionUID = 0;
241*795d594fSAndroid Build Coastguard Worker   //
242*795d594fSAndroid Build Coastguard Worker   //     /** @hide */
243*795d594fSAndroid Build Coastguard Worker   //     @Override
244*795d594fSAndroid Build Coastguard Worker   //     public Optional<? extends ConstantDesc> describeConstable() {
245*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
246*795d594fSAndroid Build Coastguard Worker   //     }
247*795d594fSAndroid Build Coastguard Worker   //
248*795d594fSAndroid Build Coastguard Worker   //     /** @hide */
249*795d594fSAndroid Build Coastguard Worker   //     @Override
250*795d594fSAndroid Build Coastguard Worker   //     public Long resolveConstantDesc(MethodHandles.Lookup lookup) {
251*795d594fSAndroid Build Coastguard Worker   //       throw new Error("Method redefined away!");
252*795d594fSAndroid Build Coastguard Worker   //     }
253*795d594fSAndroid Build Coastguard Worker   // }
254*795d594fSAndroid Build Coastguard Worker   private static final byte[] CLASS_BYTES = Base64.getDecoder().decode(
255*795d594fSAndroid Build Coastguard Worker     "yv66vgAAAEEAyQcAAgEADmphdmEvbGFuZy9Mb25nBwAEAQAOamF2YS9sYW5nL0J5dGUKAAYABwcA" +
256*795d594fSAndroid Build Coastguard Worker     "CAwACQAKAQAQamF2YS9sYW5nL051bWJlcgEABjxpbml0PgEAAygpVgkAAQAMDAANAA4BAAV2YWx1" +
257*795d594fSAndroid Build Coastguard Worker     "ZQEAAUoKAAEAEAwACQARAQAEKEopVgUAAAAAAAAACgX//////////wcAFwEAF2phdmEvbGFuZy9T" +
258*795d594fSAndroid Build Coastguard Worker     "dHJpbmdCdWlsZGVyCgAWAAcIABoBACJSZWRlZmluZWQgTG9uZyEgdmFsdWUgKGFzIGRvdWJsZSk9" +
259*795d594fSAndroid Build Coastguard Worker     "CgAWABwMAB0AHgEABmFwcGVuZAEALShMamF2YS9sYW5nL1N0cmluZzspTGphdmEvbGFuZy9TdHJp" +
260*795d594fSAndroid Build Coastguard Worker     "bmdCdWlsZGVyOwoAFgAgDAAdACEBABwoRClMamF2YS9sYW5nL1N0cmluZ0J1aWxkZXI7CgAWACMM" +
261*795d594fSAndroid Build Coastguard Worker     "ACQAJQEACHRvU3RyaW5nAQAUKClMamF2YS9sYW5nL1N0cmluZzsHACcBAA9qYXZhL2xhbmcvRXJy" +
262*795d594fSAndroid Build Coastguard Worker     "b3IIACkBABZNZXRob2QgcmVkZWZpbmVkIGF3YXkhCgAmACsMAAkALAEAFShMamF2YS9sYW5nL1N0" +
263*795d594fSAndroid Build Coastguard Worker     "cmluZzspVgoAAQAuDAAvADABAAljb21wYXJlVG8BABMoTGphdmEvbGFuZy9Mb25nOylJCgABADIM" +
264*795d594fSAndroid Build Coastguard Worker     "ADMANAEAE3Jlc29sdmVDb25zdGFudERlc2MBADkoTGphdmEvbGFuZy9pbnZva2UvTWV0aG9kSGFu" +
265*795d594fSAndroid Build Coastguard Worker     "ZGxlcyRMb29rdXA7KUxqYXZhL2xhbmcvTG9uZzsJAAEANgwANwA4AQAEVFlQRQEAEUxqYXZhL2xh" +
266*795d594fSAndroid Build Coastguard Worker     "bmcvQ2xhc3M7BwA6AQAUamF2YS9sYW5nL0NvbXBhcmFibGUHADwBABxqYXZhL2xhbmcvY29uc3Rh" +
267*795d594fSAndroid Build Coastguard Worker     "bnQvQ29uc3RhYmxlBwA+AQAfamF2YS9sYW5nL2NvbnN0YW50L0NvbnN0YW50RGVzYwEACU1JTl9W" +
268*795d594fSAndroid Build Coastguard Worker     "QUxVRQEADUNvbnN0YW50VmFsdWUFAAAAAAAAAAABAAlNQVhfVkFMVUUBAAlTaWduYXR1cmUBACNM" +
269*795d594fSAndroid Build Coastguard Worker     "amF2YS9sYW5nL0NsYXNzPExqYXZhL2xhbmcvTG9uZzs+OwEABFNJWkUBAAFJAwAAAEABAAVCWVRF" +
270*795d594fSAndroid Build Coastguard Worker     "UwMAAAAIAQAQc2VyaWFsVmVyc2lvblVJRAEAA3N1bQEABShKSilKAQAEQ29kZQEAD0xpbmVOdW1i" +
271*795d594fSAndroid Build Coastguard Worker     "ZXJUYWJsZQEAEkxvY2FsVmFyaWFibGVUYWJsZQEAAWEBAAFiAQAEdGhpcwEAEExqYXZhL2xhbmcv" +
272*795d594fSAndroid Build Coastguard Worker     "TG9uZzsBAAd2YWx1ZU9mAQATKEopTGphdmEvbGFuZy9Mb25nOwEAAWwBAA1oaWdoZXN0T25lQml0" +
273*795d594fSAndroid Build Coastguard Worker     "AQAEKEopSgEAAWkBAAxsb3dlc3RPbmVCaXQBABRudW1iZXJPZkxlYWRpbmdaZXJvcwEABChKKUkB" +
274*795d594fSAndroid Build Coastguard Worker     "ABVudW1iZXJPZlRyYWlsaW5nWmVyb3MBAAhiaXRDb3VudAEACnJvdGF0ZUxlZnQBAAUoSkkpSgEA" +
275*795d594fSAndroid Build Coastguard Worker     "CGRpc3RhbmNlAQALcm90YXRlUmlnaHQBAAdyZXZlcnNlAQAIY29tcHJlc3MBAARtYXNrAQAGZXhw" +
276*795d594fSAndroid Build Coastguard Worker     "YW5kAQAOcGFyYWxsZWxTdWZmaXgBAAltYXNrQ291bnQBAAZzaWdudW0BAAxyZXZlcnNlQnl0ZXMB" +
277*795d594fSAndroid Build Coastguard Worker     "ABYoSkkpTGphdmEvbGFuZy9TdHJpbmc7AQAFcmFkaXgBABB0b1Vuc2lnbmVkU3RyaW5nAQAUdG9V" +
278*795d594fSAndroid Build Coastguard Worker     "bnNpZ25lZEJpZ0ludGVnZXIBABkoSilMamF2YS9tYXRoL0JpZ0ludGVnZXI7AQALdG9IZXhTdHJp" +
279*795d594fSAndroid Build Coastguard Worker     "bmcBABUoSilMamF2YS9sYW5nL1N0cmluZzsBAA10b09jdGFsU3RyaW5nAQAOdG9CaW5hcnlTdHJp" +
280*795d594fSAndroid Build Coastguard Worker     "bmcBABF0b1Vuc2lnbmVkU3RyaW5nMAEAA3ZhbAEABXNoaWZ0AQATZm9ybWF0VW5zaWduZWRMb25n" +
281*795d594fSAndroid Build Coastguard Worker     "MAEACShKSVtCSUkpVgEAA2J1ZgEAAltCAQAGb2Zmc2V0AQADbGVuAQAIZ2V0Q2hhcnMBAAcoSklb" +
282*795d594fSAndroid Build Coastguard Worker     "QilJAQAFaW5kZXgBAAcoSklbQylJAQACW0MBAApzdHJpbmdTaXplAQABeAEACXBhcnNlTG9uZwEA" +
283*795d594fSAndroid Build Coastguard Worker     "FihMamF2YS9sYW5nL1N0cmluZztJKUoBAAFzAQASTGphdmEvbGFuZy9TdHJpbmc7AQAKRXhjZXB0" +
284*795d594fSAndroid Build Coastguard Worker     "aW9ucwcAiwEAH2phdmEvbGFuZy9OdW1iZXJGb3JtYXRFeGNlcHRpb24BABUoTGphdmEvbGFuZy9T" +
285*795d594fSAndroid Build Coastguard Worker     "dHJpbmc7KUoBAB4oTGphdmEvbGFuZy9DaGFyU2VxdWVuY2U7SUlJKUoBABhMamF2YS9sYW5nL0No" +
286*795d594fSAndroid Build Coastguard Worker     "YXJTZXF1ZW5jZTsBAApiZWdpbkluZGV4AQAIZW5kSW5kZXgBABFwYXJzZVVuc2lnbmVkTG9uZwEA" +
287*795d594fSAndroid Build Coastguard Worker     "JShMamF2YS9sYW5nL1N0cmluZztJKUxqYXZhL2xhbmcvTG9uZzsBACQoTGphdmEvbGFuZy9TdHJp" +
288*795d594fSAndroid Build Coastguard Worker     "bmc7KUxqYXZhL2xhbmcvTG9uZzsBAAZkZWNvZGUBAAJubQEACWJ5dGVWYWx1ZQEAAygpQgEACnNo" +
289*795d594fSAndroid Build Coastguard Worker     "b3J0VmFsdWUBAAMoKVMBAAhpbnRWYWx1ZQEAAygpSQEACWxvbmdWYWx1ZQEAAygpSgEACmZsb2F0" +
290*795d594fSAndroid Build Coastguard Worker     "VmFsdWUBAAMoKUYBAAtkb3VibGVWYWx1ZQEAAygpRAEACGhhc2hDb2RlAQAGZXF1YWxzAQAVKExq" +
291*795d594fSAndroid Build Coastguard Worker     "YXZhL2xhbmcvT2JqZWN0OylaAQADb2JqAQASTGphdmEvbGFuZy9PYmplY3Q7AQAHZ2V0TG9uZwEA" +
292*795d594fSAndroid Build Coastguard Worker     "JShMamF2YS9sYW5nL1N0cmluZztKKUxqYXZhL2xhbmcvTG9uZzsBADQoTGphdmEvbGFuZy9TdHJp" +
293*795d594fSAndroid Build Coastguard Worker     "bmc7TGphdmEvbGFuZy9Mb25nOylMamF2YS9sYW5nL0xvbmc7AQALYW5vdGhlckxvbmcBAAdjb21w" +
294*795d594fSAndroid Build Coastguard Worker     "YXJlAQAFKEpKKUkBAAF5AQAPY29tcGFyZVVuc2lnbmVkAQAOZGl2aWRlVW5zaWduZWQBAAhkaXZp" +
295*795d594fSAndroid Build Coastguard Worker     "ZGVuZAEAB2Rpdmlzb3IBABFyZW1haW5kZXJVbnNpZ25lZAEAA21heAEAA21pbgEAEWRlc2NyaWJl" +
296*795d594fSAndroid Build Coastguard Worker     "Q29uc3RhYmxlAQAWKClMamF2YS91dGlsL09wdGlvbmFsOwEAOigpTGphdmEvdXRpbC9PcHRpb25h" +
297*795d594fSAndroid Build Coastguard Worker     "bDwrTGphdmEvbGFuZy9jb25zdGFudC9Db25zdGFudERlc2M7PjsBAAZsb29rdXABACdMamF2YS9s" +
298*795d594fSAndroid Build Coastguard Worker     "YW5nL2ludm9rZS9NZXRob2RIYW5kbGVzJExvb2t1cDsBABUoTGphdmEvbGFuZy9PYmplY3Q7KUkB" +
299*795d594fSAndroid Build Coastguard Worker     "ABBNZXRob2RQYXJhbWV0ZXJzAQA7KExqYXZhL2xhbmcvaW52b2tlL01ldGhvZEhhbmRsZXMkTG9v" +
300*795d594fSAndroid Build Coastguard Worker     "a3VwOylMamF2YS9sYW5nL09iamVjdDsHAL4BACZqYXZhL2xhbmcvUmVmbGVjdGl2ZU9wZXJhdGlv" +
301*795d594fSAndroid Build Coastguard Worker     "bkV4Y2VwdGlvbgEACDxjbGluaXQ+AQB5TGphdmEvbGFuZy9OdW1iZXI7TGphdmEvbGFuZy9Db21w" +
302*795d594fSAndroid Build Coastguard Worker     "YXJhYmxlPExqYXZhL2xhbmcvTG9uZzs+O0xqYXZhL2xhbmcvY29uc3RhbnQvQ29uc3RhYmxlO0xq" +
303*795d594fSAndroid Build Coastguard Worker     "YXZhL2xhbmcvY29uc3RhbnQvQ29uc3RhbnREZXNjOwEAClNvdXJjZUZpbGUBAAlMb25nLmphdmEB" +
304*795d594fSAndroid Build Coastguard Worker     "AAxJbm5lckNsYXNzZXMHAMUBACVqYXZhL2xhbmcvaW52b2tlL01ldGhvZEhhbmRsZXMkTG9va3Vw" +
305*795d594fSAndroid Build Coastguard Worker     "BwDHAQAeamF2YS9sYW5nL2ludm9rZS9NZXRob2RIYW5kbGVzAQAGTG9va3VwADEAAQAGAAMAOQA7" +
306*795d594fSAndroid Build Coastguard Worker     "AD0ABwAZAD8ADgABAEAAAAACAEEAGQBDAA4AAQBAAAAAAgBBABkANwA4AAEARAAAAAIARQASAA0A" +
307*795d594fSAndroid Build Coastguard Worker     "DgAAABkARgBHAAEAQAAAAAIASAAZAEkARwABAEAAAAACAEoAGgBLAA4AAQBAAAAAAgBBAEAACQBM" +
308*795d594fSAndroid Build Coastguard Worker     "AE0AAQBOAAAAOAAEAAQAAAAEHiBhrQAAAAIATwAAAAYAAQAAAA8AUAAAABYAAgAAAAQAUQAOAAAA" +
309*795d594fSAndroid Build Coastguard Worker     "AAAEAFIADgACAAEACQARAAEATgAAAEYAAwADAAAACiq3AAUqH7UAC7EAAAACAE8AAAAOAAMAAAAS" +
310*795d594fSAndroid Build Coastguard Worker     "AAQAEwAJABQAUAAAABYAAgAAAAoAUwBUAAAAAAAKAA0ADgABAAkAVQBWAAEATgAAADMABAACAAAA" +
311*795d594fSAndroid Build Coastguard Worker     "CbsAAVketwAPsAAAAAIATwAAAAYAAQAAABcAUAAAAAwAAQAAAAkAVwAOAAAACQBYAFkAAQBOAAAA" +
312*795d594fSAndroid Build Coastguard Worker     "LgAEAAIAAAAEHgphrQAAAAIATwAAAAYAAQAAABsAUAAAAAwAAQAAAAQAWgAOAAAACQBbAFkAAQBO" +
313*795d594fSAndroid Build Coastguard Worker     "AAAALgAEAAIAAAAEHgplrQAAAAIATwAAAAYAAQAAAB8AUAAAAAwAAQAAAAQAWgAOAAAACQBcAF0A" +
314*795d594fSAndroid Build Coastguard Worker     "AQBOAAAALwAEAAIAAAAFHh5hiKwAAAACAE8AAAAGAAEAAAAjAFAAAAAMAAEAAAAFAFoADgAAAAkA" +
315*795d594fSAndroid Build Coastguard Worker     "XgBdAAEATgAAADEABQACAAAABx4eBH1/iKwAAAACAE8AAAAGAAEAAAAnAFAAAAAMAAEAAAAHAFoA" +
316*795d594fSAndroid Build Coastguard Worker     "DgAAAAkAXwBdAAEATgAAACwAAQACAAAAAgisAAAAAgBPAAAABgABAAAAKwBQAAAADAABAAAAAgBa" +
317*795d594fSAndroid Build Coastguard Worker     "AA4AAAAJAGAAYQABAE4AAAA2AAIAAwAAAAIerQAAAAIATwAAAAYAAQAAAC8AUAAAABYAAgAAAAIA" +
318*795d594fSAndroid Build Coastguard Worker     "WgAOAAAAAAACAGIARwACAAkAYwBhAAEATgAAADoABAADAAAABhQAEh5prQAAAAIATwAAAAYAAQAA" +
319*795d594fSAndroid Build Coastguard Worker     "ADMAUAAAABYAAgAAAAYAWgAOAAAAAAAGAGIARwACAAkAZABZAAEATgAAAC0AAgACAAAAAx51rQAA" +
320*795d594fSAndroid Build Coastguard Worker     "AAIATwAAAAYAAQAAADcAUAAAAAwAAQAAAAMAWgAOAAAACQBlAE0AAQBOAAAAOAACAAQAAAAEFAAU" +
321*795d594fSAndroid Build Coastguard Worker     "rQAAAAIATwAAAAYAAQAAADsAUAAAABYAAgAAAAQAWgAOAAAAAAAEAGYADgACAAkAZwBNAAEATgAA" +
322*795d594fSAndroid Build Coastguard Worker     "ADgAAgAEAAAABBQAFK0AAAACAE8AAAAGAAEAAAA/AFAAAAAWAAIAAAAEAFoADgAAAAAABABmAA4A" +
323*795d594fSAndroid Build Coastguard Worker     "AgAKAGgAWQABAE4AAAAsAAIAAgAAAAIJrQAAAAIATwAAAAYAAQAAAEIAUAAAAAwAAQAAAAIAaQAO" +
324*795d594fSAndroid Build Coastguard Worker     "AAAACQBqAF0AAQBOAAAALAABAAIAAAACA6wAAAACAE8AAAAGAAEAAABGAFAAAAAMAAEAAAACAFoA" +
325*795d594fSAndroid Build Coastguard Worker     "DgAAAAkAawBZAAEATgAAACwAAgACAAAAAgmtAAAAAgBPAAAABgABAAAASgBQAAAADAABAAAAAgBa" +
326*795d594fSAndroid Build Coastguard Worker     "AA4AAAABACQAJQABAE4AAABCAAMAAQAAABi7ABZZtwAYEhm2ABsqtAALirYAH7YAIrAAAAACAE8A" +
327*795d594fSAndroid Build Coastguard Worker     "AAAGAAEAAABNAFAAAAAMAAEAAAAYAFMAVAAAAAkAJABsAAEATgAAAD4AAwADAAAACrsAJlkSKLcA" +
328*795d594fSAndroid Build Coastguard Worker     "Kr8AAAACAE8AAAAGAAEAAABQAFAAAAAWAAIAAAAKAFoADgAAAAAACgBtAEcAAgAJAG4AbAABAE4A" +
329*795d594fSAndroid Build Coastguard Worker     "AAA+AAMAAwAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAUwBQAAAAFgACAAAACgBaAA4AAAAA" +
330*795d594fSAndroid Build Coastguard Worker     "AAoAbQBHAAIACgBvAHAAAQBOAAAANAADAAIAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAFYA" +
331*795d594fSAndroid Build Coastguard Worker     "UAAAAAwAAQAAAAoAWgAOAAAACQBxAHIAAQBOAAAANAADAAIAAAAKuwAmWRIotwAqvwAAAAIATwAA" +
332*795d594fSAndroid Build Coastguard Worker     "AAYAAQAAAFkAUAAAAAwAAQAAAAoAWgAOAAAACQBzAHIAAQBOAAAANAADAAIAAAAKuwAmWRIotwAq" +
333*795d594fSAndroid Build Coastguard Worker     "vwAAAAIATwAAAAYAAQAAAFwAUAAAAAwAAQAAAAoAWgAOAAAACQB0AHIAAQBOAAAANAADAAIAAAAK" +
334*795d594fSAndroid Build Coastguard Worker     "uwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAF8AUAAAAAwAAQAAAAoAWgAOAAAACAB1AGwAAQBOAAAA" +
335*795d594fSAndroid Build Coastguard Worker     "PgADAAMAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAGIAUAAAABYAAgAAAAoAdgAOAAAAAAAK" +
336*795d594fSAndroid Build Coastguard Worker     "AHcARwACAAgAeAB5AAEATgAAAFwAAwAGAAAACrsAJlkSKLcAKr8AAAACAE8AAAAGAAEAAABlAFAA" +
337*795d594fSAndroid Build Coastguard Worker     "AAA0AAUAAAAKAHYADgAAAAAACgB3AEcAAgAAAAoAegB7AAMAAAAKAHwARwAEAAAACgB9AEcABQAJ" +
338*795d594fSAndroid Build Coastguard Worker     "ACQAcgABAE4AAAA0AAMAAgAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAaABQAAAADAABAAAA" +
339*795d594fSAndroid Build Coastguard Worker     "CgBaAA4AAAAJAG4AcgABAE4AAAA0AAMAAgAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAawBQ" +
340*795d594fSAndroid Build Coastguard Worker     "AAAADAABAAAACgBaAA4AAAAIAH4AfwABAE4AAABIAAMABAAAAAq7ACZZEii3ACq/AAAAAgBPAAAA" +
341*795d594fSAndroid Build Coastguard Worker     "BgABAAAAbgBQAAAAIAADAAAACgBaAA4AAAAAAAoAgABHAAIAAAAKAHoAewADAAgAfgCBAAEATgAA" +
342*795d594fSAndroid Build Coastguard Worker     "AEgAAwAEAAAACrsAJlkSKLcAKr8AAAACAE8AAAAGAAEAAABxAFAAAAAgAAMAAAAKAFoADgAAAAAA" +
343*795d594fSAndroid Build Coastguard Worker     "CgCAAEcAAgAAAAoAegCCAAMACACDAF0AAQBOAAAANAADAAIAAAAKuwAmWRIotwAqvwAAAAIATwAA" +
344*795d594fSAndroid Build Coastguard Worker     "AAYAAQAAAHQAUAAAAAwAAQAAAAoAhAAOAAAACQCFAIYAAgBOAAAAPgADAAIAAAAKuwAmWRIotwAq" +
345*795d594fSAndroid Build Coastguard Worker     "vwAAAAIATwAAAAYAAQAAAHcAUAAAABYAAgAAAAoAhwCIAAAAAAAKAG0ARwABAIkAAAAEAAEAigAJ" +
346*795d594fSAndroid Build Coastguard Worker     "AIUAjAACAE4AAAA0AAMAAQAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAegBQAAAADAABAAAA" +
347*795d594fSAndroid Build Coastguard Worker     "CgCHAIgAAACJAAAABAABAIoACQCFAI0AAgBOAAAAUgADAAQAAAAKuwAmWRIotwAqvwAAAAIATwAA" +
348*795d594fSAndroid Build Coastguard Worker     "AAYAAQAAAH0AUAAAACoABAAAAAoAhwCOAAAAAAAKAI8ARwABAAAACgCQAEcAAgAAAAoAbQBHAAMA" +
349*795d594fSAndroid Build Coastguard Worker     "iQAAAAQAAQCKAAkAkQCGAAIATgAAAD4AAwACAAAACrsAJlkSKLcAKr8AAAACAE8AAAAGAAEAAACA" +
350*795d594fSAndroid Build Coastguard Worker     "AFAAAAAWAAIAAAAKAIcAiAAAAAAACgBtAEcAAQCJAAAABAABAIoACQCRAIwAAgBOAAAANAADAAEA" +
351*795d594fSAndroid Build Coastguard Worker     "AAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAIMAUAAAAAwAAQAAAAoAhwCIAAAAiQAAAAQAAQCK" +
352*795d594fSAndroid Build Coastguard Worker     "AAkAkQCNAAIATgAAAFIAAwAEAAAACrsAJlkSKLcAKr8AAAACAE8AAAAGAAEAAACGAFAAAAAqAAQA" +
353*795d594fSAndroid Build Coastguard Worker     "AAAKAIcAjgAAAAAACgCPAEcAAQAAAAoAkABHAAIAAAAKAG0ARwADAIkAAAAEAAEAigAJAFUAkgAC" +
354*795d594fSAndroid Build Coastguard Worker     "AE4AAAA+AAMAAgAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAiQBQAAAAFgACAAAACgCHAIgA" +
355*795d594fSAndroid Build Coastguard Worker     "AAAAAAoAbQBHAAEAiQAAAAQAAQCKAAkAVQCTAAIATgAAADQAAwABAAAACrsAJlkSKLcAKr8AAAAC" +
356*795d594fSAndroid Build Coastguard Worker     "AE8AAAAGAAEAAACMAFAAAAAMAAEAAAAKAIcAiAAAAIkAAAAEAAEAigAJAJQAkwACAE4AAAA0AAMA" +
357*795d594fSAndroid Build Coastguard Worker     "AQAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAjwBQAAAADAABAAAACgCVAIgAAACJAAAABAAB" +
358*795d594fSAndroid Build Coastguard Worker     "AIoAAQAJACwAAgBOAAAARwADAAIAAAAPKgm3AA+7ACZZEii3ACq/AAAAAgBPAAAACgACAAAAkwAF" +
359*795d594fSAndroid Build Coastguard Worker     "AJQAUAAAABYAAgAAAA8AUwBUAAAAAAAPAIcAiAABAIkAAAAEAAEAigABAJYAlwABAE4AAAA0AAMA" +
360*795d594fSAndroid Build Coastguard Worker     "AQAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAlwBQAAAADAABAAAACgBTAFQAAAABAJgAmQAB" +
361*795d594fSAndroid Build Coastguard Worker     "AE4AAAA0AAMAAQAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAmgBQAAAADAABAAAACgBTAFQA" +
362*795d594fSAndroid Build Coastguard Worker     "AAABAJoAmwABAE4AAAA0AAMAAQAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAnQBQAAAADAAB" +
363*795d594fSAndroid Build Coastguard Worker     "AAAACgBTAFQAAAABAJwAnQABAE4AAAAvAAIAAQAAAAUqtAALrQAAAAIATwAAAAYAAQAAAKAAUAAA" +
364*795d594fSAndroid Build Coastguard Worker     "AAwAAQAAAAUAUwBUAAAAAQCeAJ8AAQBOAAAANAADAAEAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYA" +
365*795d594fSAndroid Build Coastguard Worker     "AQAAAKMAUAAAAAwAAQAAAAoAUwBUAAAAAQCgAKEAAQBOAAAANAADAAEAAAAKuwAmWRIotwAqvwAA" +
366*795d594fSAndroid Build Coastguard Worker     "AAIATwAAAAYAAQAAAKYAUAAAAAwAAQAAAAoAUwBUAAAAAQCiAJsAAQBOAAAANAADAAEAAAAKuwAm" +
367*795d594fSAndroid Build Coastguard Worker     "WRIotwAqvwAAAAIATwAAAAYAAQAAAKkAUAAAAAwAAQAAAAoAUwBUAAAACQCiAF0AAQBOAAAANAAD" +
368*795d594fSAndroid Build Coastguard Worker     "AAIAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAKwAUAAAAAwAAQAAAAoADQAOAAAAAQCjAKQA" +
369*795d594fSAndroid Build Coastguard Worker     "AQBOAAAAPgADAAIAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAK8AUAAAABYAAgAAAAoAUwBU" +
370*795d594fSAndroid Build Coastguard Worker     "AAAAAAAKAKUApgABAAkApwCTAAEATgAAADQAAwABAAAACrsAJlkSKLcAKr8AAAACAE8AAAAGAAEA" +
371*795d594fSAndroid Build Coastguard Worker     "AACyAFAAAAAMAAEAAAAKAJUAiAAAAAkApwCoAAEATgAAAD4AAwADAAAACrsAJlkSKLcAKr8AAAAC" +
372*795d594fSAndroid Build Coastguard Worker     "AE8AAAAGAAEAAAC1AFAAAAAWAAIAAAAKAJUAiAAAAAAACgB2AA4AAQAJAKcAqQABAE4AAAA+AAMA" +
373*795d594fSAndroid Build Coastguard Worker     "AgAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAuABQAAAAFgACAAAACgCVAIgAAAAAAAoAdgBU" +
374*795d594fSAndroid Build Coastguard Worker     "AAEAAQAvADAAAQBOAAAAPgADAAIAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAALsAUAAAABYA" +
375*795d594fSAndroid Build Coastguard Worker     "AgAAAAoAUwBUAAAAAAAKAKoAVAABAAkAqwCsAAEATgAAAD4AAwAEAAAACrsAJlkSKLcAKr8AAAAC" +
376*795d594fSAndroid Build Coastguard Worker     "AE8AAAAGAAEAAAC+AFAAAAAWAAIAAAAKAIQADgAAAAAACgCtAA4AAgAJAK4ArAABAE4AAAA+AAMA" +
377*795d594fSAndroid Build Coastguard Worker     "BAAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAwQBQAAAAFgACAAAACgCEAA4AAAAAAAoArQAO" +
378*795d594fSAndroid Build Coastguard Worker     "AAIACQCvAE0AAQBOAAAAPgADAAQAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAMQAUAAAABYA" +
379*795d594fSAndroid Build Coastguard Worker     "AgAAAAoAsAAOAAAAAAAKALEADgACAAkAsgBNAAEATgAAAD4AAwAEAAAACrsAJlkSKLcAKr8AAAAC" +
380*795d594fSAndroid Build Coastguard Worker     "AE8AAAAGAAEAAADHAFAAAAAWAAIAAAAKALAADgAAAAAACgCxAA4AAgAJALMATQABAE4AAAA+AAMA" +
381*795d594fSAndroid Build Coastguard Worker     "BAAAAAq7ACZZEii3ACq/AAAAAgBPAAAABgABAAAAzABQAAAAFgACAAAACgBRAA4AAAAAAAoAUgAO" +
382*795d594fSAndroid Build Coastguard Worker     "AAIACQC0AE0AAQBOAAAAPgADAAQAAAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAAM8AUAAAABYA" +
383*795d594fSAndroid Build Coastguard Worker     "AgAAAAoAUQAOAAAAAAAKAFIADgACAAEAtQC2AAIATgAAADQAAwABAAAACrsAJlkSKLcAKr8AAAAC" +
384*795d594fSAndroid Build Coastguard Worker     "AE8AAAAGAAEAAADWAFAAAAAMAAEAAAAKAFMAVAAAAEQAAAACALcAAQAzADQAAQBOAAAAPgADAAIA" +
385*795d594fSAndroid Build Coastguard Worker     "AAAKuwAmWRIotwAqvwAAAAIATwAAAAYAAQAAANwAUAAAABYAAgAAAAoAUwBUAAAAAAAKALgAuQAB" +
386*795d594fSAndroid Build Coastguard Worker     "EEEALwC6AAIATgAAADMAAgACAAAACSorwAABtgAtrAAAAAIATwAAAAYAAQAAAAgAUAAAAAwAAQAA" +
387*795d594fSAndroid Build Coastguard Worker     "AAkAUwBUAAAAuwAAAAUBAAAQABBBADMAvAADAE4AAAAwAAIAAgAAAAYqK7YAMbAAAAACAE8AAAAG" +
388*795d594fSAndroid Build Coastguard Worker     "AAEAAAAIAFAAAAAMAAEAAAAGAFMAVAAAAIkAAAAEAAEAvQC7AAAABQEAABAAAAgAvwAKAAEATgAA" +
389*795d594fSAndroid Build Coastguard Worker     "ACEAAQAAAAAABQGzADWxAAAAAQBPAAAACgACAAAACwAEAAwAAwBEAAAAAgDAAMEAAAACAMIAwwAA" +
390*795d594fSAndroid Build Coastguard Worker     "AAoAAQDEAMYAyAAZ");
391*795d594fSAndroid Build Coastguard Worker 
392*795d594fSAndroid Build Coastguard Worker   private static final byte[] DEX_BYTES = Base64.getDecoder().decode(
393*795d594fSAndroid Build Coastguard Worker     "ZGV4CjAzNQCwD214dMo0Mvrm3e2vDCfqFcx5GioGfBxEGwAAcAAAAHhWNBIAAAAAAAAAAHQaAACQ" +
394*795d594fSAndroid Build Coastguard Worker     "AAAAcAAAAB0AAACwAgAAJQAAACQDAAAHAAAA4AQAAEYAAAAYBQAAAQAAAEgHAADcEwAAaAcAABoR" +
395*795d594fSAndroid Build Coastguard Worker     "AAAeEQAAIREAACsRAAAzEQAANxEAADoRAABBEQAARBEAAEcRAABKEQAAThEAAFQRAABZEQAAXREA" +
396*795d594fSAndroid Build Coastguard Worker     "AGARAABkEQAAaREAAG4RAAByEQAAdxEAAH4RAACBEQAAhREAAIkRAACOEQAAkhEAAJcRAACcEQAA" +
397*795d594fSAndroid Build Coastguard Worker     "oREAAMcRAADmEQAAAhIAABwSAAAvEgAAQhIAAFoSAAByEgAAhRIAAJcSAACrEgAAzhIAAOISAAAM" +
398*795d594fSAndroid Build Coastguard Worker     "EwAAIBMAADsTAABbEwAAfhMAAKcTAAC/EwAA1RMAAOsTAAD2EwAAARQAAAwUAAAkFAAASBQAAEsU" +
399*795d594fSAndroid Build Coastguard Worker     "AABRFAAAVxQAAFoUAABeFAAAZhQAAGoUAABtFAAAcRQAAHUUAAB5FAAAfBQAAIkUAACWFAAAnhQA" +
400*795d594fSAndroid Build Coastguard Worker     "AKEUAACtFAAAtxQAALwUAADHFAAA0BQAANsUAADsFAAA9hQAAP4UAAARFQAAGxUAACsVAAA1FQAA" +
401*795d594fSAndroid Build Coastguard Worker     "PhUAAEsVAABVFQAAXRUAAGUVAABxFQAAhhUAAJAVAACZFQAAoxUAALIVAAC1FQAAvBUAAMYVAADJ" +
402*795d594fSAndroid Build Coastguard Worker     "FQAAzhUAANkVAADhFQAA7xUAAPUVAAAAFgAABRYAAAoWAAARFgAAFRYAACsWAABCFgAARxYAAE8W" +
403*795d594fSAndroid Build Coastguard Worker     "AABfFgAAahYAAH0WAACEFgAAlxYAAKwWAAC1FgAAwxYAAM8WAADcFgAA3xYAAPEWAAD4FgAABBcA" +
404*795d594fSAndroid Build Coastguard Worker     "AAwXAAAYFwAAHRcAAC0XAAA6FwAASRcAAFMXAABpFwAAexcAAI4XAACTFwAAmhcAAKMXAACmFwAA" +
405*795d594fSAndroid Build Coastguard Worker     "qRcAAAUAAAAHAAAACAAAAAkAAAAOAAAAHQAAAB4AAAAfAAAAIAAAACEAAAAjAAAAJQAAACYAAAAn" +
406*795d594fSAndroid Build Coastguard Worker     "AAAAKAAAACkAAAAqAAAAKwAAACwAAAAtAAAALgAAAC8AAAAwAAAAMQAAADgAAAA7AAAAPwAAAEEA" +
407*795d594fSAndroid Build Coastguard Worker     "AABCAAAABQAAAAAAAAAAAAAABwAAAAEAAAAAAAAACAAAAAIAAAAAAAAACQAAAAMAAAAAAAAACgAA" +
408*795d594fSAndroid Build Coastguard Worker     "AAMAAACQEAAACwAAAAMAAACYEAAACwAAAAMAAACkEAAADAAAAAMAAACwEAAADQAAAAMAAAC4EAAA" +
409*795d594fSAndroid Build Coastguard Worker     "DQAAAAMAAADAEAAADgAAAAQAAAAAAAAADwAAAAQAAACQEAAAEAAAAAQAAADIEAAAEQAAAAQAAACw" +
410*795d594fSAndroid Build Coastguard Worker     "EAAAFAAAAAQAAADQEAAAEgAAAAQAAADcEAAAEwAAAAQAAADkEAAAFwAAAAwAAACQEAAAGQAAAAwA" +
411*795d594fSAndroid Build Coastguard Worker     "AADcEAAAGgAAAAwAAADkEAAAGwAAAAwAAADsEAAAHAAAAAwAAAD0EAAAGQAAAAwAAAD8EAAAGQAA" +
412*795d594fSAndroid Build Coastguard Worker     "AA8AAAD8EAAAFQAAABEAAAAAAAAAFwAAABEAAACQEAAAGAAAABEAAADIEAAAFgAAABIAAAAEEQAA" +
413*795d594fSAndroid Build Coastguard Worker     "GQAAABIAAADcEAAAFwAAABYAAACQEAAAFQAAABcAAAAAAAAAOAAAABgAAAAAAAAAOwAAABkAAAAA" +
414*795d594fSAndroid Build Coastguard Worker     "AAAAPAAAABkAAACQEAAAPQAAABkAAAAMEQAAPgAAABkAAADcEAAAQAAAABoAAADAEAAADAADAAYA" +
415*795d594fSAndroid Build Coastguard Worker     "AAAMAAQANAAAAAwABAA1AAAADAADADkAAAAMAAkAOgAAAAwABAB9AAAADAAEAIsAAAALACMAAwAA" +
416*795d594fSAndroid Build Coastguard Worker     "AAwAIAACAAAADAAhAAMAAAAMACMAAwAAAAwABABJAAAADAAAAEsAAAAMAAcATAAAAAwACABNAAAA" +
417*795d594fSAndroid Build Coastguard Worker     "DAAJAE0AAAAMAAcATgAAAAwADQBPAAAADAASAFAAAAAMAB4AUQAAAAwADQBTAAAADAABAFYAAAAM" +
418*795d594fSAndroid Build Coastguard Worker     "ACQAWAAAAAwADQBZAAAADAACAFoAAAAMACIAWwAAAAwABQBcAAAADAAGAFwAAAAMABIAXQAAAAwA" +
419*795d594fSAndroid Build Coastguard Worker     "FABdAAAADAAVAF0AAAAMAAMAXgAAAAwABABeAAAADAALAF8AAAAMAAMAYgAAAAwACgBlAAAADAAL" +
420*795d594fSAndroid Build Coastguard Worker     "AGcAAAAMAA0AagAAAAwADQBrAAAADAAEAG4AAAAMAAQAbwAAAAwACwByAAAADAAOAHMAAAAMAA8A" +
421*795d594fSAndroid Build Coastguard Worker     "cwAAAAwAEABzAAAADAAOAHQAAAAMAA8AdAAAAAwAEAB0AAAADAANAHYAAAAMABYAdwAAAAwAFwB3" +
422*795d594fSAndroid Build Coastguard Worker     "AAAADAALAHgAAAAMAAsAeQAAAAwADAB6AAAADAAMAHsAAAAMAB8AfwAAAAwABACAAAAADAAEAIEA" +
423*795d594fSAndroid Build Coastguard Worker     "AAAMAA0AggAAAAwAGQCDAAAADAAZAIQAAAAMABkAhQAAAAwAGACGAAAADAAZAIYAAAAMABoAhgAA" +
424*795d594fSAndroid Build Coastguard Worker     "AAwAHQCHAAAADAAZAIgAAAAMABoAiAAAAAwAGgCJAAAADAARAIwAAAAMABIAjAAAAAwAEwCMAAAA" +
425*795d594fSAndroid Build Coastguard Worker     "DQAgAAMAAAASACAAAwAAABIAGwBGAAAAEgAcAEYAAAASABgAhgAAAAwAAAARAAAADQAAAIQQAAAz" +
426*795d594fSAndroid Build Coastguard Worker     "AAAA9BkAAJcYAACxGQAABAACAAIAAAAEDwAACAAAACIACwAaATYAcCAAABAAJwADAAEAAgAAAAoP" +
427*795d594fSAndroid Build Coastguard Worker     "AAAIAAAAIgALABoBNgBwIAAAEAAnAAMAAQACAAAADw8AAAgAAAAiAAsAGgE2AHAgAAAQACcAAwAB" +
428*795d594fSAndroid Build Coastguard Worker     "AAIAAAAUDwAACAAAACIACwAaATYAcCAAABAAJwADAAIAAAAAABkPAAACAAAAElAPAAYABAACAAAA" +
429*795d594fSAndroid Build Coastguard Worker     "Hg8AAAgAAAAiAAsAGgE2AHAgAAAQACcABAACAAIAAAAnDwAACAAAACIACwAaATYAcCAAABAAJwAC" +
430*795d594fSAndroid Build Coastguard Worker     "AAIAAgAAAC0PAAAHAAAAHwEMAG4gBwAQAAoBDwEAAAYABAACAAAAMg8AAAgAAAAiAAsAGgE2AHAg" +
431*795d594fSAndroid Build Coastguard Worker     "AAAQACcABgAEAAIAAAA7DwAACAAAACIACwAaATYAcCAAABAAJwAGAAQAAgAAAEIPAAAIAAAAIgAL" +
432*795d594fSAndroid Build Coastguard Worker     "ABoBNgBwIAAAEAAnAAMAAQACAAAASQ8AAAgAAAAiAAsAGgE2AHAgAAAQACcABAACAAIAAABODwAA" +
433*795d594fSAndroid Build Coastguard Worker     "CAAAACIACwAaATYAcCAAABAAJwADAAEAAgAAAFUPAAAIAAAAIgALABoBNgBwIAAAEAAnAAQAAgAA" +
434*795d594fSAndroid Build Coastguard Worker     "AAAAWg8AAAQAAACbAAIChAEPAQQAAgAAAAAAXw8AAAYAAAASEKUAAgDAIIQBDwEDAAIAAAAAAGQP" +
435*795d594fSAndroid Build Coastguard Worker     "AAACAAAAEgAPAAQAAgACAAAAaQ8AAAgAAAAiAAsAGgE2AHAgAAAQACcAAwABAAIAAABvDwAACAAA" +
436*795d594fSAndroid Build Coastguard Worker     "ACIACwAaATYAcCAAABAAJwADAAEAAgAAAHUPAAAIAAAAIgALABoBNgBwIAAAEAAnAAQAAgACAAAA" +
437*795d594fSAndroid Build Coastguard Worker     "ew8AAAgAAAAiAAsAGgE2AHAgAAAQACcABQADAAIAAACDDwAACAAAACIACwAaATYAcCAAABAAJwAE" +
438*795d594fSAndroid Build Coastguard Worker     "AAIAAgAAAIsPAAAIAAAAIgALABoBNgBwIAAAEAAnAAMAAQACAAAAkQ8AAAgAAAAiAAsAGgE2AHAg" +
439*795d594fSAndroid Build Coastguard Worker     "AAAQACcABAACAAIAAACXDwAACAAAACIACwAaATYAcCAAABAAJwADAAIAAwAAAJ4PAAAGAAAAIgAM" +
440*795d594fSAndroid Build Coastguard Worker     "AHAwAgAQAhEAAgACAAIAAAAtDwAABQAAAG4gKgAQAAwBEQEAAAQAAgACAAAAow8AAAgAAAAiAAsA" +
441*795d594fSAndroid Build Coastguard Worker     "GgE2AHAgAAAQACcABAACAAIAAACoDwAACAAAACIACwAaATYAcCAAABAAJwAEAAIAAgAAAK0PAAAI" +
442*795d594fSAndroid Build Coastguard Worker     "AAAAIgALABoBNgBwIAAAEAAnAAQAAQADAAAAsg8AABcAAAAiABIAcBBCAAAAGgE3AG4gRAAQAAwA" +
443*795d594fSAndroid Build Coastguard Worker     "UzEGAIYRbjBDABACDABuEEUAAAAMABEAAAAEAAIAAgAAALYPAAAIAAAAIgALABoBNgBwIAAAEAAn" +
444*795d594fSAndroid Build Coastguard Worker     "AAUAAwACAAAAuw8AAAgAAAAiAAsAGgE2AHAgAAAQACcABAACAAIAAADBDwAACAAAACIACwAaATYA" +
445*795d594fSAndroid Build Coastguard Worker     "cCAAABAAJwAFAAMAAgAAAMYPAAAIAAAAIgALABoBNgBwIAAAEAAnAAUAAwACAAAAzA8AAAgAAAAi" +
446*795d594fSAndroid Build Coastguard Worker     "AAsAGgE2AHAgAAAQACcABAACAAIAAADTDwAACAAAACIACwAaATYAcCAAABAAJwADAAEAAgAAANgP" +
447*795d594fSAndroid Build Coastguard Worker     "AAAIAAAAIgALABoBNgBwIAAAEAAnAAYABAAAAAAA3Q8AAAMAAAAWAP//EAAAAAYABAACAAAA4w8A" +
448*795d594fSAndroid Build Coastguard Worker     "AAgAAAAiAAsAGgE2AHAgAAAQACcABgAEAAAAAADqDwAAAwAAABYA//8QAAAABAACAAAAAADwDwAA" +
449*795d594fSAndroid Build Coastguard Worker     "BAAAABYAAQC7IBAAAwABAAAAAAD1DwAAAwAAAFMgBgAQAAAABAACAAAAAAD6DwAABQAAABYAAQCc" +
450*795d594fSAndroid Build Coastguard Worker     "AAIAEAAAAAYABAACAAAA/w8AAAgAAAAiAAsAGgE2AHAgAAAQACcABgAEAAIAAAAGEAAACAAAACIA" +
451*795d594fSAndroid Build Coastguard Worker     "CwAaATYAcCAAABAAJwAEAAIAAAAAAA0QAAADAAAAFgAAABAAAAAGAAQAAgAAABIQAAAIAAAAIgAL" +
452*795d594fSAndroid Build Coastguard Worker     "ABoBNgBwIAAAEAAnAAMAAQACAAAAGhAAAAgAAAAiAAsAGgE2AHAgAAAQACcABAACAAIAAAAfEAAA" +
453*795d594fSAndroid Build Coastguard Worker     "CAAAACIACwAaATYAcCAAABAAJwAGAAQAAgAAACUQAAAIAAAAIgALABoBNgBwIAAAEAAnAAMAAQAC" +
454*795d594fSAndroid Build Coastguard Worker     "AAAALhAAAAgAAAAiAAsAGgE2AHAgAAAQACcABAACAAIAAAA0EAAACAAAACIACwAaATYAcCAAABAA" +
455*795d594fSAndroid Build Coastguard Worker     "JwAGAAQAAgAAADsQAAAIAAAAIgALABoBNgBwIAAAEAAnAAQAAgAAAAAAQhAAAAIAAAB9IBAABAAC" +
456*795d594fSAndroid Build Coastguard Worker     "AAAAAABHEAAAAwAAABYAAAAQAAAAAwADAAAAAABMEAAAAQAAABAAAAAFAAMAAAAAAFIQAAAFAAAA" +
457*795d594fSAndroid Build Coastguard Worker     "FgAKAJ0AAAIQAAAABgAEAAAAAABYEAAAAwAAAJsAAgQQAAAAAwABAAIAAABeEAAACAAAACIACwAa" +
458*795d594fSAndroid Build Coastguard Worker     "ATYAcCAAABAAJwABAAAAAAAAAGMQAAAEAAAAEgBpAAQADgAEAAIAAwAAAGgQAAANAAAAFgAAAHAw" +
459*795d594fSAndroid Build Coastguard Worker     "AgACASIACwAaATYAcCAAABAAJwAAAAMAAwABAAAAbxAAAAYAAABwEEEAAABaAQYADgAIAAYAAgAA" +
460*795d594fSAndroid Build Coastguard Worker     "AHcQAAAIAAAAIgALABoBNgBwIAAAEAAnAK8BAXEOAJcBAA4ApgEADgCjAQAOACsBYQ4AvgECjgGP" +
461*795d594fSAndroid Build Coastguard Worker     "AQ4AuwEBRg4ACAEADgDBAQKOAY8BDgBuA2FiSw4AcQNhYksOAKkBAA4ArAEBjAEOAJ0BAA4AIwFh" +
462*795d594fSAndroid Build Coastguard Worker     "DgAnAWEOAEYBYQ4AdAGOAQ4AjwEBbg4AsgEBbg4AuAECbosBDgC1AQJuiwEOANwBAWcOAIwBAX0O" +
463*795d594fSAndroid Build Coastguard Worker     "AIkBAn12DgAXAWQOAF8BYQ4AWQFhDgBcAWEOAE0ADgBoAWEOAFACYXYOAGsBYQ4AUwJhdg4AYgKL" +
464*795d594fSAndroid Build Coastguard Worker     "AX8OAFYBYQ4A1gEADgA7AmFpDgDEAQJVVg4APwJhaQ4AGwFhDgCgAQAOAB8BYQ4AzAECREgOAM8B" +
465*795d594fSAndroid Build Coastguard Worker     "AkRIDgBCAWoOAH0EfUlYdg4AegF9DgB3An12DgCGAQR9SVh2DgCDAQF9DgCAAQJ9dg4AxwECVVYO" +
466*795d594fSAndroid Build Coastguard Worker     "ADcBYQ4ASgFhDgAvAmFTDgAzAmFTDgAPAkRIDgCaAQAOAAsADjwAkwEBfQ5aABIBjAEOPC0AZQWL" +
467*795d594fSAndroid Build Coastguard Worker     "AX9LcmUOAAAAAAMAAAAKABMAFAAAAAEAAAAEAAAAAwAAAAQAAwAbAAAAAwAAAAQAAwAcAAAAAgAA" +
468*795d594fSAndroid Build Coastguard Worker     "AAQABAABAAAADAAAAAEAAAAPAAAAAgAAAAQAAwAEAAAACAADAAMAAwABAAAAEQAAAAIAAAARAAMA" +
469*795d594fSAndroid Build Coastguard Worker     "AgAAABEABAACAAAAEQAMAAEAAAAVAAAAAQAAAAEAAAAFAAAABAADABsAAwADAAIoKQABKwAIPGNs" +
470*795d594fSAndroid Build Coastguard Worker     "aW5pdD4ABjxpbml0PgACPjsAAUIABUJZVEVTAAFEAAFGAAFJAAJJSgAESUpJTAADSUpKAAJJTAAB" +
471*795d594fSAndroid Build Coastguard Worker     "SgACSkoAA0pKSQADSkpKAAJKTAADSkxJAAVKTElJSQABTAACTEQAAkxKAANMSkkAAkxMAANMTEkA" +
472*795d594fSAndroid Build Coastguard Worker     "A0xMSgADTExMACRMZGFsdmlrL2Fubm90YXRpb24vTWV0aG9kUGFyYW1ldGVyczsAHUxkYWx2aWsv" +
473*795d594fSAndroid Build Coastguard Worker     "YW5ub3RhdGlvbi9TaWduYXR1cmU7ABpMZGFsdmlrL2Fubm90YXRpb24vVGhyb3dzOwAYTGphdmEv" +
474*795d594fSAndroid Build Coastguard Worker     "bGFuZy9DaGFyU2VxdWVuY2U7ABFMamF2YS9sYW5nL0NsYXNzOwARTGphdmEvbGFuZy9DbGFzczwA" +
475*795d594fSAndroid Build Coastguard Worker     "FkxqYXZhL2xhbmcvQ29tcGFyYWJsZTsAFkxqYXZhL2xhbmcvQ29tcGFyYWJsZTwAEUxqYXZhL2xh" +
476*795d594fSAndroid Build Coastguard Worker     "bmcvRXJyb3I7ABBMamF2YS9sYW5nL0xvbmc7ABJMamF2YS9sYW5nL051bWJlcjsAIUxqYXZhL2xh" +
477*795d594fSAndroid Build Coastguard Worker     "bmcvTnVtYmVyRm9ybWF0RXhjZXB0aW9uOwASTGphdmEvbGFuZy9PYmplY3Q7AChMamF2YS9sYW5n" +
478*795d594fSAndroid Build Coastguard Worker     "L1JlZmxlY3RpdmVPcGVyYXRpb25FeGNlcHRpb247ABJMamF2YS9sYW5nL1N0cmluZzsAGUxqYXZh" +
479*795d594fSAndroid Build Coastguard Worker     "L2xhbmcvU3RyaW5nQnVpbGRlcjsAHkxqYXZhL2xhbmcvY29uc3RhbnQvQ29uc3RhYmxlOwAhTGph" +
480*795d594fSAndroid Build Coastguard Worker     "dmEvbGFuZy9jb25zdGFudC9Db25zdGFudERlc2M7ACdMamF2YS9sYW5nL2ludm9rZS9NZXRob2RI" +
481*795d594fSAndroid Build Coastguard Worker     "YW5kbGVzJExvb2t1cDsAFkxqYXZhL21hdGgvQmlnSW50ZWdlcjsAFExqYXZhL3V0aWwvT3B0aW9u" +
482*795d594fSAndroid Build Coastguard Worker     "YWw7ABRMamF2YS91dGlsL09wdGlvbmFsPAAJTG9uZy5qYXZhAAlNQVhfVkFMVUUACU1JTl9WQUxV" +
483*795d594fSAndroid Build Coastguard Worker     "RQAWTWV0aG9kIHJlZGVmaW5lZCBhd2F5IQAiUmVkZWZpbmVkIExvbmchIHZhbHVlIChhcyBkb3Vi" +
484*795d594fSAndroid Build Coastguard Worker     "bGUpPQABUwAEU0laRQAEVFlQRQABVgACVkoABlZKSUxJSQACVkwAAVoAAlpMAAJbQgACW0MAAWEA" +
485*795d594fSAndroid Build Coastguard Worker     "C2FjY2Vzc0ZsYWdzAAthbm90aGVyTG9uZwAGYXBwZW5kAAFiAApiZWdpbkluZGV4AAhiaXRDb3Vu" +
486*795d594fSAndroid Build Coastguard Worker     "dAADYnVmAAlieXRlVmFsdWUAB2NvbXBhcmUACWNvbXBhcmVUbwAPY29tcGFyZVVuc2lnbmVkAAhj" +
487*795d594fSAndroid Build Coastguard Worker     "b21wcmVzcwAGZGVjb2RlABFkZXNjcmliZUNvbnN0YWJsZQAIZGlzdGFuY2UADmRpdmlkZVVuc2ln" +
488*795d594fSAndroid Build Coastguard Worker     "bmVkAAhkaXZpZGVuZAAHZGl2aXNvcgALZG91YmxlVmFsdWUACGVuZEluZGV4AAZlcXVhbHMABmV4" +
489*795d594fSAndroid Build Coastguard Worker     "cGFuZAAKZmxvYXRWYWx1ZQATZm9ybWF0VW5zaWduZWRMb25nMAAIZ2V0Q2hhcnMAB2dldExvbmcA" +
490*795d594fSAndroid Build Coastguard Worker     "CGhhc2hDb2RlAA1oaWdoZXN0T25lQml0AAFpAAVpbmRleAAIaW50VmFsdWUAAWwAA2xlbgAJbG9u" +
491*795d594fSAndroid Build Coastguard Worker     "Z1ZhbHVlAAZsb29rdXAADGxvd2VzdE9uZUJpdAAEbWFzawAJbWFza0NvdW50AANtYXgAA21pbgAF" +
492*795d594fSAndroid Build Coastguard Worker     "bmFtZXMAAm5tABRudW1iZXJPZkxlYWRpbmdaZXJvcwAVbnVtYmVyT2ZUcmFpbGluZ1plcm9zAANv" +
493*795d594fSAndroid Build Coastguard Worker     "YmoABm9mZnNldAAOcGFyYWxsZWxTdWZmaXgACXBhcnNlTG9uZwARcGFyc2VVbnNpZ25lZExvbmcA" +
494*795d594fSAndroid Build Coastguard Worker     "BXJhZGl4ABFyZW1haW5kZXJVbnNpZ25lZAATcmVzb2x2ZUNvbnN0YW50RGVzYwAHcmV2ZXJzZQAM" +
495*795d594fSAndroid Build Coastguard Worker     "cmV2ZXJzZUJ5dGVzAApyb3RhdGVMZWZ0AAtyb3RhdGVSaWdodAABcwAQc2VyaWFsVmVyc2lvblVJ" +
496*795d594fSAndroid Build Coastguard Worker     "RAAFc2hpZnQACnNob3J0VmFsdWUABnNpZ251bQAKc3RyaW5nU2l6ZQADc3VtAA50b0JpbmFyeVN0" +
497*795d594fSAndroid Build Coastguard Worker     "cmluZwALdG9IZXhTdHJpbmcADXRvT2N0YWxTdHJpbmcACHRvU3RyaW5nABR0b1Vuc2lnbmVkQmln" +
498*795d594fSAndroid Build Coastguard Worker     "SW50ZWdlcgAQdG9VbnNpZ25lZFN0cmluZwARdG9VbnNpZ25lZFN0cmluZzAAA3ZhbAAFdmFsdWUA" +
499*795d594fSAndroid Build Coastguard Worker     "B3ZhbHVlT2YAAXgAAXkAmwF+fkQ4eyJiYWNrZW5kIjoiZGV4IiwiY29tcGlsYXRpb24tbW9kZSI6" +
500*795d594fSAndroid Build Coastguard Worker     "ImRlYnVnIiwiaGFzLWNoZWNrc3VtcyI6ZmFsc2UsIm1pbi1hcGkiOjEsInNoYS0xIjoiZWFlNDNh" +
501*795d594fSAndroid Build Coastguard Worker     "MzAyODgyMjQ4ZmExYzU4NDUzZjJjZGViMjNiMGZkZDU1MCIsInZlcnNpb24iOiI4LjkuMS1kZXYi" +
502*795d594fSAndroid Build Coastguard Worker     "fQACBwGLARwBGA4CBgGLARwFFwAXMhcBFy4XBAIFAkQcASQAEGwcAR4CBwGLARwBGBACBgGLARwD" +
503*795d594fSAndroid Build Coastguard Worker     "FyIXJhcEAgYBiwEcBhcnFyQXJhcEFy0XLgYBMg4AGQEZARkBGQEZARoGEgGIgASEHQGBgATIHQGB" +
504*795d594fSAndroid Build Coastguard Worker     "gAScHQEJ6A8CCfwPAwncEAEJnBgBCYQTAgm0GAMJ1BgCCOQdAQj8EAEInBEBCaQTAQnkEwEJxBMC" +
505*795d594fSAndroid Build Coastguard Worker     "CdwRAQnsGAMJnBkBCbgZAQnYGQEJnBIBCbQSAQr4GQEJkBoBCbAaAQnQGgEJ8BoBCZAbAQmwGwEJ" +
506*795d594fSAndroid Build Coastguard Worker     "0BsDCfAbAQmEHAEJnBwBCbAcAgnQEgEI5BIBCcwcAQmcFQEJvBUBCdwVAgm8FgEJ3BYBCtwXAQn8" +
507*795d594fSAndroid Build Coastguard Worker     "FgEJnBcBCLwXAQnkFAEJpBQBCcQUBQGIDwIBnBABwSC8EAQB/BcCAagPAQHoDgIByA8HAbwRAwH8" +
508*795d594fSAndroid Build Coastguard Worker     "EQEBhBkOAYQUAcEggBUFAeQcBwH8FQQECAYABgAEQAAAAAAAAAEAAABHGAAAAQAAAFAYAAABAAAA" +
509*795d594fSAndroid Build Coastguard Worker     "YRgAAAIAAABhGAAAbhgAAAEAAAB3GAAAAQAAAIQYAADsGQAAAQAAAA0AAAAAAAAABAAAAOQZAAAD" +
510*795d594fSAndroid Build Coastguard Worker     "AAAAwBkAAAgAAADQGQAACwAAAMAZAAAMAAAAyBkAACMAAADAGQAAJAAAAMAZAAAlAAAAwBkAACYA" +
511*795d594fSAndroid Build Coastguard Worker     "AADAGQAAJwAAAMAZAAAoAAAAwBkAACsAAADYGQAAPwAAAMAZAABAAAAAwBkAABEAAAAAAAAAAQAA" +
512*795d594fSAndroid Build Coastguard Worker     "AAAAAAABAAAAkAAAAHAAAAACAAAAHQAAALACAAADAAAAJQAAACQDAAAEAAAABwAAAOAEAAAFAAAA" +
513*795d594fSAndroid Build Coastguard Worker     "RgAAABgFAAAGAAAAAQAAAEgHAAABIAAAQAAAAGgHAAADIAAAPwAAAAQPAAABEAAAEAAAAIQQAAAC" +
514*795d594fSAndroid Build Coastguard Worker     "IAAAkAAAABoRAAAEIAAABgAAAEcYAAAAIAAAAQAAAJcYAAAFIAAAAQAAALEZAAADEAAABwAAALwZ" +
515*795d594fSAndroid Build Coastguard Worker     "AAAGIAAAAQAAAPQZAAAAEAAAAQAAAHQaAAA=");
516*795d594fSAndroid Build Coastguard Worker 
517*795d594fSAndroid Build Coastguard Worker   static class FuncCmp implements LongPredicate {
518*795d594fSAndroid Build Coastguard Worker     final String name;
519*795d594fSAndroid Build Coastguard Worker     final LongPredicate p;
FuncCmp(String name, LongPredicate p)520*795d594fSAndroid Build Coastguard Worker     public FuncCmp(String name, LongPredicate p) {
521*795d594fSAndroid Build Coastguard Worker       this.name = name;
522*795d594fSAndroid Build Coastguard Worker       this.p = p;
523*795d594fSAndroid Build Coastguard Worker     }
524*795d594fSAndroid Build Coastguard Worker 
test(long l)525*795d594fSAndroid Build Coastguard Worker     public boolean test(long l) {
526*795d594fSAndroid Build Coastguard Worker       return p.test(l);
527*795d594fSAndroid Build Coastguard Worker     }
528*795d594fSAndroid Build Coastguard Worker   }
l2l(String name, final LongUnaryOperator a, final LongUnaryOperator b)529*795d594fSAndroid Build Coastguard Worker   static FuncCmp l2l(String name, final LongUnaryOperator a, final LongUnaryOperator b) {
530*795d594fSAndroid Build Coastguard Worker     return new FuncCmp(name, (v) -> a.applyAsLong(v) == b.applyAsLong(v));
531*795d594fSAndroid Build Coastguard Worker   }
l2i(String name, final LongToIntFunction a, final LongToIntFunction b)532*795d594fSAndroid Build Coastguard Worker   static FuncCmp l2i(String name, final LongToIntFunction a, final LongToIntFunction b) {
533*795d594fSAndroid Build Coastguard Worker     return new FuncCmp(name, (v) -> a.applyAsInt(v) == b.applyAsInt(v));
534*795d594fSAndroid Build Coastguard Worker   }
535*795d594fSAndroid Build Coastguard Worker 
536*795d594fSAndroid Build Coastguard Worker   /** Interface for a long, int -> long function. */
applyToLongInt(long a, int b)537*795d594fSAndroid Build Coastguard Worker   static interface LI2IFunction { public long applyToLongInt(long a, int b); }
538*795d594fSAndroid Build Coastguard Worker 
li2l(String name, final Random r, final LI2IFunction a, final LI2IFunction b)539*795d594fSAndroid Build Coastguard Worker   static FuncCmp li2l(String name, final Random r, final LI2IFunction a, final LI2IFunction b) {
540*795d594fSAndroid Build Coastguard Worker     return new FuncCmp(name, new LongPredicate() {
541*795d594fSAndroid Build Coastguard Worker       public boolean test(long v) {
542*795d594fSAndroid Build Coastguard Worker         int i = r.nextInt();
543*795d594fSAndroid Build Coastguard Worker         return a.applyToLongInt(v, i) == b.applyToLongInt(v, i);
544*795d594fSAndroid Build Coastguard Worker       }
545*795d594fSAndroid Build Coastguard Worker     });
546*795d594fSAndroid Build Coastguard Worker   }
547*795d594fSAndroid Build Coastguard Worker 
548*795d594fSAndroid Build Coastguard Worker   public static void main(String[] args) {
549*795d594fSAndroid Build Coastguard Worker     doTest(10000);
550*795d594fSAndroid Build Coastguard Worker   }
551*795d594fSAndroid Build Coastguard Worker 
552*795d594fSAndroid Build Coastguard Worker   public static void doTest(int iters) {
553*795d594fSAndroid Build Coastguard Worker     // Just transform immediately.
554*795d594fSAndroid Build Coastguard Worker     doCommonClassRedefinition(Long.class, CLASS_BYTES, DEX_BYTES);
555*795d594fSAndroid Build Coastguard Worker     final Random r = new Random();
556*795d594fSAndroid Build Coastguard Worker     FuncCmp[] comps = new FuncCmp[] {
557*795d594fSAndroid Build Coastguard Worker       l2l("highestOneBit", Long::highestOneBit, RedefinedLongIntrinsics::highestOneBit),
558*795d594fSAndroid Build Coastguard Worker       l2l("lowestOneBit", Long::lowestOneBit, RedefinedLongIntrinsics::lowestOneBit),
559*795d594fSAndroid Build Coastguard Worker       l2i("numberOfLeadingZeros",
560*795d594fSAndroid Build Coastguard Worker           Long::numberOfLeadingZeros,
561*795d594fSAndroid Build Coastguard Worker           RedefinedLongIntrinsics::numberOfLeadingZeros),
562*795d594fSAndroid Build Coastguard Worker       l2i("numberOfTrailingZeros",
563*795d594fSAndroid Build Coastguard Worker           Long::numberOfTrailingZeros,
564*795d594fSAndroid Build Coastguard Worker           RedefinedLongIntrinsics::numberOfTrailingZeros),
565*795d594fSAndroid Build Coastguard Worker       l2i("bitCount", Long::bitCount, RedefinedLongIntrinsics::bitCount),
566*795d594fSAndroid Build Coastguard Worker       li2l("rotateLeft", r, Long::rotateLeft, RedefinedLongIntrinsics::rotateLeft),
567*795d594fSAndroid Build Coastguard Worker       li2l("rotateRight", r, Long::rotateRight, RedefinedLongIntrinsics::rotateRight),
568*795d594fSAndroid Build Coastguard Worker       l2l("reverse", Long::reverse, RedefinedLongIntrinsics::reverse),
569*795d594fSAndroid Build Coastguard Worker       l2i("signum", Long::signum, RedefinedLongIntrinsics::signum),
570*795d594fSAndroid Build Coastguard Worker       l2l("reverseBytes", Long::reverseBytes, RedefinedLongIntrinsics::reverseBytes),
571*795d594fSAndroid Build Coastguard Worker     };
572*795d594fSAndroid Build Coastguard Worker     for (FuncCmp f : comps) {
573*795d594fSAndroid Build Coastguard Worker       // Just actually use ints so we can cast them back int the tests to print them (since we
574*795d594fSAndroid Build Coastguard Worker       // deleted a bunch of the Long methods needed for printing longs)!
575*795d594fSAndroid Build Coastguard Worker       int failures = (int)r.ints(iters)
576*795d594fSAndroid Build Coastguard Worker                            .mapToLong((v) -> (long)v)
577*795d594fSAndroid Build Coastguard Worker                            .filter(f.negate()) // Get all the test cases that failed.
578*795d594fSAndroid Build Coastguard Worker                            .count();
579*795d594fSAndroid Build Coastguard Worker       if (failures != 0) {
580*795d594fSAndroid Build Coastguard Worker         double percent = 100.0d*((double)failures/(double)iters);
581*795d594fSAndroid Build Coastguard Worker         System.out.println("for intrinsic " + f.name + " " + failures + "/" + iters
582*795d594fSAndroid Build Coastguard Worker             + " (" + Double.toString(percent) + "%) tests failed!");
583*795d594fSAndroid Build Coastguard Worker       }
584*795d594fSAndroid Build Coastguard Worker     }
585*795d594fSAndroid Build Coastguard Worker     System.out.println("Finished!");
586*795d594fSAndroid Build Coastguard Worker   }
587*795d594fSAndroid Build Coastguard Worker }
588