tweaselORG / TrackHAR

Library for detecting tracking data transmissions from traffic in HAR format.
Creative Commons Zero v1.0 Universal
5 stars 0 forks source link

Investigate `firebaselogging-pa.googleapis.com` and `firebaselogging.googleapis.com` #52

Closed baltpeter closed 2 weeks ago

baltpeter commented 9 months ago

https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog is the fourth most common endpoint in our dataset)+appCount%2C+count(1)+requestCount%2C+endpointUrl+from+requests%0D%0Awhere+endpointUrl+is+not+null%0D%0Agroup+by+endpointUrl++order+by+appCount+desc+limit+101%3B) and we don't have an adapter for it yet.

baltpeter commented 9 months ago

There are two request formats: JSON body and Protobuf body. From a quick glance, it looks like iOS always uses the Protobuf format and Android always uses the JSON format.

But even in the JSON format, the "interesting" data is wrapped in a Protobuf further down.

baltpeter commented 9 months ago

In both cases, it's not too hard to understand a good chunk of the data without more information.

Taking monkey-july-2023,97960 as an example:

As the endpoint URL implies, this is clearly an endpoint for dumping logging data in batches. We only have one root-level property, logRequest, which is an array of multiple log requests:

{
    "logRequest": [
        {
            "requestTimeMs": 1690282473347,
            "requestUptimeMs": 328566,
            "clientInfo": {
                "clientType": "ANDROID_FIREBASE",
                "androidClientInfo": {
                    "sdkVersion": 33,
                    "model": "sdk_gphone_x86_64",
                    "hardware": "ranchu",
                    "device": "emu64xa",
                    "product": "sdk_gphone_x86_64",
                    "osBuild": "TE1A.220922.025",
                    "manufacturer": "Google",
                    "fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
                    "locale": "en",
                    "country": "US",
                    "mccMnc": "310260",
                    "applicationBuild": "124390000"
                }
            },
            "logSourceName": "GDT_CLIENT_METRICS",
            "logEvent": [
                {
                    "eventTimeMs": 1690282473344,
                    "eventUptimeMs": 328564,
                    "sourceExtension": "Cg4Ildq85ZgxEIDvvuWYMRoLCgkIgOAEEICAgAUiEGNvbS53b2x0LmFuZHJvaWQ=",
                    "timezoneOffsetSeconds": 7200,
                    "networkConnectionInfo": { "networkType": "WIFI" }
                }
            ],
            "qosTier": "DEFAULT"
        },
        // […]
    ]
}

logInfo.*.clientInfo has a bunch of metadata with pretty obvious property names. And it's all fairly benign.

In logInfo.*.logEvent, we then find the actual events that are being logged, again as an array:

[
    {
        "eventTimeMs": 1690282438854,
        "eventUptimeMs": 294074,
        "sourceExtension": "CmcKJzE6OTcwMDk4MTU3MDAwOmFuZHJvaWQ6MGQyZDdhY2JiYzNmOTVkORIWZjVWaFFpTFZRRnlLOUExcGNleTJfNRoiChBjb20ud29sdC5hbmRyb2lkEgYyMC4zLjIaBjQuMzkuMCgCGpABCjJodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTYuMC9hcHAvbW9iaWxlX3Nka19naxABIIsTKMgBMh50ZXh0L2phdmFzY3JpcHQ7IGNoYXJzZXQ9VVRGLTg4iJCs4tipgANIjgFQxsMXaiIKIDg1NmE2ZGU0ZGM0NTQ2ZDFhZDU5ZTdjMzQ1ODc3YmM3",
        "timezoneOffsetSeconds": 7200,
        "networkConnectionInfo": { "networkType": "WIFI" }
    },
    {
        "eventTimeMs": 1690282438856,
        "eventUptimeMs": 294076,
        "sourceExtension": "CmcKJzE6OTcwMDk4MTU3MDAwOmFuZHJvaWQ6MGQyZDdhY2JiYzNmOTVkORIWZjVWaFFpTFZRRnlLOUExcGNleTJfNRoiChBjb20ud29sdC5hbmRyb2lkEgYyMC4zLjIaBjQuMzkuMCgCGoEBCiRodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTYuMC9hcHAQASD8BijIATIedGV4dC9qYXZhc2NyaXB0OyBjaGFyc2V0PVVURi04OPCXrOLYqYADSAtQgLsaaiIKIDg1NmE2ZGU0ZGM0NTQ2ZDFhZDU5ZTdjMzQ1ODc3YmM3",
        "timezoneOffsetSeconds": 7200,
        "networkConnectionInfo": { "networkType": "WIFI" }
    },
    // […]
]

Here, *.sourceExtension is a base64-encoded Protobuf. Decoding those two, we get:

{
    "1": {
        "1": "1:970098157000:android:0d2d7acbbc3f95d9",
        "2": "f5VhQiLVQFyK9A1pcey2_5",
        "3": {
            "1": "com.wolt.android",
            "2": "20.3.2",
            "3": "4.39.0"
        },
        "5": 2
    },
    "3": {
        "1": "https://graph.facebook.com/v16.0/app/mobile_sdk_gk",
        "2": 1,
        "4": 2443,
        "5": 200,
        "6": "text/javascript; charset=UTF-8",
        "7": 1690282438101000,
        "9": 142,
        "10": 385478,
        "13": {
            "1": "856a6de4dc4546d1ad59e7c345877bc7"
        }
    }
}
{
    "1": {
        "1": "1:970098157000:android:0d2d7acbbc3f95d9",
        "2": "f5VhQiLVQFyK9A1pcey2_5",
        "3": {
            "1": "com.wolt.android",
            "2": "20.3.2",
            "3": "4.39.0"
        },
        "5": 2
    },
    "3": {
        "1": "https://graph.facebook.com/v16.0/app",
        "2": 1,
        "4": 892,
        "5": 200,
        "6": "text/javascript; charset=UTF-8",
        "7": 1690282438102000,
        "9": 11,
        "10": 433536,
        "13": {
            "1": "856a6de4dc4546d1ad59e7c345877bc7"
        }
    }
}

com.wolt.android is clearly the app ID, 4.39.0 is the app version. The 3 property clearly logs requests made the app with URL, content type, timestamp. Maybe response status code (200)?

There are also other possible log formats:

{
    "1": {
        "1": 1690282437909,
        "2": 1690282473344
    },
    "3": {
        "1": {
            "1": 77824,
            "2": 10485760
        }
    },
    "4": "com.wolt.android"
}

Here, only the app ID is obvious. There are some timestamps, I don't know what they and everything else represent.

{
    "1": {
        "1": "1:970098157000:android:0d2d7acbbc3f95d9",
        "2": "f5VhQiLVQFyK9A1pcey2_5",
        "3": {
            "1": "com.wolt.android",
            "2": "20.3.2",
            "3": "4.39.0"
        },
        "5": 1
    },
    "2": {
        "1": "_st_SignInHubActivity",
        "4": 1690282468516000,
        "5": 278632,
        "6": [
            {
                "1": "_fr_slo",
                "2": 1
            },
            {
                "1": "_fr_tot",
                "2": 1
            }
        ],
        "9": {
            "1": "856a6de4dc4546d1ad59e7c345877bc7"
        }
    }
}

And it seems like 2 is responsible for viewed activities.

In none of the formats do I see an obvious ID (not in the cookies or headers, either). 856a6de4dc4546d1ad59e7c345877bc7 might be one? Might also be something else entirely, though.


Looking at monkey-july-2023,18795 for an iOS example:

Decoding that, we get:

{
    "1": {
        "1": {
            "1": 15,
            "4": {
                "3": "15",
                "4": "15.6.1",
                "5": "2",
                "6": "DE",
                "7": "iPhone10,6",
                "8": {
                    "12": 1111960942
                },
                "11": "com.limebike"
            }
        },
        "2": 462,
        "3": [
            {
                "1": 1690446520548,
                "6": {
                    "1": {
                        "1": "1:299973870560:ios:7bce0198695615e7",
                        "2": "dIo7NP3vB0gwr42_PVqWd_",
                        "4": {
                            "2": "10.5.0",
                            "3": "3.117.0",
                            "5": {
                                "1": 1
                            }
                        },
                        "5": 1
                    },
                    "3": {
                        "1": "https://web-production.lime.bike/api/rider/v2/onboarding/experiments",
                        "2": 1,
                        "3": 0,
                        "4": 1364,
                        "5": 200,
                        "6": "application/json",
                        "7": 1690446519783417,
                        "9": 763035,
                        "10": 763717,
                        "13": {
                            "1": "8be1061ec99f46f9aa8a5ce5019a5178"
                        }
                    }
                },
                "15": 14400,
                "17": 4276913727
            },
            {
                "1": 1690446520071,
                "6": {
                    "1": {
                        "1": "1:299973870560:ios:7bce0198695615e7",
                        "2": "dIo7NP3vB0gwr42_PVqWd_",
                        "4": {
                            "2": "10.5.0",
                            "3": "3.117.0",
                            "5": {
                                "1": 1
                            }
                        },
                        "5": 1
                    },
                    "3": {
                        "1": "https://api.statsig.com/v1/initialize",
                        "2": 3,
                        "3": 411,
                        "4": 78756,
                        "5": 200,
                        "6": "application/json",
                        "7": 1690446519797025,
                        "10": 272482,
                        "13": {
                            "1": "8be1061ec99f46f9aa8a5ce5019a5178"
                        }
                    }
                },
                "15": 14400,
                "17": 4276913250
            },
            // […]
        ],
        "4": 1690446549645,
        "8": 4276942824
    }
}

Clearly very similar. Looks like the events 1.3.*.6 are pretty much the exact same Protobuf format.

baltpeter commented 9 months ago

Looking at the user agents (datatransport/3.1.9 android/, datatransport/3.1.8 android/, datatransport/Unknown fllsupport/UNKNOWN apple/) to discover the responsible SDK package, I stumbled upon https://github.com/xamarin/GooglePlayServicesComponents/ and https://mvnrepository.com/artifact/com.google.android.datatransport/transport-runtime/3.1.9.

The latter lists https://mvnrepository.com/artifact/com.google.firebase/firebase-encoders/17.0.0 and https://mvnrepository.com/artifact/com.google.firebase/firebase-encoders-proto/16.0.0 as dependencies, which sound very interesting.

baltpeter commented 9 months ago

Running those two through jadx, I unfortunately didn't discover anything interesting.

baltpeter commented 9 months ago

Oh look, these packages are open source, even: https://github.com/firebase/firebase-android-sdk/tree/43eec0e4d8660d12cd2649444d3866a13676b853/encoders/firebase-encoders-proto

No schemas there either, though. But since the rest of the Firebase SDK is also open, I'll look at that next.

baltpeter commented 9 months ago

GoogleDataTransport is also open: https://github.com/google/GoogleDataTransport

baltpeter commented 9 months ago

https://github.com/google/GoogleDataTransport/blob/78c44ad53d41c84d7d04ceab9e8773327befbf2c/GoogleDataTransport/ProtoSupport/Protos/cct.proto is the schema for the iOS messages!

The transmitted type is BatchedLogRequest. Our request being parsed using that schema in CyberChef&input=CswhCjgIDyI0GgIxNSIGMTUuNi4xKgEyMgJERToKaVBob25lMTAsNkIFZW4tR0JaDGNvbS5saW1lYmlrZRDOAxqGAgjkwduzmTEy8gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGpcBCkRodHRwczovL3dlYi1wcm9kdWN0aW9uLmxpbWUuYmlrZS9hcGkvcmlkZXIvdjIvb25ib2FyZGluZy9leHBlcmltZW50cxABGAAg1AooyAEyEGFwcGxpY2F0aW9uL2pzb244%2BZ/LgryugANIm8kuUMXOLmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBv4yy9w8a5AEIh77bs5kxMtABClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp2CiVodHRwczovL2FwaS5zdGF0c2lnLmNvbS92MS9pbml0aWFsaXplEAMYmwMgpOcEKMgBMhBhcHBsaWNhdGlvbi9qc29uOKGKzIK8roADUOLQEGoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgB4oiy9w8a6gEI2cnbs5kxMtYBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp8Ci1odHRwczovL2Nkbi5icmFuY2guaW8vc2RrL3VyaXNraXBsaXN0X3YwLmpzb24QARgAIO0BKMgBMhBhcHBsaWNhdGlvbi9qc29uOLDurIO8roADUMTYCmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBtJSy9w8a3wEIn7Pcs5kxMssBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARpxCiVodHRwczovL3JlZ2lvbjEuYXBwLW1lYXN1cmVtZW50LmNvbS9hEAMY4gQgACjMATIJaW1hZ2UvZ2lmOL/85om8roADQIH4BlDZjQlqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAfr9svcPGu0BCMqy3LOZMTLZAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEafwowaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1EAEYACCNASjIATIQYXBwbGljYXRpb24vanNvbjjRnMeJvK6AA1DdhyJqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAaX9svcPGo8CCIW23LOZMTL7AQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEaoAEKUmh0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tL3YxNC4wLzM2NjgxNTI1MDc4ODk1NS9pb3Nfc2thZG5ldHdvcmtfY29udmVyc2lvbl9jb25maWcQARgAIAsoyAEyEGFwcGxpY2F0aW9uL2pzb244r4vqibyugANQx%2BobaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHggLP3Dxr6AQj%2BtdyzmTEy5gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGosBCjxodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMC8zNjY4MTUyNTA3ODg5NTUvbW9kZWxfYXNzZXQQARgAIJkIKMgBMhBhcHBsaWNhdGlvbi9qc29uOND46Ym8roADUKevG2oiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgB2YCz9w8a8wEIscTbs5kxMt8BClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqEAQo3aHR0cHM6Ly9hc3NldHMubGltZS5iaWtlL2ltYWdlX2ZpbGVzL3NpZ25pbnYybm9sb2dvLnBuZxABGAAghXwoyAEyCmltYWdlL2pwZWc45aH/gryugANI%2BpcNUKz%2BDmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBjI%2By9w8ahAIIkLbcs5kxMvABClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqVAQpHaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1L2FlbV9jb252ZXJzaW9uX2NvbmZpZ3MQARgAIAsoyAEyEGFwcGxpY2F0aW9uL2pzb244karqibyugANQ%2B6IcaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHqgLP3DxqTAgi7wtuzmTEy/wEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGqQBClVodHRwczovL2ZpcmViYXNlaW5zdGFsbGF0aW9ucy5nb29nbGVhcGlzLmNvbS92MS9wcm9qZWN0cy9saW1lYmlrZS1wcm9kL2luc3RhbGxhdGlvbnMvEAMYfSDnBCjIATIQYXBwbGljYXRpb24vanNvbji3i86CvK6AA1Cv9CtqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAZaNsvcPGuIBCIK/27OZMTLOAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEadAogaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAQAxjoAiCTFSjIATIQYXBwbGljYXRpb24vanNvbji3g7WCvK6AA0CjviVQw/IuaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHdibL3DxqSAgi2sdyzmTEy/gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGqMBCkpodHRwczovL2FwcC1tZWFzdXJlbWVudC5jb20vY29uZmlnL2FwcC8xOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxABGAAgyQUoyAEyFmFwcGxpY2F0aW9uL3gtcHJvdG9idWY4t/W8ibyugANIsvskUO/7JGoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBkfyy9w8a/QEIjrbcs5kxMukBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqOAQo7aHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1L2FjdGl2aXRpZXMQAxi0AiAQKMgBMhBhcHBsaWNhdGlvbi9qc29uOJGy6om8roADQMSPEVCakRxqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAemAs/cPGuMBCKjI27OZMTLPAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEadQohaHR0cHM6Ly9hcGkyLmJyYW5jaC5pby92MS9pbnN0YWxsEAMYkw4gmwIoyAEyEGFwcGxpY2F0aW9uL2pzb244xLeJg7yugANAzq0HUPHsIWoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBgpOy9w8a6QEI44ncs5kxMtUBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp7CihodHRwczovL3Nkay5pYWQtMDMuYnJhemUuY29tL2FwaS92My9kYXRhEAMY2AIgAijJATIQYXBwbGljYXRpb24vanNvbjjqvpOHvK6AA0DPlxBQ5tcYaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAG%2B1LL3Dxr9AQjwttyzmTEy6QEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGo4BCjtodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMC8zNjY4MTUyNTA3ODg5NTUvYWN0aXZpdGllcxADGMQEIBAoyAEyEGFwcGxpY2F0aW9uL2pzb244ovrqibyugANAyLgRUPHLIWoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBy4Gz9w8a4gEIkL/bs5kxMs4BClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp0CiBodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMBADGJEDIIogKMgBMhBhcHBsaWNhdGlvbi9qc29uOJmItYK8roADQPTuJVDS8S9qIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAeuJsvcPII2l3bOZMUDo77P3Dw) (I had to move BatchedLogRequest to the top for CyberChef to parse the message as that).

We get the same output as the requests on Android!

baltpeter commented 9 months ago

Unfortunately, that doesn't help us for source_extension. That is still a base64-encoded Protobuf that we don't have the schema for.

baltpeter commented 9 months ago

There is a different version of the schema in the Android SDK: https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/transport/transport-backend-cct/src/test/proto/google/cct/google_cct.proto

That one can also [parse our iOS request](https://cyberchef.bn.al/#recipe=Protobuf_Decode('//%20Copyright%202018%20Google%20LLC%5Cn//%5Cn//%20Licensed%20under%20the%20Apache%20License,%20Version%202.0%20(the%20%22License%22);%5Cn//%20you%20may%20not%20use%20this%20file%20except%20in%20compliance%20with%20the%20License.%5Cn//%20You%20may%20obtain%20a%20copy%20of%20the%20License%20at%5Cn//%5Cn//%20%20%20%20%20%20http://www.apache.org/licenses/LICENSE-2.0%5Cn//%5Cn//%20Unless%20required%20by%20applicable%20law%20or%20agreed%20to%20in%20writing,%20software%5Cn//%20distributed%20under%20the%20License%20is%20distributed%20on%20an%20%22AS%20IS%22%20BASIS,%5Cn//%20WITHOUT%20WARRANTIES%20OR%20CONDITIONS%20OF%20ANY%20KIND,%20either%20express%20or%20implied.%5Cn//%20See%20the%20License%20for%20the%20specific%20language%20governing%20permissions%20and%5Cn//%20limitations%20under%20the%20License.%5Cn%5Cnsyntax%20%3D%20%22proto3%22;%5Cn%5Cnpackage%20google_cct;%5Cn%5Cnoption%20java_package%20%3D%20%22com.google.android.datatransport.cct.proto%22;%5Cnoption%20java_multiple_files%20%3D%20true;%5Cn%5Cnmessage%20BatchedLogRequest%20%7B%5Cn%20%20%20%20repeated%20LogRequest%20log_request%20%3D%201;%5Cn%7D%5Cn%5Cn%5Cnmessage%20LogEvent%20%7B%5Cn%20%20%20%20int64%20event_time_ms%20%3D%201;%5Cn%5Cn%20%20%20%20int32%20event_code%20%3D%2011;%5Cn%5Cn%20%20%20%20int64%20event_uptime_ms%20%3D%2017;%5Cn%5Cn%20%20%20%20oneof%20ext%20%7B%5Cn%20%20%20%20%20%20%20%20bytes%20source_extension%20%3D%206;%5Cn%5Cn%20%20%20%20%20%20%20%20string%20source_extension_json_proto3%20%3D%2029;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20sint64%20timezone_offset_seconds%20%3D%2015;%5Cn%5Cn%20%20%20%20NetworkConnectionInfo%20network_connection_info%20%3D%2023;%5Cn%7D%5Cn%5Cnmessage%20NetworkConnectionInfo%20%7B%5Cn%20%20%20%20enum%20NetworkType%20%7B%5Cn%20%20%20%20%20%20%20%20MOBILE%20%3D%200;%5Cn%20%20%20%20%20%20%20%20WIFI%20%3D%201;%5Cn%20%20%20%20%20%20%20%20MOBILE_MMS%20%3D%202;%5Cn%20%20%20%20%20%20%20%20MOBILE_SUPL%20%3D%203;%5Cn%20%20%20%20%20%20%20%20MOBILE_DUN%20%3D%204;%5Cn%20%20%20%20%20%20%20%20MOBILE_HIPRI%20%3D%205;%5Cn%20%20%20%20%20%20%20%20WIMAX%20%3D%206;%5Cn%20%20%20%20%20%20%20%20BLUETOOTH%20%3D%207;%5Cn%20%20%20%20%20%20%20%20DUMMY%20%3D%208;%5Cn%20%20%20%20%20%20%20%20ETHERNET%20%3D%209;%5Cn%20%20%20%20%20%20%20%20MOBILE_FOTA%20%3D%2010;%5Cn%20%20%20%20%20%20%20%20MOBILE_IMS%20%3D%2011;%5Cn%20%20%20%20%20%20%20%20MOBILE_CBS%20%3D%2012;%5Cn%20%20%20%20%20%20%20%20WIFI_P2P%20%3D%2013;%5Cn%20%20%20%20%20%20%20%20MOBILE_IA%20%3D%2014;%5Cn%20%20%20%20%20%20%20%20MOBILE_EMERGENCY%20%3D%2015;%5Cn%20%20%20%20%20%20%20%20PROXY%20%3D%2016;%5Cn%20%20%20%20%20%20%20%20VPN%20%3D%2017;%5Cn%5Cn%20%20%20%20%20%20%20%20NONE%20%3D%20-1;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20enum%20MobileSubtype%20%7B%5Cn%20%20%20%20%20%20%20%20UNKNOWN_MOBILE_SUBTYPE%20%3D%200;%5Cn%20%20%20%20%20%20%20%20GPRS%20%3D%201;%5Cn%20%20%20%20%20%20%20%20EDGE%20%3D%202;%5Cn%20%20%20%20%20%20%20%20UMTS%20%3D%203;%5Cn%20%20%20%20%20%20%20%20CDMA%20%3D%204;%5Cn%20%20%20%20%20%20%20%20EVDO_0%20%3D%205;%5Cn%20%20%20%20%20%20%20%20EVDO_A%20%3D%206;%5Cn%20%20%20%20%20%20%20%20RTT%20%3D%207;%5Cn%20%20%20%20%20%20%20%20HSDPA%20%3D%208;%5Cn%20%20%20%20%20%20%20%20HSUPA%20%3D%209;%5Cn%20%20%20%20%20%20%20%20HSPA%20%3D%2010;%5Cn%20%20%20%20%20%20%20%20IDEN%20%3D%2011;%5Cn%20%20%20%20%20%20%20%20EVDO_B%20%3D%2012;%5Cn%20%20%20%20%20%20%20%20LTE%20%3D%2013;%5Cn%20%20%20%20%20%20%20%20EHRPD%20%3D%2014;%5Cn%20%20%20%20%20%20%20%20HSPAP%20%3D%2015;%5Cn%20%20%20%20%20%20%20%20GSM%20%3D%2016;%5Cn%20%20%20%20%20%20%20%20TD_SCDMA%20%3D%2017;%5Cn%20%20%20%20%20%20%20%20IWLAN%20%3D%2018;%5Cn%20%20%20%20%20%20%20%20LTE_CA%20%3D%2019;%5Cn%5Cn%20%20%20%20%20%20%20%20//%20COMBINED%20has%20value%20-1%20in%20NetworkIdentity.java,%20but%20is%20given%20the%20value%5Cn%20%20%20%20%20%20%20%20//%20100%20here%20to%20save%20(disk)%20space.%20The%20value%20-1%20takes%20up%20the%20full%2010%20bytes%20in%5Cn%20%20%20%20%20%20%20%20//%20a%20varint%20for%20enums,%20but%20the%20value%20100%20only%20takes%20up%201%20byte.%5Cn%20%20%20%20%20%20%20%20COMBINED%20%3D%20100;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20NetworkType%20network_type%20%3D%201;%5Cn%5Cn%20%20%20%20MobileSubtype%20mobile_subtype%20%3D%202;%5Cn%7D%5Cn%5Cnmessage%20AndroidClientInfo%20%7B%5Cn%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.VERSION.SDK_INT.%5Cn%20%20%20%20int32%20sdk_version%20%3D%203;%5Cn%5Cn%20%20%20%20//%20Textual%20description%20of%20the%20client%20platform.%20%20e.g.,%20%22Nexus%204%22.%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.MODEL.%5Cn%20%20%20%20string%20model%20%3D%204;%5Cn%5Cn%20%20%20%20//%20The%20name%20of%20the%20overall%20product.%20e.g.,%20%22occam%22.%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.Product.%5Cn%20%20%20%20string%20product%20%3D%205;%5Cn%5Cn%20%20%20%20//%20The%20name%20of%20the%20hardware%20(from%20the%20kernel%20command%20line%20or%20/proc).%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.Hardware.%20%20e.g.,%20%22mako%22.%5Cn%20%20%20%20string%20hardware%20%3D%208;%5Cn%5Cn%20%20%20%20//%20The%20name%20of%20the%20industrial%20design.%20%20e.g.,%20%22mako%22.%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.Device.%5Cn%20%20%20%20string%20device%20%3D%209;%5Cn%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.ID.%20%20e.g.,%20something%20like%20%22JRN54F%22.%5Cn%20%20%20%20string%20os_build%20%3D%206;%5Cn%5Cn%20%20%20%20//%20The%20client%20application%20version.%20The%20java%20int%20version%20in%20the%20android%20package%5Cn%20%20%20%20//%20converted%20to%20string.%5Cn%20%20%20%20string%20application_build%20%3D%207;%5Cn%5Cn%20%20%20%20//%20The%20mobile%20country%20code%20/%20mobile%20network%20code%20(MCC/MNC).%5Cn%20%20%20%20//%20e.g.,%20310004%20for%20Verizon%20USA.%5Cn%20%20%20%20string%20mcc_mnc%20%3D%2010;%5Cn%5Cn%20%20%20%20//%20The%20chosen%20locale%20from%20the%20client.%20e.g.,%20%22en_US%22,%20%22ko_KR%22,%20%22en_GB%22.%5Cn%20%20%20%20//%20NB:%20Often%20set%20as%20just%20locale-derived%20language;%20e.g.,%20%22en%22,%20%22ko%22.%5Cn%20%20%20%20string%20locale%20%3D%2011;%5Cn%5Cn%20%20%20%20//%20Locale-derived%20country,%20chosen%20by%20the%20user;%20e.g.,%20%22US%22,%20%22KR%22,%20%22JP%22.%5Cn%20%20%20%20string%20country%20%3D%2012;%5Cn%5Cn%20%20%20%20//%20The%20manufacturer%20of%20the%20hardware.%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.MANUFACTURER%5Cn%20%20%20%20string%20manufacturer%20%3D%2013;%5Cn%5Cn%20%20%20%20//%20The%20brand%20the%20software%20is%20customized%20for,%20if%20any.%20%20Often%20a%20carrier%20name.%5Cn%20%20%20%20//%20e.g.%20%22google%22%5Cn%20%20%20%20//%20from%20http://developer.android.com/reference/android/os/Build.html%23BRAND%5Cn%20%20%20%20string%20brand%20%3D%2014;%5Cn%5Cn%20%20%20%20//%20The%20name%20of%20the%20underlying%20board%5Cn%20%20%20%20//%20e.g.%20%22tuna%22%5Cn%20%20%20%20//%20from%20http://developer.android.com/reference/android/os/Build.html%23BOARD%5Cn%20%20%20%20string%20board%20%3D%2015;%5Cn%5Cn%20%20%20%20//%20Radio%20version%20as%20reported%20by%20device,%20if%20available%20at%20reporting%20time%5Cn%20%20%20%20//%20e.g.%20%22I9250XXLJ1%22%5Cn%20%20%20%20//%20from%5Cn%20%20%20%20//%20http://developer.android.com/reference/android/os/Build.html%23getRadioVersion()%5Cn%20%20%20%20string%20radio_version%20%3D%2016;%5Cn%5Cn%20%20%20%20//%20Device%20model/build%20fingerprint.%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.FINGERPRINT.%5Cn%20%20%20%20string%20fingerprint%20%3D%2017;%5Cn%5Cn%20%20%20%20//%20The%20type%20of%20build,%20like%20%22user%22%20or%20%22eng%22.%5Cn%20%20%20%20//%20This%20comes%20from%20android.os.Build.TYPE%5Cn%20%20%20%20string%20type%20%3D%2026;%5Cn%5Cn%20%20%20%20//%20The%20%22ro.oem.key1%22%20system%20property.%5Cn%20%20%20%20string%20ro_oem_key1%20%3D%2027;%5Cn%5Cn%20%20%20%20//%20List%20of%20native%20platforms%20(CPU%20types)%20supported%20by%20the%20device,%20e.g.%5Cn%20%20%20%20//%20%22armeabi%22.%5Cn%20%20%20%20//%5Cn%20%20%20%20//%20On%20L%2B%20devices,%20this%20is%20Build.SUPPORTED_ABIS.%20On%20older%20devices,%20it%20is%5Cn%20%20%20%20//%20%5BBuild.CPU_ABI%5D%20or,%20if%20Build.CPU_ABI2%20is%20present,%20%5BBuild.CPU_ABI,%5Cn%20%20%20%20//%20Build.CPU_ABI2%5D.%20In%20any%20case,%20the%20device%5C's%20preference%20order%20is%20maintained.%5Cn%20%20%20%20repeated%20string%20native_platform%20%3D%2031;%5Cn%7D%5Cn%5Cnmessage%20ClientInfo%20%7B%5Cn%5Cn%20%20%20%20enum%20ClientType%20%7B%5Cn%20%20%20%20%20%20%20%20UNKNOWN%20%3D%200;%5Cn%20%20%20%20%20%20%20%20ANDROID_FIREBASE%20%3D%2023;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20The%20client%20type%20for%20this%20client.%20One%20of%20the%20enum%20values%20defined%20above.%5Cn%20%20%20%20ClientType%20client_type%20%3D%201;%5Cn%5Cn%20%20%20%20AndroidClientInfo%20android_client_info%20%3D%202;%5Cn%7D%5Cn%5Cn%5Cnmessage%20LogRequest%20%7B%5Cn%5Cn%20%20%20%20int64%20request_time_ms%20%3D%204;%5Cn%5Cn%20%20%20%20//%20Current%20time%20since%20boot%20in%20milliseconds,%20including%20time%20spent%20in%20sleep,%5Cn%20%20%20%20//%20according%20to%20the%20same%20clock%20as%20the%20one%20used%20to%20set%5Cn%20%20%20%20//%20the%20%5C'event_uptime_ms%5C'%20values%20in%20the%20LogEvent%20protos%20above.%5Cn%20%20%20%20int64%20request_uptime_ms%20%3D%208;%5Cn%5Cn%20%20%20%20//%20The%20ClientInfo%20at%20log%20time.%5Cn%20%20%20%20ClientInfo%20client_info%20%3D%201;%5Cn%5Cn%20%20%20%20oneof%20source%20%7B%5Cn%20%20%20%20%20%20%20%20int32%20log_source%20%3D%202;%5Cn%20%20%20%20%20%20%20%20string%20log_source_name%20%3D%206;%5Cn%20%20%20%20%7D%5Cn%5Cn%5Cn%20%20%20%20repeated%20LogEvent%20log_event%20%3D%203;%5Cn%5Cn%20%20%20%20repeated%20bytes%20serialized_log_events%20%3D%205;%5Cn%5Cn%20%20%20%20QosTierConfiguration.QosTier%20qos_tier%20%3D%209;%5Cn%5Cn%20%20%20%20//%20Different%20types%20schedulers%20for%20log%20upload.%5Cn%20%20%20%20enum%20SchedulerType%20%7B%5Cn%20%20%20%20%20%20%20%20UNKNOWN_SCHEDULER%20%3D%200;%5Cn%20%20%20%20%20%20%20%20ASAP%20%3D%201;%20%20//%20As%20soon%20as%20possible%20used%20when%20log%20store%20is%20full.%5Cn%20%20%20%20%20%20%20%20DEFAULT_PERIODIC%20%3D%202;%5Cn%20%20%20%20%20%20%20%20QOS_FAST_ONEOFF%20%3D%203;%5Cn%20%20%20%20%20%20%20%20QOS_DEFAULT_PERIODIC%20%3D%204;%5Cn%20%20%20%20%20%20%20%20QOS_UNMETERED_PERIODIC%20%3D%205;%5Cn%20%20%20%20%7D%5Cn%7D%5Cn%5Cnmessage%20QosTierConfiguration%20%7B%5Cn%5Cn%20%20%20%20enum%20QosTier%20%7B%5Cn%20%20%20%20%20%20%20%20DEFAULT%20%3D%200;%5Cn%5Cn%20%20%20%20%20%20%20%20UNMETERED_ONLY%20%3D%201;%5Cn%5Cn%20%20%20%20%20%20%20%20UNMETERED_OR_DAILY%20%3D%202;%5Cn%5Cn%20%20%20%20%20%20%20%20FAST_IF_RADIO_AWAKE%20%3D%203;%5Cn%5Cn%20%20%20%20%20%20%20%20NEVER%20%3D%204;%5Cn%20%20%20%20%7D%5Cn%5Cn%20%20%20%20//%20For%20Android,%20please%20use%20log_source_name.%5Cn%20%20%20%20string%20log_source_name%20%3D%201;%5Cn%20%20%20%20QosTier%20qos_tier%20%3D%202;%5Cn%20%20%20%20int32%20log_source%20%3D%203;%5Cn%7D%5Cn%5Cnmessage%20QosTiersOverride%20%7B%5Cn%20%20%20%20//%20Quality%20of%20Service%20tiers%20enforced%20by%20server%20for%20overriding%20client%5Cn%20%20%20%20//%20qos_tier%20setting%20in%20event%20logging.%5Cn%20%20%20%20//%20This%20usually%20happens%20when%20server%20is%20burdened%20with%20fast%20qos%20tiers.%5Cn%20%20%20%20repeated%20QosTierConfiguration%20qos_tier_configuration%20%3D%201;%5Cn%5Cn%20%20%20%20//%20The%20fingerprint%20of%20the%20qos_tier_configuration%20field.%5Cn%20%20%20%20int64%20qos_tier_fingerprint%20%3D%202;%5Cn%7D%5Cn%5Cnmessage%20LogResponse%20%7B%5Cn%20%20%20%20//%20Client%20should%20wait%20for%20next_request_wait_millis%20before%20sending%20the%20next%5Cn%20%20%20%20//%20log%20request.%5Cn%20%20%20%20int64%20next_request_wait_millis%20%3D%201;%5Cn%5Cn%20%20%20%20//%20Quality%20of%20Service%20tiers%20enforced%20by%20server%20for%20overriding%20client%5Cn%20%20%20%20//%20qos_tier%20setting%20in%20event%20logging.%5Cn%20%20%20%20QosTiersOverride%20qos_tier%20%3D%203;%5Cn%7D',false,false)&input=CswhCjgIDyI0GgIxNSIGMTUuNi4xKgEyMgJERToKaVBob25lMTAsNkIFZW4tR0JaDGNvbS5saW1lYmlrZRDOAxqGAgjkwduzmTEy8gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGpcBCkRodHRwczovL3dlYi1wcm9kdWN0aW9uLmxpbWUuYmlrZS9hcGkvcmlkZXIvdjIvb25ib2FyZGluZy9leHBlcmltZW50cxABGAAg1AooyAEyEGFwcGxpY2F0aW9uL2pzb244%2BZ/LgryugANIm8kuUMXOLmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBv4yy9w8a5AEIh77bs5kxMtABClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp2CiVodHRwczovL2FwaS5zdGF0c2lnLmNvbS92MS9pbml0aWFsaXplEAMYmwMgpOcEKMgBMhBhcHBsaWNhdGlvbi9qc29uOKGKzIK8roADUOLQEGoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgB4oiy9w8a6gEI2cnbs5kxMtYBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp8Ci1odHRwczovL2Nkbi5icmFuY2guaW8vc2RrL3VyaXNraXBsaXN0X3YwLmpzb24QARgAIO0BKMgBMhBhcHBsaWNhdGlvbi9qc29uOLDurIO8roADUMTYCmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBtJSy9w8a3wEIn7Pcs5kxMssBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARpxCiVodHRwczovL3JlZ2lvbjEuYXBwLW1lYXN1cmVtZW50LmNvbS9hEAMY4gQgACjMATIJaW1hZ2UvZ2lmOL/85om8roADQIH4BlDZjQlqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAfr9svcPGu0BCMqy3LOZMTLZAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEafwowaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1EAEYACCNASjIATIQYXBwbGljYXRpb24vanNvbjjRnMeJvK6AA1DdhyJqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAaX9svcPGo8CCIW23LOZMTL7AQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEaoAEKUmh0dHBzOi8vZ3JhcGguZmFjZWJvb2suY29tL3YxNC4wLzM2NjgxNTI1MDc4ODk1NS9pb3Nfc2thZG5ldHdvcmtfY29udmVyc2lvbl9jb25maWcQARgAIAsoyAEyEGFwcGxpY2F0aW9uL2pzb244r4vqibyugANQx%2BobaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHggLP3Dxr6AQj%2BtdyzmTEy5gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGosBCjxodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMC8zNjY4MTUyNTA3ODg5NTUvbW9kZWxfYXNzZXQQARgAIJkIKMgBMhBhcHBsaWNhdGlvbi9qc29uOND46Ym8roADUKevG2oiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgB2YCz9w8a8wEIscTbs5kxMt8BClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqEAQo3aHR0cHM6Ly9hc3NldHMubGltZS5iaWtlL2ltYWdlX2ZpbGVzL3NpZ25pbnYybm9sb2dvLnBuZxABGAAghXwoyAEyCmltYWdlL2pwZWc45aH/gryugANI%2BpcNUKz%2BDmoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBjI%2By9w8ahAIIkLbcs5kxMvABClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqVAQpHaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1L2FlbV9jb252ZXJzaW9uX2NvbmZpZ3MQARgAIAsoyAEyEGFwcGxpY2F0aW9uL2pzb244karqibyugANQ%2B6IcaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHqgLP3DxqTAgi7wtuzmTEy/wEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGqQBClVodHRwczovL2ZpcmViYXNlaW5zdGFsbGF0aW9ucy5nb29nbGVhcGlzLmNvbS92MS9wcm9qZWN0cy9saW1lYmlrZS1wcm9kL2luc3RhbGxhdGlvbnMvEAMYfSDnBCjIATIQYXBwbGljYXRpb24vanNvbji3i86CvK6AA1Cv9CtqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAZaNsvcPGuIBCIK/27OZMTLOAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEadAogaHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAQAxjoAiCTFSjIATIQYXBwbGljYXRpb24vanNvbji3g7WCvK6AA0CjviVQw/IuaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAHdibL3DxqSAgi2sdyzmTEy/gEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGqMBCkpodHRwczovL2FwcC1tZWFzdXJlbWVudC5jb20vY29uZmlnL2FwcC8xOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxABGAAgyQUoyAEyFmFwcGxpY2F0aW9uL3gtcHJvdG9idWY4t/W8ibyugANIsvskUO/7JGoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBkfyy9w8a/QEIjrbcs5kxMukBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARqOAQo7aHR0cHM6Ly9ncmFwaC5mYWNlYm9vay5jb20vdjE0LjAvMzY2ODE1MjUwNzg4OTU1L2FjdGl2aXRpZXMQAxi0AiAQKMgBMhBhcHBsaWNhdGlvbi9qc29uOJGy6om8roADQMSPEVCakRxqIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAemAs/cPGuMBCKjI27OZMTLPAQpWCiMxOjI5OTk3Mzg3MDU2MDppb3M6N2JjZTAxOTg2OTU2MTVlNxIWZElvN05QM3ZCMGd3cjQyX1BWcVdkXyIVEgYxMC41LjAaBzMuMTE3LjAqAggBKAEadQohaHR0cHM6Ly9hcGkyLmJyYW5jaC5pby92MS9pbnN0YWxsEAMYkw4gmwIoyAEyEGFwcGxpY2F0aW9uL2pzb244xLeJg7yugANAzq0HUPHsIWoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBgpOy9w8a6QEI44ncs5kxMtUBClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp7CihodHRwczovL3Nkay5pYWQtMDMuYnJhemUuY29tL2FwaS92My9kYXRhEAMY2AIgAijJATIQYXBwbGljYXRpb24vanNvbjjqvpOHvK6AA0DPlxBQ5tcYaiIKIDhiZTEwNjFlYzk5ZjQ2ZjlhYThhNWNlNTAxOWE1MTc4eMBwiAG%2B1LL3Dxr9AQjwttyzmTEy6QEKVgojMToyOTk5NzM4NzA1NjA6aW9zOjdiY2UwMTk4Njk1NjE1ZTcSFmRJbzdOUDN2QjBnd3I0Ml9QVnFXZF8iFRIGMTAuNS4wGgczLjExNy4wKgIIASgBGo4BCjtodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMC8zNjY4MTUyNTA3ODg5NTUvYWN0aXZpdGllcxADGMQEIBAoyAEyEGFwcGxpY2F0aW9uL2pzb244ovrqibyugANAyLgRUPHLIWoiCiA4YmUxMDYxZWM5OWY0NmY5YWE4YTVjZTUwMTlhNTE3OHjAcIgBy4Gz9w8a4gEIkL/bs5kxMs4BClYKIzE6Mjk5OTczODcwNTYwOmlvczo3YmNlMDE5ODY5NTYxNWU3EhZkSW83TlAzdkIwZ3dyNDJfUFZxV2RfIhUSBjEwLjUuMBoHMy4xMTcuMCoCCAEoARp0CiBodHRwczovL2dyYXBoLmZhY2Vib29rLmNvbS92MTQuMBADGJEDIIogKMgBMhBhcHBsaWNhdGlvbi9qc29uOJmItYK8roADQPTuJVDS8S9qIgogOGJlMTA2MWVjOTlmNDZmOWFhOGE1Y2U1MDE5YTUxNzh4wHCIAeuJsvcPII2l3bOZMUDo77P3Dw).

baltpeter commented 9 months ago

https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto#L50 is the schema for sourceExtension/source_extension (PerfMetric)!

It fails in CyberChef for some reason but does work in https://www.protobufpal.com/ Here's what a message decodes as:

{
  "application_info": {
    "custom_attributes": {},
    "google_app_id": "1:299973870560:ios:7bce0198695615e7",
    "app_instance_id": "dIo7NP3vB0gwr42_PVqWd_",
    "android_app_info": null,
    "application_process_state": "FOREGROUND"
  },
  "trace_metric": null,
  "network_request_metric": {
    "perf_sessions": [
      {
        "session_verbosity": [],
        "session_id": "8be1061ec99f46f9aa8a5ce5019a5178"
      }
    ],
    "custom_attributes": {},
    "url": "https://graph.facebook.com/v14.0/366815250788955/activities",
    "http_method": "POST",
    "request_payload_bytes": 580,
    "response_payload_bytes": 16,
    "http_response_code": 200,
    "response_content_type": "application/json",
    "client_start_time_us": 1690446534982946,
    "time_to_request_completed_us": 285768,
    "time_to_response_initiated_us": 0,
    "time_to_response_completed_us": 550385,
    "network_client_error_reason": "NETWORK_CLIENT_ERROR_REASON_UNKNOWN"
  },
  "gauge_metric": null,
  "transport_info": null
}
baltpeter commented 9 months ago

Also works for Android:

{
  "application_info": {
    "custom_attributes": {},
    "google_app_id": "1:970098157000:android:0d2d7acbbc3f95d9",
    "app_instance_id": "f5VhQiLVQFyK9A1pcey2_5",
    "android_app_info": {
      "package_name": "com.wolt.android",
      "sdk_version": "20.3.2",
      "version_name": "4.39.0"
    },
    "application_process_state": "BACKGROUND"
  },
  "trace_metric": null,
  "network_request_metric": {
    "perf_sessions": [
      {
        "session_verbosity": [],
        "session_id": "856a6de4dc4546d1ad59e7c345877bc7"
      }
    ],
    "custom_attributes": {},
    "url": "https://graph.facebook.com/v16.0/app/mobile_sdk_gk",
    "http_method": "GET",
    "request_payload_bytes": 0,
    "response_payload_bytes": 2443,
    "http_response_code": 200,
    "response_content_type": "text/javascript; charset=UTF-8",
    "client_start_time_us": 1690282438101000,
    "time_to_request_completed_us": 0,
    "time_to_response_initiated_us": 142,
    "time_to_response_completed_us": 385478,
    "network_client_error_reason": "NETWORK_CLIENT_ERROR_REASON_UNKNOWN"
  },
  "gauge_metric": null,
  "transport_info": null
}
{
  "application_info": {
    "custom_attributes": {},
    "google_app_id": "1:970098157000:android:0d2d7acbbc3f95d9",
    "app_instance_id": "f5VhQiLVQFyK9A1pcey2_5",
    "android_app_info": {
      "package_name": "com.wolt.android",
      "sdk_version": "20.3.2",
      "version_name": "4.39.0"
    },
    "application_process_state": "FOREGROUND"
  },
  "trace_metric": {
    "subtraces": [],
    "perf_sessions": [
      {
        "session_verbosity": [],
        "session_id": "856a6de4dc4546d1ad59e7c345877bc7"
      }
    ],
    "counters": {
      "_fr_slo": 1,
      "_fr_tot": 1
    },
    "custom_attributes": {},
    "name": "_st_SignInHubActivity",
    "is_auto": false,
    "client_start_time_us": 1690282468516000,
    "duration_us": 278632
  },
  "network_request_metric": null,
  "gauge_metric": null,
  "transport_info": null
}
baltpeter commented 9 months ago

It does however not work for the shorter message we saw (Cg4Ildq85ZgxEIDvvuWYMRoLCgkIgOAEEICAgAUiEGNvbS53b2x0LmFuZHJvaWQ=). But that makes sense. That message has "logSourceName": "GDT_CLIENT_METRICS", the other ones have "logSourceName": "FIREPERF", and our schema is in the firebase-perf folder, after all.

baltpeter commented 9 months ago

Ask and you shall find. :D Searching for gdt in the repo led me to the schema: https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/transport/transport-runtime/src/main/proto/client_analytics.proto

The comment makes it pretty obvious that this is the correct schema and it does work:

// These metrics should be sent as a part of every request that is uploaded to
// FireLog server. In more detail, an additional LogRequest should be added to
// the BatchedLogRequest, where the LogSource of the LogRequest should be
// GDT_CLIENT_METRICS and the LogRequest should have a single LogEvent whose
// payload is a ClientMetrics message.
{
  "log_source_metrics": [],
  "window": {
    "start_ms": 1690282437909,
    "end_ms": 1690282473344
  },
  "global_metrics": {
    "storage_metrics": {
      "current_cache_size_bytes": 77824,
      "max_cache_size_bytes": 10485760
    }
  },
  "app_namespace": "com.wolt.android"
}
baltpeter commented 9 months ago

This looks like the class that produces the Protobufs: https://github.com/firebase/firebase-android-sdk/blob/43eec0e4d8660d12cd2649444d3866a13676b853/transport/transport-backend-cct/src/main/java/com/google/android/datatransport/cct/CctTransportBackend.java

baltpeter commented 2 months ago

Looks like https://crashlyticsreports-pa.googleapis.com/v1/firelog/legacy/batchlog is another endpoint for the same tracker.

be.stib.mivb.mobile.har

baltpeter commented 1 month ago

The question is now what the best way forward here is. This is the first case where we have a Protobuf schema.

My obvious initial thought was to use the discovered schema files for the parsing such that we could work with "nice" property names. However, that has a number of problems:

Given all that, maybe it's better to not use the schema for parsing and only link to the corresponding lines under reasoning for each property?

baltpeter commented 1 month ago

There is some public information on the firebaselogging-pa.googleapis.com endpoint: https://stackoverflow.com/a/76334853, https://github.com/firebase/firebase-ios-sdk/issues/8220

Based on the above, it doesn't look Firebase SDK is actual a source of the issue by itself. The requests to firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog in a native iOS project should be sent by GoogleDataTransport SDK. The GoogleDataTransport SDK is used as a transport layer by Firebase SDKs like Crashlytics, Performance, Core, etc. but also by some other Google SDKs, like ML Kit. Also the request may potentially be send from a JavaScript part of ReactNative.

tl;dr: many non-Firebase Google use the https://firebaselogging.googleapis.com/ endpoint to log data to Google's servers, so calls to that endpoint do not have to originate from Firebase SDKs.

Most Google developer products that come with an SDK use a common infrastructure for logging application specific data from within the app back to Google. They use common endpoints for sending this logging, so that they can combine API calls from multiple SDKs into a single call to the logging backend - reducing/amortize the overhead of the logging.

At some point many of the SDKs for Google developer products switched over from a Google-branded endpoint to using a Firebase-branded endpoint. But the data flows is the same either way, and calls to the https://firebaselogging.googleapis.com/ does not necessarily mean that the product uses a Firebase SDK.

baltpeter commented 1 month ago

Update: Look at the table in https://github.com/tweaselORG/TrackHAR/issues/52#issuecomment-2092708683 instead.

To summarize, these are the types of logEvents/sourceExtensions we have seen and their respective Protobuf schemas on firebaselogging-pa.googleapis.com:

logSourceName (Android) logSource (iOS) Protobuf schema (Android) Protobuf schema (iOS)
FIREPERF 462 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebasePerformance/ProtoSupport/Protos/perf_metric.proto
FIREBASE_INAPPMESSAGING ? https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-inappmessaging/src/proto/logs/proto/firebase/inappmessaging/campaign_analytics.proto
GDT_CLIENT_METRICS 1710 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/transport/transport-runtime/src/main/proto/client_analytics.proto https://github.com/google/GoogleDataTransport/blob/6e27aa51abc4847ba748f3ea11bb0a1f3d09f5d3/GoogleDataTransport/ProtoSupport/Protos/client_metrics.proto
FIREBASE_CRASHLYTICS_REPORT ? https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/Crashlytics/ProtoSupport/Protos/crashlytics.proto
FIREBASE_APPQUALITY_SESSION 1974 https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebaseSessions/ProtoSupport/Protos/sessions.proto
? 137 https://github.com/firebase/firebase-ios-sdk/blob/af1201c8a3e64d7c1893cebbec6877cd8c39abf7/Firebase/CoreDiagnostics/ProtoSupport/Protos/firebasecore.proto
? 1326 https://github.com/firebase/firebase-ios-sdk/blob/477bb2a6961b18dc6210a0dafc90a975e6a448c6/FirebaseMLModelDownloader/Sources/proto/firebase_ml_log_sdk.proto

On Android, FIREBASE_CRASHLYTICS_REPORT events have a JSON string in sourceExtensionJsonProto3 instead of a Protobuf in sourceExtension (e.g. https://data.tweasel.org/data/requests/monkey-july-2023,91524):

{
    "requestTimeMs": 1690282466588,
    "requestUptimeMs": 321808,
    "clientInfo": {
        "clientType": "ANDROID_FIREBASE",
        "androidClientInfo": {
            "sdkVersion": 33,
            "model": "sdk_gphone_x86_64",
            "hardware": "ranchu",
            "device": "emu64xa",
            "product": "sdk_gphone_x86_64",
            "osBuild": "TE1A.220922.025",
            "manufacturer": "Google",
            "fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
            "locale": "en",
            "country": "US",
            "mccMnc": "310260",
            "applicationBuild": "61"
        }
    },
    "logSourceName": "FIREBASE_CRASHLYTICS_REPORT",
    "logEvent": [
        {
            "eventTimeMs": 1690282460991,
            "eventUptimeMs": 316211,
            "sourceExtensionJsonProto3": "{\"sdkVersion\":\"18.2.13\",\"gmpAppId\":\"1:107894635142:android:330dfc4a3fd7d6294caf07\",\"platform\":4,\"installationUuid\":\"d86951fe414142dfa1bc015c38b7b820\",\"buildVersion\":\"61\",\"displayVersion\":\"1.3.12\",\"session\":{\"generator\":\"Crashlytics Android SDK/18.2.13\",\"identifier\":\"NjRCRkE5QzQwMDNEMDAwMTE5MkMyQkNBQUI2NkMzRTc=\",\"startedAt\":1690282436,\"endedAt\":1690282460,\"crashed\":true,\"app\":{\"identifier\":\"app.visory.security_camera\",\"version\":\"61\",\"displayVersion\":\"1.3.12\",\"installationUuid\":\"d86951fe414142dfa1bc015c38b7b820\",\"developmentPlatform\":\"Flutter\"},\"os\":{\"platform\":3,\"version\":\"13\",\"buildVersion\":\"REL\",\"jailbroken\":false},\"device\":{\"arch\":1,\"model\":\"sdk_gphone_x86_64\",\"cores\":4,\"ram\":2061852672,\"diskSpace\":6228115456,\"simulator\":true,\"state\":1,\"manufacturer\":\"Google\",\"modelClass\":\"sdk_gphone_x86_64\"},\"events\":[{\"timestamp\":1690282447,\"type\":\"error\",\"app\":{\"execution\":{\"threads\":[{\"name\":\"pool-32-thread-3\",\"importance\":4,\"frames\":[{\"pc\":0,\"symbol\":\"FirebaseCrashlytics.recordError\",\"file\":\"package:firebase_crashlytics/src/firebase_crashlytics.dart\",\"offset\":120,\"importance\":4},{\"pc\":0,\"symbol\":\"Crash.record\",\"file\":\"package:visory_flutter/core/crash.dart\",\"offset\":17,\"importance\":4},{\"pc\":0,\"symbol\":\"SubscriptionInteractor._init\",\"file\":\"package:visory_flutter/subscription/domain/subscription_interactor.dart\",\"offset\":62,\"importance\":4}]}],\"exception\":{\"type\":\"io.flutter.plugins.firebase.crashlytics.FlutterError\",\"reason\":\"Exception: Subscription not available. Error thrown null.\",\"frames\":[{\"pc\":0,\"symbol\":\"FirebaseCrashlytics.recordError\",\"file\":\"package:firebase_crashlytics/src/firebase_crashlytics.dart\",\"offset\":120,\"importance\":4},{\"pc\":0,\"symbol\":\"Crash.record\",\"file\":\"package:visory_flutter/core/crash.dart\",\"offset\":17,\"importance\":4},{\"pc\":0,\"symbol\":\"SubscriptionInteractor._init\",\"file\":\"package:visory_flutter/subscription/domain/subscription_interactor.dart\",\"offset\":62,\"importance\":4}],\"overflowCount\":0},\"signal\":{\"name\":\"0\",\"code\":\"0\",\"address\":0},\"binaries\":[{\"baseAddress\":0,\"size\":0,\"name\":\"app.visory.security_camera\",\"uuid\":\"OGNlOWZhNDY2NjIyNDk4ZWI0YzMxY2FmYTY3NjViMzY=\"}]},\"customAttributes\":[{\"key\":\"flutter_error_exception\",\"value\":\"Exception: Subscription not available\"},{\"key\":\"flutter_error_reason\",\"value\":\"thrown null\"},{\"key\":\"place\",\"value\":\"NO_PLACE_ID\"}],\"internalKeys\":[],\"uiOrientation\":1},\"device\":{\"batteryLevel\":1.0,\"batteryVelocity\":1,\"proximityOn\":false,\"orientation\":1,\"ramUsed\":1293557760,\"diskUsed\":901656576},\"log\":{\"content\":\"1663 $A$:{\\\"name\\\":\\\"_vs\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n8876 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"role_picker\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":0,\\\"stepName\\\":\\\"initial\\\"}}\\n10882 $A$:{\\\"name\\\":\\\"onboarding_pages\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"selected\\\":\\\"onboarding_pages\\\"}}\\n10933 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"boarding_welcome\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n\"}},{\"timestamp\":1690282460,\"type\":\"crash\",\"app\":{\"execution\":{\"threads\":[{\"name\":\"pool-32-thread-3\",\"importance\":4,\"frames\":[{\"pc\":0,\"symbol\":\"StandardMethodCodec.decodeEnvelope\",\"file\":\"package:flutter/src/services/message_codecs.dart\",\"offset\":653,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannel._invokeMethod\",\"file\":\"package:flutter/src/services/platform_channel.dart\",\"offset\":315,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannelFirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart\",\"offset\":146,\"importance\":4},{\"pc\":0,\"symbol\":\"FirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config/src/firebase_remote_config.dart\",\"offset\":87,\"importance\":4},{\"pc\":0,\"symbol\":\"Config._init\",\"file\":\"package:visory_flutter/data/firebase/remote_config.dart\",\"offset\":39,\"importance\":4}]},{\"name\":\"firebase-installations-executor-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Thread-2\",\"importance\":0,\"frames\":[]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"TubeSockReader-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"java.io.DataInputStream.readFully\",\"file\":\"DataInputStream.java\",\"offset\":203,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.h.e\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.h.f\",\"offset\":16,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c.n\",\"offset\":266,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c.a\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.c$b.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Intent-Handle\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-7\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"pool-45-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-26-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Profile Saver\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-32-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-32-thread-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"1.ui\",\"importance\":0,\"frames\":[]},{\"name\":\"HeapTaskDaemon\",\"importance\":0,\"frames\":[]},{\"name\":\"queued-work-looper\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$c.a\",\"offset\":25,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.d\",\"offset\":181,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":3,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Crashlytics Exception Handler1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"dalvik.system.VMStack.getThreadStackTrace\",\"file\":\"VMStack.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.getStackTrace\",\"file\":\"Thread.java\",\"offset\":1841,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.getAllStackTraces\",\"file\":\"Thread.java\",\"offset\":1909,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.x\",\"offset\":16,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.n\",\"offset\":4,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.i\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.n.c\",\"offset\":44,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.d0.q\",\"offset\":19,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.d0.r\",\"offset\":32,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.j$b.a\",\"offset\":49,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.j$b.call\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.h$c.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e7.y.run\",\"offset\":8,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"queue-1-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"queue-1-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-11-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"ReferenceQueueDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$ReferenceQueueDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":232,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Okio Watchdog\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$a.c\",\"offset\":24,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$b.run\",\"offset\":5,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-installations-executor-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"GmsDynamite\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"j6.a.run\",\"offset\":6,\"importance\":0}]},{\"name\":\"FinalizerDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.ref.ReferenceQueue.remove\",\"file\":\"ReferenceQueue.java\",\"offset\":203,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.ref.ReferenceQueue.remove\",\"file\":\"ReferenceQueue.java\",\"offset\":224,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":300,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-iid-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-32-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-9-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-18-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-5\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"hwuiTask0\",\"importance\":0,\"frames\":[]},{\"name\":\"binder:6444_3\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-30-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"jb.j.d\",\"offset\":10,\"importance\":0},{\"pc\":0,\"symbol\":\"jb.w.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_2\",\"importance\":0,\"frames\":[]},{\"name\":\"Measurement Worker\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"ip.run\",\"file\":\":com.google.android.gms.dynamite_measurementdynamite@225014047@22.50.14 (190800-0)\",\"offset\":7,\"importance\":0}]},{\"name\":\"heartbeat-information-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-31-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-19-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-8\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"Timer-0\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.TimerThread.mainLoop\",\"file\":\"Timer.java\",\"offset\":534,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.TimerThread.run\",\"file\":\"Timer.java\",\"offset\":513,\"importance\":0}]},{\"name\":\"GoogleApiHandler\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"hwuiTask1\",\"importance\":0,\"frames\":[]},{\"name\":\"DefaultDispatcher-worker-9\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-4\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"flutter-worker-0\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"flutter-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_4\",\"importance\":0,\"frames\":[]},{\"name\":\"DefaultDispatcher-worker-6\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"sg.y api.apphud.com\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead0\",\"file\":\"SocketInputStream.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.socketRead\",\"file\":\"SocketInputStream.java\",\"offset\":118,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":173,\"importance\":0},{\"pc\":0,\"symbol\":\"java.net.SocketInputStream.read\",\"file\":\"SocketInputStream.java\",\"offset\":143,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":945,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.processDataFromSocket\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":909,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.readUntilDataAvailable\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":824,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.org.conscrypt.ConscryptEngineSocket$SSLInputStream.read\",\"file\":\"ConscryptEngineSocket.java\",\"offset\":797,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.k.N0\",\"offset\":45,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.a$d.N0\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.K0\",\"offset\":34,\"importance\":0},{\"pc\":0,\"symbol\":\"fh.r.t1\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.h.b\",\"offset\":9,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.c\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"ah.f$d.invoke\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.c.f\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.j\",\"offset\":67,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e.b\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"wg.e$d.run\",\"offset\":53,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-48-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-19-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"1.raster\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-25-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"MessengerIpcClient\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Okio Watchdog\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":442,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":568,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout.awaitTimeout\",\"file\":\"AsyncTimeout.java\",\"offset\":313,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout.access$000\",\"file\":\"AsyncTimeout.java\",\"offset\":42,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.okio.AsyncTimeout$Watchdog.run\",\"file\":\"AsyncTimeout.java\",\"offset\":288,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"awaitEvenIfOnMainThread task continuation executor1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"AsyncTask #1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":461,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.take\",\"file\":\"SynchronousQueue.java\",\"offset\":922,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"firebase-iid-executor\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Jit thread pool worker thread 0\",\"importance\":0,\"frames\":[]},{\"name\":\"pool-50-thread-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"main\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.app.ActivityThread.main\",\"file\":\"ActivityThread.java\",\"offset\":7872,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.reflect.Method.invoke\",\"file\":\"Method.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run\",\"file\":\"RuntimeInit.java\",\"offset\":548,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.internal.os.ZygoteInit.main\",\"file\":\"ZygoteInit.java\",\"offset\":936,\"importance\":0}]},{\"name\":\"queue-1-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"binder:6444_1\",\"importance\":0,\"frames\":[]},{\"name\":\"MLHandler\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"FirebaseDatabaseWorker\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Init\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"RenderThread\",\"importance\":0,\"frames\":[]},{\"name\":\"FinalizerWatchdogDaemon\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":450,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":355,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.sleepForNanos\",\"file\":\"Daemons.java\",\"offset\":438,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.waitForProgress\",\"file\":\"Daemons.java\",\"offset\":480,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$FinalizerWatchdogDaemon.runInternal\",\"file\":\"Daemons.java\",\"offset\":369,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Daemons$Daemon.run\",\"file\":\"Daemons.java\",\"offset\":140,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"internal\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"pool-50-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"FirebaseInstanceId\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-6\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"ScionFrontendApi\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.poll\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":458,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"Firebase-Messaging-Topics-Io\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"g6.b.run\",\"offset\":6,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-3\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"OkHttp ConnectionPool\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Object.wait\",\"file\":\"Object.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"com.android.okhttp.ConnectionPool$1.run\",\"file\":\"ConnectionPool.java\",\"offset\":106,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1137,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"sg.y TaskRunner\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-37-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1188,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-5\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"flutter-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-16-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"pool-27-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":1176,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take\",\"file\":\"ScheduledThreadPoolExecutor.java\",\"offset\":905,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":450,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.sleep\",\"file\":\"Thread.java\",\"offset\":355,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.internal.BillingWrapper.connectIfNeeded\",\"offset\":151,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.internal.BillingWrapper.detailsEx\",\"offset\":80,\"importance\":0},{\"pc\":0,\"symbol\":\"com.apphud.sdk.ApphudInternal$fetchDetails$3$inap$1.invokeSuspend\",\"offset\":44,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlin.coroutines.jvm.internal.a.resumeWith\",\"offset\":11,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.y0.run\",\"offset\":129,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.internal.n.run\",\"offset\":12,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.k.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a.l\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.d\",\"offset\":14,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":28,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.l\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.r\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.n\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"kotlinx.coroutines.scheduling.a$c.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"com.google.firebase.crashlytics.startup1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1063,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.t$a$a.a\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"h8.c.run\",\"offset\":5,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"TokenRefresher\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"android.os.MessageQueue.nativePollOnce\",\"file\":\"MessageQueue.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.MessageQueue.next\",\"file\":\"MessageQueue.java\",\"offset\":335,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loopOnce\",\"file\":\"Looper.java\",\"offset\":161,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.Looper.loop\",\"file\":\"Looper.java\",\"offset\":288,\"importance\":0},{\"pc\":0,\"symbol\":\"android.os.HandlerThread.run\",\"file\":\"HandlerThread.java\",\"offset\":67,\"importance\":0}]},{\"name\":\"pool-11-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"pool-46-thread-1\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":234,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill\",\"file\":\"SynchronousQueue.java\",\"offset\":463,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue$TransferStack.transfer\",\"file\":\"SynchronousQueue.java\",\"offset\":361,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.SynchronousQueue.poll\",\"file\":\"SynchronousQueue.java\",\"offset\":939,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.getTask\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1062,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor.runWorker\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":1123,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.ThreadPoolExecutor$Worker.run\",\"file\":\"ThreadPoolExecutor.java\",\"offset\":637,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]},{\"name\":\"DefaultDispatcher-worker-7\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.parkNanos\",\"file\":\"LockSupport.java\",\"offset\":357,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.d\",\"offset\":23,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.h\",\"offset\":74,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.f\",\"offset\":60,\"importance\":0},{\"pc\":0,\"symbol\":\"com.smartlook.i2$b.run\",\"offset\":0,\"importance\":0}]},{\"name\":\"Signal Catcher\",\"importance\":0,\"frames\":[]},{\"name\":\"2.ui\",\"importance\":0,\"frames\":[]},{\"name\":\"TubeSockWriter-2\",\"importance\":0,\"frames\":[{\"pc\":0,\"symbol\":\"jdk.internal.misc.Unsafe.park\",\"file\":\"Unsafe.java\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.LockSupport.park\",\"file\":\"LockSupport.java\",\"offset\":194,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await\",\"file\":\"AbstractQueuedSynchronizer.java\",\"offset\":2081,\"importance\":0},{\"pc\":0,\"symbol\":\"java.util.concurrent.LinkedBlockingQueue.take\",\"file\":\"LinkedBlockingQueue.java\",\"offset\":433,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.j\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.f\",\"offset\":10,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i.a\",\"offset\":0,\"importance\":0},{\"pc\":0,\"symbol\":\"e9.i$a.run\",\"offset\":2,\"importance\":0},{\"pc\":0,\"symbol\":\"java.lang.Thread.run\",\"file\":\"Thread.java\",\"offset\":1012,\"importance\":0}]}],\"exception\":{\"type\":\"io.flutter.plugins.firebase.crashlytics.FlutterError\",\"reason\":\"[firebase_remote_config/internal] internal remote config fetch error. Error thrown null.\",\"frames\":[{\"pc\":0,\"symbol\":\"StandardMethodCodec.decodeEnvelope\",\"file\":\"package:flutter/src/services/message_codecs.dart\",\"offset\":653,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannel._invokeMethod\",\"file\":\"package:flutter/src/services/platform_channel.dart\",\"offset\":315,\"importance\":4},{\"pc\":0,\"symbol\":\"MethodChannelFirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config_platform_interface/src/method_channel/method_channel_firebase_remote_config.dart\",\"offset\":146,\"importance\":4},{\"pc\":0,\"symbol\":\"FirebaseRemoteConfig.fetchAndActivate\",\"file\":\"package:firebase_remote_config/src/firebase_remote_config.dart\",\"offset\":87,\"importance\":4},{\"pc\":0,\"symbol\":\"Config._init\",\"file\":\"package:visory_flutter/data/firebase/remote_config.dart\",\"offset\":39,\"importance\":4}],\"overflowCount\":0},\"signal\":{\"name\":\"0\",\"code\":\"0\",\"address\":0},\"binaries\":[{\"baseAddress\":0,\"size\":0,\"name\":\"app.visory.security_camera\",\"uuid\":\"OGNlOWZhNDY2NjIyNDk4ZWI0YzMxY2FmYTY3NjViMzY=\"}]},\"customAttributes\":[{\"key\":\"flutter_error_exception\",\"value\":\"[firebase_remote_config/internal] internal remote config fetch error\"},{\"key\":\"flutter_error_reason\",\"value\":\"thrown null\"},{\"key\":\"place\",\"value\":\"NO_PLACE_ID\"}],\"internalKeys\":[{\"key\":\"com.crashlytics.on-demand.dropped-exceptions\",\"value\":\"0\"},{\"key\":\"com.crashlytics.on-demand.recorded-exceptions\",\"value\":\"0\"}],\"uiOrientation\":1},\"device\":{\"batteryLevel\":1.0,\"batteryVelocity\":1,\"proximityOn\":false,\"orientation\":1,\"ramUsed\":1328398336,\"diskUsed\":905932800},\"log\":{\"content\":\"1663 $A$:{\\\"name\\\":\\\"_vs\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n8876 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"role_picker\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":0,\\\"stepName\\\":\\\"initial\\\"}}\\n10882 $A$:{\\\"name\\\":\\\"onboarding_pages\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"selected\\\":\\\"onboarding_pages\\\"}}\\n10933 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"boarding_welcome\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n11885 $A$:{\\\"name\\\":\\\"_e\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_et\\\":6325,\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n13517 $A$:{\\\"name\\\":\\\"user_progress\\\",\\\"parameters\\\":{\\\"additional\\\":\\\"\\\",\\\"screen\\\":\\\"insall_on_second_device\\\",\\\"_o\\\":\\\"app\\\",\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678,\\\"step\\\":2,\\\"stepName\\\":\\\"boarding\\\"}}\\n15654 $A$:{\\\"name\\\":\\\"_e\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\",\\\"_et\\\":2434,\\\"_sc\\\":\\\"MainActivity\\\",\\\"_si\\\":8505468184930546678}}\\n19862 $A$:{\\\"name\\\":\\\"_ab\\\",\\\"parameters\\\":{\\\"_o\\\":\\\"auto\\\"}}\\n\"}}],\"generatorType\":3}}",
            "timezoneOffsetSeconds": 7200,
            "networkConnectionInfo": {
                "networkType": "WIFI"
            }
        }
    ],
    "qosTier": "DEFAULT"
}

Same for FIREBASE_APPQUALITY_SESSION—of which we currently only have a single instance, https://data.tweasel.org/data/requests/monkey-july-2023,98267, but more to come with tweaselORG/experiments#2:

{
    "requestTimeMs": 1690282467989,
    "requestUptimeMs": 323208,
    "clientInfo": {
        "clientType": "ANDROID_FIREBASE",
        "androidClientInfo": {
            "sdkVersion": 33,
            "model": "sdk_gphone_x86_64",
            "hardware": "ranchu",
            "device": "emu64xa",
            "product": "sdk_gphone_x86_64",
            "osBuild": "TE1A.220922.025",
            "manufacturer": "Google",
            "fingerprint": "google/sdk_gphone_x86_64/emu64xa:13/TE1A.220922.025/9795748:userdebug/dev-keys",
            "locale": "en",
            "country": "US",
            "mccMnc": "310260",
            "applicationBuild": "25"
        }
    },
    "logSourceName": "FIREBASE_APPQUALITY_SESSION",
    "logEvent": [
        {
            "eventTimeMs": 1690282437597,
            "eventUptimeMs": 292817,
            "sourceExtensionJsonProto3": "{\"eventType\":1,\"sessionData\":{\"sessionId\":\"73dd844e56db4cffbaff800f21050fc0\",\"firstSessionId\":\"73dd844e56db4cffbaff800f21050fc0\",\"sessionIndex\":0,\"eventTimestampUs\":1690282437157000,\"dataCollectionStatus\":{\"performance\":2,\"crashlytics\":2,\"sessionSamplingRate\":1.0},\"firebaseInstallationId\":\"ell0zhyfQnSPtxBoga7Q_V\"},\"applicationInfo\":{\"appId\":\"1:214211646137:android:4172fcfbea1636db54c168\",\"deviceModel\":\"sdk_gphone_x86_64\",\"sessionSdkVersion\":\"1.0.0\",\"osVersion\":\"13\",\"logEnvironment\":3,\"androidAppInfo\":{\"packageName\":\"com.xray.tida\",\"versionName\":\"1.0.3\",\"appBuildVersion\":\"25\",\"deviceManufacturer\":\"Google\"}}}",
            "timezoneOffsetSeconds": 7200,
            "networkConnectionInfo": {
                "networkType": "WIFI"
            }
        }
    ],
    "qosTier": "DEFAULT"
}
baltpeter commented 1 month ago

I noticed an issue with string decoding in Protobufs, but won't tackle that as part of this issue. See #71.

baltpeter commented 1 month ago

There is also a newer endpoint at https://firebaselogging.googleapis.com/v0cc/log/batch that appears to be replacing https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog.

In previous runs, we had seen a few instances of firebaselogging.googleapis.com but almost exclusively on iOS. With tweaselORG/experiments#2, we are now also seeing a lot of requests from Android.

baltpeter commented 1 month ago

As far as I can tell, the request format is identical. There are few new (to us) logEvents/sourceExtensions, though.

So far, we have observed the following logSourceNames in JSON messages:

And the following logSources in Protobuf messages:

baltpeter commented 1 month ago

I'll start a new table here to preserve the issue history.

These are the types of logEvents/sourceExtensions we have seen and their respective Protobuf schemas on both firebaselogging-pa.googleapis.com and firebaselogging.googleapis.com:

logSourceName (Android) logSource (iOS) Protobuf schema (Android) Protobuf schema (iOS)
FIREPERF 462 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-perf/src/main/proto/firebase/perf/v1/perf_metric.proto https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebasePerformance/ProtoSupport/Protos/perf_metric.proto
FIREBASE_INAPPMESSAGING ? https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/firebase-inappmessaging/src/proto/logs/proto/firebase/inappmessaging/campaign_analytics.proto
GDT_CLIENT_METRICS 1710 https://github.com/firebase/firebase-android-sdk/blob/132b8ba8563aa00b06e27b56ee811e738d14c791/transport/transport-runtime/src/main/proto/client_analytics.proto https://github.com/google/GoogleDataTransport/blob/6e27aa51abc4847ba748f3ea11bb0a1f3d09f5d3/GoogleDataTransport/ProtoSupport/Protos/client_metrics.proto
FIREBASE_CRASHLYTICS_REPORT ? https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/Crashlytics/ProtoSupport/Protos/crashlytics.proto
FIREBASE_APPQUALITY_SESSION 1974 https://github.com/firebase/firebase-ios-sdk/blob/7a0145207ec66f24e4bd1ceccd4f861a3e22535b/FirebaseSessions/ProtoSupport/Protos/sessions.proto
PLAY_BILLING_LIBRARY ?
FIREBASE_ML_LOG_SDK 1326 https://github.com/firebase/firebase-android-sdk/blob/master/firebase-ml-modeldownloader/src/test/proto/firebase/ml/modeldownloader/firebase_ml_log_sdk.proto https://github.com/firebase/firebase-ios-sdk/blob/477bb2a6961b18dc6210a0dafc90a975e6a448c6/FirebaseMLModelDownloader/Sources/proto/firebase_ml_log_sdk.proto
FIREBASE_ML_SDK ?
CAST_SENDER_SDK 67
LE 17
ICORE 137 https://github.com/firebase/firebase-ios-sdk/blob/af1201c8a3e64d7c1893cebbec6877cd8c39abf7/Firebase/CoreDiagnostics/ProtoSupport/Protos/firebasecore.proto
? 715

Of those, FIREBASE_APPQUALITY_SESSION, FIREBASE_CRASHLYTICS_REPORT, FIREBASE_ML_LOG_SDK are transmitted as JSON on Android. The rest is always transmitted as Protobuf.

baltpeter commented 1 month ago

I can't find a schema for PLAY_BILLING_LIBRARY but the important stuff is easy enough to guess:

Example:

{
    "1": {
        "1": "6.0.0",
        "2": "com.appsky.android.bloodpressure"
    },
    "2": {
        "1": 5,
        "2": {
            "1": 3,
            "2": "Billing service unavailable on device.",
            "4": 40
        }
    }
}
baltpeter commented 1 month ago

Can't find a schema for FIREBASE_ML_SDK, either.

{
    "1": {
        "1": "com.speakandtranslate.voicetranslator.alllanguages",
        "2": "69",
        "4": "17.0.2",
        "5": "NA",
        "8": {
            "12": 1398091118
        },
        "9": "75d23644-e349-4d99-a295-b4da680601f0",
        "11": 1,
        "13": 10,
        "14": 18446744073709552000
    },
    "2": 251,
    "39": {
        "1": 3
    }
}
baltpeter commented 1 month ago

Found a mapping between numeric and string logSources: https://github.com/aarch64-android-emulator/aarch64-qemu/blob/0582a5f95da065a431f83ab6a46ecde11410a3f1/android/android-emu/android/metrics/proto/clientanalytics.proto#L408

Unfortunately, it's quite old and doesn't contain many of the ones we've observed.

baltpeter commented 1 month ago

No schema for CAST_SENDER_SDK, either.

{
    "9": "e2c23e21-829c-428b-99df-10a9062a775e",
    "48": {
        "1": {
            "1": "com.audible.application",
            "2": "21.3.0"
        },
        "4": 5
    },
    "59": "e2c23e21-829c-428b-99df-10a9062a775e"
}
baltpeter commented 1 month ago

Or LE

{
    "1": 1,
    "2": {
        "1": 1,
        "2": {
            "1": "com.bonial.kaufda",
            "2": 1039921
        },
        "5": {
            "1": 5,
            "2": "en",
            "9": {
                "3": {
                    "2": "postal_code"
                }
            }
        },
        "27": 1,
        "28": "3ccd8e05-4590-4b95-ae5d-7d25f64c6909",
        "30": "3.4.0",
        "32": 1,
        "33": "AIzaSyAqLMSRndKfPVh12JWcLtjnt_8qbP8gPE0",
        "34": 1
    }
}

That one's labelled "location engine statistics". Sounds potentially juicy.

baltpeter commented 1 month ago

Don't have a schema for 715, either, but that's probably related to Google Translate as we only have two instances, both from translation apps.

{
    "1": 1690384081426,
    "6": {
        "1": {
            "1": "mobile.app.tools.translator",
            "2": "2781",
            "4": "3.0.0",
            "5": "NA",
            "8": [
                {
                    "12": 1162095982
                },
                "de-DE"
            ],
            "10": 0,
            "11": 1
        },
        "2": 251,
        "39": {
            "1": 3,
            "2": 0
        }
    },
    "15": 14400,
    "17": 4214474692
}