expo-dev-menu 5.0.17 → 5.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -10,6 +10,18 @@
10
10
 
11
11
  ### 💡 Others
12
12
 
13
+ ## 5.0.19 — 2024-08-14
14
+
15
+ ### 🎉 New features
16
+
17
+ - Add support for react-native 0.75. ([#30965](https://github.com/expo/expo/pull/30965) by [@gabrieldonadel](https://github.com/gabrieldonadel))
18
+
19
+ ## 5.0.18 — 2024-08-07
20
+
21
+ ### 📚 3rd party library updates
22
+
23
+ - Update react-native to 0.74.5. ([#30822](https://github.com/expo/expo/pull/30822) by [@gabrieldonadel](https://github.com/gabrieldonadel))
24
+
13
25
  ## 5.0.17 — 2024-07-29
14
26
 
15
27
  ### 🐛 Bug fixes
@@ -1,7 +1,7 @@
1
1
  apply plugin: 'com.android.library'
2
2
 
3
3
  group = 'host.exp.exponent'
4
- version = '5.0.17'
4
+ version = '5.0.19'
5
5
 
6
6
  def expoModulesCorePlugin = new File(project(":expo-modules-core").projectDir.absolutePath, "ExpoModulesCorePlugin.gradle")
7
7
  apply from: expoModulesCorePlugin
@@ -20,7 +20,7 @@ android {
20
20
  namespace "expo.modules.devmenu"
21
21
  defaultConfig {
22
22
  versionCode 10
23
- versionName '5.0.17'
23
+ versionName '5.0.19'
24
24
  }
25
25
 
26
26
  buildTypes {
@@ -34,7 +34,9 @@ android {
34
34
  def rnVersion = getRNVersion()
35
35
  main {
36
36
  java {
37
- if (rnVersion >= versionToNumber(0, 74, 0)) {
37
+ if (rnVersion >= versionToNumber(0, 75, 0)) {
38
+ srcDirs += "src/react-native-75/main"
39
+ } else if (rnVersion >= versionToNumber(0, 74, 0)) {
38
40
  srcDirs += "src/react-native-74/main"
39
41
  }
40
42
  }
@@ -43,7 +45,11 @@ android {
43
45
  java {
44
46
  srcDirs += ['../vendored/react-native-gesture-handler/android/']
45
47
  srcDirs += ['../vendored/react-native-safe-area-context/android/']
46
-
48
+ if (rnVersion >= versionToNumber(0, 75, 0)) {
49
+ srcDirs += "src/react-native-75/debug"
50
+ } else if (rnVersion >= versionToNumber(0, 74, 0)) {
51
+ srcDirs += "src/react-native-74/debug"
52
+ }
47
53
  }
48
54
  }
49
55
 
@@ -68,7 +74,15 @@ task copyAssets(type: Copy) {
68
74
 
69
75
  from('../assets') {
70
76
  exclude "*.ios.*"
77
+ exclude "react-native-*/**"
71
78
  }
79
+
80
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
81
+ def rnVersion = getRNVersion()
82
+ if (rnVersion >= versionToNumber(0, 75, 0)) {
83
+ from('../assets/react-native-75')
84
+ }
85
+
72
86
  into 'src/debug/assets'
73
87
  }
74
88
 
@@ -9,7 +9,21 @@ object DevMenuDevSettings {
9
9
  val devDelegate = DevMenuDevToolsDelegate(DevMenuManager, reactHost)
10
10
  val devSettings = devDelegate.devSettings
11
11
 
12
- val jsBundleURL = reactHost.devSupportManager?.jsBundleURLForRemoteDebugging ?: ""
12
+ val jsBundleURL = try {
13
+ // Attempt to get the field "jsBundleURLForRemoteDebugging"
14
+ val field = reactHost.devSupportManager?.javaClass?.getDeclaredField("jsBundleURLForRemoteDebugging")
15
+ field?.isAccessible = true
16
+ field?.get(reactHost.devSupportManager) as? String
17
+ } catch (e: NoSuchFieldException) {
18
+ // If the field is not found, try "jSBundleURLForRemoteDebugging"
19
+ try {
20
+ val field = reactHost.devSupportManager?.javaClass?.getDeclaredField("jSBundleURLForRemoteDebugging")
21
+ field?.isAccessible = true
22
+ field?.get(reactHost.devSupportManager) as? String
23
+ } catch (e: NoSuchFieldException) {
24
+ null
25
+ }
26
+ } ?: ""
13
27
 
14
28
  if (devSettings != null) {
15
29
  return Bundle().apply {
@@ -1,7 +1,6 @@
1
1
  package expo.modules.devmenu
2
2
 
3
3
  import com.facebook.react.ReactPackage
4
- import com.facebook.react.bridge.JSIModulePackage
5
4
 
6
5
  const val DEV_MENU_TAG = "ExpoDevMenu"
7
6
 
@@ -9,10 +8,6 @@ fun getVendoredPackage(className: String): ReactPackage {
9
8
  return getVendoredClass(className, emptyArray(), emptyArray())
10
9
  }
11
10
 
12
- fun getVendoredJNIPackage(className: String): JSIModulePackage {
13
- return getVendoredClass(className, emptyArray(), emptyArray())
14
- }
15
-
16
11
  fun <T> getVendoredClass(className: String, argsType: Array<Class<*>>, args: Array<Any>): T {
17
12
  val clazz = try {
18
13
  Class.forName("devmenu.$className")
@@ -1,5 +1,6 @@
1
1
  package expo.modules.devmenu.helpers
2
2
 
3
+ import android.annotation.SuppressLint
3
4
  import java.lang.reflect.Field
4
5
  import java.lang.reflect.Modifier
5
6
 
@@ -10,6 +11,7 @@ fun <T, R> Class<out T>.getPrivateDeclaredFieldValue(filedName: String, obj: T):
10
11
  return field.get(obj) as R
11
12
  }
12
13
 
14
+ @SuppressLint("DiscouragedPrivateApi")
13
15
  fun <T> Class<out T>.setPrivateDeclaredFieldValue(filedName: String, obj: T, newValue: Any) {
14
16
  val field = getDeclaredField(filedName)
15
17
  val modifiersField = Field::class.java.getDeclaredField("accessFlags")
@@ -2,7 +2,6 @@ package expo.modules.devmenu.react
2
2
 
3
3
  import android.content.Context
4
4
  import com.facebook.react.packagerconnection.PackagerConnectionSettings
5
-
6
5
  /**
7
6
  * Class representing react's internal [PackagerConnectionSettings] class, which we want to replace to change bundler's url.
8
7
  * It is only use when [expo.modules.devmenu.DevMenuReactNativeHost.getUseDeveloperSupport] returns true.
@@ -7,6 +7,8 @@ import com.facebook.react.modules.debug.interfaces.DeveloperSettings
7
7
  import com.facebook.react.packagerconnection.PackagerConnectionSettings
8
8
  import expo.modules.devmenu.react.DevMenuPackagerConnectionSettings
9
9
 
10
+
11
+
10
12
  /**
11
13
  * Class representing react's internal [DevInternalSettings] class, which we want to replace to change [packagerConnectionSettings] and others settings.
12
14
  * It is only use when [expo.modules.devmenu.DevMenuReactNativeHost.getUseDeveloperSupport] returns true.
@@ -0,0 +1,145 @@
1
+ package expo.modules.devmenu
2
+
3
+ import android.app.Application
4
+ import android.content.Context
5
+ import android.util.Log
6
+ import com.facebook.react.JSEngineResolutionAlgorithm
7
+ import com.facebook.react.ReactHost
8
+ import com.facebook.react.ReactPackage
9
+ import com.facebook.react.bridge.JSBundleLoader
10
+ import com.facebook.react.common.annotations.UnstableReactNativeAPI
11
+ import com.facebook.react.defaults.DefaultComponentsRegistry
12
+ import com.facebook.react.defaults.DefaultReactHostDelegate
13
+ import com.facebook.react.defaults.DefaultTurboModuleManagerDelegate
14
+ import com.facebook.react.devsupport.DevMenuReactSettings
15
+ import com.facebook.react.devsupport.DevServerHelper
16
+ import com.facebook.react.fabric.ComponentFactory
17
+ import com.facebook.react.runtime.JSCInstance
18
+ import com.facebook.react.runtime.ReactHostImpl
19
+ import com.facebook.react.runtime.hermes.HermesInstance
20
+ import com.facebook.react.shell.MainReactPackage
21
+ import com.facebook.soloader.SoLoader
22
+ //import devmenu.com.th3rdwave.safeareacontext.SafeAreaProviderManager
23
+ import expo.modules.adapters.react.ModuleRegistryAdapter
24
+ import expo.modules.adapters.react.ReactModuleRegistryProvider
25
+ import expo.modules.devmenu.modules.DevMenuInternalModule
26
+ import expo.modules.devmenu.modules.DevMenuPreferences
27
+ import expo.modules.kotlin.ModulesProvider
28
+ import java.io.BufferedReader
29
+ import java.io.FileNotFoundException
30
+ import java.io.InputStreamReader
31
+
32
+ object DevMenuReactHost {
33
+
34
+ @OptIn(UnstableReactNativeAPI::class)
35
+ fun create(application: Application, useDeveloperSupport: Boolean): ReactHost {
36
+ val jsBundleAssetPath = "EXDevMenuApp.android.js"
37
+ val jsBundleLoader =
38
+ JSBundleLoader.createAssetLoader(application, "assets://$jsBundleAssetPath", true)
39
+ val jsResolutionAlgorithm = createJSEngineResolutionAlgorithm(application)
40
+ val jsRuntimeFactory = if (jsResolutionAlgorithm == JSEngineResolutionAlgorithm.JSC) {
41
+ JSCInstance()
42
+ } else {
43
+ HermesInstance()
44
+ }
45
+ val jsMainModuleName = "index"
46
+ val defaultReactHostDelegate =
47
+ DefaultReactHostDelegate(
48
+ jsMainModulePath = jsMainModuleName,
49
+ jsBundleLoader = jsBundleLoader,
50
+ reactPackages = getPackages(),
51
+ jsRuntimeFactory = jsRuntimeFactory,
52
+ turboModuleManagerDelegateBuilder = DefaultTurboModuleManagerDelegate.Builder()
53
+ )
54
+ val componentFactory = ComponentFactory()
55
+ DefaultComponentsRegistry.register(componentFactory)
56
+ val reactHost = ReactHostImpl(
57
+ application,
58
+ defaultReactHostDelegate,
59
+ componentFactory,
60
+ useDeveloperSupport,
61
+ useDeveloperSupport
62
+ )
63
+ .apply {
64
+ jsEngineResolutionAlgorithm = jsResolutionAlgorithm
65
+ }
66
+ if (useDeveloperSupport) {
67
+ injectDevServerSettings(application.applicationContext, reactHost)
68
+ }
69
+ return reactHost
70
+ }
71
+
72
+ private fun getPackages(): List<ReactPackage> {
73
+ val packages = mutableListOf(
74
+ MainReactPackage(null),
75
+ ModuleRegistryAdapter(
76
+ ReactModuleRegistryProvider(emptyList()),
77
+ object : ModulesProvider {
78
+ override fun getModulesList() =
79
+ listOf(
80
+ DevMenuInternalModule::class.java,
81
+ DevMenuPreferences::class.java,
82
+ // SafeAreaProviderManager::class.java
83
+ )
84
+ }
85
+ ),
86
+ DevMenuPackage()
87
+ )
88
+
89
+ try {
90
+ val devLauncherPackage = Class.forName("expo.modules.devlauncher.DevLauncherPackage")
91
+ val pkg = devLauncherPackage.getConstructor().newInstance() as ReactPackage
92
+ packages.add(pkg)
93
+ } catch (e: ClassNotFoundException) {
94
+ // dev launcher is not installed in this project
95
+ }
96
+
97
+ return packages
98
+ }
99
+
100
+ private fun createJSEngineResolutionAlgorithm(application: Application): JSEngineResolutionAlgorithm {
101
+ SoLoader.init(application.applicationContext, /* native exopackage */ false)
102
+ if (SoLoader.getLibraryPath("libjsc.so") != null) {
103
+ return JSEngineResolutionAlgorithm.JSC
104
+ }
105
+ return JSEngineResolutionAlgorithm.HERMES
106
+ }
107
+
108
+ /**
109
+ * To use a different packager url, we need to replace internal RN objects.
110
+ */
111
+ private fun injectDevServerSettings(applicationContext: Context, reactHost: ReactHostImpl) {
112
+ try {
113
+ val serverIp = BufferedReader(
114
+ InputStreamReader(applicationContext.assets.open("dev-menu-packager-host"))
115
+ ).use {
116
+ it.readLine()
117
+ }
118
+
119
+ val devMenuInternalReactSettings = DevMenuReactSettings(applicationContext, serverIp)
120
+
121
+ val devSupportManager = reactHost.devSupportManager
122
+ val devSupportManagerBaseClass = devSupportManager.javaClass.superclass!!
123
+ setPrivateField(
124
+ obj = devSupportManager,
125
+ objClass = devSupportManagerBaseClass,
126
+ field = "mDevSettings",
127
+ newValue = devMenuInternalReactSettings
128
+ )
129
+
130
+ val devServerHelper: DevServerHelper = getPrivateFiled(devSupportManager, devSupportManagerBaseClass, "mDevServerHelper")
131
+ setPrivateField(
132
+ obj = devServerHelper,
133
+ objClass = devServerHelper.javaClass,
134
+ field = "mSettings",
135
+ newValue = devMenuInternalReactSettings
136
+ )
137
+
138
+ Log.i(DEV_MENU_TAG, "DevSettings was correctly injected.")
139
+ } catch (e: FileNotFoundException) {
140
+ Log.e(DEV_MENU_TAG, "Couldn't find `dev-menu-packager-host` file.", e)
141
+ } catch (e: Exception) {
142
+ Log.e(DEV_MENU_TAG, "Couldn't inject DevSettings object.", e)
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,108 @@
1
+ package expo.modules.devmenu
2
+
3
+ import android.app.Application
4
+ import android.util.Log
5
+ import com.facebook.react.ReactInstanceManager
6
+ import com.facebook.react.ReactPackage
7
+ import com.facebook.react.bridge.JavaScriptExecutorFactory
8
+ import com.facebook.react.defaults.DefaultReactNativeHost
9
+ import com.facebook.react.devsupport.DevMenuReactSettings
10
+ import com.facebook.react.devsupport.DevServerHelper
11
+ import com.facebook.react.shell.MainReactPackage
12
+ //import devmenu.com.th3rdwave.safeareacontext.SafeAreaProviderManager
13
+ import expo.modules.adapters.react.ModuleRegistryAdapter
14
+ import expo.modules.adapters.react.ReactModuleRegistryProvider
15
+ import expo.modules.devmenu.modules.DevMenuInternalModule
16
+ import expo.modules.devmenu.modules.DevMenuPreferences
17
+ import expo.modules.devmenu.react.createNonDebuggableJavaScriptExecutorFactory
18
+ import expo.modules.kotlin.ModulesProvider
19
+ import java.io.BufferedReader
20
+ import java.io.FileNotFoundException
21
+ import java.io.InputStreamReader
22
+
23
+ /**
24
+ * Class that represents react host used by dev menu.
25
+ */
26
+ class DevMenuReactNativeHost(application: Application, private val useDeveloperSupport: Boolean) :
27
+ DefaultReactNativeHost(application) {
28
+
29
+ override fun getPackages(): List<ReactPackage> {
30
+ val packages = mutableListOf(
31
+ MainReactPackage(null),
32
+ ModuleRegistryAdapter(
33
+ ReactModuleRegistryProvider(emptyList()),
34
+ object : ModulesProvider {
35
+ override fun getModulesList() =
36
+ listOf(
37
+ DevMenuInternalModule::class.java,
38
+ DevMenuPreferences::class.java,
39
+ // SafeAreaProviderManager::class.java
40
+ )
41
+ }
42
+ ),
43
+ DevMenuPackage()
44
+ )
45
+
46
+ try {
47
+ val devLauncherPackage = Class.forName("expo.modules.devlauncher.DevLauncherPackage")
48
+ val pkg = devLauncherPackage.getConstructor().newInstance() as ReactPackage
49
+ packages.add(pkg)
50
+ } catch (e: ClassNotFoundException) {
51
+ // dev launcher is not installed in this project
52
+ }
53
+
54
+ return packages
55
+ }
56
+
57
+ override fun getUseDeveloperSupport() = useDeveloperSupport
58
+
59
+ override fun getBundleAssetName() = "EXDevMenuApp.android.js"
60
+
61
+ override fun getJSMainModuleName() = "index"
62
+
63
+ override fun getJavaScriptExecutorFactory(): JavaScriptExecutorFactory {
64
+ return createNonDebuggableJavaScriptExecutorFactory(application)
65
+ }
66
+
67
+ override fun createReactInstanceManager(): ReactInstanceManager {
68
+ val reactInstanceManager = super.createReactInstanceManager()
69
+
70
+ if (useDeveloperSupport) {
71
+ try {
72
+ // To use a different packager url, we need to replace internal RN objects.
73
+ val serverIp = BufferedReader(
74
+ InputStreamReader(super.getApplication().assets.open("dev-menu-packager-host"))
75
+ ).use {
76
+ it.readLine()
77
+ }
78
+
79
+ val devMenuInternalReactSettings = DevMenuReactSettings(super.getApplication(), serverIp)
80
+
81
+ val devSupportManager = reactInstanceManager.devSupportManager
82
+ val devSupportManagerBaseClass = devSupportManager.javaClass.superclass!!
83
+ setPrivateField(
84
+ obj = devSupportManager,
85
+ objClass = devSupportManagerBaseClass,
86
+ field = "mDevSettings",
87
+ newValue = devMenuInternalReactSettings
88
+ )
89
+
90
+ val devServerHelper: DevServerHelper = getPrivateFiled(devSupportManager, devSupportManagerBaseClass, "mDevServerHelper")
91
+ setPrivateField(
92
+ obj = devServerHelper,
93
+ objClass = devServerHelper.javaClass,
94
+ field = "mSettings",
95
+ newValue = devMenuInternalReactSettings
96
+ )
97
+
98
+ Log.i(DEV_MENU_TAG, "DevSettings was correctly injected.")
99
+ } catch (e: FileNotFoundException) {
100
+ Log.e(DEV_MENU_TAG, "Couldn't find `dev-menu-packager-host` file.", e)
101
+ } catch (e: Exception) {
102
+ Log.e(DEV_MENU_TAG, "Couldn't inject DevSettings object.", e)
103
+ }
104
+ }
105
+
106
+ return reactInstanceManager
107
+ }
108
+ }
@@ -0,0 +1,56 @@
1
+ @file:Suppress("RedundantVisibilityModifier")
2
+
3
+ package com.facebook.react.devsupport
4
+
5
+ import android.content.Context
6
+ import android.content.SharedPreferences
7
+ import android.content.SharedPreferences.OnSharedPreferenceChangeListener
8
+ import android.preference.PreferenceManager
9
+ import com.facebook.react.common.build.ReactBuildConfig
10
+ import com.facebook.react.modules.debug.interfaces.DeveloperSettings
11
+ import com.facebook.react.packagerconnection.PackagerConnectionSettings
12
+ import expo.modules.devmenu.react.DevMenuPackagerConnectionSettings
13
+
14
+ /**
15
+ * Class representing react's internal [DevInternalSettings] class, which we want to replace to change [packagerConnectionSettings] and others settings.
16
+ * It is only use when [expo.modules.devmenu.DevMenuReactNativeHost.getUseDeveloperSupport] returns true.
17
+ * Implementation has been copied from reacts internal [DevInternalSettings] class
18
+ */
19
+
20
+ internal class DevMenuReactSettings(
21
+ context: Context,
22
+ serverIp: String,
23
+ ) : DevMenuSettingsBase(context) {
24
+ override val packagerConnectionSettings = DevMenuPackagerConnectionSettings(serverIp, context)
25
+
26
+ // Implemented here so `this` is not leaked
27
+ init {
28
+ mPreferences.registerOnSharedPreferenceChangeListener(this)
29
+ }
30
+ }
31
+
32
+ /**
33
+ * A wrapper of [DevInternalSettings] allows us to access the package-private [DevInternalSettings] properties
34
+ */
35
+ internal class DevMenuInternalSettingsWrapper(private val devSettings: DeveloperSettings) {
36
+ val isFpsDebugEnabled = devSettings.isFpsDebugEnabled
37
+ var isHotModuleReplacementEnabled: Boolean
38
+ get() = devSettings.isHotModuleReplacementEnabled
39
+ set(value) {
40
+ devSettings.isHotModuleReplacementEnabled = value
41
+ }
42
+
43
+ var isRemoteJSDebugEnabled: Boolean
44
+ get() = devSettings.isRemoteJSDebugEnabled
45
+ set(value) {
46
+ devSettings.isRemoteJSDebugEnabled = value
47
+ }
48
+
49
+ var isJSDevModeEnabled: Boolean
50
+ get() = devSettings.isJSDevModeEnabled
51
+ set(value) {
52
+ devSettings.isJSDevModeEnabled = value
53
+ }
54
+
55
+ val packagerConnectionSettings: PackagerConnectionSettings = devSettings.packagerConnectionSettings
56
+ }
@@ -0,0 +1,71 @@
1
+ package com.facebook.react.devsupport
2
+
3
+ import android.content.Context
4
+ import android.content.SharedPreferences
5
+ import android.content.SharedPreferences.OnSharedPreferenceChangeListener
6
+ import android.preference.PreferenceManager
7
+ import com.facebook.react.common.build.ReactBuildConfig
8
+ import com.facebook.react.devsupport.DevMenuSettingsBase.Listener
9
+ import com.facebook.react.modules.debug.interfaces.DeveloperSettings
10
+
11
+ /**
12
+ * Implementation has been copied from reacts internal [DevInternalSettings] class
13
+ */
14
+ abstract class DevMenuSettingsBase(
15
+ context: Context,
16
+ private val listener: Listener? = Listener {}
17
+ ) : DeveloperSettings, OnSharedPreferenceChangeListener {
18
+ protected val mPreferences: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
19
+
20
+ override var isFpsDebugEnabled: Boolean
21
+ get() = mPreferences.getBoolean("fps_debug", false)
22
+ set(enabled) {
23
+ mPreferences.edit().putBoolean("fps_debug", enabled).apply()
24
+ }
25
+
26
+ override var isAnimationFpsDebugEnabled = mPreferences.getBoolean("animations_debug", false)
27
+
28
+ override var isJSDevModeEnabled: Boolean
29
+ get() = mPreferences.getBoolean("js_dev_mode_debug", true)
30
+ set(value) {
31
+ mPreferences.edit().putBoolean("js_dev_mode_debug", value).apply()
32
+ }
33
+
34
+ override var isJSMinifyEnabled: Boolean = mPreferences.getBoolean("js_minify_debug", false)
35
+
36
+ override fun onSharedPreferenceChanged(sharedPreferences: SharedPreferences, key: String?) {
37
+ if (this.listener != null && ("fps_debug" == key || "js_dev_mode_debug" == key || "start_sampling_profiler_on_init" == key || "js_minify_debug" == key)) {
38
+ listener.onInternalSettingsChanged()
39
+ }
40
+ }
41
+
42
+ override var isElementInspectorEnabled: Boolean
43
+ get() = mPreferences.getBoolean("inspector_debug", false)
44
+ set(enabled) {
45
+ mPreferences.edit().putBoolean("inspector_debug", enabled).apply()
46
+ }
47
+
48
+ override var isDeviceDebugEnabled: Boolean = ReactBuildConfig.DEBUG
49
+
50
+ override var isRemoteJSDebugEnabled: Boolean
51
+ get() = mPreferences.getBoolean("remote_js_debug", false)
52
+ set(remoteJSDebugEnabled) {
53
+ mPreferences.edit().putBoolean("remote_js_debug", remoteJSDebugEnabled).apply()
54
+ }
55
+
56
+ override var isStartSamplingProfilerOnInit: Boolean =
57
+ mPreferences.getBoolean("start_sampling_profiler_on_init", false)
58
+
59
+ override fun addMenuItem(title: String) {
60
+ }
61
+
62
+ override var isHotModuleReplacementEnabled: Boolean
63
+ get() = mPreferences.getBoolean("hot_module_replacement", true)
64
+ set(enabled) {
65
+ mPreferences.edit().putBoolean("hot_module_replacement", enabled).apply()
66
+ }
67
+
68
+ fun interface Listener {
69
+ fun onInternalSettingsChanged()
70
+ }
71
+ }
@@ -2,7 +2,7 @@ var __BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.
2
2
  !(function(e){"use strict";e.__r=i,e[`${__METRO_GLOBAL_PREFIX__}__d`]=function(e,n,o){if(null!=r[n])return;var i={dependencyMap:o,factory:e,hasError:!1,importedAll:t,importedDefault:t,isInitialized:!1,publicModule:{exports:{}}};r[n]=i},e.__c=o,e.__registerSegment=function(e,t,n){f[e]=t,n&&n.forEach((function(t){r[t]||p.has(t)||p.set(t,e)}))};var r=o(),t={},n={}.hasOwnProperty;function o(){return r=Object.create(null)}function i(e){var t=e,n=r[t];return n&&n.isInitialized?n.publicModule.exports:d(t,n)}function l(e){var n=e;if(r[n]&&r[n].importedDefault!==t)return r[n].importedDefault;var o=i(n),l=o&&o.__esModule?o.default:o;return r[n].importedDefault=l}function a(e){var o=e;if(r[o]&&r[o].importedAll!==t)return r[o].importedAll;var l,a=i(o);if(a&&a.__esModule)l=a;else{if(l={},a)for(var u in a)n.call(a,u)&&(l[u]=a[u]);l.default=a}return r[o].importedAll=l}i.importDefault=l,i.importAll=a,i.context=function(){throw new Error("The experimental Metro feature `require.context` is not enabled in your project.")},i.resolveWeak=function(){throw new Error("require.resolveWeak cannot be called dynamically.")};var u=!1;function d(r,t){if(!u&&e.ErrorUtils){var n;u=!0;try{n=s(r,t)}catch(r){e.ErrorUtils.reportFatalError(r)}return u=!1,n}return s(r,t)}function c(e){return{segmentId:e>>>16,localId:65535&e}}i.unpackModuleId=c,i.packModuleId=function(e){return(e.segmentId<<16)+e.localId};var f=[],p=new Map;function s(t,n){if(!n&&f.length>0){var o,u=null!=(o=p.get(t))?o:0,d=f[u];null!=d&&(d(t),n=r[t],p.delete(t))}var s=e.nativeRequire;if(!n&&s){var v=c(t),h=v.segmentId;s(v.localId,h),n=r[t]}if(!n)throw Error('Requiring unknown module "'+t+'".');if(n.hasError)throw n.error;n.isInitialized=!0;var _=n,m=_.factory,y=_.dependencyMap;try{var w=n.publicModule;return w.id=t,m(e,i,l,a,w,w.exports,y),n.factory=void 0,n.dependencyMap=void 0,w.exports}catch(e){throw n.hasError=!0,n.error=e,n.isInitialized=!1,n.publicModule.exports=void 0,e}}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
3
3
  !(function(n){var e=(function(){function n(n,e){return n}function e(n){var e={};return n.forEach((function(n,t){e[n]=!0})),e}function t(n,t,a){if(n.formatValueCalls++,n.formatValueCalls>200)return`[TOO BIG formatValueCalls ${n.formatValueCalls} exceeded limit of 200]`;var c=r(n,t);if(c)return c;var f=Object.keys(t),p=e(f);if(d(t)&&(f.indexOf('message')>=0||f.indexOf('description')>=0))return o(t);if(0===f.length){if(v(t)){var g=t.name?': '+t.name:'';return n.stylize('[Function'+g+']','special')}if(s(t))return n.stylize(RegExp.prototype.toString.call(t),'regexp');if(y(t))return n.stylize(Date.prototype.toString.call(t),'date');if(d(t))return o(t)}var h,m,b='',j=!1,O=['{','}'];(h=t,Array.isArray(h)&&(j=!0,O=['[',']']),v(t))&&(b=' [Function'+(t.name?': '+t.name:'')+']');return s(t)&&(b=' '+RegExp.prototype.toString.call(t)),y(t)&&(b=' '+Date.prototype.toUTCString.call(t)),d(t)&&(b=' '+o(t)),0!==f.length||j&&0!=t.length?a<0?s(t)?n.stylize(RegExp.prototype.toString.call(t),'regexp'):n.stylize('[Object]','special'):(n.seen.push(t),m=j?i(n,t,a,p,f):f.map((function(e){return l(n,t,a,p,e,j)})),n.seen.pop(),u(m,b,O)):O[0]+b+O[1]}function r(n,e){if(p(e))return n.stylize('undefined','undefined');if('string'==typeof e){var t="'"+JSON.stringify(e).replace(/^"|"$/g,'').replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return n.stylize(t,'string')}return f(e)?n.stylize(''+e,'number'):a(e)?n.stylize(''+e,'boolean'):c(e)?n.stylize('null','null'):void 0}function o(n){return'['+Error.prototype.toString.call(n)+']'}function i(n,e,t,r,o){for(var i=[],u=0,a=e.length;u<a;++u)m(e,String(u))?i.push(l(n,e,t,r,String(u),!0)):i.push('');return o.forEach((function(o){o.match(/^\d+$/)||i.push(l(n,e,t,r,o,!0))})),i}function l(n,e,r,o,i,l){var u,a,f;if((f=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=f.set?n.stylize('[Getter/Setter]','special'):n.stylize('[Getter]','special'):f.set&&(a=n.stylize('[Setter]','special')),m(o,i)||(u='['+i+']'),a||(n.seen.indexOf(f.value)<0?(a=c(r)?t(n,f.value,null):t(n,f.value,r-1)).indexOf('\n')>-1&&(a=l?a.split('\n').map((function(n){return' '+n})).join('\n').slice(2):'\n'+a.split('\n').map((function(n){return' '+n})).join('\n')):a=n.stylize('[Circular]','special')),p(u)){if(l&&i.match(/^\d+$/))return a;(u=JSON.stringify(''+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.slice(1,u.length-1),u=n.stylize(u,'name')):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=n.stylize(u,'string'))}return u+': '+a}function u(n,e,t){return n.reduce((function(n,e){return e.indexOf('\n')>=0&&0,n+e.replace(/\u001b\[\d\d?m/g,'').length+1}),0)>60?t[0]+(''===e?'':e+'\n ')+' '+n.join(',\n ')+' '+t[1]:t[0]+e+' '+n.join(', ')+' '+t[1]}function a(n){return'boolean'==typeof n}function c(n){return null===n}function f(n){return'number'==typeof n}function p(n){return void 0===n}function s(n){return g(n)&&'[object RegExp]'===h(n)}function g(n){return'object'==typeof n&&null!==n}function y(n){return g(n)&&'[object Date]'===h(n)}function d(n){return g(n)&&('[object Error]'===h(n)||n instanceof Error)}function v(n){return'function'==typeof n}function h(n){return Object.prototype.toString.call(n)}function m(n,e){return Object.prototype.hasOwnProperty.call(n,e)}return function(e,r){return t({seen:[],formatValueCalls:0,stylize:n},e,r.depth)}})(),t=0,r=1,o=2,i=3,l=[];l[t]='debug',l[r]='log',l[o]='warning',l[i]='error';function u(t){return function(){var r;r=1===arguments.length&&'string'==typeof arguments[0]?arguments[0]:Array.prototype.map.call(arguments,(function(n){return e(n,{depth:10})})).join(', ');var u=arguments[0],a=t;'string'==typeof u&&'Warning: '===u.slice(0,9)&&a>=i&&(a=o),n.__inspectorLog&&n.__inspectorLog(l[a],r,[].slice.call(arguments),1),c.length&&(r=f('',r)),n.nativeLoggingHook(r,a)}}function a(n,e){return Array.apply(null,Array(e)).map((function(){return n}))}var c=[];function f(n,e){return c.join('')+n+' '+(e||'')}if(n.nativeLoggingHook){n.console;n.console={error:u(i),info:u(r),log:u(r),warn:u(o),trace:u(t),debug:u(t),table:function(e){if(!Array.isArray(e)){var t=e;for(var o in e=[],t)if(t.hasOwnProperty(o)){var i=t[o];i["(index)"]=o,e.push(i)}}if(0!==e.length){var l=Object.keys(e[0]).sort(),u=[],c=[];l.forEach((function(n,t){c[t]=n.length;for(var r=0;r<e.length;r++){var o=(e[r][n]||'?').toString();u[r]=u[r]||[],u[r][t]=o,c[t]=Math.max(c[t],o.length)}}));for(var f=g(c.map((function(n){return a('-',n).join('')})),'-'),p=[g(l),f],s=0;s<e.length;s++)p.push(g(u[s]));n.nativeLoggingHook('\n'+p.join('\n'),r)}else n.nativeLoggingHook('',r);function g(n,e){var t=n.map((function(n,e){return n+a(' ',c[e]-n.length).join('')}));return e=e||' ',t.join(e+'|'+e)}},group:function(e){n.nativeLoggingHook(f("\u2510",e),r),c.push("\u2502")},groupEnd:function(){c.pop(),n.nativeLoggingHook(f("\u2518"),r)},groupCollapsed:function(e){n.nativeLoggingHook(f("\u2518",e),r),c.push("\u2502")},assert:function(e,t){e||n.nativeLoggingHook('Assertion failed: '+t,i)}},Object.defineProperty(console,'_isPolyfilled',{value:!0,enumerable:!1})}else if(!n.console){var p=function(){},s=n.print||p;n.console={debug:s,error:s,info:s,log:s,trace:s,warn:s,assert:function(n,e){n||s('Assertion failed: '+e)},clear:p,dir:p,dirxml:p,group:p,groupCollapsed:p,groupEnd:p,profile:p,profileEnd:p,table:p},Object.defineProperty(console,'_isPolyfilled',{value:!0,enumerable:!1})}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
4
4
  !(function(n){var r=0,t=function(n,r){throw n},l={setGlobalHandler:function(n){t=n},getGlobalHandler:function(){return t},reportError:function(n){t&&t(n,!1)},reportFatalError:function(n){t&&t(n,!0)},applyWithGuard:function(n,t,u,o,e){try{return r++,n.apply(t,u)}catch(n){l.reportError(n)}finally{r--}return null},applyWithGuardIfNeeded:function(n,r,t){return l.inGuard()?n.apply(r,t):(l.applyWithGuard(n,r,t),null)},inGuard:function(){return!!r},guard:function(n,r,t){var u;if('function'!=typeof n)return console.warn('A function must be passed to ErrorUtils.guard, got ',n),null;var o=null!=(u=null!=r?r:n.name)?u:'<generated guard>';return function(){for(var r=arguments.length,u=new Array(r),e=0;e<r;e++)u[e]=arguments[e];return l.applyWithGuard(n,null!=t?t:this,u,null,o)}}};n.ErrorUtils=l})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
5
- (function(global){try{global.$$require_external="undefined"==typeof expo?eval("require"):function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}catch(e){global.$$require_external=function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
5
+ !(function(e){try{e.$$require_external="undefined"==typeof expo?require:function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}catch(n){e.$$require_external=function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
6
6
  'undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window&&window;
7
7
  __d((function(g,r,i,a,m,e,d){var n=r(d[0]),t=r(d[1]),p=r(d[2]);(0,t.enableScreens)(!1),n.AppRegistry.registerComponent('main',(function(){return p.App}))}),0,[1,464,489]);
8
8
  __d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);r(d[1]);m.exports={get registerCallableModule(){return r(d[2]).default},get AccessibilityInfo(){return r(d[3]).default},get ActivityIndicator(){return r(d[4]).default},get Button(){return r(d[5]).default},get DrawerLayoutAndroid(){return r(d[6])},get FlatList(){return r(d[7])},get Image(){return r(d[8])},get ImageBackground(){return r(d[9])},get InputAccessoryView(){return r(d[10]).default},get KeyboardAvoidingView(){return r(d[11]).default},get Modal(){return r(d[12])},get Pressable(){return r(d[13]).default},get ProgressBarAndroid(){return t('progress-bar-android-moved',"ProgressBarAndroid has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-community/progress-bar-android' instead of 'react-native'. See https://github.com/react-native-progress-view/progress-bar-android"),r(d[14])},get RefreshControl(){return r(d[15])},get SafeAreaView(){return r(d[16]).default},get ScrollView(){return r(d[17])},get SectionList(){return r(d[18]).default},get StatusBar(){return r(d[19])},get Switch(){return r(d[20]).default},get Text(){return r(d[21])},get TextInput(){return r(d[22])},get Touchable(){return r(d[23]).default},get TouchableHighlight(){return r(d[24])},get TouchableNativeFeedback(){return r(d[25])},get TouchableOpacity(){return r(d[26])},get TouchableWithoutFeedback(){return r(d[27])},get View(){return r(d[28])},get VirtualizedList(){return r(d[29])},get VirtualizedSectionList(){return r(d[30])},get ActionSheetIOS(){return r(d[31])},get Alert(){return r(d[32])},get Animated(){return r(d[33]).default},get Appearance(){return r(d[34])},get AppRegistry(){return r(d[35])},get AppState(){return r(d[36])},get BackHandler(){return r(d[37])},get Clipboard(){return t('clipboard-moved',"Clipboard has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-clipboard/clipboard' instead of 'react-native'. See https://github.com/react-native-clipboard/clipboard"),r(d[38])},get DeviceInfo(){return r(d[39])},get DevSettings(){return r(d[40])},get Dimensions(){return r(d[41]).default},get Easing(){return r(d[42]).default},get findNodeHandle(){return r(d[43]).findNodeHandle},get I18nManager(){return r(d[44])},get InteractionManager(){return r(d[45])},get Keyboard(){return r(d[46])},get LayoutAnimation(){return r(d[47])},get Linking(){return r(d[48])},get LogBox(){return r(d[49]).default},get NativeDialogManagerAndroid(){return r(d[50]).default},get NativeEventEmitter(){return r(d[51]).default},get Networking(){return r(d[52]).default},get PanResponder(){return r(d[53]).default},get PermissionsAndroid(){return r(d[54])},get PixelRatio(){return r(d[55]).default},get PushNotificationIOS(){return t('pushNotificationIOS-moved',"PushNotificationIOS has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-community/push-notification-ios' instead of 'react-native'. See https://github.com/react-native-push-notification/ios"),r(d[56])},get Settings(){return r(d[57])},get Share(){return r(d[58])},get StyleSheet(){return r(d[59])},get Systrace(){return r(d[60])},get ToastAndroid(){return r(d[61])},get TurboModuleRegistry(){return r(d[62])},get UIManager(){return r(d[63])},get unstable_batchedUpdates(){return r(d[43]).unstable_batchedUpdates},get useAnimatedValue(){return r(d[64]).default},get useColorScheme(){return r(d[65]).default},get useWindowDimensions(){return r(d[66]).default},get UTFSequence(){return r(d[67]).default},get Vibration(){return r(d[68])},get YellowBox(){return r(d[69])},get DeviceEventEmitter(){return r(d[70]).default},get DynamicColorIOS(){return r(d[71]).DynamicColorIOS},get NativeAppEventEmitter(){return r(d[72])},get NativeModules(){return r(d[73])},get Platform(){return r(d[74])},get PlatformColor(){return r(d[75]).PlatformColor},get processColor(){return r(d[76]).default},get requireNativeComponent(){return r(d[77]).default},get RootTagContext(){return r(d[78]).RootTagContext},get unstable_enableLogBox(){return function(){return console.warn('LogBox is enabled by default so there is no need to call unstable_enableLogBox() anymore. This is a no op and will be removed in the next version.')}}}}),1,[2,3,4,23,255,262,377,319,338,385,386,389,390,399,256,349,401,354,374,378,402,263,407,408,412,275,276,413,236,414,415,416,202,277,419,220,423,244,427,430,431,81,290,35,396,287,360,361,434,439,204,180,179,440,442,80,445,448,449,241,18,452,50,91,455,456,457,458,459,462,24,463,215,51,57,71,68,260,242]);
@@ -2,7 +2,7 @@ var __BUNDLE_START_TIME__=this.nativePerformanceNow?nativePerformanceNow():Date.
2
2
  !(function(e){"use strict";e.__r=i,e[`${__METRO_GLOBAL_PREFIX__}__d`]=function(e,n,o){if(null!=r[n])return;var i={dependencyMap:o,factory:e,hasError:!1,importedAll:t,importedDefault:t,isInitialized:!1,publicModule:{exports:{}}};r[n]=i},e.__c=o,e.__registerSegment=function(e,t,n){f[e]=t,n&&n.forEach((function(t){r[t]||p.has(t)||p.set(t,e)}))};var r=o(),t={},n={}.hasOwnProperty;function o(){return r=Object.create(null)}function i(e){var t=e,n=r[t];return n&&n.isInitialized?n.publicModule.exports:d(t,n)}function l(e){var n=e;if(r[n]&&r[n].importedDefault!==t)return r[n].importedDefault;var o=i(n),l=o&&o.__esModule?o.default:o;return r[n].importedDefault=l}function a(e){var o=e;if(r[o]&&r[o].importedAll!==t)return r[o].importedAll;var l,a=i(o);if(a&&a.__esModule)l=a;else{if(l={},a)for(var u in a)n.call(a,u)&&(l[u]=a[u]);l.default=a}return r[o].importedAll=l}i.importDefault=l,i.importAll=a,i.context=function(){throw new Error("The experimental Metro feature `require.context` is not enabled in your project.")},i.resolveWeak=function(){throw new Error("require.resolveWeak cannot be called dynamically.")};var u=!1;function d(r,t){if(!u&&e.ErrorUtils){var n;u=!0;try{n=s(r,t)}catch(r){e.ErrorUtils.reportFatalError(r)}return u=!1,n}return s(r,t)}function c(e){return{segmentId:e>>>16,localId:65535&e}}i.unpackModuleId=c,i.packModuleId=function(e){return(e.segmentId<<16)+e.localId};var f=[],p=new Map;function s(t,n){if(!n&&f.length>0){var o,u=null!=(o=p.get(t))?o:0,d=f[u];null!=d&&(d(t),n=r[t],p.delete(t))}var s=e.nativeRequire;if(!n&&s){var v=c(t),h=v.segmentId;s(v.localId,h),n=r[t]}if(!n)throw Error('Requiring unknown module "'+t+'".');if(n.hasError)throw n.error;n.isInitialized=!0;var _=n,m=_.factory,y=_.dependencyMap;try{var w=n.publicModule;return w.id=t,m(e,i,l,a,w,w.exports,y),n.factory=void 0,n.dependencyMap=void 0,w.exports}catch(e){throw n.hasError=!0,n.error=e,n.isInitialized=!1,n.publicModule.exports=void 0,e}}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
3
3
  !(function(n){var e=(function(){function n(n,e){return n}function e(n){var e={};return n.forEach((function(n,t){e[n]=!0})),e}function t(n,t,a){if(n.formatValueCalls++,n.formatValueCalls>200)return`[TOO BIG formatValueCalls ${n.formatValueCalls} exceeded limit of 200]`;var c=r(n,t);if(c)return c;var f=Object.keys(t),p=e(f);if(d(t)&&(f.indexOf('message')>=0||f.indexOf('description')>=0))return o(t);if(0===f.length){if(v(t)){var g=t.name?': '+t.name:'';return n.stylize('[Function'+g+']','special')}if(s(t))return n.stylize(RegExp.prototype.toString.call(t),'regexp');if(y(t))return n.stylize(Date.prototype.toString.call(t),'date');if(d(t))return o(t)}var h,m,b='',j=!1,O=['{','}'];(h=t,Array.isArray(h)&&(j=!0,O=['[',']']),v(t))&&(b=' [Function'+(t.name?': '+t.name:'')+']');return s(t)&&(b=' '+RegExp.prototype.toString.call(t)),y(t)&&(b=' '+Date.prototype.toUTCString.call(t)),d(t)&&(b=' '+o(t)),0!==f.length||j&&0!=t.length?a<0?s(t)?n.stylize(RegExp.prototype.toString.call(t),'regexp'):n.stylize('[Object]','special'):(n.seen.push(t),m=j?i(n,t,a,p,f):f.map((function(e){return l(n,t,a,p,e,j)})),n.seen.pop(),u(m,b,O)):O[0]+b+O[1]}function r(n,e){if(p(e))return n.stylize('undefined','undefined');if('string'==typeof e){var t="'"+JSON.stringify(e).replace(/^"|"$/g,'').replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return n.stylize(t,'string')}return f(e)?n.stylize(''+e,'number'):a(e)?n.stylize(''+e,'boolean'):c(e)?n.stylize('null','null'):void 0}function o(n){return'['+Error.prototype.toString.call(n)+']'}function i(n,e,t,r,o){for(var i=[],u=0,a=e.length;u<a;++u)m(e,String(u))?i.push(l(n,e,t,r,String(u),!0)):i.push('');return o.forEach((function(o){o.match(/^\d+$/)||i.push(l(n,e,t,r,o,!0))})),i}function l(n,e,r,o,i,l){var u,a,f;if((f=Object.getOwnPropertyDescriptor(e,i)||{value:e[i]}).get?a=f.set?n.stylize('[Getter/Setter]','special'):n.stylize('[Getter]','special'):f.set&&(a=n.stylize('[Setter]','special')),m(o,i)||(u='['+i+']'),a||(n.seen.indexOf(f.value)<0?(a=c(r)?t(n,f.value,null):t(n,f.value,r-1)).indexOf('\n')>-1&&(a=l?a.split('\n').map((function(n){return' '+n})).join('\n').slice(2):'\n'+a.split('\n').map((function(n){return' '+n})).join('\n')):a=n.stylize('[Circular]','special')),p(u)){if(l&&i.match(/^\d+$/))return a;(u=JSON.stringify(''+i)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(u=u.slice(1,u.length-1),u=n.stylize(u,'name')):(u=u.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),u=n.stylize(u,'string'))}return u+': '+a}function u(n,e,t){return n.reduce((function(n,e){return e.indexOf('\n')>=0&&0,n+e.replace(/\u001b\[\d\d?m/g,'').length+1}),0)>60?t[0]+(''===e?'':e+'\n ')+' '+n.join(',\n ')+' '+t[1]:t[0]+e+' '+n.join(', ')+' '+t[1]}function a(n){return'boolean'==typeof n}function c(n){return null===n}function f(n){return'number'==typeof n}function p(n){return void 0===n}function s(n){return g(n)&&'[object RegExp]'===h(n)}function g(n){return'object'==typeof n&&null!==n}function y(n){return g(n)&&'[object Date]'===h(n)}function d(n){return g(n)&&('[object Error]'===h(n)||n instanceof Error)}function v(n){return'function'==typeof n}function h(n){return Object.prototype.toString.call(n)}function m(n,e){return Object.prototype.hasOwnProperty.call(n,e)}return function(e,r){return t({seen:[],formatValueCalls:0,stylize:n},e,r.depth)}})(),t=0,r=1,o=2,i=3,l=[];l[t]='debug',l[r]='log',l[o]='warning',l[i]='error';function u(t){return function(){var r;r=1===arguments.length&&'string'==typeof arguments[0]?arguments[0]:Array.prototype.map.call(arguments,(function(n){return e(n,{depth:10})})).join(', ');var u=arguments[0],a=t;'string'==typeof u&&'Warning: '===u.slice(0,9)&&a>=i&&(a=o),n.__inspectorLog&&n.__inspectorLog(l[a],r,[].slice.call(arguments),1),c.length&&(r=f('',r)),n.nativeLoggingHook(r,a)}}function a(n,e){return Array.apply(null,Array(e)).map((function(){return n}))}var c=[];function f(n,e){return c.join('')+n+' '+(e||'')}if(n.nativeLoggingHook){n.console;n.console={error:u(i),info:u(r),log:u(r),warn:u(o),trace:u(t),debug:u(t),table:function(e){if(!Array.isArray(e)){var t=e;for(var o in e=[],t)if(t.hasOwnProperty(o)){var i=t[o];i["(index)"]=o,e.push(i)}}if(0!==e.length){var l=Object.keys(e[0]).sort(),u=[],c=[];l.forEach((function(n,t){c[t]=n.length;for(var r=0;r<e.length;r++){var o=(e[r][n]||'?').toString();u[r]=u[r]||[],u[r][t]=o,c[t]=Math.max(c[t],o.length)}}));for(var f=g(c.map((function(n){return a('-',n).join('')})),'-'),p=[g(l),f],s=0;s<e.length;s++)p.push(g(u[s]));n.nativeLoggingHook('\n'+p.join('\n'),r)}else n.nativeLoggingHook('',r);function g(n,e){var t=n.map((function(n,e){return n+a(' ',c[e]-n.length).join('')}));return e=e||' ',t.join(e+'|'+e)}},group:function(e){n.nativeLoggingHook(f("\u2510",e),r),c.push("\u2502")},groupEnd:function(){c.pop(),n.nativeLoggingHook(f("\u2518"),r)},groupCollapsed:function(e){n.nativeLoggingHook(f("\u2518",e),r),c.push("\u2502")},assert:function(e,t){e||n.nativeLoggingHook('Assertion failed: '+t,i)}},Object.defineProperty(console,'_isPolyfilled',{value:!0,enumerable:!1})}else if(!n.console){var p=function(){},s=n.print||p;n.console={debug:s,error:s,info:s,log:s,trace:s,warn:s,assert:function(n,e){n||s('Assertion failed: '+e)},clear:p,dir:p,dirxml:p,group:p,groupCollapsed:p,groupEnd:p,profile:p,profileEnd:p,table:p},Object.defineProperty(console,'_isPolyfilled',{value:!0,enumerable:!1})}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
4
4
  !(function(n){var r=0,t=function(n,r){throw n},l={setGlobalHandler:function(n){t=n},getGlobalHandler:function(){return t},reportError:function(n){t&&t(n,!1)},reportFatalError:function(n){t&&t(n,!0)},applyWithGuard:function(n,t,u,o,e){try{return r++,n.apply(t,u)}catch(n){l.reportError(n)}finally{r--}return null},applyWithGuardIfNeeded:function(n,r,t){return l.inGuard()?n.apply(r,t):(l.applyWithGuard(n,r,t),null)},inGuard:function(){return!!r},guard:function(n,r,t){var u;if('function'!=typeof n)return console.warn('A function must be passed to ErrorUtils.guard, got ',n),null;var o=null!=(u=null!=r?r:n.name)?u:'<generated guard>';return function(){for(var r=arguments.length,u=new Array(r),e=0;e<r;e++)u[e]=arguments[e];return l.applyWithGuard(n,null!=t?t:this,u,null,o)}}};n.ErrorUtils=l})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
5
- (function(global){try{global.$$require_external="undefined"==typeof expo?eval("require"):function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}catch(e){global.$$require_external=function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
5
+ !(function(e){try{e.$$require_external="undefined"==typeof expo?require:function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}catch(n){e.$$require_external=function(e){throw new Error(`Node.js standard library module ${e} is not available in this JavaScript environment`)}}})('undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window?window:this);
6
6
  'undefined'!=typeof globalThis?globalThis:'undefined'!=typeof global?global:'undefined'!=typeof window&&window;
7
7
  __d((function(g,r,i,a,m,e,d){var n=r(d[0]),t=r(d[1]),p=r(d[2]);(0,t.enableScreens)(!1),n.AppRegistry.registerComponent('main',(function(){return p.App}))}),0,[1,461,486]);
8
8
  __d((function(g,r,i,a,m,e,d){'use strict';var t=r(d[0]);r(d[1]);m.exports={get registerCallableModule(){return r(d[2]).default},get AccessibilityInfo(){return r(d[3]).default},get ActivityIndicator(){return r(d[4]).default},get Button(){return r(d[5]).default},get DrawerLayoutAndroid(){return r(d[6])},get FlatList(){return r(d[7])},get Image(){return r(d[8])},get ImageBackground(){return r(d[9])},get InputAccessoryView(){return r(d[10]).default},get KeyboardAvoidingView(){return r(d[11]).default},get Modal(){return r(d[12])},get Pressable(){return r(d[13]).default},get ProgressBarAndroid(){return t('progress-bar-android-moved',"ProgressBarAndroid has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-community/progress-bar-android' instead of 'react-native'. See https://github.com/react-native-progress-view/progress-bar-android"),r(d[14])},get RefreshControl(){return r(d[15])},get SafeAreaView(){return r(d[16]).default},get ScrollView(){return r(d[17])},get SectionList(){return r(d[18]).default},get StatusBar(){return r(d[19])},get Switch(){return r(d[20]).default},get Text(){return r(d[21])},get TextInput(){return r(d[22])},get Touchable(){return r(d[23]).default},get TouchableHighlight(){return r(d[24])},get TouchableNativeFeedback(){return r(d[25])},get TouchableOpacity(){return r(d[26])},get TouchableWithoutFeedback(){return r(d[27])},get View(){return r(d[28])},get VirtualizedList(){return r(d[29])},get VirtualizedSectionList(){return r(d[30])},get ActionSheetIOS(){return r(d[31])},get Alert(){return r(d[32])},get Animated(){return r(d[33]).default},get Appearance(){return r(d[34])},get AppRegistry(){return r(d[35])},get AppState(){return r(d[36])},get BackHandler(){return r(d[37])},get Clipboard(){return t('clipboard-moved',"Clipboard has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-clipboard/clipboard' instead of 'react-native'. See https://github.com/react-native-clipboard/clipboard"),r(d[38])},get DeviceInfo(){return r(d[39])},get DevSettings(){return r(d[40])},get Dimensions(){return r(d[41]).default},get Easing(){return r(d[42]).default},get findNodeHandle(){return r(d[43]).findNodeHandle},get I18nManager(){return r(d[44])},get InteractionManager(){return r(d[45])},get Keyboard(){return r(d[46])},get LayoutAnimation(){return r(d[47])},get Linking(){return r(d[48])},get LogBox(){return r(d[49]).default},get NativeDialogManagerAndroid(){return r(d[50]).default},get NativeEventEmitter(){return r(d[51]).default},get Networking(){return r(d[52]).default},get PanResponder(){return r(d[53]).default},get PermissionsAndroid(){return r(d[54])},get PixelRatio(){return r(d[55]).default},get PushNotificationIOS(){return t('pushNotificationIOS-moved',"PushNotificationIOS has been extracted from react-native core and will be removed in a future release. It can now be installed and imported from '@react-native-community/push-notification-ios' instead of 'react-native'. See https://github.com/react-native-push-notification/ios"),r(d[56])},get Settings(){return r(d[57])},get Share(){return r(d[58])},get StyleSheet(){return r(d[59])},get Systrace(){return r(d[60])},get ToastAndroid(){return r(d[61])},get TurboModuleRegistry(){return r(d[62])},get UIManager(){return r(d[63])},get unstable_batchedUpdates(){return r(d[43]).unstable_batchedUpdates},get useAnimatedValue(){return r(d[64]).default},get useColorScheme(){return r(d[65]).default},get useWindowDimensions(){return r(d[66]).default},get UTFSequence(){return r(d[67]).default},get Vibration(){return r(d[68])},get YellowBox(){return r(d[69])},get DeviceEventEmitter(){return r(d[70]).default},get DynamicColorIOS(){return r(d[71]).DynamicColorIOS},get NativeAppEventEmitter(){return r(d[72])},get NativeModules(){return r(d[73])},get Platform(){return r(d[74])},get PlatformColor(){return r(d[75]).PlatformColor},get processColor(){return r(d[76]).default},get requireNativeComponent(){return r(d[77]).default},get RootTagContext(){return r(d[78]).RootTagContext},get unstable_enableLogBox(){return function(){return console.warn('LogBox is enabled by default so there is no need to call unstable_enableLogBox() anymore. This is a no op and will be removed in the next version.')}}}}),1,[2,3,4,23,254,260,374,317,336,375,376,379,380,389,391,346,392,351,371,395,396,261,401,403,407,273,274,408,238,409,410,411,204,275,414,222,418,246,422,425,426,81,288,35,386,285,357,358,429,434,435,193,181,437,439,80,442,445,448,243,18,451,50,91,452,453,454,455,456,459,24,460,217,51,57,71,68,258,244]);