aboutsummaryrefslogtreecommitdiff
path: root/android
diff options
context:
space:
mode:
authorNeroBurner <pyro4hell@gmail.com>2021-06-21 21:51:42 +0200
committerrubenwardy <rw@rubenwardy.com>2021-10-18 18:11:33 +0100
commit27f4195471fbbac33b5cdc19025ec5aa6c118a75 (patch)
tree193758bcafe425e7dcb9d77796ec3674eea182b6 /android
parentb2596eda32a41a8008b6979d7a29e0c225421a3a (diff)
downloadminetest-27f4195471fbbac33b5cdc19025ec5aa6c118a75.tar.gz
minetest-27f4195471fbbac33b5cdc19025ec5aa6c118a75.tar.bz2
minetest-27f4195471fbbac33b5cdc19025ec5aa6c118a75.zip
Move build/android directory to root of project (#11283)
Diffstat (limited to 'android')
-rw-r--r--android/.gitignore11
-rw-r--r--android/app/build.gradle113
-rw-r--r--android/app/src/main/AndroidManifest.xml62
-rw-r--r--android/app/src/main/java/net/minetest/minetest/CopyZipTask.java82
-rw-r--r--android/app/src/main/java/net/minetest/minetest/CustomEditText.java45
-rw-r--r--android/app/src/main/java/net/minetest/minetest/GameActivity.java149
-rw-r--r--android/app/src/main/java/net/minetest/minetest/MainActivity.java153
-rw-r--r--android/app/src/main/java/net/minetest/minetest/UnzipService.java157
-rw-r--r--android/app/src/main/res/drawable/background.pngbin0 -> 83 bytes
-rw-r--r--android/app/src/main/res/drawable/bg.xml4
-rw-r--r--android/app/src/main/res/layout/activity_main.xml30
-rw-r--r--android/app/src/main/res/mipmap/ic_launcher.pngbin0 -> 5780 bytes
-rw-r--r--android/app/src/main/res/values/strings.xml10
-rw-r--r--android/app/src/main/res/values/styles.xml15
-rw-r--r--android/build.gradle35
-rw-r--r--android/gradle.properties11
-rw-r--r--android/gradle/wrapper/gradle-wrapper.jarbin0 -> 55616 bytes
-rw-r--r--android/gradle/wrapper/gradle-wrapper.properties6
-rwxr-xr-xandroid/gradlew188
-rw-r--r--android/gradlew.bat100
-rw-r--r--android/icons/aux1_btn.svg143
-rw-r--r--android/icons/aux_btn.svg411
-rw-r--r--android/icons/camera_btn.svg108
-rw-r--r--android/icons/chat_btn.svg96
-rw-r--r--android/icons/chat_hide_btn.svg139
-rw-r--r--android/icons/chat_show_btn.svg133
-rw-r--r--android/icons/checkbox_tick.svg93
-rw-r--r--android/icons/debug_btn.svg344
-rw-r--r--android/icons/down.svg542
-rw-r--r--android/icons/drop_btn.svg173
-rw-r--r--android/icons/fast_btn.svg190
-rw-r--r--android/icons/fly_btn.svg168
-rw-r--r--android/icons/gear_icon.svg194
-rw-r--r--android/icons/inventory_btn.svg509
-rw-r--r--android/icons/joystick_bg.svg876
-rw-r--r--android/icons/joystick_center.svg877
-rw-r--r--android/icons/joystick_off.svg882
-rw-r--r--android/icons/jump_btn.svg547
-rw-r--r--android/icons/minimap_btn.svg159
-rw-r--r--android/icons/noclip_btn.svg173
-rw-r--r--android/icons/rangeview_btn.svg456
-rw-r--r--android/icons/rare_controls.svg521
-rw-r--r--android/icons/zoom.svg599
-rw-r--r--android/keystore-minetest.jksbin0 -> 2247 bytes
-rw-r--r--android/native/build.gradle98
-rw-r--r--android/native/jni/Android.mk206
-rw-r--r--android/native/jni/Application.mk32
-rw-r--r--android/native/src/main/AndroidManifest.xml1
-rw-r--r--android/settings.gradle2
49 files changed, 9843 insertions, 0 deletions
diff --git a/android/.gitignore b/android/.gitignore
new file mode 100644
index 000000000..e0613f8b3
--- /dev/null
+++ b/android/.gitignore
@@ -0,0 +1,11 @@
+*.iml
+.externalNativeBuild
+.gradle
+app/build
+app/release
+app/src/main/assets
+build
+local.properties
+native/.*
+native/build
+native/deps
diff --git a/android/app/build.gradle b/android/app/build.gradle
new file mode 100644
index 000000000..b7d93ef0f
--- /dev/null
+++ b/android/app/build.gradle
@@ -0,0 +1,113 @@
+apply plugin: 'com.android.application'
+android {
+ compileSdkVersion 29
+ buildToolsVersion '30.0.3'
+ ndkVersion '22.0.7026061'
+ defaultConfig {
+ applicationId 'net.minetest.minetest'
+ minSdkVersion 16
+ targetSdkVersion 29
+ versionName "${versionMajor}.${versionMinor}.${versionPatch}"
+ versionCode project.versionCode
+ }
+
+ // load properties
+ Properties props = new Properties()
+ def propfile = file('../local.properties')
+ if (propfile.exists())
+ props.load(new FileInputStream(propfile))
+
+ if (props.getProperty('keystore') != null) {
+ signingConfigs {
+ release {
+ storeFile file(props['keystore'])
+ storePassword props['keystore.password']
+ keyAlias props['key']
+ keyPassword props['key.password']
+ }
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled true
+ signingConfig signingConfigs.release
+ }
+ }
+ }
+
+ // for multiple APKs
+ splits {
+ abi {
+ enable true
+ reset()
+ include 'armeabi-v7a', 'arm64-v8a'
+ }
+ }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+}
+
+task prepareAssets() {
+ def assetsFolder = "build/assets"
+ def projRoot = "../.."
+ def gameToCopy = "minetest_game"
+
+ copy {
+ from "${projRoot}/minetest.conf.example", "${projRoot}/README.md" into assetsFolder
+ }
+ copy {
+ from "${projRoot}/doc/lgpl-2.1.txt" into "${assetsFolder}"
+ }
+ copy {
+ from "${projRoot}/builtin" into "${assetsFolder}/builtin"
+ }
+ copy {
+ from "${projRoot}/client/shaders" into "${assetsFolder}/client/shaders"
+ }
+ copy {
+ from "../native/deps/Android/Irrlicht/shaders" into "${assetsFolder}/client/shaders/Irrlicht"
+ }
+ copy {
+ from "${projRoot}/fonts" include "*.ttf" into "${assetsFolder}/fonts"
+ }
+ copy {
+ from "${projRoot}/games/${gameToCopy}" into "${assetsFolder}/games/${gameToCopy}"
+ }
+ /*copy {
+ // ToDo: fix broken locales
+ from "${projRoot}/po" into "${assetsFolder}/po"
+ }*/
+ copy {
+ from "${projRoot}/textures" into "${assetsFolder}/textures"
+ }
+
+ file("${assetsFolder}/.nomedia").text = "";
+
+ task zipAssets(type: Zip) {
+ archiveName "Minetest.zip"
+ from "${assetsFolder}"
+ destinationDir file("src/main/assets")
+ }
+}
+
+preBuild.dependsOn zipAssets
+
+// Map for the version code that gives each ABI a value.
+import com.android.build.OutputFile
+
+def abiCodes = ['armeabi-v7a': 0, 'arm64-v8a': 1]
+android.applicationVariants.all { variant ->
+ variant.outputs.each {
+ output ->
+ def abiName = output.getFilter(OutputFile.ABI)
+ output.versionCodeOverride = abiCodes.get(abiName, 0) + variant.versionCode
+ }
+}
+
+dependencies {
+ implementation project(':native')
+ implementation 'androidx.appcompat:appcompat:1.2.0'
+}
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..fa93e7069
--- /dev/null
+++ b/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:tools="http://schemas.android.com/tools"
+ package="net.minetest.minetest"
+ android:installLocation="auto">
+
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+
+ <!--
+ `android:requestLegacyExternalStorage="true"` is workaround for using `/sdcard`
+ instead of the `getFilesDir()` patch for assets. Check link below for more information:
+ https://developer.android.com/training/data-storage/compatibility
+ -->
+
+ <application
+ android:allowBackup="false"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/label"
+ android:requestLegacyExternalStorage="true"
+ android:resizeableActivity="false"
+ tools:ignore="UnusedAttribute">
+
+ <meta-data
+ android:name="android.max_aspect"
+ android:value="3.0" />
+
+ <activity
+ android:name=".MainActivity"
+ android:configChanges="orientation|keyboardHidden|navigation|screenSize"
+ android:maxAspectRatio="3.0"
+ android:screenOrientation="sensorLandscape"
+ android:theme="@style/AppTheme">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+
+ <activity
+ android:name=".GameActivity"
+ android:configChanges="orientation|keyboard|keyboardHidden|navigation|screenSize|smallestScreenSize"
+ android:hardwareAccelerated="true"
+ android:launchMode="singleTask"
+ android:maxAspectRatio="3.0"
+ android:screenOrientation="sensorLandscape"
+ android:theme="@style/AppTheme">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ </intent-filter>
+ <meta-data
+ android:name="android.app.lib_name"
+ android:value="Minetest" />
+ </activity>
+
+ <service
+ android:name=".UnzipService"
+ android:enabled="true"
+ android:exported="false" />
+ </application>
+
+</manifest>
diff --git a/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java b/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java
new file mode 100644
index 000000000..6d4b6ab0f
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/CopyZipTask.java
@@ -0,0 +1,82 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+package net.minetest.minetest;
+
+import android.content.Intent;
+import android.os.AsyncTask;
+import android.widget.Toast;
+
+import androidx.appcompat.app.AppCompatActivity;
+
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.ref.WeakReference;
+
+public class CopyZipTask extends AsyncTask<String, Void, String> {
+
+ private final WeakReference<AppCompatActivity> activityRef;
+
+ CopyZipTask(AppCompatActivity activity) {
+ activityRef = new WeakReference<>(activity);
+ }
+
+ protected String doInBackground(String... params) {
+ copyAsset(params[0]);
+ return params[0];
+ }
+
+ @Override
+ protected void onPostExecute(String result) {
+ startUnzipService(result);
+ }
+
+ private void copyAsset(String zipName) {
+ String filename = zipName.substring(zipName.lastIndexOf("/") + 1);
+ try (InputStream in = activityRef.get().getAssets().open(filename);
+ OutputStream out = new FileOutputStream(zipName)) {
+ copyFile(in, out);
+ } catch (IOException e) {
+ AppCompatActivity activity = activityRef.get();
+ if (activity != null) {
+ activity.runOnUiThread(() -> Toast.makeText(activityRef.get(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show());
+ }
+ cancel(true);
+ }
+ }
+
+ private void copyFile(InputStream in, OutputStream out) throws IOException {
+ byte[] buffer = new byte[1024];
+ int read;
+ while ((read = in.read(buffer)) != -1)
+ out.write(buffer, 0, read);
+ }
+
+ private void startUnzipService(String file) {
+ Intent intent = new Intent(activityRef.get(), UnzipService.class);
+ intent.putExtra(UnzipService.EXTRA_KEY_IN_FILE, file);
+ AppCompatActivity activity = activityRef.get();
+ if (activity != null) {
+ activity.startService(intent);
+ }
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/CustomEditText.java b/android/app/src/main/java/net/minetest/minetest/CustomEditText.java
new file mode 100644
index 000000000..8d0a503d0
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/CustomEditText.java
@@ -0,0 +1,45 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+package net.minetest.minetest;
+
+import android.content.Context;
+import android.view.KeyEvent;
+import android.view.inputmethod.InputMethodManager;
+
+import androidx.appcompat.widget.AppCompatEditText;
+
+import java.util.Objects;
+
+public class CustomEditText extends AppCompatEditText {
+ public CustomEditText(Context context) {
+ super(context);
+ }
+
+ @Override
+ public boolean onKeyPreIme(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
+ InputMethodManager mgr = (InputMethodManager)
+ getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
+ Objects.requireNonNull(mgr).hideSoftInputFromWindow(this.getWindowToken(), 0);
+ }
+ return false;
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/GameActivity.java b/android/app/src/main/java/net/minetest/minetest/GameActivity.java
new file mode 100644
index 000000000..38a388230
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/GameActivity.java
@@ -0,0 +1,149 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+package net.minetest.minetest;
+
+import android.app.NativeActivity;
+import android.content.Intent;
+import android.net.Uri;
+import android.os.Build;
+import android.os.Bundle;
+import android.text.InputType;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.WindowManager;
+import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
+
+import androidx.appcompat.app.AlertDialog;
+
+import java.util.Objects;
+
+public class GameActivity extends NativeActivity {
+ static {
+ System.loadLibrary("c++_shared");
+ System.loadLibrary("Minetest");
+ }
+
+ private int messageReturnCode = -1;
+ private String messageReturnValue = "";
+
+ public static native void putMessageBoxResult(String text);
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
+ }
+
+ private void makeFullScreen() {
+ if (Build.VERSION.SDK_INT >= 19)
+ this.getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |
+ View.SYSTEM_UI_FLAG_HIDE_NAVIGATION |
+ View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY);
+ }
+
+ @Override
+ public void onWindowFocusChanged(boolean hasFocus) {
+ super.onWindowFocusChanged(hasFocus);
+ if (hasFocus)
+ makeFullScreen();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ makeFullScreen();
+ }
+
+ @Override
+ public void onBackPressed() {
+ // Ignore the back press so Minetest can handle it
+ }
+
+ public void showDialog(String acceptButton, String hint, String current, int editType) {
+ runOnUiThread(() -> showDialogUI(hint, current, editType));
+ }
+
+ private void showDialogUI(String hint, String current, int editType) {
+ final AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ EditText editText = new CustomEditText(this);
+ builder.setView(editText);
+ AlertDialog alertDialog = builder.create();
+ editText.requestFocus();
+ editText.setHint(hint);
+ editText.setText(current);
+ final InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE);
+ Objects.requireNonNull(imm).toggleSoftInput(InputMethodManager.SHOW_FORCED,
+ InputMethodManager.HIDE_IMPLICIT_ONLY);
+ if (editType == 1)
+ editText.setInputType(InputType.TYPE_CLASS_TEXT |
+ InputType.TYPE_TEXT_FLAG_MULTI_LINE);
+ else if (editType == 3)
+ editText.setInputType(InputType.TYPE_CLASS_TEXT |
+ InputType.TYPE_TEXT_VARIATION_PASSWORD);
+ else
+ editText.setInputType(InputType.TYPE_CLASS_TEXT);
+ editText.setSelection(editText.getText().length());
+ editText.setOnKeyListener((view, KeyCode, event) -> {
+ if (KeyCode == KeyEvent.KEYCODE_ENTER) {
+ imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);
+ messageReturnCode = 0;
+ messageReturnValue = editText.getText().toString();
+ alertDialog.dismiss();
+ return true;
+ }
+ return false;
+ });
+ alertDialog.show();
+ alertDialog.setOnCancelListener(dialog -> {
+ getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
+ messageReturnValue = current;
+ messageReturnCode = -1;
+ });
+ }
+
+ public int getDialogState() {
+ return messageReturnCode;
+ }
+
+ public String getDialogValue() {
+ messageReturnCode = -1;
+ return messageReturnValue;
+ }
+
+ public float getDensity() {
+ return getResources().getDisplayMetrics().density;
+ }
+
+ public int getDisplayHeight() {
+ return getResources().getDisplayMetrics().heightPixels;
+ }
+
+ public int getDisplayWidth() {
+ return getResources().getDisplayMetrics().widthPixels;
+ }
+
+ public void openURI(String uri) {
+ Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(uri));
+ startActivity(browserIntent);
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/MainActivity.java b/android/app/src/main/java/net/minetest/minetest/MainActivity.java
new file mode 100644
index 000000000..2aa50d9ad
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/MainActivity.java
@@ -0,0 +1,153 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+package net.minetest.minetest;
+
+import android.Manifest;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.annotation.NonNull;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import static net.minetest.minetest.UnzipService.ACTION_FAILURE;
+import static net.minetest.minetest.UnzipService.ACTION_PROGRESS;
+import static net.minetest.minetest.UnzipService.ACTION_UPDATE;
+import static net.minetest.minetest.UnzipService.FAILURE;
+import static net.minetest.minetest.UnzipService.SUCCESS;
+
+public class MainActivity extends AppCompatActivity {
+ private final static int versionCode = BuildConfig.VERSION_CODE;
+ private final static int PERMISSIONS = 1;
+ private static final String[] REQUIRED_SDK_PERMISSIONS =
+ new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE};
+ private static final String SETTINGS = "MinetestSettings";
+ private static final String TAG_VERSION_CODE = "versionCode";
+ private ProgressBar mProgressBar;
+ private TextView mTextView;
+ private SharedPreferences sharedPreferences;
+ private final BroadcastReceiver myReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ int progress = 0;
+ if (intent != null)
+ progress = intent.getIntExtra(ACTION_PROGRESS, 0);
+ if (progress >= 0) {
+ if (mProgressBar != null) {
+ mProgressBar.setVisibility(View.VISIBLE);
+ mProgressBar.setProgress(progress);
+ }
+ mTextView.setVisibility(View.VISIBLE);
+ } else if (progress == FAILURE) {
+ Toast.makeText(MainActivity.this, intent.getStringExtra(ACTION_FAILURE), Toast.LENGTH_LONG).show();
+ finish();
+ } else if (progress == SUCCESS)
+ startNative();
+ }
+ };
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+ IntentFilter filter = new IntentFilter(ACTION_UPDATE);
+ registerReceiver(myReceiver, filter);
+ mProgressBar = findViewById(R.id.progressBar);
+ mTextView = findViewById(R.id.textView);
+ sharedPreferences = getSharedPreferences(SETTINGS, Context.MODE_PRIVATE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M)
+ checkPermission();
+ else
+ checkAppVersion();
+ }
+
+ private void checkPermission() {
+ final List<String> missingPermissions = new ArrayList<>();
+ for (final String permission : REQUIRED_SDK_PERMISSIONS) {
+ final int result = ContextCompat.checkSelfPermission(this, permission);
+ if (result != PackageManager.PERMISSION_GRANTED)
+ missingPermissions.add(permission);
+ }
+ if (!missingPermissions.isEmpty()) {
+ final String[] permissions = missingPermissions
+ .toArray(new String[0]);
+ ActivityCompat.requestPermissions(this, permissions, PERMISSIONS);
+ } else {
+ final int[] grantResults = new int[REQUIRED_SDK_PERMISSIONS.length];
+ Arrays.fill(grantResults, PackageManager.PERMISSION_GRANTED);
+ onRequestPermissionsResult(PERMISSIONS, REQUIRED_SDK_PERMISSIONS, grantResults);
+ }
+ }
+
+ @Override
+ public void onRequestPermissionsResult(int requestCode,
+ @NonNull String[] permissions, @NonNull int[] grantResults) {
+ if (requestCode == PERMISSIONS) {
+ for (int grantResult : grantResults) {
+ if (grantResult != PackageManager.PERMISSION_GRANTED) {
+ Toast.makeText(this, R.string.not_granted, Toast.LENGTH_LONG).show();
+ finish();
+ }
+ }
+ checkAppVersion();
+ }
+ }
+
+ private void checkAppVersion() {
+ if (sharedPreferences.getInt(TAG_VERSION_CODE, 0) == versionCode)
+ startNative();
+ else
+ new CopyZipTask(this).execute(getCacheDir() + "/Minetest.zip");
+ }
+
+ private void startNative() {
+ sharedPreferences.edit().putInt(TAG_VERSION_CODE, versionCode).apply();
+ Intent intent = new Intent(this, GameActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_CLEAR_TASK);
+ startActivity(intent);
+ }
+
+ @Override
+ public void onBackPressed() {
+ // Prevent abrupt interruption when copy game files from assets
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ unregisterReceiver(myReceiver);
+ }
+}
diff --git a/android/app/src/main/java/net/minetest/minetest/UnzipService.java b/android/app/src/main/java/net/minetest/minetest/UnzipService.java
new file mode 100644
index 000000000..b69f7f36e
--- /dev/null
+++ b/android/app/src/main/java/net/minetest/minetest/UnzipService.java
@@ -0,0 +1,157 @@
+/*
+Minetest
+Copyright (C) 2014-2020 MoNTE48, Maksim Gamarnik <MoNTE48@mail.ua>
+Copyright (C) 2014-2020 ubulem, Bektur Mambetov <berkut87@gmail.com>
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU Lesser General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+*/
+
+package net.minetest.minetest;
+
+import android.app.IntentService;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.content.Intent;
+import android.os.Build;
+import android.os.Environment;
+import android.widget.Toast;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import java.util.zip.ZipInputStream;
+
+public class UnzipService extends IntentService {
+ public static final String ACTION_UPDATE = "net.minetest.minetest.UPDATE";
+ public static final String ACTION_PROGRESS = "net.minetest.minetest.PROGRESS";
+ public static final String ACTION_FAILURE = "net.minetest.minetest.FAILURE";
+ public static final String EXTRA_KEY_IN_FILE = "file";
+ public static final int SUCCESS = -1;
+ public static final int FAILURE = -2;
+ private final int id = 1;
+ private NotificationManager mNotifyManager;
+ private boolean isSuccess = true;
+ private String failureMessage;
+
+ public UnzipService() {
+ super("net.minetest.minetest.UnzipService");
+ }
+
+ private void isDir(String dir, String location) {
+ File f = new File(location, dir);
+ if (!f.isDirectory())
+ f.mkdirs();
+ }
+
+ @Override
+ protected void onHandleIntent(Intent intent) {
+ createNotification();
+ unzip(intent);
+ }
+
+ private void createNotification() {
+ String name = "net.minetest.minetest";
+ String channelId = "Minetest channel";
+ String description = "notifications from Minetest";
+ Notification.Builder builder;
+ if (mNotifyManager == null)
+ mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ int importance = NotificationManager.IMPORTANCE_LOW;
+ NotificationChannel mChannel = null;
+ if (mNotifyManager != null)
+ mChannel = mNotifyManager.getNotificationChannel(channelId);
+ if (mChannel == null) {
+ mChannel = new NotificationChannel(channelId, name, importance);
+ mChannel.setDescription(description);
+ // Configure the notification channel, NO SOUND
+ mChannel.setSound(null, null);
+ mChannel.enableLights(false);
+ mChannel.enableVibration(false);
+ mNotifyManager.createNotificationChannel(mChannel);
+ }
+ builder = new Notification.Builder(this, channelId);
+ } else {
+ builder = new Notification.Builder(this);
+ }
+ builder.setContentTitle(getString(R.string.notification_title))
+ .setSmallIcon(R.mipmap.ic_launcher)
+ .setContentText(getString(R.string.notification_description));
+ mNotifyManager.notify(id, builder.build());
+ }
+
+ private void unzip(Intent intent) {
+ String zip = intent.getStringExtra(EXTRA_KEY_IN_FILE);
+ isDir("Minetest", Environment.getExternalStorageDirectory().toString());
+ String location = Environment.getExternalStorageDirectory() + File.separator + "Minetest" + File.separator;
+ int per = 0;
+ int size = getSummarySize(zip);
+ File zipFile = new File(zip);
+ int readLen;
+ byte[] readBuffer = new byte[8192];
+ try (FileInputStream fileInputStream = new FileInputStream(zipFile);
+ ZipInputStream zipInputStream = new ZipInputStream(fileInputStream)) {
+ ZipEntry ze;
+ while ((ze = zipInputStream.getNextEntry()) != null) {
+ if (ze.isDirectory()) {
+ ++per;
+ isDir(ze.getName(), location);
+ } else {
+ publishProgress(100 * ++per / size);
+ try (OutputStream outputStream = new FileOutputStream(location + ze.getName())) {
+ while ((readLen = zipInputStream.read(readBuffer)) != -1) {
+ outputStream.write(readBuffer, 0, readLen);
+ }
+ }
+ }
+ zipFile.delete();
+ }
+ } catch (IOException e) {
+ isSuccess = false;
+ failureMessage = e.getLocalizedMessage();
+ }
+ }
+
+ private void publishProgress(int progress) {
+ Intent intentUpdate = new Intent(ACTION_UPDATE);
+ intentUpdate.putExtra(ACTION_PROGRESS, progress);
+ if (!isSuccess) intentUpdate.putExtra(ACTION_FAILURE, failureMessage);
+ sendBroadcast(intentUpdate);
+ }
+
+ private int getSummarySize(String zip) {
+ int size = 0;
+ try {
+ ZipFile zipSize = new ZipFile(zip);
+ size += zipSize.size();
+ } catch (IOException e) {
+ Toast.makeText(this, e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
+ }
+ return size;
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ mNotifyManager.cancel(id);
+ publishProgress(isSuccess ? SUCCESS : FAILURE);
+ }
+}
diff --git a/android/app/src/main/res/drawable/background.png b/android/app/src/main/res/drawable/background.png
new file mode 100644
index 000000000..43bd6089e
--- /dev/null
+++ b/android/app/src/main/res/drawable/background.png
Binary files differ
diff --git a/android/app/src/main/res/drawable/bg.xml b/android/app/src/main/res/drawable/bg.xml
new file mode 100644
index 000000000..903335ed9
--- /dev/null
+++ b/android/app/src/main/res/drawable/bg.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
+ android:src="@drawable/background"
+ android:tileMode="repeat" />
diff --git a/android/app/src/main/res/layout/activity_main.xml b/android/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 000000000..e6f461f14
--- /dev/null
+++ b/android/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,30 @@
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/activity_main"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:background="@drawable/bg">
+
+ <ProgressBar
+ android:id="@+id/progressBar"
+ style="@style/CustomProgressBar"
+ android:layout_width="match_parent"
+ android:layout_height="30dp"
+ android:layout_centerInParent="true"
+ android:layout_marginLeft="90dp"
+ android:layout_marginRight="90dp"
+ android:indeterminate="false"
+ android:max="100"
+ android:visibility="gone" />
+
+ <TextView
+ android:id="@+id/textView"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_below="@id/progressBar"
+ android:layout_centerInParent="true"
+ android:background="@android:color/transparent"
+ android:text="@string/loading"
+ android:textColor="#FEFEFE"
+ android:visibility="gone" />
+
+</RelativeLayout>
diff --git a/android/app/src/main/res/mipmap/ic_launcher.png b/android/app/src/main/res/mipmap/ic_launcher.png
new file mode 100644
index 000000000..88a83782c
--- /dev/null
+++ b/android/app/src/main/res/mipmap/ic_launcher.png
Binary files differ
diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml
new file mode 100644
index 000000000..a6fba70d5
--- /dev/null
+++ b/android/app/src/main/res/values/strings.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+
+ <string name="label">Minetest</string>
+ <string name="loading">Loading&#8230;</string>
+ <string name="not_granted">Required permission wasn\'t granted, Minetest can\'t run without it</string>
+ <string name="notification_title">Loading Minetest</string>
+ <string name="notification_description">Less than 1 minute&#8230;</string>
+
+</resources>
diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..291a4eaf1
--- /dev/null
+++ b/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources xmlns:tools="http://schemas.android.com/tools">
+
+ <style name="AppTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
+ <item name="windowActionBar">false</item>
+ <item name="android:windowFullscreen">true</item>
+ <item name="android:windowBackground">@drawable/bg</item>
+ <item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="p">shortEdges</item>
+ </style>
+
+ <style name="CustomProgressBar" parent="Widget.AppCompat.ProgressBar.Horizontal">
+ <item name="android:indeterminateOnly">false</item>
+ </style>
+
+</resources>
diff --git a/android/build.gradle b/android/build.gradle
new file mode 100644
index 000000000..68dbe082d
--- /dev/null
+++ b/android/build.gradle
@@ -0,0 +1,35 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+project.ext.set("versionMajor", 5) // Version Major
+project.ext.set("versionMinor", 4) // Version Minor
+project.ext.set("versionPatch", 0) // Version Patch
+project.ext.set("versionExtra", "") // Version Extra
+project.ext.set("versionCode", 34) // Android Version Code
+// NOTE: +2 after each release!
+// +1 for ARM and +1 for ARM64 APK's, because
+// each APK must have a larger `versionCode` than the previous
+
+buildscript {
+ repositories {
+ google()
+ jcenter()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:4.1.1'
+ classpath 'de.undercouch:gradle-download-task:4.1.1'
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+ delete 'native/deps'
+}
diff --git a/android/gradle.properties b/android/gradle.properties
new file mode 100644
index 000000000..53b475cf9
--- /dev/null
+++ b/android/gradle.properties
@@ -0,0 +1,11 @@
+<#if isLowMemory>
+org.gradle.jvmargs=-Xmx4G -XX:MaxPermSize=2G -XX:+HeapDumpOnOutOfMemoryError
+<#else>
+org.gradle.jvmargs=-Xmx16G -XX:MaxPermSize=8G -XX:+HeapDumpOnOutOfMemoryError
+</#if>
+org.gradle.daemon=true
+org.gradle.parallel=true
+org.gradle.parallel.threads=8
+org.gradle.configureondemand=true
+android.enableJetifier=true
+android.useAndroidX=true
diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000..5c2d1cf01
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..7fd9307d7
--- /dev/null
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Fri Jan 08 17:52:00 UTC 2020
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-6.8-all.zip
diff --git a/android/gradlew b/android/gradlew
new file mode 100755
index 000000000..83f2acfdc
--- /dev/null
+++ b/android/gradlew
@@ -0,0 +1,188 @@
+#!/usr/bin/env sh
+
+#
+# Copyright 2015 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# https://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin or MSYS, switch paths to Windows format before running java
+if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/android/gradlew.bat b/android/gradlew.bat
new file mode 100644
index 000000000..9618d8d96
--- /dev/null
+++ b/android/gradlew.bat
@@ -0,0 +1,100 @@
+@rem
+@rem Copyright 2015 the original author or authors.
+@rem
+@rem Licensed under the Apache License, Version 2.0 (the "License");
+@rem you may not use this file except in compliance with the License.
+@rem You may obtain a copy of the License at
+@rem
+@rem https://www.apache.org/licenses/LICENSE-2.0
+@rem
+@rem Unless required by applicable law or agreed to in writing, software
+@rem distributed under the License is distributed on an "AS IS" BASIS,
+@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+@rem See the License for the specific language governing permissions and
+@rem limitations under the License.
+@rem
+
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/android/icons/aux1_btn.svg b/android/icons/aux1_btn.svg
new file mode 100644
index 000000000..e0ee97c0c
--- /dev/null
+++ b/android/icons/aux1_btn.svg
@@ -0,0 +1,143 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ inkscape:export-ydpi="24.000002"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/aux_btn.png"
+ sodipodi:docname="aux_btn.svg"
+ inkscape:version="1.0 (4035a4fb49, 2020-05-01)"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 135.46666 135.46667"
+ height="512"
+ width="512">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ inkscape:document-rotation="0"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-others="true"
+ inkscape:snap-object-midpoints="false"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-bbox="true"
+ showguides="true"
+ inkscape:snap-page="true"
+ inkscape:snap-grids="false"
+ inkscape:pagecheckerboard="false"
+ inkscape:window-maximized="1"
+ inkscape:window-y="31"
+ inkscape:window-x="0"
+ inkscape:window-height="1024"
+ inkscape:window-width="1920"
+ units="px"
+ showgrid="true"
+ inkscape:current-layer="layer2"
+ inkscape:document-units="mm"
+ inkscape:cy="212.91276"
+ inkscape:cx="201.43176"
+ inkscape:zoom="1.4633894"
+ inkscape:pageshadow="2"
+ inkscape:pageopacity="0"
+ borderopacity="1.0"
+ bordercolor="#666666"
+ pagecolor="#404040"
+ id="base">
+ <inkscape:grid
+ empopacity="0.25098039"
+ empcolor="#40ff40"
+ opacity="0.1254902"
+ color="#40ff40"
+ empspacing="4"
+ spacingy="0.26458333"
+ spacingx="0.26458333"
+ id="grid16"
+ type="xygrid" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title />
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ style="display:inline"
+ inkscape:label="Layer 2"
+ id="layer2"
+ inkscape:groupmode="layer">
+ <path
+ inkscape:connector-curvature="0"
+ id="path7055"
+ d=""
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path7035"
+ d=""
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path7005"
+ d=""
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ inkscape:connector-curvature="0"
+ id="path5127"
+ d=""
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <text
+ transform="scale(1.0078883,0.99217343)"
+ id="text4716"
+ y="85.59491"
+ x="67.78315"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.4785px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ xml:space="preserve"><tspan
+ style="fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ y="85.59491"
+ x="67.78315"
+ id="tspan4714"
+ sodipodi:role="line">Aux1</tspan></text>
+ <flowRoot
+ transform="scale(0.26458333)"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ id="flowRoot4718"
+ xml:space="preserve"><flowRegion
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ id="flowRegion4720"><rect
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ y="124.10143"
+ x="264.65997"
+ height="136.37059"
+ width="157.5838"
+ id="rect4722" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot>
+ </g>
+</svg>
diff --git a/android/icons/aux_btn.svg b/android/icons/aux_btn.svg
new file mode 100644
index 000000000..6bbefff67
--- /dev/null
+++ b/android/icons/aux_btn.svg
@@ -0,0 +1,411 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="aux_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/aux_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="-341.34157"
+ inkscape:cy="210.02973"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="false"
+ inkscape:snap-page="true"
+ showguides="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-to-guides="true"
+ inkscape:snap-object-midpoints="false"
+ inkscape:snap-others="true"
+ inkscape:snap-bbox-midpoints="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:48.47851181px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ x="67.78315"
+ y="85.59491"
+ id="text4716"
+ transform="scale(1.0078883,0.99217343)"><tspan
+ sodipodi:role="line"
+ id="tspan4714"
+ x="67.78315"
+ y="85.59491"
+ style="fill:#d9d9d9;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">AUX</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> </g>
+</svg>
diff --git a/android/icons/camera_btn.svg b/android/icons/camera_btn.svg
new file mode 100644
index 000000000..a91a7fcf8
--- /dev/null
+++ b/android/icons/camera_btn.svg
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="camera_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/camera_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.56808712"
+ inkscape:cx="108.02318"
+ inkscape:cy="100.37635"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.52916666"
+ spacingy="0.52916666"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:5.70848799;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 67.733332,254.66665 c 0,0 -8.668881,0 -18.300771,-3.15268 -9.631892,-3.1527 -18.2943,-9.47798 -24.078829,-22.06889 5.706713,-9.81112 13.792733,-18.56809 24.089264,-22.0987 9.587884,-3.28767 18.290339,-3.12291 18.290339,-3.12291 0,0 7.735344,-0.0794 18.31234,3.12292 9.690806,2.93407 18.313585,9.42827 24.067265,22.09869 -5.76759,12.59091 -14.445437,18.91619 -24.0777,22.06889 -9.63227,3.15268 -18.301908,3.15268 -18.301908,3.15268 z"
+ id="path58-3-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cscscscsc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.73025268;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 64.488929,217.53903 c -0.857939,0.17659 0.965211,0.45252 1.127737,0.80919 3.74151,2.22182 4.135021,8.10158 0.722172,10.79555 -2.788479,2.49816 -7.570549,1.85517 -9.647324,-1.24231 -0.478813,6.23671 4.305402,12.62817 10.72756,13.07655 5.379142,0.53291 10.304075,-3.82096 11.146917,-9.02134 1.316631,-6.22759 -2.756791,-13.29903 -9.184051,-14.59275 -1.613453,-0.33844 -3.308229,-0.28143 -4.893011,0.17511 z"
+ id="path4487"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4489"
+ cx="68.000587"
+ cy="229.40236"
+ rx="24.328558"
+ ry="24.538925" />
+ </g>
+</svg>
diff --git a/android/icons/chat_btn.svg b/android/icons/chat_btn.svg
new file mode 100644
index 000000000..41dc6f8c7
--- /dev/null
+++ b/android/icons/chat_btn.svg
@@ -0,0 +1,96 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="chat_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/chat_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="-49.76592"
+ inkscape:cy="230.35684"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="16"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 38.099995,186.93332 H 97.36666 l 12.70001,13.36842 v 44.56141 l -12.095255,13.02565 -13.304754,13.71119 5e-6,-16.93334 H 38.1 l -12.7,-12.7 -5e-6,-41.66491 z"
+ id="path4573"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc" />
+ </g>
+</svg>
diff --git a/android/icons/chat_hide_btn.svg b/android/icons/chat_hide_btn.svg
new file mode 100644
index 000000000..6647b3097
--- /dev/null
+++ b/android/icons/chat_hide_btn.svg
@@ -0,0 +1,139 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="chat_hide_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/chat_hide_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.4"
+ inkscape:cx="122.83767"
+ inkscape:cy="254.28074"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="8"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)"
+ style="display:inline">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:22.67716599;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 352,96.000006 144,96 96,146.52539 V 304 l 24,24.00001 m 88,24 L 320,352 v 64 L 370.28516,364.17773 416,314.94727 V 146.52539"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4573"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,199.63332 h 38.099999 v 8.46667 H 38.1 v -8.46667"
+ id="path4737"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:22.67716599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 144,272 v 32 l 16,10e-6 32,-32 z m 128,0 -32,32 h 48 v -32 z"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4737-5"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:22.67716599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 256,208.00001 224,208 v 32 m 112,-32 -32,32 h 64 v -32 z"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4737-6"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:22.67716599;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 304,144 v 16.00001 l 16,-16 z"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)"
+ id="path4737-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,216.56665 h 16.933333 v 8.46667 H 38.1 v -8.46667"
+ id="path4737-2-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 80.433332,233.49999 h 16.933333 v 8.46667 H 80.433332 v -8.46667"
+ id="path4737-2-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 23.283335,267.36666 4.23333,4.23333 88.900005,-88.9 -4.23333,-4.23333 z"
+ id="path4499"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/chat_show_btn.svg b/android/icons/chat_show_btn.svg
new file mode 100644
index 000000000..fce9de996
--- /dev/null
+++ b/android/icons/chat_show_btn.svg
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="chat_show_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/chat_show_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-52.637496"
+ inkscape:cy="236.47723"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="16"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6.15586996;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 38.099995,186.93332 H 97.36666 l 12.70001,13.36842 v 44.56141 l -12.095255,13.02565 -13.304754,13.71119 5e-6,-16.93334 H 38.1 l -12.7,-12.7 -5e-6,-41.66491 z"
+ id="path4573"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,199.63332 h 38.099999 v 8.46667 H 38.1 v -8.46667"
+ id="path4737"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.30048177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,233.49998 h 38.099999 v 8.46667 H 38.1 v -8.46667"
+ id="path4737-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.30048177;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 59.266666,216.56665 h 38.099999 v 8.46667 H 59.266666 v -8.46667"
+ id="path4737-6"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.20032115;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 80.433331,199.63332 h 16.933334 v 8.46667 H 80.433331 v -8.46667"
+ id="path4737-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.20032115;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 38.1,216.56665 h 16.933333 v 8.46667 H 38.1 v -8.46667"
+ id="path4737-2-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;fill-opacity:1;stroke:none;stroke-width:0.20032115;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 80.433332,233.49999 h 16.933333 v 8.46667 H 80.433332 v -8.46667"
+ id="path4737-2-1"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.8897638;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 332.249,369.02277 c -0.0402,-18.48612 -0.4849,-21.66096 -3.48875,-24.9094 -3.91749,-4.23646 1.11742,-4.01917 -93.12942,-4.01917 h -86.6347 l -20.5311,-20.54025 -20.53109,-20.54025 0.0344,-73.92404 0.0344,-73.92403 20.50131,-21.579 20.50132,-21.57899 106.90272,-0.0281 106.90273,-0.0281 20.77585,21.85532 20.77584,21.85531 v 79.11261 79.1126 l -24.59489,26.35352 c -13.5272,14.49442 -29.74434,31.65707 -36.0381,38.13922 l -11.44321,11.78571 -0.0373,-17.14286 z m -43.95792,-81.07142 v -16.07143 l -72.32143,-0.18197 -72.32143,-0.18198 v 16.43538 16.43537 l 72.32143,-0.18197 72.32143,-0.18198 z m 80,0 v -16.07143 l -32.32143,-0.18585 -32.32143,-0.18585 v 16.44313 16.44312 l 32.32143,-0.18585 32.32143,-0.18585 z M 208.64822,224.02277 v -16.07142 h -32.5 -32.5 v 16.07142 16.07143 h 32.5 32.5 z m 160,0 v -16.07142 h -72.5 -72.5 v 16.07142 16.07143 h 72.5 72.5 z M 288.29108,160.0942 v -16.07143 l -72.32143,-0.18197 -72.32143,-0.18197 v 16.43537 16.43537 l 72.32143,-0.18197 72.32143,-0.18197 z m 80,0 v -16.07143 l -32.32143,-0.18585 -32.32143,-0.18585 v 16.44313 16.44313 l 32.32143,-0.18585 32.32143,-0.18585 z"
+ id="path5484"
+ inkscape:connector-curvature="0"
+ transform="matrix(0.26458333,0,0,0.26458333,0,161.53332)" />
+ </g>
+</svg>
diff --git a/android/icons/checkbox_tick.svg b/android/icons/checkbox_tick.svg
new file mode 100644
index 000000000..6b727bb52
--- /dev/null
+++ b/android/icons/checkbox_tick.svg
@@ -0,0 +1,93 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="checkbox_tick.svg">
+ <defs
+ id="defs2" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-28.833943"
+ inkscape:cy="228.57143"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="16"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.1254902" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <path
+ style="fill:#1a1a1a;stroke:#000000;stroke-width:0.26458332px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 42.333333,284.29999 4.2333333,246.19999 21.166666,229.26665 42.333333,250.43332 114.3,178.46665 131.23333,195.39999 Z"
+ id="path14"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ </g>
+</svg>
diff --git a/android/icons/debug_btn.svg b/android/icons/debug_btn.svg
new file mode 100644
index 000000000..2c37f142a
--- /dev/null
+++ b/android/icons/debug_btn.svg
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="debug_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/debug_btn.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path4687"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path4690"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4692"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4694"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-3">
+ <path
+ id="path4756"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch-6"
+ height="8">
+ <path
+ id="path4759"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4761"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4763"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-7">
+ <path
+ id="path4920"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch-5"
+ height="8">
+ <path
+ id="path4923"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4925"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4927"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-35">
+ <path
+ id="path4984"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch-62"
+ height="8">
+ <path
+ id="path4987"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4989"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4991"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-9">
+ <path
+ id="path5044"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch-1"
+ height="8">
+ <path
+ id="path5047"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path5049"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path5051"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.61928482"
+ inkscape:cx="-121.31078"
+ inkscape:cy="141.55076"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-global="true"
+ inkscape:snap-grids="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="4.2333333"
+ spacingy="4.2333333"
+ empspacing="1"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <g
+ id="g4960"
+ transform="matrix(0.356623,0,0,0.356623,38.15173,-196.45162)"
+ style="stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g4934"
+ inkscape:label="0"
+ style="stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <g
+ id="g4940"
+ inkscape:label="OpenJsCad"
+ style="stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.40204081;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 39.984833,1063.9015 -3.428448,0.3376 -1.443251,2.4866 -1.853336,4.4442 -0.931739,3.4444 -0.307197,2.2939 -0.003,1.0665 0.191273,1.4737 -0.201415,2.8328 -0.908554,1.5085 -8.44071,1.6795 -1.41862,-1.0448 -1.269369,-2.5402 -0.388347,-1.436 -0.410078,-0.9825 -1.16214,-2.004 -2.177924,-2.8242 -3.413958,-3.398 -2.283698,-1.7447 -3.2980381,0.9999 -3.0372074,1.6258 -0.3825491,2.8474 -0.013043,4.8166 0.4593482,3.5372 0.5941108,2.2373 0.4057338,0.9868 0.7404643,1.2882 0.8984102,2.6938 -0.2637272,1.7417 -7.1554054,4.7819 -1.7098778,-0.4231 -2.146042,-1.862 -0.9056565,-1.1752 -0.7564036,-0.7521 -1.8417418,-1.407 -3.0922714,-1.7751 -4.452928,-1.8345 -2.779276,-0.7361 -2.663353,2.1852 -2.186616,2.6648 0.739015,2.7778 1.831599,4.4529 1.777983,3.0937 1.404129,1.8389 0.752056,0.7564 1.176629,0.9085 1.862028,2.1446 0.423122,1.7114 -4.780413,7.1554 -1.741758,0.2622 -2.693782,-0.8984 -1.289654,-0.7404 -0.985354,-0.4058 -2.238781,-0.5941 -3.53713,-0.4579 -4.816639,0.01 -2.848832,0.3825 -1.622935,3.0401 -1.002742,3.2966 1.746104,2.2852 3.396572,3.4125 2.824197,2.1779 2.004036,1.1636 0.983904,0.4101 1.434559,0.3869 2.540184,1.2693 1.047662,1.4172 -1.680897,8.4422 -1.50846,0.91 -2.832891,0.1999 -1.475133,-0.1898 h -1.063603 l -2.296743,0.3058 -3.441491,0.9317 -4.447133,1.8533 -2.485119,1.4447 -0.337629,3.427 0.337629,3.43 2.485119,1.4432 4.447133,1.8533 3.441491,0.9318 2.296743,0.3072 h 1.063603 l 1.475133,-0.1913 2.832891,0.2 1.50846,0.91 1.680897,8.4421 -1.047662,1.4187 -2.540184,1.2693 -1.434559,0.3869 -0.983904,0.4101 -2.004036,1.1636 -2.824197,2.175 -3.396572,3.414 -1.746104,2.2851 1.002742,3.2981 1.622935,3.0386 2.848832,0.3811 4.816639,0.012 3.53713,-0.4579 2.238781,-0.5927 0.985354,-0.4072 1.289654,-0.739 2.693782,-0.8984 1.741758,0.2608 4.780413,7.1569 -0.423122,1.7099 -1.862028,2.1446 -1.176629,0.9085 -0.752056,0.7564 -1.404129,1.8389 -1.777983,3.0922 -1.831599,4.4559 -0.739015,2.7763 2.186616,2.6648 2.663353,2.1852 2.779276,-0.7361 4.452928,-1.8345 3.0922714,-1.7751 1.8417418,-1.4056 0.7564036,-0.752 0.9056565,-1.1781 2.146042,-1.862 1.7098778,-0.4231 7.1554054,4.7833 0.2637272,1.7417 -0.8984102,2.6938 -0.7404643,1.2882 -0.4057338,0.9854 -0.5941108,2.2402 -0.4593482,3.5371 0.013043,4.8167 0.3825491,2.8473 3.0372074,1.6244 3.2980381,0.9999 2.283698,-1.7432 3.413958,-3.3995 2.177924,-2.8242 1.16214,-2.004 0.410078,-0.9839 0.388347,-1.4332 1.269369,-2.5416 1.41862,-1.0447 8.44071,1.678 0.908554,1.5099 0.201415,2.8314 -0.191273,1.4751 0.003,1.0665 0.307197,2.2953 0.931739,3.443 1.853336,4.4456 1.443251,2.4852 3.428448,0.339 3.429902,-0.339 1.443252,-2.4852 1.853336,-4.4456 0.928839,-3.443 0.30865,-2.2953 0.003,-1.0665 -0.189826,-1.4751 0.198521,-2.8314 0.911455,-1.5099 8.44071,-1.678 1.41862,1.0447 1.269369,2.5416 0.386893,1.4332 0.410085,0.9839 1.163587,2.004 2.177917,2.8242 3.412511,3.3995 2.285152,1.7432 3.296588,-0.9999 3.038654,-1.6244 0.382553,-2.8473 0.01016,-4.8167 -0.456447,-3.5371 -0.594117,-2.2402 -0.40573,-0.9854 -0.740467,-1.2882 -0.898412,-2.6938 0.263728,-1.7417 7.153958,-4.7833 1.711327,0.4231 2.144596,1.862 0.907101,1.1781 0.756403,0.752 1.840293,1.4056 3.093726,1.7751 4.452927,1.8345 2.77638,0.7361 2.664803,-2.1852 2.18517,-2.6648 -0.73612,-2.7763 -1.8345,-4.4559 -1.775089,-3.0922 -1.405577,-1.8389 -0.752055,-0.7564 -1.17663,-0.9085 -1.860578,-2.1446 -0.424575,-1.7099 4.781869,-7.1569 1.741753,-0.2608 2.693782,0.8984 1.28966,0.739 0.98535,0.4072 2.23879,0.5927 3.53713,0.4579 4.81663,-0.012 2.84738,-0.3811 v 0.01 l 1.62439,-3.0386 0.99984,-3.2995 -1.74321,-2.2822 -3.39801,-3.414 -2.8242,-2.1779 -2.00404,-1.1622 -0.98245,-0.41 -1.43601,-0.3898 -2.54163,-1.2694 -1.04477,-1.4172 1.67945,-8.4421 1.50846,-0.9071 2.83434,-0.2015 1.47224,0.1913 h 1.0665 l 2.29529,-0.3086 3.44294,-0.9303 4.44569,-1.8534 2.48656,-1.4432 0.33763,-3.4299 -0.33763,-3.4299 -2.48656,-1.4404 -4.44569,-1.8548 -3.44294,-0.9302 -2.29529,-0.3087 h -1.0665 l -1.47224,0.1913 -2.83434,-0.2014 -1.50846,-0.9086 -1.67945,-8.4407 1.04477,-1.4186 2.54163,-1.2694 1.43601,-0.3883 0.98245,-0.4101 2.00404,-1.1621 2.8242,-2.178 3.39801,-3.4139 1.74321,-2.2837 -0.99984,-3.2981 -1.62439,-3.0401 -2.84738,-0.3811 -4.81663,-0.012 -3.53713,0.4594 -2.23879,0.5941 -0.98535,0.4057 -1.28966,0.7405 -2.693782,0.8984 -1.741753,-0.2637 -4.781869,-7.1554 0.424575,-1.7099 1.860578,-2.146 1.17663,-0.9071 0.752055,-0.755 1.405577,-1.8417 1.775089,-3.0923 1.8345,-4.4529 0.73612,-2.7793 -2.18517,-2.6648 -2.664803,-2.1852 -2.77638,0.739 -4.452927,1.8316 -3.093726,1.778 -1.840293,1.4041 -0.756403,0.7521 -0.907101,1.1766 -2.144596,1.8621 -1.711327,0.4231 -7.153958,-4.7804 -0.263728,-1.7432 0.898412,-2.6924 0.740467,-1.2896 0.40573,-0.9854 0.594117,-2.2388 0.456447,-3.5371 -0.01016,-4.8166 -0.382553,-2.8503 -3.038654,-1.6229 -3.296588,-1.0013 -2.285152,1.7461 -3.412511,3.3965 -2.177917,2.8242 -1.163587,2.0041 -0.410085,0.9839 -0.386893,1.4331 -1.269369,2.5416 -1.41862,1.0477 -8.442156,-1.6809 -0.910009,-1.5099 -0.198521,-2.8315 0.189826,-1.4751 -0.003,-1.0636 -0.30865,-2.2982 -0.928839,-3.44 -1.853336,-4.4486 -1.443252,-2.4837 z m -0.240543,40.0198 c 25.773221,-10e-5 46.666641,20.855 46.666634,46.5812 0,25.7262 -20.89342,46.5813 -46.666634,46.5811 -25.773213,2e-4 -46.6666339,-20.8549 -46.6666309,-46.5811 -6.7e-6,-25.7262 20.8934179,-46.5813 46.6666309,-46.5812 z"
+ id="path4936"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscsc" />
+ </g>
+ </g>
+ <g
+ id="g5020"
+ transform="matrix(0.35552611,-0.02794902,0.02794902,0.35552611,64.796165,-192.13622)"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g5000"
+ inkscape:label="OpenJsCad"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ transform="rotate(-7.20199,-42.477168,1116.3894)">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 333.99609,122.4375 -2.92968,0.28906 -1.03125,1.17188 -2.8418,5.72656 -0.76563,3.80664 0.0859,1.37109 1.43164,4.2461 -0.94922,3.36328 -7.95117,3.29492 -3.05078,-1.70898 -1.99219,-4.01367 -0.90625,-1.0293 -3.23437,-2.15039 -6.0586,-2.04102 -1.55664,-0.0996 -2.27734,1.86914 -1.86719,2.27539 0.0977,1.55664 2.04297,6.06055 2.14843,3.23242 1.0293,0.90821 4.01563,1.99023 1.70703,3.05078 -3.29297,7.95117 -3.36523,0.94922 -4.2461,-1.42969 -1.36914,-0.0879 -3.80664,0.76563 -5.72852,2.8418 -1.16992,1.03125 -0.28906,2.93164 0.28906,2.92968 1.16992,1.03125 5.72852,2.8418 3.80664,0.76563 1.36914,-0.0859 4.2461,-1.43164 3.36523,0.94922 3.29297,7.95117 -1.70703,3.05078 -4.01563,1.99023 -1.0293,0.90821 -2.14843,3.23242 -2.04297,6.06055 -0.0977,1.55664 1.86719,2.27734 2.27734,1.86719 1.55664,-0.0977 6.0586,-2.04101 3.23437,-2.15039 0.90625,-1.0293 1.99219,-4.01563 3.05078,-1.70703 7.95117,3.29297 0.94922,3.36524 -1.43164,4.24609 -0.0859,1.36914 0.76563,3.80664 2.8418,5.72852 1.03125,1.17187 2.92968,0.28711 2.93164,-0.28711 1.03125,-1.17187 2.8418,-5.72852 0.76563,-3.80664 -0.0859,-1.36914 -1.43164,-4.24609 0.94922,-3.36524 7.95117,-3.29297 3.05078,1.70703 1.99219,4.01563 0.90625,1.0293 3.23437,2.15039 6.0586,2.04101 1.55664,0.0977 v 0.002 l 2.27734,-1.86914 1.86719,-2.27539 -0.0977,-1.55664 -2.04297,-6.06055 -2.14843,-3.23437 -1.0293,-0.90625 -4.01563,-1.99024 -1.70703,-3.05078 3.29297,-7.95117 3.36524,-0.94922 4.24609,1.42969 1.36914,0.0879 3.80664,-0.76758 5.72852,-2.83984 1.16992,-1.03321 0.28906,-2.92968 -0.28906,-2.92969 -1.16992,-1.03125 -5.72852,-2.8418 -3.80664,-0.76562 -1.36914,0.0859 -4.24609,1.43165 -3.36524,-0.94922 -3.29297,-7.95117 1.70703,-3.05079 4.01563,-1.99218 1.0293,-0.90625 2.14843,-3.23438 2.04297,-6.05859 0.0977,-1.55664 -1.86719,-2.27735 -2.27734,-1.86718 -1.55664,0.0996 -6.0586,2.04102 -3.23437,2.14844 -0.90625,1.03125 L 352,144 l -3.05078,1.70703 -7.95117,-3.29297 -0.94922,-3.36523 1.43164,-4.2461 0.0859,-1.36914 -0.76563,-3.80664 -2.8418,-5.72851 -1.03125,-1.17188 z m 0,36.78516 2.35743,0.24804 2.25586,0.73242 2.05273,1.1836 1.76172,1.58594 1.39258,1.91796 0.96484,2.16602 0.49219,2.31836 v 2.37109 l -0.49219,2.31836 -0.96484,2.16602 -1.39258,1.91797 -1.76172,1.58594 -2.05273,1.18359 -2.25586,0.73437 -2.35743,0.2461 -2.35742,-0.2461 -2.2539,-0.73437 -2.05274,-1.18359 -1.76172,-1.58594 -1.39258,-1.91797 -0.96484,-2.16602 -0.49219,-2.31836 V 169.375 l 0.49219,-2.31836 0.96484,-2.16602 1.39258,-1.91796 1.76172,-1.58594 2.05274,-1.1836 2.2539,-0.73242 z"
+ transform="translate(-333.99702,951.95909)"
+ id="path4996"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g5002"
+ inkscape:label="0"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ <g
+ id="g5080"
+ transform="matrix(0.34754475,0.07995379,-0.07995379,0.34754475,170.06814,-138.86251)"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g5060"
+ inkscape:label="OpenJsCad"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ transform="rotate(7.7315343,-53.927495,1106.153)">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 286.00195,248.30078 -2.95117,0.70899 -2.80469,1.16211 -0.71093,2.08007 -0.68946,5.7168 0.33399,3.74023 0.47851,1.54883 0.29102,0.33399 2.10156,4.01758 -0.1914,2.79882 -6.9629,5.0586 -2.7207,-0.6836 -3.17187,-3.23828 -0.22657,-0.38086 -1.32617,-0.93359 -3.45312,-1.47266 -5.65039,-1.11133 -2.19922,0.0332 -1.97071,2.30859 -1.58593,2.58789 0.64648,2.10156 2.80274,5.03125 2.46875,2.82813 1.29687,0.97266 0.43359,0.0996 4.06055,2.01367 1.49024,2.37695 -2.65821,8.18555 -2.60547,1.04492 -4.46875,-0.75586 -0.4082,-0.17383 -1.61914,0.0254 -3.66016,0.83594 -5.22461,2.42383 -1.75976,1.31836 -0.23828,3.02734 0.23828,3.02539 1.75976,1.31836 5.22461,2.42383 3.66016,0.83789 1.61914,0.0234 0.4082,-0.17383 4.46875,-0.75586 2.60547,1.04492 2.65821,8.18555 -1.49024,2.37695 -4.06055,2.01563 -0.43359,0.0976 -1.29687,0.97266 -2.46875,2.82812 -2.80274,5.03321 -0.64648,2.09961 1.58593,2.58789 1.97071,2.30859 2.19922,0.0332 5.65039,-1.10937 3.45312,-1.47461 1.32617,-0.93164 0.22657,-0.38281 3.17187,-3.23829 2.7207,-0.68359 6.9629,5.05859 0.1914,2.79883 -2.10156,4.01758 -0.29102,0.33399 -0.47851,1.54882 -0.33399,3.74024 0.68946,5.7168 0.71093,2.08007 2.80469,1.16211 2.95117,0.70899 1.79883,-1.26563 3.91797,-4.2207 1.92773,-3.22266 0.5254,-1.53125 -0.041,-0.44336 0.66211,-4.48437 1.79883,-2.15235 h 8.60742 l 1.79883,2.15235 0.66211,4.48437 -0.0391,0.44336 0.52344,1.53125 1.92774,3.22266 3.91796,4.2207 1.79883,1.26563 2.95117,-0.70899 2.80469,-1.16211 0.71094,-2.08007 0.68945,-5.7168 -0.33398,-3.74024 -0.47656,-1.54882 -0.29297,-0.33399 -2.09961,-4.01758 0.18945,-2.79883 6.96289,-5.05859 2.7207,0.68359 3.17188,3.23829 0.22851,0.38281 1.32422,0.93164 3.45313,1.47461 5.65234,1.10937 2.19727,-0.0332 1.9707,-2.30859 1.58594,-2.58789 -0.64649,-2.09961 -2.80273,-5.03321 -2.46875,-2.82812 -1.29687,-0.97266 -0.4336,-0.0976 -4.05859,-2.01563 -1.49219,-2.37695 2.66016,-8.18555 2.60351,-1.04492 4.46875,0.75586 0.4082,0.17383 1.6211,-0.0234 3.66016,-0.83789 5.2246,-2.42383 1.75782,-1.31836 0.23828,-3.02539 -0.23828,-3.02734 -1.75782,-1.31836 -5.2246,-2.42383 -3.66016,-0.83594 -1.6211,-0.0254 -0.4082,0.17383 -4.46875,0.75586 -2.60351,-1.04492 L 336,288 l 1.49219,-2.37695 4.05859,-2.01367 0.4336,-0.0996 1.29687,-0.97266 2.46875,-2.82813 2.80273,-5.03125 0.64649,-2.10156 -1.58594,-2.58789 -1.9707,-2.30859 -2.19727,-0.0332 -5.65234,1.11133 -3.45313,1.47266 -1.32422,0.93359 -0.22851,0.38086 -3.17188,3.23828 -2.7207,0.6836 -6.96289,-5.0586 -0.18945,-2.79882 2.09961,-4.01758 0.29297,-0.33399 0.47656,-1.54883 0.33398,-3.74023 -0.68945,-5.7168 -0.71094,-2.08007 -2.80469,-1.16211 -2.95117,-0.70899 -1.79883,1.26563 -3.91796,4.2207 -1.92774,3.22266 -0.52344,1.53125 0.0391,0.44336 -0.66211,4.48437 -1.79883,2.15234 h -8.60742 l -1.79883,-2.15234 -0.66211,-4.48437 0.041,-0.44336 -0.5254,-1.53125 -1.92773,-3.22266 -3.91797,-4.2207 z m 14.89453,44.29102 2.35743,0.24804 2.2539,0.73243 2.05274,1.18554 1.76172,1.58594 1.39257,1.91797 0.96485,2.16601 0.49219,2.31836 v 2.36914 l -0.49219,2.31836 -0.96485,2.16602 -1.39257,1.91797 -1.76172,1.58594 -2.05274,1.18554 -2.2539,0.73242 -2.35743,0.24805 -2.35742,-0.24805 -2.25586,-0.73242 -2.05273,-1.18554 -1.76172,-1.58594 -1.39258,-1.91797 -0.96484,-2.16602 -0.49219,-2.31836 v -2.36914 l 0.49219,-2.31836 0.96484,-2.16601 1.39258,-1.91797 1.76172,-1.58594 2.05273,-1.18554 2.25586,-0.73243 z"
+ transform="translate(-300.89576,818.58899)"
+ id="path5056"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g5062"
+ inkscape:label="0"
+ style="stroke:#ffffff;stroke-width:1.40204084;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/android/icons/down.svg b/android/icons/down.svg
new file mode 100644
index 000000000..190e7e875
--- /dev/null
+++ b/android/icons/down.svg
@@ -0,0 +1,542 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="down.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/down.png"
+ inkscape:export-xdpi="48.000004"
+ inkscape:export-ydpi="48.000004">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.49497475"
+ inkscape:cx="-237.64887"
+ inkscape:cy="241.15373"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="false"
+ inkscape:snap-page="true"
+ showguides="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-midpoints="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <path
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.018648,43.065371 V 56.520637 L 67.733324,92.401356 118.44801,56.520637 V 43.065371 Z"
+ id="path5426"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/drop_btn.svg b/android/icons/drop_btn.svg
new file mode 100644
index 000000000..7cb0e8532
--- /dev/null
+++ b/android/icons/drop_btn.svg
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="drop_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/drop_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.49497475"
+ inkscape:cx="-435.15132"
+ inkscape:cy="209.28829"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:0.50196078;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 21.166666,29.761616 21.166667,-7.055555 21.166666,7.055555 -21.166666,8.338385 z"
+ id="path4693"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.25098039;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 21.166666,30.40303 v 26.939394 l 21.166667,7.69697 V 38.099999 Z"
+ id="path4699"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:0.0627451;stroke:#ffffff;stroke-width:3;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 42.333333,38.099999 v 26.939395 l 21.166666,-7.69697 V 30.40303 Z"
+ id="path4701"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 110.06667,110.06667 H 67.733332"
+ id="path4727"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 88.899999,97.366665 0,-16.933331 C 89.263773,55.921256 75.773505,47.130445 55.033333,46.566666"
+ id="path4729"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 101.6,84.666667 -12.700001,12.699998 -12.7,-12.699998"
+ id="path4737"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/fast_btn.svg b/android/icons/fast_btn.svg
new file mode 100644
index 000000000..1436596b7
--- /dev/null
+++ b/android/icons/fast_btn.svg
@@ -0,0 +1,190 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="fast_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/fast_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-123.33594"
+ inkscape:cy="234.93088"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 52.349702,78.770237 c 8.223364,2.478851 17.933206,1.627099 22.678571,-5.85863 L 86.367558,52.311904"
+ id="path4630"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 99.195826,95.244627 C 95.407287,83.585464 90.120793,78.524425 79.752975,74.045534 L 90.856024,53.96555"
+ id="path4632"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 64.539433,56.942114 c 4.52339,-7.945233 16.596076,-10.248496 24.001489,-4.535715 6.443481,4.79704 18.068938,2.827548 22.314838,-3.012345"
+ id="path4495"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <ellipse
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.947;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4496"
+ cx="95.061012"
+ cy="40.783634"
+ rx="6.9582553"
+ ry="7.1472435" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 47.624999,35.454168 1.058334,-1.5875 h 29.633333 l -0.921774,1.663097 z"
+ id="path4509"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 21.030106,52.841071 1.058334,-1.5875 h 29.633333 l -0.921774,1.663097 z"
+ id="path4509-3"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 29.496773,69.774404 1.058334,-1.5875 H 60.18844 l -0.921774,1.663097 z"
+ id="path4509-56"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.22683655px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 18.91344,88.824411 1.058334,-1.5875 h 29.633333 l -0.921774,1.66309 z"
+ id="path4509-2"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+</svg>
diff --git a/android/icons/fly_btn.svg b/android/icons/fly_btn.svg
new file mode 100644
index 000000000..d203842d4
--- /dev/null
+++ b/android/icons/fly_btn.svg
@@ -0,0 +1,168 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="fly_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/fly_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.98994949"
+ inkscape:cx="53.55965"
+ inkscape:cy="198.9488"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="false"
+ inkscape:snap-page="true"
+ showguides="false"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-to-guides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.670229,38.593108 109.83886,56.716287 83.057927,68.798408 75.262818,96.914386 71.580388,74.83947 44.799461,86.921586 25.670229,38.593108"
+ id="path4666"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.670229,38.593106 71.580388,74.839464"
+ id="path4668"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.670229,38.593106 83.057927,68.798404"
+ id="path4670"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 75.262817,96.914386 60.102847,80.880526"
+ id="path4672"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cc" />
+ </g>
+</svg>
diff --git a/android/icons/gear_icon.svg b/android/icons/gear_icon.svg
new file mode 100644
index 000000000..b44685ade
--- /dev/null
+++ b/android/icons/gear_icon.svg
@@ -0,0 +1,194 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="gear_icon.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/gear_icon.png"
+ inkscape:export-xdpi="24"
+ inkscape:export-ydpi="24">
+ <defs
+ id="defs2">
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path4687"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path4690"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4692"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4694"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX-3">
+ <path
+ id="path4756"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch-6"
+ height="8">
+ <path
+ id="path4759"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path4761"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path4763"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.5"
+ inkscape:cx="-308.644"
+ inkscape:cy="171.10144"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-page="true"
+ inkscape:snap-grids="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-midpoints="false"
+ inkscape:snap-object-midpoints="true"
+ inkscape:snap-to-guides="false"
+ inkscape:showpageshadow="false"
+ inkscape:snap-smooth-nodes="true"
+ inkscape:object-nodes="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="2.1166666"
+ spacingy="2.1166666"
+ empspacing="2"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Layer 1"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(0,-161.53332)">
+ <g
+ id="g4792"
+ transform="matrix(0.68725287,0,0,0.65623884,67.477909,-509.24679)"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.74041259;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <g
+ id="g4772"
+ inkscape:label="OpenJsCad"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.74041259;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 256,80.943359 -8.28125,0.72461 -3.63477,5.410156 -5.61328,12.685547 -2.28906,9.259768 -0.35156,5.1875 0.0937,0.86133 0.70703,2.44726 0.60547,9.80664 -2.66602,5.47461 -21.5957,5.78711 -5.04492,-3.40625 -4.37696,-8.79687 -0.61132,-2.47071 -0.35157,-0.79297 -2.89648,-4.31836 -6.60938,-6.87304 -11.20507,-8.17969 -5.84961,-2.86719 -7.53516,3.51367 -6.80859,4.76954 -0.44336,6.50195 1.48047,13.79297 2.64453,9.16406 2.28906,4.66992 0.51172,0.69922 1.83398,1.76563 5.42774,8.18945 0.42773,6.07422 -15.81054,15.81445 -6.07032,-0.42773 -8.18945,-5.42969 -1.76367,-1.83399 -0.69922,-0.51171 -4.66992,-2.28907 -9.15821,-2.64843 -13.79297,-1.47852 -6.5,0.44141 -4.76757,6.8125 -3.51367,7.53515 2.86914,5.85157 8.17382,11.20703 6.87305,6.61132 4.31641,2.90039 0.79297,0.34961 2.4707,0.61133 8.79492,4.37696 3.4043,5.04687 -5.78516,21.60156 -5.47265,2.66602 -9.80469,-0.60547 -2.44727,-0.70703 -0.85937,-0.0918 -5.1875,0.35156 -9.257816,2.28907 -12.68164,5.61523 -5.408203,3.63281 -0.72461,8.28516 0.72461,8.28516 5.408203,3.63281 12.68164,5.61523 9.257816,2.28907 5.1875,0.35156 0.85937,-0.0918 2.44727,-0.70703 9.80469,-0.60547 5.47265,2.66602 5.78516,21.60156 -3.4043,5.04687 -8.79492,4.37696 -2.4707,0.61133 -0.79297,0.34961 -4.31641,2.90039 -6.87305,6.61132 -8.17382,11.20703 -2.86914,5.85157 3.51367,7.53515 4.76757,6.8125 6.5,0.44141 13.79297,-1.47852 9.15821,-2.64843 4.66992,-2.28907 0.69922,-0.50976 1.76367,-1.83594 8.18945,-5.42969 6.07032,-0.42773 15.81054,15.81445 -0.42773,6.07422 -5.42774,8.18945 -1.83398,1.76563 -0.51172,0.69922 -2.28906,4.66992 -2.64453,9.16406 -1.48047,13.79297 0.44336,6.50195 6.80859,4.76758 7.53516,3.51758 5.84961,-2.86914 11.20507,-8.17969 6.60938,-6.87304 2.89648,-4.31836 0.35157,-0.79297 0.61132,-2.47071 4.37696,-8.79687 5.04492,-3.40625 21.5957,5.78711 2.66602,5.47461 -0.60547,9.80664 -0.70703,2.44726 -0.0937,0.85938 0.35156,5.18945 2.28906,9.25977 5.61328,12.68555 3.63477,5.41015 8.28125,0.72461 8.28125,-0.72461 3.63477,-5.41015 5.61328,-12.68555 2.28906,-9.25977 0.35156,-5.18945 -0.0937,-0.85938 -0.70703,-2.44726 -0.60547,-9.80664 2.66602,-5.47461 21.5957,-5.78711 5.04492,3.40625 4.37696,8.79687 0.61132,2.47071 0.35157,0.79297 2.89648,4.31836 6.60938,6.87304 11.20507,8.17969 5.84961,2.86914 7.53516,-3.51758 6.80859,-4.76758 0.44336,-6.50195 -1.48047,-13.79297 -2.64453,-9.16406 -2.28906,-4.66992 -0.51172,-0.69922 -1.83398,-1.76563 -5.42774,-8.18945 -0.42773,-6.07422 15.81054,-15.81445 6.07032,0.42773 8.18945,5.42969 1.76367,1.83594 0.69922,0.50976 4.66992,2.28907 9.15821,2.64843 13.79297,1.47852 6.5,-0.44141 v -0.002 l 4.76757,-6.81055 3.51367,-7.53711 -2.86914,-5.85156 -8.17382,-11.20508 -6.87305,-6.61328 -4.31641,-2.89843 -0.79297,-0.34961 -2.4707,-0.61133 -8.79492,-4.37891 -3.4043,-5.04492 5.78516,-21.60352 5.47265,-2.66797 9.80469,0.60938 2.44727,0.70703 0.85937,0.0918 5.1875,-0.35156 9.25782,-2.28907 12.68164,-5.61718 5.4082,-3.63282 0.72461,-8.28515 -0.72461,-8.28321 -5.4082,-3.63476 -12.68164,-5.61524 -9.25782,-2.28711 -5.1875,-0.35351 -0.85937,0.0937 -2.44727,0.70508 -9.80469,0.60937 -5.47265,-2.66797 -5.78516,-21.59961 3.4043,-5.04882 8.79492,-4.37696 2.4707,-0.61133 0.79297,-0.35156 4.31641,-2.89844 6.87305,-6.61132 8.17382,-11.20703 2.86914,-5.85157 -3.51367,-7.53711 -4.76757,-6.81054 -6.5,-0.44336 -13.79297,1.48047 -9.15821,2.64648 -4.66992,2.28906 -0.69922,0.51172 -1.76367,1.83594 -8.18945,5.42773 -6.07032,0.42774 -15.81054,-15.81446 0.42773,-6.07226 5.42774,-8.18945 1.83398,-1.76563 0.51172,-0.69922 2.28906,-4.67187 2.64453,-9.16016 1.48047,-13.79492 -0.44336,-6.50195 -6.80859,-4.76954 -7.53516,-3.51562 -5.84961,2.87109 -11.20507,8.17578 -6.60938,6.875 -2.89648,4.31836 -0.35157,0.79102 -0.61132,2.47266 -4.37696,8.79687 -5.04492,3.4082 -21.5957,-5.79101 -2.66602,-5.47266 0.60547,-9.80664 0.70703,-2.44726 0.0937,-0.85938 -0.35156,-5.19141 -2.28906,-9.259761 -5.61328,-12.683594 -3.63477,-5.412109 z m 0,97.111331 A 77.946197,77.946197 0 0 1 333.94531,256 77.946197,77.946197 0 0 1 256,333.94531 77.946197,77.946197 0 0 1 178.05469,256 77.946197,77.946197 0 0 1 256,178.05469 Z"
+ transform="matrix(0.38495268,0,0,0.40318156,-98.176247,1022.1341)"
+ id="path4768"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ id="g4774"
+ inkscape:label="0"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.74041259;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ </g>
+ </g>
+</svg>
diff --git a/android/icons/inventory_btn.svg b/android/icons/inventory_btn.svg
new file mode 100644
index 000000000..ee3dc3c17
--- /dev/null
+++ b/android/icons/inventory_btn.svg
@@ -0,0 +1,509 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="inventory_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/inventory_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="51.254762"
+ inkscape:cy="221.96083"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028"
+ width="21.166668"
+ height="21.166664"
+ x="27.516666"
+ y="27.516668" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-6"
+ width="21.166668"
+ height="21.166664"
+ x="57.149998"
+ y="27.516668" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-2"
+ width="21.166668"
+ height="21.166664"
+ x="86.783333"
+ y="27.516668" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-1"
+ width="21.166668"
+ height="21.166664"
+ x="27.516665"
+ y="57.150002" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-6-7"
+ width="21.166668"
+ height="21.166664"
+ x="57.149998"
+ y="57.150002" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-2-8"
+ width="21.166668"
+ height="21.166664"
+ x="86.783333"
+ y="57.150002" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-5"
+ width="21.166668"
+ height="21.166664"
+ x="27.516666"
+ y="86.783333" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-6-74"
+ width="21.166668"
+ height="21.166664"
+ x="57.149998"
+ y="86.783333" />
+ <rect
+ style="display:inline;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5028-2-1"
+ width="21.166668"
+ height="21.166664"
+ x="86.783333"
+ y="86.783333" />
+ </g>
+</svg>
diff --git a/android/icons/joystick_bg.svg b/android/icons/joystick_bg.svg
new file mode 100644
index 000000000..d8836b358
--- /dev/null
+++ b/android/icons/joystick_bg.svg
@@ -0,0 +1,876 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="joystick_bg.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/joystick_bg.png"
+ inkscape:export-xdpi="144.00002"
+ inkscape:export-ydpi="144.00002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5914">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5900" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5902" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5904" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5906" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5908" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5910" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5912" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5916" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5918"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5920"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5922"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5924"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5926"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5928"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5930"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5932" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5934"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5936"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5938"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5940"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5942"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5944"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5946"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5948" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5950"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5952"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5954"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5956"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5958"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5960"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5962"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5964" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5966"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5968"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5970"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5972"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5974"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5976"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5978"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5980" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5982"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5984"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5986"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5988"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5990"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5992"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5994"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5996" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5998"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix6000"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood6002"
+ flood-opacity="1"
+ flood-color="rgb(159,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend6004"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend6006"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix6008"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite6010"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="142.53646"
+ inkscape:cy="181.89104"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="false"
+ inkscape:snap-page="true"
+ showguides="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <circle
+ style="fill:#ffffff;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:1.99994016;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196078"
+ id="path5898"
+ cx="67.733498"
+ cy="67.73317"
+ r="66.733528" />
+ </g>
+</svg>
diff --git a/android/icons/joystick_center.svg b/android/icons/joystick_center.svg
new file mode 100644
index 000000000..17202290a
--- /dev/null
+++ b/android/icons/joystick_center.svg
@@ -0,0 +1,877 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="joystick_center.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/joystick_center.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5914">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5900" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5902" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5904" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5906" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5908" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5910" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5912" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5916" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5918"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5920"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5922"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5924"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5926"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5928"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5930"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5932" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5934"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5936"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5938"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5940"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5942"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5944"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5946"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5948" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5950"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5952"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5954"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5956"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5958"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5960"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5962"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5964" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5966"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5968"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5970"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5972"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5974"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5976"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5978"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5980" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5982"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5984"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5986"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5988"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5990"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5992"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5994"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5996" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5998"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix6000"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood6002"
+ flood-opacity="1"
+ flood-color="rgb(159,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend6004"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend6006"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix6008"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite6010"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="170.02349"
+ inkscape:cy="266.32864"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <ellipse
+ style="display:inline;fill:#ffffff;fill-opacity:0.31372549;stroke:#ffffff;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.62745098"
+ id="path5898-8"
+ cx="67.733505"
+ cy="67.73317"
+ rx="64.816437"
+ ry="64.816429" />
+ </g>
+</svg>
diff --git a/android/icons/joystick_off.svg b/android/icons/joystick_off.svg
new file mode 100644
index 000000000..58e1acf22
--- /dev/null
+++ b/android/icons/joystick_off.svg
@@ -0,0 +1,882 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="joystick_off.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/joystick_off.png"
+ inkscape:export-xdpi="96.000008"
+ inkscape:export-ydpi="96.000008">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5914">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5900" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5902" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5904" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5906" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5908" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5910" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5912" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5916" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5918"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5920"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5922"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5924"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5926"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5928"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5930"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5932" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5934"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5936"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5938"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5940"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5942"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5944"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5946"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5948" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5950"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5952"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5954"
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5956"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5958"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5960"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5962"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5964" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5966"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5968"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5970"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5972"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5974"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5976"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5978"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5980" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5982"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5984"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5986"
+ flood-opacity="1"
+ flood-color="rgb(159,28,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5988"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5990"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5992"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5994"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5996" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5998"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix6000"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood6002"
+ flood-opacity="1"
+ flood-color="rgb(159,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend6004"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend6006"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix6008"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite6010"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="composite2" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1.1361742"
+ inkscape:cx="47.851245"
+ inkscape:cy="254.8605"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <circle
+ style="fill:none;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:1.99994016;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196078"
+ id="path5898"
+ cx="67.731476"
+ cy="67.735199"
+ r="66.733528" />
+ <circle
+ style="display:inline;fill:#ffffff;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.50196078"
+ id="path5898-8"
+ cx="68.06868"
+ cy="67.452492"
+ r="22.219723" />
+ </g>
+</svg>
diff --git a/android/icons/jump_btn.svg b/android/icons/jump_btn.svg
new file mode 100644
index 000000000..882c49ed7
--- /dev/null
+++ b/android/icons/jump_btn.svg
@@ -0,0 +1,547 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="jump_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/jump_btn.png"
+ inkscape:export-xdpi="48.000004"
+ inkscape:export-ydpi="48.000004">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="128.02635"
+ inkscape:cy="237.11312"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="false"
+ inkscape:snap-page="true"
+ showguides="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-bbox-midpoints="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <path
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 17.018648,92.401289 V 78.946023 L 67.733324,43.065304 118.44801,78.946023 v 13.455266 z"
+ id="path5426"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/icons/minimap_btn.svg b/android/icons/minimap_btn.svg
new file mode 100644
index 000000000..deda32717
--- /dev/null
+++ b/android/icons/minimap_btn.svg
@@ -0,0 +1,159 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="minimap_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/minimap_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.56808711"
+ inkscape:cx="140.1995"
+ inkscape:cy="242.801"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 25.4,25.400001 52.859457,36.945456 V 110.06667 L 25.4,98.521213 Z"
+ id="path4857"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 82.607193,25.496213 110.06667,37.041668 V 110.16289 L 82.607192,98.617425 Z"
+ id="path4857-9"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ <path
+ style="display:inline;fill:#ffffff;fill-opacity:0.1254902;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 52.859457,36.900035 82.607203,25.400001 V 98.233546 L 52.859457,109.73359 Z"
+ id="path4857-1"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccc" />
+ </g>
+</svg>
diff --git a/android/icons/noclip_btn.svg b/android/icons/noclip_btn.svg
new file mode 100644
index 000000000..a816edfc7
--- /dev/null
+++ b/android/icons/noclip_btn.svg
@@ -0,0 +1,173 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="noclip_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/noclip_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="166.57784"
+ inkscape:cy="222.80905"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 20.760344,79.838021 c 8.223364,2.478851 17.933206,1.627099 22.678571,-5.85863 L 54.7782,53.379688"
+ id="path4630"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 67.606468,96.312411 C 63.817929,84.653248 58.531435,79.592209 48.163617,75.113318 L 59.266666,55.033334"
+ id="path4632"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <path
+ style="fill:none;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 32.950075,58.009898 c 4.52339,-7.945233 16.596076,-10.248496 24.001489,-4.535715 6.443481,4.79704 18.068938,2.827548 22.314838,-3.012345"
+ id="path4495"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccc" />
+ <ellipse
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:0.94658476;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4496"
+ cx="63.471653"
+ cy="41.851418"
+ rx="6.9582553"
+ ry="7.1472435" />
+ <rect
+ style="fill:#ffffff;fill-opacity:0.25098041;stroke:#ffffff;stroke-width:1.668;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect4645"
+ width="71.966667"
+ height="76.199997"
+ x="41.166401"
+ y="29.295174" />
+ </g>
+</svg>
diff --git a/android/icons/rangeview_btn.svg b/android/icons/rangeview_btn.svg
new file mode 100644
index 000000000..f9319e0b5
--- /dev/null
+++ b/android/icons/rangeview_btn.svg
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="rangeview_btn.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/rangeview_btn.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="166.63539"
+ inkscape:cy="248.08632"
+ inkscape:document-units="mm"
+ inkscape:current-layer="svg8"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="false"
+ inkscape:snap-page="true"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;stroke-width:1;stroke:#ffffff;stroke-opacity:1;fill-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.77952761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 150.08631,391.94585 C 127.2399,389.49917 105.94293,375.91818 94.0332,356.20102 86.417382,343.59265 83.080086,330.51463 83.588961,315.27269 c 0.288383,-8.63772 1.22906,-14.19631 3.585813,-21.18907 0.744516,-2.20907 10.578738,-22.66466 21.853826,-45.45687 11.27509,-22.79221 22.70752,-45.91291 25.4054,-51.37934 5.65921,-11.46666 7.92364,-14.85355 13.47663,-20.15687 9.3888,-8.96668 21.0224,-13.60185 34.10046,-13.58663 15.57027,0.0181 29.17184,6.54335 38.91458,18.66892 4.42466,5.50682 7.71172,12.24131 9.40778,19.27457 l 1.32267,5.48487 1.89404,7.6e-4 c 1.80502,7.5e-4 1.89404,-0.0773 1.89404,-1.66087 0,-2.38449 1.37433,-7.32366 2.62141,-9.42102 4.34092,-7.30059 13.17739,-11.60831 20.98951,-10.23223 8.90426,1.56845 16.14022,8.89813 17.09233,17.31369 l 0.3384,2.99108 h 1.90437 1.90437 l 0.82037,-3.6618 c 1.97195,-8.80199 6.717,-17.42698 13.15423,-23.91027 6.44087,-6.48695 14.23724,-11.09036 22.74482,-13.4298 3.44476,-0.94724 5.34406,-1.11181 12.87945,-1.11592 8.2237,-0.004 9.15393,0.0921 13.36642,1.38764 11.19974,3.4445 21.27498,10.65667 27.47414,19.66684 2.43995,3.54634 51.82554,103.72263 53.56888,108.66187 4.86293,13.77773 5.3328,30.48234 1.25486,44.6126 -7.75149,26.85937 -29.41571,46.87461 -57.03616,52.69485 -7.41065,1.56158 -20.20927,1.68497 -27.769,0.2677 -10.44443,-1.95808 -21.29618,-6.51537 -29.79851,-12.51414 -5.61285,-3.96011 -13.68691,-11.97138 -17.55818,-17.42164 -5.93008,-8.3488 -10.31705,-18.5166 -12.57558,-29.14677 -0.9513,-4.47749 -1.12676,-7.36003 -1.388,-22.80306 l -0.29904,-17.67767 -1.72317,-3.17794 c -1.98763,-3.66567 -6.54416,-8.1288 -10.17974,-9.97108 -3.00155,-1.521 -7.96438,-2.74331 -11.17947,-2.75342 -9.0329,-0.0284 -18.18038,5.63658 -22.00735,13.62902 l -1.57171,3.28243 -0.0408,14.1427 c -0.0539,18.69996 -0.78106,24.89804 -4.07384,34.72632 -2.2638,6.75698 -4.66197,11.60267 -8.86796,17.91843 -11.87929,17.83801 -31.39221,29.77252 -52.98796,32.40855 -4.28534,0.52308 -12.49549,0.62647 -16.41498,0.20673 z m 17.51181,-12.02116 c 24.5782,-3.98628 44.48858,-21.86418 50.90845,-45.71164 7.03076,-26.11666 -3.52165,-54.08171 -26.00322,-68.91142 -18.6353,-12.29256 -42.96948,-13.7508 -62.79635,-3.7631 -6.56442,3.3068 -10.82228,6.4025 -16.2475,11.81283 -12.18826,12.1548 -18.426507,27.20212 -18.426507,44.44671 0,16.25308 5.718027,30.90801 16.717117,42.84489 8.79197,9.54157 22.47266,17.01469 34.80066,19.00997 2.08344,0.33719 4.129,0.67988 4.54569,0.76152 2.33806,0.45809 12.52096,0.15587 16.50166,-0.48976 z m 199.67098,-0.46635 c 21.74737,-4.70543 39.22231,-19.90775 46.64822,-40.58158 4.67986,-13.02877 4.67986,-29.12861 0,-42.15737 -9.00601,-25.07287 -32.72555,-41.79925 -59.27512,-41.79925 -29.97234,0 -55.28352,20.70748 -61.73156,50.50356 -0.78837,3.64299 -1.03837,6.62229 -1.03837,12.37437 0,8.49596 0.94045,14.06163 3.61188,21.37559 7.82601,21.42637 26.67144,37.08767 49.05652,40.76791 5.46425,0.89835 17.52859,0.64186 22.72843,-0.48323 z M 237.11052,255.93654 c 2.061,-5.80288 9.76676,-11.6013 16.44795,-12.37673 8.46341,-0.98229 17.00015,3.70335 20.60499,11.30963 1.35941,2.86835 1.5302,3.0277 3.27087,3.05174 l 1.83657,0.0254 0.37277,-13.91749 c 0.20502,-7.65462 0.25259,-14.81346 0.10571,-15.90854 -0.81263,-6.05855 -6.90622,-13.74979 -13.24302,-16.71514 -12.19154,-5.70511 -26.74913,-0.60024 -32.61887,11.43837 -1.71657,3.52062 -1.72459,3.57069 -1.90176,11.8693 -0.0979,4.58356 -0.0177,11.79984 0.17822,16.03617 l 0.35614,7.70241 h 1.84858 c 1.76097,0 1.89091,-0.11919 2.74185,-2.51507 z"
+ id="path7617"
+ inkscape:connector-curvature="0"
+ transform="scale(0.26458333)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.77952761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 226.35138,166.86581 c -8.68374,-8.45091 -19.24579,-14.06812 -31.56582,-16.78764 -1.94455,-0.42924 -6.62953,-0.91183 -10.41107,-1.07243 l -6.87554,-0.29199 3.79476,-8.23483 c 4.15041,-9.00661 6.33398,-12.02822 10.83115,-14.98806 5.73143,-3.77218 12.11755,-5.07486 18.37716,-3.74869 6.79635,1.43989 12.12205,4.97666 15.80992,10.49928 3.65897,5.47936 4.06888,7.72634 4.43093,24.289 0.17485,7.99863 0.22458,14.53663 0.11051,14.52888 -0.11408,-0.008 -2.13997,-1.89483 -4.502,-4.19352 z"
+ id="path7619"
+ inkscape:connector-curvature="0"
+ transform="scale(0.26458333)" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:3.77952761;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m 281.04946,156.67874 c 0.29695,-15.67547 0.53041,-17.35662 3.11733,-22.44879 1.64145,-3.23106 6.08971,-7.81924 9.49653,-9.79523 1.32451,-0.76823 4.2792,-1.87338 6.56599,-2.45589 3.62852,-0.92429 4.68255,-0.99503 8.28005,-0.55573 6.90922,0.84371 13.7575,4.77525 17.28082,9.92078 1.38217,2.01854 8.14389,16.19869 8.14389,17.07872 0,0.2351 -2.10238,0.42837 -4.67196,0.42949 -8.99282,0.004 -18.25222,2.12274 -26.55807,6.0773 -7.17709,3.41713 -11.63607,6.48677 -17.19557,11.83773 l -4.73649,4.55883 z"
+ id="path7621"
+ inkscape:connector-curvature="0"
+ transform="scale(0.26458333)" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <g
+ id="g7475"
+ inkscape:label="0"
+ transform="matrix(0.14221997,0,0,0.14221997,-31.981034,55.479631)"
+ style="stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round">
+ <path
+ id="path7425"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 394.42769,131.14785 a 142.37722,142.37722 0 1 0 266.38087,69.95976"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7433"
+ style="fill:none;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
+ d="M 658.56907,-59.664378 A 115.98533,115.98533 0 0 0 548.79351,-108.70519 m 108.73351,-11.03878 1.04205,60.079592 m -1.04205,-60.079592 a 49.685709,49.685709 0 0 0 -92.6985,-23.81259 m 0,0 -16.03501,34.85137" />
+ <path
+ id="path7435"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 660.1707,35.074784 0.45347,54.803856"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7437"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 474.48909,-30.517229 387.62757,144.87909"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7439"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 659.19164,-5.530313 A 96.39108,96.39108 0 0 0 474.48909,-30.517229"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7441"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 740.97478,202.17383 A 142.37722,142.37722 0 1 0 1007.3517,131.14785"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7449"
+ style="fill:none;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round;stroke-linecap:round"
+ d="m 852.98584,-108.70519 a 115.98533,115.98533 0 0 0 -109.77556,49.040812 m 1.04205,-60.079592 -1.04205,60.079592 m 93.74055,-83.892182 a 49.685709,49.685709 0 0 0 -92.6985,23.81259 m 92.6985,-23.81259 16.03501,34.85137" />
+ <path
+ id="path7451"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 741.61776,33.973249 -0.4549,54.976979"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7453"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 927.29026,-30.517229 1014.1518,144.87909"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7455"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 927.29026,-30.517229 A 96.39108,96.39108 0 0 0 742.8897,-7.745832"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7457"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 741.16286,88.950228 A 41.867624,41.867624 0 0 0 660.62417,89.87864"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7459"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 740.61905,154.67245 a 41.867624,41.867624 0 0 0 -79.45215,0.79683"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7461"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 742.8897,-7.745832 a 41.867624,41.867624 0 1 0 -83.69806,2.215519"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7463"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="M 741.61776,33.973249 A 41.867624,41.867624 0 0 0 660.1707,35.074784"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7465"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 660.80856,201.10761 0.35834,-45.63833"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7467"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 740.97478,202.17383 -0.35573,-47.50138"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7471"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 631.81717,201.10761 a 113.38583,113.38583 0 1 0 -226.77166,0 113.38583,113.38583 0 1 0 226.77166,0 z"
+ inkscape:connector-curvature="0" />
+ <path
+ id="path7473"
+ style="fill:none;stroke:#ffffff;stroke-width:7.03136135;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;stroke-linejoin:round"
+ d="m 997.9874,201.10761 a 113.38583,113.38583 0 1 0 -226.77166,0 113.38583,113.38583 0 1 0 226.77166,0 z"
+ inkscape:connector-curvature="0" />
+ </g>
+ <path
+ id="path7469"
+ style="fill:#ffffff;stroke:#ffffff;stroke-width:0.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
+ d="m 70.34536,79.242709 a 2.6876219,2.6876219 0 1 0 -5.375243,0 2.6876219,2.6876219 0 1 0 5.375243,0 z"
+ inkscape:connector-curvature="0" />
+</svg>
diff --git a/android/icons/rare_controls.svg b/android/icons/rare_controls.svg
new file mode 100644
index 000000000..c9991ec7a
--- /dev/null
+++ b/android/icons/rare_controls.svg
@@ -0,0 +1,521 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="256"
+ height="512"
+ viewBox="0 0 67.73333 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="rare_controls.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/rare_controls.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0"
+ refX="0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000;stroke-width:0.5"
+ d="M 3,-3 -3,3 M 0,-5 V 5"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213"
+ k3="0"
+ k4="0" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="-59.862018"
+ inkscape:cy="260.34663"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="false">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <rect
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5231-9"
+ width="25.4"
+ height="25.400003"
+ x="21.166666"
+ y="101.6" />
+ <rect
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5231-9-7"
+ width="25.4"
+ height="25.400003"
+ x="21.166666"
+ y="55.033333" />
+ <rect
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="rect5231-9-5"
+ width="25.4"
+ height="25.400003"
+ x="21.166664"
+ y="8.4666681" />
+ </g>
+</svg>
diff --git a/android/icons/zoom.svg b/android/icons/zoom.svg
new file mode 100644
index 000000000..ea8dec3c5
--- /dev/null
+++ b/android/icons/zoom.svg
@@ -0,0 +1,599 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="512"
+ height="512"
+ viewBox="0 0 135.46666 135.46667"
+ version="1.1"
+ id="svg8"
+ inkscape:version="0.92.1 r15371"
+ sodipodi:docname="zoom.svg"
+ inkscape:export-filename="/home/stu/Desktop/icons/png/zoom.png"
+ inkscape:export-xdpi="24.000002"
+ inkscape:export-ydpi="24.000002">
+ <defs
+ id="defs2">
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4628">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4614" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4616" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1"
+ id="feFlood4618" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4620" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4622" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4624" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4626" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Sharpen More"
+ id="filter5109"
+ inkscape:menu="Image Effects"
+ inkscape:menu-tooltip="Sharpen edges and boundaries within the object, force=0.3">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5095" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5097" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,67,0)"
+ result="flood1"
+ id="feFlood5099" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5101" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5103" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5105" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic"
+ id="feComposite5107" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix5111" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5113"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ in="fbSourceGraphic" />
+ <feColorMatrix
+ id="feColorMatrix5115"
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1" />
+ <feFlood
+ id="feFlood5117"
+ flood-opacity="1"
+ flood-color="rgb(158,0,0)"
+ result="flood1" />
+ <feBlend
+ in2="colormatrix1"
+ id="feBlend5119"
+ in="flood1"
+ mode="multiply"
+ result="blend1" />
+ <feBlend
+ in2="blend1"
+ id="feBlend5121"
+ mode="screen"
+ result="blend2" />
+ <feColorMatrix
+ id="feColorMatrix5123"
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2" />
+ <feComposite
+ in2="fbSourceGraphic"
+ id="feComposite5125"
+ in="colormatrix2"
+ operator="in"
+ k2="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7007" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7009"
+ order="3 3"
+ kernelMatrix="0 -0.15 0 -0.15 1.6 -0.15 0 -0.15 0"
+ divisor="1"
+ in="fbSourceGraphic"
+ targetX="1"
+ targetY="1"
+ result="fbSourceGraphic" />
+ <feColorMatrix
+ result="fbSourceGraphicAlpha"
+ in="fbSourceGraphic"
+ values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+ id="feColorMatrix7011" />
+ <feConvolveMatrix
+ id="feConvolveMatrix7013"
+ targetY="1"
+ targetX="1"
+ in="fbSourceGraphic"
+ divisor="1"
+ kernelMatrix="0 -0.3 0 -0.3 2.2 -0.3 0 -0.3 0"
+ order="3 3"
+ result="result1" />
+ <feBlend
+ in2="fbSourceGraphic"
+ id="feBlend7015"
+ mode="normal"
+ result="result2" />
+ </filter>
+ <marker
+ style="overflow:visible"
+ refY="0.0"
+ refX="0.0"
+ orient="auto"
+ id="DistanceX">
+ <path
+ id="path7410"
+ style="stroke:#000000; stroke-width:0.5"
+ d="M 3,-3 L -3,3 M 0,-5 L 0,5" />
+ </marker>
+ <pattern
+ y="0"
+ x="0"
+ width="8"
+ patternUnits="userSpaceOnUse"
+ id="Hatch"
+ height="8">
+ <path
+ id="path7413"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M8 4 l-4,4" />
+ <path
+ id="path7415"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M6 2 l-4,4" />
+ <path
+ id="path7417"
+ stroke-width="0.25"
+ stroke="#000000"
+ linecap="square"
+ d="M4 0 l-4,4" />
+ </pattern>
+ <symbol
+ id="*Model_Space" />
+ <symbol
+ id="*Paper_Space" />
+ <symbol
+ id="*Paper_Space0" />
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4883">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4869" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4871" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(158,21,0)"
+ result="flood1"
+ id="feFlood4873" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4875" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4877" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4879" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4881" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5059">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5045" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5047" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,14,0)"
+ result="flood1"
+ id="feFlood5049" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5051" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5053" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5055" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5057" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5227">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5213" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5215" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5217" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5219" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5221" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5223" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5225" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter5418">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite5404" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix5406" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(159,21,0)"
+ result="flood1"
+ id="feFlood5408" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend5410" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend5412" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix5414" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite5416" />
+ </filter>
+ <filter
+ style="color-interpolation-filters:sRGB;"
+ inkscape:label="Colorize"
+ id="filter4664">
+ <feComposite
+ in2="SourceGraphic"
+ operator="arithmetic"
+ k1="0"
+ k2="1"
+ result="composite1"
+ id="feComposite4650" />
+ <feColorMatrix
+ in="composite1"
+ values="1"
+ type="saturate"
+ result="colormatrix1"
+ id="feColorMatrix4652" />
+ <feFlood
+ flood-opacity="1"
+ flood-color="rgb(255,0,0)"
+ result="flood1"
+ id="feFlood4654" />
+ <feBlend
+ in="flood1"
+ in2="colormatrix1"
+ mode="multiply"
+ result="blend1"
+ id="feBlend4656" />
+ <feBlend
+ in2="blend1"
+ mode="screen"
+ result="blend2"
+ id="feBlend4658" />
+ <feColorMatrix
+ in="blend2"
+ values="1"
+ type="saturate"
+ result="colormatrix2"
+ id="feColorMatrix4660" />
+ <feComposite
+ in="colormatrix2"
+ in2="SourceGraphic"
+ operator="in"
+ k2="1"
+ result="composite2"
+ id="feComposite4662" />
+ </filter>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#404040"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="142.16849"
+ inkscape:cy="213.87961"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer2"
+ showgrid="true"
+ units="px"
+ inkscape:window-width="1920"
+ inkscape:window-height="1023"
+ inkscape:window-x="0"
+ inkscape:window-y="34"
+ inkscape:window-maximized="1"
+ inkscape:pagecheckerboard="false"
+ inkscape:snap-grids="true"
+ inkscape:snap-page="true"
+ showguides="true">
+ <inkscape:grid
+ type="xygrid"
+ id="grid16"
+ spacingx="0.26458333"
+ spacingy="0.26458333"
+ empspacing="4"
+ color="#40ff40"
+ opacity="0.1254902"
+ empcolor="#40ff40"
+ empopacity="0.25098039" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ <cc:license
+ rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/" />
+ </cc:Work>
+ <cc:License
+ rdf:about="http://creativecommons.org/licenses/by-sa/4.0/">
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#Distribution" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Notice" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#Attribution" />
+ <cc:permits
+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
+ <cc:requires
+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
+ </cc:License>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer1"
+ inkscape:label="Layer 3"
+ style="display:inline" />
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="Layer 2"
+ style="display:inline">
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7055"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7035"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path7005"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d=""
+ id="path5127"
+ inkscape:connector-curvature="0" />
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot4718"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'Bitstream Vera Sans';-inkscape-font-specification:'Bitstream Vera Sans';text-align:center;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion4720"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1"><rect
+ id="rect4722"
+ width="157.5838"
+ height="136.37059"
+ x="264.65997"
+ y="124.10143"
+ style="fill:none;fill-opacity:1;stroke:#ffffff;stroke-opacity:1" /></flowRegion><flowPara
+ id="flowPara4724" /></flowRoot> <ellipse
+ style="display:inline;fill:none;fill-opacity:0.31372549;stroke:#ffffff;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4672"
+ cx="56.858261"
+ cy="57.228764"
+ rx="27.848776"
+ ry="27.594934" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:6;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="M 71.702072,80.367223 80.697906,71.427111 110.06667,101.6 l -8.73126,8.9401 z"
+ id="path4689"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/android/keystore-minetest.jks b/android/keystore-minetest.jks
new file mode 100644
index 000000000..8fce68bbb
--- /dev/null
+++ b/android/keystore-minetest.jks
Binary files differ
diff --git a/android/native/build.gradle b/android/native/build.gradle
new file mode 100644
index 000000000..8ea6347b3
--- /dev/null
+++ b/android/native/build.gradle
@@ -0,0 +1,98 @@
+apply plugin: 'com.android.library'
+apply plugin: 'de.undercouch.download'
+
+android {
+ compileSdkVersion 29
+ buildToolsVersion '30.0.3'
+ ndkVersion '22.0.7026061'
+ defaultConfig {
+ minSdkVersion 16
+ targetSdkVersion 29
+ externalNativeBuild {
+ ndkBuild {
+ arguments '-j' + Runtime.getRuntime().availableProcessors(),
+ "versionMajor=${versionMajor}",
+ "versionMinor=${versionMinor}",
+ "versionPatch=${versionPatch}",
+ "versionExtra=${versionExtra}"
+ }
+ }
+ }
+
+ externalNativeBuild {
+ ndkBuild {
+ path file('jni/Android.mk')
+ }
+ }
+
+ // supported architectures
+ splits {
+ abi {
+ enable true
+ reset()
+ include 'armeabi-v7a', 'arm64-v8a'//, 'x86'
+ }
+ }
+
+ buildTypes {
+ release {
+ externalNativeBuild {
+ ndkBuild {
+ arguments 'NDEBUG=1'
+ }
+ }
+ }
+ }
+}
+
+// get precompiled deps
+def folder = 'minetest_android_deps_binaries'
+
+task downloadDeps(type: Download) {
+ src 'https://github.com/minetest/' + folder + '/archive/master.zip'
+ dest new File(buildDir, 'deps.zip')
+ overwrite false
+}
+
+task getDeps(dependsOn: downloadDeps, type: Copy) {
+ def deps = file('deps')
+ def f = file("$buildDir/" + folder + "-master")
+
+ if (!deps.exists() && !f.exists()) {
+ from zipTree(downloadDeps.dest)
+ into buildDir
+ }
+
+ doLast {
+ if (!deps.exists()) {
+ file(f).renameTo(file(deps))
+ }
+ }
+}
+
+// get sqlite
+def sqlite_ver = '3340000'
+task downloadSqlite(dependsOn: getDeps, type: Download) {
+ src 'https://www.sqlite.org/2020/sqlite-amalgamation-' + sqlite_ver + '.zip'
+ dest new File(buildDir, 'sqlite.zip')
+ overwrite false
+}
+
+task getSqlite(dependsOn: downloadSqlite, type: Copy) {
+ def sqlite = file('deps/Android/sqlite')
+ def f = file("$buildDir/sqlite-amalgamation-" + sqlite_ver)
+
+ if (!sqlite.exists() && !f.exists()) {
+ from zipTree(downloadSqlite.dest)
+ into buildDir
+ }
+
+ doLast {
+ if (!sqlite.exists()) {
+ file(f).renameTo(file(sqlite))
+ }
+ }
+}
+
+preBuild.dependsOn getDeps
+preBuild.dependsOn getSqlite
diff --git a/android/native/jni/Android.mk b/android/native/jni/Android.mk
new file mode 100644
index 000000000..5039f325e
--- /dev/null
+++ b/android/native/jni/Android.mk
@@ -0,0 +1,206 @@
+LOCAL_PATH := $(call my-dir)/..
+
+#LOCAL_ADDRESS_SANITIZER:=true
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Curl
+LOCAL_SRC_FILES := deps/Android/Curl/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libcurl.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Freetype
+LOCAL_SRC_FILES := deps/Android/Freetype/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libfreetype.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Irrlicht
+LOCAL_SRC_FILES := deps/Android/Irrlicht/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libIrrlichtMt.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+#include $(CLEAR_VARS)
+#LOCAL_MODULE := LevelDB
+#LOCAL_SRC_FILES := deps/Android/LevelDB/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libleveldb.a
+#include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := LuaJIT
+LOCAL_SRC_FILES := deps/Android/LuaJIT/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libluajit.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := mbedTLS
+LOCAL_SRC_FILES := deps/Android/mbedTLS/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libmbedtls.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := mbedx509
+LOCAL_SRC_FILES := deps/Android/mbedTLS/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libmbedx509.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := mbedcrypto
+LOCAL_SRC_FILES := deps/Android/mbedTLS/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libmbedcrypto.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := OpenAL
+LOCAL_SRC_FILES := deps/Android/OpenAL-Soft/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libopenal.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Vorbis
+LOCAL_SRC_FILES := deps/Android/Vorbis/${NDK_TOOLCHAIN_VERSION}/$(APP_ABI)/libvorbis.a
+include $(PREBUILT_STATIC_LIBRARY)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := Minetest
+
+LOCAL_CFLAGS += \
+ -DJSONCPP_NO_LOCALE_SUPPORT \
+ -DHAVE_TOUCHSCREENGUI \
+ -DENABLE_GLES=1 \
+ -DUSE_CURL=1 \
+ -DUSE_SOUND=1 \
+ -DUSE_FREETYPE=1 \
+ -DUSE_LEVELDB=0 \
+ -DUSE_LUAJIT=1 \
+ -DVERSION_MAJOR=${versionMajor} \
+ -DVERSION_MINOR=${versionMinor} \
+ -DVERSION_PATCH=${versionPatch} \
+ -DVERSION_EXTRA=${versionExtra} \
+ $(GPROF_DEF)
+
+ifdef NDEBUG
+ LOCAL_CFLAGS += -DNDEBUG=1
+endif
+
+ifdef GPROF
+ GPROF_DEF := -DGPROF
+ PROFILER_LIBS := android-ndk-profiler
+ LOCAL_CFLAGS += -pg
+endif
+
+LOCAL_C_INCLUDES := \
+ ../../src \
+ ../../src/script \
+ ../../lib/gmp \
+ ../../lib/jsoncpp \
+ deps/Android/Curl/include \
+ deps/Android/Freetype/include \
+ deps/Android/Irrlicht/include \
+ deps/Android/LevelDB/include \
+ deps/Android/libiconv/include \
+ deps/Android/libiconv/libcharset/include \
+ deps/Android/LuaJIT/src \
+ deps/Android/OpenAL-Soft/include \
+ deps/Android/sqlite \
+ deps/Android/Vorbis/include
+
+LOCAL_SRC_FILES := \
+ $(wildcard ../../src/client/*.cpp) \
+ $(wildcard ../../src/client/*/*.cpp) \
+ $(wildcard ../../src/content/*.cpp) \
+ ../../src/database/database.cpp \
+ ../../src/database/database-dummy.cpp \
+ ../../src/database/database-files.cpp \
+ ../../src/database/database-sqlite3.cpp \
+ $(wildcard ../../src/gui/*.cpp) \
+ $(wildcard ../../src/irrlicht_changes/*.cpp) \
+ $(wildcard ../../src/mapgen/*.cpp) \
+ $(wildcard ../../src/network/*.cpp) \
+ $(wildcard ../../src/script/*.cpp) \
+ $(wildcard ../../src/script/*/*.cpp) \
+ $(wildcard ../../src/server/*.cpp) \
+ $(wildcard ../../src/threading/*.cpp) \
+ $(wildcard ../../src/util/*.c) \
+ $(wildcard ../../src/util/*.cpp) \
+ ../../src/ban.cpp \
+ ../../src/chat.cpp \
+ ../../src/clientiface.cpp \
+ ../../src/collision.cpp \
+ ../../src/content_mapnode.cpp \
+ ../../src/content_nodemeta.cpp \
+ ../../src/convert_json.cpp \
+ ../../src/craftdef.cpp \
+ ../../src/debug.cpp \
+ ../../src/defaultsettings.cpp \
+ ../../src/emerge.cpp \
+ ../../src/environment.cpp \
+ ../../src/face_position_cache.cpp \
+ ../../src/filesys.cpp \
+ ../../src/gettext.cpp \
+ ../../src/httpfetch.cpp \
+ ../../src/hud.cpp \
+ ../../src/inventory.cpp \
+ ../../src/inventorymanager.cpp \
+ ../../src/itemdef.cpp \
+ ../../src/itemstackmetadata.cpp \
+ ../../src/light.cpp \
+ ../../src/log.cpp \
+ ../../src/main.cpp \
+ ../../src/map.cpp \
+ ../../src/map_settings_manager.cpp \
+ ../../src/mapblock.cpp \
+ ../../src/mapnode.cpp \
+ ../../src/mapsector.cpp \
+ ../../src/metadata.cpp \
+ ../../src/modchannels.cpp \
+ ../../src/nameidmapping.cpp \
+ ../../src/nodedef.cpp \
+ ../../src/nodemetadata.cpp \
+ ../../src/nodetimer.cpp \
+ ../../src/noise.cpp \
+ ../../src/objdef.cpp \
+ ../../src/object_properties.cpp \
+ ../../src/particles.cpp \
+ ../../src/pathfinder.cpp \
+ ../../src/player.cpp \
+ ../../src/porting.cpp \
+ ../../src/porting_android.cpp \
+ ../../src/profiler.cpp \
+ ../../src/raycast.cpp \
+ ../../src/reflowscan.cpp \
+ ../../src/remoteplayer.cpp \
+ ../../src/rollback.cpp \
+ ../../src/rollback_interface.cpp \
+ ../../src/serialization.cpp \
+ ../../src/server.cpp \
+ ../../src/serverenvironment.cpp \
+ ../../src/serverlist.cpp \
+ ../../src/settings.cpp \
+ ../../src/staticobject.cpp \
+ ../../src/texture_override.cpp \
+ ../../src/tileanimation.cpp \
+ ../../src/tool.cpp \
+ ../../src/translation.cpp \
+ ../../src/version.cpp \
+ ../../src/voxel.cpp \
+ ../../src/voxelalgorithms.cpp
+
+# LevelDB backend is disabled
+# ../../src/database/database-leveldb.cpp
+
+# GMP
+LOCAL_SRC_FILES += ../../lib/gmp/mini-gmp.c
+
+# JSONCPP
+LOCAL_SRC_FILES += ../../lib/jsoncpp/jsoncpp.cpp
+
+# iconv
+LOCAL_SRC_FILES += \
+ deps/Android/libiconv/lib/iconv.c \
+ deps/Android/libiconv/libcharset/lib/localcharset.c
+
+# SQLite3
+LOCAL_SRC_FILES += deps/Android/sqlite/sqlite3.c
+
+LOCAL_STATIC_LIBRARIES += Curl Freetype Irrlicht OpenAL mbedTLS mbedx509 mbedcrypto Vorbis LuaJIT android_native_app_glue $(PROFILER_LIBS) #LevelDB
+
+LOCAL_LDLIBS := -lEGL -lGLESv1_CM -lGLESv2 -landroid -lOpenSLES
+
+include $(BUILD_SHARED_LIBRARY)
+
+ifdef GPROF
+$(call import-module,android-ndk-profiler)
+endif
+$(call import-module,android/native_app_glue)
diff --git a/android/native/jni/Application.mk b/android/native/jni/Application.mk
new file mode 100644
index 000000000..82f0148f0
--- /dev/null
+++ b/android/native/jni/Application.mk
@@ -0,0 +1,32 @@
+APP_PLATFORM := ${APP_PLATFORM}
+APP_ABI := ${TARGET_ABI}
+APP_STL := c++_shared
+NDK_TOOLCHAIN_VERSION := clang
+APP_SHORT_COMMANDS := true
+APP_MODULES := Minetest
+
+APP_CPPFLAGS := -Ofast -fvisibility=hidden -fexceptions -Wno-deprecated-declarations -Wno-extra-tokens
+
+ifeq ($(APP_ABI),armeabi-v7a)
+APP_CPPFLAGS += -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb
+endif
+
+#ifeq ($(APP_ABI),x86)
+#APP_CPPFLAGS += -march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32 -funroll-loops
+#endif
+
+ifndef NDEBUG
+APP_CPPFLAGS := -g -D_DEBUG -O0 -fno-omit-frame-pointer -fexceptions
+endif
+
+APP_CFLAGS := $(APP_CPPFLAGS) -Wno-parentheses-equality #-Werror=shorten-64-to-32
+APP_CXXFLAGS := $(APP_CPPFLAGS) -frtti -std=gnu++17
+APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections,--icf=safe
+
+ifeq ($(APP_ABI),arm64-v8a)
+APP_LDFLAGS := -Wl,--no-warn-mismatch,--gc-sections
+endif
+
+ifndef NDEBUG
+APP_LDFLAGS :=
+endif
diff --git a/android/native/src/main/AndroidManifest.xml b/android/native/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..19451c7fd
--- /dev/null
+++ b/android/native/src/main/AndroidManifest.xml
@@ -0,0 +1 @@
+<manifest package="net.minetest" />
diff --git a/android/settings.gradle b/android/settings.gradle
new file mode 100644
index 000000000..b048fca7c
--- /dev/null
+++ b/android/settings.gradle
@@ -0,0 +1,2 @@
+rootProject.name = "Minetest"
+include ':app', ':native'