public class android.net.NetworkUtils
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.net.NetworkUtils
  super_class: java.lang.Object
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "NetworkUtils"

  public void <init>();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.net.NetworkUtils this
         0: .line 39
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
            return
        end local 0 // android.net.NetworkUtils this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/net/NetworkUtils;

  public static native void attachDhcpFilter(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)V
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
      Name  Flags
      fd    

  public static native void attachRaFilter(java.io.FileDescriptor, int);
    descriptor: (Ljava/io/FileDescriptor;I)V
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
            Name  Flags
      fd          
      packetType  

  public static native void attachControlPacketFilter(java.io.FileDescriptor, int);
    descriptor: (Ljava/io/FileDescriptor;I)V
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
            Name  Flags
      fd          
      packetType  

  public static native void setupRaSocket(java.io.FileDescriptor, int);
    descriptor: (Ljava/io/FileDescriptor;I)V
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    Exceptions:
      throws java.net.SocketException
    MethodParameters:
         Name  Flags
      fd       
      ifIndex  

  public static native boolean bindProcessToNetwork(int);
    descriptor: (I)Z
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      netId  

  public static native int getBoundNetworkForProcess();
    descriptor: ()I
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE

  public static native boolean bindProcessToNetworkForHostResolution(int);
    descriptor: (I)Z
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
       Name  Flags
      netId  

  public static native int bindSocketToNetwork(int, int);
    descriptor: (II)I
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    MethodParameters:
          Name  Flags
      socketfd  
      netId     

  public static boolean protectFromVpn(java.io.FileDescriptor);
    descriptor: (Ljava/io/FileDescriptor;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 112
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tThe method getInt$() is undefined for the type FileDescriptor\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    MethodParameters:
      Name  Flags
      fd    

  public static native boolean protectFromVpn(int);
    descriptor: (I)Z
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    MethodParameters:
          Name  Flags
      socketfd  

  public static native boolean queryUserAccess(int, int);
    descriptor: (II)Z
    flags: (0x0109) ACC_PUBLIC, ACC_STATIC, ACC_NATIVE
    MethodParameters:
       Name  Flags
      uid    
      netId  

  public static java.net.InetAddress intToInetAddress(int);
    descriptor: (I)Ljava/net/InetAddress;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=6, locals=2, args_size=1
        start local 0 // int hostAddress
         0: .line 133
            iconst_4
            newarray 8
            dup
            iconst_0
            sipush 255
            iload 0 /* hostAddress */
            iand
            i2b
            bastore
            dup
            iconst_1
         1: .line 134
            sipush 255
            iload 0 /* hostAddress */
            bipush 8
            ishr
            iand
            i2b
            bastore
            dup
            iconst_2
         2: .line 135
            sipush 255
            iload 0 /* hostAddress */
            bipush 16
            ishr
            iand
            i2b
            bastore
            dup
            iconst_3
         3: .line 136
            sipush 255
            iload 0 /* hostAddress */
            bipush 24
            ishr
            iand
            i2b
            bastore
         4: .line 133
            astore 1 /* addressBytes */
        start local 1 // byte[] addressBytes
         5: .line 139
            aload 1 /* addressBytes */
            invokestatic java.net.InetAddress.getByAddress:([B)Ljava/net/InetAddress;
         6: areturn
         7: .line 140
      StackMap locals: int byte[]
      StackMap stack: java.net.UnknownHostException
            pop
         8: .line 141
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
        end local 1 // byte[] addressBytes
        end local 0 // int hostAddress
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    9     0   hostAddress  I
            5    9     1  addressBytes  [B
      Exception table:
        from    to  target  type
           5     6       7  Class java.net.UnknownHostException
    MethodParameters:
             Name  Flags
      hostAddress  

  public static int inetAddressToInt(java.net.Inet4Address);
    descriptor: (Ljava/net/Inet4Address;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // java.net.Inet4Address inetAddr
         0: .line 152
            aload 0 /* inetAddr */
            invokevirtual java.net.Inet4Address.getAddress:()[B
            astore 1 /* addr */
        start local 1 // byte[] addr
         1: .line 153
            aload 1 /* addr */
            iconst_3
            baload
            sipush 255
            iand
            bipush 24
            ishl
            aload 1 /* addr */
            iconst_2
            baload
            sipush 255
            iand
            bipush 16
            ishl
            ior
         2: .line 154
            aload 1 /* addr */
            iconst_1
            baload
            sipush 255
            iand
            bipush 8
            ishl
         3: .line 153
            ior
         4: .line 154
            aload 1 /* addr */
            iconst_0
            baload
            sipush 255
            iand
         5: .line 153
            ior
            ireturn
        end local 1 // byte[] addr
        end local 0 // java.net.Inet4Address inetAddr
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    6     0  inetAddr  Ljava/net/Inet4Address;
            1    6     1      addr  [B
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
          Name  Flags
      inetAddr  

  public static int prefixLengthToNetmaskInt(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // int prefixLength
         0: .line 164
            iload 0 /* prefixLength */
            iflt 1
            iload 0 /* prefixLength */
            bipush 32
            if_icmple 2
         1: .line 165
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid prefix length (0 <= prefix <= 32)"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 167
      StackMap locals:
      StackMap stack:
            iconst_m1
            bipush 32
            iload 0 /* prefixLength */
            isub
            ishl
            istore 1 /* value */
        start local 1 // int value
         3: .line 168
            iload 1 /* value */
            invokestatic java.lang.Integer.reverseBytes:(I)I
            ireturn
        end local 1 // int value
        end local 0 // int prefixLength
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    4     0  prefixLength  I
            3    4     1         value  I
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
              Name  Flags
      prefixLength  

  public static int netmaskIntToPrefixLength(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int netmask
         0: .line 177
            iload 0 /* netmask */
            invokestatic java.lang.Integer.bitCount:(I)I
            ireturn
        end local 0 // int netmask
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    1     0  netmask  I
    MethodParameters:
         Name  Flags
      netmask  

  public static int netmaskToPrefixLength(java.net.Inet4Address);
    descriptor: (Ljava/net/Inet4Address;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=4, args_size=1
        start local 0 // java.net.Inet4Address netmask
         0: .line 189
            aload 0 /* netmask */
            invokestatic android.net.NetworkUtils.inetAddressToInt:(Ljava/net/Inet4Address;)I
            invokestatic java.lang.Integer.reverseBytes:(I)I
            istore 1 /* i */
        start local 1 // int i
         1: .line 190
            iload 1 /* i */
            invokestatic java.lang.Integer.bitCount:(I)I
            istore 2 /* prefixLength */
        start local 2 // int prefixLength
         2: .line 191
            iload 1 /* i */
            invokestatic java.lang.Integer.numberOfTrailingZeros:(I)I
            istore 3 /* trailingZeros */
        start local 3 // int trailingZeros
         3: .line 192
            iload 3 /* trailingZeros */
            bipush 32
            iload 2 /* prefixLength */
            isub
            if_icmpeq 5
         4: .line 193
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Non-contiguous netmask: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 1 /* i */
            invokestatic java.lang.Integer.toHexString:(I)Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 195
      StackMap locals: int int int
      StackMap stack:
            iload 2 /* prefixLength */
            ireturn
        end local 3 // int trailingZeros
        end local 2 // int prefixLength
        end local 1 // int i
        end local 0 // java.net.Inet4Address netmask
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    6     0        netmask  Ljava/net/Inet4Address;
            1    6     1              i  I
            2    6     2   prefixLength  I
            3    6     3  trailingZeros  I
    MethodParameters:
         Name  Flags
      netmask  

  public static java.net.InetAddress numericToInetAddress(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/net/InetAddress;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 209
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tThe method parseNumericAddress(String) is undefined for the type InetAddress\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
            Name  Flags
      addrString  

  protected static void parcelInetAddress(android.os.Parcel, java.net.InetAddress, int);
    descriptor: (Landroid/os/Parcel;Ljava/net/InetAddress;I)V
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // android.os.Parcel parcel
        start local 1 // java.net.InetAddress address
        start local 2 // int flags
         0: .line 217
            aload 1 /* address */
            ifnull 1
            aload 1 /* address */
            invokevirtual java.net.InetAddress.getAddress:()[B
            goto 2
      StackMap locals:
      StackMap stack:
         1: aconst_null
      StackMap locals:
      StackMap stack: byte[]
         2: astore 3 /* addressArray */
        start local 3 // byte[] addressArray
         3: .line 218
            aload 0 /* parcel */
            aload 3 /* addressArray */
            invokevirtual android.os.Parcel.writeByteArray:([B)V
         4: .line 219
            return
        end local 3 // byte[] addressArray
        end local 2 // int flags
        end local 1 // java.net.InetAddress address
        end local 0 // android.os.Parcel parcel
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0        parcel  Landroid/os/Parcel;
            0    5     1       address  Ljava/net/InetAddress;
            0    5     2         flags  I
            3    5     3  addressArray  [B
    MethodParameters:
         Name  Flags
      parcel   
      address  
      flags    

  protected static java.net.InetAddress unparcelInetAddress(android.os.Parcel);
    descriptor: (Landroid/os/Parcel;)Ljava/net/InetAddress;
    flags: (0x000c) ACC_PROTECTED, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.os.Parcel in
         0: .line 226
            aload 0 /* in */
            invokevirtual android.os.Parcel.createByteArray:()[B
            astore 1 /* addressArray */
        start local 1 // byte[] addressArray
         1: .line 227
            aload 1 /* addressArray */
            ifnonnull 3
         2: .line 228
            aconst_null
            areturn
         3: .line 231
      StackMap locals: byte[]
      StackMap stack:
            aload 1 /* addressArray */
            invokestatic java.net.InetAddress.getByAddress:([B)Ljava/net/InetAddress;
         4: areturn
         5: .line 232
      StackMap locals:
      StackMap stack: java.net.UnknownHostException
            pop
         6: .line 233
            aconst_null
            areturn
        end local 1 // byte[] addressArray
        end local 0 // android.os.Parcel in
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    7     0            in  Landroid/os/Parcel;
            1    7     1  addressArray  [B
      Exception table:
        from    to  target  type
           3     4       5  Class java.net.UnknownHostException
    MethodParameters:
      Name  Flags
      in    

  public static void maskRawAddress(byte[], int);
    descriptor: ([BI)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // byte[] array
        start local 1 // int prefixLength
         0: .line 242
            iload 1 /* prefixLength */
            iflt 1
            iload 1 /* prefixLength */
            aload 0 /* array */
            arraylength
            bipush 8
            imul
            if_icmple 4
         1: .line 243
      StackMap locals:
      StackMap stack:
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "IP address with "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* array */
            arraylength
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         2: .line 244
            ldc " bytes has invalid prefix length "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            iload 1 /* prefixLength */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         3: .line 243
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 247
      StackMap locals:
      StackMap stack:
            iload 1 /* prefixLength */
            bipush 8
            idiv
            istore 2 /* offset */
        start local 2 // int offset
         5: .line 248
            iload 1 /* prefixLength */
            bipush 8
            irem
            istore 3 /* remainder */
        start local 3 // int remainder
         6: .line 249
            sipush 255
            bipush 8
            iload 3 /* remainder */
            isub
            ishl
            i2b
            istore 4 /* mask */
        start local 4 // byte mask
         7: .line 251
            iload 2 /* offset */
            aload 0 /* array */
            arraylength
            if_icmpge 8
            aload 0 /* array */
            iload 2 /* offset */
            aload 0 /* array */
            iload 2 /* offset */
            baload
            iload 4 /* mask */
            iand
            i2b
            bastore
         8: .line 253
      StackMap locals: int int int
      StackMap stack:
            iinc 2 /* offset */ 1
         9: .line 255
            goto 12
        10: .line 256
      StackMap locals:
      StackMap stack:
            aload 0 /* array */
            iload 2 /* offset */
            iconst_0
            bastore
        11: .line 255
            iinc 2 /* offset */ 1
      StackMap locals:
      StackMap stack:
        12: iload 2 /* offset */
            aload 0 /* array */
            arraylength
            if_icmplt 10
        13: .line 258
            return
        end local 4 // byte mask
        end local 3 // int remainder
        end local 2 // int offset
        end local 1 // int prefixLength
        end local 0 // byte[] array
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   14     0         array  [B
            0   14     1  prefixLength  I
            5   14     2        offset  I
            6   14     3     remainder  I
            7   14     4          mask  B
    MethodParameters:
              Name  Flags
      array         
      prefixLength  

  public static java.net.InetAddress getNetworkPart(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)Ljava/net/InetAddress;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=5, args_size=2
        start local 0 // java.net.InetAddress address
        start local 1 // int prefixLength
         0: .line 266
            aload 0 /* address */
            invokevirtual java.net.InetAddress.getAddress:()[B
            astore 2 /* array */
        start local 2 // byte[] array
         1: .line 267
            aload 2 /* array */
            iload 1 /* prefixLength */
            invokestatic android.net.NetworkUtils.maskRawAddress:([BI)V
         2: .line 269
            aconst_null
            astore 3 /* netPart */
        start local 3 // java.net.InetAddress netPart
         3: .line 271
            aload 2 /* array */
            invokestatic java.net.InetAddress.getByAddress:([B)Ljava/net/InetAddress;
            astore 3 /* netPart */
         4: .line 272
            goto 7
      StackMap locals: java.net.InetAddress int byte[] java.net.InetAddress
      StackMap stack: java.net.UnknownHostException
         5: astore 4 /* e */
        start local 4 // java.net.UnknownHostException e
         6: .line 273
            new java.lang.RuntimeException
            dup
            new java.lang.StringBuilder
            dup
            ldc "getNetworkPart error - "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* e */
            invokevirtual java.net.UnknownHostException.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // java.net.UnknownHostException e
         7: .line 275
      StackMap locals:
      StackMap stack:
            aload 3 /* netPart */
            areturn
        end local 3 // java.net.InetAddress netPart
        end local 2 // byte[] array
        end local 1 // int prefixLength
        end local 0 // java.net.InetAddress address
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    8     0       address  Ljava/net/InetAddress;
            0    8     1  prefixLength  I
            1    8     2         array  [B
            3    8     3       netPart  Ljava/net/InetAddress;
            6    7     4             e  Ljava/net/UnknownHostException;
      Exception table:
        from    to  target  type
           3     4       5  Class java.net.UnknownHostException
    MethodParameters:
              Name  Flags
      address       
      prefixLength  

  public static int getImplicitNetmask(java.net.Inet4Address);
    descriptor: (Ljava/net/Inet4Address;)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // java.net.Inet4Address address
         0: .line 282
            aload 0 /* address */
            invokevirtual java.net.Inet4Address.getAddress:()[B
            iconst_0
            baload
            sipush 255
            iand
            istore 1 /* firstByte */
        start local 1 // int firstByte
         1: .line 283
            iload 1 /* firstByte */
            sipush 128
            if_icmpge 3
         2: .line 284
            bipush 8
            ireturn
         3: .line 285
      StackMap locals: int
      StackMap stack:
            iload 1 /* firstByte */
            sipush 192
            if_icmpge 5
         4: .line 286
            bipush 16
            ireturn
         5: .line 287
      StackMap locals:
      StackMap stack:
            iload 1 /* firstByte */
            sipush 224
            if_icmpge 7
         6: .line 288
            bipush 24
            ireturn
         7: .line 290
      StackMap locals:
      StackMap stack:
            bipush 32
            ireturn
        end local 1 // int firstByte
        end local 0 // java.net.Inet4Address address
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    8     0    address  Ljava/net/Inet4Address;
            1    8     1  firstByte  I
    MethodParameters:
         Name  Flags
      address  

  public static android.util.Pair<java.net.InetAddress, java.lang.Integer> parseIpAndMask(java.lang.String);
    descriptor: (Ljava/lang/String;)Landroid/util/Pair;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 304
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tThe method parseNumericAddress(String) is undefined for the type InetAddress\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    Signature: (Ljava/lang/String;)Landroid/util/Pair<Ljava/net/InetAddress;Ljava/lang/Integer;>;
    MethodParameters:
                 Name  Flags
      ipAndMaskString  

  public static boolean addressTypeMatches(java.net.InetAddress, java.net.InetAddress);
    descriptor: (Ljava/net/InetAddress;Ljava/net/InetAddress;)Z
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // java.net.InetAddress left
        start local 1 // java.net.InetAddress right
         0: .line 323
            aload 0 /* left */
            instanceof java.net.Inet4Address
            ifeq 1
            aload 1 /* right */
            instanceof java.net.Inet4Address
            ifne 3
         1: .line 324
      StackMap locals:
      StackMap stack:
            aload 0 /* left */
            instanceof java.net.Inet6Address
            ifeq 2
            aload 1 /* right */
            instanceof java.net.Inet6Address
            ifne 3
         2: .line 323
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
      StackMap locals:
      StackMap stack:
         3: iconst_1
            ireturn
        end local 1 // java.net.InetAddress right
        end local 0 // java.net.InetAddress left
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0   left  Ljava/net/InetAddress;
            0    4     1  right  Ljava/net/InetAddress;
    MethodParameters:
       Name  Flags
      left   
      right  

  public static java.net.InetAddress hexToInet6Address(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/net/InetAddress;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=8, locals=2, args_size=1
        start local 0 // java.lang.String addrHexString
         0: .line 337
            getstatic java.util.Locale.US:Ljava/util/Locale;
            ldc "%s:%s:%s:%s:%s:%s:%s:%s"
            bipush 8
            anewarray java.lang.Object
            dup
            iconst_0
         1: .line 338
            aload 0 /* addrHexString */
            iconst_0
            iconst_4
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
            dup
            iconst_1
            aload 0 /* addrHexString */
            iconst_4
            bipush 8
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
            dup
            iconst_2
         2: .line 339
            aload 0 /* addrHexString */
            bipush 8
            bipush 12
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
            dup
            iconst_3
            aload 0 /* addrHexString */
            bipush 12
            bipush 16
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
            dup
            iconst_4
         3: .line 340
            aload 0 /* addrHexString */
            bipush 16
            bipush 20
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
            dup
            iconst_5
            aload 0 /* addrHexString */
            bipush 20
            bipush 24
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
            dup
            bipush 6
         4: .line 341
            aload 0 /* addrHexString */
            bipush 24
            bipush 28
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
            dup
            bipush 7
            aload 0 /* addrHexString */
            bipush 28
            bipush 32
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            aastore
         5: .line 337
            invokestatic java.lang.String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
            invokestatic android.net.NetworkUtils.numericToInetAddress:(Ljava/lang/String;)Ljava/net/InetAddress;
         6: areturn
         7: .line 342
      StackMap locals:
      StackMap stack: java.lang.Exception
            astore 1 /* e */
        start local 1 // java.lang.Exception e
         8: .line 343
            ldc "NetworkUtils"
            new java.lang.StringBuilder
            dup
            ldc "error in hexToInet6Address("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* addrHexString */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            ldc "): "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 1 /* e */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         9: .line 344
            new java.lang.IllegalArgumentException
            dup
            aload 1 /* e */
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.lang.Exception e
        end local 0 // java.lang.String addrHexString
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   10     0  addrHexString  Ljava/lang/String;
            8   10     1              e  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
           0     6       7  Class java.lang.Exception
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
               Name  Flags
      addrHexString  

  public static java.lang.String[] makeStrings(java.util.Collection<java.net.InetAddress>);
    descriptor: (Ljava/util/Collection;)[Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.util.Collection addrs
         0: .line 354
            aload 0 /* addrs */
            invokeinterface java.util.Collection.size:()I
            anewarray java.lang.String
            astore 1 /* result */
        start local 1 // java.lang.String[] result
         1: .line 355
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: .line 356
            aload 0 /* addrs */
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: java.util.Collection java.lang.String[] int top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast java.net.InetAddress
            astore 3 /* addr */
        start local 3 // java.net.InetAddress addr
         4: .line 357
            aload 1 /* result */
            iload 2 /* i */
            iinc 2 /* i */ 1
            aload 3 /* addr */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            aastore
        end local 3 // java.net.InetAddress addr
         5: .line 356
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 359
            aload 1 /* result */
            areturn
        end local 2 // int i
        end local 1 // java.lang.String[] result
        end local 0 // java.util.Collection addrs
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0   addrs  Ljava/util/Collection<Ljava/net/InetAddress;>;
            1    7     1  result  [Ljava/lang/String;
            2    7     2       i  I
            4    5     3    addr  Ljava/net/InetAddress;
    Signature: (Ljava/util/Collection<Ljava/net/InetAddress;>;)[Ljava/lang/String;
    MethodParameters:
       Name  Flags
      addrs  

  public static java.lang.String trimV4AddrZeros(java.lang.String);
    descriptor: (Ljava/lang/String;)Ljava/lang/String;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.lang.String addr
         0: .line 372
            aload 0 /* addr */
            ifnonnull 1
            aconst_null
            areturn
         1: .line 373
      StackMap locals:
      StackMap stack:
            aload 0 /* addr */
            ldc "\\."
            invokevirtual java.lang.String.split:(Ljava/lang/String;)[Ljava/lang/String;
            astore 1 /* octets */
        start local 1 // java.lang.String[] octets
         2: .line 374
            aload 1 /* octets */
            arraylength
            iconst_4
            if_icmpeq 3
            aload 0 /* addr */
            areturn
         3: .line 375
      StackMap locals: java.lang.String[]
      StackMap stack:
            new java.lang.StringBuilder
            dup
            bipush 16
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 2 /* builder */
        start local 2 // java.lang.StringBuilder builder
         4: .line 376
            aconst_null
            astore 3 /* result */
        start local 3 // java.lang.String result
         5: .line 377
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         6: goto 15
         7: .line 379
      StackMap locals: java.lang.StringBuilder java.lang.String int
      StackMap stack:
            aload 1 /* octets */
            iload 4 /* i */
            aaload
            invokevirtual java.lang.String.length:()I
            iconst_3
            if_icmple 9
            aload 0 /* addr */
         8: areturn
         9: .line 380
      StackMap locals:
      StackMap stack:
            aload 2 /* builder */
            aload 1 /* octets */
            iload 4 /* i */
            aaload
            invokestatic java.lang.Integer.parseInt:(Ljava/lang/String;)I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            pop
        10: .line 381
            goto 13
      StackMap locals:
      StackMap stack: java.lang.NumberFormatException
        11: pop
        12: .line 382
            aload 0 /* addr */
            areturn
        13: .line 384
      StackMap locals:
      StackMap stack:
            iload 4 /* i */
            iconst_3
            if_icmpge 14
            aload 2 /* builder */
            bipush 46
            invokevirtual java.lang.StringBuilder.append:(C)Ljava/lang/StringBuilder;
            pop
        14: .line 377
      StackMap locals:
      StackMap stack:
            iinc 4 /* i */ 1
      StackMap locals:
      StackMap stack:
        15: iload 4 /* i */
            iconst_4
            if_icmplt 7
        end local 4 // int i
        16: .line 386
            aload 2 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 3 /* result */
        17: .line 387
            aload 3 /* result */
            areturn
        end local 3 // java.lang.String result
        end local 2 // java.lang.StringBuilder builder
        end local 1 // java.lang.String[] octets
        end local 0 // java.lang.String addr
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   18     0     addr  Ljava/lang/String;
            2   18     1   octets  [Ljava/lang/String;
            4   18     2  builder  Ljava/lang/StringBuilder;
            5   18     3   result  Ljava/lang/String;
            6   16     4        i  I
      Exception table:
        from    to  target  type
           7     8      11  Class java.lang.NumberFormatException
           9    10      11  Class java.lang.NumberFormatException
    MethodParameters:
      Name  Flags
      addr  

  private static java.util.TreeSet<android.net.IpPrefix> deduplicatePrefixSet(java.util.TreeSet<android.net.IpPrefix>);
    descriptor: (Ljava/util/TreeSet;)Ljava/util/TreeSet;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // java.util.TreeSet src
         0: .line 398
            new java.util.TreeSet
            dup
            aload 0 /* src */
            invokevirtual java.util.TreeSet.comparator:()Ljava/util/Comparator;
            invokespecial java.util.TreeSet.<init>:(Ljava/util/Comparator;)V
            astore 1 /* dst */
        start local 1 // java.util.TreeSet dst
         1: .line 407
            aload 0 /* src */
            invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
            astore 3
            goto 9
      StackMap locals: java.util.TreeSet java.util.TreeSet top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.net.IpPrefix
            astore 2 /* newPrefix */
        start local 2 // android.net.IpPrefix newPrefix
         3: .line 408
            aload 1 /* dst */
            invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
            astore 5
            goto 7
      StackMap locals: java.util.TreeSet java.util.TreeSet android.net.IpPrefix java.util.Iterator top java.util.Iterator
      StackMap stack:
         4: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.net.IpPrefix
            astore 4 /* existingPrefix */
        start local 4 // android.net.IpPrefix existingPrefix
         5: .line 409
            aload 4 /* existingPrefix */
            aload 2 /* newPrefix */
            invokevirtual android.net.IpPrefix.containsPrefix:(Landroid/net/IpPrefix;)Z
            ifeq 7
         6: .line 410
            goto 9
        end local 4 // android.net.IpPrefix existingPrefix
         7: .line 408
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         8: .line 413
            aload 1 /* dst */
            aload 2 /* newPrefix */
            invokevirtual java.util.TreeSet.add:(Ljava/lang/Object;)Z
            pop
        end local 2 // android.net.IpPrefix newPrefix
         9: .line 407
      StackMap locals: java.util.TreeSet java.util.TreeSet top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
        10: .line 415
            aload 1 /* dst */
            areturn
        end local 1 // java.util.TreeSet dst
        end local 0 // java.util.TreeSet src
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   11     0             src  Ljava/util/TreeSet<Landroid/net/IpPrefix;>;
            1   11     1             dst  Ljava/util/TreeSet<Landroid/net/IpPrefix;>;
            3    9     2       newPrefix  Landroid/net/IpPrefix;
            5    7     4  existingPrefix  Landroid/net/IpPrefix;
    Signature: (Ljava/util/TreeSet<Landroid/net/IpPrefix;>;)Ljava/util/TreeSet<Landroid/net/IpPrefix;>;
    MethodParameters:
      Name  Flags
      src   final

  public static long routedIPv4AddressCount(java.util.TreeSet<android.net.IpPrefix>);
    descriptor: (Ljava/util/TreeSet;)J
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=6, args_size=1
        start local 0 // java.util.TreeSet prefixes
         0: .line 428
            lconst_0
            lstore 1 /* routedIPCount */
        start local 1 // long routedIPCount
         1: .line 429
            aload 0 /* prefixes */
            invokestatic android.net.NetworkUtils.deduplicatePrefixSet:(Ljava/util/TreeSet;)Ljava/util/TreeSet;
            invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
            astore 4
            goto 7
      StackMap locals: java.util.TreeSet long top java.util.Iterator
      StackMap stack:
         2: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.net.IpPrefix
            astore 3 /* prefix */
        start local 3 // android.net.IpPrefix prefix
         3: .line 430
            aload 3 /* prefix */
            invokevirtual android.net.IpPrefix.isIPv4:()Z
            ifne 5
         4: .line 431
            ldc "NetworkUtils"
            ldc "Non-IPv4 prefix in routedIPv4AddressCount"
            invokestatic android.util.Log.wtf:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         5: .line 433
      StackMap locals: java.util.TreeSet long android.net.IpPrefix java.util.Iterator
      StackMap stack:
            bipush 32
            aload 3 /* prefix */
            invokevirtual android.net.IpPrefix.getPrefixLength:()I
            isub
            istore 5 /* rank */
        start local 5 // int rank
         6: .line 434
            lload 1 /* routedIPCount */
            lconst_1
            iload 5 /* rank */
            lshl
            ladd
            lstore 1 /* routedIPCount */
        end local 5 // int rank
        end local 3 // android.net.IpPrefix prefix
         7: .line 429
      StackMap locals: java.util.TreeSet long top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 436
            lload 1 /* routedIPCount */
            lreturn
        end local 1 // long routedIPCount
        end local 0 // java.util.TreeSet prefixes
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0       prefixes  Ljava/util/TreeSet<Landroid/net/IpPrefix;>;
            1    9     1  routedIPCount  J
            3    7     3         prefix  Landroid/net/IpPrefix;
            6    7     5           rank  I
    Signature: (Ljava/util/TreeSet<Landroid/net/IpPrefix;>;)J
    MethodParameters:
          Name  Flags
      prefixes  final

  public static java.math.BigInteger routedIPv6AddressCount(java.util.TreeSet<android.net.IpPrefix>);
    descriptor: (Ljava/util/TreeSet;)Ljava/math/BigInteger;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=1
        start local 0 // java.util.TreeSet prefixes
         0: .line 447
            getstatic java.math.BigInteger.ZERO:Ljava/math/BigInteger;
            astore 1 /* routedIPCount */
        start local 1 // java.math.BigInteger routedIPCount
         1: .line 448
            aload 0 /* prefixes */
            invokestatic android.net.NetworkUtils.deduplicatePrefixSet:(Ljava/util/TreeSet;)Ljava/util/TreeSet;
            invokevirtual java.util.TreeSet.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: java.util.TreeSet java.math.BigInteger top java.util.Iterator
      StackMap stack:
         2: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.net.IpPrefix
            astore 2 /* prefix */
        start local 2 // android.net.IpPrefix prefix
         3: .line 449
            aload 2 /* prefix */
            invokevirtual android.net.IpPrefix.isIPv6:()Z
            ifne 5
         4: .line 450
            ldc "NetworkUtils"
            ldc "Non-IPv6 prefix in routedIPv6AddressCount"
            invokestatic android.util.Log.wtf:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         5: .line 452
      StackMap locals: java.util.TreeSet java.math.BigInteger android.net.IpPrefix java.util.Iterator
      StackMap stack:
            sipush 128
            aload 2 /* prefix */
            invokevirtual android.net.IpPrefix.getPrefixLength:()I
            isub
            istore 4 /* rank */
        start local 4 // int rank
         6: .line 453
            aload 1 /* routedIPCount */
            getstatic java.math.BigInteger.ONE:Ljava/math/BigInteger;
            iload 4 /* rank */
            invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
            invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
            astore 1 /* routedIPCount */
        end local 4 // int rank
        end local 2 // android.net.IpPrefix prefix
         7: .line 448
      StackMap locals: java.util.TreeSet java.math.BigInteger top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 2
         8: .line 455
            aload 1 /* routedIPCount */
            areturn
        end local 1 // java.math.BigInteger routedIPCount
        end local 0 // java.util.TreeSet prefixes
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0       prefixes  Ljava/util/TreeSet<Landroid/net/IpPrefix;>;
            1    9     1  routedIPCount  Ljava/math/BigInteger;
            3    7     2         prefix  Landroid/net/IpPrefix;
            6    7     4           rank  I
    Signature: (Ljava/util/TreeSet<Landroid/net/IpPrefix;>;)Ljava/math/BigInteger;
    MethodParameters:
          Name  Flags
      prefixes  final
}
SourceFile: "NetworkUtils.java"