Commit Graph

571 Commits

Author SHA1 Message Date
Fúlvio Abrahão de Paula
9728155cbf Consider NSNull object as type=null in ObjectMapper.
Summary: nil objects from sqlite is NSNull object, so we need to consider this case in the ObjectMapper as well.

Differential Revision: D48394360

fbshipit-source-id: 61bcdb03cb4cbf17a2fef000a5a61ac2f2c035dd
2023-08-17 11:19:50 -07:00
Fúlvio Abrahão de Paula
fb47b70d36 Parse NSDictionary in ObjectMapper.
Summary: Some objects returned from sqlite in json blob is a NSDictionary, we need to parse data at this case.

Differential Revision: D48394361

fbshipit-source-id: c977ebdd33c392fca77741cdacdeb0c975e2ca36
2023-08-17 11:19:50 -07:00
github-actions[bot]
84e0eaa004 Automated: Update Podfile.lock (#5048)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/5048

Reviewed By: ivanmisuno

Differential Revision: D48397521

Pulled By: passy

fbshipit-source-id: 2333aa312f982b2ceff1dd2a2f8dfe9d0e63c893
2023-08-17 08:15:18 -07:00
Fúlvio Abrahão de Paula
2f5f4911e5 Refactor FlipperKitDatabasePlugin to accept multiple database drivers.
Reviewed By: lblasa

Differential Revision: D48316901

fbshipit-source-id: 0eb7b93f53ce115a0a031a58ecef3db963b35f09
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
661ed9eb44 Isolate duplicated code in DatabasesManager.
Reviewed By: lblasa

Differential Revision: D48316900

fbshipit-source-id: 2ae984f0d6f10b9cb843a74f335c77428d2229ef
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
d102ae263c Fix mocks to return correct expected results.
Reviewed By: lblasa

Differential Revision: D48315430

fbshipit-source-id: 3a9210b6c4ce8192ff5489d2616e6a37264309b2
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
d9b34e7880 Return right format for databaseGetTableStructureResponseToDictionary method.
Reviewed By: lblasa

Differential Revision: D48315431

fbshipit-source-id: fc4ca1bc20e691162dfbe61a90a5ab9bf8df2466
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
7ba548d6e7 Implement executeSql command.
Reviewed By: lblasa

Differential Revision: D48310925

fbshipit-source-id: 136b7f09a3a1b886111b6e3cb0e377b73b126e59
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
42fb6f09f7 Implement getTableData command.
Reviewed By: lblasa

Differential Revision: D48267029

fbshipit-source-id: a2ee02d3d0c465c83acd99fd7093e0abb5c7c2de
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
a0510ad1bf Implement getTableInfo command.
Reviewed By: lblasa

Differential Revision: D48266744

fbshipit-source-id: 79f2fd3c4718d6bf7be4a0538ec0d1eb92503eb7
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
453b8f7b96 Implement getTableStructure command.
Reviewed By: lblasa

Differential Revision: D48191484

fbshipit-source-id: 6838590f4e10b4613074e9e9d112a62d4688f739
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
ce85f44a33 Create commands data models and add ObjectMapper.
Reviewed By: lblasa

Differential Revision: D48188172

fbshipit-source-id: 10c99250f993c71976c693a691586385d111a4fd
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
9db2c74632 Implement databaseList command and Add MockDatabaseDriver.
Reviewed By: lblasa

Differential Revision: D48172577

fbshipit-source-id: 10d6301041b3a4b3ab83b19e9afd3eac7ad7004c
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
fea326be79 Implement similar structure we have in Java plugin.
Reviewed By: lblasa

Differential Revision: D48172579

fbshipit-source-id: b2127507b04cdb85f426313e71405a81103e42bd
2023-08-14 11:07:07 -07:00
Fúlvio Abrahão de Paula
3003330067 Create initial databases plugin structure.
Reviewed By: lblasa

Differential Revision: D48172580

fbshipit-source-id: d000329c2fe8ebc12f59e3165861b1e8033ddbbe
2023-08-14 11:07:07 -07:00
github-actions[bot]
84987b888b Automated: Update Podfile.lock (#5000)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/5000

Reviewed By: lblasa

Differential Revision: D48268231

Pulled By: passy

fbshipit-source-id: 9f28d68aeeca2c921a9298cbfad7c13e261b6900
2023-08-11 12:08:42 -07:00
github-actions[bot]
25ff271633 Automated: Update Podfile.lock (#4994)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4994

Reviewed By: mweststrate

Differential Revision: D48112730

Pulled By: passy

fbshipit-source-id: 1429d64dc5c200a8af3eb162702cf81e1c9af72a
2023-08-07 10:56:27 -07:00
github-actions[bot]
a0e91484c9 Automated: Update Podfile.lock (#4973)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4973

Reviewed By: lblasa

Differential Revision: D47916691

Pulled By: passy

fbshipit-source-id: c9f752b8c452b6b4dab0b550b5d12de31db106c0
2023-08-01 04:38:10 -07:00
github-actions[bot]
530a621e6b Automated: Update Podfile.lock (#4971)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4971

Reviewed By: lblasa

Differential Revision: D47829475

Pulled By: passy

fbshipit-source-id: 6e897ecb76776be3b36de590fe76afa233e2e435
2023-07-27 03:37:48 -07:00
Lorenzo Blasa
544e49c097 Podspec and sample integration
Summary: Create podspec for UI Debugger and integrate with our iOS sample application.

Reviewed By: aigoncharov

Differential Revision: D47715973

fbshipit-source-id: a64444660ea9fb8a2c29fcafe1a44266e8daf414
2023-07-26 05:01:58 -07:00
Lorenzo Blasa
b5d51a047b Internal/External init
Summary:
UI Debugger initialisation is defined in two places. Internally, done inside:
    fb/FlipperKitUIDebuggerPluginInit.mm
OSS:
    FlipperKitUIDebuggerPluginInit.mm

Contents of `fb/` directory are not synced in OSS. OSS file is excluded internally as it doesn't use the XPlugins.

Reviewed By: aigoncharov

Differential Revision: D47759035

fbshipit-source-id: 3578be076525f05b530a0d129b5c37e48572d58e
2023-07-26 05:01:58 -07:00
Lorenzo Blasa
aba50889f2 Snapshot to use key window size if possible
Summary:
Use the application key window bounds if possible.
In the case where the application is not using the entire screen,
like in Split View on an iPad, the running application is
not using the entire screen thus the snapshot stretches to
fill the screen size which is incorrect.

Reviewed By: LukeDefeo

Differential Revision: D47793033

fbshipit-source-id: d6c7932d35bad13752713772d078f94bad530b09
2023-07-26 04:24:07 -07:00
Ivan Misuno
1753581028 Add metadata.customAttributes field
Summary:
`customAttributes` will be used by the UI Debugger to pass styleID for Bloks model attributes.
(replicating corresponding [Android implementation](https://www.internalfb.com/code/fbsource/[33c33fa7f582]/xplat/sonar/android/src/facebook/java/com/facebook/flipper/uidebugger/bloks/descriptors/BloksDebugComponentDescriptor.kt?lines=138-139%2C170-171))

Reviewed By: antonk52

Differential Revision: D47494013

fbshipit-source-id: 257387d4af94235b23d636047326532d7071e8dd
2023-07-21 14:32:22 -07:00
Lorenzo Blasa
db7aa9eeaf OSS
Summary: Move UIDebugger plugin to OSS space.

Reviewed By: passy

Differential Revision: D47634848

fbshipit-source-id: 90e8c0181a2434d0e5d76bdb99b902051e6d702e
2023-07-21 04:47:13 -07:00
Octavian Guzu
71751855df Set null-terminator after strncpy
Summary: When the length of `pkcs12.second.c_str()` is equal to `length`, strncpy won't write a null-terminator at the end of the destination string, making the destination unsafe to read and potentially cause an overflow.

Reviewed By: lblasa

Differential Revision: D46934320

fbshipit-source-id: 5e7acd49523b80105bcc47471facd9ff23b8a2b8
2023-07-03 04:41:02 -07:00
Lorenzo Blasa
4ac755370d Move socket clean inside operation queue
Summary: Set delegate and close inside the operation's queue as to make it safer i.e. all socket related operations are done inside the queue.

Reviewed By: ivanmisuno

Differential Revision: D47124235

fbshipit-source-id: 48b53db1cd47d017a26186a156046ba68fe358b7
2023-06-29 12:40:09 -07:00
Lorenzo Blasa
883993d2ec Bump SocketRocket 0.7.0
Summary:
About to release React Native 0.72.1. This version of React Native has to depend on SocketRocket 0.7.0, released yesterday.

Cocoapods is failing to install dependencies with the following error:
```
In snapshot (Podfile.lock):
    SocketRocket (= 0.7.0)

  In Podfile:
    FlipperKit/FlipperKitReactPlugin (= 0.182.0) was resolved to 0.182.0, which depends on
      FlipperKit/Core (= 0.182.0) was resolved to 0.182.0, which depends on
        SocketRocket (~> 0.6.0)

    React-Core/RCTWebSocket (from `../react-native/`) was resolved to 1000.0.0, which depends on
      SocketRocket (= 0.7.0)

    React-CoreModules (from `../react-native/React/CoreModules`) was resolved to 1000.0.0, which depends on
      SocketRocket
```

By bumping the SocketRocket dependencies and publishing a new version of FlipperKit, we would be able to release React Native.

Reviewed By: passy, cipolleschi

Differential Revision: D47125059

fbshipit-source-id: d0797880c502c14db9f0261c3e8abf2652e7bba2
2023-06-29 10:21:06 -07:00
github-actions[bot]
ae6344d051 Automated: Update Podfile.lock (#4890)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4890

Reviewed By: ivanmisuno

Differential Revision: D47091378

Pulled By: passy

fbshipit-source-id: 254b1a6ca737c2ccfa40db3bae147d0db1b1594b
2023-06-29 03:46:55 -07:00
Lorenzo Blasa
e42db220ee Socket connect no longer synchronous and blocking
Summary:
Never really liked this code. Before this change, calls to connect were blocking.

Because of this, we had to make use of promises and a bit of really not that good-looking code.

So, this change makes connect non-blocking meaning that we make full use of our event handler.

These changes contain:
- CSR is not getting generated after each failed attempt.
- Connect is no longer blocking.
- Do not report events via the handler when explicitly disconnecting.

Reviewed By: jknoxville

Differential Revision: D46853228

fbshipit-source-id: 00e6a9c7c039a756175fe14982959e078d92bacb
2023-06-28 12:09:58 -07:00
Lorenzo Blasa
63f8c47cfa New 'isConnected' API
Summary: Expose the newly created `isConnected` API to iOS FlipperClient API.

Reviewed By: antonk52

Differential Revision: D46841190

fbshipit-source-id: c36eb08427d60c73fad8f92100df5d012149b4a8
2023-06-20 00:46:55 -07:00
github-actions[bot]
8f20631f6a Automated: Update Podfile.lock (#4836)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4836

Reviewed By: lblasa

Differential Revision: D46756889

Pulled By: passy

fbshipit-source-id: 8151a079e6a80a7bdd729bb836cdfeb6cc331994
2023-06-15 05:38:25 -07:00
Nick Gerleman
6c43d39c20 Remove YogaKit Integration (#4830)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/4830

YogaKit is a library which allows integrating Yoga layouts directly with UIKit. It is not used by higher level libraries like ComponentKit or React Native, but is used by a smattering of surfaces and shared components in Origami Studio and Instagram. See the following search for `YogaKit/UIView+Yoga.h`.

{F1026467213}

It is not really being developed anymore, and doesn't have much of a future, so I am deprecating it in OSS, to remove after the next OSS Yoga release. This means Flipper in OSS will not be able to rely on it.

Instead of special-casing for OSS vs not, this change removes the current YogaKit integration with the layout plugin, since it sounds like we are building a new layout plugin anyway, and I'm not aware of any new surfaces being built on top of YogaKit.

Removing Yoga as a dependency from Flipper should also allow us to fixup the current OSS Flipper build, along with a whole bunch of hacks RN's open source build currently does to produce a Yoga pod compatible with both RN and Flipper.

There are probably some OSS related lockfiles that can be updated after this, for things like the FlipperKit sample app. I did not do that as part of this change, since I don't know how healthy all of that infra is or how it integrates with the offline mirror used.

Reviewed By: passy

Differential Revision: D46664918

fbshipit-source-id: 9d4dd56aa4c7f55e97ac643aa6e4deb9375e582c
2023-06-13 11:11:08 -07:00
github-actions[bot]
6108769464 Automated: Update Podfile.lock (#4826)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4826

Reviewed By: lblasa

Differential Revision: D46679156

Pulled By: passy

fbshipit-source-id: 81cf60d16ea7ce2954ce16896f2dec84b11119c2
2023-06-13 08:14:57 -07:00
github-actions[bot]
3607b7f996 Automated: Update Podfile.lock (#4794)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4794

Reviewed By: antonk52

Differential Revision: D46355046

Pulled By: passy

fbshipit-source-id: e676d4c9d8bef0b3ab29bc9e6cb23838b262c5bf
2023-06-01 10:50:02 -07:00
github-actions[bot]
ee76a2f7e0 Automated: Update Podfile.lock (#4661)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4661

Reviewed By: ivanmisuno

Differential Revision: D44995374

Pulled By: passy

fbshipit-source-id: 4c93a3750da5ae9977e62451e0bf7f3717b8c233
2023-04-14 04:10:57 -07:00
Richard Howell
60f4bc1a65 enable -Wstrict-prototypes
Summary:
The 14.3 toolchain includes `-Wstrict-prototypes` in `-Wall`. Add it to the default warning list to ensure the code is buildable with the 14.3 toolchain.

Please forward fix any build breakage introduced by this change.

Reviewed By: NSProgrammer

Differential Revision: D44371491

fbshipit-source-id: 257c7f7748b079a34ffd5c041339d518bef9d1e5
2023-03-28 10:48:57 -07:00
github-actions[bot]
b45d56d9fe Automated: Update Podfile.lock (#4624)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4624

Reviewed By: passy

Differential Revision: D44301473

Pulled By: aigoncharov

fbshipit-source-id: 8edee27e69b441aed959e9555a1fe5e1d1582e88
2023-03-23 05:06:55 -07:00
github-actions[bot]
81d1070ccc Automated: Update Podfile.lock (#4604)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4604

Reviewed By: mweststrate

Differential Revision: D44131877

Pulled By: passy

fbshipit-source-id: b1ce5dd121c077e88db2c9d916edd79b7d383f18
2023-03-16 13:20:54 -07:00
github-actions[bot]
6eacbe87cc Automated: Update Podfile.lock (#4528)
Summary:
This is an automated PR to update the Podfile.lock.
- Make sure that the Podfile.lock contains latest FlipperKit and Flipper pod versions.
- Also make sure that all the dependencies are updated to the latest one.
- This is auto-generated by [create-pull-request](https://github.com/peter-evans/create-pull-request)

Pull Request resolved: https://github.com/facebook/flipper/pull/4528

Reviewed By: ivanmisuno

Differential Revision: D43974467

Pulled By: passy

fbshipit-source-id: b2a0b3539add658f59221acadc6701bdcae3238c
2023-03-10 06:27:37 -08:00
Andrey Goncharov
8f2ae1cc02 Back out "Remove FBDefines from sonar"
Summary:
Original commit changeset: ff6db8e5e4bb

Original Phabricator Diff: D43408140 (b0a6b0f430)

It breaks the build for our iOS Sample app.- https://github.com/facebook/flipper/actions/runs/4212014740

Reviewed By: lblasa

Differential Revision: D43466846

fbshipit-source-id: e06a6f57b7fff08791d875e20825fbe5e0db0b37
2023-02-21 10:34:20 -08:00
Adam Ernst
b0a6b0f430 Remove FBDefines from sonar
Summary: This appears to be unreferenced and it constantly confuses our header autocomplete. Remove.

Reviewed By: d16r

Differential Revision: D43408140

fbshipit-source-id: ff6db8e5e4bbda394197168680cf8d15b07666c3
2023-02-18 08:16:02 -08:00
Lorenzo Blasa
c1badd1a29 RCMountable -> CKMountable (#4522)
Summary:
Pull Request resolved: https://github.com/facebook/flipper/pull/4522

^

A codemod changed the name of `CKMountable` for the OSS ComponentKit integration, this is a breaking change as we are pinned to a specific Cocoapods version of CK.

Reviewed By: passy

Differential Revision: D43303489

fbshipit-source-id: 4d8ad472735414ca8e67a8ce4409efe84aab3e94
2023-02-15 03:55:28 -08:00
Lorenzo Blasa
e9c0a459dd Remove connection timeout
Summary:
This change mainly removes the connection timeout period as it may introduce a race condition in which slow server connections get terminated potentially creating connection loops.

Also, suspend and wait for all operations to complete once a socket is disconnected.

Reviewed By: ivanmisuno

Differential Revision: D43048252

fbshipit-source-id: 64c28a3d3d2fd4e065084d5f55a17444385c07e0
2023-02-07 05:55:11 -08:00
Lorenzo Blasa
2ba167f899 Back out "Clear handlers on disconnect"
Summary:
^

Revert as to validate this is not causing regressions: T143523262

Reviewed By: passy

Differential Revision: D42800560

fbshipit-source-id: 8db61454eabfdb259637bb97c2bb4754984ecf6f
2023-01-27 04:07:37 -08:00
Lorenzo Blasa
f44feb69e0 SKDescriptorMapper should be a weak reference
Summary:
^

SKDescriptorMapper owns the SKNodeDescriptor instances. SKNodeDescriptor instances should only have a weak reference to the mapper as to avoid retain cycles.

Reviewed By: passy

Differential Revision: D42673698

fbshipit-source-id: 8c98709b28fc3c711dc56c179c7c362417fa1f9d
2023-01-23 03:47:41 -08:00
Lorenzo Blasa
764e94503e Clear handlers on disconnect
Summary:
A few changes that should make our connect/disconnect more robust:

* Certificate provider handler should be set directly to and managed by the policy.
* Instantiate the socket once, synchronously on the connect method. Explicit deallocation once, synchronously on the disconnect method.
* Clear handlers on disconnect after clearing the delegate.
* Wait for the operation queue to drain before returning.

Reviewed By: passy

Differential Revision: D42664724

fbshipit-source-id: bd482acbb64a9bc9e36fb3418d4c81afa2109305
2023-01-23 03:45:59 -08:00
Lorenzo Blasa
8dd5b57444 Diagnostic controller improvement
Summary:
The diagnostics controller is not the best crafted UIViewController. It has many things that should be improved.

- This diff just sets the background of the root view to white. At least, that will ensure that its text content is always shown if the screen background happens to be black (same as font colour).
- Correct offset calculation, used for scrolling. Effectively, only set it if the content to be displayed no longer fits in the scrollview viewport.

Reviewed By: LukeDefeo

Differential Revision: D41876904

fbshipit-source-id: e2a89d8f6001e5b626c8df1d0832e77783999b81
2022-12-13 09:49:46 -08:00
Lorenzo Blasa
91effaea44 Update SampleSwift as to remove CK dependencies
Summary: ^

Reviewed By: LukeDefeo

Differential Revision: D41868295

fbshipit-source-id: 52f594fe1817459e99dab25bf9c87eebdef2168e
2022-12-09 02:22:28 -08:00
Kfir Schindelhaim
b55a35dd0f Rename CKMountable -> RCMountable
Summary: ^^

Reviewed By: adamjernst

Differential Revision: D41496622

fbshipit-source-id: aa4ce00ef5f05f58935e30d1570fbaa8b57c55d7
2022-12-01 13:20:37 -08:00
Lorenzo Blasa
1406e291ee Send with raw parameters
Summary:
On Android we already had an API to send raw arguments i.e. raw json as params.

This just adds feature parity on iOS.

Reviewed By: LukeDefeo

Differential Revision: D41433777

fbshipit-source-id: abd47f987b9e2b451100e81acf6fea61cd876807
2022-11-28 09:45:53 -08:00