From c2382392f589e3e2964ac45f50022f17d039ac57 Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Thu, 27 Feb 2025 12:26:52 +0100
Subject: [PATCH 1/8] bump RN patches

---
 ...0.77.1+022+disable-suggestion-pop-up.patch | 322 ------------------
 ... => react-native+0.78.0+001+initial.patch} |   0
 ...ct-native+0.78.0+002+fixMVCPAndroid.patch} |   0
 ....78.0+003+disableTextInputRecycling.patch} |   0
 ...native+0.78.0+004+iOSFontResolution.patch} |   8 +-
 ...+0.78.0+005+resetAutoresizingOnView.patch} |   0
 ...+006+disableNonTranslucentStatusBar.patch} |   0
 ...> react-native+0.78.0+007+TextInput.patch} |  27 +-
 ...008+iOSCoreAnimationBorderRendering.patch} |   0
 ...-native+0.78.0+009+copyStateOnClone.patch} |   0
 ...+0.78.0+010+textinput-clear-command.patch} |   0
 ...0.78.0+011+Add-onPaste-to-TextInput.patch} |  54 +--
 ...react-native+0.78.0+012+alert-style.patch} |   0
 ...+0.78.0+013+fixNavigationAnimations.patch} |   0
 ...ative+0.78.0+014+fixScrollViewState.patch} |   0
 ...tive+0.78.0+015+redactAppParameters.patch} |   0
 ...+016+android-keyboard-avoiding-view.patch} |   0
 ...0+017+fix-mask-persisting-recycling.patch} |   0
 ....0+018+fix-text-selecting-on-change.patch} |   8 +-
 ...ive+0.78.0+019+fix-scroll-view-jump.patch} |   0
 ...-dropping-mutations-in-transactions.patch} |  18 +-
 ...021+fix-crash-when-deleting-expense.patch} |   0
 ....0+022+dont-enable-height-centering.patch} |   0
 23 files changed, 58 insertions(+), 379 deletions(-)
 delete mode 100644 patches/react-native+0.77.1+022+disable-suggestion-pop-up.patch
 rename patches/{react-native+0.77.1+001+initial.patch => react-native+0.78.0+001+initial.patch} (100%)
 rename patches/{react-native+0.77.1+002+fixMVCPAndroid.patch => react-native+0.78.0+002+fixMVCPAndroid.patch} (100%)
 rename patches/{react-native+0.77.1+003+disableTextInputRecycling.patch => react-native+0.78.0+003+disableTextInputRecycling.patch} (100%)
 rename patches/{react-native+0.77.1+004+iOSFontResolution.patch => react-native+0.78.0+004+iOSFontResolution.patch} (90%)
 rename patches/{react-native+0.77.1+005+resetAutoresizingOnView.patch => react-native+0.78.0+005+resetAutoresizingOnView.patch} (100%)
 rename patches/{react-native+0.77.1+006+disableNonTranslucentStatusBar.patch => react-native+0.78.0+006+disableNonTranslucentStatusBar.patch} (100%)
 rename patches/{react-native+0.77.1+007+TextInput.patch => react-native+0.78.0+007+TextInput.patch} (59%)
 rename patches/{react-native+0.77.1+008+iOSCoreAnimationBorderRendering.patch => react-native+0.78.0+008+iOSCoreAnimationBorderRendering.patch} (100%)
 rename patches/{react-native+0.77.1+009+copyStateOnClone.patch => react-native+0.78.0+009+copyStateOnClone.patch} (100%)
 rename patches/{react-native+0.77.1+010+textinput-clear-command.patch => react-native+0.78.0+010+textinput-clear-command.patch} (100%)
 rename patches/{react-native+0.77.1+011+Add-onPaste-to-TextInput.patch => react-native+0.78.0+011+Add-onPaste-to-TextInput.patch} (94%)
 rename patches/{react-native+0.77.1+012+alert-style.patch => react-native+0.78.0+012+alert-style.patch} (100%)
 rename patches/{react-native+0.77.1+013+fixNavigationAnimations.patch => react-native+0.78.0+013+fixNavigationAnimations.patch} (100%)
 rename patches/{react-native+0.77.1+014+fixScrollViewState.patch => react-native+0.78.0+014+fixScrollViewState.patch} (100%)
 rename patches/{react-native+0.77.1+015+redactAppParameters.patch => react-native+0.78.0+015+redactAppParameters.patch} (100%)
 rename patches/{react-native+0.77.1+016+android-keyboard-avoiding-view.patch => react-native+0.78.0+016+android-keyboard-avoiding-view.patch} (100%)
 rename patches/{react-native+0.77.1+017+fix-mask-persisting-recycling.patch => react-native+0.78.0+017+fix-mask-persisting-recycling.patch} (100%)
 rename patches/{react-native+0.77.1+018+fix-text-selecting-on-change.patch => react-native+0.78.0+018+fix-text-selecting-on-change.patch} (86%)
 rename patches/{react-native+0.77.1+019+fix-scroll-view-jump.patch => react-native+0.78.0+019+fix-scroll-view-jump.patch} (100%)
 rename patches/{react-native+0.77.1+020+fix-dropping-mutations-in-transactions.patch => react-native+0.78.0+020+fix-dropping-mutations-in-transactions.patch} (84%)
 rename patches/{react-native+0.77.1+021+fix-crash-when-deleting-expense.patch => react-native+0.78.0+021+fix-crash-when-deleting-expense.patch} (100%)
 rename patches/{react-native+0.77.1+023+dont-enable-height-centering.patch => react-native+0.78.0+022+dont-enable-height-centering.patch} (100%)

diff --git a/patches/react-native+0.77.1+022+disable-suggestion-pop-up.patch b/patches/react-native+0.77.1+022+disable-suggestion-pop-up.patch
deleted file mode 100644
index c9a9238a9510..000000000000
--- a/patches/react-native+0.77.1+022+disable-suggestion-pop-up.patch
+++ /dev/null
@@ -1,322 +0,0 @@
-diff --git a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
-index 865ccb2..4bedac9 100644
---- a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
-+++ b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
-@@ -170,6 +170,7 @@ const RCTTextInputViewConfig = {
-       onChangeSync: true,
-       onKeyPressSync: true,
-     }),
-+    disableKeyboardShortcuts: true,
-   },
- };
- 
-diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
-index 214ccc0..2112772 100644
---- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
-+++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
-@@ -136,6 +136,11 @@ export interface DocumentSelectionState extends EventEmitter {
-  * @see https://reactnative.dev/docs/textinput#props
-  */
- export interface TextInputIOSProps {
-+  /**
-+   * If true, the keyboard shortcuts (undo/redo and copy buttons) are disabled. The default value is false.
-+   */
-+  disableKeyboardShortcuts?: boolean | undefined;
-+
-   /**
-    * enum('never', 'while-editing', 'unless-editing', 'always')
-    * When the clear button should appear on the right side of the text view
-diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
-index 64a5b99..2a7660c 100644
---- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
-+++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
-@@ -228,6 +228,12 @@ export type enterKeyHintType =
- type PasswordRules = string;
- 
- type IOSProps = $ReadOnly<{|
-+    /**
-+   * If true, the keyboard shortcuts (undo/redo and copy buttons) are disabled. The default value is false.
-+   * @platform ios
-+   */
-+    disableKeyboardShortcuts?: ?boolean,
-+
-   /**
-    * When the clear button should appear on the right side of the text view.
-    * This property is supported only for single-line TextInput component.
-diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
-index 0684516..a077ccc 100644
---- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
-+++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
-@@ -272,6 +272,12 @@ export type enterKeyHintType =
- type PasswordRules = string;
- 
- type IOSProps = $ReadOnly<{|
-+    /**
-+   * If true, the keyboard shortcuts (undo/redo and copy buttons) are disabled. The default value is false.
-+   * @platform ios
-+   */
-+    disableKeyboardShortcuts?: ?boolean,
-+
-   /**
-    * When the clear button should appear on the right side of the text view.
-    * This property is supported only for single-line TextInput component.
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.h b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.h
-index e176ff3..be946f8 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.h
-+++ b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.h
-@@ -39,6 +39,8 @@ NS_ASSUME_NONNULL_BEGIN
- @property (nonatomic, strong, nullable) NSString *inputAccessoryViewID;
- @property (nonatomic, strong, nullable) NSString *inputAccessoryViewButtonLabel;
- 
-+@property (nonatomic, assign) BOOL disableKeyboardShortcuts;
-+
- @end
- 
- NS_ASSUME_NONNULL_END
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm
-index 065a819..b521dd9 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm
-+++ b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm
-@@ -22,6 +22,8 @@ @implementation RCTUITextView {
-   UITextView *_detachedTextView;
-   RCTBackedTextViewDelegateAdapter *_textInputDelegateAdapter;
-   NSDictionary<NSAttributedStringKey, id> *_defaultTextAttributes;
-+  NSArray<UIBarButtonItemGroup *> *_initialValueLeadingBarButtonGroups;
-+  NSArray<UIBarButtonItemGroup *> *_initialValueTrailingBarButtonGroups;
- }
- 
- static UIFont *defaultPlaceholderFont(void)
-@@ -56,6 +58,8 @@ - (instancetype)initWithFrame:(CGRect)frame
-     self.textContainer.lineFragmentPadding = 0;
-     self.scrollsToTop = NO;
-     self.scrollEnabled = YES;
-+    _initialValueLeadingBarButtonGroups = nil;
-+    _initialValueTrailingBarButtonGroups = nil;
-   }
- 
-   return self;
-@@ -136,6 +140,25 @@ - (void)textDidChange
-   [self _invalidatePlaceholderVisibility];
- }
- 
-+- (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts
-+{
-+  // Initialize the initial values only once
-+  if (_initialValueLeadingBarButtonGroups == nil) {
-+    // Capture initial values of leading and trailing button groups
-+    _initialValueLeadingBarButtonGroups = self.inputAssistantItem.leadingBarButtonGroups;
-+    _initialValueTrailingBarButtonGroups = self.inputAssistantItem.trailingBarButtonGroups;
-+  }
-+
-+  if (disableKeyboardShortcuts) {
-+    self.inputAssistantItem.leadingBarButtonGroups = @[];
-+    self.inputAssistantItem.trailingBarButtonGroups = @[];
-+  } else {
-+    // Restore the initial values
-+    self.inputAssistantItem.leadingBarButtonGroups = _initialValueLeadingBarButtonGroups;
-+    self.inputAssistantItem.trailingBarButtonGroups = _initialValueTrailingBarButtonGroups;
-+  }
-+}
-+
- #pragma mark - Overrides
- 
- - (void)setFont:(UIFont *)font
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h
-index e3df41a..1f1af7e 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h
-+++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputViewProtocol.h
-@@ -52,6 +52,8 @@ NS_ASSUME_NONNULL_BEGIN
- // Use `attributedText.string` instead.
- @property (nonatomic, copy, nullable) NSString *text NS_UNAVAILABLE;
- 
-+@property (nonatomic, assign) BOOL disableKeyboardShortcuts;
-+
- @end
- 
- NS_ASSUME_NONNULL_END
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
-index 4d82c72..0d6f8aa 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
-+++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
-@@ -30,6 +30,8 @@ @implementation RCTBaseTextInputView {
-   BOOL _hasInputAccessoryView;
-   NSString *_Nullable _predictedText;
-   BOOL _didMoveToWindow;
-+  NSArray<UIBarButtonItemGroup *> *_initialValueLeadingBarButtonGroups;
-+  NSArray<UIBarButtonItemGroup *> *_initialValueTrailingBarButtonGroups;
- }
- 
- - (void)reactUpdateResponderOffsetForScrollView:(RCTScrollView *)scrollView
-@@ -65,6 +67,8 @@ - (instancetype)initWithBridge:(RCTBridge *)bridge
-     _bridge = bridge;
-     _eventDispatcher = bridge.eventDispatcher;
-     [self initializeReturnKeyType];
-+    _initialValueLeadingBarButtonGroups = nil;
-+    _initialValueTrailingBarButtonGroups = nil;
-   }
- 
-   return self;
-@@ -394,6 +398,25 @@ - (void)setInputAccessoryViewButtonLabel:(NSString *)inputAccessoryViewButtonLab
-   self.backedTextInputView.inputAccessoryViewButtonLabel = inputAccessoryViewButtonLabel;
- }
- 
-+- (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts
-+{
-+  // Initialize the initial values only once
-+  if (_initialValueLeadingBarButtonGroups == nil) {
-+    // Capture initial values of leading and trailing button groups
-+    _initialValueLeadingBarButtonGroups = self.backedTextInputView.inputAssistantItem.leadingBarButtonGroups;
-+    _initialValueTrailingBarButtonGroups = self.backedTextInputView.inputAssistantItem.trailingBarButtonGroups;
-+  }
-+
-+  if (disableKeyboardShortcuts) {
-+    self.backedTextInputView.inputAssistantItem.leadingBarButtonGroups = @[];
-+    self.backedTextInputView.inputAssistantItem.trailingBarButtonGroups = @[];
-+  } else {
-+    // Restore the initial values
-+    self.backedTextInputView.inputAssistantItem.leadingBarButtonGroups = _initialValueLeadingBarButtonGroups;
-+    self.backedTextInputView.inputAssistantItem.trailingBarButtonGroups = _initialValueTrailingBarButtonGroups;
-+  }
-+}
-+
- #pragma mark - RCTBackedTextInputDelegate
- 
- - (BOOL)textInputShouldBeginEditing
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm
-index ec05595..4b43542 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm
-+++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm
-@@ -71,6 +71,8 @@ @implementation RCTBaseTextInputViewManager {
- 
- RCT_EXPORT_VIEW_PROPERTY(mostRecentEventCount, NSInteger)
- 
-+RCT_EXPORT_VIEW_PROPERTY(disableKeyboardShortcuts, BOOL)
-+
- RCT_EXPORT_SHADOW_PROPERTY(text, NSString)
- RCT_EXPORT_SHADOW_PROPERTY(placeholder, NSString)
- RCT_EXPORT_SHADOW_PROPERTY(onContentSizeChange, RCTDirectEventBlock)
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.h b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.h
-index 13c0b22..fe6d957 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.h
-+++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.h
-@@ -34,6 +34,7 @@ NS_ASSUME_NONNULL_BEGIN
- @property (nonatomic, assign, readonly) CGFloat zoomScale;
- @property (nonatomic, assign, readonly) CGPoint contentOffset;
- @property (nonatomic, assign, readonly) UIEdgeInsets contentInset;
-+@property (nonatomic, assign) BOOL disableKeyboardShortcuts;
- 
- @end
- 
-diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm
-index 667e646..617f05f 100644
---- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm
-+++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm
-@@ -19,6 +19,8 @@
- @implementation RCTUITextField {
-   RCTBackedTextFieldDelegateAdapter *_textInputDelegateAdapter;
-   NSDictionary<NSAttributedStringKey, id> *_defaultTextAttributes;
-+  NSArray<UIBarButtonItemGroup *> *_initialValueLeadingBarButtonGroups;
-+  NSArray<UIBarButtonItemGroup *> *_initialValueTrailingBarButtonGroups;
- }
- 
- - (instancetype)initWithFrame:(CGRect)frame
-@@ -31,6 +33,8 @@ - (instancetype)initWithFrame:(CGRect)frame
- 
-     _textInputDelegateAdapter = [[RCTBackedTextFieldDelegateAdapter alloc] initWithTextField:self];
-     _scrollEnabled = YES;
-+    _initialValueLeadingBarButtonGroups = nil;
-+    _initialValueTrailingBarButtonGroups = nil;
-   }
- 
-   return self;
-@@ -119,6 +123,25 @@ - (void)setSecureTextEntry:(BOOL)secureTextEntry
-   self.attributedText = originalText;
- }
- 
-+- (void)setDisableKeyboardShortcuts:(BOOL)disableKeyboardShortcuts
-+{
-+  // Initialize the initial values only once
-+  if (_initialValueLeadingBarButtonGroups == nil) {
-+    // Capture initial values of leading and trailing button groups
-+    _initialValueLeadingBarButtonGroups = self.inputAssistantItem.leadingBarButtonGroups;
-+    _initialValueTrailingBarButtonGroups = self.inputAssistantItem.trailingBarButtonGroups;
-+  }
-+
-+  if (disableKeyboardShortcuts) {
-+    self.inputAssistantItem.leadingBarButtonGroups = @[];
-+    self.inputAssistantItem.trailingBarButtonGroups = @[];
-+  } else {
-+    // Restore the initial values
-+    self.inputAssistantItem.leadingBarButtonGroups = _initialValueLeadingBarButtonGroups;
-+    self.inputAssistantItem.trailingBarButtonGroups = _initialValueTrailingBarButtonGroups;
-+  }
-+}
-+
- #pragma mark - Placeholder
- 
- - (NSDictionary<NSAttributedStringKey, id> *)_placeholderTextAttributes
-diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm
-index 91aff1a..673043c 100644
---- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm
-+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm
-@@ -290,6 +290,11 @@ - (void)updateProps:(const Props::Shared &)props oldProps:(const Props::Shared &
-     _backedTextInputView.inputAccessoryViewButtonLabel =
-         RCTNSStringFromString(newTextInputProps.inputAccessoryViewButtonLabel);
-   }
-+
-+  if (newTextInputProps.disableKeyboardShortcuts != oldTextInputProps.disableKeyboardShortcuts) {
-+    _backedTextInputView.disableKeyboardShortcuts = newTextInputProps.disableKeyboardShortcuts;
-+  }
-+  
-   [super updateProps:props oldProps:oldProps];
- 
-   [self setDefaultInputAccessoryView];
-diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm
-index 2b0278d..6e562ad 100644
---- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm
-+++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputUtils.mm
-@@ -45,6 +45,7 @@ void RCTCopyBackedTextInput(
-   toTextInput.textContentType = fromTextInput.textContentType;
-   toTextInput.smartInsertDeleteType = fromTextInput.smartInsertDeleteType;
-   toTextInput.passwordRules = fromTextInput.passwordRules;
-+  toTextInput.disableKeyboardShortcuts = fromTextInput.disableKeyboardShortcuts;
- 
-   [toTextInput setSelectedTextRange:fromTextInput.selectedTextRange notifyDelegate:NO];
- }
-diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp
-index 80cbdc5..5acaa45 100644
---- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp
-+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.cpp
-@@ -103,6 +103,12 @@ BaseTextInputProps::BaseTextInputProps(
-           "autoCapitalize",
-           sourceProps.autoCapitalize,
-           {})),
-+      disableKeyboardShortcuts(convertRawProp(
-+          context,
-+          rawProps,
-+          "disableKeyboardShortcuts",
-+          sourceProps.disableKeyboardShortcuts,
-+          {false})),
-       editable(convertRawProp(
-           context,
-           rawProps,
-@@ -204,6 +210,7 @@ void BaseTextInputProps::setProp(
-     RAW_SET_PROP_SWITCH_CASE_BASIC(text);
-     RAW_SET_PROP_SWITCH_CASE_BASIC(mostRecentEventCount);
-     RAW_SET_PROP_SWITCH_CASE_BASIC(autoCapitalize);
-+    RAW_SET_PROP_SWITCH_CASE_BASIC(disableKeyboardShortcuts);
-     RAW_SET_PROP_SWITCH_CASE_BASIC(editable);
-     RAW_SET_PROP_SWITCH_CASE_BASIC(readOnly);
-     RAW_SET_PROP_SWITCH_CASE_BASIC(submitBehavior);
-diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h
-index 36c199b..3fb7fa5 100644
---- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h
-+++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/BaseTextInputProps.h
-@@ -65,6 +65,7 @@ class BaseTextInputProps : public ViewProps, public BaseTextProps {
- 
-   std::string autoCapitalize{};
- 
-+  bool disableKeyboardShortcuts{false};
-   bool editable{true};
-   bool readOnly{false};
- 
diff --git a/patches/react-native+0.77.1+001+initial.patch b/patches/react-native+0.78.0+001+initial.patch
similarity index 100%
rename from patches/react-native+0.77.1+001+initial.patch
rename to patches/react-native+0.78.0+001+initial.patch
diff --git a/patches/react-native+0.77.1+002+fixMVCPAndroid.patch b/patches/react-native+0.78.0+002+fixMVCPAndroid.patch
similarity index 100%
rename from patches/react-native+0.77.1+002+fixMVCPAndroid.patch
rename to patches/react-native+0.78.0+002+fixMVCPAndroid.patch
diff --git a/patches/react-native+0.77.1+003+disableTextInputRecycling.patch b/patches/react-native+0.78.0+003+disableTextInputRecycling.patch
similarity index 100%
rename from patches/react-native+0.77.1+003+disableTextInputRecycling.patch
rename to patches/react-native+0.78.0+003+disableTextInputRecycling.patch
diff --git a/patches/react-native+0.77.1+004+iOSFontResolution.patch b/patches/react-native+0.78.0+004+iOSFontResolution.patch
similarity index 90%
rename from patches/react-native+0.77.1+004+iOSFontResolution.patch
rename to patches/react-native+0.78.0+004+iOSFontResolution.patch
index b91f31326456..defe6054d0f0 100644
--- a/patches/react-native+0.77.1+004+iOSFontResolution.patch
+++ b/patches/react-native+0.78.0+004+iOSFontResolution.patch
@@ -1,5 +1,5 @@
 diff --git a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm
-index b086734..7d7f770 100644
+index b48a427..2470f20 100644
 --- a/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm
 +++ b/node_modules/react-native/ReactCommon/react/renderer/textlayoutmanager/platform/ios/react/renderer/textlayoutmanager/RCTFontUtils.mm
 @@ -38,9 +38,6 @@ static RCTFontProperties RCTResolveFontProperties(
@@ -12,8 +12,8 @@ index b086734..7d7f770 100644
    fontProperties.variant =
        fontProperties.variant != RCTFontVariantUndefined ? fontProperties.variant : baseFontProperties.variant;
    return fontProperties;
-@@ -157,10 +154,14 @@ static RCTFontStyle RCTGetFontStyle(UIFont *font)
-   if ([fontProperties.family isEqualToString:defaultFontProperties.family]) {
+@@ -179,10 +176,14 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties)
+   } else if ([fontProperties.family isEqualToString:defaultFontProperties.family]) {
      // Handle system font as special case. This ensures that we preserve
      // the specific metrics of the standard system font as closely as possible.
 +    fontProperties.weight = !isnan(fontProperties.weight) ? fontProperties.weight : defaultFontProperties.weight;
@@ -27,7 +27,7 @@ index b086734..7d7f770 100644
  
      if (fontNames.count == 0) {
        // Gracefully handle being given a font name rather than font family, for
-@@ -173,15 +174,18 @@ static RCTFontStyle RCTGetFontStyle(UIFont *font)
+@@ -195,15 +196,18 @@ UIFont *RCTFontWithFontProperties(RCTFontProperties fontProperties)
          // Failback to system font.
          font = [UIFont systemFontOfSize:effectiveFontSize weight:fontProperties.weight];
        }
diff --git a/patches/react-native+0.77.1+005+resetAutoresizingOnView.patch b/patches/react-native+0.78.0+005+resetAutoresizingOnView.patch
similarity index 100%
rename from patches/react-native+0.77.1+005+resetAutoresizingOnView.patch
rename to patches/react-native+0.78.0+005+resetAutoresizingOnView.patch
diff --git a/patches/react-native+0.77.1+006+disableNonTranslucentStatusBar.patch b/patches/react-native+0.78.0+006+disableNonTranslucentStatusBar.patch
similarity index 100%
rename from patches/react-native+0.77.1+006+disableNonTranslucentStatusBar.patch
rename to patches/react-native+0.78.0+006+disableNonTranslucentStatusBar.patch
diff --git a/patches/react-native+0.77.1+007+TextInput.patch b/patches/react-native+0.78.0+007+TextInput.patch
similarity index 59%
rename from patches/react-native+0.77.1+007+TextInput.patch
rename to patches/react-native+0.78.0+007+TextInput.patch
index 3ec57e4bed90..4b26e70fe4de 100644
--- a/patches/react-native+0.77.1+007+TextInput.patch
+++ b/patches/react-native+0.78.0+007+TextInput.patch
@@ -1,20 +1,21 @@
- - (void)_setShowSoftInputOnFocus:(BOOL)showSoftInputOnFocus
 diff --git a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp
-index 694b789..f1c148e 100644
+index d0b2b5b..6dea7a0 100644
 --- a/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp
 +++ b/node_modules/react-native/ReactCommon/react/renderer/components/textinput/platform/android/react/renderer/components/androidtextinput/AndroidTextInputShadowNode.cpp
-@@ -183,14 +183,6 @@ void AndroidTextInputShadowNode::updateStateIfNeeded() {
- Size AndroidTextInputShadowNode::measureContent(
-     const LayoutContext& layoutContext,
+@@ -31,16 +31,6 @@ Size AndroidTextInputShadowNode::measureContent(
      const LayoutConstraints& layoutConstraints) const {
+   auto textConstraints = getTextConstraints(layoutConstraints);
+ 
 -  if (getStateData().cachedAttributedStringId != 0) {
--    return textLayoutManager_
--        ->measureCachedSpannableById(
--            getStateData().cachedAttributedStringId,
--            getConcreteProps().paragraphAttributes,
--            layoutConstraints)
--        .size;
+-    auto textSize = textLayoutManager_
+-                        ->measureCachedSpannableById(
+-                            getStateData().cachedAttributedStringId,
+-                            getConcreteProps().paragraphAttributes,
+-                            textConstraints)
+-                        .size;
+-    return layoutConstraints.clamp(textSize);
 -  }
- 
+-
    // Layout is called right after measure.
-   // Measure is marked as `const`, and `layout` is not; so State can be updated
+   // Measure is marked as `const`, and `layout` is not; so State can be
+   // updated during layout, but not during `measure`. If State is out-of-date
diff --git a/patches/react-native+0.77.1+008+iOSCoreAnimationBorderRendering.patch b/patches/react-native+0.78.0+008+iOSCoreAnimationBorderRendering.patch
similarity index 100%
rename from patches/react-native+0.77.1+008+iOSCoreAnimationBorderRendering.patch
rename to patches/react-native+0.78.0+008+iOSCoreAnimationBorderRendering.patch
diff --git a/patches/react-native+0.77.1+009+copyStateOnClone.patch b/patches/react-native+0.78.0+009+copyStateOnClone.patch
similarity index 100%
rename from patches/react-native+0.77.1+009+copyStateOnClone.patch
rename to patches/react-native+0.78.0+009+copyStateOnClone.patch
diff --git a/patches/react-native+0.77.1+010+textinput-clear-command.patch b/patches/react-native+0.78.0+010+textinput-clear-command.patch
similarity index 100%
rename from patches/react-native+0.77.1+010+textinput-clear-command.patch
rename to patches/react-native+0.78.0+010+textinput-clear-command.patch
diff --git a/patches/react-native+0.77.1+011+Add-onPaste-to-TextInput.patch b/patches/react-native+0.78.0+011+Add-onPaste-to-TextInput.patch
similarity index 94%
rename from patches/react-native+0.77.1+011+Add-onPaste-to-TextInput.patch
rename to patches/react-native+0.78.0+011+Add-onPaste-to-TextInput.patch
index 0c95505a606f..47c2f291960d 100644
--- a/patches/react-native+0.77.1+011+Add-onPaste-to-TextInput.patch
+++ b/patches/react-native+0.78.0+011+Add-onPaste-to-TextInput.patch
@@ -43,7 +43,7 @@ index 6c4bbb2..770dfee 100644
      disableFullscreenUI: true,
      includeFontPadding: true,
 diff --git a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
-index 53d9349..865ccb2 100644
+index 27cd180..4bedac9 100644
 --- a/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
 +++ b/node_modules/react-native/Libraries/Components/TextInput/RCTTextInputViewConfig.js
 @@ -88,6 +88,9 @@ const RCTTextInputViewConfig = {
@@ -65,10 +65,10 @@ index 53d9349..865ccb2 100644
        onKeyPressSync: true,
      }),
 diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
-index f7074aa..214ccc0 100644
+index 13a73e7..2112772 100644
 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
 +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.d.ts
-@@ -510,6 +510,16 @@ export interface TextInputSubmitEditingEventData {
+@@ -515,6 +515,16 @@ export interface TextInputSubmitEditingEventData {
    text: string;
  }
  
@@ -85,7 +85,7 @@ index f7074aa..214ccc0 100644
  /**
   * @see https://reactnative.dev/docs/textinput#props
   */
-@@ -861,6 +871,13 @@ export interface TextInputProps
+@@ -866,6 +876,13 @@ export interface TextInputProps
      | ((e: NativeSyntheticEvent<TextInputKeyPressEventData>) => void)
      | undefined;
  
@@ -100,7 +100,7 @@ index f7074aa..214ccc0 100644
     * The string that will be rendered before text input has been entered
     */
 diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
-index b61fe39..64a5b99 100644
+index faee19f..220eb99 100644
 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
 +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.flow.js
 @@ -93,6 +93,18 @@ export type EditingEvent = SyntheticEvent<
@@ -122,7 +122,7 @@ index b61fe39..64a5b99 100644
  type DataDetectorTypesType =
    | 'phoneNumber'
    | 'link'
-@@ -833,6 +845,11 @@ export type Props = $ReadOnly<{|
+@@ -839,6 +851,11 @@ export type Props = $ReadOnly<{|
     */
    onScroll?: ?(e: ScrollEvent) => mixed,
  
@@ -135,7 +135,7 @@ index b61fe39..64a5b99 100644
     * The string that will be rendered before text input has been entered.
     */
 diff --git a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
-index 0107e78..0684516 100644
+index aa49725..636bb80 100644
 --- a/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
 +++ b/node_modules/react-native/Libraries/Components/TextInput/TextInput.js
 @@ -134,6 +134,18 @@ export type EditingEvent = SyntheticEvent<
@@ -157,7 +157,7 @@ index 0107e78..0684516 100644
  type DataDetectorTypesType =
    | 'phoneNumber'
    | 'link'
-@@ -836,6 +848,11 @@ export type Props = $ReadOnly<{|
+@@ -842,6 +854,11 @@ export type Props = $ReadOnly<{|
     */
    onScroll?: ?(e: ScrollEvent) => mixed,
  
@@ -170,7 +170,7 @@ index 0107e78..0684516 100644
     * The string that will be rendered before text input has been entered.
     */
 diff --git a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm
-index d5e2e22..065a819 100644
+index 565b0f6..f6670fd 100644
 --- a/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm
 +++ b/node_modules/react-native/Libraries/Text/TextInput/Multiline/RCTUITextView.mm
 @@ -13,6 +13,10 @@
@@ -184,7 +184,7 @@ index d5e2e22..065a819 100644
  @implementation RCTUITextView {
    UILabel *_placeholderView;
    UITextView *_detachedTextView;
-@@ -172,7 +176,31 @@ - (void)scrollRangeToVisible:(NSRange)range
+@@ -198,7 +202,31 @@ static UIColor *defaultPlaceholderColor(void)
  - (void)paste:(id)sender
  {
    _textWasPasted = YES;
@@ -217,7 +217,7 @@ index d5e2e22..065a819 100644
  }
  
  // Turn off scroll animation to fix flaky scrolling.
-@@ -264,6 +292,10 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender
+@@ -290,6 +318,10 @@ static UIColor *defaultPlaceholderColor(void)
      return NO;
    }
  
@@ -265,7 +265,7 @@ diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInp
 index ac8e464..2b91802 100644
 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm
 +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBackedTextInputDelegateAdapter.mm
-@@ -147,6 +147,11 @@ - (void)selectedTextRangeWasSet
+@@ -147,6 +147,11 @@ static void *TextFieldSelectionObservingContext = &TextFieldSelectionObservingCo
    [self textFieldProbablyDidChangeSelection];
  }
  
@@ -277,7 +277,7 @@ index ac8e464..2b91802 100644
  #pragma mark - Generalization
  
  - (void)textFieldProbablyDidChangeSelection
-@@ -292,6 +297,11 @@ - (void)skipNextTextInputDidChangeSelectionEventWithTextRange:(UITextRange *)tex
+@@ -292,6 +297,11 @@ static void *TextFieldSelectionObservingContext = &TextFieldSelectionObservingCo
    _previousSelectedTextRange = textRange;
  }
  
@@ -302,10 +302,10 @@ index 4804624..90b7081 100644
  @property (nonatomic, assign) NSInteger mostRecentEventCount;
  @property (nonatomic, assign, readonly) NSInteger nativeEventCount;
 diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
-index 95edfd5..5111bda 100644
+index 6a2d4f8..b6e6060 100644
 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
 +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputView.mm
-@@ -574,6 +574,26 @@ - (void)textInputDidChangeSelection
+@@ -599,6 +599,26 @@ RCT_NOT_IMPLEMENTED(-(instancetype)initWithFrame : (CGRect)frame)
    });
  }
  
@@ -333,10 +333,10 @@ index 95edfd5..5111bda 100644
  {
    [self enforceTextAttributesIfNeeded];
 diff --git a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm
-index db7c519..ec05595 100644
+index 93f8129..4b43542 100644
 --- a/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm
 +++ b/node_modules/react-native/Libraries/Text/TextInput/RCTBaseTextInputViewManager.mm
-@@ -67,6 +67,7 @@ @implementation RCTBaseTextInputViewManager {
+@@ -67,6 +67,7 @@ RCT_EXPORT_VIEW_PROPERTY(onClear, RCTDirectEventBlock)
  RCT_EXPORT_VIEW_PROPERTY(onChangeSync, RCTDirectEventBlock)
  RCT_EXPORT_VIEW_PROPERTY(onSelectionChange, RCTDirectEventBlock)
  RCT_EXPORT_VIEW_PROPERTY(onScroll, RCTDirectEventBlock)
@@ -345,7 +345,7 @@ index db7c519..ec05595 100644
  RCT_EXPORT_VIEW_PROPERTY(mostRecentEventCount, NSInteger)
  
 diff --git a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm
-index 0318671..667e646 100644
+index 338a1f4..a3df02a 100644
 --- a/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm
 +++ b/node_modules/react-native/Libraries/Text/TextInput/Singleline/RCTUITextField.mm
 @@ -12,6 +12,10 @@
@@ -359,7 +359,7 @@ index 0318671..667e646 100644
  @implementation RCTUITextField {
    RCTBackedTextFieldDelegateAdapter *_textInputDelegateAdapter;
    NSDictionary<NSAttributedStringKey, id> *_defaultTextAttributes;
-@@ -139,6 +143,10 @@ - (BOOL)canPerformAction:(SEL)action withSender:(id)sender
+@@ -165,6 +169,10 @@
      return NO;
    }
  
@@ -370,7 +370,7 @@ index 0318671..667e646 100644
    return [super canPerformAction:action withSender:sender];
  }
  
-@@ -222,7 +230,31 @@ - (void)scrollRangeToVisible:(NSRange)range
+@@ -248,7 +256,31 @@
  - (void)paste:(id)sender
  {
    _textWasPasted = YES;
@@ -404,10 +404,10 @@ index 0318671..667e646 100644
  
  #pragma mark - Layout
 diff --git a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm
-index f8358ed..91aff1a 100644
+index d3170c7..6c038a8 100644
 --- a/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm
 +++ b/node_modules/react-native/React/Fabric/Mounting/ComponentViews/TextInput/RCTTextInputComponentView.mm
-@@ -481,6 +481,13 @@ - (void)textInputDidChangeSelection
+@@ -486,6 +486,13 @@ static NSSet<NSNumber *> *returnKeyTypesSet;
    }
  }
  
@@ -445,7 +445,7 @@ index 0000000..bfb5819
 +  public void onPaste(String type, String data);
 +}
 diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
-index 56a1069..272ea7d 100644
+index a037077..150fc6c 100644
 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
 +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
 @@ -9,6 +9,10 @@ package com.facebook.react.views.textinput;
@@ -467,7 +467,7 @@ index 56a1069..272ea7d 100644
  import android.os.Build;
  import android.os.Bundle;
  import android.text.Editable;
-@@ -122,6 +127,7 @@ public class ReactEditText extends AppCompatEditText {
+@@ -120,6 +125,7 @@ public class ReactEditText extends AppCompatEditText {
    private @Nullable SelectionWatcher mSelectionWatcher;
    private @Nullable ContentSizeWatcher mContentSizeWatcher;
    private @Nullable ScrollWatcher mScrollWatcher;
@@ -475,7 +475,7 @@ index 56a1069..272ea7d 100644
    private InternalKeyListener mKeyListener;
    private boolean mDetectScrollMovement = false;
    private boolean mOnKeyPress = false;
-@@ -165,6 +171,7 @@ public class ReactEditText extends AppCompatEditText {
+@@ -163,6 +169,7 @@ public class ReactEditText extends AppCompatEditText {
        mKeyListener = new InternalKeyListener();
      }
      mScrollWatcher = null;
@@ -483,7 +483,7 @@ index 56a1069..272ea7d 100644
      mTextAttributes = new TextAttributes();
  
      applyTextAttributes();
-@@ -332,8 +339,29 @@ public class ReactEditText extends AppCompatEditText {
+@@ -330,8 +337,29 @@ public class ReactEditText extends AppCompatEditText {
     */
    @Override
    public boolean onTextContextMenuItem(int id) {
@@ -514,7 +514,7 @@ index 56a1069..272ea7d 100644
      }
      return super.onTextContextMenuItem(id);
    }
-@@ -395,6 +423,10 @@ public class ReactEditText extends AppCompatEditText {
+@@ -393,6 +421,10 @@ public class ReactEditText extends AppCompatEditText {
      mScrollWatcher = scrollWatcher;
    }
  
diff --git a/patches/react-native+0.77.1+012+alert-style.patch b/patches/react-native+0.78.0+012+alert-style.patch
similarity index 100%
rename from patches/react-native+0.77.1+012+alert-style.patch
rename to patches/react-native+0.78.0+012+alert-style.patch
diff --git a/patches/react-native+0.77.1+013+fixNavigationAnimations.patch b/patches/react-native+0.78.0+013+fixNavigationAnimations.patch
similarity index 100%
rename from patches/react-native+0.77.1+013+fixNavigationAnimations.patch
rename to patches/react-native+0.78.0+013+fixNavigationAnimations.patch
diff --git a/patches/react-native+0.77.1+014+fixScrollViewState.patch b/patches/react-native+0.78.0+014+fixScrollViewState.patch
similarity index 100%
rename from patches/react-native+0.77.1+014+fixScrollViewState.patch
rename to patches/react-native+0.78.0+014+fixScrollViewState.patch
diff --git a/patches/react-native+0.77.1+015+redactAppParameters.patch b/patches/react-native+0.78.0+015+redactAppParameters.patch
similarity index 100%
rename from patches/react-native+0.77.1+015+redactAppParameters.patch
rename to patches/react-native+0.78.0+015+redactAppParameters.patch
diff --git a/patches/react-native+0.77.1+016+android-keyboard-avoiding-view.patch b/patches/react-native+0.78.0+016+android-keyboard-avoiding-view.patch
similarity index 100%
rename from patches/react-native+0.77.1+016+android-keyboard-avoiding-view.patch
rename to patches/react-native+0.78.0+016+android-keyboard-avoiding-view.patch
diff --git a/patches/react-native+0.77.1+017+fix-mask-persisting-recycling.patch b/patches/react-native+0.78.0+017+fix-mask-persisting-recycling.patch
similarity index 100%
rename from patches/react-native+0.77.1+017+fix-mask-persisting-recycling.patch
rename to patches/react-native+0.78.0+017+fix-mask-persisting-recycling.patch
diff --git a/patches/react-native+0.77.1+018+fix-text-selecting-on-change.patch b/patches/react-native+0.78.0+018+fix-text-selecting-on-change.patch
similarity index 86%
rename from patches/react-native+0.77.1+018+fix-text-selecting-on-change.patch
rename to patches/react-native+0.78.0+018+fix-text-selecting-on-change.patch
index 80dafbfaed58..555cd7b2f9c0 100644
--- a/patches/react-native+0.77.1+018+fix-text-selecting-on-change.patch
+++ b/patches/react-native+0.78.0+018+fix-text-selecting-on-change.patch
@@ -1,8 +1,8 @@
 diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
-index 272ea7d..840b5f5 100644
+index 150fc6c..58a97eb 100644
 --- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
 +++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactEditText.java
-@@ -140,6 +140,7 @@ public class ReactEditText extends AppCompatEditText {
+@@ -138,6 +138,7 @@ public class ReactEditText extends AppCompatEditText {
    private boolean mContextMenuHidden = false;
    private boolean mDidAttachToWindow = false;
    private boolean mSelectTextOnFocus = false;
@@ -10,7 +10,7 @@ index 272ea7d..840b5f5 100644
    private @Nullable String mPlaceholder = null;
    private Overflow mOverflow = Overflow.VISIBLE;
  
-@@ -257,11 +258,11 @@ public class ReactEditText extends AppCompatEditText {
+@@ -255,11 +256,11 @@ public class ReactEditText extends AppCompatEditText {
    @Override
    protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
      onContentSizeChange();
@@ -24,7 +24,7 @@ index 272ea7d..840b5f5 100644
      }
    }
  
-@@ -390,6 +391,7 @@ public class ReactEditText extends AppCompatEditText {
+@@ -388,6 +389,7 @@ public class ReactEditText extends AppCompatEditText {
      if (getShowSoftInputOnFocus()) {
        showSoftKeyboard();
      }
diff --git a/patches/react-native+0.77.1+019+fix-scroll-view-jump.patch b/patches/react-native+0.78.0+019+fix-scroll-view-jump.patch
similarity index 100%
rename from patches/react-native+0.77.1+019+fix-scroll-view-jump.patch
rename to patches/react-native+0.78.0+019+fix-scroll-view-jump.patch
diff --git a/patches/react-native+0.77.1+020+fix-dropping-mutations-in-transactions.patch b/patches/react-native+0.78.0+020+fix-dropping-mutations-in-transactions.patch
similarity index 84%
rename from patches/react-native+0.77.1+020+fix-dropping-mutations-in-transactions.patch
rename to patches/react-native+0.78.0+020+fix-dropping-mutations-in-transactions.patch
index c1a5fed2af1f..96a7004572b2 100644
--- a/patches/react-native+0.77.1+020+fix-dropping-mutations-in-transactions.patch
+++ b/patches/react-native+0.78.0+020+fix-dropping-mutations-in-transactions.patch
@@ -1,16 +1,16 @@
 diff --git a/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp b/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp
-index ebe6f1d..0d9897b 100644
+index 6d781dc..21d4845 100644
 --- a/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp
 +++ b/node_modules/react-native/ReactAndroid/src/main/jni/react/fabric/FabricUIManagerBinding.cpp
-@@ -543,7 +543,7 @@ void FabricUIManagerBinding::schedulerDidFinishTransaction(
-             mountingTransaction->getSurfaceId();
-       });
+@@ -511,7 +511,7 @@ void FabricUIManagerBinding::schedulerDidFinishTransaction(
+               mountingTransaction->getSurfaceId();
+         });
  
--  if (pendingTransaction != pendingTransactions_.end()) {
-+  if (pendingTransaction != pendingTransactions_.end() && pendingTransaction->canMergeWith(*mountingTransaction)) {
-     pendingTransaction->mergeWith(std::move(*mountingTransaction));
-   } else {
-     pendingTransactions_.push_back(std::move(*mountingTransaction));
+-    if (pendingTransaction != pendingTransactions_.end()) {
++    if (pendingTransaction != pendingTransactions_.end() && pendingTransaction->canMergeWith(*mountingTransaction)) {
+       pendingTransaction->mergeWith(std::move(*mountingTransaction));
+     } else {
+       pendingTransactions_.push_back(std::move(*mountingTransaction));
 diff --git a/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.cpp b/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.cpp
 index d7dd1bc..d95d779 100644
 --- a/node_modules/react-native/ReactCommon/react/renderer/mounting/MountingTransaction.cpp
diff --git a/patches/react-native+0.77.1+021+fix-crash-when-deleting-expense.patch b/patches/react-native+0.78.0+021+fix-crash-when-deleting-expense.patch
similarity index 100%
rename from patches/react-native+0.77.1+021+fix-crash-when-deleting-expense.patch
rename to patches/react-native+0.78.0+021+fix-crash-when-deleting-expense.patch
diff --git a/patches/react-native+0.77.1+023+dont-enable-height-centering.patch b/patches/react-native+0.78.0+022+dont-enable-height-centering.patch
similarity index 100%
rename from patches/react-native+0.77.1+023+dont-enable-height-centering.patch
rename to patches/react-native+0.78.0+022+dont-enable-height-centering.patch

From f1f4a8e61647591291c8a74c6b4e6fcbe91b6c07 Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Thu, 27 Feb 2025 12:27:24 +0100
Subject: [PATCH 2/8] follow upgrade helper

---
 android/app/build.gradle                         |  4 ++--
 android/gradle/wrapper/gradle-wrapper.properties |  2 +-
 android/gradlew                                  |  4 ++--
 package.json                                     | 12 ++++++------
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/android/app/build.gradle b/android/app/build.gradle
index 49fcdbb4fa68..7982154f306b 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -89,14 +89,14 @@ def enableProguardInReleaseBuilds = true
  * The preferred build flavor of JavaScriptCore (JSC)
  *
  * For example, to use the international variant, you can use:
- * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
+ * `def jscFlavor = 'io.github.react-native-community:jsc-android-intl:2026004.+`
  *
  * The international variant includes ICU i18n library and necessary data
  * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
  * give correct results when using with locales other than en-US. Note that
  * this variant is about 6MiB larger per architecture than default.
  */
-def jscFlavor = 'org.webkit:android-jsc:+'
+def jscFlavor = 'io.github.react-native-community:jsc-android:2026004.+'
 
 android {
     androidResources {
diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties
index 79eb9d003fea..e0fd02028bca 100644
--- a/android/gradle/wrapper/gradle-wrapper.properties
+++ b/android/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
 distributionBase=GRADLE_USER_HOME
 distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-all.zip
 networkTimeout=10000
 validateDistributionUrl=true
 zipStoreBase=GRADLE_USER_HOME
diff --git a/android/gradlew b/android/gradlew
index f5feea6d6b11..786141ff3f67 100755
--- a/android/gradlew
+++ b/android/gradlew
@@ -86,8 +86,8 @@ done
 # shellcheck disable=SC2034
 APP_BASE_NAME=${0##*/}
 # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
-APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s
-' "$PWD" ) || exit
+
+APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
 
 # Use the maximum available, or set MAX_FD != -1 to use that value.
 MAX_FD=maximum
diff --git a/package.json b/package.json
index 44c75a6b2081..273f6f79fa71 100644
--- a/package.json
+++ b/package.json
@@ -141,7 +141,7 @@
     "pako": "^2.1.0",
     "process": "^0.11.10",
     "pusher-js": "8.3.0",
-    "react": "18.3.1",
+    "react": "19.0.0",
     "react-beautiful-dnd": "^13.1.1",
     "react-collapse": "^5.1.0",
     "react-content-loader": "^7.0.0",
@@ -149,7 +149,7 @@
     "react-error-boundary": "^4.0.11",
     "react-fast-pdf": "^1.0.26",
     "react-map-gl": "^7.1.3",
-    "react-native": "0.77.1",
+    "react-native": "0.78.0",
     "react-native-advanced-input-mask": "1.3.1",
     "react-native-android-location-enabler": "^2.0.1",
     "react-native-app-logs": "0.3.1",
@@ -236,8 +236,8 @@
     "@react-native-community/cli-platform-android": "15.0.1",
     "@react-native-community/cli-platform-ios": "15.0.1",
     "@react-native-community/eslint-config": "3.2.0",
-    "@react-native/babel-preset": "0.77.1",
-    "@react-native/metro-config": "0.77.1",
+    "@react-native/babel-preset": "0.78.0",
+    "@react-native/metro-config": "0.78.0",
     "@react-navigation/devtools": "^6.0.10",
     "@storybook/addon-a11y": "^8.1.10",
     "@storybook/addon-essentials": "^8.1.10",
@@ -261,13 +261,13 @@
     "@types/mime-db": "^1.43.5",
     "@types/node": "^20.11.5",
     "@types/pusher-js": "^5.1.0",
-    "@types/react": "^18.2.6",
+    "@types/react": "^19.0.0",
     "@types/react-beautiful-dnd": "^13.1.4",
     "@types/react-collapse": "^5.0.1",
     "@types/react-dom": "^18.2.4",
     "@types/react-is": "^18.3.0",
     "@types/react-native-web": "^0.0.0",
-    "@types/react-test-renderer": "^18.0.0",
+    "@types/react-test-renderer": "19.0.0",
     "@types/semver": "^7.5.4",
     "@types/setimmediate": "^1.0.2",
     "@types/webpack": "^5.28.5",

From 7ef7fccbeb959d98d8e25a37cc635334fc434195 Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Thu, 27 Feb 2025 12:49:17 +0100
Subject: [PATCH 3/8] update gesture handler

---
 ...tch => react-native-gesture-handler+2.24.0+001+fixTests.patch} | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename patches/{react-native-gesture-handler+2.22.0+001+fixTests.patch => react-native-gesture-handler+2.24.0+001+fixTests.patch} (100%)

diff --git a/patches/react-native-gesture-handler+2.22.0+001+fixTests.patch b/patches/react-native-gesture-handler+2.24.0+001+fixTests.patch
similarity index 100%
rename from patches/react-native-gesture-handler+2.22.0+001+fixTests.patch
rename to patches/react-native-gesture-handler+2.24.0+001+fixTests.patch

From 5b8df7d3e930afcd73f9eceea546fa139fdda250 Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Fri, 28 Feb 2025 10:33:02 +0100
Subject: [PATCH 4/8] migrate rest of patches

---
 package-lock.json                             | 739 +++++++++++-------
 package.json                                  |  16 +-
 ... @react-native+gradle-plugin+0.78.0.patch} |   0
 ...lized-lists+0.77.1+001+onStartReched.patch |  32 -
 ...ed-lists+0.78.0+001+osr-improvement.patch} |   0
 ...ch => expo-asset+11.0.4+002+initial.patch} |   0
 6 files changed, 468 insertions(+), 319 deletions(-)
 rename patches/{@react-native+gradle-plugin+0.77.1.patch => @react-native+gradle-plugin+0.78.0.patch} (100%)
 delete mode 100644 patches/@react-native+virtualized-lists+0.77.1+001+onStartReched.patch
 rename patches/{@react-native+virtualized-lists+0.77.1+002+osr-improvement.patch => @react-native+virtualized-lists+0.78.0+001+osr-improvement.patch} (100%)
 rename patches/{expo-asset+11.0.2+002+initial.patch => expo-asset+11.0.4+002+initial.patch} (100%)

diff --git a/package-lock.json b/package-lock.json
index a3d8ddd7fa4e..e573295fee59 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -74,15 +74,15 @@
         "pako": "^2.1.0",
         "process": "^0.11.10",
         "pusher-js": "8.3.0",
-        "react": "18.3.1",
+        "react": "19.0.0",
         "react-beautiful-dnd": "^13.1.1",
         "react-collapse": "^5.1.0",
         "react-content-loader": "^7.0.0",
-        "react-dom": "18.3.1",
+        "react-dom": "19.0.0",
         "react-error-boundary": "^4.0.11",
         "react-fast-pdf": "^1.0.26",
         "react-map-gl": "^7.1.3",
-        "react-native": "0.77.1",
+        "react-native": "0.78.0",
         "react-native-advanced-input-mask": "1.3.1",
         "react-native-android-location-enabler": "^2.0.1",
         "react-native-app-logs": "0.3.1",
@@ -93,7 +93,7 @@
         "react-native-document-picker": "^9.3.1",
         "react-native-draggable-flatlist": "^4.0.1",
         "react-native-fs": "^2.20.0",
-        "react-native-gesture-handler": "2.22.0",
+        "react-native-gesture-handler": "2.24.0",
         "react-native-google-places-autocomplete": "2.5.6",
         "react-native-haptic-feedback": "^2.3.3",
         "react-native-image-picker": "^7.1.2",
@@ -169,8 +169,8 @@
         "@react-native-community/cli-platform-android": "15.0.1",
         "@react-native-community/cli-platform-ios": "15.0.1",
         "@react-native-community/eslint-config": "3.2.0",
-        "@react-native/babel-preset": "0.77.1",
-        "@react-native/metro-config": "0.77.1",
+        "@react-native/babel-preset": "0.78.0",
+        "@react-native/metro-config": "0.78.0",
         "@react-navigation/devtools": "^6.0.10",
         "@storybook/addon-a11y": "^8.1.10",
         "@storybook/addon-essentials": "^8.1.10",
@@ -194,13 +194,13 @@
         "@types/mime-db": "^1.43.5",
         "@types/node": "^20.11.5",
         "@types/pusher-js": "^5.1.0",
-        "@types/react": "^18.2.6",
+        "@types/react": "^19.0.0",
         "@types/react-beautiful-dnd": "^13.1.4",
         "@types/react-collapse": "^5.0.1",
-        "@types/react-dom": "^18.2.4",
+        "@types/react-dom": "^19.0.0",
         "@types/react-is": "^18.3.0",
         "@types/react-native-web": "^0.0.0",
-        "@types/react-test-renderer": "^18.0.0",
+        "@types/react-test-renderer": "19.0.0",
         "@types/semver": "^7.5.4",
         "@types/setimmediate": "^1.0.2",
         "@types/webpack": "^5.28.5",
@@ -209,7 +209,7 @@
         "@typescript-eslint/parser": "^7.13.1",
         "@vercel/ncc": "0.38.1",
         "@vue/preload-webpack-plugin": "^2.0.0",
-        "@welldone-software/why-did-you-render": "7.0.1",
+        "@welldone-software/why-did-you-render": "10.0.1",
         "ajv-cli": "^5.0.0",
         "babel-jest": "29.4.1",
         "babel-loader": "^9.1.3",
@@ -263,13 +263,13 @@
         "react-is": "^18.3.1",
         "react-native-clean-project": "^4.0.0-alpha4.0",
         "react-refresh": "^0.14.2",
-        "react-test-renderer": "18.3.1",
+        "react-test-renderer": "19.0.0",
         "reassure": "^1.0.0-rc.4",
         "semver": "7.5.2",
         "setimmediate": "^1.0.5",
         "shellcheck": "^1.1.0",
         "source-map": "^0.7.4",
-        "storybook": "^8.4.0",
+        "storybook": "^8.6.1",
         "style-loader": "^2.0.0",
         "time-analytics-webpack-plugin": "^0.1.17",
         "ts-jest": "^29.1.2",
@@ -4240,15 +4240,15 @@
       }
     },
     "node_modules/@expo/config": {
-      "version": "10.0.8",
-      "resolved": "https://registry.npmjs.org/@expo/config/-/config-10.0.8.tgz",
-      "integrity": "sha512-RaKwi8e6PbkMilRexdsxObLMdQwxhY6mlgel+l/eW+IfIw8HEydSU0ERlzYUjlGJxHLHUXe4rC2vw8FEvaowyQ==",
+      "version": "10.0.10",
+      "resolved": "https://registry.npmjs.org/@expo/config/-/config-10.0.10.tgz",
+      "integrity": "sha512-wI9/iam3Irk99ADGM/FyD7YrrEibIZXR4huSZiU5zt9o3dASOKhqepiNJex4YPiktLfKhYrpSEJtwno1g0SrgA==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "~7.10.4",
-        "@expo/config-plugins": "~9.0.14",
-        "@expo/config-types": "^52.0.3",
-        "@expo/json-file": "^9.0.1",
+        "@expo/config-plugins": "~9.0.15",
+        "@expo/config-types": "^52.0.4",
+        "@expo/json-file": "^9.0.2",
         "deepmerge": "^4.3.1",
         "getenv": "^1.0.0",
         "glob": "^10.4.2",
@@ -4261,14 +4261,14 @@
       }
     },
     "node_modules/@expo/config-plugins": {
-      "version": "9.0.14",
-      "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.0.14.tgz",
-      "integrity": "sha512-Lx1ebV95rTFKKQmbu4wMPLz65rKn7mqSpfANdCx+KwRxuLY2JQls8V4h3lQjG6dW8NWf9qV5QaEFAgNB6VMyOQ==",
+      "version": "9.0.16",
+      "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.0.16.tgz",
+      "integrity": "sha512-AnJzmFB7ztM0JZBn+Ut6BQYC2WeGDzfIhBZVOIPMQbdBqvwJ7TmFEsGTGSxdwU/VqJaJK2sWxyt1zbWkpIYCEA==",
       "license": "MIT",
       "dependencies": {
-        "@expo/config-types": "^52.0.3",
-        "@expo/json-file": "~9.0.1",
-        "@expo/plist": "^0.2.1",
+        "@expo/config-types": "^52.0.5",
+        "@expo/json-file": "~9.0.2",
+        "@expo/plist": "^0.2.2",
         "@expo/sdk-runtime-versions": "^1.0.0",
         "chalk": "^4.1.2",
         "debug": "^4.3.5",
@@ -4418,9 +4418,9 @@
       }
     },
     "node_modules/@expo/config-types": {
-      "version": "52.0.3",
-      "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-52.0.3.tgz",
-      "integrity": "sha512-muxvuARmbysH5OGaiBRlh1Y6vfdmL56JtpXxB+y2Hfhu0ezG1U4FjZYBIacthckZPvnDCcP3xIu1R+eTo7/QFA==",
+      "version": "52.0.5",
+      "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-52.0.5.tgz",
+      "integrity": "sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==",
       "license": "MIT"
     },
     "node_modules/@expo/config/node_modules/@babel/code-frame": {
@@ -4611,9 +4611,9 @@
       }
     },
     "node_modules/@expo/env": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.4.1.tgz",
-      "integrity": "sha512-oDtbO3i9yXD1nx93acWiPTWGljJ3vABn35x1NAbqtQ2JL6mFOcRcArt1dwi4imZyLnG4VCcjabT9irj+LgYntw==",
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.4.2.tgz",
+      "integrity": "sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A==",
       "license": "MIT",
       "dependencies": {
         "chalk": "^4.0.0",
@@ -4803,9 +4803,9 @@
       }
     },
     "node_modules/@expo/image-utils": {
-      "version": "0.6.4",
-      "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.6.4.tgz",
-      "integrity": "sha512-L++1PBzSvf5iYc6UHJ8Db8GcYNkfLDw+a+zqEFBQ3xqRXP/muxb/O7wuiMFlXrj/cfkx4e0U+z1a4ceV0A7S7Q==",
+      "version": "0.6.5",
+      "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.6.5.tgz",
+      "integrity": "sha512-RsS/1CwJYzccvlprYktD42KjyfWZECH6PPIEowvoSmXfGLfdViwcUEI4RvBfKX5Jli6P67H+6YmHvPTbGOboew==",
       "license": "MIT",
       "dependencies": {
         "@expo/spawn-async": "^1.7.2",
@@ -4927,9 +4927,9 @@
       }
     },
     "node_modules/@expo/json-file": {
-      "version": "9.0.1",
-      "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.0.1.tgz",
-      "integrity": "sha512-ZVPhbbEBEwafPCJ0+kI25O2Iivt3XKHEKAADCml1q2cmOIbQnKgLyn8DpOJXqWEyRQr/VWS+hflBh8DU2YFSqg==",
+      "version": "9.0.2",
+      "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.0.2.tgz",
+      "integrity": "sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "~7.10.4",
@@ -5453,9 +5453,9 @@
       }
     },
     "node_modules/@expo/plist": {
-      "version": "0.2.1",
-      "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.2.1.tgz",
-      "integrity": "sha512-9TaXGuNxa0LQwHQn4rYiU6YaERv6dPnQgsdKWq2rKKTr6LWOtGNQCi/yOk/HBLeZSxBm59APT5/6x60uRvr0Mg==",
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.2.2.tgz",
+      "integrity": "sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==",
       "license": "MIT",
       "dependencies": {
         "@xmldom/xmldom": "~0.7.7",
@@ -7155,6 +7155,8 @@
     },
     "node_modules/@jsamr/react-native-li": {
       "version": "2.3.1",
+      "resolved": "https://registry.npmjs.org/@jsamr/react-native-li/-/react-native-li-2.3.1.tgz",
+      "integrity": "sha512-Qbo4NEj48SQ4k8FZJHFE2fgZDKTWaUGmVxcIQh3msg5JezLdTMMHuRRDYctfdHI6L0FZGObmEv3haWbIvmol8w==",
       "license": "MIT",
       "peerDependencies": {
         "@jsamr/counter-style": "^1.0.0 || ^2.0.0",
@@ -7505,6 +7507,8 @@
     },
     "node_modules/@native-html/css-processor": {
       "version": "1.11.0",
+      "resolved": "https://registry.npmjs.org/@native-html/css-processor/-/css-processor-1.11.0.tgz",
+      "integrity": "sha512-NnhBEbJX5M2gBGltPKOetiLlKhNf3OHdRafc8//e2ZQxXN8JaSW/Hy8cm94pnIckQxwaMKxrtaNT3x4ZcffoNQ==",
       "license": "MIT",
       "dependencies": {
         "css-to-react-native": "^3.0.0",
@@ -7515,6 +7519,32 @@
         "@types/react-native": "*"
       }
     },
+    "node_modules/@native-html/transient-render-engine": {
+      "version": "11.2.2",
+      "resolved": "https://registry.npmjs.org/@native-html/transient-render-engine/-/transient-render-engine-11.2.2.tgz",
+      "integrity": "sha512-z0LgQStGJf4gCIeuD8oJiPbk+sUEQ9FOzHlDWwK+uVam+1Q5mmh6PqblCdTCP3IRGBtPLzMM0VZ9njm1TEvb8Q==",
+      "license": "MIT",
+      "dependencies": {
+        "@native-html/css-processor": "1.11.0",
+        "@types/ramda": "^0.27.44",
+        "csstype": "^3.0.9",
+        "domelementtype": "^2.2.0",
+        "domhandler": "^4.2.2",
+        "domutils": "^2.8.0",
+        "htmlparser2": "^7.1.2",
+        "ramda": "^0.27.1"
+      },
+      "peerDependencies": {
+        "@types/react-native": "*",
+        "react-native": "^*"
+      }
+    },
+    "node_modules/@native-html/transient-render-engine/node_modules/ramda": {
+      "version": "0.27.2",
+      "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz",
+      "integrity": "sha512-SbiLPU40JuJniHexQSAgad32hfwd+DRUdwF2PlVuI5RZD0/vahUco7R8vD86J/tcEKKF9vZrUVwgtmGCqlCKyA==",
+      "license": "MIT"
+    },
     "node_modules/@ngneat/falso": {
       "version": "7.1.1",
       "dev": true,
@@ -8072,6 +8102,32 @@
         }
       }
     },
+    "node_modules/@radix-ui/react-dialog/node_modules/react-remove-scroll": {
+      "version": "2.5.7",
+      "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz",
+      "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "react-remove-scroll-bar": "^2.3.4",
+        "react-style-singleton": "^2.2.1",
+        "tslib": "^2.1.0",
+        "use-callback-ref": "^1.3.0",
+        "use-sidecar": "^1.1.2"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "peerDependencies": {
+        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@radix-ui/react-dismissable-layer": {
       "version": "1.1.0",
       "dev": true,
@@ -10164,22 +10220,22 @@
       }
     },
     "node_modules/@react-native/assets-registry": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.77.1.tgz",
-      "integrity": "sha512-bAQHOgqGZnF6xdYE9sJrbZ7F65Z25yLi9yWps8vOByKtj0b+f3FJhsU3Mcfy1uWvelpNEGebOLQf+WEPiwGrkw==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.78.0.tgz",
+      "integrity": "sha512-PPHlTRuP9litTYkbFNkwveQFto3I94QRWPBBARU0cH/4ks4EkfCfb/Pdb3AHgtJi58QthSHKFvKTQnAWyHPs7w==",
       "license": "MIT",
       "engines": {
         "node": ">=18"
       }
     },
     "node_modules/@react-native/babel-plugin-codegen": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.77.1.tgz",
-      "integrity": "sha512-NmmAJHMTtA6gjHRE1FvO+Jvbp0ekonANcK2IYOyqK6nLj7hhtdiMlZaUDsRi17SGHYY4X4hj6UH2nm6LfD1RLg==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.78.0.tgz",
+      "integrity": "sha512-+Sy9Uine0QAbQRxMl6kBlkzKW0qHQk8hghCoKswRWt1ZfxaMA3rezobD5mtSwt/Yhadds9cGbMFWfFJM3Tynsg==",
       "license": "MIT",
       "dependencies": {
         "@babel/traverse": "^7.25.3",
-        "@react-native/codegen": "0.77.1"
+        "@react-native/codegen": "0.78.0"
       },
       "engines": {
         "node": ">=18"
@@ -10204,9 +10260,9 @@
       }
     },
     "node_modules/@react-native/babel-preset": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.77.1.tgz",
-      "integrity": "sha512-7eTOcMaZwvPllzZhT5fjcDNysjP54GtEbdXVxO2u5sPXWYriPL3UKuDIzIdhjxil8GtZs6+UvLNoKTateFt19Q==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.78.0.tgz",
+      "integrity": "sha512-q44ZbR0JXdPvNrjNw75VmiVXXoJhZIx8dTUBVgnZx/UHBQuhPu0e8pAuo56E2mZVkF7FK0s087/Zji8n5OSxbQ==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.25.2",
@@ -10250,7 +10306,7 @@
         "@babel/plugin-transform-typescript": "^7.25.2",
         "@babel/plugin-transform-unicode-regex": "^7.24.7",
         "@babel/template": "^7.25.0",
-        "@react-native/babel-plugin-codegen": "0.77.1",
+        "@react-native/babel-plugin-codegen": "0.78.0",
         "babel-plugin-syntax-hermes-parser": "0.25.1",
         "babel-plugin-transform-flow-enums": "^0.0.2",
         "react-refresh": "^0.14.0"
@@ -10263,9 +10319,9 @@
       }
     },
     "node_modules/@react-native/codegen": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.77.1.tgz",
-      "integrity": "sha512-cCUbkUewMjiK94Z2+Smh+qHkZrBSoXelOMruZGZe7TTCD6ygl6ho7fkfNuKrB2yFzSAjlUfUyLfaumVJGKslWw==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.78.0.tgz",
+      "integrity": "sha512-8iVT2VYhkalLFUWoQRGSluZZHEG93StfwQGwQ+wk1vOUlOfoT/Xqglt6DvGXIyM9gaMCr6fJBFQVrU+FrXEFYA==",
       "license": "MIT",
       "dependencies": {
         "@babel/parser": "^7.25.3",
@@ -10284,13 +10340,13 @@
       }
     },
     "node_modules/@react-native/community-cli-plugin": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.77.1.tgz",
-      "integrity": "sha512-w2H9ePpUq7eqqtzSUSaYqbNNZoU6pbBONjTIWdztp0lFdnUaLoLUMddt9XhtKFUlnNaSmfetjJSSrsi3JVbO6w==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.78.0.tgz",
+      "integrity": "sha512-LpfEU+F1hZGcxIf07aBrjlImA0hh8v76V4wTJOgxxqGDUjjQ/X6h9V+bMXne60G9gwccTtvs1G0xiKWNUPI0VQ==",
       "license": "MIT",
       "dependencies": {
-        "@react-native/dev-middleware": "0.77.1",
-        "@react-native/metro-babel-transformer": "0.77.1",
+        "@react-native/dev-middleware": "0.78.0",
+        "@react-native/metro-babel-transformer": "0.78.0",
         "chalk": "^4.0.0",
         "debug": "^2.2.0",
         "invariant": "^2.2.4",
@@ -10313,22 +10369,22 @@
       }
     },
     "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.77.1.tgz",
-      "integrity": "sha512-wX/f4JRyAc0PqcW3OBQAAw35k4KaTmDKe+/AJuSQLbqDH746awkFprmXRRTAfRc88q++4e6Db4gyK0GVdWNIpQ==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.78.0.tgz",
+      "integrity": "sha512-KQYD9QlxES/VdmXh9EEvtZCJK1KAemLlszQq4dpLU1stnue5N8dnCY6A7PpStMf5UtAMk7tiniQhaicw0uVHgQ==",
       "license": "BSD-3-Clause",
       "engines": {
         "node": ">=18"
       }
     },
     "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.77.1.tgz",
-      "integrity": "sha512-DU6EEac57ch5XKflUB6eXepelHZFaKMJvmaZ24kt28AnvBp8rVrdaORe09pThuZdIF2m+j2BXsipU5zCd8BbZw==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.78.0.tgz",
+      "integrity": "sha512-zEafAZdOz4s37Jh5Xcv4hJE5qZ6uNxgrTLcpjDOJnQG6dO34/BoZeXvDrjomQFNn6ogdysR51mKJStaQ3ixp5A==",
       "license": "MIT",
       "dependencies": {
         "@isaacs/ttlcache": "^1.4.1",
-        "@react-native/debugger-frontend": "0.77.1",
+        "@react-native/debugger-frontend": "0.78.0",
         "chrome-launcher": "^0.15.2",
         "chromium-edge-launcher": "^0.2.0",
         "connect": "^3.6.5",
@@ -10500,31 +10556,31 @@
       "license": "MIT"
     },
     "node_modules/@react-native/gradle-plugin": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.77.1.tgz",
-      "integrity": "sha512-QNuNMWH0CeC+PYrAXiuUIBbwdeGJ3fZpQM03vdG3tKdk66cVSFvxLh60P0w5kRHN7UFBg2FAcYx5eQ/IdcAntg==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.78.0.tgz",
+      "integrity": "sha512-WvwgfmVs1QfFl1FOL514kz2Fs5Nkg2BGgpE8V0ild8b/UT6jCD8qh2dTI5kL0xdT0d2Xd2BxfuFN0xCLkMC+SA==",
       "license": "MIT",
       "engines": {
         "node": ">=18"
       }
     },
     "node_modules/@react-native/js-polyfills": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.77.1.tgz",
-      "integrity": "sha512-6qd3kNr5R+JF+HzgM/fNSLEM1kw4RoOoaJV6XichvlOaCRmWS22X5TehVqiZOP95AAxtULRIifRs1cK5t9+JSg==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.78.0.tgz",
+      "integrity": "sha512-YZ9XtS77s/df7548B6dszX89ReehnA7hiab/axc30j/Mgk7Wv2woOjBKnAA4+rZ0ITLtxNwyJIMaRAc9kGznXw==",
       "license": "MIT",
       "engines": {
         "node": ">=18"
       }
     },
     "node_modules/@react-native/metro-babel-transformer": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.77.1.tgz",
-      "integrity": "sha512-M4EzWDmUpIZhwJojEekbK7DzK2fYukU/TRIVZEmnbxVyWVwt/A1urbE2iV+s9E4E99pN+JdVpnBgu4LRCyPzJQ==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.78.0.tgz",
+      "integrity": "sha512-Hy/dl+zytLCRD9dp32ukcRS1Bn0gZH0h0i3AbriS6OGYgUgjAUFhXOKzZ15/G1SEq2sng91MNo/hMvo4uXoc5A==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.25.2",
-        "@react-native/babel-preset": "0.77.1",
+        "@react-native/babel-preset": "0.78.0",
         "hermes-parser": "0.25.1",
         "nullthrows": "^1.1.1"
       },
@@ -10536,14 +10592,14 @@
       }
     },
     "node_modules/@react-native/metro-config": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.77.1.tgz",
-      "integrity": "sha512-hUtUPyTpAejRCwJAhAJ+WJctTkpzfzc4pBwxt0ax5JbR1UZkK7mME/8gHoO8BaT8+ETaCdUlk12/Njf0MQhZow==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.78.0.tgz",
+      "integrity": "sha512-fPdIPMXTIZfpA4zLuTdeEQYAtNj8pGXnXbil9bfoB5PPf7seacreSxqxqwihRSRafl29j6kXSBgS7TskPBhGow==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@react-native/js-polyfills": "0.77.1",
-        "@react-native/metro-babel-transformer": "0.77.1",
+        "@react-native/js-polyfills": "0.78.0",
+        "@react-native/metro-babel-transformer": "0.78.0",
         "metro-config": "^0.81.0",
         "metro-runtime": "^0.81.0"
       },
@@ -10561,9 +10617,9 @@
       "integrity": "sha512-pcE4i0X7y3hsAE0SpIl7t6dUc0B0NZLd1yv7ssm4FrLhWG+CGyIq4eFDXpmPU1XHmL5PPySxTAjEMiwv6tAmOw=="
     },
     "node_modules/@react-native/virtualized-lists": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.77.1.tgz",
-      "integrity": "sha512-S25lyHO9owc+uaV2tcd9CMTVJs7PUZX0UGCG60LoLOBHW3krVq0peI34Gm6HEhkeKqb4YvZXqI/ehoNPUm1/ww==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.78.0.tgz",
+      "integrity": "sha512-ibETs3AwpkkRcORRANvZeEFjzvN41W02X882sBzoxC5XdHiZ2DucXo4fjKF7i86MhYCFLfNSIYbwupx1D1iFmg==",
       "license": "MIT",
       "dependencies": {
         "invariant": "^2.2.4",
@@ -10573,7 +10629,7 @@
         "node": ">=18"
       },
       "peerDependencies": {
-        "@types/react": "^18.2.6",
+        "@types/react": "^19.0.0",
         "react": "*",
         "react-native": "*"
       },
@@ -10619,6 +10675,7 @@
       "version": "1.3.31",
       "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-1.3.31.tgz",
       "integrity": "sha512-bUzP4Awlljx5RKEExw8WYtif8EuQni2glDaieYROKTnaxsu9kEIA515sXQgUDZU4Ob12VoL7+z70uO3qrlfXcQ==",
+      "license": "MIT",
       "peerDependencies": {
         "@react-navigation/native": "^6.0.0",
         "react": "*",
@@ -10706,6 +10763,25 @@
         "react-dom": "^18.2.0"
       }
     },
+    "node_modules/@react-ng/bounds-observer/node_modules/@types/react": {
+      "version": "18.3.18",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
+      "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
+      "license": "MIT",
+      "dependencies": {
+        "@types/prop-types": "*",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@react-ng/bounds-observer/node_modules/@types/react-dom": {
+      "version": "18.3.5",
+      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz",
+      "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==",
+      "license": "MIT",
+      "peerDependencies": {
+        "@types/react": "^18.0.0"
+      }
+    },
     "node_modules/@rgba-image/common": {
       "version": "0.1.13",
       "resolved": "https://registry.npmjs.org/@rgba-image/common/-/common-0.1.13.tgz",
@@ -11107,6 +11183,17 @@
         "url": "https://opencollective.com/storybook"
       }
     },
+    "node_modules/@storybook/addon-docs/node_modules/@types/react": {
+      "version": "18.3.18",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz",
+      "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@types/prop-types": "*",
+        "csstype": "^3.0.2"
+      }
+    },
     "node_modules/@storybook/addon-docs/node_modules/fs-extra": {
       "version": "11.2.0",
       "dev": true,
@@ -12645,6 +12732,33 @@
         "url": "https://github.com/sponsors/sindresorhus"
       }
     },
+    "node_modules/@storybook/cli/node_modules/storybook": {
+      "version": "8.4.0",
+      "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.0.tgz",
+      "integrity": "sha512-hLfXPtqfoQUMKVortxXdnQoUwDwtH85eSj9LbqGT/z1f/gLLYGNG3Mv3QbsRjHXhn+EfYffh7wuLpAn+Cicijw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/core": "8.4.0"
+      },
+      "bin": {
+        "getstorybook": "bin/index.cjs",
+        "sb": "bin/index.cjs",
+        "storybook": "bin/index.cjs"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "prettier": "^2 || ^3"
+      },
+      "peerDependenciesMeta": {
+        "prettier": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/@storybook/cli/node_modules/supports-color": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -14633,7 +14747,9 @@
       }
     },
     "node_modules/@types/prop-types": {
-      "version": "15.7.5",
+      "version": "15.7.14",
+      "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz",
+      "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==",
       "license": "MIT"
     },
     "node_modules/@types/pusher-js": {
@@ -14662,11 +14778,11 @@
       "license": "MIT"
     },
     "node_modules/@types/react": {
-      "version": "18.2.45",
+      "version": "19.0.10",
+      "resolved": "https://registry.npmjs.org/@types/react/-/react-19.0.10.tgz",
+      "integrity": "sha512-JuRQ9KXLEjaUNjTWpzuR231Z2WpIwczOkBEIvbHNCzQefFIT0L8IqE6NV6ULLyC1SI/i234JnDoMkfg+RjQj2g==",
       "license": "MIT",
       "dependencies": {
-        "@types/prop-types": "*",
-        "@types/scheduler": "*",
         "csstype": "^3.0.2"
       }
     },
@@ -14687,10 +14803,12 @@
       }
     },
     "node_modules/@types/react-dom": {
-      "version": "18.2.4",
+      "version": "19.0.4",
+      "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.0.4.tgz",
+      "integrity": "sha512-4fSQ8vWFkg+TGhePfUzVmat3eC14TXYSsiiDSLI0dVLsrm9gZFABjPy/Qu6TKgl1tq1Bu1yDsuQgY3A3DOjCcg==",
       "license": "MIT",
-      "dependencies": {
-        "@types/react": "*"
+      "peerDependencies": {
+        "@types/react": "^19.0.0"
       }
     },
     "node_modules/@types/react-is": {
@@ -14702,12 +14820,14 @@
       }
     },
     "node_modules/@types/react-native": {
-      "version": "0.73.0",
-      "deprecated": "This is a stub types definition. react-native provides its own type definitions, so you do not need this installed.",
+      "version": "0.72.8",
+      "resolved": "https://registry.npmjs.org/@types/react-native/-/react-native-0.72.8.tgz",
+      "integrity": "sha512-St6xA7+EoHN5mEYfdWnfYt0e8u6k2FR0P9s2arYgakQGFgU1f9FlPrIEcj0X24pLCF5c5i3WVuLCUdiCYHmOoA==",
       "license": "MIT",
       "peer": true,
       "dependencies": {
-        "react-native": "*"
+        "@react-native/virtualized-lists": "^0.72.4",
+        "@types/react": "*"
       }
     },
     "node_modules/@types/react-native-web": {
@@ -14720,6 +14840,20 @@
         "react-native": "*"
       }
     },
+    "node_modules/@types/react-native/node_modules/@react-native/virtualized-lists": {
+      "version": "0.72.8",
+      "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz",
+      "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==",
+      "license": "MIT",
+      "peer": true,
+      "dependencies": {
+        "invariant": "^2.2.4",
+        "nullthrows": "^1.1.1"
+      },
+      "peerDependencies": {
+        "react-native": "*"
+      }
+    },
     "node_modules/@types/react-redux": {
       "version": "7.1.27",
       "license": "MIT",
@@ -14731,7 +14865,9 @@
       }
     },
     "node_modules/@types/react-test-renderer": {
-      "version": "18.0.0",
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.0.0.tgz",
+      "integrity": "sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -14758,10 +14894,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/@types/scheduler": {
-      "version": "0.16.2",
-      "license": "MIT"
-    },
     "node_modules/@types/semver": {
       "version": "7.5.4",
       "dev": true,
@@ -15658,14 +15790,16 @@
       }
     },
     "node_modules/@welldone-software/why-did-you-render": {
-      "version": "7.0.1",
+      "version": "10.0.1",
+      "resolved": "https://registry.npmjs.org/@welldone-software/why-did-you-render/-/why-did-you-render-10.0.1.tgz",
+      "integrity": "sha512-tMgGkt30iVYeLMUKExNmtm019QgyjLtA7lwB0QAizYNEuihlCG2eoAWBBaz/bDeI7LeqAJ9msC6hY3vX+JB97g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "lodash": "^4"
       },
       "peerDependencies": {
-        "react": "^16 || ^17 || ^18"
+        "react": "^19"
       }
     },
     "node_modules/@xmldom/xmldom": {
@@ -15926,6 +16060,8 @@
     },
     "node_modules/anser": {
       "version": "1.4.10",
+      "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz",
+      "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==",
       "license": "MIT"
     },
     "node_modules/ansi-escapes": {
@@ -18329,6 +18465,8 @@
     },
     "node_modules/camelize": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/camelize/-/camelize-1.0.1.tgz",
+      "integrity": "sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==",
       "license": "MIT",
       "funding": {
         "url": "https://github.com/sponsors/ljharb"
@@ -19507,6 +19645,33 @@
         "url": "https://github.com/prettier/prettier?sponsor=1"
       }
     },
+    "node_modules/create-storybook/node_modules/storybook": {
+      "version": "8.4.0",
+      "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.0.tgz",
+      "integrity": "sha512-hLfXPtqfoQUMKVortxXdnQoUwDwtH85eSj9LbqGT/z1f/gLLYGNG3Mv3QbsRjHXhn+EfYffh7wuLpAn+Cicijw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/core": "8.4.0"
+      },
+      "bin": {
+        "getstorybook": "bin/index.cjs",
+        "sb": "bin/index.cjs",
+        "storybook": "bin/index.cjs"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "prettier": "^2 || ^3"
+      },
+      "peerDependenciesMeta": {
+        "prettier": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/cross-fetch": {
       "version": "3.1.5",
       "license": "MIT",
@@ -19559,6 +19724,8 @@
     },
     "node_modules/css-color-keywords": {
       "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz",
+      "integrity": "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==",
       "license": "ISC",
       "engines": {
         "node": ">=4"
@@ -19732,7 +19899,9 @@
       }
     },
     "node_modules/css-to-react-native": {
-      "version": "3.0.0",
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz",
+      "integrity": "sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==",
       "license": "MIT",
       "dependencies": {
         "camelize": "^1.0.0",
@@ -20385,6 +20554,8 @@
     },
     "node_modules/detect-node-es": {
       "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz",
+      "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==",
       "dev": true,
       "license": "MIT"
     },
@@ -22764,45 +22935,6 @@
         "ua-parser-js": "^1.0.38"
       }
     },
-    "node_modules/expensify-common/node_modules/react": {
-      "version": "16.12.0",
-      "resolved": "https://registry.npmjs.org/react/-/react-16.12.0.tgz",
-      "integrity": "sha512-fglqy3k5E+81pA8s+7K0/T3DBCF0ZDOher1elBFzF7O6arXJgzyu/FW+COxFvAWXJoJN9KIZbT2LXlukwphYTA==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1",
-        "prop-types": "^15.6.2"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/expensify-common/node_modules/react-dom": {
-      "version": "16.12.0",
-      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.12.0.tgz",
-      "integrity": "sha512-LMxFfAGrcS3kETtQaCkTKjMiifahaMySFDn71fZUNpPHZQEzmk/GiAeIT8JSOrHB23fnuCOMruL2a8NYlw+8Gw==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1",
-        "prop-types": "^15.6.2",
-        "scheduler": "^0.18.0"
-      },
-      "peerDependencies": {
-        "react": "^16.0.0"
-      }
-    },
-    "node_modules/expensify-common/node_modules/scheduler": {
-      "version": "0.18.0",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.18.0.tgz",
-      "integrity": "sha512-agTSHR1Nbfi6ulI0kYNK0203joW2Y5W4po4l+v03tOoiJKpTBbxpNhWDvqc/4IcOw+KLmSiQLTasZ4cab2/UWQ==",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0",
-        "object-assign": "^4.1.1"
-      }
-    },
     "node_modules/expensify-common/node_modules/semver": {
       "version": "7.6.3",
       "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
@@ -22889,13 +23021,13 @@
       }
     },
     "node_modules/expo-asset": {
-      "version": "11.0.2",
-      "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.2.tgz",
-      "integrity": "sha512-We3Td5WsNsNQyXoheLnuwic6JCOt/pqXqIIyWaZ3z/PeHrA+SwoQdI18MjDhkudLK08tbIVyDSUW8IJHXa04eg==",
+      "version": "11.0.4",
+      "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.4.tgz",
+      "integrity": "sha512-CdIywU0HrR3wsW5c3n0cT3jW9hccZdnqGsRqY+EY/RWzJbDXtDfAQVEiFHO3mDK7oveUwrP2jK/6ZRNek41/sg==",
       "license": "MIT",
       "dependencies": {
-        "@expo/image-utils": "^0.6.4",
-        "expo-constants": "~17.0.4",
+        "@expo/image-utils": "^0.6.5",
+        "expo-constants": "~17.0.7",
         "invariant": "^2.2.4",
         "md5-file": "^3.2.3"
       },
@@ -22923,13 +23055,13 @@
       }
     },
     "node_modules/expo-constants": {
-      "version": "17.0.5",
-      "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.0.5.tgz",
-      "integrity": "sha512-6SHXh32jCB+vrp2TRDNkoGoM421eOBPZIXX9ixI0hKKz71tIjD+LMr/P+rGUd/ks312MP3WK3j5vcYYPkCD8tQ==",
+      "version": "17.0.7",
+      "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.0.7.tgz",
+      "integrity": "sha512-sp5NUiV17I3JblVPIBDgoxgt7JIZS30vcyydCYHxsEoo+aKaeRYXxGYilCvb9lgI6BBwSL24sQ6ZjWsCWoF1VA==",
       "license": "MIT",
       "dependencies": {
-        "@expo/config": "~10.0.8",
-        "@expo/env": "~0.4.1"
+        "@expo/config": "~10.0.10",
+        "@expo/env": "~0.4.2"
       },
       "peerDependencies": {
         "expo": "*",
@@ -22937,9 +23069,9 @@
       }
     },
     "node_modules/expo-file-system": {
-      "version": "18.0.7",
-      "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.7.tgz",
-      "integrity": "sha512-6PpbQfogMXdzOsJzlJayy5qf40IfIHhudtAOzr32RlRYL4Hkmk3YcR9jG0PWQ0rklJfAhbAdP63yOcN+wDgzaA==",
+      "version": "18.0.11",
+      "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.11.tgz",
+      "integrity": "sha512-yDwYfEzWgPXsBZHJW2RJ8Q66ceiFN9Wa5D20pp3fjXVkzPBDwxnYwiPWk4pVmCa5g4X5KYMoMne1pUrsL4OEpg==",
       "license": "MIT",
       "dependencies": {
         "web-streams-polyfill": "^3.3.2"
@@ -22950,9 +23082,9 @@
       }
     },
     "node_modules/expo-font": {
-      "version": "13.0.3",
-      "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.0.3.tgz",
-      "integrity": "sha512-9IdYz+A+b3KvuCYP7DUUXF4VMZjPU+IsvAnLSVJ2TfP6zUD2JjZFx3jeo/cxWRkYk/aLj5+53Te7elTAScNl4Q==",
+      "version": "13.0.4",
+      "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.0.4.tgz",
+      "integrity": "sha512-eAP5hyBgC8gafFtprsz0HMaB795qZfgJWqTmU0NfbSin1wUuVySFMEPMOrTkTgmazU73v4Cb4x7p86jY1XXYUw==",
       "license": "MIT",
       "dependencies": {
         "fontfaceobserver": "^2.1.0"
@@ -22983,6 +23115,7 @@
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-5.0.0.tgz",
       "integrity": "sha512-Eg+5FHtyzv3Jjw9dHwu2pWy4xjf8fu3V0Asyy42kO+t/FbvW/vjUixpTjPtgKQLQh+2/9Nk4JjFDV6FwCnF2ZA==",
+      "license": "MIT",
       "peerDependencies": {
         "expo": "*"
       }
@@ -23000,9 +23133,9 @@
       }
     },
     "node_modules/expo-keep-awake": {
-      "version": "14.0.2",
-      "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.0.2.tgz",
-      "integrity": "sha512-71XAMnoWjKZrN8J7Q3+u0l9Ytp4OfhNAYz8BCWF1/9aFUw09J3I7Z5DuI3MUsVMa/KWi+XhG+eDUFP8cVA19Uw==",
+      "version": "14.0.3",
+      "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.0.3.tgz",
+      "integrity": "sha512-6Jh94G6NvTZfuLnm2vwIpKe3GdOiVBuISl7FI8GqN0/9UOg9E0WXXp5cDcfAG8bn80RfgLJS8P7EPUGTZyOvhg==",
       "license": "MIT",
       "peerDependencies": {
         "expo": "*",
@@ -24231,6 +24364,8 @@
     },
     "node_modules/get-nonce": {
       "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz",
+      "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -27088,6 +27223,31 @@
         "react-native": "*"
       }
     },
+    "node_modules/jest-expo/node_modules/react-test-renderer": {
+      "version": "18.3.1",
+      "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.3.1.tgz",
+      "integrity": "sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "react-is": "^18.3.1",
+        "react-shallow-renderer": "^16.15.0",
+        "scheduler": "^0.23.2"
+      },
+      "peerDependencies": {
+        "react": "^18.3.1"
+      }
+    },
+    "node_modules/jest-expo/node_modules/scheduler": {
+      "version": "0.23.2",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
+      "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "loose-envify": "^1.1.0"
+      }
+    },
     "node_modules/jest-get-type": {
       "version": "29.6.3",
       "license": "MIT",
@@ -28369,10 +28529,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/jsc-android": {
-      "version": "250231.0.0",
-      "license": "BSD-2-Clause"
-    },
     "node_modules/jsc-safe-url": {
       "version": "0.2.4",
       "license": "0BSD"
@@ -32868,11 +33024,10 @@
       }
     },
     "node_modules/react": {
-      "version": "18.3.1",
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz",
+      "integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==",
       "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      },
       "engines": {
         "node": ">=0.10.0"
       }
@@ -33016,9 +33171,9 @@
       }
     },
     "node_modules/react-devtools-core": {
-      "version": "6.0.1",
-      "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.0.1.tgz",
-      "integrity": "sha512-II3iSJhnR5nAscYDa9FCgPLq8mO5aEx/EKKtdXYTDnvdFEa3K7gs3jn1SKRXwQf9maOmIilmjnnx7Qy+3annPA==",
+      "version": "6.1.1",
+      "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-6.1.1.tgz",
+      "integrity": "sha512-TFo1MEnkqE6hzAbaztnyR5uLTMoz6wnEWwWBsCUzNt+sVXJycuRJdDqvL078M4/h65BI/YO5XWTaxZDWVsW0fw==",
       "license": "MIT",
       "dependencies": {
         "shell-quote": "^1.6.1",
@@ -33081,21 +33236,15 @@
       }
     },
     "node_modules/react-dom": {
-      "version": "18.3.1",
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.0.0.tgz",
+      "integrity": "sha512-4GV5sHFG0e/0AD4X+ySy6UJd3jVl1iNsNHdpad0qhABJ11twS3TTBnseqsKurKcsNqCEFeGL3uLpVChpIO3QfQ==",
       "license": "MIT",
       "dependencies": {
-        "loose-envify": "^1.1.0",
-        "scheduler": "^0.23.2"
+        "scheduler": "^0.25.0"
       },
       "peerDependencies": {
-        "react": "^18.3.1"
-      }
-    },
-    "node_modules/react-dom/node_modules/scheduler": {
-      "version": "0.23.2",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
+        "react": "^19.0.0"
       }
     },
     "node_modules/react-error-boundary": {
@@ -33165,19 +33314,19 @@
       }
     },
     "node_modules/react-native": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.77.1.tgz",
-      "integrity": "sha512-g2OMtsQqhgOuC4BqFyrcv0UsmbFcLOwfVRl/XAEHZK0p8paJubGIF3rAHN4Qh0GqGLWZGt7gJ7ha2yOmCFORoA==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.78.0.tgz",
+      "integrity": "sha512-3PO4tNvCN6BdAKcoY70v1sLfxYCmDR4KS1VTY+kIBKy5Qznp27QNxL7zBQjvS6Jp91gc8N82QbysQrfBlwg9gQ==",
       "license": "MIT",
       "dependencies": {
         "@jest/create-cache-key-function": "^29.6.3",
-        "@react-native/assets-registry": "0.77.1",
-        "@react-native/codegen": "0.77.1",
-        "@react-native/community-cli-plugin": "0.77.1",
-        "@react-native/gradle-plugin": "0.77.1",
-        "@react-native/js-polyfills": "0.77.1",
-        "@react-native/normalize-colors": "0.77.1",
-        "@react-native/virtualized-lists": "0.77.1",
+        "@react-native/assets-registry": "0.78.0",
+        "@react-native/codegen": "0.78.0",
+        "@react-native/community-cli-plugin": "0.78.0",
+        "@react-native/gradle-plugin": "0.78.0",
+        "@react-native/js-polyfills": "0.78.0",
+        "@react-native/normalize-colors": "0.78.0",
+        "@react-native/virtualized-lists": "0.78.0",
         "abort-controller": "^3.0.0",
         "anser": "^1.4.9",
         "ansi-regex": "^5.0.0",
@@ -33191,7 +33340,6 @@
         "glob": "^7.1.1",
         "invariant": "^2.2.4",
         "jest-environment-node": "^29.6.3",
-        "jsc-android": "^250231.0.0",
         "memoize-one": "^5.0.0",
         "metro-runtime": "^0.81.0",
         "metro-source-map": "^0.81.0",
@@ -33201,7 +33349,7 @@
         "react-devtools-core": "^6.0.1",
         "react-refresh": "^0.14.0",
         "regenerator-runtime": "^0.13.2",
-        "scheduler": "0.24.0-canary-efb381bbf-20230505",
+        "scheduler": "0.25.0",
         "semver": "^7.1.3",
         "stacktrace-parser": "^0.1.10",
         "whatwg-fetch": "^3.0.0",
@@ -33215,8 +33363,8 @@
         "node": ">=18"
       },
       "peerDependencies": {
-        "@types/react": "^18.2.6",
-        "react": "^18.2.0"
+        "@types/react": "^19.0.0",
+        "react": "^19.0.0"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -33382,9 +33530,9 @@
       }
     },
     "node_modules/react-native-gesture-handler": {
-      "version": "2.22.0",
-      "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.22.0.tgz",
-      "integrity": "sha512-m5Ps1cOSxSiMP4re+XsbeWcC9DNJuIEjMSmtUxBdyfYEJtdu5iAAiX7KlHHrf2mnK4I/56Ncy4PvPKWBwSpWpQ==",
+      "version": "2.24.0",
+      "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.24.0.tgz",
+      "integrity": "sha512-ZdWyOd1C8axKJHIfYxjJKCcxjWEpUtUWgTOVY2wynbiveSQDm8X/PDyAKXSer/GOtIpjudUbACOndZXCN3vHsw==",
       "license": "MIT",
       "dependencies": {
         "@egjs/hammerjs": "^2.0.17",
@@ -33739,24 +33887,6 @@
         "react-native": "*"
       }
     },
-    "node_modules/react-native-render-html/node_modules/@native-html/transient-render-engine": {
-      "version": "11.2.2",
-      "license": "MIT",
-      "dependencies": {
-        "@native-html/css-processor": "1.11.0",
-        "@types/ramda": "^0.27.44",
-        "csstype": "^3.0.9",
-        "domelementtype": "^2.2.0",
-        "domhandler": "^4.2.2",
-        "domutils": "^2.8.0",
-        "htmlparser2": "^7.1.2",
-        "ramda": "^0.27.1"
-      },
-      "peerDependencies": {
-        "@types/react-native": "*",
-        "react-native": "^*"
-      }
-    },
     "node_modules/react-native-render-html/node_modules/ramda": {
       "version": "0.27.2",
       "license": "MIT"
@@ -33912,9 +34042,9 @@
       }
     },
     "node_modules/react-native/node_modules/@react-native/normalize-colors": {
-      "version": "0.77.1",
-      "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.77.1.tgz",
-      "integrity": "sha512-sCmEs/Vpi14CtFYhmKXpPFZntKYGezFGgT9cJANRS2aFseAL4MOomb5Ms+TOQw82aFcwPPjDX6Hrl87WjTf73A==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.78.0.tgz",
+      "integrity": "sha512-FkeLvLLaMYlGsSntixTUvlNtc1OHij4TYRtymMNPWqBKFAMXJB/qe45VxXNzWP+jD0Ok6yXineQFtktKcHk9PA==",
       "license": "MIT"
     },
     "node_modules/react-native/node_modules/ansi-regex": {
@@ -34102,44 +34232,22 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/react-remove-scroll": {
-      "version": "2.5.7",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "react-remove-scroll-bar": "^2.3.4",
-        "react-style-singleton": "^2.2.1",
-        "tslib": "^2.1.0",
-        "use-callback-ref": "^1.3.0",
-        "use-sidecar": "^1.1.2"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "peerDependencies": {
-        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/react-remove-scroll-bar": {
-      "version": "2.3.6",
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz",
+      "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "react-style-singleton": "^2.2.1",
+        "react-style-singleton": "^2.2.2",
         "tslib": "^2.0.0"
       },
       "engines": {
         "node": ">=10"
       },
       "peerDependencies": {
-        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+        "@types/react": "*",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -34175,6 +34283,8 @@
     },
     "node_modules/react-shallow-renderer": {
       "version": "16.15.0",
+      "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
+      "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -34186,20 +34296,21 @@
       }
     },
     "node_modules/react-style-singleton": {
-      "version": "2.2.1",
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz",
+      "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "get-nonce": "^1.0.0",
-        "invariant": "^2.2.4",
         "tslib": "^2.0.0"
       },
       "engines": {
         "node": ">=10"
       },
       "peerDependencies": {
-        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+        "@types/react": "*",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -34208,25 +34319,25 @@
       }
     },
     "node_modules/react-test-renderer": {
-      "version": "18.3.1",
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-19.0.0.tgz",
+      "integrity": "sha512-oX5u9rOQlHzqrE/64CNr0HB0uWxkCQmZNSfozlYvwE71TLVgeZxVf0IjouGEr1v7r1kcDifdAJBeOhdhxsG/DA==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "react-is": "^18.3.1",
-        "react-shallow-renderer": "^16.15.0",
-        "scheduler": "^0.23.2"
+        "react-is": "^19.0.0",
+        "scheduler": "^0.25.0"
       },
       "peerDependencies": {
-        "react": "^18.3.1"
+        "react": "^19.0.0"
       }
     },
-    "node_modules/react-test-renderer/node_modules/scheduler": {
-      "version": "0.23.2",
+    "node_modules/react-test-renderer/node_modules/react-is": {
+      "version": "19.0.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.0.0.tgz",
+      "integrity": "sha512-H91OHcwjZsbq3ClIDHMzBShc1rotbfACdWENsmEf0IFvZ3FgGPtdHMcsv45bQ1hAbgdfiA8SnxTKfDS+x/8m2g==",
       "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      }
+      "license": "MIT"
     },
     "node_modules/react-web-config": {
       "version": "1.0.0",
@@ -34451,6 +34562,7 @@
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/recyclerlistview/-/recyclerlistview-4.2.1.tgz",
       "integrity": "sha512-NtVYjofwgUCt1rEsTp6jHQg/47TWjnO92TU2kTVgJ9wsc/ely4HnizHHa+f/dI7qaw4+zcSogElrLjhMltN2/g==",
+      "license": "Apache-2.0",
       "dependencies": {
         "lodash.debounce": "4.0.8",
         "prop-types": "15.8.1",
@@ -34517,6 +34629,8 @@
     },
     "node_modules/regenerator-runtime": {
       "version": "0.13.11",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
+      "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
       "license": "MIT"
     },
     "node_modules/regenerator-transform": {
@@ -34963,11 +35077,10 @@
       }
     },
     "node_modules/scheduler": {
-      "version": "0.24.0-canary-efb381bbf-20230505",
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      }
+      "version": "0.25.0",
+      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.25.0.tgz",
+      "integrity": "sha512-xFVuu11jh+xcO7JOAGJNOXld8/TcEHK/4CituBUeUb5hqxJLj9YuemAEuvm9gQ/+pgXYfbQuqAkiYu+u7YEsNA==",
+      "license": "MIT"
     },
     "node_modules/schema-utils": {
       "version": "3.3.0",
@@ -36009,13 +36122,13 @@
       "license": "MIT"
     },
     "node_modules/storybook": {
-      "version": "8.4.0",
-      "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.4.0.tgz",
-      "integrity": "sha512-hLfXPtqfoQUMKVortxXdnQoUwDwtH85eSj9LbqGT/z1f/gLLYGNG3Mv3QbsRjHXhn+EfYffh7wuLpAn+Cicijw==",
+      "version": "8.6.2",
+      "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.6.2.tgz",
+      "integrity": "sha512-IkQGRNImyN14+tx/9KLg9k5xKBgrkWaPFhfwTCxUZUzLNClbVrxkkXyjFaks9kPVQIEUVPGQCiGFqypUiwoM6g==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@storybook/core": "8.4.0"
+        "@storybook/core": "8.6.2"
       },
       "bin": {
         "getstorybook": "bin/index.cjs",
@@ -36035,6 +36148,65 @@
         }
       }
     },
+    "node_modules/storybook/node_modules/@storybook/core": {
+      "version": "8.6.2",
+      "resolved": "https://registry.npmjs.org/@storybook/core/-/core-8.6.2.tgz",
+      "integrity": "sha512-i8a/nUuzzH5RLKjPn8DM7l8xxuTdLZ6xbI4hgpruas3JY8lQq72I7qmH6pmI7ByjGangDWK1iPh+tghdKkS6KQ==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@storybook/theming": "8.6.2",
+        "better-opn": "^3.0.2",
+        "browser-assert": "^1.2.1",
+        "esbuild": "^0.18.0 || ^0.19.0 || ^0.20.0 || ^0.21.0 || ^0.22.0 || ^0.23.0 || ^0.24.0 || ^0.25.0",
+        "esbuild-register": "^3.5.0",
+        "jsdoc-type-pratt-parser": "^4.0.0",
+        "process": "^0.11.10",
+        "recast": "^0.23.5",
+        "semver": "^7.6.2",
+        "util": "^0.12.5",
+        "ws": "^8.2.3"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "prettier": "^2 || ^3"
+      },
+      "peerDependenciesMeta": {
+        "prettier": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/storybook/node_modules/@storybook/theming": {
+      "version": "8.6.2",
+      "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.6.2.tgz",
+      "integrity": "sha512-NF7tMZBbmh6rNf+uw5wVUpsVIwnbhLgauhQJONuQ8i+cI6cJEBaKjIC2uMWUBABqnj1LqGrHSEWVeeYwuAeUYg==",
+      "dev": true,
+      "license": "MIT",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/storybook"
+      },
+      "peerDependencies": {
+        "storybook": "^8.2.0 || ^8.3.0-0 || ^8.4.0-0 || ^8.5.0-0 || ^8.6.0-0"
+      }
+    },
+    "node_modules/storybook/node_modules/semver": {
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
+      "dev": true,
+      "license": "ISC",
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
     "node_modules/stream-buffers": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-2.2.0.tgz",
@@ -37302,7 +37474,8 @@
     "node_modules/ts-object-utils": {
       "version": "0.0.5",
       "resolved": "https://registry.npmjs.org/ts-object-utils/-/ts-object-utils-0.0.5.tgz",
-      "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA=="
+      "integrity": "sha512-iV0GvHqOmilbIKJsfyfJY9/dNHCs969z3so90dQWsO1eMMozvTpnB1MEaUbb3FYtZTGjv5sIy/xmslEz0Rg2TA==",
+      "license": "ISC"
     },
     "node_modules/ts-regex-builder": {
       "version": "1.7.1",
@@ -37869,7 +38042,9 @@
       "license": "MIT"
     },
     "node_modules/use-callback-ref": {
-      "version": "1.3.2",
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz",
+      "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -37879,8 +38054,8 @@
         "node": ">=10"
       },
       "peerDependencies": {
-        "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0",
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+        "@types/react": "*",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -37903,7 +38078,9 @@
       }
     },
     "node_modules/use-sidecar": {
-      "version": "1.1.2",
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz",
+      "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -37914,8 +38091,8 @@
         "node": ">=10"
       },
       "peerDependencies": {
-        "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0",
-        "react": "^16.8.0 || ^17.0.0 || ^18.0.0"
+        "@types/react": "*",
+        "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc"
       },
       "peerDependenciesMeta": {
         "@types/react": {
@@ -38634,7 +38811,9 @@
       }
     },
     "node_modules/whatwg-fetch": {
-      "version": "3.6.2",
+      "version": "3.6.20",
+      "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz",
+      "integrity": "sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==",
       "license": "MIT"
     },
     "node_modules/whatwg-url": {
diff --git a/package.json b/package.json
index 273f6f79fa71..efeff8ba63a4 100644
--- a/package.json
+++ b/package.json
@@ -145,7 +145,7 @@
     "react-beautiful-dnd": "^13.1.1",
     "react-collapse": "^5.1.0",
     "react-content-loader": "^7.0.0",
-    "react-dom": "18.3.1",
+    "react-dom": "19.0.0",
     "react-error-boundary": "^4.0.11",
     "react-fast-pdf": "^1.0.26",
     "react-map-gl": "^7.1.3",
@@ -160,7 +160,7 @@
     "react-native-document-picker": "^9.3.1",
     "react-native-draggable-flatlist": "^4.0.1",
     "react-native-fs": "^2.20.0",
-    "react-native-gesture-handler": "2.22.0",
+    "react-native-gesture-handler": "2.24.0",
     "react-native-google-places-autocomplete": "2.5.6",
     "react-native-haptic-feedback": "^2.3.3",
     "react-native-image-picker": "^7.1.2",
@@ -264,7 +264,7 @@
     "@types/react": "^19.0.0",
     "@types/react-beautiful-dnd": "^13.1.4",
     "@types/react-collapse": "^5.0.1",
-    "@types/react-dom": "^18.2.4",
+    "@types/react-dom": "^19.0.0",
     "@types/react-is": "^18.3.0",
     "@types/react-native-web": "^0.0.0",
     "@types/react-test-renderer": "19.0.0",
@@ -276,7 +276,7 @@
     "@typescript-eslint/parser": "^7.13.1",
     "@vercel/ncc": "0.38.1",
     "@vue/preload-webpack-plugin": "^2.0.0",
-    "@welldone-software/why-did-you-render": "7.0.1",
+    "@welldone-software/why-did-you-render": "10.0.1",
     "ajv-cli": "^5.0.0",
     "babel-jest": "29.4.1",
     "babel-loader": "^9.1.3",
@@ -330,13 +330,13 @@
     "react-is": "^18.3.1",
     "react-native-clean-project": "^4.0.0-alpha4.0",
     "react-refresh": "^0.14.2",
-    "react-test-renderer": "18.3.1",
+    "react-test-renderer": "19.0.0",
     "reassure": "^1.0.0-rc.4",
     "semver": "7.5.2",
     "setimmediate": "^1.0.5",
     "shellcheck": "^1.1.0",
     "source-map": "^0.7.4",
-    "storybook": "^8.4.0",
+    "storybook": "^8.6.1",
     "style-loader": "^2.0.0",
     "time-analytics-webpack-plugin": "^0.1.17",
     "ts-jest": "^29.1.2",
@@ -370,7 +370,9 @@
     "body-parser": "1.20.3",
     "path-to-regexp": "0.1.10",
     "send": "0.19.0",
-    "regexpu-core": "5.3.2"
+    "regexpu-core": "5.3.2",
+    "react": "19.0.0",
+    "react-dom": "19.0.0"
   },
   "expo": {
     "autolinking": {
diff --git a/patches/@react-native+gradle-plugin+0.77.1.patch b/patches/@react-native+gradle-plugin+0.78.0.patch
similarity index 100%
rename from patches/@react-native+gradle-plugin+0.77.1.patch
rename to patches/@react-native+gradle-plugin+0.78.0.patch
diff --git a/patches/@react-native+virtualized-lists+0.77.1+001+onStartReched.patch b/patches/@react-native+virtualized-lists+0.77.1+001+onStartReched.patch
deleted file mode 100644
index b183124964f6..000000000000
--- a/patches/@react-native+virtualized-lists+0.77.1+001+onStartReched.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-diff --git a/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js b/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-index 0516679..e338d90 100644
---- a/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-+++ b/node_modules/@react-native/virtualized-lists/Lists/VirtualizedList.js
-@@ -1546,7 +1546,7 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
-     // Next check if the user just scrolled within the start threshold
-     // and call onStartReached only once for a given content length,
-     // and only if onEndReached is not being executed
--    else if (
-+    if (
-       onStartReached != null &&
-       this.state.cellsAroundViewport.first === 0 &&
-       isWithinStartThreshold &&
-@@ -1558,13 +1558,11 @@ class VirtualizedList extends StateSafePureComponent<Props, State> {
- 
-     // If the user scrolls away from the start or end and back again,
-     // cause onStartReached or onEndReached to be triggered again
--    else {
--      this._sentStartForContentLength = isWithinStartThreshold
--        ? this._sentStartForContentLength
--        : 0;
--      this._sentEndForContentLength = isWithinEndThreshold
--        ? this._sentEndForContentLength
--        : 0;
-+    if (!isWithinStartThreshold) {
-+      this._sentStartForContentLength = 0;
-+    }
-+    if (!isWithinEndThreshold) {
-+      this._sentEndForContentLength = 0;
-     }
-   }
- 
diff --git a/patches/@react-native+virtualized-lists+0.77.1+002+osr-improvement.patch b/patches/@react-native+virtualized-lists+0.78.0+001+osr-improvement.patch
similarity index 100%
rename from patches/@react-native+virtualized-lists+0.77.1+002+osr-improvement.patch
rename to patches/@react-native+virtualized-lists+0.78.0+001+osr-improvement.patch
diff --git a/patches/expo-asset+11.0.2+002+initial.patch b/patches/expo-asset+11.0.4+002+initial.patch
similarity index 100%
rename from patches/expo-asset+11.0.2+002+initial.patch
rename to patches/expo-asset+11.0.4+002+initial.patch

From 367b72eaf8d76bd2b427d91dcca2473efebf30a1 Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Fri, 28 Feb 2025 14:01:04 +0100
Subject: [PATCH 5/8] apply rest of migration guide, bump some libs

---
 package-lock.json                             | 46 ++++++++-----------
 package.json                                  |  6 +--
 ...8.0+022+dont-enable-height-centering.patch | 13 ------
 3 files changed, 22 insertions(+), 43 deletions(-)
 delete mode 100644 patches/react-native+0.78.0+022+dont-enable-height-centering.patch

diff --git a/package-lock.json b/package-lock.json
index e573295fee59..abad11f84520 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -32,6 +32,7 @@
         "@react-native-clipboard/clipboard": "^1.15.0",
         "@react-native-community/geolocation": "3.3.0",
         "@react-native-community/netinfo": "11.2.1",
+        "@react-native-documents/picker": "^10.1.1",
         "@react-native-firebase/analytics": "^12.3.0",
         "@react-native-firebase/app": "^12.3.0",
         "@react-native-firebase/crashlytics": "^12.3.0",
@@ -90,7 +91,6 @@
         "react-native-collapsible": "^1.6.2",
         "react-native-config": "1.5.3",
         "react-native-device-info": "10.3.1",
-        "react-native-document-picker": "^9.3.1",
         "react-native-draggable-flatlist": "^4.0.1",
         "react-native-fs": "^2.20.0",
         "react-native-gesture-handler": "2.24.0",
@@ -99,7 +99,7 @@
         "react-native-image-picker": "^7.1.2",
         "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#cb392140db4953a283590d7cf93b4d0461baa2a9",
         "react-native-key-command": "1.0.12",
-        "react-native-keyboard-controller": "1.15.2",
+        "react-native-keyboard-controller": "1.16.6",
         "react-native-launch-arguments": "^4.0.2",
         "react-native-localize": "^2.2.6",
         "react-native-modal": "^13.0.0",
@@ -115,7 +115,7 @@
         "react-native-reanimated": "3.16.7",
         "react-native-release-profiler": "^0.2.1",
         "react-native-render-html": "6.3.1",
-        "react-native-safe-area-context": "4.12.0",
+        "react-native-safe-area-context": "5.2.0",
         "react-native-screens": "3.35.0",
         "react-native-share": "11.0.2",
         "react-native-sound": "^0.11.2",
@@ -9698,6 +9698,16 @@
         "react-native": ">=0.59"
       }
     },
+    "node_modules/@react-native-documents/picker": {
+      "version": "10.1.1",
+      "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-10.1.1.tgz",
+      "integrity": "sha512-RijOCQmesOPe4ahtwOag6k6GLhLHf34sMQtAJ4KjLk7ab0kG5Chvcsvd5zixWC4d0tuBnVAtMUOzvn0bp+UtAg==",
+      "license": "MIT",
+      "peerDependencies": {
+        "react": "*",
+        "react-native": "*"
+      }
+    },
     "node_modules/@react-native-firebase/analytics": {
       "version": "12.9.3",
       "license": "Apache-2.0",
@@ -33482,24 +33492,6 @@
         "react-native": "*"
       }
     },
-    "node_modules/react-native-document-picker": {
-      "version": "9.3.1",
-      "resolved": "https://registry.npmjs.org/react-native-document-picker/-/react-native-document-picker-9.3.1.tgz",
-      "integrity": "sha512-Vcofv9wfB0j67zawFjfq9WQPMMzXxOZL9kBmvWDpjVuEcVK73ndRmlXHlkeFl5ZHVsv4Zb6oZYhqm9u5omJOPA==",
-      "dependencies": {
-        "invariant": "^2.2.4"
-      },
-      "peerDependencies": {
-        "react": "*",
-        "react-native": "*",
-        "react-native-windows": "*"
-      },
-      "peerDependenciesMeta": {
-        "react-native-windows": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/react-native-draggable-flatlist": {
       "version": "4.0.1",
       "license": "MIT",
@@ -33625,9 +33617,9 @@
       "license": "MIT"
     },
     "node_modules/react-native-keyboard-controller": {
-      "version": "1.15.2",
-      "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.15.2.tgz",
-      "integrity": "sha512-ZN151OyMJ2GQkhebARY/5G9rXgSlNCKy+WjS6p4o7S+5ulb4nGzl6UkpEuT7/C6bHDeAjDupdrET9tyyTee3nA==",
+      "version": "1.16.6",
+      "resolved": "https://registry.npmjs.org/react-native-keyboard-controller/-/react-native-keyboard-controller-1.16.6.tgz",
+      "integrity": "sha512-3MeJKtF2eBv3+HXM1rbZqWaOGpJEYxVY8ThOpCPCa6R703Dmb069LsZ08M3ATaHZH2yqNvp/bQCo7P7I4Qqomg==",
       "license": "MIT",
       "dependencies": {
         "react-native-is-edge-to-edge": "^1.1.6"
@@ -33892,9 +33884,9 @@
       "license": "MIT"
     },
     "node_modules/react-native-safe-area-context": {
-      "version": "4.12.0",
-      "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-4.12.0.tgz",
-      "integrity": "sha512-ukk5PxcF4p3yu6qMZcmeiZgowhb5AsKRnil54YFUUAXVIS7PJcMHGGC+q44fCiBg44/1AJk5njGMez1m9H0BVQ==",
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.2.0.tgz",
+      "integrity": "sha512-QpcGA6MRKe8Zbpf1hirCBudNQYGsMv0n/CTTROMOFcXbqRUoEXLCsYxUmYKi7JJb3ziL2DbyzWXyH2/gw4Tkfw==",
       "license": "MIT",
       "peerDependencies": {
         "react": "*",
diff --git a/package.json b/package.json
index efeff8ba63a4..9f13d69d8b69 100644
--- a/package.json
+++ b/package.json
@@ -99,6 +99,7 @@
     "@react-native-clipboard/clipboard": "^1.15.0",
     "@react-native-community/geolocation": "3.3.0",
     "@react-native-community/netinfo": "11.2.1",
+    "@react-native-documents/picker": "^10.1.1",
     "@react-native-firebase/analytics": "^12.3.0",
     "@react-native-firebase/app": "^12.3.0",
     "@react-native-firebase/crashlytics": "^12.3.0",
@@ -157,7 +158,6 @@
     "react-native-collapsible": "^1.6.2",
     "react-native-config": "1.5.3",
     "react-native-device-info": "10.3.1",
-    "react-native-document-picker": "^9.3.1",
     "react-native-draggable-flatlist": "^4.0.1",
     "react-native-fs": "^2.20.0",
     "react-native-gesture-handler": "2.24.0",
@@ -166,7 +166,7 @@
     "react-native-image-picker": "^7.1.2",
     "react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#cb392140db4953a283590d7cf93b4d0461baa2a9",
     "react-native-key-command": "1.0.12",
-    "react-native-keyboard-controller": "1.15.2",
+    "react-native-keyboard-controller": "1.16.6",
     "react-native-launch-arguments": "^4.0.2",
     "react-native-localize": "^2.2.6",
     "react-native-modal": "^13.0.0",
@@ -182,7 +182,7 @@
     "react-native-reanimated": "3.16.7",
     "react-native-release-profiler": "^0.2.1",
     "react-native-render-html": "6.3.1",
-    "react-native-safe-area-context": "4.12.0",
+    "react-native-safe-area-context": "5.2.0",
     "react-native-screens": "3.35.0",
     "react-native-share": "11.0.2",
     "react-native-sound": "^0.11.2",
diff --git a/patches/react-native+0.78.0+022+dont-enable-height-centering.patch b/patches/react-native+0.78.0+022+dont-enable-height-centering.patch
deleted file mode 100644
index f66a8e9c1174..000000000000
--- a/patches/react-native+0.78.0+022+dont-enable-height-centering.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt
-index f90ad02..44a8e36 100644
---- a/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt
-+++ b/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react/defaults/DefaultNewArchitectureEntryPoint.kt
-@@ -50,6 +50,8 @@ public object DefaultNewArchitectureEntryPoint {
-           override fun enableEventEmitterRetentionDuringGesturesOnAndroid(): Boolean =
-               bridgelessEnabled || fabricEnabled
- 
-+          override fun enableAndroidLineHeightCentering(): Boolean = false
-+
-           override fun useTurboModules(): Boolean = bridgelessEnabled || turboModulesEnabled
-         })
- 

From 432bf344a6b704e7508cbb466adc1167ff7507c1 Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Mon, 10 Mar 2025 16:46:46 +0100
Subject: [PATCH 6/8] add react 19 & react native 78 patch for
 `react-native-web`

---
 ...native-web+0.19.13+008+RN-78-support.patch | 280 ++++++++++++++++++
 1 file changed, 280 insertions(+)
 create mode 100644 patches/react-native-web+0.19.13+008+RN-78-support.patch

diff --git a/patches/react-native-web+0.19.13+008+RN-78-support.patch b/patches/react-native-web+0.19.13+008+RN-78-support.patch
new file mode 100644
index 000000000000..b37c617139f7
--- /dev/null
+++ b/patches/react-native-web+0.19.13+008+RN-78-support.patch
@@ -0,0 +1,280 @@
+diff --git a/node_modules/react-native-web/dist/exports/AppRegistry/renderApplication.js b/node_modules/react-native-web/dist/exports/AppRegistry/renderApplication.js
+index b53dff6..1f855c1 100644
+--- a/node_modules/react-native-web/dist/exports/AppRegistry/renderApplication.js
++++ b/node_modules/react-native-web/dist/exports/AppRegistry/renderApplication.js
+@@ -11,15 +11,12 @@ import _extends from "@babel/runtime/helpers/extends";
+ 
+ import AppContainer from './AppContainer';
+ import invariant from 'fbjs/lib/invariant';
+-import renderLegacy, { hydrateLegacy, render, hydrate } from '../render';
++import render, { hydrate } from '../render';
+ import StyleSheet from '../StyleSheet';
+ import React from 'react';
+ export default function renderApplication(RootComponent, WrapperComponent, callback, options) {
+-  var shouldHydrate = options.hydrate,
+-    initialProps = options.initialProps,
+-    mode = options.mode,
+-    rootTag = options.rootTag;
+-  var renderFn = shouldHydrate ? mode === 'concurrent' ? hydrate : hydrateLegacy : mode === 'concurrent' ? render : renderLegacy;
++  const { hydrate: shouldHydrate, initialProps, rootTag } = options;
++  const renderFn = shouldHydrate ? hydrate : render;
+   invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag);
+   return renderFn(/*#__PURE__*/React.createElement(AppContainer, {
+     WrapperComponent: WrapperComponent,
+diff --git a/node_modules/react-native-web/dist/exports/findNodeHandle/index.js b/node_modules/react-native-web/dist/exports/findNodeHandle/index.js
+index e997fcf..e4b6c76 100644
+--- a/node_modules/react-native-web/dist/exports/findNodeHandle/index.js
++++ b/node_modules/react-native-web/dist/exports/findNodeHandle/index.js
+@@ -8,17 +8,10 @@
+  *
+  */
+ 
+-import { findDOMNode } from 'react-dom';
+-
+-/**
+- * @deprecated imperatively finding the DOM element of a react component has been deprecated in React 18.
+- * You should use ref properties on the component instead.
+- */
+-var findNodeHandle = component => {
+-  var node;
+-  try {
+-    node = findDOMNode(component);
+-  } catch (e) {}
+-  return node;
++const findNodeHandle = (component) => {
++  console.warn(
++      'findNodeHandle has been removed in React 19. ' +
++      'Use the ref property on the component instead.'
++  );
+ };
+ export default findNodeHandle;
+diff --git a/node_modules/react-native-web/dist/exports/findNodeHandle/index.js.flow b/node_modules/react-native-web/dist/exports/findNodeHandle/index.js.flow
+index 412af49..2e0621d 100644
+--- a/node_modules/react-native-web/dist/exports/findNodeHandle/index.js.flow
++++ b/node_modules/react-native-web/dist/exports/findNodeHandle/index.js.flow
+@@ -8,11 +8,5 @@
+  * @noflow
+  */
+ 
+-import { findDOMNode } from 'react-dom';
+-
+-/**
+- * @deprecated imperatively finding the DOM element of a react component has been deprecated in React 18.
+- * You should use ref properties on the component instead.
+- */
+ declare var findNodeHandle: (component: any) => any;
+ export default findNodeHandle;
+diff --git a/node_modules/react-native-web/dist/exports/render/index.js b/node_modules/react-native-web/dist/exports/render/index.js
+index aa91a2a..056714f 100644
+--- a/node_modules/react-native-web/dist/exports/render/index.js
++++ b/node_modules/react-native-web/dist/exports/render/index.js
+@@ -9,35 +9,15 @@
+ 
+ 'use client';
+ 
+-import { hydrate as domLegacyHydrate, render as domLegacyRender } from 'react-dom';
+ import { createRoot as domCreateRoot, hydrateRoot as domHydrateRoot } from 'react-dom/client';
+-import unmountComponentAtNode from '../unmountComponentAtNode';
+ import { createSheet } from '../StyleSheet/dom';
+ export function hydrate(element, root) {
+   createSheet(root);
+   return domHydrateRoot(root, element);
+ }
+-export function render(element, root) {
++export default function render(element, root) {
+   createSheet(root);
+   var reactRoot = domCreateRoot(root);
+   reactRoot.render(element);
+   return reactRoot;
+ }
+-export function hydrateLegacy(element, root, callback) {
+-  createSheet(root);
+-  domLegacyHydrate(element, root, callback);
+-  return {
+-    unmount: function unmount() {
+-      return unmountComponentAtNode(root);
+-    }
+-  };
+-}
+-export default function renderLegacy(element, root, callback) {
+-  createSheet(root);
+-  domLegacyRender(element, root, callback);
+-  return {
+-    unmount: function unmount() {
+-      return unmountComponentAtNode(root);
+-    }
+-  };
+-}
+\ No newline at end of file
+diff --git a/node_modules/react-native-web/dist/exports/render/index.js.flow b/node_modules/react-native-web/dist/exports/render/index.js.flow
+index 1bd771e..4ab6c32 100644
+--- a/node_modules/react-native-web/dist/exports/render/index.js.flow
++++ b/node_modules/react-native-web/dist/exports/render/index.js.flow
+@@ -14,6 +14,4 @@ import { createRoot as domCreateRoot, hydrateRoot as domHydrateRoot } from 'reac
+ import unmountComponentAtNode from '../unmountComponentAtNode';
+ import { createSheet } from '../StyleSheet/dom';
+ declare export function hydrate(element: any, root: any): any;
+-declare export function render(element: any, root: any): any;
+-declare export function hydrateLegacy(element: any, root: any, callback: any): any;
+-declare export default function renderLegacy(element: any, root: any, callback: any): any;
+\ No newline at end of file
++declare export default function render(element: any, root: any): any;
+diff --git a/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js b/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js
+index 925051c..908969c 100644
+--- a/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js
++++ b/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js
+@@ -7,5 +7,7 @@
+  *
+  */
+ 
+-import { unmountComponentAtNode } from 'react-dom';
+-export default unmountComponentAtNode;
+\ No newline at end of file
++export default function unmountComponentAtNode(rootTag) {
++    rootTag.unmount();
++    return true;
++}
+diff --git a/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js.flow b/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js.flow
+index b950090..1e4386f 100644
+--- a/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js.flow
++++ b/node_modules/react-native-web/dist/exports/unmountComponentAtNode/index.js.flow
+@@ -7,5 +7,7 @@
+  * @noflow
+  */
+ 
+-import { unmountComponentAtNode } from 'react-dom';
+-export default unmountComponentAtNode;
+\ No newline at end of file
++export default function unmountComponentAtNode(rootTag) {
++    rootTag.unmount();
++    return true;
++}
+diff --git a/node_modules/react-native-web/src/exports/AppRegistry/renderApplication.js b/node_modules/react-native-web/src/exports/AppRegistry/renderApplication.js
+index 95df521..5878515 100644
+--- a/node_modules/react-native-web/src/exports/AppRegistry/renderApplication.js
++++ b/node_modules/react-native-web/src/exports/AppRegistry/renderApplication.js
+@@ -12,7 +12,7 @@ import type { ComponentType, Node } from 'react';
+ 
+ import AppContainer from './AppContainer';
+ import invariant from 'fbjs/lib/invariant';
+-import renderLegacy, { hydrateLegacy, render, hydrate } from '../render';
++import render, { hydrate } from '../render';
+ import StyleSheet from '../StyleSheet';
+ import React from 'react';
+ 
+@@ -27,18 +27,11 @@ export default function renderApplication<Props: Object>(
+   options: {
+     hydrate: boolean,
+     initialProps: Props,
+-    mode: 'concurrent' | 'legacy',
+     rootTag: any
+   }
+ ): Application {
+-  const { hydrate: shouldHydrate, initialProps, mode, rootTag } = options;
+-  const renderFn = shouldHydrate
+-    ? mode === 'concurrent'
+-      ? hydrate
+-      : hydrateLegacy
+-    : mode === 'concurrent'
+-    ? render
+-    : renderLegacy;
++  const { hydrate: shouldHydrate, initialProps, rootTag } = options;
++  const renderFn = shouldHydrate ? hydrate : render;
+ 
+   invariant(rootTag, 'Expect to have a valid rootTag, instead got ', rootTag);
+ 
+diff --git a/node_modules/react-native-web/src/exports/findNodeHandle/index.js b/node_modules/react-native-web/src/exports/findNodeHandle/index.js
+index f0b6ddf..39cf2d9 100644
+--- a/node_modules/react-native-web/src/exports/findNodeHandle/index.js
++++ b/node_modules/react-native-web/src/exports/findNodeHandle/index.js
+@@ -8,20 +8,11 @@
+  * @noflow
+  */
+ 
+-import { findDOMNode } from 'react-dom';
+-
+-/**
+- * @deprecated imperatively finding the DOM element of a react component has been deprecated in React 18.
+- * You should use ref properties on the component instead.
+- */
+ const findNodeHandle = (component) => {
+-  let node;
+-
+-  try {
+-    node = findDOMNode(component);
+-  } catch (e) {}
+-
+-  return node;
++  console.warn(
++      'findNodeHandle has been removed in React 19. ' +
++      'Use the ref property on the component instead.'
++  );
+ };
+ 
+ export default findNodeHandle;
+diff --git a/node_modules/react-native-web/src/exports/render/index.js b/node_modules/react-native-web/src/exports/render/index.js
+index c578e3e..572af7c 100644
+--- a/node_modules/react-native-web/src/exports/render/index.js
++++ b/node_modules/react-native-web/src/exports/render/index.js
+@@ -9,16 +9,11 @@
+ 
+ 'use client';
+ 
+-import {
+-  hydrate as domLegacyHydrate,
+-  render as domLegacyRender
+-} from 'react-dom';
+ import {
+   createRoot as domCreateRoot,
+   hydrateRoot as domHydrateRoot
+ } from 'react-dom/client';
+ 
+-import unmountComponentAtNode from '../unmountComponentAtNode';
+ import { createSheet } from '../StyleSheet/dom';
+ 
+ export function hydrate(element, root) {
+@@ -26,29 +21,9 @@ export function hydrate(element, root) {
+   return domHydrateRoot(root, element);
+ }
+ 
+-export function render(element, root) {
++export default function render(element, root) {
+   createSheet(root);
+   const reactRoot = domCreateRoot(root);
+   reactRoot.render(element);
+   return reactRoot;
+ }
+-
+-export function hydrateLegacy(element, root, callback) {
+-  createSheet(root);
+-  domLegacyHydrate(element, root, callback);
+-  return {
+-    unmount: function () {
+-      return unmountComponentAtNode(root);
+-    }
+-  };
+-}
+-
+-export default function renderLegacy(element, root, callback) {
+-  createSheet(root);
+-  domLegacyRender(element, root, callback);
+-  return {
+-    unmount: function () {
+-      return unmountComponentAtNode(root);
+-    }
+-  };
+-}
+diff --git a/node_modules/react-native-web/src/exports/unmountComponentAtNode/index.js b/node_modules/react-native-web/src/exports/unmountComponentAtNode/index.js
+index c3da00e..1e4386f 100644
+--- a/node_modules/react-native-web/src/exports/unmountComponentAtNode/index.js
++++ b/node_modules/react-native-web/src/exports/unmountComponentAtNode/index.js
+@@ -7,5 +7,7 @@
+  * @noflow
+  */
+ 
+-import { unmountComponentAtNode } from 'react-dom';
+-export default unmountComponentAtNode;
++export default function unmountComponentAtNode(rootTag) {
++    rootTag.unmount();
++    return true;
++}

From f18669dedd9aea119a0165a40328aacb99e91bb5 Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Tue, 18 Mar 2025 12:03:10 +0100
Subject: [PATCH 7/8] bump screens and airship

---
 package-lock.json                             | 17 +++++----
 package.json                                  |  4 +-
 ...e-screens+3.35.0+004+cover-all-cases.patch | 37 -------------------
 ...ative-screens+3.37.0+001+hybrid-app.patch} |  0
 ...ustom-animations-native-transitions.patch} |  0
 ...fix-screen-flicker-on-modal-unmount.patch} |  0
 6 files changed, 11 insertions(+), 47 deletions(-)
 delete mode 100644 patches/react-native-screens+3.35.0+004+cover-all-cases.patch
 rename patches/{react-native-screens+3.35.0+001+hybrid-app.patch => react-native-screens+3.37.0+001+hybrid-app.patch} (100%)
 rename patches/{react-native-screens+3.35.0+002+ios-custom-animations-native-transitions.patch => react-native-screens+3.37.0+002+ios-custom-animations-native-transitions.patch} (100%)
 rename patches/{react-native-screens+3.35.0+003+fix-screen-flicker-on-modal-unmount.patch => react-native-screens+3.37.0+003+fix-screen-flicker-on-modal-unmount.patch} (100%)

diff --git a/package-lock.json b/package-lock.json
index 06c5279e4e4b..765caa6b5458 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -47,7 +47,7 @@
         "@rnmapbox/maps": "10.1.33",
         "@shopify/flash-list": "1.7.1",
         "@types/pako": "^2.0.3",
-        "@ua/react-native-airship": "19.2.1",
+        "@ua/react-native-airship": "22.0.0",
         "awesome-phonenumber": "^5.4.0",
         "babel-polyfill": "^6.26.0",
         "canvas-size": "^1.2.6",
@@ -116,7 +116,7 @@
         "react-native-release-profiler": "^0.2.1",
         "react-native-render-html": "6.3.1",
         "react-native-safe-area-context": "5.2.0",
-        "react-native-screens": "3.35.0",
+        "react-native-screens": "3.37.0",
         "react-native-share": "11.0.2",
         "react-native-sound": "^0.11.2",
         "react-native-svg": "15.9.0",
@@ -15545,9 +15545,10 @@
       }
     },
     "node_modules/@ua/react-native-airship": {
-      "version": "19.2.1",
-      "resolved": "https://registry.npmjs.org/@ua/react-native-airship/-/react-native-airship-19.2.1.tgz",
-      "integrity": "sha512-DnSTR31OIUWypbUmdtbz7VyXAp+2c7737EKmfG5o2LVDkBNnJ8hO5/2G4eEGmkBLn5tv2zP8vP6nUmq8Pt2wCA==",
+      "version": "22.0.0",
+      "resolved": "https://registry.npmjs.org/@ua/react-native-airship/-/react-native-airship-22.0.0.tgz",
+      "integrity": "sha512-CVTgiCwsKJNRK3AOg3Pa7UJ0oLYDZbNPLbCnBoI0WTtNNbAFWvKqhV/mzRu70bSx/iOWBpZAHhX5/eeepHM1yQ==",
+      "license": "Apache-2.0",
       "engines": {
         "node": ">= 16.0.0"
       },
@@ -33876,9 +33877,9 @@
       }
     },
     "node_modules/react-native-screens": {
-      "version": "3.35.0",
-      "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.35.0.tgz",
-      "integrity": "sha512-rmkqb/M/SQIrXwygk6pXcOhgHltYAhidf1WceO7ujAxkr6XtwmgFyd1HIztsrJa568GrAuwPdQ11I7TpVk+XsA==",
+      "version": "3.37.0",
+      "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-3.37.0.tgz",
+      "integrity": "sha512-vEi4qZqWYoGuVGuHTv1K2XA90rgSydksmR5+tb5uhL93whl6Bch6EEXzC+8eEfj4SimiCgXBPY7r/xTXJxvnUg==",
       "license": "MIT",
       "dependencies": {
         "react-freeze": "^1.0.0",
diff --git a/package.json b/package.json
index effa6c4051d9..4271fff8dab0 100644
--- a/package.json
+++ b/package.json
@@ -113,7 +113,7 @@
     "@rnmapbox/maps": "10.1.33",
     "@shopify/flash-list": "1.7.1",
     "@types/pako": "^2.0.3",
-    "@ua/react-native-airship": "19.2.1",
+    "@ua/react-native-airship": "22.0.0",
     "awesome-phonenumber": "^5.4.0",
     "babel-polyfill": "^6.26.0",
     "canvas-size": "^1.2.6",
@@ -182,7 +182,7 @@
     "react-native-release-profiler": "^0.2.1",
     "react-native-render-html": "6.3.1",
     "react-native-safe-area-context": "5.2.0",
-    "react-native-screens": "3.35.0",
+    "react-native-screens": "3.37.0",
     "react-native-share": "11.0.2",
     "react-native-sound": "^0.11.2",
     "react-native-svg": "15.9.0",
diff --git a/patches/react-native-screens+3.35.0+004+cover-all-cases.patch b/patches/react-native-screens+3.35.0+004+cover-all-cases.patch
deleted file mode 100644
index 98b5b853a24f..000000000000
--- a/patches/react-native-screens+3.35.0+004+cover-all-cases.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff --git a/node_modules/react-native-screens/ios/RNSScreenStackHeaderConfig.mm b/node_modules/react-native-screens/ios/RNSScreenStackHeaderConfig.mm
-index 4f1c040..481be63 100644
---- a/node_modules/react-native-screens/ios/RNSScreenStackHeaderConfig.mm
-+++ b/node_modules/react-native-screens/ios/RNSScreenStackHeaderConfig.mm
-@@ -824,6 +824,8 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
-       return RCTResizeModeCenter;
-     case react::ImageResizeMode::Repeat:
-       return RCTResizeModeRepeat;
-+    default:
-+      throw @"[RNScreens] Unhandled resizeMode";
-   }
- }
- 
-diff --git a/node_modules/react-native-screens/package.json b/node_modules/react-native-screens/package.json
-index bb7c35f..082fda3 100644
---- a/node_modules/react-native-screens/package.json
-+++ b/node_modules/react-native-screens/package.json
-@@ -156,6 +156,19 @@
-     "jsSrcsDir": "./src/fabric",
-     "android": {
-       "javaPackageName": "com.swmansion.rnscreens"
-+    },
-+    "ios": {
-+      "componentProvider": {
-+        "RNSFullWindowOverlay": "RNSFullWindowOverlay",
-+        "RNSModalScreen": "RNSModalScreen",
-+        "RNSScreenContainer": "RNSScreenContainerView",
-+        "RNSScreen": "RNSScreenView",
-+        "RNSScreenNavigationContainer": "RNSScreenNavigationContainerView",
-+        "RNSScreenStackHeaderConfig": "RNSScreenStackHeaderConfig",
-+        "RNSScreenStackHeaderSubview": "RNSScreenStackHeaderSubview",
-+        "RNSScreenStack": "RNSScreenStackView",
-+        "RNSSearchBar": "RNSSearchBar"
-+      }
-     }
-   },
-   "packageManager": "yarn@4.1.1"
diff --git a/patches/react-native-screens+3.35.0+001+hybrid-app.patch b/patches/react-native-screens+3.37.0+001+hybrid-app.patch
similarity index 100%
rename from patches/react-native-screens+3.35.0+001+hybrid-app.patch
rename to patches/react-native-screens+3.37.0+001+hybrid-app.patch
diff --git a/patches/react-native-screens+3.35.0+002+ios-custom-animations-native-transitions.patch b/patches/react-native-screens+3.37.0+002+ios-custom-animations-native-transitions.patch
similarity index 100%
rename from patches/react-native-screens+3.35.0+002+ios-custom-animations-native-transitions.patch
rename to patches/react-native-screens+3.37.0+002+ios-custom-animations-native-transitions.patch
diff --git a/patches/react-native-screens+3.35.0+003+fix-screen-flicker-on-modal-unmount.patch b/patches/react-native-screens+3.37.0+003+fix-screen-flicker-on-modal-unmount.patch
similarity index 100%
rename from patches/react-native-screens+3.35.0+003+fix-screen-flicker-on-modal-unmount.patch
rename to patches/react-native-screens+3.37.0+003+fix-screen-flicker-on-modal-unmount.patch

From 5e2c3f94b07afaa7575c584197af454b3025d65e Mon Sep 17 00:00:00 2001
From: war-in <war-in@users.noreply.github.com>
Date: Tue, 25 Mar 2025 15:15:53 +0100
Subject: [PATCH 8/8] make android build properly

---
 package-lock.json                             | 2386 ++++++-----------
 package.json                                  |   26 +-
 ...n+0.1.256+001+remove-outdated-import.patch |   12 +
 ...xpo+52.0.28+001+dont-change-formdata.patch |   47 -
 ...ipulator+13.0.6+002+fix-type-exports.patch |   17 -
 ...-core+2.2.0+001+disableViewRecycling.patch |   16 -
 ...es-core+2.2.0+002+change-global-type.patch |   13 -
 patches/jest-expo+52.0.3.patch                |   13 -
 8 files changed, 897 insertions(+), 1633 deletions(-)
 create mode 100644 patches/@expensify+react-native-live-markdown+0.1.256+001+remove-outdated-import.patch
 delete mode 100644 patches/expo+52.0.28+001+dont-change-formdata.patch
 delete mode 100644 patches/expo-image-manipulator+13.0.6+002+fix-type-exports.patch
 delete mode 100644 patches/expo-modules-core+2.2.0+001+disableViewRecycling.patch
 delete mode 100644 patches/expo-modules-core+2.2.0+002+change-global-type.patch
 delete mode 100644 patches/jest-expo+52.0.3.patch

diff --git a/package-lock.json b/package-lock.json
index 44a5e0a5f88d..54c91c41674e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -13,8 +13,8 @@
         "@dotlottie/react-player": "^1.6.3",
         "@expensify/react-native-background-task": "file:./modules/background-task",
         "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app",
-        "@expensify/react-native-live-markdown": "0.1.244",
-        "@expo/metro-runtime": "^4.0.1",
+        "@expensify/react-native-live-markdown": "0.1.256",
+        "@expo/metro-runtime": "4.0.2-canary-20250306-d9d3e02",
         "@firebase/app": "^0.10.10",
         "@firebase/performance": "^0.6.8",
         "@formatjs/intl-datetimeformat": "^6.12.5",
@@ -57,12 +57,12 @@
         "dom-serializer": "^0.2.2",
         "domhandler": "^4.3.0",
         "expensify-common": "2.0.124",
-        "expo": "52.0.28",
-        "expo-asset": "^11.0.2",
-        "expo-av": "^15.0.2",
-        "expo-font": "^13.0.3",
-        "expo-image": "^2.0.4",
-        "expo-image-manipulator": "^13.0.6",
+        "expo": "53.0.0-canary-20250306-d9d3e02",
+        "expo-asset": " 12.0.0-canary-20250306-d9d3e02",
+        "expo-av": "15.0.3-canary-20250306-d9d3e02",
+        "expo-font": "14.0.0-canary-20250306-d9d3e02",
+        "expo-image": "3.0.0-canary-20250306-d9d3e02",
+        "expo-image-manipulator": "13.0.7-canary-20250306-d9d3e02",
         "fast-equals": "^4.0.3",
         "focus-trap-react": "^11.0.3",
         "howler": "^2.2.4",
@@ -91,6 +91,7 @@
         "react-native-collapsible": "^1.6.2",
         "react-native-config": "1.5.3",
         "react-native-device-info": "10.3.1",
+        "react-native-document-picker": "^9.3.1",
         "react-native-draggable-flatlist": "^4.0.1",
         "react-native-fs": "^2.20.0",
         "react-native-gesture-handler": "2.24.0",
@@ -172,7 +173,7 @@
         "@react-native-community/cli-platform-ios": "15.0.1",
         "@react-native-community/eslint-config": "3.2.0",
         "@react-native/babel-preset": "0.78.0",
-        "@react-native/metro-config": "0.78.0",
+        "@react-native/metro-config": "0.78.1",
         "@react-navigation/devtools": "^6.0.10",
         "@storybook/addon-a11y": "^8.1.10",
         "@storybook/addon-essentials": "^8.1.10",
@@ -249,7 +250,7 @@
         "jest-circus": "29.4.1",
         "jest-cli": "29.4.1",
         "jest-environment-jsdom": "^29.4.1",
-        "jest-expo": "52.0.3",
+        "jest-expo": "53.0.0-canary-20250306-d9d3e02",
         "jest-transformer-svg": "^2.0.1",
         "jest-when": "^3.5.2",
         "link": "^2.1.1",
@@ -303,9 +304,9 @@
       "license": "UNLICENSED"
     },
     "node_modules/@0no-co/graphql.web": {
-      "version": "1.0.13",
-      "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.0.13.tgz",
-      "integrity": "sha512-jqYxOevheVTU1S36ZdzAkJIdvRp2m3OYIG5SEoKDw5NI8eVwkoI0D/Q3DYNGmXCxkA6CQuoa7zvMiDPTLqUNuw==",
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@0no-co/graphql.web/-/graphql.web-1.1.2.tgz",
+      "integrity": "sha512-N2NGsU5FLBhT8NZ+3l2YrzZSHITjNXNuDhC4iDiikv0IujaJ0Xc6xIxQZ/Ek3Cb+rgPjnLHYyJm11tInuJn+cw==",
       "license": "MIT",
       "peerDependencies": {
         "graphql": "^14.0.0 || ^15.0.0 || ^16.0.0"
@@ -533,13 +534,13 @@
       }
     },
     "node_modules/@babel/generator": {
-      "version": "7.26.9",
-      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz",
-      "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz",
+      "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==",
       "license": "MIT",
       "dependencies": {
-        "@babel/parser": "^7.26.9",
-        "@babel/types": "^7.26.9",
+        "@babel/parser": "^7.27.0",
+        "@babel/types": "^7.27.0",
         "@jridgewell/gen-mapping": "^0.3.5",
         "@jridgewell/trace-mapping": "^0.3.25",
         "jsesc": "^3.0.2"
@@ -1124,12 +1125,12 @@
       }
     },
     "node_modules/@babel/parser": {
-      "version": "7.26.9",
-      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz",
-      "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz",
+      "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==",
       "license": "MIT",
       "dependencies": {
-        "@babel/types": "^7.26.9"
+        "@babel/types": "^7.27.0"
       },
       "bin": {
         "parser": "bin/babel-parser.js"
@@ -1248,6 +1249,7 @@
     },
     "node_modules/@babel/plugin-proposal-class-properties": {
       "version": "7.18.6",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@babel/helper-create-class-features-plugin": "^7.18.6",
@@ -1306,41 +1308,6 @@
         "@babel/core": "^7.0.0-0"
       }
     },
-    "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": {
-      "version": "7.18.6",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz",
-      "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==",
-      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.18.6",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
-    "node_modules/@babel/plugin-proposal-optional-chaining": {
-      "version": "7.21.0",
-      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz",
-      "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==",
-      "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/helper-plugin-utils": "^7.20.2",
-        "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3"
-      },
-      "engines": {
-        "node": ">=6.9.0"
-      },
-      "peerDependencies": {
-        "@babel/core": "^7.0.0-0"
-      }
-    },
     "node_modules/@babel/plugin-proposal-private-methods": {
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz",
@@ -2810,14 +2777,14 @@
       "license": "MIT"
     },
     "node_modules/@babel/template": {
-      "version": "7.26.9",
-      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz",
-      "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz",
+      "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "^7.26.2",
-        "@babel/parser": "^7.26.9",
-        "@babel/types": "^7.26.9"
+        "@babel/parser": "^7.27.0",
+        "@babel/types": "^7.27.0"
       },
       "engines": {
         "node": ">=6.9.0"
@@ -2862,9 +2829,9 @@
       }
     },
     "node_modules/@babel/types": {
-      "version": "7.26.9",
-      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz",
-      "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz",
+      "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==",
       "license": "MIT",
       "dependencies": {
         "@babel/helper-string-parser": "^7.25.9",
@@ -3723,9 +3690,9 @@
       "link": true
     },
     "node_modules/@expensify/react-native-live-markdown": {
-      "version": "0.1.244",
-      "resolved": "https://registry.npmjs.org/@expensify/react-native-live-markdown/-/react-native-live-markdown-0.1.244.tgz",
-      "integrity": "sha512-f9LD7Xbu8YG5Acc5gFsMhth8SoOFmE6aDeHsj21PYn2ZJXCJKJVCsctkH1o8MNhlKy+IEIM4pUSret3DGq0ikg==",
+      "version": "0.1.256",
+      "resolved": "https://registry.npmjs.org/@expensify/react-native-live-markdown/-/react-native-live-markdown-0.1.256.tgz",
+      "integrity": "sha512-tAra/qwrBz/B8B1EwxEaI0td4nNM0zyh8CD0IHDapu5kC65vk9MVicSkUIIJSeSLgyDCXtUmmBSd4SOmNskstA==",
       "license": "MIT",
       "workspaces": [
         "./example",
@@ -3741,67 +3708,48 @@
         "react-native-reanimated": ">=3.17.0"
       }
     },
-    "node_modules/@expo/bunyan": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@expo/bunyan/-/bunyan-4.0.1.tgz",
-      "integrity": "sha512-+Lla7nYSiHZirgK+U/uYzsLv/X+HaJienbD5AKX1UQZHYfWaP+9uuQluRB4GrEVWF0GZ7vEVp/jzaOT9k/SQlg==",
-      "license": "MIT",
-      "dependencies": {
-        "uuid": "^8.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/@expo/cli": {
-      "version": "0.22.11",
-      "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-0.22.11.tgz",
-      "integrity": "sha512-D5Vl7IBLi53WmL57NAFYB1mIqlMQxDIZVzbi/FTpo5a3oIHELKr0ElTKeOLf1f1/Y3FA7cxgphoawdA0+O1JWQ==",
+      "version": "1.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-1.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-Pp7PgZeG7O9Ou5d2W8vf3gwsUrIrFIw9VIycwJf37xplOFS/e/imenbR191N/FATxU9bzFThg0GN6p8fSYdeNA==",
       "license": "MIT",
       "dependencies": {
         "@0no-co/graphql.web": "^1.0.8",
         "@babel/runtime": "^7.20.0",
         "@expo/code-signing-certificates": "^0.0.5",
-        "@expo/config": "~10.0.8",
-        "@expo/config-plugins": "~9.0.14",
+        "@expo/config": "11.0.0-canary-20250306-d9d3e02",
+        "@expo/config-plugins": "9.1.0-canary-20250306-d9d3e02",
         "@expo/devcert": "^1.1.2",
-        "@expo/env": "~0.4.1",
-        "@expo/image-utils": "^0.6.4",
-        "@expo/json-file": "^9.0.1",
-        "@expo/metro-config": "~0.19.9",
-        "@expo/osascript": "^2.1.5",
-        "@expo/package-manager": "^1.7.1",
-        "@expo/plist": "^0.2.1",
-        "@expo/prebuild-config": "^8.0.25",
-        "@expo/rudder-sdk-node": "^1.1.1",
+        "@expo/env": "1.0.1-canary-20250306-d9d3e02",
+        "@expo/image-utils": "0.6.6-canary-20250306-d9d3e02",
+        "@expo/json-file": "9.0.3-canary-20250306-d9d3e02",
+        "@expo/metro-config": "0.20.0-canary-20250306-d9d3e02",
+        "@expo/osascript": "2.1.7-canary-20250306-d9d3e02",
+        "@expo/package-manager": "1.6.2-canary-20250306-d9d3e02",
+        "@expo/plist": "0.2.3-canary-20250306-d9d3e02",
+        "@expo/prebuild-config": "9.0.0-canary-20250306-d9d3e02",
         "@expo/spawn-async": "^1.7.2",
+        "@expo/ws-tunnel": "^1.0.1",
         "@expo/xcpretty": "^4.3.0",
-        "@react-native/dev-middleware": "0.76.6",
+        "@react-native/dev-middleware": "0.78.0",
         "@urql/core": "^5.0.6",
         "@urql/exchange-retry": "^1.3.0",
         "accepts": "^1.3.8",
         "arg": "^5.0.2",
         "better-opn": "~3.0.2",
-        "bplist-creator": "0.0.7",
+        "bplist-creator": "0.1.0",
         "bplist-parser": "^0.3.1",
-        "cacache": "^18.0.2",
         "chalk": "^4.0.0",
         "ci-info": "^3.3.0",
         "compression": "^1.7.4",
         "connect": "^3.7.0",
         "debug": "^4.3.4",
         "env-editor": "^0.4.1",
-        "fast-glob": "^3.3.2",
-        "form-data": "^3.0.1",
         "freeport-async": "^2.0.0",
-        "fs-extra": "~8.1.0",
         "getenv": "^1.0.0",
         "glob": "^10.4.2",
-        "internal-ip": "^4.3.0",
-        "is-docker": "^2.0.0",
-        "is-wsl": "^2.1.1",
-        "lodash.debounce": "^4.0.8",
-        "minimatch": "^3.0.4",
+        "internal-ip": "6.1.0",
+        "minimatch": "^9.0.0",
         "node-forge": "^1.3.1",
         "npm-package-arg": "^11.0.0",
         "ora": "^3.4.0",
@@ -3822,12 +3770,9 @@
         "source-map-support": "~0.5.21",
         "stacktrace-parser": "^0.1.10",
         "structured-headers": "^0.4.1",
-        "tar": "^6.2.1",
-        "temp-dir": "^2.0.0",
-        "tempy": "^0.7.1",
+        "tar": "^7.4.3",
         "terminal-link": "^2.1.1",
         "undici": "^6.18.2",
-        "unique-string": "~2.0.0",
         "wrap-ansi": "^7.0.0",
         "ws": "^8.12.1"
       },
@@ -3881,6 +3826,15 @@
         "url": "https://github.com/chalk/chalk?sponsor=1"
       }
     },
+    "node_modules/@expo/cli/node_modules/chownr": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz",
+      "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==",
+      "license": "BlueOak-1.0.0",
+      "engines": {
+        "node": ">=18"
+      }
+    },
     "node_modules/@expo/cli/node_modules/cli-cursor": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
@@ -3920,20 +3874,6 @@
         "node": ">=0.8.0"
       }
     },
-    "node_modules/@expo/cli/node_modules/fs-extra": {
-      "version": "8.1.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
-      "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
-      "license": "MIT",
-      "dependencies": {
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^4.0.0",
-        "universalify": "^0.1.0"
-      },
-      "engines": {
-        "node": ">=6 <7 || >=8"
-      }
-    },
     "node_modules/@expo/cli/node_modules/glob": {
       "version": "10.4.5",
       "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
@@ -3954,21 +3894,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@expo/cli/node_modules/glob/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
     "node_modules/@expo/cli/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -3978,15 +3903,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/@expo/cli/node_modules/jsonfile": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
-      "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
-      "license": "MIT",
-      "optionalDependencies": {
-        "graceful-fs": "^4.1.6"
-      }
-    },
     "node_modules/@expo/cli/node_modules/log-symbols": {
       "version": "2.2.0",
       "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz",
@@ -4070,6 +3986,21 @@
         "node": ">=4"
       }
     },
+    "node_modules/@expo/cli/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@expo/cli/node_modules/minipass": {
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -4079,6 +4010,34 @@
         "node": ">=16 || 14 >=14.17"
       }
     },
+    "node_modules/@expo/cli/node_modules/minizlib": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz",
+      "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==",
+      "license": "MIT",
+      "dependencies": {
+        "minipass": "^7.0.4",
+        "rimraf": "^5.0.5"
+      },
+      "engines": {
+        "node": ">= 18"
+      }
+    },
+    "node_modules/@expo/cli/node_modules/mkdirp": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz",
+      "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==",
+      "license": "MIT",
+      "bin": {
+        "mkdirp": "dist/cjs/src/bin.js"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@expo/cli/node_modules/onetime": {
       "version": "2.0.1",
       "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz",
@@ -4195,10 +4154,25 @@
         "node": ">=4"
       }
     },
+    "node_modules/@expo/cli/node_modules/rimraf": {
+      "version": "5.0.10",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
+      "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
+      "license": "ISC",
+      "dependencies": {
+        "glob": "^10.3.7"
+      },
+      "bin": {
+        "rimraf": "dist/esm/bin.mjs"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@expo/cli/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
@@ -4231,13 +4205,30 @@
         "node": ">=8"
       }
     },
-    "node_modules/@expo/cli/node_modules/universalify": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
-      "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
-      "license": "MIT",
+    "node_modules/@expo/cli/node_modules/tar": {
+      "version": "7.4.3",
+      "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz",
+      "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==",
+      "license": "ISC",
+      "dependencies": {
+        "@isaacs/fs-minipass": "^4.0.0",
+        "chownr": "^3.0.0",
+        "minipass": "^7.1.2",
+        "minizlib": "^3.0.1",
+        "mkdirp": "^3.0.1",
+        "yallist": "^5.0.0"
+      },
       "engines": {
-        "node": ">= 4.0.0"
+        "node": ">=18"
+      }
+    },
+    "node_modules/@expo/cli/node_modules/yallist": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz",
+      "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==",
+      "license": "BlueOak-1.0.0",
+      "engines": {
+        "node": ">=18"
       }
     },
     "node_modules/@expo/code-signing-certificates": {
@@ -4251,15 +4242,15 @@
       }
     },
     "node_modules/@expo/config": {
-      "version": "10.0.10",
-      "resolved": "https://registry.npmjs.org/@expo/config/-/config-10.0.10.tgz",
-      "integrity": "sha512-wI9/iam3Irk99ADGM/FyD7YrrEibIZXR4huSZiU5zt9o3dASOKhqepiNJex4YPiktLfKhYrpSEJtwno1g0SrgA==",
+      "version": "11.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/config/-/config-11.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-f/mkS3sYTYjo67MU3daDfH5JOYVXFcOg8gcfgbo+QsFiRJpKD72uTit/mAL+59bvPxsP38KKQJNAzJ1Yey9q4w==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "~7.10.4",
-        "@expo/config-plugins": "~9.0.15",
-        "@expo/config-types": "^52.0.4",
-        "@expo/json-file": "^9.0.2",
+        "@expo/config-plugins": "9.1.0-canary-20250306-d9d3e02",
+        "@expo/config-types": "53.0.0-canary-20250306-d9d3e02",
+        "@expo/json-file": "9.0.3-canary-20250306-d9d3e02",
         "deepmerge": "^4.3.1",
         "getenv": "^1.0.0",
         "glob": "^10.4.2",
@@ -4272,14 +4263,14 @@
       }
     },
     "node_modules/@expo/config-plugins": {
-      "version": "9.0.16",
-      "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.0.16.tgz",
-      "integrity": "sha512-AnJzmFB7ztM0JZBn+Ut6BQYC2WeGDzfIhBZVOIPMQbdBqvwJ7TmFEsGTGSxdwU/VqJaJK2sWxyt1zbWkpIYCEA==",
+      "version": "9.1.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/config-plugins/-/config-plugins-9.1.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-8v0v67OV6jcSBUOocyc0ELo66DkZks1wfT1FPHPLZz43J/oOrptAdm71ZKvHweSdHkbOgkS6DyciKdWnjcK6gg==",
       "license": "MIT",
       "dependencies": {
-        "@expo/config-types": "^52.0.5",
-        "@expo/json-file": "~9.0.2",
-        "@expo/plist": "^0.2.2",
+        "@expo/config-types": "53.0.0-canary-20250306-d9d3e02",
+        "@expo/json-file": "9.0.3-canary-20250306-d9d3e02",
+        "@expo/plist": "0.2.3-canary-20250306-d9d3e02",
         "@expo/sdk-runtime-versions": "^1.0.0",
         "chalk": "^4.1.2",
         "debug": "^4.3.5",
@@ -4405,9 +4396,9 @@
       }
     },
     "node_modules/@expo/config-plugins/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
@@ -4429,9 +4420,9 @@
       }
     },
     "node_modules/@expo/config-types": {
-      "version": "52.0.5",
-      "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-52.0.5.tgz",
-      "integrity": "sha512-AMDeuDLHXXqd8W+0zSjIt7f37vUd/BP8p43k68NHpyAvQO+z8mbQZm3cNQVAMySeayK2XoPigAFB1JF2NFajaA==",
+      "version": "53.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/config-types/-/config-types-53.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-Kna72gQozGDCeCnayyKksA8XDdGozvK7oL9Yp0/DdjCwZgut3uXE38aN9Agmi5dYK6XzbakpPUimSxNU/i083w==",
       "license": "MIT"
     },
     "node_modules/@expo/config/node_modules/@babel/code-frame": {
@@ -4497,9 +4488,9 @@
       }
     },
     "node_modules/@expo/config/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
@@ -4622,9 +4613,9 @@
       }
     },
     "node_modules/@expo/env": {
-      "version": "0.4.2",
-      "resolved": "https://registry.npmjs.org/@expo/env/-/env-0.4.2.tgz",
-      "integrity": "sha512-TgbCgvSk0Kq0e2fLoqHwEBL4M0ztFjnBEz0YCDm5boc1nvkV1VMuIMteVdeBwnTh8Z0oPJTwHCD49vhMEt1I6A==",
+      "version": "1.0.1-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/env/-/env-1.0.1-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-9+ZxeROpsPS/3K51uUfXyoXw8Y3pORT+u9K5rkhkOeeNRTE7FR8f4NFgDWOk7qle2NkG6/JTnE2QbJSWhqfyUQ==",
       "license": "MIT",
       "dependencies": {
         "chalk": "^4.0.0",
@@ -4705,9 +4696,9 @@
       }
     },
     "node_modules/@expo/fingerprint": {
-      "version": "0.11.7",
-      "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.11.7.tgz",
-      "integrity": "sha512-2rfYVS4nqWmOPQk+AL5GPfPSawbqqmI5mL++bxAhWADt+d+fjoQYfIrGtjZxQ30f9o/a1PrRPVSuh2j09+diVg==",
+      "version": "0.11.12-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/fingerprint/-/fingerprint-0.11.12-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-77hVUZqByM7bIMTYy4vf0canNEuPlp1mjKn9T8VnMMAkiJMJJGi6hMRyU0nsnJM8x5NtZD/L9DgoKhK8iYy9jw==",
       "license": "MIT",
       "dependencies": {
         "@expo/spawn-async": "^1.7.2",
@@ -4716,7 +4707,7 @@
         "debug": "^4.3.4",
         "find-up": "^5.0.0",
         "getenv": "^1.0.0",
-        "minimatch": "^3.0.4",
+        "minimatch": "^9.0.0",
         "p-limit": "^3.1.0",
         "resolve-from": "^5.0.0",
         "semver": "^7.6.0"
@@ -4746,6 +4737,15 @@
       "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",
       "license": "MIT"
     },
+    "node_modules/@expo/fingerprint/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "node_modules/@expo/fingerprint/node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -4789,10 +4789,25 @@
         "node": ">=8"
       }
     },
+    "node_modules/@expo/fingerprint/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/@expo/fingerprint/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
@@ -4814,14 +4829,13 @@
       }
     },
     "node_modules/@expo/image-utils": {
-      "version": "0.6.5",
-      "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.6.5.tgz",
-      "integrity": "sha512-RsS/1CwJYzccvlprYktD42KjyfWZECH6PPIEowvoSmXfGLfdViwcUEI4RvBfKX5Jli6P67H+6YmHvPTbGOboew==",
+      "version": "0.6.6-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.6.6-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-2Sqi+10F8uKNYWZMDxvWP1cXUmdpRq50NYTBTV0IgHDsBc+bcJ+fWYe/4NmF8aukY/MgB0BAycIiDBxXn5JZOg==",
       "license": "MIT",
       "dependencies": {
         "@expo/spawn-async": "^1.7.2",
         "chalk": "^4.0.0",
-        "fs-extra": "9.0.0",
         "getenv": "^1.0.0",
         "jimp-compact": "0.16.1",
         "parse-png": "^2.1.0",
@@ -4880,21 +4894,6 @@
       "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
       "license": "MIT"
     },
-    "node_modules/@expo/image-utils/node_modules/fs-extra": {
-      "version": "9.0.0",
-      "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.0.0.tgz",
-      "integrity": "sha512-pmEYSk3vYsG/bF651KPUXZ+hvjpgWYw/Gc7W9NFUe3ZVLczKKWIij3IKpOrQcdw4TILtibFslZ0UmR8Vvzig4g==",
-      "license": "MIT",
-      "dependencies": {
-        "at-least-node": "^1.0.0",
-        "graceful-fs": "^4.2.0",
-        "jsonfile": "^6.0.1",
-        "universalify": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      }
-    },
     "node_modules/@expo/image-utils/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -4905,9 +4904,9 @@
       }
     },
     "node_modules/@expo/image-utils/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
@@ -4928,19 +4927,10 @@
         "node": ">=8"
       }
     },
-    "node_modules/@expo/image-utils/node_modules/universalify": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/universalify/-/universalify-1.0.0.tgz",
-      "integrity": "sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 10.0.0"
-      }
-    },
     "node_modules/@expo/json-file": {
-      "version": "9.0.2",
-      "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.0.2.tgz",
-      "integrity": "sha512-yAznIUrybOIWp3Uax7yRflB0xsEpvIwIEqIjao9SGi2Gaa+N0OamWfe0fnXBSWF+2zzF4VvqwT4W5zwelchfgw==",
+      "version": "9.0.3-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-9.0.3-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-9qrcHOEUqoesMRcjCxnxISvYT6XmKS0k30yBaVOMJ7UN021kgQbe5KT58Nf6kv8tkZ90AouAI1i/XqlBbbOayw==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "~7.10.4",
@@ -4958,27 +4948,26 @@
       }
     },
     "node_modules/@expo/metro-config": {
-      "version": "0.19.9",
-      "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.19.9.tgz",
-      "integrity": "sha512-JAsLWhFQqwLH0KsI4OMbPXsKFji5KJEmsi+/02Sz1GCT17YrjRmv1fZ91regUS/FUH2Y/PDAE/+2ulrTgMeG7A==",
+      "version": "0.20.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-0.20.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-LRQroidJZCRsdmIQueCZJ9CeDeDsNGMrhB7NrrljmkMtQW2VKoBcugM+DDY+lLADr9S3a5JRl74new6HQDkWZQ==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.20.0",
         "@babel/generator": "^7.20.5",
         "@babel/parser": "^7.20.0",
         "@babel/types": "^7.20.0",
-        "@expo/config": "~10.0.8",
-        "@expo/env": "~0.4.1",
-        "@expo/json-file": "~9.0.1",
+        "@expo/config": "11.0.0-canary-20250306-d9d3e02",
+        "@expo/env": "1.0.1-canary-20250306-d9d3e02",
+        "@expo/json-file": "9.0.3-canary-20250306-d9d3e02",
         "@expo/spawn-async": "^1.7.2",
         "chalk": "^4.1.0",
         "debug": "^4.3.2",
-        "fs-extra": "^9.1.0",
         "getenv": "^1.0.0",
         "glob": "^10.4.2",
         "jsc-safe-url": "^0.2.4",
         "lightningcss": "~1.27.0",
-        "minimatch": "^3.0.4",
+        "minimatch": "^9.0.0",
         "postcss": "~8.4.32",
         "resolve-from": "^5.0.0"
       }
@@ -5061,7 +5050,16 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@expo/metro-config/node_modules/glob/node_modules/minimatch": {
+    "node_modules/@expo/metro-config/node_modules/has-flag": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/@expo/metro-config/node_modules/minimatch": {
       "version": "9.0.5",
       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
       "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
@@ -5076,15 +5074,6 @@
         "url": "https://github.com/sponsors/isaacs"
       }
     },
-    "node_modules/@expo/metro-config/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/@expo/metro-config/node_modules/minipass": {
       "version": "7.1.2",
       "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
@@ -5107,18 +5096,18 @@
       }
     },
     "node_modules/@expo/metro-runtime": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-4.0.1.tgz",
-      "integrity": "sha512-CRpbLvdJ1T42S+lrYa1iZp1KfDeBp4oeZOK3hdpiS5n0vR0nhD6sC1gGF0sTboCTp64tLteikz5Y3j53dvgOIw==",
+      "version": "4.0.2-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/metro-runtime/-/metro-runtime-4.0.2-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-38Z8BacXSNzHGW5FLd/2tcFzKiCS9k7gkCMP7OwibqzBKHEdGdG64NYO23sdMXpi/ijaqPxkrLxtGGUwMLEphg==",
       "license": "MIT",
       "peerDependencies": {
         "react-native": "*"
       }
     },
     "node_modules/@expo/osascript": {
-      "version": "2.1.5",
-      "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.5.tgz",
-      "integrity": "sha512-Cp7YF7msGiTAIbFdzNovwHBfecdMLVL5XzSqq4xQz72ALFCQ3uSIUXRph1QV2r61ugH7Yem0gY8yi7RcDlI4qg==",
+      "version": "2.1.7-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.1.7-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-84GY3VyI/KSSixjAVtQtZHTZ6qb6naGrv0CLFLOSxTIfYEUrdkutxMIAxxIPawsTWzZdTh3Ph8ZR8jSdrfTYjw==",
       "license": "MIT",
       "dependencies": {
         "@expo/spawn-async": "^1.7.2",
@@ -5129,32 +5118,17 @@
       }
     },
     "node_modules/@expo/package-manager": {
-      "version": "1.7.1",
-      "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.7.1.tgz",
-      "integrity": "sha512-DKbELrTOdl7U3KT0C07Aka9P+sUP3LL+1UTKf1KmLx2x2gPH1IC+c68N7iQlwNt+yA37qIw6/vKoqyTGu5EL9g==",
+      "version": "1.6.2-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.6.2-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-sF4tK3fHluqXJSzeF4tfJNLqCxLrLGigu8f9BDFZsUnlp0vjOViV0ymEJPBcx6//pgCPTuCWkDoGsj5UyYwbcQ==",
       "license": "MIT",
       "dependencies": {
-        "@expo/json-file": "^9.0.1",
+        "@expo/json-file": "9.0.3-canary-20250306-d9d3e02",
         "@expo/spawn-async": "^1.7.2",
-        "ansi-regex": "^5.0.0",
         "chalk": "^4.0.0",
-        "find-up": "^5.0.0",
-        "js-yaml": "^3.13.1",
-        "micromatch": "^4.0.8",
         "npm-package-arg": "^11.0.0",
         "ora": "^3.4.0",
-        "resolve-workspace-root": "^2.0.0",
-        "split": "^1.0.1",
-        "sudo-prompt": "9.1.1"
-      }
-    },
-    "node_modules/@expo/package-manager/node_modules/ansi-regex": {
-      "version": "5.0.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
-      "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
+        "resolve-workspace-root": "^2.0.0"
       }
     },
     "node_modules/@expo/package-manager/node_modules/ansi-styles": {
@@ -5435,22 +5409,6 @@
         "node": ">=6"
       }
     },
-    "node_modules/@expo/package-manager/node_modules/strip-ansi/node_modules/ansi-regex": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
-      "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/@expo/package-manager/node_modules/sudo-prompt": {
-      "version": "9.1.1",
-      "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.1.1.tgz",
-      "integrity": "sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==",
-      "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
-      "license": "MIT"
-    },
     "node_modules/@expo/package-manager/node_modules/supports-color": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -5464,45 +5422,62 @@
       }
     },
     "node_modules/@expo/plist": {
-      "version": "0.2.2",
-      "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.2.2.tgz",
-      "integrity": "sha512-ZZGvTO6vEWq02UAPs3LIdja+HRO18+LRI5QuDl6Hs3Ps7KX7xU6Y6kjahWKY37Rx2YjNpX07dGpBFzzC+vKa2g==",
+      "version": "0.2.3-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.2.3-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-2ImG5M36tAuKH5YQe7bvtzjQdkCakGmjsyj62RCWwrQ4TsZW7Z0DUHrjMl3GLt7hoy/tzYFGNWLQ7/sASDECyw==",
       "license": "MIT",
       "dependencies": {
-        "@xmldom/xmldom": "~0.7.7",
+        "@xmldom/xmldom": "^0.8.8",
         "base64-js": "^1.2.3",
-        "xmlbuilder": "^14.0.0"
+        "xmlbuilder": "^15.1.1"
+      }
+    },
+    "node_modules/@expo/plist/node_modules/@xmldom/xmldom": {
+      "version": "0.8.10",
+      "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
+      "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=10.0.0"
+      }
+    },
+    "node_modules/@expo/plist/node_modules/xmlbuilder": {
+      "version": "15.1.1",
+      "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
+      "integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">=8.0"
       }
     },
     "node_modules/@expo/prebuild-config": {
-      "version": "8.0.25",
-      "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-8.0.25.tgz",
-      "integrity": "sha512-xYHV8eiydZEDedf2AGaOFRFwcGlaSzrqQH94dwX42urNCU03FO0RUb7yPp4nkb7WNFg5Ov6PDsV7ES+YwzNgYQ==",
+      "version": "9.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/@expo/prebuild-config/-/prebuild-config-9.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-7K7NdT/t8GaYHC30EydZQV63jrFLSGYrCxtPIp9VHqjiqInXZlUOoe6x/TnCncWPTMOirXSW1S8OZw4t15gKAg==",
       "license": "MIT",
       "dependencies": {
-        "@expo/config": "~10.0.8",
-        "@expo/config-plugins": "~9.0.14",
-        "@expo/config-types": "^52.0.3",
-        "@expo/image-utils": "^0.6.4",
-        "@expo/json-file": "^9.0.1",
-        "@react-native/normalize-colors": "0.76.6",
+        "@expo/config": "11.0.0-canary-20250306-d9d3e02",
+        "@expo/config-plugins": "9.1.0-canary-20250306-d9d3e02",
+        "@expo/config-types": "53.0.0-canary-20250306-d9d3e02",
+        "@expo/image-utils": "0.6.6-canary-20250306-d9d3e02",
+        "@expo/json-file": "9.0.3-canary-20250306-d9d3e02",
+        "@react-native/normalize-colors": "0.78.0",
         "debug": "^4.3.1",
-        "fs-extra": "^9.0.0",
         "resolve-from": "^5.0.0",
         "semver": "^7.6.0",
         "xml2js": "0.6.0"
       }
     },
     "node_modules/@expo/prebuild-config/node_modules/@react-native/normalize-colors": {
-      "version": "0.76.6",
-      "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.76.6.tgz",
-      "integrity": "sha512-1n4udXH2Cla31iA/8eLRdhFHpYUYK1NKWCn4m1Sr9L4SarWKAYuRFliK1fcLvPPALCFoFlWvn8I0ekdUOHMzDQ==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.78.0.tgz",
+      "integrity": "sha512-FkeLvLLaMYlGsSntixTUvlNtc1OHij4TYRtymMNPWqBKFAMXJB/qe45VxXNzWP+jD0Ok6yXineQFtktKcHk9PA==",
       "license": "MIT"
     },
     "node_modules/@expo/prebuild-config/node_modules/semver": {
-      "version": "7.6.3",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
-      "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+      "version": "7.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
+      "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
       "license": "ISC",
       "bin": {
         "semver": "bin/semver.js"
@@ -5511,24 +5486,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/@expo/rudder-sdk-node": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/@expo/rudder-sdk-node/-/rudder-sdk-node-1.1.1.tgz",
-      "integrity": "sha512-uy/hS/awclDJ1S88w9UGpc6Nm9XnNUjzOAAib1A3PVAnGQIwebg8DpFqOthFBTlZxeuV/BKbZ5jmTbtNZkp1WQ==",
-      "license": "MIT",
-      "dependencies": {
-        "@expo/bunyan": "^4.0.0",
-        "@segment/loosely-validate-event": "^2.0.0",
-        "fetch-retry": "^4.1.1",
-        "md5": "^2.2.1",
-        "node-fetch": "^2.6.1",
-        "remove-trailing-slash": "^0.1.0",
-        "uuid": "^8.3.2"
-      },
-      "engines": {
-        "node": ">=12"
-      }
-    },
     "node_modules/@expo/sdk-runtime-versions": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/@expo/sdk-runtime-versions/-/sdk-runtime-versions-1.0.0.tgz",
@@ -5551,6 +5508,12 @@
       "version": "14.0.0",
       "license": "MIT"
     },
+    "node_modules/@expo/ws-tunnel": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/@expo/ws-tunnel/-/ws-tunnel-1.0.6.tgz",
+      "integrity": "sha512-nDRbLmSrJar7abvUjp3smDwH8HcbZcoOEa5jVPUv9/9CajgmWw20JNRwTuBRzWIWIkEJDkz20GoNA+tSwUqk0Q==",
+      "license": "MIT"
+    },
     "node_modules/@expo/xcpretty": {
       "version": "4.3.2",
       "resolved": "https://registry.npmjs.org/@expo/xcpretty/-/xcpretty-4.3.2.tgz",
@@ -6372,6 +6335,27 @@
         "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
       }
     },
+    "node_modules/@isaacs/fs-minipass": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz",
+      "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==",
+      "license": "ISC",
+      "dependencies": {
+        "minipass": "^7.0.4"
+      },
+      "engines": {
+        "node": ">=18.0.0"
+      }
+    },
+    "node_modules/@isaacs/fs-minipass/node_modules/minipass": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
     "node_modules/@isaacs/ttlcache": {
       "version": "1.4.1",
       "license": "ISC",
@@ -7543,6 +7527,7 @@
     },
     "node_modules/@nodelib/fs.scandir": {
       "version": "2.1.5",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "2.0.5",
@@ -7554,6 +7539,7 @@
     },
     "node_modules/@nodelib/fs.stat": {
       "version": "2.0.5",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 8"
@@ -7561,6 +7547,7 @@
     },
     "node_modules/@nodelib/fs.walk": {
       "version": "1.2.8",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@nodelib/fs.scandir": "2.1.5",
@@ -7570,18 +7557,6 @@
         "node": ">= 8"
       }
     },
-    "node_modules/@npmcli/fs": {
-      "version": "3.1.1",
-      "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz",
-      "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==",
-      "license": "ISC",
-      "dependencies": {
-        "semver": "^7.3.5"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
     "node_modules/@npmcli/move-file": {
       "version": "2.0.1",
       "dev": true,
@@ -9672,6 +9647,8 @@
     },
     "node_modules/@react-native-community/netinfo": {
       "version": "11.2.1",
+      "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-11.2.1.tgz",
+      "integrity": "sha512-n9kgmH7vLaU7Cdo8vGfJGGwhrlgppaOSq5zKj9I7H4k5iRM3aNtwURw83mgrc22Ip7nSye2afZV2xDiIyvHttQ==",
       "license": "MIT",
       "peerDependencies": {
         "react-native": ">=0.59"
@@ -10231,16 +10208,16 @@
       }
     },
     "node_modules/@react-native/babel-plugin-codegen/node_modules/@babel/traverse": {
-      "version": "7.26.9",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz",
-      "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+      "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "^7.26.2",
-        "@babel/generator": "^7.26.9",
-        "@babel/parser": "^7.26.9",
-        "@babel/template": "^7.26.9",
-        "@babel/types": "^7.26.9",
+        "@babel/generator": "^7.27.0",
+        "@babel/parser": "^7.27.0",
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0",
         "debug": "^4.3.1",
         "globals": "^11.1.0"
       },
@@ -10357,38 +10334,6 @@
         }
       }
     },
-    "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/debugger-frontend": {
-      "version": "0.78.0",
-      "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.78.0.tgz",
-      "integrity": "sha512-KQYD9QlxES/VdmXh9EEvtZCJK1KAemLlszQq4dpLU1stnue5N8dnCY6A7PpStMf5UtAMk7tiniQhaicw0uVHgQ==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/@react-native/community-cli-plugin/node_modules/@react-native/dev-middleware": {
-      "version": "0.78.0",
-      "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.78.0.tgz",
-      "integrity": "sha512-zEafAZdOz4s37Jh5Xcv4hJE5qZ6uNxgrTLcpjDOJnQG6dO34/BoZeXvDrjomQFNn6ogdysR51mKJStaQ3ixp5A==",
-      "license": "MIT",
-      "dependencies": {
-        "@isaacs/ttlcache": "^1.4.1",
-        "@react-native/debugger-frontend": "0.78.0",
-        "chrome-launcher": "^0.15.2",
-        "chromium-edge-launcher": "^0.2.0",
-        "connect": "^3.6.5",
-        "debug": "^2.2.0",
-        "invariant": "^2.2.4",
-        "nullthrows": "^1.1.1",
-        "open": "^7.0.3",
-        "selfsigned": "^2.4.1",
-        "serve-static": "^1.16.2",
-        "ws": "^6.2.3"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
     "node_modules/@react-native/community-cli-plugin/node_modules/ansi-styles": {
       "version": "4.3.0",
       "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
@@ -10447,15 +10392,6 @@
         "ms": "2.0.0"
       }
     },
-    "node_modules/@react-native/community-cli-plugin/node_modules/encodeurl": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
-      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
-      "license": "MIT",
-      "engines": {
-        "node": ">= 0.8"
-      }
-    },
     "node_modules/@react-native/community-cli-plugin/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -10471,21 +10407,6 @@
       "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
-    "node_modules/@react-native/community-cli-plugin/node_modules/serve-static": {
-      "version": "1.16.2",
-      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
-      "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
-      "license": "MIT",
-      "dependencies": {
-        "encodeurl": "~2.0.0",
-        "escape-html": "~1.0.3",
-        "parseurl": "~1.3.3",
-        "send": "0.19.0"
-      },
-      "engines": {
-        "node": ">= 0.8.0"
-      }
-    },
     "node_modules/@react-native/community-cli-plugin/node_modules/supports-color": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -10499,30 +10420,31 @@
       }
     },
     "node_modules/@react-native/debugger-frontend": {
-      "version": "0.76.6",
-      "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.76.6.tgz",
-      "integrity": "sha512-kP97xMQjiANi5/lmf8MakS7d8FTJl+BqYHQMqyvNiY+eeWyKnhqW2GL2v3eEUBAuyPBgJGivuuO4RvjZujduJg==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.78.0.tgz",
+      "integrity": "sha512-KQYD9QlxES/VdmXh9EEvtZCJK1KAemLlszQq4dpLU1stnue5N8dnCY6A7PpStMf5UtAMk7tiniQhaicw0uVHgQ==",
       "license": "BSD-3-Clause",
       "engines": {
         "node": ">=18"
       }
     },
     "node_modules/@react-native/dev-middleware": {
-      "version": "0.76.6",
-      "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.76.6.tgz",
-      "integrity": "sha512-1bAyd2/X48Nzb45s5l2omM75vy764odx/UnDs4sJfFCuK+cupU4nRPgl0XWIqgdM/2+fbQ3E4QsVS/WIKTFxvQ==",
+      "version": "0.78.0",
+      "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.78.0.tgz",
+      "integrity": "sha512-zEafAZdOz4s37Jh5Xcv4hJE5qZ6uNxgrTLcpjDOJnQG6dO34/BoZeXvDrjomQFNn6ogdysR51mKJStaQ3ixp5A==",
       "license": "MIT",
       "dependencies": {
         "@isaacs/ttlcache": "^1.4.1",
-        "@react-native/debugger-frontend": "0.76.6",
+        "@react-native/debugger-frontend": "0.78.0",
         "chrome-launcher": "^0.15.2",
         "chromium-edge-launcher": "^0.2.0",
         "connect": "^3.6.5",
         "debug": "^2.2.0",
+        "invariant": "^2.2.4",
         "nullthrows": "^1.1.1",
         "open": "^7.0.3",
         "selfsigned": "^2.4.1",
-        "serve-static": "^1.13.1",
+        "serve-static": "^1.16.2",
         "ws": "^6.2.3"
       },
       "engines": {
@@ -10538,12 +10460,36 @@
         "ms": "2.0.0"
       }
     },
+    "node_modules/@react-native/dev-middleware/node_modules/encodeurl": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz",
+      "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==",
+      "license": "MIT",
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
     "node_modules/@react-native/dev-middleware/node_modules/ms": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
       "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==",
       "license": "MIT"
     },
+    "node_modules/@react-native/dev-middleware/node_modules/serve-static": {
+      "version": "1.16.2",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz",
+      "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==",
+      "license": "MIT",
+      "dependencies": {
+        "encodeurl": "~2.0.0",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.19.0"
+      },
+      "engines": {
+        "node": ">= 0.8.0"
+      }
+    },
     "node_modules/@react-native/gradle-plugin": {
       "version": "0.78.0",
       "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.78.0.tgz",
@@ -10581,14 +10527,14 @@
       }
     },
     "node_modules/@react-native/metro-config": {
-      "version": "0.78.0",
-      "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.78.0.tgz",
-      "integrity": "sha512-fPdIPMXTIZfpA4zLuTdeEQYAtNj8pGXnXbil9bfoB5PPf7seacreSxqxqwihRSRafl29j6kXSBgS7TskPBhGow==",
+      "version": "0.78.1",
+      "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.78.1.tgz",
+      "integrity": "sha512-T1oAVGGKKscpnfYKkKTGtxZaMcUrkZfHkJn4m9behp0NpWzijRKlo7N69+IKWAwQGSs1l2UJOhQrKbPkhdMgtw==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@react-native/js-polyfills": "0.78.0",
-        "@react-native/metro-babel-transformer": "0.78.0",
+        "@react-native/js-polyfills": "0.78.1",
+        "@react-native/metro-babel-transformer": "0.78.1",
         "metro-config": "^0.81.0",
         "metro-runtime": "^0.81.0"
       },
@@ -10596,6 +10542,150 @@
         "node": ">=18"
       }
     },
+    "node_modules/@react-native/metro-config/node_modules/@babel/traverse": {
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+      "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.27.0",
+        "@babel/parser": "^7.27.0",
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0",
+        "debug": "^4.3.1",
+        "globals": "^11.1.0"
+      },
+      "engines": {
+        "node": ">=6.9.0"
+      }
+    },
+    "node_modules/@react-native/metro-config/node_modules/@react-native/babel-plugin-codegen": {
+      "version": "0.78.1",
+      "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.78.1.tgz",
+      "integrity": "sha512-rD0tnct/yPEtoOc8eeFHIf8ZJJJEzLkmqLs8HZWSkt3w9VYWngqLXZxiDGqv0ngXjunAlC/Hpq+ULMVOvOnByw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/traverse": "^7.25.3",
+        "@react-native/codegen": "0.78.1"
+      },
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@react-native/metro-config/node_modules/@react-native/babel-preset": {
+      "version": "0.78.1",
+      "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.78.1.tgz",
+      "integrity": "sha512-yTVcHmEdNQH4Ju7lhvbiQaGxBpMcalgkBy/IvHowXKk/ex3nY1PolF16/mBG1BrefcUA/rtJpqTtk2Ii+7T/Lw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.25.2",
+        "@babel/plugin-proposal-export-default-from": "^7.24.7",
+        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
+        "@babel/plugin-syntax-export-default-from": "^7.24.7",
+        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+        "@babel/plugin-transform-arrow-functions": "^7.24.7",
+        "@babel/plugin-transform-async-generator-functions": "^7.25.4",
+        "@babel/plugin-transform-async-to-generator": "^7.24.7",
+        "@babel/plugin-transform-block-scoping": "^7.25.0",
+        "@babel/plugin-transform-class-properties": "^7.25.4",
+        "@babel/plugin-transform-classes": "^7.25.4",
+        "@babel/plugin-transform-computed-properties": "^7.24.7",
+        "@babel/plugin-transform-destructuring": "^7.24.8",
+        "@babel/plugin-transform-flow-strip-types": "^7.25.2",
+        "@babel/plugin-transform-for-of": "^7.24.7",
+        "@babel/plugin-transform-function-name": "^7.25.1",
+        "@babel/plugin-transform-literals": "^7.25.2",
+        "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
+        "@babel/plugin-transform-modules-commonjs": "^7.24.8",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
+        "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
+        "@babel/plugin-transform-numeric-separator": "^7.24.7",
+        "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+        "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
+        "@babel/plugin-transform-optional-chaining": "^7.24.8",
+        "@babel/plugin-transform-parameters": "^7.24.7",
+        "@babel/plugin-transform-private-methods": "^7.24.7",
+        "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+        "@babel/plugin-transform-react-display-name": "^7.24.7",
+        "@babel/plugin-transform-react-jsx": "^7.25.2",
+        "@babel/plugin-transform-react-jsx-self": "^7.24.7",
+        "@babel/plugin-transform-react-jsx-source": "^7.24.7",
+        "@babel/plugin-transform-regenerator": "^7.24.7",
+        "@babel/plugin-transform-runtime": "^7.24.7",
+        "@babel/plugin-transform-shorthand-properties": "^7.24.7",
+        "@babel/plugin-transform-spread": "^7.24.7",
+        "@babel/plugin-transform-sticky-regex": "^7.24.7",
+        "@babel/plugin-transform-typescript": "^7.25.2",
+        "@babel/plugin-transform-unicode-regex": "^7.24.7",
+        "@babel/template": "^7.25.0",
+        "@react-native/babel-plugin-codegen": "0.78.1",
+        "babel-plugin-syntax-hermes-parser": "0.25.1",
+        "babel-plugin-transform-flow-enums": "^0.0.2",
+        "react-refresh": "^0.14.0"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@babel/core": "*"
+      }
+    },
+    "node_modules/@react-native/metro-config/node_modules/@react-native/codegen": {
+      "version": "0.78.1",
+      "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.78.1.tgz",
+      "integrity": "sha512-kGG5qAM9JdFtxzUwe7c6CyJbsU2PnaTrtCHA2dF8VEiNX1K3yd9yKPzfkxA7HPvmHoAn3ga1941O79BStWcM3A==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/parser": "^7.25.3",
+        "glob": "^7.1.1",
+        "hermes-parser": "0.25.1",
+        "invariant": "^2.2.4",
+        "jscodeshift": "^17.0.0",
+        "nullthrows": "^1.1.1",
+        "yargs": "^17.6.2"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@babel/preset-env": "^7.1.6"
+      }
+    },
+    "node_modules/@react-native/metro-config/node_modules/@react-native/js-polyfills": {
+      "version": "0.78.1",
+      "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.78.1.tgz",
+      "integrity": "sha512-Ogcv4QOA1o3IyErrf/i4cDnP+nfNcIfGTgw6iNQyAPry1xjPOz4ziajskLpWG/3ADeneIZuyZppKB4A28rZSvg==",
+      "dev": true,
+      "license": "MIT",
+      "engines": {
+        "node": ">=18"
+      }
+    },
+    "node_modules/@react-native/metro-config/node_modules/@react-native/metro-babel-transformer": {
+      "version": "0.78.1",
+      "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.78.1.tgz",
+      "integrity": "sha512-jQWf69D+QTMvSZSWLR+cr3VUF16rGB6sbD+bItD8Czdfn3hajzfMoHJTkVFP7991cjK5sIVekNiQIObou8JSQw==",
+      "dev": true,
+      "license": "MIT",
+      "dependencies": {
+        "@babel/core": "^7.25.2",
+        "@react-native/babel-preset": "0.78.1",
+        "hermes-parser": "0.25.1",
+        "nullthrows": "^1.1.1"
+      },
+      "engines": {
+        "node": ">=18"
+      },
+      "peerDependencies": {
+        "@babel/core": "*"
+      }
+    },
     "node_modules/@react-native/normalize-color": {
       "version": "2.1.0",
       "license": "MIT"
@@ -10839,19 +10929,11 @@
         }
       }
     },
-    "node_modules/@segment/loosely-validate-event": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/@segment/loosely-validate-event/-/loosely-validate-event-2.0.0.tgz",
-      "integrity": "sha512-ZMCSfztDBqwotkl848ODgVcAmN4OItEWDCkshcKz0/W6gGSQayuuCtWV/MlodFivAZD793d6UgANd6wCXUfrIw==",
-      "dependencies": {
-        "component-type": "^1.2.1",
-        "join-component": "^1.1.0"
-      }
-    },
     "node_modules/@shopify/flash-list": {
       "version": "1.7.1",
       "resolved": "https://registry.npmjs.org/@shopify/flash-list/-/flash-list-1.7.1.tgz",
       "integrity": "sha512-sUYl7h8ydJutufA26E42Hj7cLvaBTpkMIyNJiFrxUspkcANb6jnFiLt9rEwAuDjvGk/C0lHau+WyT6ZOxqVPwg==",
+      "license": "MIT",
       "dependencies": {
         "recyclerlistview": "4.2.1",
         "tslib": "2.6.3"
@@ -10862,6 +10944,12 @@
         "react-native": "*"
       }
     },
+    "node_modules/@shopify/flash-list/node_modules/tslib": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
+      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
+      "license": "0BSD"
+    },
     "node_modules/@sideway/address": {
       "version": "4.1.5",
       "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz",
@@ -15565,9 +15653,9 @@
       "license": "ISC"
     },
     "node_modules/@urql/core": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.1.0.tgz",
-      "integrity": "sha512-yC3sw8yqjbX45GbXxfiBY8GLYCiyW/hLBbQF9l3TJrv4ro00Y0ChkKaD9I2KntRxAVm9IYBqh0awX8fwWAe/Yw==",
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/@urql/core/-/core-5.1.1.tgz",
+      "integrity": "sha512-aGh024z5v2oINGD/In6rAtVKTm4VmQ2TxKQBAtk2ZSME5dunZFcjltw4p5ENQg+5CBhZ3FHMzl0Oa+rwqiWqlg==",
       "license": "MIT",
       "dependencies": {
         "@0no-co/graphql.web": "^1.0.5",
@@ -15575,12 +15663,12 @@
       }
     },
     "node_modules/@urql/exchange-retry": {
-      "version": "1.3.0",
-      "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.0.tgz",
-      "integrity": "sha512-FLt+d81gP4oiHah4hWFDApimc+/xABWMU1AMYsZ1PVB0L0YPtrMCjbOp9WMM7hBzy4gbTDrG24sio0dCfSh/HQ==",
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/@urql/exchange-retry/-/exchange-retry-1.3.1.tgz",
+      "integrity": "sha512-EEmtFu8JTuwsInqMakhLq+U3qN8ZMd5V3pX44q0EqD2imqTDsa8ikZqJ1schVrN8HljOdN+C08cwZ1/r5uIgLw==",
       "license": "MIT",
       "dependencies": {
-        "@urql/core": "^5.0.0",
+        "@urql/core": "^5.1.1",
         "wonka": "^6.3.2"
       },
       "peerDependencies": {
@@ -15970,6 +16058,7 @@
     },
     "node_modules/aggregate-error": {
       "version": "3.1.0",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "clean-stack": "^2.0.0",
@@ -16497,6 +16586,7 @@
     },
     "node_modules/array-union": {
       "version": "2.1.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -16666,10 +16756,12 @@
     },
     "node_modules/asynckit": {
       "version": "0.4.0",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/at-least-node": {
       "version": "1.0.0",
+      "dev": true,
       "license": "ISC",
       "engines": {
         "node": ">= 4.0.0"
@@ -16711,6 +16803,7 @@
     },
     "node_modules/babel-core": {
       "version": "7.0.0-bridge.0",
+      "dev": true,
       "license": "MIT",
       "peerDependencies": {
         "@babel/core": "^7.0.0-0"
@@ -17293,20 +17386,32 @@
       }
     },
     "node_modules/babel-preset-expo": {
-      "version": "12.0.6",
-      "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-12.0.6.tgz",
-      "integrity": "sha512-az3H7gDVo0wxNBAFES8h5vLLWE8NPGkD9g5P962hDEOqZUdyPacb9MOzicypeLmcq9zQWr6E3iVtEHoNagCTTQ==",
+      "version": "13.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-13.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-65eIaxpY2EmsBIpCcF+ZvC9vWQn/1PML2tnGiB5dPSAmkmNlSPiC69WuD4pDEDX4L4Sy1pfEuuGPNEVixxGasQ==",
       "license": "MIT",
       "dependencies": {
+        "@babel/helper-module-imports": "^7.25.9",
         "@babel/plugin-proposal-decorators": "^7.12.9",
+        "@babel/plugin-proposal-export-default-from": "^7.24.7",
+        "@babel/plugin-syntax-export-default-from": "^7.24.7",
         "@babel/plugin-transform-export-namespace-from": "^7.22.11",
-        "@babel/plugin-transform-object-rest-spread": "^7.12.13",
-        "@babel/plugin-transform-parameters": "^7.22.15",
+        "@babel/plugin-transform-flow-strip-types": "^7.25.2",
+        "@babel/plugin-transform-modules-commonjs": "^7.24.8",
+        "@babel/plugin-transform-object-rest-spread": "^7.24.7",
+        "@babel/plugin-transform-parameters": "^7.24.7",
+        "@babel/plugin-transform-private-methods": "^7.24.7",
+        "@babel/plugin-transform-private-property-in-object": "^7.24.7",
+        "@babel/plugin-transform-runtime": "^7.24.7",
         "@babel/preset-react": "^7.22.15",
         "@babel/preset-typescript": "^7.23.0",
-        "@react-native/babel-preset": "0.76.6",
+        "@react-native/babel-preset": "0.78.0",
         "babel-plugin-react-native-web": "~0.19.13",
-        "react-refresh": "^0.14.2"
+        "babel-plugin-syntax-hermes-parser": "^0.25.1",
+        "babel-plugin-transform-flow-enums": "^0.0.2",
+        "debug": "^4.3.4",
+        "react-refresh": "^0.14.2",
+        "resolve-from": "^5.0.0"
       },
       "peerDependencies": {
         "babel-plugin-react-compiler": "^19.0.0-beta-9ee70a1-20241017",
@@ -17321,271 +17426,12 @@
         }
       }
     },
-    "node_modules/babel-preset-expo/node_modules/@react-native/babel-plugin-codegen": {
-      "version": "0.76.6",
-      "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.6.tgz",
-      "integrity": "sha512-yFC9I/aDBOBz3ZMlqKn2NY/mDUtCksUNZ7AQmBiTAeVTUP0ujEjE0hTOx5Qd+kok7A7hwZEX87HdSgjiJZfr5g==",
-      "license": "MIT",
-      "dependencies": {
-        "@react-native/codegen": "0.76.6"
-      },
-      "engines": {
-        "node": ">=18"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset": {
-      "version": "0.76.6",
-      "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.6.tgz",
-      "integrity": "sha512-ojlVWY6S/VE/nb9hIRetPMTsW9ZmGb2R3dnToEXAtQQDz41eHMHXbkw/k2h0THp6qhas25ruNvn3N5n2o+lBzg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.25.2",
-        "@babel/plugin-proposal-export-default-from": "^7.24.7",
-        "@babel/plugin-syntax-dynamic-import": "^7.8.3",
-        "@babel/plugin-syntax-export-default-from": "^7.24.7",
-        "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
-        "@babel/plugin-syntax-optional-chaining": "^7.8.3",
-        "@babel/plugin-transform-arrow-functions": "^7.24.7",
-        "@babel/plugin-transform-async-generator-functions": "^7.25.4",
-        "@babel/plugin-transform-async-to-generator": "^7.24.7",
-        "@babel/plugin-transform-block-scoping": "^7.25.0",
-        "@babel/plugin-transform-class-properties": "^7.25.4",
-        "@babel/plugin-transform-classes": "^7.25.4",
-        "@babel/plugin-transform-computed-properties": "^7.24.7",
-        "@babel/plugin-transform-destructuring": "^7.24.8",
-        "@babel/plugin-transform-flow-strip-types": "^7.25.2",
-        "@babel/plugin-transform-for-of": "^7.24.7",
-        "@babel/plugin-transform-function-name": "^7.25.1",
-        "@babel/plugin-transform-literals": "^7.25.2",
-        "@babel/plugin-transform-logical-assignment-operators": "^7.24.7",
-        "@babel/plugin-transform-modules-commonjs": "^7.24.8",
-        "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7",
-        "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7",
-        "@babel/plugin-transform-numeric-separator": "^7.24.7",
-        "@babel/plugin-transform-object-rest-spread": "^7.24.7",
-        "@babel/plugin-transform-optional-catch-binding": "^7.24.7",
-        "@babel/plugin-transform-optional-chaining": "^7.24.8",
-        "@babel/plugin-transform-parameters": "^7.24.7",
-        "@babel/plugin-transform-private-methods": "^7.24.7",
-        "@babel/plugin-transform-private-property-in-object": "^7.24.7",
-        "@babel/plugin-transform-react-display-name": "^7.24.7",
-        "@babel/plugin-transform-react-jsx": "^7.25.2",
-        "@babel/plugin-transform-react-jsx-self": "^7.24.7",
-        "@babel/plugin-transform-react-jsx-source": "^7.24.7",
-        "@babel/plugin-transform-regenerator": "^7.24.7",
-        "@babel/plugin-transform-runtime": "^7.24.7",
-        "@babel/plugin-transform-shorthand-properties": "^7.24.7",
-        "@babel/plugin-transform-spread": "^7.24.7",
-        "@babel/plugin-transform-sticky-regex": "^7.24.7",
-        "@babel/plugin-transform-typescript": "^7.25.2",
-        "@babel/plugin-transform-unicode-regex": "^7.24.7",
-        "@babel/template": "^7.25.0",
-        "@react-native/babel-plugin-codegen": "0.76.6",
-        "babel-plugin-syntax-hermes-parser": "^0.25.1",
-        "babel-plugin-transform-flow-enums": "^0.0.2",
-        "react-refresh": "^0.14.0"
-      },
-      "engines": {
-        "node": ">=18"
-      },
-      "peerDependencies": {
-        "@babel/core": "*"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/@react-native/codegen": {
-      "version": "0.76.6",
-      "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.6.tgz",
-      "integrity": "sha512-BABb3e5G/+hyQYEYi0AODWh2km2d8ERoASZr6Hv90pVXdUHRYR+yxCatX7vSd9rnDUYndqRTzD0hZWAucPNAKg==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/parser": "^7.25.3",
-        "glob": "^7.1.1",
-        "hermes-parser": "0.23.1",
-        "invariant": "^2.2.4",
-        "jscodeshift": "^0.14.0",
-        "mkdirp": "^0.5.1",
-        "nullthrows": "^1.1.1",
-        "yargs": "^17.6.2"
-      },
-      "engines": {
-        "node": ">=18"
-      },
-      "peerDependencies": {
-        "@babel/preset-env": "^7.1.6"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/ansi-styles": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
-      "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
-      "license": "MIT",
-      "dependencies": {
-        "color-convert": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=8"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/ansi-styles?sponsor=1"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/ast-types": {
-      "version": "0.15.2",
-      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz",
-      "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==",
-      "license": "MIT",
-      "dependencies": {
-        "tslib": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/babel-preset-expo/node_modules/babel-plugin-react-native-web": {
       "version": "0.19.13",
       "resolved": "https://registry.npmjs.org/babel-plugin-react-native-web/-/babel-plugin-react-native-web-0.19.13.tgz",
       "integrity": "sha512-4hHoto6xaN23LCyZgL9LJZc3olmAxd7b6jDzlZnKXAh4rRAbZRKNBJoOOdp46OBqgy+K0t0guTj5/mhA8inymQ==",
       "license": "MIT"
     },
-    "node_modules/babel-preset-expo/node_modules/chalk": {
-      "version": "4.1.2",
-      "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
-      "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
-      "license": "MIT",
-      "dependencies": {
-        "ansi-styles": "^4.1.0",
-        "supports-color": "^7.1.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/chalk/chalk?sponsor=1"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/color-convert": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
-      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
-      "license": "MIT",
-      "dependencies": {
-        "color-name": "~1.1.4"
-      },
-      "engines": {
-        "node": ">=7.0.0"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/color-name": {
-      "version": "1.1.4",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
-      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
-      "license": "MIT"
-    },
-    "node_modules/babel-preset-expo/node_modules/has-flag": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
-      "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/hermes-estree": {
-      "version": "0.23.1",
-      "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz",
-      "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==",
-      "license": "MIT"
-    },
-    "node_modules/babel-preset-expo/node_modules/hermes-parser": {
-      "version": "0.23.1",
-      "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz",
-      "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==",
-      "license": "MIT",
-      "dependencies": {
-        "hermes-estree": "0.23.1"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/jscodeshift": {
-      "version": "0.14.0",
-      "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz",
-      "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==",
-      "license": "MIT",
-      "dependencies": {
-        "@babel/core": "^7.13.16",
-        "@babel/parser": "^7.13.16",
-        "@babel/plugin-proposal-class-properties": "^7.13.0",
-        "@babel/plugin-proposal-nullish-coalescing-operator": "^7.13.8",
-        "@babel/plugin-proposal-optional-chaining": "^7.13.12",
-        "@babel/plugin-transform-modules-commonjs": "^7.13.8",
-        "@babel/preset-flow": "^7.13.13",
-        "@babel/preset-typescript": "^7.13.0",
-        "@babel/register": "^7.13.16",
-        "babel-core": "^7.0.0-bridge.0",
-        "chalk": "^4.1.2",
-        "flow-parser": "0.*",
-        "graceful-fs": "^4.2.4",
-        "micromatch": "^4.0.4",
-        "neo-async": "^2.5.0",
-        "node-dir": "^0.1.17",
-        "recast": "^0.21.0",
-        "temp": "^0.8.4",
-        "write-file-atomic": "^2.3.0"
-      },
-      "bin": {
-        "jscodeshift": "bin/jscodeshift.js"
-      },
-      "peerDependencies": {
-        "@babel/preset-env": "^7.1.6"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/mkdirp": {
-      "version": "0.5.6",
-      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
-      "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
-      "license": "MIT",
-      "dependencies": {
-        "minimist": "^1.2.6"
-      },
-      "bin": {
-        "mkdirp": "bin/cmd.js"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/recast": {
-      "version": "0.21.5",
-      "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz",
-      "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==",
-      "license": "MIT",
-      "dependencies": {
-        "ast-types": "0.15.2",
-        "esprima": "~4.0.0",
-        "source-map": "~0.6.1",
-        "tslib": "^2.0.1"
-      },
-      "engines": {
-        "node": ">= 4"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/source-map": {
-      "version": "0.6.1",
-      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-      "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/babel-preset-expo/node_modules/supports-color": {
-      "version": "7.2.0",
-      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
-      "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
-      "license": "MIT",
-      "dependencies": {
-        "has-flag": "^4.0.0"
-      },
-      "engines": {
-        "node": ">=8"
-      }
-    },
     "node_modules/babel-preset-jest": {
       "version": "29.6.3",
       "license": "MIT",
@@ -17899,12 +17745,12 @@
       "license": "MIT"
     },
     "node_modules/bplist-creator": {
-      "version": "0.0.7",
-      "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.0.7.tgz",
-      "integrity": "sha512-xp/tcaV3T5PCiaY04mXga7o/TE+t95gqeLmADeBI1CvZtdWTbgBt3uLpvh4UWtenKeBhCV6oVxGk38yZr2uYEA==",
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
+      "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==",
       "license": "MIT",
       "dependencies": {
-        "stream-buffers": "~2.2.0"
+        "stream-buffers": "2.2.x"
       }
     },
     "node_modules/bplist-parser": {
@@ -18026,22 +17872,6 @@
         "ieee754": "^1.1.13"
       }
     },
-    "node_modules/buffer-alloc": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
-      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
-      "license": "MIT",
-      "dependencies": {
-        "buffer-alloc-unsafe": "^1.1.0",
-        "buffer-fill": "^1.0.0"
-      }
-    },
-    "node_modules/buffer-alloc-unsafe": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
-      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==",
-      "license": "MIT"
-    },
     "node_modules/buffer-crc32": {
       "version": "0.2.13",
       "dev": true,
@@ -18057,12 +17887,6 @@
       "dev": true,
       "license": "BSD-3-Clause"
     },
-    "node_modules/buffer-fill": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
-      "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==",
-      "license": "MIT"
-    },
     "node_modules/buffer-from": {
       "version": "1.1.2",
       "license": "MIT"
@@ -18242,100 +18066,6 @@
         "typewise-core": "^1.2"
       }
     },
-    "node_modules/cacache": {
-      "version": "18.0.4",
-      "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz",
-      "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==",
-      "license": "ISC",
-      "dependencies": {
-        "@npmcli/fs": "^3.1.0",
-        "fs-minipass": "^3.0.0",
-        "glob": "^10.2.2",
-        "lru-cache": "^10.0.1",
-        "minipass": "^7.0.3",
-        "minipass-collect": "^2.0.1",
-        "minipass-flush": "^1.0.5",
-        "minipass-pipeline": "^1.2.4",
-        "p-map": "^4.0.0",
-        "ssri": "^10.0.0",
-        "tar": "^6.1.11",
-        "unique-filename": "^3.0.0"
-      },
-      "engines": {
-        "node": "^16.14.0 || >=18.0.0"
-      }
-    },
-    "node_modules/cacache/node_modules/brace-expansion": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
-      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
-      "license": "MIT",
-      "dependencies": {
-        "balanced-match": "^1.0.0"
-      }
-    },
-    "node_modules/cacache/node_modules/fs-minipass": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz",
-      "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==",
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^7.0.3"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
-    "node_modules/cacache/node_modules/glob": {
-      "version": "10.4.5",
-      "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
-      "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
-      "license": "ISC",
-      "dependencies": {
-        "foreground-child": "^3.1.0",
-        "jackspeak": "^3.1.2",
-        "minimatch": "^9.0.4",
-        "minipass": "^7.1.2",
-        "package-json-from-dist": "^1.0.0",
-        "path-scurry": "^1.11.1"
-      },
-      "bin": {
-        "glob": "dist/esm/bin.mjs"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/cacache/node_modules/lru-cache": {
-      "version": "10.4.3",
-      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
-      "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
-      "license": "ISC"
-    },
-    "node_modules/cacache/node_modules/minimatch": {
-      "version": "9.0.5",
-      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
-      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
-      "license": "ISC",
-      "dependencies": {
-        "brace-expansion": "^2.0.1"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/isaacs"
-      }
-    },
-    "node_modules/cacache/node_modules/minipass": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      }
-    },
     "node_modules/cacheable-lookup": {
       "version": "5.0.4",
       "dev": true,
@@ -18554,15 +18284,6 @@
         "url": "https://github.com/sponsors/wooorm"
       }
     },
-    "node_modules/charenc": {
-      "version": "0.0.2",
-      "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz",
-      "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/chokidar": {
       "version": "3.6.0",
       "dev": true,
@@ -18588,6 +18309,7 @@
     },
     "node_modules/chownr": {
       "version": "2.0.0",
+      "dev": true,
       "license": "ISC",
       "engines": {
         "node": ">=10"
@@ -18693,6 +18415,7 @@
     },
     "node_modules/clean-stack": {
       "version": "2.2.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -18905,6 +18628,7 @@
     },
     "node_modules/combined-stream": {
       "version": "1.0.8",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "delayed-stream": "~1.0.0"
@@ -18963,15 +18687,6 @@
         "url": "https://www.patreon.com/infusion"
       }
     },
-    "node_modules/component-type": {
-      "version": "1.2.2",
-      "resolved": "https://registry.npmjs.org/component-type/-/component-type-1.2.2.tgz",
-      "integrity": "sha512-99VUHREHiN5cLeHm3YLq312p6v+HUEcwtLCAtelvUDI6+SH5g5Cr85oNR2S1o6ywzL0ykMbuwLzM2ANocjEOIA==",
-      "license": "MIT",
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/compress-commons": {
       "version": "4.1.2",
       "dev": true,
@@ -19505,6 +19220,7 @@
     },
     "node_modules/core-util-is": {
       "version": "1.0.2",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/corser": {
@@ -19683,15 +19399,6 @@
         "node": ">= 8"
       }
     },
-    "node_modules/crypt": {
-      "version": "0.0.2",
-      "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz",
-      "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==",
-      "license": "BSD-3-Clause",
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/crypto-js": {
       "version": "4.2.0",
       "license": "MIT"
@@ -20056,9 +19763,10 @@
       "license": "MIT"
     },
     "node_modules/debug": {
-      "version": "4.3.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
-      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+      "license": "MIT",
       "dependencies": {
         "ms": "^2.1.3"
       },
@@ -20185,134 +19893,15 @@
       }
     },
     "node_modules/default-gateway": {
-      "version": "4.2.0",
-      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
-      "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz",
+      "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==",
       "license": "BSD-2-Clause",
       "dependencies": {
-        "execa": "^1.0.0",
-        "ip-regex": "^2.1.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/default-gateway/node_modules/cross-spawn": {
-      "version": "6.0.6",
-      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
-      "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
-      "license": "MIT",
-      "dependencies": {
-        "nice-try": "^1.0.4",
-        "path-key": "^2.0.1",
-        "semver": "^5.5.0",
-        "shebang-command": "^1.2.0",
-        "which": "^1.2.9"
-      },
-      "engines": {
-        "node": ">=4.8"
-      }
-    },
-    "node_modules/default-gateway/node_modules/execa": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
-      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
-      "license": "MIT",
-      "dependencies": {
-        "cross-spawn": "^6.0.0",
-        "get-stream": "^4.0.0",
-        "is-stream": "^1.1.0",
-        "npm-run-path": "^2.0.0",
-        "p-finally": "^1.0.0",
-        "signal-exit": "^3.0.0",
-        "strip-eof": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/default-gateway/node_modules/get-stream": {
-      "version": "4.1.0",
-      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
-      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
-      "license": "MIT",
-      "dependencies": {
-        "pump": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=6"
-      }
-    },
-    "node_modules/default-gateway/node_modules/is-stream": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
-      "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/default-gateway/node_modules/npm-run-path": {
-      "version": "2.0.2",
-      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
-      "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==",
-      "license": "MIT",
-      "dependencies": {
-        "path-key": "^2.0.0"
+        "execa": "^5.0.0"
       },
       "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/default-gateway/node_modules/path-key": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
-      "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
-    "node_modules/default-gateway/node_modules/semver": {
-      "version": "5.7.2",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
-      "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
-      "license": "ISC",
-      "bin": {
-        "semver": "bin/semver"
-      }
-    },
-    "node_modules/default-gateway/node_modules/shebang-command": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
-      "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
-      "license": "MIT",
-      "dependencies": {
-        "shebang-regex": "^1.0.0"
-      },
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/default-gateway/node_modules/shebang-regex": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
-      "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
-    "node_modules/default-gateway/node_modules/which": {
-      "version": "1.3.1",
-      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
-      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
-      "license": "ISC",
-      "dependencies": {
-        "isexe": "^2.0.0"
-      },
-      "bin": {
-        "which": "bin/which"
+        "node": ">= 10"
       }
     },
     "node_modules/defaults": {
@@ -20464,6 +20053,7 @@
     },
     "node_modules/delayed-stream": {
       "version": "1.0.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=0.4.0"
@@ -20480,10 +20070,6 @@
       "dev": true,
       "license": "MIT"
     },
-    "node_modules/denodeify": {
-      "version": "1.2.1",
-      "license": "MIT"
-    },
     "node_modules/depd": {
       "version": "2.0.0",
       "license": "MIT",
@@ -20590,6 +20176,7 @@
     },
     "node_modules/dir-glob": {
       "version": "3.0.1",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "path-type": "^4.0.0"
@@ -21142,6 +20729,7 @@
     },
     "node_modules/end-of-stream": {
       "version": "1.4.4",
+      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "once": "^1.4.0"
@@ -22852,7 +22440,6 @@
     },
     "node_modules/execa": {
       "version": "5.1.1",
-      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "cross-spawn": "^7.0.3",
@@ -22964,26 +22551,26 @@
       }
     },
     "node_modules/expo": {
-      "version": "52.0.28",
-      "resolved": "https://registry.npmjs.org/expo/-/expo-52.0.28.tgz",
-      "integrity": "sha512-0O/JEYYCFszJ85frislm79YmlrQA5ghAQXV4dqcQcsy9FqftdicD4p/ehT36yiuGIhaKC6fn25LEaJ9JR2ei7g==",
+      "version": "53.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo/-/expo-53.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-15QDMfClEV+s8TUwuAaz97AbndzBpTbICnJAfdiqzn4PP9n2Yah/ujReP8uvmu1BsTcI9m3z89EhTtJPM0MAsw==",
       "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.20.0",
-        "@expo/cli": "0.22.11",
-        "@expo/config": "~10.0.8",
-        "@expo/config-plugins": "~9.0.14",
-        "@expo/fingerprint": "0.11.7",
-        "@expo/metro-config": "0.19.9",
+        "@expo/cli": "1.0.0-canary-20250306-d9d3e02",
+        "@expo/config": "11.0.0-canary-20250306-d9d3e02",
+        "@expo/config-plugins": "9.1.0-canary-20250306-d9d3e02",
+        "@expo/fingerprint": "0.11.12-canary-20250306-d9d3e02",
+        "@expo/metro-config": "0.20.0-canary-20250306-d9d3e02",
         "@expo/vector-icons": "^14.0.0",
-        "babel-preset-expo": "~12.0.6",
-        "expo-asset": "~11.0.2",
-        "expo-constants": "~17.0.5",
-        "expo-file-system": "~18.0.7",
-        "expo-font": "~13.0.3",
-        "expo-keep-awake": "~14.0.2",
-        "expo-modules-autolinking": "2.0.7",
-        "expo-modules-core": "2.2.0",
+        "babel-preset-expo": "13.0.0-canary-20250306-d9d3e02",
+        "expo-asset": "12.0.0-canary-20250306-d9d3e02",
+        "expo-constants": "18.0.0-canary-20250306-d9d3e02",
+        "expo-file-system": "19.0.0-canary-20250306-d9d3e02",
+        "expo-font": "14.0.0-canary-20250306-d9d3e02",
+        "expo-keep-awake": "15.0.0-canary-20250306-d9d3e02",
+        "expo-modules-autolinking": "3.0.0-canary-20250306-d9d3e02",
+        "expo-modules-core": "3.0.0-canary-20250306-d9d3e02",
         "fbemitter": "^3.0.0",
         "web-streams-polyfill": "^3.3.2",
         "whatwg-url-without-unicode": "8.0.0-3"
@@ -22992,8 +22579,8 @@
         "expo": "bin/cli"
       },
       "peerDependencies": {
-        "@expo/dom-webview": "*",
-        "@expo/metro-runtime": "*",
+        "@expo/dom-webview": "0.0.3-canary-20250306-d9d3e02",
+        "@expo/metro-runtime": "4.0.2-canary-20250306-d9d3e02",
         "react": "*",
         "react-native": "*",
         "react-native-webview": "*"
@@ -23011,29 +22598,27 @@
       }
     },
     "node_modules/expo-asset": {
-      "version": "11.0.4",
-      "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-11.0.4.tgz",
-      "integrity": "sha512-CdIywU0HrR3wsW5c3n0cT3jW9hccZdnqGsRqY+EY/RWzJbDXtDfAQVEiFHO3mDK7oveUwrP2jK/6ZRNek41/sg==",
+      "version": "12.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-gOXnvbC5cr8jVeicZ51BAWR/Lfm5W+qCP89Di2VTPCDpmfKoIm2sepxnNcSWp4BmhWAVjDPewUsJYTvc2RqgCQ==",
       "license": "MIT",
       "dependencies": {
-        "@expo/image-utils": "^0.6.5",
-        "expo-constants": "~17.0.7",
-        "invariant": "^2.2.4",
-        "md5-file": "^3.2.3"
+        "@expo/image-utils": "0.6.6-canary-20250306-d9d3e02",
+        "expo-constants": "18.0.0-canary-20250306-d9d3e02"
       },
       "peerDependencies": {
-        "expo": "*",
+        "expo": "53.0.0-canary-20250306-d9d3e02",
         "react": "*",
         "react-native": "*"
       }
     },
     "node_modules/expo-av": {
-      "version": "15.0.2",
-      "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-15.0.2.tgz",
-      "integrity": "sha512-AHIHXdqLgK1dfHZF0JzX3YSVySGMrWn9QtPzaVjw54FAzvXfMt4sIoq4qRL/9XWCP9+ICcCs/u3EcvmxQjrfcA==",
+      "version": "15.0.3-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-av/-/expo-av-15.0.3-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-8NfSbbcpqnbC00rvVXmetVRUTAJ8WNIcGKUgKi3uVHIYwObXB0ZnuNWhVFBddT2VB5v0DGPribFxuJ29w9WNeQ==",
       "license": "MIT",
       "peerDependencies": {
-        "expo": "*",
+        "expo": "53.0.0-canary-20250306-d9d3e02",
         "react": "*",
         "react-native": "*",
         "react-native-web": "*"
@@ -23045,52 +22630,39 @@
       }
     },
     "node_modules/expo-constants": {
-      "version": "17.0.7",
-      "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-17.0.7.tgz",
-      "integrity": "sha512-sp5NUiV17I3JblVPIBDgoxgt7JIZS30vcyydCYHxsEoo+aKaeRYXxGYilCvb9lgI6BBwSL24sQ6ZjWsCWoF1VA==",
+      "version": "18.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-bzreYC9p/m7ovgIWabGLYFjXwJgUVEnzNNCVuas62vMLaNulcGtpSKNjlleVMgHsgsbCqaDfFcYtRGWm1GPQlw==",
       "license": "MIT",
       "dependencies": {
-        "@expo/config": "~10.0.10",
-        "@expo/env": "~0.4.2"
-      },
-      "peerDependencies": {
-        "expo": "*",
-        "react-native": "*"
-      }
-    },
-    "node_modules/expo-file-system": {
-      "version": "18.0.11",
-      "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-18.0.11.tgz",
-      "integrity": "sha512-yDwYfEzWgPXsBZHJW2RJ8Q66ceiFN9Wa5D20pp3fjXVkzPBDwxnYwiPWk4pVmCa5g4X5KYMoMne1pUrsL4OEpg==",
-      "license": "MIT",
-      "dependencies": {
-        "web-streams-polyfill": "^3.3.2"
+        "@expo/config": "11.0.0-canary-20250306-d9d3e02",
+        "@expo/env": "1.0.1-canary-20250306-d9d3e02"
       },
       "peerDependencies": {
-        "expo": "*",
+        "expo": "53.0.0-canary-20250306-d9d3e02",
         "react-native": "*"
       }
     },
     "node_modules/expo-font": {
-      "version": "13.0.4",
-      "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-13.0.4.tgz",
-      "integrity": "sha512-eAP5hyBgC8gafFtprsz0HMaB795qZfgJWqTmU0NfbSin1wUuVySFMEPMOrTkTgmazU73v4Cb4x7p86jY1XXYUw==",
+      "version": "14.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-8VXoNfJcNLxfsV9Fz+rDK6G0Ufdwwndif0JlKwZmCjlB0mnpnMQS/HX7MfmYu4J0JyX+uYKWHM6aFolx6/7XDw==",
       "license": "MIT",
       "dependencies": {
         "fontfaceobserver": "^2.1.0"
       },
       "peerDependencies": {
-        "expo": "*",
+        "expo": "53.0.0-canary-20250306-d9d3e02",
         "react": "*"
       }
     },
     "node_modules/expo-image": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-2.0.4.tgz",
-      "integrity": "sha512-oIVSlV/BpBJbI9Anf8RjraGJXDWSJxNKxdXkYBJ31XrQaUstOM7OmsVKjOK40ZFZHIz3rx5SBJWK5w52Uz+/bg==",
+      "version": "3.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-image/-/expo-image-3.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-HeI8vtw/e7ptcDOzs5rJZMknfVaQw2eriy08wk5r3Zy+Mo+TmXheLBuys7OmK9UQlNnWFXnRoDyFb6UZK3IXRA==",
       "license": "MIT",
       "peerDependencies": {
-        "expo": "*",
+        "expo": "53.0.0-canary-20250306-d9d3e02",
         "react": "*",
         "react-native": "*",
         "react-native-web": "*"
@@ -23102,48 +22674,37 @@
       }
     },
     "node_modules/expo-image-loader": {
-      "version": "5.0.0",
-      "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-5.0.0.tgz",
-      "integrity": "sha512-Eg+5FHtyzv3Jjw9dHwu2pWy4xjf8fu3V0Asyy42kO+t/FbvW/vjUixpTjPtgKQLQh+2/9Nk4JjFDV6FwCnF2ZA==",
+      "version": "5.0.1-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-image-loader/-/expo-image-loader-5.0.1-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-dXvlHCOrKcshfBTtMhQ+Xtvz59D3wjg3ayyRb73vR+QYfyS7xxBvMCl+j4ENjPKPjIulHX6ej1TkmMifonI5rQ==",
       "license": "MIT",
       "peerDependencies": {
-        "expo": "*"
+        "expo": "53.0.0-canary-20250306-d9d3e02"
       }
     },
     "node_modules/expo-image-manipulator": {
-      "version": "13.0.6",
-      "resolved": "https://registry.npmjs.org/expo-image-manipulator/-/expo-image-manipulator-13.0.6.tgz",
-      "integrity": "sha512-Rz8Kcfx1xYm0AsIDi6zfKYUDnwCP8edgYXWb00KAkzOF8bDxwzTrnvESWhCiveM4IB3fojjLpNeENME34p3bzA==",
+      "version": "13.0.7-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-image-manipulator/-/expo-image-manipulator-13.0.7-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-H0xZCt5YQFyBjFFpha2GNf90nmP5bftmkTNtZHslIA+6tvfDOreEx/2tsh+1IDTnOax5z3u4kj73WS5s1lqdRg==",
       "license": "MIT",
       "dependencies": {
-        "expo-image-loader": "~5.0.0"
+        "expo-image-loader": "5.0.1-canary-20250306-d9d3e02"
       },
       "peerDependencies": {
-        "expo": "*"
-      }
-    },
-    "node_modules/expo-keep-awake": {
-      "version": "14.0.3",
-      "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-14.0.3.tgz",
-      "integrity": "sha512-6Jh94G6NvTZfuLnm2vwIpKe3GdOiVBuISl7FI8GqN0/9UOg9E0WXXp5cDcfAG8bn80RfgLJS8P7EPUGTZyOvhg==",
-      "license": "MIT",
-      "peerDependencies": {
-        "expo": "*",
-        "react": "*"
+        "expo": "53.0.0-canary-20250306-d9d3e02"
       }
     },
     "node_modules/expo-modules-autolinking": {
-      "version": "2.0.7",
-      "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-2.0.7.tgz",
-      "integrity": "sha512-rkGc6a/90AC3q8wSy4V+iIpq6Fd0KXmQICKrvfmSWwrMgJmLfwP4QTrvLYPYOOMjFwNJcTaohcH8vzW/wYKrMg==",
+      "version": "3.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-modules-autolinking/-/expo-modules-autolinking-3.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-ZXVNf+cz3uaazWK8agQc9TG6RfMdcbBRwMZB7Gr5GlxG/3Ss6+duIeR/Ilc5testMm0nH16WCLn0BH1yj2Zf0g==",
       "license": "MIT",
       "dependencies": {
         "@expo/spawn-async": "^1.7.2",
         "chalk": "^4.1.0",
         "commander": "^7.2.0",
-        "fast-glob": "^3.2.5",
         "find-up": "^5.0.0",
-        "fs-extra": "^9.1.0",
+        "glob": "^10.4.2",
         "require-from-string": "^2.0.2",
         "resolve-from": "^5.0.0"
       },
@@ -23166,6 +22727,15 @@
         "url": "https://github.com/chalk/ansi-styles?sponsor=1"
       }
     },
+    "node_modules/expo-modules-autolinking/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "license": "MIT",
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
     "node_modules/expo-modules-autolinking/node_modules/chalk": {
       "version": "4.1.2",
       "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
@@ -23209,6 +22779,26 @@
         "node": ">= 10"
       }
     },
+    "node_modules/expo-modules-autolinking/node_modules/glob": {
+      "version": "10.4.5",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",
+      "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",
+      "license": "ISC",
+      "dependencies": {
+        "foreground-child": "^3.1.0",
+        "jackspeak": "^3.1.2",
+        "minimatch": "^9.0.4",
+        "minipass": "^7.1.2",
+        "package-json-from-dist": "^1.0.0",
+        "path-scurry": "^1.11.1"
+      },
+      "bin": {
+        "glob": "dist/esm/bin.mjs"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
     "node_modules/expo-modules-autolinking/node_modules/has-flag": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
@@ -23218,6 +22808,30 @@
         "node": ">=8"
       }
     },
+    "node_modules/expo-modules-autolinking/node_modules/minimatch": {
+      "version": "9.0.5",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",
+      "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",
+      "license": "ISC",
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/expo-modules-autolinking/node_modules/minipass": {
+      "version": "7.1.2",
+      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
+      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
+      "license": "ISC",
+      "engines": {
+        "node": ">=16 || 14 >=14.17"
+      }
+    },
     "node_modules/expo-modules-autolinking/node_modules/supports-color": {
       "version": "7.2.0",
       "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@@ -23231,14 +22845,37 @@
       }
     },
     "node_modules/expo-modules-core": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-2.2.0.tgz",
-      "integrity": "sha512-mOFEHIe6jZ7G5pYUVSQ2Ghs3CUr9Uz6DOh4JI+4PsTf0gmEvMmMEOrxirS89jRWQjXPJ7QaGBK0CJrZlj/Sdeg==",
+      "version": "3.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-ArvZty2BYOTfxFqfjo49mpdiJNyn0G9cGSYOkoj/1cS03QHw6lFCKdTgf6I03JKHKpiGC5hPZe66PLW553V9mw==",
       "license": "MIT",
       "dependencies": {
         "invariant": "^2.2.4"
       }
     },
+    "node_modules/expo/node_modules/expo-file-system": {
+      "version": "19.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-zP1ChBtf0z9UKqssxcYIKav3wv2h8vzUbdXA9GBfdKiLqkRfBb3HiG8B2IO8vVa6jv6bahbX1NernT2XAQ21lg==",
+      "license": "MIT",
+      "dependencies": {
+        "web-streams-polyfill": "^3.3.2"
+      },
+      "peerDependencies": {
+        "expo": "53.0.0-canary-20250306-d9d3e02",
+        "react-native": "*"
+      }
+    },
+    "node_modules/expo/node_modules/expo-keep-awake": {
+      "version": "15.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-MNaZlQaWoC9F8sHWUhu+EWkwraP16Ba8gGlEDMlhe9bPp3PCCveQyfwFHu57vlJPO2DQ6+kThPLz67SWe2qHjw==",
+      "license": "MIT",
+      "peerDependencies": {
+        "expo": "53.0.0-canary-20250306-d9d3e02",
+        "react": "*"
+      }
+    },
     "node_modules/exponential-backoff": {
       "version": "3.1.1",
       "license": "Apache-2.0"
@@ -23419,6 +23056,7 @@
     },
     "node_modules/fast-glob": {
       "version": "3.3.2",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "@nodelib/fs.stat": "^2.0.2",
@@ -23483,6 +23121,7 @@
     },
     "node_modules/fastq": {
       "version": "1.13.0",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "reusify": "^1.0.4"
@@ -23548,12 +23187,6 @@
         "pend": "~1.2.0"
       }
     },
-    "node_modules/fetch-retry": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/fetch-retry/-/fetch-retry-4.1.1.tgz",
-      "integrity": "sha512-e6eB7zN6UBSwGVwrbWVH+gdLnkW9WwHhmq2YDK1Sh30pzx1onRVGBvogTlUeWxwTa+L86NYdo4hFkh7O8ZjSnA==",
-      "license": "MIT"
-    },
     "node_modules/fflate": {
       "version": "0.8.2",
       "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
@@ -24034,20 +23667,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/form-data": {
-      "version": "3.0.2",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz",
-      "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==",
-      "license": "MIT",
-      "dependencies": {
-        "asynckit": "^0.4.0",
-        "combined-stream": "^1.0.8",
-        "mime-types": "^2.1.12"
-      },
-      "engines": {
-        "node": ">= 6"
-      }
-    },
     "node_modules/form-data-encoder": {
       "version": "1.7.2",
       "dev": true,
@@ -24116,6 +23735,7 @@
     },
     "node_modules/fs-extra": {
       "version": "9.1.0",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "at-least-node": "^1.0.0",
@@ -24129,6 +23749,7 @@
     },
     "node_modules/fs-minipass": {
       "version": "2.1.0",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "minipass": "^3.0.0"
@@ -24474,6 +24095,7 @@
     },
     "node_modules/glob-parent": {
       "version": "5.1.2",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "is-glob": "^4.0.1"
@@ -24526,6 +24148,7 @@
     },
     "node_modules/globby": {
       "version": "11.1.0",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "array-union": "^2.1.0",
@@ -25254,7 +24877,6 @@
     },
     "node_modules/human-signals": {
       "version": "2.1.0",
-      "devOptional": true,
       "license": "Apache-2.0",
       "engines": {
         "node": ">=10.17.0"
@@ -25336,6 +24958,7 @@
     },
     "node_modules/ignore": {
       "version": "5.3.1",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 4"
@@ -25477,6 +25100,7 @@
     },
     "node_modules/indent-string": {
       "version": "4.0.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -25513,16 +25137,19 @@
       }
     },
     "node_modules/internal-ip": {
-      "version": "4.3.0",
-      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
-      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+      "version": "6.1.0",
+      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-6.1.0.tgz",
+      "integrity": "sha512-Cs1iaqrl3z3KJ2ejWyfKkMcuv9NTEJWXtUBSGVc+Eg9BjBLS0k11CsOkf/p5quOkVhhRuq9zwZ/PuJpPUuDP9Q==",
       "license": "MIT",
       "dependencies": {
-        "default-gateway": "^4.2.0",
-        "ipaddr.js": "^1.9.0"
+        "default-gateway": "^6.0.0",
+        "ipaddr.js": "^1.9.1"
       },
       "engines": {
-        "node": ">=6"
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sindresorhus/internal-ip?sponsor=1"
       }
     },
     "node_modules/internal-slot": {
@@ -25570,15 +25197,6 @@
       "dev": true,
       "license": "BSD-3-Clause"
     },
-    "node_modules/ip-regex": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
-      "integrity": "sha512-58yWmlHpp7VYfcdTwMTvwMmqx/Elfxjd9RXTDyMsbL7lLWmhMylLEqiYVLKuLzOZqVgiWXD9MfR62Vv89VRxkw==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/ipaddr.js": {
       "version": "1.9.1",
       "license": "MIT",
@@ -25682,12 +25300,6 @@
         "url": "https://github.com/sponsors/ljharb"
       }
     },
-    "node_modules/is-buffer": {
-      "version": "1.1.6",
-      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
-      "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
-      "license": "MIT"
-    },
     "node_modules/is-builtin-module": {
       "version": "3.2.1",
       "dev": true,
@@ -25806,6 +25418,7 @@
     },
     "node_modules/is-extglob": {
       "version": "2.1.1",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=0.10.0"
@@ -25853,6 +25466,7 @@
     },
     "node_modules/is-glob": {
       "version": "4.0.3",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "is-extglob": "^2.1.1"
@@ -25974,6 +25588,7 @@
     },
     "node_modules/is-path-cwd": {
       "version": "2.2.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -27181,14 +26796,14 @@
       }
     },
     "node_modules/jest-expo": {
-      "version": "52.0.3",
-      "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-52.0.3.tgz",
-      "integrity": "sha512-z2gptekrQ0FIichvRhrES31X9twtCCTzu00sWnPyFaQuWQdoyZiCj2WFPqVrpgIgNYLFIEGhc0VP9rUT9johJw==",
+      "version": "53.0.0-canary-20250306-d9d3e02",
+      "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-53.0.0-canary-20250306-d9d3e02.tgz",
+      "integrity": "sha512-nUXmmgXsdeGETQOrFnEi5LR1oyjkxkgDCdnUtluf+b46UsG+av7rcbuMdBE8prqLOJyxOAjIhY6Wci8K5IJgIQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "@expo/config": "~10.0.8",
-        "@expo/json-file": "^9.0.1",
+        "@expo/config": "11.0.0-canary-20250306-d9d3e02",
+        "@expo/json-file": "9.0.3-canary-20250306-d9d3e02",
         "@jest/create-cache-key-function": "^29.2.1",
         "@jest/globals": "^29.2.1",
         "babel-jest": "^29.2.1",
@@ -27201,7 +26816,7 @@
         "json5": "^2.2.3",
         "lodash": "^4.17.19",
         "react-server-dom-webpack": "19.0.0-rc-6230622a1a-20240610",
-        "react-test-renderer": "18.3.1",
+        "react-test-renderer": "19.0.0",
         "server-only": "^0.0.1",
         "stacktrace-js": "^2.0.2"
       },
@@ -27209,35 +26824,10 @@
         "jest": "bin/jest.js"
       },
       "peerDependencies": {
-        "expo": "*",
+        "expo": "53.0.0-canary-20250306-d9d3e02",
         "react-native": "*"
       }
     },
-    "node_modules/jest-expo/node_modules/react-test-renderer": {
-      "version": "18.3.1",
-      "resolved": "https://registry.npmjs.org/react-test-renderer/-/react-test-renderer-18.3.1.tgz",
-      "integrity": "sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "react-is": "^18.3.1",
-        "react-shallow-renderer": "^16.15.0",
-        "scheduler": "^0.23.2"
-      },
-      "peerDependencies": {
-        "react": "^18.3.1"
-      }
-    },
-    "node_modules/jest-expo/node_modules/scheduler": {
-      "version": "0.23.2",
-      "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz",
-      "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "loose-envify": "^1.1.0"
-      }
-    },
     "node_modules/jest-get-type": {
       "version": "29.6.3",
       "license": "MIT",
@@ -28483,12 +28073,6 @@
         "@sideway/pinpoint": "^2.0.0"
       }
     },
-    "node_modules/join-component": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/join-component/-/join-component-1.1.0.tgz",
-      "integrity": "sha512-bF7vcQxbODoGK1imE2P9GS9aw4zD0Sd+Hni68IMZLj7zRnquH7dXUmMw9hDI5S/Jzt7q+IyTXN0rSg2GI0IKhQ==",
-      "license": "MIT"
-    },
     "node_modules/jquery": {
       "version": "3.6.0",
       "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz",
@@ -28683,6 +28267,7 @@
     },
     "node_modules/jsonfile": {
       "version": "6.1.0",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "universalify": "^2.0.0"
@@ -29739,32 +29324,6 @@
         "node": ">= 18"
       }
     },
-    "node_modules/md5": {
-      "version": "2.3.0",
-      "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz",
-      "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==",
-      "license": "BSD-3-Clause",
-      "dependencies": {
-        "charenc": "0.0.2",
-        "crypt": "0.0.2",
-        "is-buffer": "~1.1.6"
-      }
-    },
-    "node_modules/md5-file": {
-      "version": "3.2.3",
-      "resolved": "https://registry.npmjs.org/md5-file/-/md5-file-3.2.3.tgz",
-      "integrity": "sha512-3Tkp1piAHaworfcCgH0jKbTvj1jWWFgbvh2cXaNCgHwyTCBxxvD1Y04rmfpvdPm1P4oXMOpm6+2H7sr7v9v8Fw==",
-      "license": "MIT",
-      "dependencies": {
-        "buffer-alloc": "^1.1.0"
-      },
-      "bin": {
-        "md5-file": "cli.js"
-      },
-      "engines": {
-        "node": ">=0.10"
-      }
-    },
     "node_modules/mdn-data": {
       "version": "2.0.14",
       "license": "CC0-1.0"
@@ -29878,6 +29437,7 @@
     },
     "node_modules/merge2": {
       "version": "1.4.1",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 8"
@@ -29892,9 +29452,9 @@
       }
     },
     "node_modules/metro": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro/-/metro-0.81.0.tgz",
-      "integrity": "sha512-kzdzmpL0gKhEthZ9aOV7sTqvg6NuTxDV8SIm9pf9sO8VVEbKrQk5DNcwupOUjgPPFAuKUc2NkT0suyT62hm2xg==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro/-/metro-0.81.4.tgz",
+      "integrity": "sha512-78f0aBNPuwXW7GFnSc+Y0vZhbuQorXxdgqQfvSRqcSizqwg9cwF27I05h47tL8AzQcizS1JZncvq4xf5u/Qykw==",
       "license": "MIT",
       "dependencies": {
         "@babel/code-frame": "^7.24.7",
@@ -29909,33 +29469,31 @@
         "ci-info": "^2.0.0",
         "connect": "^3.6.5",
         "debug": "^2.2.0",
-        "denodeify": "^1.2.1",
         "error-stack-parser": "^2.0.6",
         "flow-enums-runtime": "^0.0.6",
         "graceful-fs": "^4.2.4",
-        "hermes-parser": "0.24.0",
+        "hermes-parser": "0.25.1",
         "image-size": "^1.0.2",
         "invariant": "^2.2.4",
-        "jest-worker": "^29.6.3",
+        "jest-worker": "^29.7.0",
         "jsc-safe-url": "^0.2.2",
         "lodash.throttle": "^4.1.1",
-        "metro-babel-transformer": "0.81.0",
-        "metro-cache": "0.81.0",
-        "metro-cache-key": "0.81.0",
-        "metro-config": "0.81.0",
-        "metro-core": "0.81.0",
-        "metro-file-map": "0.81.0",
-        "metro-resolver": "0.81.0",
-        "metro-runtime": "0.81.0",
-        "metro-source-map": "0.81.0",
-        "metro-symbolicate": "0.81.0",
-        "metro-transform-plugins": "0.81.0",
-        "metro-transform-worker": "0.81.0",
+        "metro-babel-transformer": "0.81.4",
+        "metro-cache": "0.81.4",
+        "metro-cache-key": "0.81.4",
+        "metro-config": "0.81.4",
+        "metro-core": "0.81.4",
+        "metro-file-map": "0.81.4",
+        "metro-resolver": "0.81.4",
+        "metro-runtime": "0.81.4",
+        "metro-source-map": "0.81.4",
+        "metro-symbolicate": "0.81.4",
+        "metro-transform-plugins": "0.81.4",
+        "metro-transform-worker": "0.81.4",
         "mime-types": "^2.1.27",
         "nullthrows": "^1.1.1",
         "serialize-error": "^2.1.0",
         "source-map": "^0.5.6",
-        "strip-ansi": "^6.0.0",
         "throat": "^5.0.0",
         "ws": "^7.5.10",
         "yargs": "^17.6.2"
@@ -29948,53 +29506,38 @@
       }
     },
     "node_modules/metro-babel-transformer": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.0.tgz",
-      "integrity": "sha512-Dc0QWK4wZIeHnyZ3sevWGTnnSkIDDn/SWyfrn99zbKbDOCoCYy71PAn9uCRrP/hduKLJQOy+tebd63Rr9D8tXg==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.81.4.tgz",
+      "integrity": "sha512-WW0yswWrW+eTVK9sYD+b1HwWOiUlZlUoomiw9TIOk0C+dh2V90Wttn/8g62kYi0Y4i+cJfISerB2LbV4nuRGTA==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.25.2",
         "flow-enums-runtime": "^0.0.6",
-        "hermes-parser": "0.24.0",
+        "hermes-parser": "0.25.1",
         "nullthrows": "^1.1.1"
       },
       "engines": {
         "node": ">=18.18"
       }
     },
-    "node_modules/metro-babel-transformer/node_modules/hermes-estree": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.24.0.tgz",
-      "integrity": "sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==",
-      "license": "MIT"
-    },
-    "node_modules/metro-babel-transformer/node_modules/hermes-parser": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.24.0.tgz",
-      "integrity": "sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg==",
-      "license": "MIT",
-      "dependencies": {
-        "hermes-estree": "0.24.0"
-      }
-    },
     "node_modules/metro-cache": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.0.tgz",
-      "integrity": "sha512-DyuqySicHXkHUDZFVJmh0ygxBSx6pCKUrTcSgb884oiscV/ROt1Vhye+x+OIHcsodyA10gzZtrVtxIFV4l9I4g==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.81.4.tgz",
+      "integrity": "sha512-sxCPH3gowDxazSaZZrwdNPEpnxR8UeXDnvPjBF9+5btDBNN2DpWvDAXPvrohkYkFImhc0LajS2V7eOXvu9PnvQ==",
       "license": "MIT",
       "dependencies": {
         "exponential-backoff": "^3.1.1",
         "flow-enums-runtime": "^0.0.6",
-        "metro-core": "0.81.0"
+        "metro-core": "0.81.4"
       },
       "engines": {
         "node": ">=18.18"
       }
     },
     "node_modules/metro-cache-key": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.0.tgz",
-      "integrity": "sha512-qX/IwtknP9bQZL78OK9xeSvLM/xlGfrs6SlUGgHvrxtmGTRSsxcyqxR+c+7ch1xr05n62Gin/O44QKg5V70rNQ==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.81.4.tgz",
+      "integrity": "sha512-3SaWQybvf1ivasjBegIxzVKLJzOpcz+KsnGwXFOYADQq0VN4cnM7tT+u2jkOhk6yJiiO1WIjl68hqyMOQJRRLg==",
       "license": "MIT",
       "dependencies": {
         "flow-enums-runtime": "^0.0.6"
@@ -30004,19 +29547,19 @@
       }
     },
     "node_modules/metro-config": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.0.tgz",
-      "integrity": "sha512-6CinEaBe3WLpRlKlYXXu8r1UblJhbwD6Gtnoib5U8j6Pjp7XxMG9h/DGMeNp9aGLDu1OieUqiXpFo7O0/rR5Kg==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.81.4.tgz",
+      "integrity": "sha512-QnhMy3bRiuimCTy7oi5Ug60javrSa3lPh0gpMAspQZHY9h6y86jwHtZPLtlj8hdWQESIlrbeL8inMSF6qI/i9Q==",
       "license": "MIT",
       "dependencies": {
         "connect": "^3.6.5",
         "cosmiconfig": "^5.0.5",
         "flow-enums-runtime": "^0.0.6",
-        "jest-validate": "^29.6.3",
-        "metro": "0.81.0",
-        "metro-cache": "0.81.0",
-        "metro-core": "0.81.0",
-        "metro-runtime": "0.81.0"
+        "jest-validate": "^29.7.0",
+        "metro": "0.81.4",
+        "metro-cache": "0.81.4",
+        "metro-core": "0.81.4",
+        "metro-runtime": "0.81.4"
       },
       "engines": {
         "node": ">=18.18"
@@ -30073,42 +29616,37 @@
       }
     },
     "node_modules/metro-core": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.0.tgz",
-      "integrity": "sha512-CVkM5YCOAFkNMvJai6KzA0RpztzfEKRX62/PFMOJ9J7K0uq/UkOFLxcgpcncMIrfy0PbfEj811b69tjULUQe1Q==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.81.4.tgz",
+      "integrity": "sha512-GdL4IgmgJhrMA/rTy2lRqXKeXfC77Rg+uvhUEkbhyfj/oz7PrdSgvIFzziapjdHwk1XYq0KyFh/CcVm8ZawG6A==",
       "license": "MIT",
       "dependencies": {
         "flow-enums-runtime": "^0.0.6",
         "lodash.throttle": "^4.1.1",
-        "metro-resolver": "0.81.0"
+        "metro-resolver": "0.81.4"
       },
       "engines": {
         "node": ">=18.18"
       }
     },
     "node_modules/metro-file-map": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.0.tgz",
-      "integrity": "sha512-zMDI5uYhQCyxbye/AuFx/pAbsz9K+vKL7h1ShUXdN2fz4VUPiyQYRsRqOoVG1DsiCgzd5B6LW0YW77NFpjDQeg==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.81.4.tgz",
+      "integrity": "sha512-qUIBzkiqOi3qEuscu4cJ83OYQ4hVzjON19FAySWqYys9GKCmxlKa7LkmwqdpBso6lQl+JXZ7nCacX90w5wQvPA==",
       "license": "MIT",
       "dependencies": {
-        "anymatch": "^3.0.3",
         "debug": "^2.2.0",
         "fb-watchman": "^2.0.0",
         "flow-enums-runtime": "^0.0.6",
         "graceful-fs": "^4.2.4",
         "invariant": "^2.2.4",
-        "jest-worker": "^29.6.3",
+        "jest-worker": "^29.7.0",
         "micromatch": "^4.0.4",
-        "node-abort-controller": "^3.1.1",
         "nullthrows": "^1.1.1",
         "walker": "^1.0.7"
       },
       "engines": {
         "node": ">=18.18"
-      },
-      "optionalDependencies": {
-        "fsevents": "^2.3.2"
       }
     },
     "node_modules/metro-file-map/node_modules/debug": {
@@ -30166,9 +29704,9 @@
       }
     },
     "node_modules/metro-minify-terser": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.0.tgz",
-      "integrity": "sha512-U2ramh3W822ZR1nfXgIk+emxsf5eZSg10GbQrT0ZizImK8IZ5BmJY+BHRIkQgHzWFpExOVxC7kWbGL1bZALswA==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.81.4.tgz",
+      "integrity": "sha512-oVvq/AGvqmbhuijJDZZ9npeWzaVyeBwQKtdlnjcQ9fH7nR15RiBr5y2zTdgTEdynqOIb1Kc16l8CQIUSzOWVFA==",
       "license": "MIT",
       "dependencies": {
         "flow-enums-runtime": "^0.0.6",
@@ -30179,9 +29717,9 @@
       }
     },
     "node_modules/metro-resolver": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.0.tgz",
-      "integrity": "sha512-Uu2Q+buHhm571cEwpPek8egMbdSTqmwT/5U7ZVNpK6Z2ElQBBCxd7HmFAslKXa7wgpTO2FAn6MqGeERbAtVDUA==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.81.4.tgz",
+      "integrity": "sha512-Ng7G2mXjSExMeRzj6GC19G6IJ0mfIbOLgjArsMWJgtt9ViZiluCwgWsMW9juBC5NSwjJxUMK2x6pC5NIMFLiHA==",
       "license": "MIT",
       "dependencies": {
         "flow-enums-runtime": "^0.0.6"
@@ -30191,9 +29729,9 @@
       }
     },
     "node_modules/metro-runtime": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.0.tgz",
-      "integrity": "sha512-6oYB5HOt37RuGz2eV4A6yhcl+PUTwJYLDlY9vhT+aVjbUWI6MdBCf69vc4f5K5Vpt+yOkjy+2LDwLS0ykWFwYw==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.81.4.tgz",
+      "integrity": "sha512-fBoRgqkF69CwyPtBNxlDi5ha26Zc8f85n2THXYoh13Jn/Bkg8KIDCdKPp/A1BbSeNnkH/++H2EIIfnmaff4uRg==",
       "license": "MIT",
       "dependencies": {
         "@babel/runtime": "^7.25.0",
@@ -30204,9 +29742,9 @@
       }
     },
     "node_modules/metro-source-map": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.0.tgz",
-      "integrity": "sha512-TzsVxhH83dyxg4A4+L1nzNO12I7ps5IHLjKGZH3Hrf549eiZivkdjYiq/S5lOB+p2HiQ+Ykcwtmcja95LIC62g==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.81.4.tgz",
+      "integrity": "sha512-IOwVQ7mLqoqvsL70RZtl1EyE3f9jp43kVsAsb/B/zoWmu0/k4mwEhGLTxmjdXRkLJqPqPrh7WmFChAEf9trW4Q==",
       "license": "MIT",
       "dependencies": {
         "@babel/traverse": "^7.25.3",
@@ -30214,9 +29752,9 @@
         "@babel/types": "^7.25.2",
         "flow-enums-runtime": "^0.0.6",
         "invariant": "^2.2.4",
-        "metro-symbolicate": "0.81.0",
+        "metro-symbolicate": "0.81.4",
         "nullthrows": "^1.1.1",
-        "ob1": "0.81.0",
+        "ob1": "0.81.4",
         "source-map": "^0.5.6",
         "vlq": "^1.0.0"
       },
@@ -30252,17 +29790,16 @@
       }
     },
     "node_modules/metro-symbolicate": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.0.tgz",
-      "integrity": "sha512-C/1rWbNTPYp6yzID8IPuQPpVGzJ2rbWYBATxlvQ9dfK5lVNoxcwz77hjcY8ISLsRRR15hyd/zbjCNKPKeNgE1Q==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.81.4.tgz",
+      "integrity": "sha512-rWxTmYVN6/BOSaMDUHT8HgCuRf6acd0AjHkenYlHpmgxg7dqdnAG1hLq999q2XpW5rX+cMamZD5W5Ez2LqGaag==",
       "license": "MIT",
       "dependencies": {
         "flow-enums-runtime": "^0.0.6",
         "invariant": "^2.2.4",
-        "metro-source-map": "0.81.0",
+        "metro-source-map": "0.81.4",
         "nullthrows": "^1.1.1",
         "source-map": "^0.5.6",
-        "through2": "^2.0.1",
         "vlq": "^1.0.0"
       },
       "bin": {
@@ -30282,9 +29819,9 @@
       }
     },
     "node_modules/metro-transform-plugins": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.0.tgz",
-      "integrity": "sha512-uErLAPBvttGCrmGSCa0dNHlOTk3uJFVEVWa5WDg6tQ79PRmuYRwzUgLhVzn/9/kyr75eUX3QWXN79Jvu4txt6Q==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.81.4.tgz",
+      "integrity": "sha512-nlP069nDXm4v28vbll4QLApAlvVtlB66rP6h+ml8Q/CCQCPBXu2JLaoxUmkIOJQjLhMRUcgTyQHq+TXWJhydOQ==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.25.2",
@@ -30299,16 +29836,16 @@
       }
     },
     "node_modules/metro-transform-plugins/node_modules/@babel/traverse": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
-      "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+      "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^7.25.9",
-        "@babel/generator": "^7.25.9",
-        "@babel/parser": "^7.25.9",
-        "@babel/template": "^7.25.9",
-        "@babel/types": "^7.25.9",
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.27.0",
+        "@babel/parser": "^7.27.0",
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0",
         "debug": "^4.3.1",
         "globals": "^11.1.0"
       },
@@ -30317,9 +29854,9 @@
       }
     },
     "node_modules/metro-transform-worker": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.0.tgz",
-      "integrity": "sha512-HrQ0twiruhKy0yA+9nK5bIe3WQXZcC66PXTvRIos61/EASLAP2DzEmW7IxN/MGsfZegN2UzqL2CG38+mOB45vg==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.81.4.tgz",
+      "integrity": "sha512-lKAeRZ8EUMtx2cA/Y4KvICr9bIr5SE03iK3lm+l9wyn2lkjLUuPjYVep159inLeDqC6AtSubsA8MZLziP7c03g==",
       "license": "MIT",
       "dependencies": {
         "@babel/core": "^7.25.2",
@@ -30327,13 +29864,13 @@
         "@babel/parser": "^7.25.3",
         "@babel/types": "^7.25.2",
         "flow-enums-runtime": "^0.0.6",
-        "metro": "0.81.0",
-        "metro-babel-transformer": "0.81.0",
-        "metro-cache": "0.81.0",
-        "metro-cache-key": "0.81.0",
-        "metro-minify-terser": "0.81.0",
-        "metro-source-map": "0.81.0",
-        "metro-transform-plugins": "0.81.0",
+        "metro": "0.81.4",
+        "metro-babel-transformer": "0.81.4",
+        "metro-cache": "0.81.4",
+        "metro-cache-key": "0.81.4",
+        "metro-minify-terser": "0.81.4",
+        "metro-source-map": "0.81.4",
+        "metro-transform-plugins": "0.81.4",
         "nullthrows": "^1.1.1"
       },
       "engines": {
@@ -30341,16 +29878,16 @@
       }
     },
     "node_modules/metro/node_modules/@babel/traverse": {
-      "version": "7.25.9",
-      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz",
-      "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==",
+      "version": "7.27.0",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz",
+      "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==",
       "license": "MIT",
       "dependencies": {
-        "@babel/code-frame": "^7.25.9",
-        "@babel/generator": "^7.25.9",
-        "@babel/parser": "^7.25.9",
-        "@babel/template": "^7.25.9",
-        "@babel/types": "^7.25.9",
+        "@babel/code-frame": "^7.26.2",
+        "@babel/generator": "^7.27.0",
+        "@babel/parser": "^7.27.0",
+        "@babel/template": "^7.27.0",
+        "@babel/types": "^7.27.0",
         "debug": "^4.3.1",
         "globals": "^11.1.0"
       },
@@ -30359,9 +29896,9 @@
       }
     },
     "node_modules/metro/node_modules/@babel/traverse/node_modules/debug": {
-      "version": "4.3.7",
-      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz",
-      "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==",
+      "version": "4.4.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
+      "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
       "license": "MIT",
       "dependencies": {
         "ms": "^2.1.3"
@@ -30454,21 +29991,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/metro/node_modules/hermes-estree": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.24.0.tgz",
-      "integrity": "sha512-LyoXLB7IFzeZW0EvAbGZacbxBN7t6KKSDqFJPo3Ydow7wDlrDjXwsdiAHV6XOdvEN9MEuWXsSIFN4tzpyrXIHw==",
-      "license": "MIT"
-    },
-    "node_modules/metro/node_modules/hermes-parser": {
-      "version": "0.24.0",
-      "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.24.0.tgz",
-      "integrity": "sha512-IJooSvvu2qNRe7oo9Rb04sUT4omtZqZqf9uq9WM25Tb6v3usmvA93UqfnnoWs5V0uYjEl9Al6MNU10MCGKLwpg==",
-      "license": "MIT",
-      "dependencies": {
-        "hermes-estree": "0.24.0"
-      }
-    },
     "node_modules/metro/node_modules/jest-worker": {
       "version": "29.7.0",
       "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz",
@@ -30571,7 +30093,6 @@
     },
     "node_modules/mimic-fn": {
       "version": "2.1.0",
-      "devOptional": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -30617,6 +30138,7 @@
     },
     "node_modules/minipass": {
       "version": "3.3.6",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "yallist": "^4.0.0"
@@ -30625,27 +30147,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/minipass-collect": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz",
-      "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==",
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^7.0.3"
-      },
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      }
-    },
-    "node_modules/minipass-collect/node_modules/minipass": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      }
-    },
     "node_modules/minipass-fetch": {
       "version": "2.1.2",
       "dev": true,
@@ -30664,6 +30165,7 @@
     },
     "node_modules/minipass-flush": {
       "version": "1.0.5",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "minipass": "^3.0.0"
@@ -30674,6 +30176,7 @@
     },
     "node_modules/minipass-pipeline": {
       "version": "1.2.4",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "minipass": "^3.0.0"
@@ -30695,6 +30198,7 @@
     },
     "node_modules/minizlib": {
       "version": "2.1.2",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "minipass": "^3.0.0",
@@ -30859,12 +30363,6 @@
       "integrity": "sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A==",
       "license": "MIT"
     },
-    "node_modules/nice-try": {
-      "version": "1.0.5",
-      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
-      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
-      "license": "MIT"
-    },
     "node_modules/no-case": {
       "version": "3.0.4",
       "dev": true,
@@ -30911,6 +30409,7 @@
     },
     "node_modules/node-abort-controller": {
       "version": "3.1.1",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/node-addon-api": {
@@ -30929,6 +30428,7 @@
     },
     "node_modules/node-dir": {
       "version": "0.1.17",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "minimatch": "^3.0.2"
@@ -31167,7 +30667,6 @@
     },
     "node_modules/npm-run-path": {
       "version": "4.0.1",
-      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "path-key": "^3.0.0"
@@ -31374,9 +30873,9 @@
       }
     },
     "node_modules/ob1": {
-      "version": "0.81.0",
-      "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.0.tgz",
-      "integrity": "sha512-6Cvrkxt1tqaRdWqTAMcVYEiO5i1xcF9y7t06nFdjFqkfPsEloCf8WwhXdwBpNUkVYSQlSGS7cDgVQR86miBfBQ==",
+      "version": "0.81.4",
+      "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.81.4.tgz",
+      "integrity": "sha512-EZLYM8hfPraC2SYOR5EWLFAPV5e6g+p83m2Jth9bzCpFxP1NDQJYXdmXRB2bfbaWQSmm6NkIQlbzk7uU5lLfgg==",
       "license": "MIT",
       "dependencies": {
         "flow-enums-runtime": "^0.0.6"
@@ -31568,7 +31067,6 @@
     },
     "node_modules/onetime": {
       "version": "5.1.2",
-      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "mimic-fn": "^2.1.0"
@@ -31760,15 +31258,6 @@
         "node": ">=8"
       }
     },
-    "node_modules/p-finally": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
-      "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=4"
-      }
-    },
     "node_modules/p-limit": {
       "version": "3.1.0",
       "license": "MIT",
@@ -31797,6 +31286,7 @@
     },
     "node_modules/p-map": {
       "version": "4.0.0",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "aggregate-error": "^3.0.0"
@@ -32134,6 +31624,7 @@
     },
     "node_modules/path-type": {
       "version": "4.0.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">=8"
@@ -32672,6 +32163,7 @@
     },
     "node_modules/process-nextick-args": {
       "version": "2.0.1",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/progress": {
@@ -32769,6 +32261,7 @@
     },
     "node_modules/pump": {
       "version": "3.0.0",
+      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "end-of-stream": "^1.1.0",
@@ -32875,6 +32368,7 @@
     },
     "node_modules/queue-microtask": {
       "version": "1.2.3",
+      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -33476,6 +32970,26 @@
         "react-native": "*"
       }
     },
+    "node_modules/react-native-document-picker": {
+      "version": "9.3.1",
+      "resolved": "https://registry.npmjs.org/react-native-document-picker/-/react-native-document-picker-9.3.1.tgz",
+      "integrity": "sha512-Vcofv9wfB0j67zawFjfq9WQPMMzXxOZL9kBmvWDpjVuEcVK73ndRmlXHlkeFl5ZHVsv4Zb6oZYhqm9u5omJOPA==",
+      "deprecated": "the package was renamed, follow migration instructions at https://shorturl.at/QYT4t",
+      "license": "MIT",
+      "dependencies": {
+        "invariant": "^2.2.4"
+      },
+      "peerDependencies": {
+        "react": "*",
+        "react-native": "*",
+        "react-native-windows": "*"
+      },
+      "peerDependenciesMeta": {
+        "react-native-windows": {
+          "optional": true
+        }
+      }
+    },
     "node_modules/react-native-draggable-flatlist": {
       "version": "4.0.1",
       "license": "MIT",
@@ -34319,20 +33833,6 @@
         "webpack": "^5.59.0"
       }
     },
-    "node_modules/react-shallow-renderer": {
-      "version": "16.15.0",
-      "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz",
-      "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==",
-      "dev": true,
-      "license": "MIT",
-      "dependencies": {
-        "object-assign": "^4.1.1",
-        "react-is": "^16.12.0 || ^17.0.0 || ^18.0.0"
-      },
-      "peerDependencies": {
-        "react": "^16.0.0 || ^17.0.0 || ^18.0.0"
-      }
-    },
     "node_modules/react-style-singleton": {
       "version": "2.2.3",
       "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz",
@@ -34483,6 +33983,7 @@
     },
     "node_modules/readable-stream": {
       "version": "2.3.8",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "core-util-is": "~1.0.0",
@@ -34496,6 +33997,7 @@
     },
     "node_modules/readable-stream/node_modules/isarray": {
       "version": "1.0.0",
+      "dev": true,
       "license": "MIT"
     },
     "node_modules/readdir-glob": {
@@ -34747,12 +34249,6 @@
         "node": ">= 0.10"
       }
     },
-    "node_modules/remove-trailing-slash": {
-      "version": "0.1.1",
-      "resolved": "https://registry.npmjs.org/remove-trailing-slash/-/remove-trailing-slash-0.1.1.tgz",
-      "integrity": "sha512-o4S4Qh6L2jpnCy83ysZDau+VORNvnFw07CKSAymkd6ICNVEPisMyzlc00KlvvicsxKck94SEwhDnMNdICzO+tA==",
-      "license": "MIT"
-    },
     "node_modules/renderkid": {
       "version": "3.0.0",
       "dev": true,
@@ -34965,6 +34461,7 @@
     },
     "node_modules/reusify": {
       "version": "1.0.4",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "iojs": ">=1.0.0",
@@ -35018,6 +34515,7 @@
     },
     "node_modules/run-parallel": {
       "version": "1.2.0",
+      "dev": true,
       "funding": [
         {
           "type": "github",
@@ -35362,6 +34860,7 @@
       "version": "1.16.0",
       "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz",
       "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==",
+      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "encodeurl": "~1.0.2",
@@ -35678,15 +35177,6 @@
         "plist": "^3.0.5"
       }
     },
-    "node_modules/simple-plist/node_modules/bplist-creator": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz",
-      "integrity": "sha512-sXaHZicyEEmY86WyueLTQesbeoH/mquvarJaQNbjuOQO+7gbFcDEWqKmcWA4cOTLzFlfgvkiVxolk1k5bBIpmg==",
-      "license": "MIT",
-      "dependencies": {
-        "stream-buffers": "2.2.x"
-      }
-    },
     "node_modules/simple-plist/node_modules/bplist-parser": {
       "version": "0.3.1",
       "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz",
@@ -36011,18 +35501,6 @@
         "node": ">= 6"
       }
     },
-    "node_modules/split": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
-      "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
-      "license": "MIT",
-      "dependencies": {
-        "through": "2"
-      },
-      "engines": {
-        "node": "*"
-      }
-    },
     "node_modules/split-on-first": {
       "version": "1.1.0",
       "license": "MIT",
@@ -36044,27 +35522,6 @@
       "version": "1.0.3",
       "license": "BSD-3-Clause"
     },
-    "node_modules/ssri": {
-      "version": "10.0.6",
-      "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz",
-      "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==",
-      "license": "ISC",
-      "dependencies": {
-        "minipass": "^7.0.3"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
-    "node_modules/ssri/node_modules/minipass": {
-      "version": "7.1.2",
-      "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",
-      "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",
-      "license": "ISC",
-      "engines": {
-        "node": ">=16 || 14 >=14.17"
-      }
-    },
     "node_modules/stable": {
       "version": "0.1.8",
       "dev": true,
@@ -36263,6 +35720,7 @@
     },
     "node_modules/string_decoder": {
       "version": "1.1.1",
+      "devOptional": true,
       "license": "MIT",
       "dependencies": {
         "safe-buffer": "~5.1.0"
@@ -36430,18 +35888,8 @@
         "node": ">=8"
       }
     },
-    "node_modules/strip-eof": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
-      "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=0.10.0"
-      }
-    },
     "node_modules/strip-final-newline": {
       "version": "2.0.0",
-      "devOptional": true,
       "license": "MIT",
       "engines": {
         "node": ">=6"
@@ -36815,6 +36263,7 @@
     },
     "node_modules/tar": {
       "version": "6.2.1",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "chownr": "^2.0.0",
@@ -36878,6 +36327,7 @@
     },
     "node_modules/tar/node_modules/minipass": {
       "version": "5.0.0",
+      "dev": true,
       "license": "ISC",
       "engines": {
         "node": ">=8"
@@ -36893,6 +36343,7 @@
     },
     "node_modules/temp": {
       "version": "0.8.4",
+      "dev": true,
       "license": "MIT",
       "dependencies": {
         "rimraf": "~2.6.2"
@@ -36934,6 +36385,7 @@
     },
     "node_modules/temp/node_modules/rimraf": {
       "version": "2.6.3",
+      "dev": true,
       "license": "ISC",
       "dependencies": {
         "glob": "^7.1.3"
@@ -36942,68 +36394,6 @@
         "rimraf": "bin.js"
       }
     },
-    "node_modules/tempy": {
-      "version": "0.7.1",
-      "resolved": "https://registry.npmjs.org/tempy/-/tempy-0.7.1.tgz",
-      "integrity": "sha512-vXPxwOyaNVi9nyczO16mxmHGpl6ASC5/TVhRRHpqeYHvKQm58EaWNvZXxAhR0lYYnBOQFjXjhzeLsaXdjxLjRg==",
-      "license": "MIT",
-      "dependencies": {
-        "del": "^6.0.0",
-        "is-stream": "^2.0.0",
-        "temp-dir": "^2.0.0",
-        "type-fest": "^0.16.0",
-        "unique-string": "^2.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/tempy/node_modules/del": {
-      "version": "6.1.1",
-      "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz",
-      "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==",
-      "license": "MIT",
-      "dependencies": {
-        "globby": "^11.0.1",
-        "graceful-fs": "^4.2.4",
-        "is-glob": "^4.0.1",
-        "is-path-cwd": "^2.2.0",
-        "is-path-inside": "^3.0.2",
-        "p-map": "^4.0.0",
-        "rimraf": "^3.0.2",
-        "slash": "^3.0.0"
-      },
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
-    "node_modules/tempy/node_modules/is-path-inside": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz",
-      "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==",
-      "license": "MIT",
-      "engines": {
-        "node": ">=8"
-      }
-    },
-    "node_modules/tempy/node_modules/type-fest": {
-      "version": "0.16.0",
-      "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz",
-      "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==",
-      "license": "(MIT OR CC0-1.0)",
-      "engines": {
-        "node": ">=10"
-      },
-      "funding": {
-        "url": "https://github.com/sponsors/sindresorhus"
-      }
-    },
     "node_modules/terminal-link": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz",
@@ -37138,22 +36528,6 @@
       "version": "5.0.0",
       "license": "MIT"
     },
-    "node_modules/through": {
-      "version": "2.3.8",
-      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
-      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
-      "license": "MIT"
-    },
-    "node_modules/through2": {
-      "version": "2.0.5",
-      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
-      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
-      "license": "MIT",
-      "dependencies": {
-        "readable-stream": "~2.3.6",
-        "xtend": "~4.0.1"
-      }
-    },
     "node_modules/thunky": {
       "version": "1.1.0",
       "dev": true,
@@ -37549,9 +36923,10 @@
       }
     },
     "node_modules/tslib": {
-      "version": "2.6.3",
-      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz",
-      "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ=="
+      "version": "2.8.1",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+      "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
+      "license": "0BSD"
     },
     "node_modules/tsutils": {
       "version": "3.21.0",
@@ -37797,9 +37172,9 @@
       "license": "MIT"
     },
     "node_modules/undici": {
-      "version": "6.21.1",
-      "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.1.tgz",
-      "integrity": "sha512-q/1rj5D0/zayJB2FraXdaWxbhWiNKDvu8naDT2dl1yTlvJp4BLtOcp2a5BvgGNQpYYJzau7tf1WgKv3b+7mqpQ==",
+      "version": "6.21.2",
+      "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz",
+      "integrity": "sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==",
       "license": "MIT",
       "engines": {
         "node": ">=18.17"
@@ -37888,30 +37263,6 @@
         "node": ">=0.10.0"
       }
     },
-    "node_modules/unique-filename": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz",
-      "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==",
-      "license": "ISC",
-      "dependencies": {
-        "unique-slug": "^4.0.0"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
-    "node_modules/unique-slug": {
-      "version": "4.0.0",
-      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz",
-      "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==",
-      "license": "ISC",
-      "dependencies": {
-        "imurmurhash": "^0.1.4"
-      },
-      "engines": {
-        "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
-      }
-    },
     "node_modules/unique-string": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz",
@@ -37970,6 +37321,7 @@
     },
     "node_modules/universalify": {
       "version": "2.0.0",
+      "dev": true,
       "license": "MIT",
       "engines": {
         "node": ">= 10.0.0"
@@ -38165,6 +37517,7 @@
     },
     "node_modules/util-deprecate": {
       "version": "1.0.2",
+      "devOptional": true,
       "license": "MIT"
     },
     "node_modules/utila": {
@@ -38188,6 +37541,7 @@
     },
     "node_modules/uuid": {
       "version": "8.3.2",
+      "dev": true,
       "license": "MIT",
       "bin": {
         "uuid": "dist/bin/uuid"
@@ -38990,9 +38344,9 @@
       "license": "MIT"
     },
     "node_modules/wonka": {
-      "version": "6.3.4",
-      "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.4.tgz",
-      "integrity": "sha512-CjpbqNtBGNAeyNS/9W6q3kSkKE52+FjIj7AkFlLr11s/VWGUu6a2CdYSdGxocIhIVjaW/zchesBQUKPVU69Cqg==",
+      "version": "6.3.5",
+      "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz",
+      "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==",
       "license": "MIT"
     },
     "node_modules/word-wrap": {
diff --git a/package.json b/package.json
index 3d04eeffb004..a0d069eec014 100644
--- a/package.json
+++ b/package.json
@@ -25,7 +25,7 @@
     "ipad-standalone": "concurrently \"STANDALONE_NEW_DOT=true ./scripts/run-build.sh --ipad\"",
     "ipad-sm": "concurrently \"./scripts/run-build.sh --ipad-sm\"",
     "ipad-sm-standalone": "concurrently \"STANDALONE_NEW_DOT=true ./scripts/run-build.sh --ipad-sm\"",
-    "start": "npx react-native start --client-logs",
+    "start": "npx react-native start --client-logs --reset-cache",
     "web": "./scripts/set-pusher-suffix.sh && concurrently npm:web-proxy npm:web-server",
     "web-proxy": "ts-node web/proxy.ts",
     "web-server": "webpack-dev-server --open --config config/webpack/webpack.dev.ts",
@@ -80,8 +80,8 @@
     "@dotlottie/react-player": "^1.6.3",
     "@expensify/react-native-background-task": "file:./modules/background-task",
     "@expensify/react-native-hybrid-app": "file:./modules/hybrid-app",
-    "@expensify/react-native-live-markdown": "0.1.244",
-    "@expo/metro-runtime": "^4.0.1",
+    "@expensify/react-native-live-markdown": "0.1.256",
+    "@expo/metro-runtime": "4.0.2-canary-20250306-d9d3e02",
     "@firebase/app": "^0.10.10",
     "@firebase/performance": "^0.6.8",
     "@formatjs/intl-datetimeformat": "^6.12.5",
@@ -124,12 +124,12 @@
     "dom-serializer": "^0.2.2",
     "domhandler": "^4.3.0",
     "expensify-common": "2.0.124",
-    "expo": "52.0.28",
-    "expo-asset": "^11.0.2",
-    "expo-av": "^15.0.2",
-    "expo-font": "^13.0.3",
-    "expo-image": "^2.0.4",
-    "expo-image-manipulator": "^13.0.6",
+    "expo": "53.0.0-canary-20250306-d9d3e02",
+    "expo-asset": " 12.0.0-canary-20250306-d9d3e02",
+    "expo-av": "15.0.3-canary-20250306-d9d3e02",
+    "expo-font": "14.0.0-canary-20250306-d9d3e02",
+    "expo-image": "3.0.0-canary-20250306-d9d3e02",
+    "expo-image-manipulator": "13.0.7-canary-20250306-d9d3e02",
     "fast-equals": "^4.0.3",
     "focus-trap-react": "^11.0.3",
     "howler": "^2.2.4",
@@ -158,6 +158,7 @@
     "react-native-collapsible": "^1.6.2",
     "react-native-config": "1.5.3",
     "react-native-device-info": "10.3.1",
+    "react-native-document-picker": "^9.3.1",
     "react-native-draggable-flatlist": "^4.0.1",
     "react-native-fs": "^2.20.0",
     "react-native-gesture-handler": "2.24.0",
@@ -316,7 +317,7 @@
     "jest-circus": "29.4.1",
     "jest-cli": "29.4.1",
     "jest-environment-jsdom": "^29.4.1",
-    "jest-expo": "52.0.3",
+    "jest-expo": "53.0.0-canary-20250306-d9d3e02",
     "jest-transformer-svg": "^2.0.1",
     "jest-when": "^3.5.2",
     "link": "^2.1.1",
@@ -374,7 +375,10 @@
     "send": "0.19.0",
     "regexpu-core": "5.3.2",
     "react": "19.0.0",
-    "react-dom": "19.0.0"
+    "react-dom": "19.0.0",
+    "expo": "53.0.0-canary-20250306-d9d3e02",
+    "metro": "^0.81.3",
+    "metro-core": "^0.81.3"
   },
   "expo": {
     "autolinking": {
diff --git a/patches/@expensify+react-native-live-markdown+0.1.256+001+remove-outdated-import.patch b/patches/@expensify+react-native-live-markdown+0.1.256+001+remove-outdated-import.patch
new file mode 100644
index 000000000000..148b40db9494
--- /dev/null
+++ b/patches/@expensify+react-native-live-markdown+0.1.256+001+remove-outdated-import.patch
@@ -0,0 +1,12 @@
+diff --git a/node_modules/@expensify/react-native-live-markdown/android/src/main/new_arch/react/renderer/components/RNLiveMarkdownSpec/MarkdownTextInputDecoratorShadowNode.cpp b/node_modules/@expensify/react-native-live-markdown/android/src/main/new_arch/react/renderer/components/RNLiveMarkdownSpec/MarkdownTextInputDecoratorShadowNode.cpp
+index f608576..5671af7 100644
+--- a/node_modules/@expensify/react-native-live-markdown/android/src/main/new_arch/react/renderer/components/RNLiveMarkdownSpec/MarkdownTextInputDecoratorShadowNode.cpp
++++ b/node_modules/@expensify/react-native-live-markdown/android/src/main/new_arch/react/renderer/components/RNLiveMarkdownSpec/MarkdownTextInputDecoratorShadowNode.cpp
+@@ -3,7 +3,6 @@
+ #include <fbjni/fbjni.h>
+ #include <react/fabric/JFabricUIManager.h>
+ #include <react/jni/ReadableNativeMap.h>
+-#include <react/renderer/components/androidtextinput/AndroidTextInputState.h>
+ #include <react/renderer/components/view/conversions.h>
+ #include <react/renderer/core/ComponentDescriptor.h>
+ #include <yoga/Yoga.h>
diff --git a/patches/expo+52.0.28+001+dont-change-formdata.patch b/patches/expo+52.0.28+001+dont-change-formdata.patch
deleted file mode 100644
index 14406b6d52f6..000000000000
--- a/patches/expo+52.0.28+001+dont-change-formdata.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-diff --git a/node_modules/expo/src/winter/FormData.ts b/node_modules/expo/src/winter/FormData.ts
-index d78f165..577501c 100644
---- a/node_modules/expo/src/winter/FormData.ts
-+++ b/node_modules/expo/src/winter/FormData.ts
-@@ -70,7 +70,16 @@ function normalizeArgs(
-   blobFilename: string | undefined
- ): [string, File | string] {
-   if (value instanceof Blob) {
--    value = { type: value.type, name: blobFilename || 'blob', blob: value };
-+    // @ts-expect-error: `Blob.data.blobId` is react-native's proprietary property.
-+    if (value.data?.blobId != null) {
-+      // For react-native created Blob objects,
-+      // we need to keep its original form as-is without breaking functionality.
-+      // However, we need to pass `name` for our file name handling.
-+      // @ts-expect-error: Mutating the Blob object to add the `name` property.
-+      value.name = blobFilename || 'blob';
-+    } else {
-+      value = { type: value.type, name: blobFilename || 'blob', blob: value };
-+    }
-   } else if (typeof value !== 'object') {
-     value = String(value);
-   }
-diff --git a/node_modules/expo/src/winter/fetch/convertFormData.ts b/node_modules/expo/src/winter/fetch/convertFormData.ts
-index e559323..e8bdbdd 100644
---- a/node_modules/expo/src/winter/fetch/convertFormData.ts
-+++ b/node_modules/expo/src/winter/fetch/convertFormData.ts
-@@ -30,6 +30,20 @@ export async function convertFormDataAsync(
-       results.push(entry.file.bytes());
-     } else if ('blob' in entry) {
-       results.push(new Uint8Array(await blobToArrayBufferAsync(entry.blob)));
-+    } else if (entry._data?.blobId != null) {
-+      // When `FormData.getParts()` is called, React Native will use spread operator to copy the object and loose the Blob type info.
-+      // We should find the original Blob instance from the `FormData._parts` internal properties.
-+      // @ts-expect-error: react-native's proprietary Blob type
-+      const blob = formData._parts?.find(
-+          ([name, value]) => value.data?.blobId === entry._data.blobId
-+      );
-+      if (blob == null) {
-+        throw new Error('Cannot find the original Blob instance from FormData');
-+      }
-+      if (!(blob[1] instanceof Blob)) {
-+        throw new Error('Unexpected value type for Blob entry in FormData');
-+      }
-+      results.push(new Uint8Array(await blobToArrayBufferAsync(blob[1])));
-     } else {
-       throw new Error('Unsupported FormDataPart implementation');
-     }
diff --git a/patches/expo-image-manipulator+13.0.6+002+fix-type-exports.patch b/patches/expo-image-manipulator+13.0.6+002+fix-type-exports.patch
deleted file mode 100644
index e70777f20ac3..000000000000
--- a/patches/expo-image-manipulator+13.0.6+002+fix-type-exports.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-diff --git a/node_modules/expo-image-manipulator/src/index.ts b/node_modules/expo-image-manipulator/src/index.ts
-index 65e63fb..9b60a58 100644
---- a/node_modules/expo-image-manipulator/src/index.ts
-+++ b/node_modules/expo-image-manipulator/src/index.ts
-@@ -1,9 +1,10 @@
- export { ImageManipulator, manipulateAsync, useImageManipulator } from './ImageManipulator';
-+export { SaveFormat } from './ImageManipulator.types';
- 
--export { SaveOptions, SaveFormat, ImageResult } from './ImageManipulator.types';
-+export type { SaveOptions, ImageResult } from './ImageManipulator.types';
- 
- // Export types that are deprecated as of SDK 52
--export {
-+export type {
-   ActionResize,
-   ActionRotate,
-   FlipType,
diff --git a/patches/expo-modules-core+2.2.0+001+disableViewRecycling.patch b/patches/expo-modules-core+2.2.0+001+disableViewRecycling.patch
deleted file mode 100644
index f638a14bb0e8..000000000000
--- a/patches/expo-modules-core+2.2.0+001+disableViewRecycling.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-diff --git a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm
-index 2eacddf..346bbb9 100644
---- a/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm
-+++ b/node_modules/expo-modules-core/ios/Fabric/ExpoFabricViewObjC.mm
-@@ -138,6 +138,11 @@ - (void)finalizeUpdates:(RNComponentViewUpdateMask)updateMask
-   }
- }
- 
-++ (BOOL)shouldBeRecycled
-+{
-+    return NO;
-+}
-+
- #pragma mark - Events
- 
- - (void)dispatchEvent:(nonnull NSString *)eventName payload:(nullable id)payload
diff --git a/patches/expo-modules-core+2.2.0+002+change-global-type.patch b/patches/expo-modules-core+2.2.0+002+change-global-type.patch
deleted file mode 100644
index a73948326a38..000000000000
--- a/patches/expo-modules-core+2.2.0+002+change-global-type.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/node_modules/expo-modules-core/build/ts-declarations/global.d.ts b/node_modules/expo-modules-core/build/ts-declarations/global.d.ts
-index 6ec6769..5374ce4 100644
---- a/node_modules/expo-modules-core/build/ts-declarations/global.d.ts
-+++ b/node_modules/expo-modules-core/build/ts-declarations/global.d.ts
-@@ -58,7 +58,7 @@ export interface ExpoProcessEnv {
-     EXPO_BASE_URL?: string;
-     /** Build-time representation of the `Platform.OS` value that the current JavaScript was bundled for. Does not support platform shaking wrapped require statements. */
-     EXPO_OS?: string;
--    [key: string]: any;
-+    [key: string]: string;
- }
- export interface ExpoProcess {
-     env: ExpoProcessEnv;
diff --git a/patches/jest-expo+52.0.3.patch b/patches/jest-expo+52.0.3.patch
deleted file mode 100644
index 4ed3286ff518..000000000000
--- a/patches/jest-expo+52.0.3.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/node_modules/jest-expo/src/preset/setup.js b/node_modules/jest-expo/src/preset/setup.js
-index 7a77203..d905ebe 100644
---- a/node_modules/jest-expo/src/preset/setup.js
-+++ b/node_modules/jest-expo/src/preset/setup.js
-@@ -293,5 +293,8 @@ try {
- // Installs web implementations of global things that are normally installed through JSI.
- require('expo-modules-core/src/web/index.web');
- 
-+jest.doMock('expo/src/winter/FormData', () => ({
-+  installFormDataPatch: jest.fn(),
-+}));
- // Ensure the environment globals are installed before the first test runs.
- require('expo/src/winter');