Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
### Version 4.28.0 (1th April 2021)
#### Changed
- Removed native iOS legacy code.

#### Native SDKs
- [[email protected]][ios_sdk_v4.28.0]
- [[email protected]][android_sdk_v4.27.0]

---

### Version 4.26.0 (18th February 2021)
#### Added
- Added possibility to get cost data information in attribution callback.
Expand Down Expand Up @@ -400,6 +410,7 @@
[ios_sdk_v4.23.0]: https://github.com/adjust/ios_sdk/tree/v4.23.0
[ios_sdk_v4.23.2]: https://github.com/adjust/ios_sdk/tree/v4.23.2
[ios_sdk_v4.26.1]: https://github.com/adjust/ios_sdk/tree/v4.26.1
[ios_sdk_v4.28.0]: https://github.com/adjust/ios_sdk/tree/v4.28.0

[android_sdk_v4.10.4]: https://github.com/adjust/android_sdk/tree/v4.10.4
[android_sdk_v4.11.0]: https://github.com/adjust/android_sdk/tree/v4.11.0
Expand All @@ -423,3 +434,4 @@
[android_sdk_v4.24.0]: https://github.com/adjust/android_sdk/tree/v4.24.0
[android_sdk_v4.24.1]: https://github.com/adjust/android_sdk/tree/v4.24.1
[android_sdk_v4.26.2]: https://github.com/adjust/android_sdk/tree/v4.26.2
[android_sdk_v4.27.0]: https://github.com/adjust/android_sdk/tree/v4.27.0
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
4.26.0
4.28.0
Binary file modified android/libs/adjust-android.jar
Binary file not shown.
18 changes: 9 additions & 9 deletions example/ios/Podfile.lock
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
PODS:
- Adjust (4.26.1):
- Adjust/Core (= 4.26.1)
- Adjust/Core (4.26.1)
- Adjust (4.28.0):
- Adjust/Core (= 4.28.0)
- Adjust/Core (4.28.0)
- boost-for-react-native (1.63.0)
- DoubleConversion (1.1.6)
- EXApplication (2.4.1):
Expand Down Expand Up @@ -227,8 +227,8 @@ PODS:
- React-cxxreact (= 0.63.4)
- React-jsi (= 0.63.4)
- React-jsinspector (0.63.4)
- react-native-adjust (4.26.0):
- Adjust (= 4.26.1)
- react-native-adjust (4.28.0):
- Adjust (= 4.28.0)
- React
- React-RCTActionSheet (0.63.4):
- React-Core/RCTActionSheetHeaders (= 0.63.4)
Expand Down Expand Up @@ -292,7 +292,7 @@ PODS:
- React-jsi (= 0.63.4)
- RNGestureHandler (1.8.0):
- React
- RNReanimated (1.13.2):
- RNReanimated (1.13.3):
- React-Core
- RNScreens (2.15.2):
- React-Core
Expand Down Expand Up @@ -498,7 +498,7 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native/ReactCommon/yoga"

SPEC CHECKSUMS:
Adjust: e8f9b8b50b3d234923389f8e0077ce911cf502d8
Adjust: 131c77905f67b26e946d1b831fad20ed2b41134c
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
DoubleConversion: cde416483dac037923206447da6e1454df403714
EXApplication: e3c201e7b913d081bbd37bd3c5d0e2cdc21733b4
Expand Down Expand Up @@ -529,7 +529,7 @@ SPEC CHECKSUMS:
React-jsi: a0418934cf48f25b485631deb27c64dc40fb4c31
React-jsiexecutor: 93bd528844ad21dc07aab1c67cb10abae6df6949
React-jsinspector: 58aef7155bc9a9683f5b60b35eccea8722a4f53a
react-native-adjust: 26e155ca69b538c5c881610c37f85fc1ce1ffd09
react-native-adjust: ffd658e43e26a7bf619554dc359a62b25bd01bf6
React-RCTActionSheet: 89a0ca9f4a06c1f93c26067af074ccdce0f40336
React-RCTAnimation: 1bde3ecc0c104c55df246eda516e0deb03c4e49b
React-RCTBlob: a97d378b527740cc667e03ebfa183a75231ab0f0
Expand All @@ -541,7 +541,7 @@ SPEC CHECKSUMS:
React-RCTVibration: ae4f914cfe8de7d4de95ae1ea6cc8f6315d73d9d
ReactCommon: 73d79c7039f473b76db6ff7c6b159c478acbbb3b
RNGestureHandler: 7a5833d0f788dbd107fbb913e09aa0c1ff333c39
RNReanimated: e03f7425cb7a38dcf1b644d680d1bfc91c3337ad
RNReanimated: 514a11da3a2bcc6c3dfd9de32b38e2b9bf101926
RNScreens: 3d682bcaba69a4f8e55543d90818704f34338db1
UMAppLoader: 92d044af52626af3d81a69796ad666fc7a9a7d78
UMBarCodeScannerInterface: 3f6c1b09ef4b867ce752b8c0b3893bcf9cd85f32
Expand Down
1,249 changes: 654 additions & 595 deletions example/yarn.lock

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion ext/android/sdk
Submodule sdk updated 36 files
+2 −2 Adjust/build.gradle
+33 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/ActivityHandler.java
+1 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/Adjust.java
+3 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustConfig.java
+37 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustInstance.java
+24 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/AdjustPreinstallReferrerReceiver.java
+3 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/Constants.java
+2 −0 Adjust/sdk-core/src/main/java/com/adjust/sdk/IActivityHandler.java
+112 −93 Adjust/sdk-core/src/main/java/com/adjust/sdk/PackageBuilder.java
+7 −3 Adjust/sdk-core/src/main/java/com/adjust/sdk/SdkClickHandler.java
+34 −2 Adjust/sdk-core/src/main/java/com/adjust/sdk/SharedPreferencesManager.java
+1 −1 Adjust/sdk-core/src/main/java/com/adjust/sdk/network/ActivityPackageSender.java
+24 −2 Adjust/sdk-core/src/main/java/com/adjust/sdk/network/UrlStrategy.java
+1 −1 Adjust/sdk-plugin-criteo/build.gradle
+1 −1 Adjust/sdk-plugin-imei/build.gradle
+2 −2 Adjust/sdk-plugin-oaid/build.gradle
+ Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.23.aar
+ Adjust/sdk-plugin-oaid/libs/oaid_sdk_1.0.25.aar
+1 −1 Adjust/sdk-plugin-sociomantic/build.gradle
+1 −1 Adjust/sdk-plugin-trademob/build.gradle
+1 −1 Adjust/sdk-plugin-webbridge/build.gradle
+1 −1 Adjust/sdk-plugin-webbridge/src/main/assets/adjust.js
+1 −0 Adjust/sdk-plugin-webbridge/src/main/assets/adjust_config.js
+1 −1 Adjust/test-unit/src/androidTest/java/com/adjust/sdk/TestActivityPackage.java
+11 −0 CHANGELOG.md
+75 −4 README.md
+1 −1 VERSION
+640 −364 doc/chinese/README.md
+2 −2 doc/chinese/plugins/oaid.md
+1 −1 doc/english/migration/migrate.md
+2 −2 doc/english/plugins/oaid.md
+598 −322 doc/japanese/README.md
+1 −1 doc/japanese/migration/migrate.md
+2 −2 doc/japanese/plugins/oaid.md
+660 −421 doc/korean/README.md
+2 −2 doc/korean/plugins/oaid.md
2 changes: 1 addition & 1 deletion ext/ios/sdk
Submodule sdk updated 47 files
+2 −2 Adjust.podspec
+40 −40 Adjust.xcodeproj/project.pbxproj
+5 −3 Adjust/ADJActivityHandler.m
+0 −20 Adjust/ADJActivityState.m
+15 −0 Adjust/ADJAdditions/NSNumber+ADJAdditions.h
+21 −0 Adjust/ADJAdditions/NSNumber+ADJAdditions.m
+0 −1 Adjust/ADJAdditions/UIDevice+ADJAdditions.h
+0 −105 Adjust/ADJAdditions/UIDevice+ADJAdditions.m
+3 −3 Adjust/ADJAttribution.m
+0 −16 Adjust/ADJKeychain.h
+0 −144 Adjust/ADJKeychain.m
+12 −67 Adjust/ADJPackageBuilder.m
+5 −6 Adjust/ADJRequestHandler.m
+0 −6 Adjust/ADJSystemProfile.h
+0 −63 Adjust/ADJSystemProfile.m
+1 −1 Adjust/ADJUrlStrategy.h
+31 −4 Adjust/ADJUrlStrategy.m
+0 −7 Adjust/ADJUtil.h
+1 −64 Adjust/ADJUtil.m
+2 −1 Adjust/Adjust.h
+1 −0 Adjust/Adjust.m
+2 −1 AdjustBridge/AdjustBridgeRegister.m
+6 −6 AdjustTests/AdjustTestApp/AdjustTestApp.xcodeproj/project.pbxproj
+8 −8 AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.h
+2 −2 AdjustTests/AdjustTestApp/AdjustTestApp/ViewController.m
+1 −1 AdjustTests/AdjustUnitTests/ADJPackageFields.m
+6 −6 AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp.xcodeproj/project.pbxproj
+3 −3 AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.h
+2 −2 AdjustTests/AdjustWebBridgeTestApp/AdjustWebBridgeTestApp/TestLibraryBridge.js
+21 −1 CHANGELOG.md
+11 −4 README.md
+1 −1 VERSION
+8 −7 doc/chinese/README.md
+1 −1 doc/english/migrate.md
+1 −1 doc/english/web_views.md
+9 −8 doc/japanese/README.md
+15 −26 doc/japanese/web_views.md
+16 −4 doc/korean/README.md
+1 −1 doc/korean/web_views.md
+1 −1 doc/migrate.md
+562 −288 examples/AdjustExample-FbPixel/AdjustExample-FbPixel.xcodeproj/project.pbxproj
+6 −6 examples/AdjustExample-ObjC/AdjustExample-ObjC.xcodeproj/project.pbxproj
+6 −6 examples/AdjustExample-Swift/AdjustExample-Swift.xcodeproj/project.pbxproj
+6 −6 examples/AdjustExample-WebView/AdjustExample-WebView.xcodeproj/project.pbxproj
+6 −6 examples/AdjustExample-iMessage/AdjustExample-iMessage.xcodeproj/project.pbxproj
+6 −6 examples/AdjustExample-iWatch/AdjustExample-iWatch.xcodeproj/project.pbxproj
+6 −6 examples/AdjustExample-tvOS/AdjustExample-tvOS.xcodeproj/project.pbxproj
4 changes: 2 additions & 2 deletions index.js
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ Adjust.getAmazonAdId = function(callback) {
};

Adjust.getSdkVersion = function(callback) {
module_adjust.getSdkVersion("react-native4.26.0", callback);
module_adjust.getSdkVersion("react-native4.28.0", callback);
};

Adjust.setReferrer = function(referrer) {
Expand Down Expand Up @@ -228,7 +228,7 @@ Adjust.onPause = function(testParam) {
// AdjustConfig

var AdjustConfig = function(appToken, environment) {
this.sdkPrefix = "react-native4.26.0";
this.sdkPrefix = "react-native4.28.0";
this.appToken = appToken;
this.environment = environment;
this.logLevel = null;
Expand Down
8 changes: 5 additions & 3 deletions ios/Adjust/ADJActivityHandler.m
Original file line number Diff line number Diff line change
Expand Up @@ -1725,9 +1725,11 @@ - (BOOL)shouldFetchAdServicesI:(ADJActivityHandler *)selfI {
- (void)checkForAdServicesAttributionI:(ADJActivityHandler *)selfI {
if (@available(iOS 14.3, tvOS 14.3, *)) {
if ([selfI shouldFetchAdServicesI:selfI]) {
NSError *error = nil;
NSString *token = [[UIDevice currentDevice] adjFetchAdServicesAttribution:&error];
[selfI setAdServicesAttributionToken:token error:error];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSError *error = nil;
NSString *token = [[UIDevice currentDevice] adjFetchAdServicesAttribution:&error];
[selfI setAdServicesAttributionToken:token error:error];
});
}
}
}
Expand Down
20 changes: 0 additions & 20 deletions ios/Adjust/ADJActivityState.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
// Copyright (c) 2013 adjust GmbH. All rights reserved.
//

#import "ADJKeychain.h"
#import "ADJAdjustFactory.h"
#import "ADJActivityState.h"
#import "UIDevice+ADJAdditions.h"
Expand Down Expand Up @@ -84,26 +83,7 @@ - (BOOL)findTransactionId:(NSString *)transactionId {
#pragma mark - Private & helper methods

- (void)assignUuid:(NSString *)uuid {
NSString *persistedUuid = [ADJKeychain valueForKeychainKey:@"adjust_uuid" service:@"deviceInfo"];

// Check if value exists in Keychain.
if (persistedUuid != nil) {
// Check if value has UUID format.
if ((bool)[[NSUUID alloc] initWithUUIDString:persistedUuid]) {
[[ADJAdjustFactory logger] verbose:@"Value read from the keychain"];

// Value written in keychain seems to have UUID format.
self.uuid = persistedUuid;
self.isPersisted = YES;
return;
}
}

// At this point, UUID was not persisted in Keychain or if persisted, didn't have proper UUID format.
// Since we don't have anything in the keychain, we'll use the passed UUID value.
// Try to save that value to the keychain.
self.uuid = uuid;
self.isPersisted = [ADJKeychain setValue:self.uuid forKeychainKey:@"adjust_uuid" inService:@"deviceInfo"];
}

- (NSString *)description {
Expand Down
15 changes: 15 additions & 0 deletions ios/Adjust/ADJAdditions/NSNumber+ADJAdditions.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
//
// NSNumber+ADJAdditions.h
// Adjust
//
// Created by Uglješa Erceg (@uerceg) on 26th March 2021.
// Copyright (c) 2021 Adjust GmbH. All rights reserved.
//

#import <Foundation/Foundation.h>

@interface NSNumber(ADJAdditions)

+ (BOOL)adjIsEqual:(NSNumber *)first toNumber:(NSNumber *)second;

@end
21 changes: 21 additions & 0 deletions ios/Adjust/ADJAdditions/NSNumber+ADJAdditions.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
// NSNumber+ADJAdditions.m
// Adjust
//
// Created by Uglješa Erceg (@uerceg) on 26th March 2021.
// Copyright (c) 2021 Adjust GmbH. All rights reserved.
//

#import "NSNumber+ADJAdditions.h"

@implementation NSNumber(ADJAdditions)

+ (BOOL)adjIsEqual:(NSNumber *)first toNumber:(NSNumber *)second {
if (first == nil && second == nil) {
return YES;
}

return [first isEqualToNumber:second];
}

@end
1 change: 0 additions & 1 deletion ios/Adjust/ADJAdditions/UIDevice+ADJAdditions.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
- (NSString *)adjDeviceName;
- (NSString *)adjCreateUuid;
- (NSString *)adjVendorId;
- (NSString *)adjDeviceId:(ADJDeviceInfo *)deviceInfo;
- (void)adjCheckForiAd:(ADJActivityHandler *)activityHandler queue:(dispatch_queue_t)queue;
- (NSString *)adjFetchAdServicesAttribution:(NSError **)errorPtr;

Expand Down
105 changes: 0 additions & 105 deletions ios/Adjust/ADJAdditions/UIDevice+ADJAdditions.m
Original file line number Diff line number Diff line change
Expand Up @@ -214,111 +214,6 @@ - (NSString *)adjVendorId {
return @"";
}

- (NSString *)adjDeviceId:(ADJDeviceInfo *)deviceInfo {
int languageMaxLength = 16;
NSString *language = deviceInfo.languageCode;
NSString *binaryLanguage = [ADJUtil stringToBinaryString:language];
NSString *binaryLanguageFormatted = [ADJUtil enforceParameterLength:binaryLanguage withMaxlength:languageMaxLength];

int hardwareNameMaxLength = 48;
NSString *hardwareName = deviceInfo.machineModel;
NSString *binaryHardwareName = [ADJUtil stringToBinaryString:hardwareName];
NSString *binaryHardwareNameFormatted = [ADJUtil enforceParameterLength:binaryHardwareName withMaxlength:hardwareNameMaxLength];

NSArray *versionParts = [deviceInfo.systemVersion componentsSeparatedByString:@"."];
int osVersionMajor = [[versionParts objectAtIndex:0] intValue];
int osVersionMinor = [[versionParts objectAtIndex:1] intValue];
int osVersionPatch = [versionParts count] == 3 ? [[versionParts objectAtIndex:2] intValue] : 0;

int osVersionMajorMaxLength = 8;
NSString *binaryOsVersionMajor = [ADJUtil decimalToBinaryString:osVersionMajor];
NSString *binaryOsVersionMajorFormatted = [ADJUtil enforceParameterLength:binaryOsVersionMajor withMaxlength:osVersionMajorMaxLength];

int osVersionMinorMaxLength = 8;
NSString *binaryOsVersionMinor = [ADJUtil decimalToBinaryString:osVersionMinor];
NSString *binaryOsVersionMinorFormatted = [ADJUtil enforceParameterLength:binaryOsVersionMinor withMaxlength:osVersionMinorMaxLength];

int osVersionPatchMaxLength = 8;
NSString *binaryOsVersionPatch = [ADJUtil decimalToBinaryString:osVersionPatch];
NSString *binaryOsVersionPatchFormatted = [ADJUtil enforceParameterLength:binaryOsVersionPatch withMaxlength:osVersionPatchMaxLength];

int mccMaxLength = 24;
NSString *mcc = [ADJUtil readMCC];
NSString *binaryMcc = [ADJUtil stringToBinaryString:mcc];
NSString *binaryMccFormatted = [ADJUtil enforceParameterLength:binaryMcc withMaxlength:mccMaxLength];

int mncMaxLength = 24;
NSString *mnc = [ADJUtil readMNC];
NSString *binaryMnc = [ADJUtil stringToBinaryString:mnc];
NSString *binaryMncFormatted = [ADJUtil enforceParameterLength:binaryMnc withMaxlength:mncMaxLength];

int chargingStatusMaxLength = 8;
NSUInteger chargingStatus = [ADJSystemProfile chargingStatus];
NSString *binaryChargingStatus = [ADJUtil decimalToBinaryString:chargingStatus];
NSString *binaryChargingStatusFormatted = [ADJUtil enforceParameterLength:binaryChargingStatus withMaxlength:chargingStatusMaxLength];

int batteryLevelMaxSize = 8;
NSUInteger batteryLevel = [ADJSystemProfile batteryLevel];
NSString *binaryBatteryLevel = [ADJUtil decimalToBinaryString:batteryLevel];
NSString *binaryBatteryLevelFormatted = [ADJUtil enforceParameterLength:binaryBatteryLevel withMaxlength:batteryLevelMaxSize];

int totalSpaceMaxSize = 24;
NSUInteger totalSpace = [ADJSystemProfile totalDiskSpace];
NSString *binaryTotalSpace = [ADJUtil decimalToBinaryString:totalSpace];
NSString *binaryTotalSpaceFormatted = [ADJUtil enforceParameterLength:binaryTotalSpace withMaxlength:totalSpaceMaxSize];

int freeSpaceMaxSize = 24;
NSUInteger freeSpace = [ADJSystemProfile freeDiskSpace];
NSString *binaryFreeSpace = [ADJUtil decimalToBinaryString:freeSpace];
NSString *binaryFreeSpaceFormatted = [ADJUtil enforceParameterLength:binaryFreeSpace withMaxlength:freeSpaceMaxSize];

int systemUptimeMaxSize = 24;
NSUInteger systemUptime = [ADJSystemProfile systemUptime];
NSString *binarySystemUptime = [ADJUtil decimalToBinaryString:systemUptime];
NSString *binarySystemUptimeFormatted = [ADJUtil enforceParameterLength:binarySystemUptime withMaxlength:systemUptimeMaxSize];

int lastBootTimeMaxSize = 32;
NSUInteger lastBootTime = [ADJSystemProfile lastBootTime];
NSString *binaryLastBootTime = [ADJUtil decimalToBinaryString:lastBootTime];
NSString *binaryLastBootTimeFormatted = [ADJUtil enforceParameterLength:binaryLastBootTime withMaxlength:lastBootTimeMaxSize];

NSString *concatenated = [NSString stringWithFormat:@"%@%@%@%@%@%@%@%@%@%@%@%@%@",
binaryLanguageFormatted,
binaryHardwareNameFormatted,
binaryOsVersionMajorFormatted,
binaryOsVersionMinorFormatted,
binaryOsVersionPatchFormatted,
binaryMccFormatted,
binaryMncFormatted,
binaryChargingStatusFormatted,
binaryBatteryLevelFormatted,
binaryTotalSpaceFormatted,
binaryFreeSpaceFormatted,
binarySystemUptimeFormatted,
binaryLastBootTimeFormatted];

// make sure concatenated string length is multiple of 4
if (concatenated.length % 4 != 0) {
int numberOfBits = concatenated.length % 4;
while (numberOfBits != 4) {
concatenated = [@"0" stringByAppendingString:concatenated];
numberOfBits += 1;
}
}

NSString *mParameter = @"";
for (NSUInteger i = 0; i < concatenated.length; i += 4) {
// get fourplet substring
NSString *fourplet = [concatenated substringWithRange:NSMakeRange(i, 4)];
// convert fourplet to decimal number
long decimalFourplet = strtol([fourplet UTF8String], NULL, 2);
// append hex value of fourplet to final parameter
mParameter = [mParameter stringByAppendingString:[NSString stringWithFormat:@"%lX", decimalFourplet]];
}

return mParameter;
}

- (void)adjCheckForiAd:(ADJActivityHandler *)activityHandler queue:(dispatch_queue_t)queue {
// if no tries for iad v3 left, stop trying
id<ADJLogger> logger = [ADJAdjustFactory logger];
Expand Down
6 changes: 3 additions & 3 deletions ios/Adjust/ADJAttribution.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@
// Copyright (c) 2014 adjust GmbH. All rights reserved.
//

#import "ADJUtil.h"
#import "ADJAttribution.h"
#import "NSString+ADJAdditions.h"
#import "ADJUtil.h"
#import "NSNumber+ADJAdditions.h"

@implementation ADJAttribution

Expand Down Expand Up @@ -73,8 +74,7 @@ - (BOOL)isEqualToAttribution:(ADJAttribution *)attribution {
if (![NSString adjIsEqual:self.costType toString:attribution.costType]) {
return NO;
}
// costAmount is of type NSNumber
if (![self.costAmount isEqualToNumber:attribution.costAmount]) {
if (![NSNumber adjIsEqual:self.costAmount toNumber:attribution.costAmount]) {
return NO;
}
if (![NSString adjIsEqual:self.costCurrency toString:attribution.costCurrency]) {
Expand Down
Loading