home *** CD-ROM | disk | FTP | other *** search
- package java.util;
-
- public class Arrays {
- private Arrays() {
- }
-
- public static void sort(long[] var0) {
- sort1((long[])var0, 0, var0.length);
- }
-
- public static void sort(long[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(int[] var0) {
- sort1((int[])var0, 0, var0.length);
- }
-
- public static void sort(int[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(short[] var0) {
- sort1((short[])var0, 0, var0.length);
- }
-
- public static void sort(short[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(char[] var0) {
- sort1((char[])var0, 0, var0.length);
- }
-
- public static void sort(char[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(byte[] var0) {
- sort1((byte[])var0, 0, var0.length);
- }
-
- public static void sort(byte[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort1(var0, var1, var2 - var1);
- }
-
- public static void sort(double[] var0) {
- sort2((double[])var0, 0, var0.length);
- }
-
- public static void sort(double[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort2(var0, var1, var2);
- }
-
- public static void sort(float[] var0) {
- sort2((float[])var0, 0, var0.length);
- }
-
- public static void sort(float[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- sort2(var0, var1, var2);
- }
-
- private static void sort2(double[] var0, int var1, int var2) {
- long var3 = Double.doubleToLongBits((double)-0.0F);
- int var5 = 0;
- int var6 = var1;
- int var7 = var2;
-
- while(var6 < var7) {
- if (var0[var6] != var0[var6]) {
- --var7;
- var0[var6] = var0[var7];
- var0[var7] = Double.NaN;
- } else {
- if (var0[var6] == (double)0.0F && Double.doubleToLongBits(var0[var6]) == var3) {
- var0[var6] = (double)0.0F;
- ++var5;
- }
-
- ++var6;
- }
- }
-
- sort1(var0, var1, var7 - var1);
- if (var5 != 0) {
- int var8 = binarySearch(var0, (double)0.0F, var1, var7 - 1);
-
- do {
- --var8;
- } while(var8 >= 0 && var0[var8] == (double)0.0F);
-
- for(int var9 = 0; var9 < var5; ++var9) {
- ++var8;
- var0[var8] = (double)-0.0F;
- }
- }
-
- }
-
- private static void sort2(float[] var0, int var1, int var2) {
- int var3 = Float.floatToIntBits(-0.0F);
- int var4 = 0;
- int var5 = var1;
- int var6 = var2;
-
- while(var5 < var6) {
- if (var0[var5] != var0[var5]) {
- --var6;
- var0[var5] = var0[var6];
- var0[var6] = Float.NaN;
- } else {
- if (var0[var5] == 0.0F && Float.floatToIntBits(var0[var5]) == var3) {
- var0[var5] = 0.0F;
- ++var4;
- }
-
- ++var5;
- }
- }
-
- sort1(var0, var1, var6 - var1);
- if (var4 != 0) {
- int var7 = binarySearch(var0, 0.0F, var1, var6 - 1);
-
- do {
- --var7;
- } while(var7 >= 0 && var0[var7] == 0.0F);
-
- for(int var8 = 0; var8 < var4; ++var8) {
- ++var7;
- var0[var7] = -0.0F;
- }
- }
-
- }
-
- private static void sort1(long[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var12 = var1; var12 < var2 + var1; ++var12) {
- for(int var14 = var12; var14 > var1 && var0[var14 - 1] > var0[var14]; --var14) {
- swap(var0, var14, var14 - 1);
- }
- }
-
- } else {
- int var3 = var1 + var2 / 2;
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- long var13 = var0[var3];
- int var15 = var1;
- int var7 = var1;
- int var8 = var1 + var2 - 1;
- int var9 = var8;
-
- while(true) {
- while(var7 > var8 || var0[var7] > var13) {
- for(; var8 >= var7 && var0[var8] >= var13; --var8) {
- if (var0[var8] == var13) {
- swap(var0, var8, var9--);
- }
- }
-
- if (var7 > var8) {
- int var11 = var1 + var2;
- int var10 = Math.min(var15 - var1, var7 - var15);
- vecswap(var0, var1, var7 - var10, var10);
- var10 = Math.min(var9 - var8, var11 - var9 - 1);
- vecswap(var0, var7, var11 - var10, var10);
- if ((var10 = var7 - var15) > 1) {
- sort1(var0, var1, var10);
- }
-
- if ((var10 = var9 - var8) > 1) {
- sort1(var0, var11 - var10, var10);
- }
-
- return;
- }
-
- swap(var0, var7++, var8--);
- }
-
- if (var0[var7] == var13) {
- swap(var0, var15++, var7);
- }
-
- ++var7;
- }
- }
- }
-
- private static void swap(long[] var0, int var1, int var2) {
- long var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(long[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(long[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(int[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + var2 / 2;
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- int var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(int[] var0, int var1, int var2) {
- int var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(int[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(int[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(short[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + var2 / 2;
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- short var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(short[] var0, int var1, int var2) {
- short var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(short[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(short[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(char[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + var2 / 2;
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- char var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(char[] var0, int var1, int var2) {
- char var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(char[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(char[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(byte[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + var2 / 2;
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- byte var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || var0[var15] > var12) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(byte[] var0, int var1, int var2) {
- byte var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(byte[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(byte[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(double[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var12 = var1; var12 < var2 + var1; ++var12) {
- for(int var14 = var12; var14 > var1 && var0[var14 - 1] > var0[var14]; --var14) {
- swap(var0, var14, var14 - 1);
- }
- }
-
- } else {
- int var3 = var1 + var2 / 2;
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- double var13 = var0[var3];
- int var15 = var1;
- int var7 = var1;
- int var8 = var1 + var2 - 1;
- int var9 = var8;
-
- while(true) {
- while(var7 > var8 || !(var0[var7] <= var13)) {
- for(; var8 >= var7 && var0[var8] >= var13; --var8) {
- if (var0[var8] == var13) {
- swap(var0, var8, var9--);
- }
- }
-
- if (var7 > var8) {
- int var11 = var1 + var2;
- int var10 = Math.min(var15 - var1, var7 - var15);
- vecswap(var0, var1, var7 - var10, var10);
- var10 = Math.min(var9 - var8, var11 - var9 - 1);
- vecswap(var0, var7, var11 - var10, var10);
- if ((var10 = var7 - var15) > 1) {
- sort1(var0, var1, var10);
- }
-
- if ((var10 = var9 - var8) > 1) {
- sort1(var0, var11 - var10, var10);
- }
-
- return;
- }
-
- swap(var0, var7++, var8--);
- }
-
- if (var0[var7] == var13) {
- swap(var0, var15++, var7);
- }
-
- ++var7;
- }
- }
- }
-
- private static void swap(double[] var0, int var1, int var2) {
- double var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(double[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(double[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- private static void sort1(float[] var0, int var1, int var2) {
- if (var2 < 7) {
- for(int var11 = var1; var11 < var2 + var1; ++var11) {
- for(int var13 = var11; var13 > var1 && var0[var13 - 1] > var0[var13]; --var13) {
- swap(var0, var13, var13 - 1);
- }
- }
-
- } else {
- int var3 = var1 + var2 / 2;
- if (var2 > 7) {
- int var4 = var1;
- int var5 = var1 + var2 - 1;
- if (var2 > 40) {
- int var6 = var2 / 8;
- var4 = med3(var0, var1, var1 + var6, var1 + 2 * var6);
- var3 = med3(var0, var3 - var6, var3, var3 + var6);
- var5 = med3(var0, var5 - 2 * var6, var5 - var6, var5);
- }
-
- var3 = med3(var0, var4, var3, var5);
- }
-
- float var12 = var0[var3];
- int var14 = var1;
- int var15 = var1;
- int var7 = var1 + var2 - 1;
- int var8 = var7;
-
- while(true) {
- while(var15 > var7 || !(var0[var15] <= var12)) {
- for(; var7 >= var15 && var0[var7] >= var12; --var7) {
- if (var0[var7] == var12) {
- swap(var0, var7, var8--);
- }
- }
-
- if (var15 > var7) {
- int var10 = var1 + var2;
- int var9 = Math.min(var14 - var1, var15 - var14);
- vecswap(var0, var1, var15 - var9, var9);
- var9 = Math.min(var8 - var7, var10 - var8 - 1);
- vecswap(var0, var15, var10 - var9, var9);
- if ((var9 = var15 - var14) > 1) {
- sort1(var0, var1, var9);
- }
-
- if ((var9 = var8 - var7) > 1) {
- sort1(var0, var10 - var9, var9);
- }
-
- return;
- }
-
- swap(var0, var15++, var7--);
- }
-
- if (var0[var15] == var12) {
- swap(var0, var14++, var15);
- }
-
- ++var15;
- }
- }
- }
-
- private static void swap(float[] var0, int var1, int var2) {
- float var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- private static void vecswap(float[] var0, int var1, int var2, int var3) {
- for(int var4 = 0; var4 < var3; ++var2) {
- swap(var0, var1, var2);
- ++var4;
- ++var1;
- }
-
- }
-
- private static int med3(float[] var0, int var1, int var2, int var3) {
- return var0[var1] < var0[var2] ? (var0[var2] < var0[var3] ? var2 : (var0[var1] < var0[var3] ? var3 : var1)) : (var0[var2] > var0[var3] ? var2 : (var0[var1] > var0[var3] ? var3 : var1));
- }
-
- public static void sort(Object[] var0) {
- Object[] var1 = var0.clone();
- mergeSort(var1, var0, 0, var0.length);
- }
-
- public static void sort(Object[] var0, int var1, int var2) {
- rangeCheck(var0.length, var1, var2);
- Object[] var3 = var0.clone();
- mergeSort(var3, var0, var1, var2);
- }
-
- private static void mergeSort(Object[] var0, Object[] var1, int var2, int var3) {
- int var4 = var3 - var2;
- if (var4 < 7) {
- for(int var9 = var2; var9 < var3; ++var9) {
- for(int var10 = var9; var10 > var2 && ((Comparable)var1[var10 - 1]).compareTo((Comparable)var1[var10]) > 0; --var10) {
- swap(var1, var10, var10 - 1);
- }
- }
-
- } else {
- int var5 = (var2 + var3) / 2;
- mergeSort(var1, var0, var2, var5);
- mergeSort(var1, var0, var5, var3);
- if (((Comparable)var0[var5 - 1]).compareTo((Comparable)var0[var5]) <= 0) {
- System.arraycopy(var0, var2, var1, var2, var4);
- } else {
- int var6 = var2;
- int var7 = var2;
-
- for(int var8 = var5; var6 < var3; ++var6) {
- if (var8 < var3 && (var7 >= var5 || ((Comparable)var0[var7]).compareTo(var0[var8]) > 0)) {
- var1[var6] = var0[var8++];
- } else {
- var1[var6] = var0[var7++];
- }
- }
-
- }
- }
- }
-
- private static void swap(Object[] var0, int var1, int var2) {
- Object var3 = var0[var1];
- var0[var1] = var0[var2];
- var0[var2] = var3;
- }
-
- public static void sort(Object[] var0, Comparator var1) {
- Object[] var2 = var0.clone();
- if (var1 == null) {
- mergeSort(var2, var0, 0, var0.length);
- } else {
- mergeSort(var2, var0, 0, var0.length, var1);
- }
-
- }
-
- public static void sort(Object[] var0, int var1, int var2, Comparator var3) {
- rangeCheck(var0.length, var1, var2);
- Object[] var4 = var0.clone();
- if (var3 == null) {
- mergeSort(var4, var0, var1, var2);
- } else {
- mergeSort(var4, var0, var1, var2, var3);
- }
-
- }
-
- private static void mergeSort(Object[] var0, Object[] var1, int var2, int var3, Comparator var4) {
- int var5 = var3 - var2;
- if (var5 < 7) {
- for(int var10 = var2; var10 < var3; ++var10) {
- for(int var11 = var10; var11 > var2 && var4.compare(var1[var11 - 1], var1[var11]) > 0; --var11) {
- swap(var1, var11, var11 - 1);
- }
- }
-
- } else {
- int var6 = (var2 + var3) / 2;
- mergeSort(var1, var0, var2, var6, var4);
- mergeSort(var1, var0, var6, var3, var4);
- if (var4.compare(var0[var6 - 1], var0[var6]) <= 0) {
- System.arraycopy(var0, var2, var1, var2, var5);
- } else {
- int var7 = var2;
- int var8 = var2;
-
- for(int var9 = var6; var7 < var3; ++var7) {
- if (var9 < var3 && (var8 >= var6 || var4.compare(var0[var8], var0[var9]) > 0)) {
- var1[var7] = var0[var9++];
- } else {
- var1[var7] = var0[var8++];
- }
- }
-
- }
- }
- }
-
- private static void rangeCheck(int var0, int var1, int var2) {
- if (var1 > var2) {
- throw new IllegalArgumentException("fromIndex(" + var1 + ") > toIndex(" + var2 + ")");
- } else if (var1 < 0) {
- throw new ArrayIndexOutOfBoundsException(var1);
- } else if (var2 > var0) {
- throw new ArrayIndexOutOfBoundsException(var2);
- }
- }
-
- public static int binarySearch(long[] var0, long var1) {
- int var3 = 0;
- int var4 = var0.length - 1;
-
- while(var3 <= var4) {
- int var5 = (var3 + var4) / 2;
- long var6 = var0[var5];
- if (var6 < var1) {
- var3 = var5 + 1;
- } else {
- if (var6 <= var1) {
- return var5;
- }
-
- var4 = var5 - 1;
- }
- }
-
- return -(var3 + 1);
- }
-
- public static int binarySearch(int[] var0, int var1) {
- int var2 = 0;
- int var3 = var0.length - 1;
-
- while(var2 <= var3) {
- int var4 = (var2 + var3) / 2;
- int var5 = var0[var4];
- if (var5 < var1) {
- var2 = var4 + 1;
- } else {
- if (var5 <= var1) {
- return var4;
- }
-
- var3 = var4 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- public static int binarySearch(short[] var0, short var1) {
- int var2 = 0;
- int var3 = var0.length - 1;
-
- while(var2 <= var3) {
- int var4 = (var2 + var3) / 2;
- short var5 = var0[var4];
- if (var5 < var1) {
- var2 = var4 + 1;
- } else {
- if (var5 <= var1) {
- return var4;
- }
-
- var3 = var4 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- public static int binarySearch(char[] var0, char var1) {
- int var2 = 0;
- int var3 = var0.length - 1;
-
- while(var2 <= var3) {
- int var4 = (var2 + var3) / 2;
- char var5 = var0[var4];
- if (var5 < var1) {
- var2 = var4 + 1;
- } else {
- if (var5 <= var1) {
- return var4;
- }
-
- var3 = var4 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- public static int binarySearch(byte[] var0, byte var1) {
- int var2 = 0;
- int var3 = var0.length - 1;
-
- while(var2 <= var3) {
- int var4 = (var2 + var3) / 2;
- byte var5 = var0[var4];
- if (var5 < var1) {
- var2 = var4 + 1;
- } else {
- if (var5 <= var1) {
- return var4;
- }
-
- var3 = var4 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- public static int binarySearch(double[] var0, double var1) {
- return binarySearch(var0, var1, 0, var0.length - 1);
- }
-
- private static int binarySearch(double[] var0, double var1, int var3, int var4) {
- while(var3 <= var4) {
- int var5 = (var3 + var4) / 2;
- double var6 = var0[var5];
- int var8;
- if (var6 < var1) {
- var8 = -1;
- } else if (var6 > var1) {
- var8 = 1;
- } else {
- long var9 = Double.doubleToLongBits(var6);
- long var11 = Double.doubleToLongBits(var1);
- var8 = var9 == var11 ? 0 : (var9 < var11 ? -1 : 1);
- }
-
- if (var8 < 0) {
- var3 = var5 + 1;
- } else {
- if (var8 <= 0) {
- return var5;
- }
-
- var4 = var5 - 1;
- }
- }
-
- return -(var3 + 1);
- }
-
- public static int binarySearch(float[] var0, float var1) {
- return binarySearch(var0, var1, 0, var0.length - 1);
- }
-
- private static int binarySearch(float[] var0, float var1, int var2, int var3) {
- while(var2 <= var3) {
- int var4 = (var2 + var3) / 2;
- float var5 = var0[var4];
- int var6;
- if (var5 < var1) {
- var6 = -1;
- } else if (var5 > var1) {
- var6 = 1;
- } else {
- int var7 = Float.floatToIntBits(var5);
- int var8 = Float.floatToIntBits(var1);
- var6 = var7 == var8 ? 0 : (var7 < var8 ? -1 : 1);
- }
-
- if (var6 < 0) {
- var2 = var4 + 1;
- } else {
- if (var6 <= 0) {
- return var4;
- }
-
- var3 = var4 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- public static int binarySearch(Object[] var0, Object var1) {
- int var2 = 0;
- int var3 = var0.length - 1;
-
- while(var2 <= var3) {
- int var4 = (var2 + var3) / 2;
- Object var5 = var0[var4];
- int var6 = ((Comparable)var5).compareTo(var1);
- if (var6 < 0) {
- var2 = var4 + 1;
- } else {
- if (var6 <= 0) {
- return var4;
- }
-
- var3 = var4 - 1;
- }
- }
-
- return -(var2 + 1);
- }
-
- public static int binarySearch(Object[] var0, Object var1, Comparator var2) {
- if (var2 == null) {
- return binarySearch(var0, var1);
- } else {
- int var3 = 0;
- int var4 = var0.length - 1;
-
- while(var3 <= var4) {
- int var5 = (var3 + var4) / 2;
- Object var6 = var0[var5];
- int var7 = var2.compare(var6, var1);
- if (var7 < 0) {
- var3 = var5 + 1;
- } else {
- if (var7 <= 0) {
- return var5;
- }
-
- var4 = var5 - 1;
- }
- }
-
- return -(var3 + 1);
- }
- }
-
- public static boolean equals(long[] var0, long[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(int[] var0, int[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(short[] var0, short[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(char[] var0, char[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(byte[] var0, byte[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(boolean[] var0, boolean[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (var0[var3] != var1[var3]) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(double[] var0, double[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (Double.doubleToLongBits(var0[var3]) != Double.doubleToLongBits(var1[var3])) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(float[] var0, float[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- if (Float.floatToIntBits(var0[var3]) != Float.floatToIntBits(var1[var3])) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static boolean equals(Object[] var0, Object[] var1) {
- if (var0 == var1) {
- return true;
- } else if (var0 != null && var1 != null) {
- int var2 = var0.length;
- if (var1.length != var2) {
- return false;
- } else {
- for(int var3 = 0; var3 < var2; ++var3) {
- Object var4 = var0[var3];
- Object var5 = var1[var3];
- if (!(var4 == null ? var5 == null : var4.equals(var5))) {
- return false;
- }
- }
-
- return true;
- }
- } else {
- return false;
- }
- }
-
- public static void fill(long[] var0, long var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(long[] var0, int var1, int var2, long var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var5 = var1; var5 < var2; ++var5) {
- var0[var5] = var3;
- }
-
- }
-
- public static void fill(int[] var0, int var1) {
- fill((int[])var0, 0, var0.length, (int)var1);
- }
-
- public static void fill(int[] var0, int var1, int var2, int var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(short[] var0, short var1) {
- fill((short[])var0, 0, var0.length, (short)var1);
- }
-
- public static void fill(short[] var0, int var1, int var2, short var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(char[] var0, char var1) {
- fill((char[])var0, 0, var0.length, (char)var1);
- }
-
- public static void fill(char[] var0, int var1, int var2, char var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(byte[] var0, byte var1) {
- fill((byte[])var0, 0, var0.length, (byte)var1);
- }
-
- public static void fill(byte[] var0, int var1, int var2, byte var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(boolean[] var0, boolean var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(boolean[] var0, int var1, int var2, boolean var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(double[] var0, double var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(double[] var0, int var1, int var2, double var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var5 = var1; var5 < var2; ++var5) {
- var0[var5] = var3;
- }
-
- }
-
- public static void fill(float[] var0, float var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(float[] var0, int var1, int var2, float var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static void fill(Object[] var0, Object var1) {
- fill(var0, 0, var0.length, var1);
- }
-
- public static void fill(Object[] var0, int var1, int var2, Object var3) {
- rangeCheck(var0.length, var1, var2);
-
- for(int var4 = var1; var4 < var2; ++var4) {
- var0[var4] = var3;
- }
-
- }
-
- public static List asList(Object[] var0) {
- return new ArrayList(var0);
- }
- }
-