public class android.net.VpnService extends android.app.Service
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.net.VpnService
  super_class: android.app.Service
{
  public static final java.lang.String SERVICE_INTERFACE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "android.net.VpnService"

  public static final java.lang.String SERVICE_META_DATA_SUPPORTS_ALWAYS_ON;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "android.net.VpnService.SUPPORTS_ALWAYS_ON"

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

  private static android.net.IConnectivityManager getService();
    descriptor: ()Landroid/net/IConnectivityManager;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 167
            ldc "connectivity"
            invokestatic android.os.ServiceManager.getService:(Ljava/lang/String;)Landroid/os/IBinder;
         1: .line 166
            invokestatic android.net.IConnectivityManager$Stub.asInterface:(Landroid/os/IBinder;)Landroid/net/IConnectivityManager;
            areturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static android.content.Intent prepare(android.content.Context);
    descriptor: (Landroid/content/Context;)Landroid/content/Intent;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=4, locals=1, args_size=1
        start local 0 // android.content.Context context
         0: .line 195
            invokestatic android.net.VpnService.getService:()Landroid/net/IConnectivityManager;
            aload 0 /* context */
            invokevirtual android.content.Context.getPackageName:()Ljava/lang/String;
            aconst_null
            aload 0 /* context */
            invokevirtual android.content.Context.getUserId:()I
            invokeinterface android.net.IConnectivityManager.prepareVpn:(Ljava/lang/String;Ljava/lang/String;I)Z
            ifeq 3
         1: .line 196
            aconst_null
            areturn
         2: .line 198
      StackMap locals:
      StackMap stack: android.os.RemoteException
            pop
         3: .line 201
      StackMap locals:
      StackMap stack:
            invokestatic com.android.internal.net.VpnConfig.getIntentForConfirmation:()Landroid/content/Intent;
            areturn
        end local 0 // android.content.Context context
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    4     0  context  Landroid/content/Context;
      Exception table:
        from    to  target  type
           0     1       2  Class android.os.RemoteException
    MethodParameters:
         Name  Flags
      context  

  public static void prepareAndAuthorize(android.content.Context);
    descriptor: (Landroid/content/Context;)V
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
         0: .line 216
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tandroid.Manifest.permission.CONTROL_VPN cannot be resolved to a type\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
      LocalVariableTable:
        Start  End  Slot  Name  Signature
    RuntimeVisibleAnnotations: 
      android.annotation.SystemApi()
    MethodParameters:
         Name  Flags
      context  

  public boolean protect(int);
    descriptor: (I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.net.VpnService this
        start local 1 // int socket
         0: .line 247
            iload 1 /* socket */
            invokestatic android.net.NetworkUtils.protectFromVpn:(I)Z
            ireturn
        end local 1 // int socket
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    1     0    this  Landroid/net/VpnService;
            0    1     1  socket  I
    MethodParameters:
        Name  Flags
      socket  

  public boolean protect(java.net.Socket);
    descriptor: (Ljava/net/Socket;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.net.VpnService this
         0: .line 257
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tThe method getFileDescriptor$() is undefined for the type Socket\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/net/VpnService;
    MethodParameters:
        Name  Flags
      socket  

  public boolean protect(java.net.DatagramSocket);
    descriptor: (Ljava/net/DatagramSocket;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.net.VpnService this
         0: .line 268
            new java.lang.Error
            dup
            ldc "Unresolved compilation problem: \n\tThe method getFileDescriptor$() is undefined for the type DatagramSocket\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/net/VpnService;
    MethodParameters:
        Name  Flags
      socket  

  public boolean addAddress(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.net.VpnService this
        start local 1 // java.net.InetAddress address
        start local 2 // int prefixLength
         0: .line 291
            aload 1 /* address */
            iload 2 /* prefixLength */
            invokestatic android.net.VpnService.check:(Ljava/net/InetAddress;I)V
         1: .line 293
            invokestatic android.net.VpnService.getService:()Landroid/net/IConnectivityManager;
            aload 1 /* address */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            iload 2 /* prefixLength */
            invokeinterface android.net.IConnectivityManager.addVpnAddress:(Ljava/lang/String;I)Z
         2: ireturn
         3: .line 294
      StackMap locals:
      StackMap stack: android.os.RemoteException
            astore 3 /* e */
        start local 3 // android.os.RemoteException e
         4: .line 295
            new java.lang.IllegalStateException
            dup
            aload 3 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // android.os.RemoteException e
        end local 2 // int prefixLength
        end local 1 // java.net.InetAddress address
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Landroid/net/VpnService;
            0    5     1       address  Ljava/net/InetAddress;
            0    5     2  prefixLength  I
            4    5     3             e  Landroid/os/RemoteException;
      Exception table:
        from    to  target  type
           1     2       3  Class android.os.RemoteException
    MethodParameters:
              Name  Flags
      address       
      prefixLength  

  public boolean removeAddress(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.net.VpnService this
        start local 1 // java.net.InetAddress address
        start local 2 // int prefixLength
         0: .line 321
            aload 1 /* address */
            iload 2 /* prefixLength */
            invokestatic android.net.VpnService.check:(Ljava/net/InetAddress;I)V
         1: .line 323
            invokestatic android.net.VpnService.getService:()Landroid/net/IConnectivityManager;
            aload 1 /* address */
            invokevirtual java.net.InetAddress.getHostAddress:()Ljava/lang/String;
            iload 2 /* prefixLength */
            invokeinterface android.net.IConnectivityManager.removeVpnAddress:(Ljava/lang/String;I)Z
         2: ireturn
         3: .line 324
      StackMap locals:
      StackMap stack: android.os.RemoteException
            astore 3 /* e */
        start local 3 // android.os.RemoteException e
         4: .line 325
            new java.lang.IllegalStateException
            dup
            aload 3 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 3 // android.os.RemoteException e
        end local 2 // int prefixLength
        end local 1 // java.net.InetAddress address
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Landroid/net/VpnService;
            0    5     1       address  Ljava/net/InetAddress;
            0    5     2  prefixLength  I
            4    5     3             e  Landroid/os/RemoteException;
      Exception table:
        from    to  target  type
           1     2       3  Class android.os.RemoteException
    MethodParameters:
              Name  Flags
      address       
      prefixLength  

  public boolean setUnderlyingNetworks(android.net.Network[]);
    descriptor: ([Landroid/net/Network;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.net.VpnService this
        start local 1 // android.net.Network[] networks
         0: .line 363
            invokestatic android.net.VpnService.getService:()Landroid/net/IConnectivityManager;
            aload 1 /* networks */
            invokeinterface android.net.IConnectivityManager.setUnderlyingNetworksForVpn:([Landroid/net/Network;)Z
         1: ireturn
         2: .line 364
      StackMap locals:
      StackMap stack: android.os.RemoteException
            astore 2 /* e */
        start local 2 // android.os.RemoteException e
         3: .line 365
            new java.lang.IllegalStateException
            dup
            aload 2 /* e */
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/Throwable;)V
            athrow
        end local 2 // android.os.RemoteException e
        end local 1 // android.net.Network[] networks
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    4     0      this  Landroid/net/VpnService;
            0    4     1  networks  [Landroid/net/Network;
            3    4     2         e  Landroid/os/RemoteException;
      Exception table:
        from    to  target  type
           0     1       2  Class android.os.RemoteException
    MethodParameters:
          Name  Flags
      networks  

  public android.os.IBinder onBind(android.content.Intent);
    descriptor: (Landroid/content/Intent;)Landroid/os/IBinder;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.net.VpnService this
        start local 1 // android.content.Intent intent
         0: .line 379
            aload 1 /* intent */
            ifnull 2
            ldc "android.net.VpnService"
            aload 1 /* intent */
            invokevirtual android.content.Intent.getAction:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 2
         1: .line 380
            new android.net.VpnService$Callback
            dup
            aload 0 /* this */
            invokespecial android.net.VpnService$Callback.<init>:(Landroid/net/VpnService;)V
            areturn
         2: .line 382
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 1 // android.content.Intent intent
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    3     0    this  Landroid/net/VpnService;
            0    3     1  intent  Landroid/content/Intent;
    MethodParameters:
        Name  Flags
      intent  

  public void onRevoke();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.net.VpnService this
         0: .line 397
            aload 0 /* this */
            invokevirtual android.net.VpnService.stopSelf:()V
         1: .line 398
            return
        end local 0 // android.net.VpnService this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/net/VpnService;

  private static void check(java.net.InetAddress, int);
    descriptor: (Ljava/net/InetAddress;I)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // java.net.InetAddress address
        start local 1 // int prefixLength
         0: .line 418
            aload 0 /* address */
            invokevirtual java.net.InetAddress.isLoopbackAddress:()Z
            ifeq 2
         1: .line 419
            new java.lang.IllegalArgumentException
            dup
            ldc "Bad address"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 421
      StackMap locals:
      StackMap stack:
            aload 0 /* address */
            instanceof java.net.Inet4Address
            ifeq 5
         3: .line 422
            iload 1 /* prefixLength */
            iflt 4
            iload 1 /* prefixLength */
            bipush 32
            if_icmple 9
         4: .line 423
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Bad prefixLength"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         5: .line 425
      StackMap locals:
      StackMap stack:
            aload 0 /* address */
            instanceof java.net.Inet6Address
            ifeq 8
         6: .line 426
            iload 1 /* prefixLength */
            iflt 7
            iload 1 /* prefixLength */
            sipush 128
            if_icmple 9
         7: .line 427
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Bad prefixLength"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         8: .line 430
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Unsupported family"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 432
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int prefixLength
        end local 0 // java.net.InetAddress address
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   10     0       address  Ljava/net/InetAddress;
            0   10     1  prefixLength  I
    MethodParameters:
              Name  Flags
      address       
      prefixLength  
}
SourceFile: "VpnService.java"
NestMembers:
  android.net.VpnService$Builder  android.net.VpnService$Callback
InnerClasses:
  public abstract Stub = android.net.IConnectivityManager$Stub of android.net.IConnectivityManager
  public Builder = android.net.VpnService$Builder of android.net.VpnService
  private Callback = android.net.VpnService$Callback of android.net.VpnService