<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools">
    <!-- Permissions -->
    <permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
    <uses-permission android:name="android.permission.READ_CLIPBOARD" />
    <uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>

    <application
        android:allowBackup="true"
        android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
        android:extractNativeLibs="true"
        android:icon="@mipmap/ic_launcher"
        tools:remove="android:appComponentFactory"
        tools:targetApi="p"
        android:label="@string/app_name"
        android:largeHeap="false"
        android:networkSecurityConfig="@xml/gx_network_security_config"
        android:requestLegacyExternalStorage="true"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        android:usesCleartextTraffic="true">

        <activity
            android:launchMode="singleTask"
            android:name="com.hiddenservices.onionservices.appManager.unproxiedConnectionManager.unproxiedConnectionController"
            android:exported="true" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkSettings.bookmarkSettingController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.orbotManager.orbotController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.proxyStatusManager.proxyStatusController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.settingHomeManager.settingHomeController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:exported="true"
            android:label="@string/SETTING_HEADER"
            android:launchMode="singleTask"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.historyManager.historyController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkHome.bookmarkController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.languageManager.languageController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode|locale|layoutDirection"
            android:label="@string/SETTING_HEADER"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.helpManager.helpController"
            android:configChanges="keyboard|keyboardHidden|screenSize|uiMode"
            android:label="@string/SETTING_HEADER"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.accessibilityManager.settingAccessibilityController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:label="@string/SETTING_HEADER"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.clearManager.settingClearController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:label="@string/SETTING_HEADER"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.bridgeManager.bridgeController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.notificationManager.settingNotificationController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:launchMode="singleTop"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.privacyManager.settingPrivacyController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.logManager.settingLogController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.advanceManager.settingAdvanceController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.orbotLogManager.orbotLogController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.orbotRequestManager"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.generalManager.settingGeneralController"
            android:configChanges="uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.searchEngineManager.settingSearchController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.settingManager.trackingManager.settingTrackingController"
            android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
            android:windowSoftInputMode="adjustPan" />

        <activity
            android:name="com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController"
            android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize|locale|layoutDirection|smallestScreenSize|screenLayout"
            android:exported="true"
            android:launchMode="singleTask"
            android:screenOrientation="fullSensor"
            android:windowSoftInputMode="adjustNothing">
            <meta-data
                android:name="android.app.shortcuts"
                android:resource="@xml/shortcuts" />

            <intent-filter>
                <category android:name="android.intent.category.LAUNCHER" />

                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
            </intent-filter>
        </activity>

        <activity
            android:name="com.hiddenservices.onionservices.appManager.externalCommandManager.externalShortcutController"
            android:launchMode="singleTop" />
        <activity
            android:name="com.hiddenservices.onionservices.appManager.externalCommandManager.externalURLNavigationContoller"
            android:exported="true"
            android:launchMode="singleTop">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />

                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />

                <data android:scheme="http" />
                <data android:scheme="https" />
            </intent-filter>
            <intent-filter>
                <action android:name="android.intent.action.ASSIST" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <!-- Meta and Library & Settings -->

        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />

        <meta-data
            android:name="io.fabric.ApiKey"
            android:value="be76c64dae2519d4ab8daaed88298da14c7c294f" />

        <meta-data
            android:name="applovin.sdk.key"
            android:value="hGlhanpemGqPOKKAgaXvhyxwZaG9uD68csy1OadWTNhEgKvBWR7-7KSpyFr6nfZ4KMOuBBV5J49s2LLSg-SVxg" />

        <uses-library
            android:name="org.apache.http.legacy"
            android:required="false" />


        <!-- Services & Settings -->

        <service
            android:name="com.hiddenservices.onionservices.pluginManager.downloadPluginManager.downloadService"
            android:enabled="true"
            android:exported="false"
            android:stopWithTask="true" />

        <service
            android:name="com.hiddenservices.onionservices.appManager.activityStateManager"/>

        <service
            android:name="org.torproject.android.service.OrbotService"
            android:enabled="true"
            android:exported="false"
            android:stopWithTask="true" />

        <!-- Reciever & Settings -->

        <receiver
            android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.downloadNotificationReciever"
            android:exported="false">
            <intent-filter>
                <action android:name="Download_Cancelled" />
            </intent-filter>
        </receiver>

        <receiver
            android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.mediaNotificationReciever"
            android:exported="false">
            <intent-filter>
                <action android:name="media_toggle" />
            </intent-filter>
        </receiver>

        <receiver
            android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.defaultNotificationReciever"
            android:exported="false">
            <intent-filter>
                <action android:name="default_toggle" />
            </intent-filter>
        </receiver>

        <receiver
            android:name="org.torproject.android.service.StartTorReceiver"
            android:exported="true"
            tools:ignore="ExportedReceiver">
            <intent-filter>
                <action android:name="org.torproject.android.intent.action.START" />
            </intent-filter>
        </receiver>

        <receiver
            android:name="com.widget.onionservices.widgetManager.widgetController"
            android:exported="true">
            <intent-filter>
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
            </intent-filter>

            <meta-data
                android:name="android.appwidget.provider"
                android:resource="@xml/search_widget_manager_info" />
        </receiver>

        <!-- Providers & Settings -->
        <service
            android:name=".MediaSessionService"
            android:enabled="true"
            android:exported="false"
            android:permission="TODO">
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON"/>
            </intent-filter>
        </service>
        <receiver android:name="androidx.media.session.MediaButtonReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MEDIA_BUTTON"/>
            </intent-filter>
        </receiver>

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="com.hiddenservices.onionservices.provider"
            android:exported="false"
            android:grantUriPermissions="true"
            tools:ignore="ExportedContentProvider">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>

        <provider
            android:name="com.hiddenservices.onionservices.libs.providers.HSContentProvider"
            android:authorities="org.torproject.android.ui.hiddenservices.providers.genesishiddenservices"
            android:exported="false" />

        <!--<provider
            android:name="com.hiddenservices.onionservices.libs.providers.OnionServiceContentProvider"
            android:authorities="org.torproject.android.ui.v3onionservice.genesishiddenservices"
            android:exported="false" />

        <provider
            android:name="com.hiddenservices.onionservices.libs.providers.ClientAuthContentProviderGenesis"
            android:authorities="org.torproject.android.ui.v3onionservice.genesishiddenservices.clientauth"
            android:exported="false" />

        <provider
            android:name="com.hiddenservices.onionservices.libs.providers.CookieContentProvider"
            android:authorities="org.torproject.android.ui.hiddenservices.providers.genesishiddenservices.cookie"
            android:exported="false" />-->

        <provider
            android:name="androidx.core.content.FileProvider"
            android:authorities="${applicationId}.fileprovider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_path" />
        </provider>

    </application>

</manifest>