.class public Lorg/lsposed/lspatch/metaloader/LSPAppComponentFactoryStub;
.super Landroid/app/AppComponentFactory;
.source "SourceFile"


# static fields
.field public static dex:[B


# direct methods
.method static constructor <clinit>()V
    .registers 12

    const-string v0, "Cyber"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    const-string v0, "C"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V

    invoke-static {}, La/a;->a()Ljava/util/Map;

    move-result-object v0

    :try_start_e
    const-class v1, Lorg/lsposed/lspatch/metaloader/LSPAppComponentFactoryStub;

    invoke-virtual {v1}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;

    move-result-object v1

    invoke-static {v1}, Ljava/util/Objects;->requireNonNull(Ljava/lang/Object;)Ljava/lang/Object;

    const-string v2, "dalvik.system.VMRuntime"

    invoke-static {v2}, Ljava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;

    move-result-object v2

    const-string v3, "getRuntime"

    const/4 v4, 0x0

    new-array v5, v4, [Ljava/lang/Class;

    invoke-virtual {v2, v3, v5}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;

    move-result-object v3

    const/4 v5, 0x1

    invoke-virtual {v3, v5}, Ljava/lang/reflect/AccessibleObject;->setAccessible(Z)V

    const-string v6, "vmInstructionSet"

    new-array v7, v4, [Ljava/lang/Class;

    invoke-virtual {v2, v6, v7}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;

    move-result-object v2

    invoke-virtual {v2, v5}, Ljava/lang/reflect/AccessibleObject;->setAccessible(Z)V

    const/4 v6, 0x0

    new-array v7, v4, [Ljava/lang/Object;

    invoke-virtual {v3, v6, v7}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v3

    new-array v6, v4, [Ljava/lang/Object;

    invoke-virtual {v2, v3, v6}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v2

    check-cast v2, Ljava/lang/String;

    invoke-interface {v0, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v0

    check-cast v0, Ljava/lang/String;

    const-string v2, "assets/lspatch/config.json"

    invoke-virtual {v1, v2}, Ljava/lang/ClassLoader;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;

    move-result-object v2
    :try_end_50
    .catchall {:try_start_e .. :try_end_50} :catchall_1ab

    :try_start_50
    new-instance v3, Landroid/util/JsonReader;

    new-instance v6, Ljava/io/InputStreamReader;

    invoke-direct {v6, v2}, Ljava/io/InputStreamReader;-><init>(Ljava/io/InputStream;)V

    invoke-direct {v3, v6}, Landroid/util/JsonReader;-><init>(Ljava/io/Reader;)V
    :try_end_5a
    .catchall {:try_start_50 .. :try_end_5a} :catchall_19f

    :try_start_5a
    invoke-virtual {v3}, Landroid/util/JsonReader;->beginObject()V

    :goto_5d
    invoke-virtual {v3}, Landroid/util/JsonReader;->hasNext()Z

    move-result v6

    if-eqz v6, :cond_78

    invoke-virtual {v3}, Landroid/util/JsonReader;->nextName()Ljava/lang/String;

    move-result-object v6

    const-string v7, "useManager"

    invoke-virtual {v6, v7}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z

    move-result v6

    if-eqz v6, :cond_74

    invoke-virtual {v3}, Landroid/util/JsonReader;->nextBoolean()Z

    move-result v6

    goto :goto_79

    :cond_74
    invoke-virtual {v3}, Landroid/util/JsonReader;->skipValue()V
    :try_end_77
    .catchall {:try_start_5a .. :try_end_77} :catchall_195

    goto :goto_5d

    :cond_78
    move v6, v4

    :goto_79
    :try_start_79
    invoke-virtual {v3}, Landroid/util/JsonReader;->close()V
    :try_end_7c
    .catchall {:try_start_79 .. :try_end_7c} :catchall_19f

    if-eqz v2, :cond_81

    :try_start_7e
    invoke-virtual {v2}, Ljava/io/InputStream;->close()V
    :try_end_81
    .catchall {:try_start_7e .. :try_end_81} :catchall_1ab

    :cond_81
    const-string v2, "/liblspatch.so"

    const-string v3, "assets/lspatch/loader.dex"

    const-string v7, "LSPatch-MetaLoader"

    const/4 v8, -0x1

    const/16 v9, 0x2000

    if-eqz v6, :cond_133

    :try_start_8c
    const-string v1, "Bootstrap loader from manager"

    invoke-static {v7, v1}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    const-string v1, "package"

    invoke-static {v1}, Landroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;

    move-result-object v1

    invoke-static {v1}, Landroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager;

    move-result-object v1

    sget v6, Landroid/os/Build$VERSION;->SDK_INT:I
    :try_end_9d
    .catchall {:try_start_8c .. :try_end_9d} :catchall_1ab

    const/16 v7, 0x21

    const-string v10, "org.lsposed.lspatch"

    if-lt v6, v7, :cond_c0

    :try_start_a3
    const-class v6, Landroid/content/pm/IPackageManager;

    const/4 v7, 0x3

    new-array v7, v7, [Ljava/lang/Object;

    aput-object v10, v7, v4

    const-wide/16 v10, 0x0

    invoke-static {v10, v11}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;

    move-result-object v10

    aput-object v10, v7, v5

    const/4 v5, 0x2

    invoke-static {v4}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;

    move-result-object v10

    aput-object v10, v7, v5

    invoke-static {v6, v1, v7}, Lorg/lsposed/hiddenapibypass/i;->a(Ljava/lang/Class;Landroid/content/pm/IPackageManager;[Ljava/lang/Object;)Ljava/lang/Object;

    move-result-object v1

    check-cast v1, Landroid/content/pm/ApplicationInfo;

    goto :goto_c4

    :cond_c0
    invoke-interface {v1, v10, v4, v4}, Landroid/content/pm/IPackageManager;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;

    move-result-object v1

    :goto_c4
    new-instance v5, Ljava/util/zip/ZipFile;

    new-instance v6, Ljava/io/File;

    iget-object v7, v1, Landroid/content/pm/ApplicationInfo;->sourceDir:Ljava/lang/String;

    invoke-direct {v6, v7}, Ljava/io/File;-><init>(Ljava/lang/String;)V

    invoke-direct {v5, v6}, Ljava/util/zip/ZipFile;-><init>(Ljava/io/File;)V
    :try_end_d0
    .catchall {:try_start_a3 .. :try_end_d0} :catchall_1ab

    :try_start_d0
    invoke-virtual {v5, v3}, Ljava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;

    move-result-object v3

    invoke-virtual {v5, v3}, Ljava/util/zip/ZipFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;

    move-result-object v3
    :try_end_d8
    .catchall {:try_start_d0 .. :try_end_d8} :catchall_129

    :try_start_d8
    new-instance v6, Ljava/io/ByteArrayOutputStream;

    invoke-direct {v6}, Ljava/io/ByteArrayOutputStream;-><init>()V
    :try_end_dd
    .catchall {:try_start_d8 .. :try_end_dd} :catchall_11d

    :try_start_dd
    new-array v7, v9, [B

    :goto_df
    invoke-virtual {v3, v7}, Ljava/io/InputStream;->read([B)I

    move-result v9

    if-eq v8, v9, :cond_eb

    invoke-virtual {v6, v7, v4, v9}, Ljava/io/OutputStream;->write([BII)V

    goto :goto_df

    :catchall_e9
    move-exception v0

    goto :goto_114

    :cond_eb
    invoke-virtual {v6}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B

    move-result-object v4

    sput-object v4, Lorg/lsposed/lspatch/metaloader/LSPAppComponentFactoryStub;->dex:[B
    :try_end_f1
    .catchall {:try_start_dd .. :try_end_f1} :catchall_e9

    :try_start_f1
    invoke-virtual {v6}, Ljava/io/ByteArrayOutputStream;->close()V
    :try_end_f4
    .catchall {:try_start_f1 .. :try_end_f4} :catchall_11d

    :try_start_f4
    invoke-virtual {v3}, Ljava/io/InputStream;->close()V
    :try_end_f7
    .catchall {:try_start_f4 .. :try_end_f7} :catchall_129

    :try_start_f7
    invoke-virtual {v5}, Ljava/util/zip/ZipFile;->close()V

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    iget-object v1, v1, Landroid/content/pm/ApplicationInfo;->sourceDir:Ljava/lang/String;

    invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    const-string v1, "!/assets/lspatch/so/"

    invoke-virtual {v3, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0
    :try_end_113
    .catchall {:try_start_f7 .. :try_end_113} :catchall_1ab

    goto :goto_17c

    :goto_114
    :try_start_114
    invoke-virtual {v6}, Ljava/io/ByteArrayOutputStream;->close()V
    :try_end_117
    .catchall {:try_start_114 .. :try_end_117} :catchall_118

    goto :goto_11c

    :catchall_118
    move-exception v1

    :try_start_119
    invoke-virtual {v0, v1}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V

    :goto_11c
    throw v0
    :try_end_11d
    .catchall {:try_start_119 .. :try_end_11d} :catchall_11d

    :catchall_11d
    move-exception v0

    if-eqz v3, :cond_128

    :try_start_120
    invoke-virtual {v3}, Ljava/io/InputStream;->close()V
    :try_end_123
    .catchall {:try_start_120 .. :try_end_123} :catchall_124

    goto :goto_128

    :catchall_124
    move-exception v1

    :try_start_125
    invoke-virtual {v0, v1}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V

    :cond_128
    :goto_128
    throw v0
    :try_end_129
    .catchall {:try_start_125 .. :try_end_129} :catchall_129

    :catchall_129
    move-exception v0

    :try_start_12a
    invoke-virtual {v5}, Ljava/util/zip/ZipFile;->close()V
    :try_end_12d
    .catchall {:try_start_12a .. :try_end_12d} :catchall_12e

    goto :goto_132

    :catchall_12e
    move-exception v1

    :try_start_12f
    invoke-virtual {v0, v1}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V

    :goto_132
    throw v0

    :cond_133
    const-string v5, "Bootstrap loader from embedment"

    invoke-static {v7, v5}, Landroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I

    invoke-virtual {v1, v3}, Ljava/lang/ClassLoader;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;

    move-result-object v3
    :try_end_13c
    .catchall {:try_start_12f .. :try_end_13c} :catchall_1ab

    :try_start_13c
    new-instance v5, Ljava/io/ByteArrayOutputStream;

    invoke-direct {v5}, Ljava/io/ByteArrayOutputStream;-><init>()V
    :try_end_141
    .catchall {:try_start_13c .. :try_end_141} :catchall_189

    :try_start_141
    new-array v6, v9, [B

    :goto_143
    invoke-virtual {v3, v6}, Ljava/io/InputStream;->read([B)I

    move-result v7

    if-eq v8, v7, :cond_14f

    invoke-virtual {v5, v6, v4, v7}, Ljava/io/OutputStream;->write([BII)V

    goto :goto_143

    :catchall_14d
    move-exception v0

    goto :goto_180

    :cond_14f
    invoke-virtual {v5}, Ljava/io/ByteArrayOutputStream;->toByteArray()[B

    move-result-object v4

    sput-object v4, Lorg/lsposed/lspatch/metaloader/LSPAppComponentFactoryStub;->dex:[B
    :try_end_155
    .catchall {:try_start_141 .. :try_end_155} :catchall_14d

    :try_start_155
    invoke-virtual {v5}, Ljava/io/ByteArrayOutputStream;->close()V
    :try_end_158
    .catchall {:try_start_155 .. :try_end_158} :catchall_189

    :try_start_158
    invoke-virtual {v3}, Ljava/io/InputStream;->close()V

    new-instance v3, Ljava/lang/StringBuilder;

    invoke-direct {v3}, Ljava/lang/StringBuilder;-><init>()V

    const-string v4, "assets/lspatch/so/"

    invoke-virtual {v3, v4}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    invoke-virtual {v3}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v1, v0}, Ljava/lang/ClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL;

    move-result-object v0

    invoke-virtual {v0}, Ljava/net/URL;->getPath()Ljava/lang/String;

    move-result-object v0

    const/4 v1, 0x5

    invoke-virtual {v0, v1}, Ljava/lang/String;->substring(I)Ljava/lang/String;

    move-result-object v0

    :goto_17c
    invoke-static {v0}, Ljava/lang/System;->load(Ljava/lang/String;)V
    :try_end_17f
    .catchall {:try_start_158 .. :try_end_17f} :catchall_1ab

    return-void

    :goto_180
    :try_start_180
    invoke-virtual {v5}, Ljava/io/ByteArrayOutputStream;->close()V
    :try_end_183
    .catchall {:try_start_180 .. :try_end_183} :catchall_184

    goto :goto_188

    :catchall_184
    move-exception v1

    :try_start_185
    invoke-virtual {v0, v1}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V

    :goto_188
    throw v0
    :try_end_189
    .catchall {:try_start_185 .. :try_end_189} :catchall_189

    :catchall_189
    move-exception v0

    if-eqz v3, :cond_194

    :try_start_18c
    invoke-virtual {v3}, Ljava/io/InputStream;->close()V
    :try_end_18f
    .catchall {:try_start_18c .. :try_end_18f} :catchall_190

    goto :goto_194

    :catchall_190
    move-exception v1

    :try_start_191
    invoke-virtual {v0, v1}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V

    :cond_194
    :goto_194
    throw v0
    :try_end_195
    .catchall {:try_start_191 .. :try_end_195} :catchall_1ab

    :catchall_195
    move-exception v0

    :try_start_196
    invoke-virtual {v3}, Landroid/util/JsonReader;->close()V
    :try_end_199
    .catchall {:try_start_196 .. :try_end_199} :catchall_19a

    goto :goto_19e

    :catchall_19a
    move-exception v1

    :try_start_19b
    invoke-virtual {v0, v1}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V

    :goto_19e
    throw v0
    :try_end_19f
    .catchall {:try_start_19b .. :try_end_19f} :catchall_19f

    :catchall_19f
    move-exception v0

    if-eqz v2, :cond_1aa

    :try_start_1a2
    invoke-virtual {v2}, Ljava/io/InputStream;->close()V
    :try_end_1a5
    .catchall {:try_start_1a2 .. :try_end_1a5} :catchall_1a6

    goto :goto_1aa

    :catchall_1a6
    move-exception v1

    :try_start_1a7
    invoke-virtual {v0, v1}, Ljava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V

    :cond_1aa
    :goto_1aa
    throw v0
    :try_end_1ab
    .catchall {:try_start_1a7 .. :try_end_1ab} :catchall_1ab

    :catchall_1ab
    move-exception v0

    new-instance v1, Ljava/lang/ExceptionInInitializerError;

    invoke-direct {v1, v0}, Ljava/lang/ExceptionInInitializerError;-><init>(Ljava/lang/Throwable;)V

    throw v1
.end method

.method public constructor <init>()V
    .registers 1

    invoke-direct {p0}, Landroid/app/AppComponentFactory;-><init>()V

    return-void
.end method
 

Javascript Online Compiler

Write, Run & Share Javascript code online using OneCompiler's JS online compiler for free. It's one of the robust, feature-rich online compilers for Javascript language. Getting started with the OneCompiler's Javascript editor is easy and fast. The editor shows sample boilerplate code when you choose language as Javascript and start coding.

About Javascript

Javascript(JS) is a object-oriented programming language which adhere to ECMA Script Standards. Javascript is required to design the behaviour of the web pages.

Key Features

  • Open-source
  • Just-in-time compiled language
  • Embedded along with HTML and makes web pages alive
  • Originally named as LiveScript.
  • Executable in both browser and server which has Javascript engines like V8(chrome), SpiderMonkey(Firefox) etc.

Syntax help

STDIN Example

var readline = require('readline');
var rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
  terminal: false
});

rl.on('line', function(line){
    console.log("Hello, " + line);
});

variable declaration

KeywordDescriptionScope
varVar is used to declare variables(old way of declaring variables)Function or global scope
letlet is also used to declare variables(new way)Global or block Scope
constconst is used to declare const values. Once the value is assigned, it can not be modifiedGlobal or block Scope

Backtick Strings

Interpolation

let greetings = `Hello ${name}`

Multi line Strings

const msg = `
hello
world!
`

Arrays

An array is a collection of items or values.

Syntax:

let arrayName = [value1, value2,..etc];
// or
let arrayName = new Array("value1","value2",..etc);

Example:

let mobiles = ["iPhone", "Samsung", "Pixel"];

// accessing an array
console.log(mobiles[0]);

// changing an array element
mobiles[3] = "Nokia";

Arrow functions

Arrow Functions helps developers to write code in concise way, it’s introduced in ES6.
Arrow functions can be written in multiple ways. Below are couple of ways to use arrow function but it can be written in many other ways as well.

Syntax:

() => expression

Example:

const numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
const squaresOfEvenNumbers = numbers.filter(ele => ele % 2 == 0)
                                    .map(ele => ele ** 2);
console.log(squaresOfEvenNumbers);

De-structuring

Arrays

let [firstName, lastName] = ['Foo', 'Bar']

Objects

let {firstName, lastName} = {
  firstName: 'Foo',
  lastName: 'Bar'
}

rest(...) operator

 const {
    title,
    firstName,
    lastName,
    ...rest
  } = record;

Spread(...) operator

//Object spread
const post = {
  ...options,
  type: "new"
}
//array spread
const users = [
  ...adminUsers,
  ...normalUsers
]

Functions

function greetings({ name = 'Foo' } = {}) { //Defaulting name to Foo
  console.log(`Hello ${name}!`);
}
 
greet() // Hello Foo
greet({ name: 'Bar' }) // Hi Bar

Loops

1. If:

IF is used to execute a block of code based on a condition.

Syntax

if(condition){
    // code
}

2. If-Else:

Else part is used to execute the block of code when the condition fails.

Syntax

if(condition){
    // code
} else {
    // code
}

3. Switch:

Switch is used to replace nested If-Else statements.

Syntax

switch(condition){
    case 'value1' :
        //code
        [break;]
    case 'value2' :
        //code
        [break;]
    .......
    default :
        //code
        [break;]
}

4. For

For loop is used to iterate a set of statements based on a condition.

for(Initialization; Condition; Increment/decrement){  
//code  
} 

5. While

While is also used to iterate a set of statements based on a condition. Usually while is preferred when number of iterations are not known in advance.

while (condition) {  
  // code 
}  

6. Do-While

Do-while is also used to iterate a set of statements based on a condition. It is mostly used when you need to execute the statements atleast once.

do {  
  // code 
} while (condition); 

Classes

ES6 introduced classes along with OOPS concepts in JS. Class is similar to a function which you can think like kind of template which will get called when ever you initialize class.

Syntax:

class className {
  constructor() { ... } //Mandatory Class method
  method1() { ... }
  method2() { ... }
  ...
}

Example:

class Mobile {
  constructor(model) {
    this.name = model;
  }
}

mbl = new Mobile("iPhone");