diff --git a/CHANGELOG.md b/CHANGELOG.md
index 680caab35..bd78c4222 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,23 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
+## 2.28.0
+
+### Added
+- `addBoolArray` function to `ContractFunctionParameters`
+
+### Fixed
+- `java.lang.VerifyError` exception in examples
+
+### Changed
+- updated addressbooks
+- improved timeout handling
+
+## 2.27.0
+
+### Fixed
+- Timeout for TransactionResponse.getReceipt not working well
+
## 2.26.0
### Added
diff --git a/README.md b/README.md
index 2412120cd..5b1946c93 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@
Select _one_ of the following depending on your target platform.
```groovy
-implementation 'com.hedera.hashgraph:sdk:2.26.0'
+implementation 'com.hedera.hashgraph:sdk:2.28.0'
```
Select _one_ of the following to provide the gRPC implementation.
@@ -56,7 +56,7 @@ Select _one_ of the following depending on your target platform.
com.hedera.hashgraph
sdk
- 2.26.0
+ 2.28.0
```
diff --git a/build.gradle b/build.gradle
index 5adb35ce7..c58870b4a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ plugins {
id "com.github.ben-manes.versions" version "0.47.0"
id "jacoco"
- id "org.sonarqube" version "4.2.1.3168"
+ id "org.sonarqube" version "4.3.0.3225"
id "io.github.gradle-nexus.publish-plugin" version "1.3.0"
}
diff --git a/example-android/app/build.gradle b/example-android/app/build.gradle
index 898049a5e..6c6952653 100644
--- a/example-android/app/build.gradle
+++ b/example-android/app/build.gradle
@@ -50,7 +50,7 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
- implementation 'com.hedera.hashgraph:sdk:2.26.0'
+ implementation 'com.hedera.hashgraph:sdk:2.28.0'
implementation 'org.slf4j:slf4j-simple:2.0.7'
implementation 'io.grpc:grpc-okhttp:1.49.2'
diff --git a/example-android/build.gradle b/example-android/build.gradle
index bd0dbac58..cd20c03ac 100644
--- a/example-android/build.gradle
+++ b/example-android/build.gradle
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext.kotlin_version = '1.8.22'
+ ext.kotlin_version = '1.9.0'
repositories {
google()
@@ -10,7 +10,7 @@ buildscript {
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.0.2'
+ classpath 'com.android.tools.build:gradle:8.1.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.quittle:android-emulator-plugin:0.4.5'
diff --git a/examples/build.gradle b/examples/build.gradle
index 6ae745ebe..678474347 100644
--- a/examples/build.gradle
+++ b/examples/build.gradle
@@ -1,10 +1,11 @@
dependencies {
+ implementation project(":sdk")
+
implementation "com.google.code.gson:gson:2.10.1"
implementation "org.slf4j:slf4j-simple:2.0.7"
implementation "io.grpc:grpc-netty-shaded:1.56.1"
implementation "io.github.cdimascio:java-dotenv:5.3.1"
implementation "com.google.errorprone:error_prone_core:2.19.1"
- implementation project(path: ':sdk')
}
tasks.addRule("Pattern: run: Runs an example.") { String taskName ->
diff --git a/examples/src/main/java/AccountAliasExample.java b/examples/src/main/java/AccountAliasExample.java
index 2478bfaec..bc6c6a58c 100644
--- a/examples/src/main/java/AccountAliasExample.java
+++ b/examples/src/main/java/AccountAliasExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/AccountAllowanceExample.java b/examples/src/main/java/AccountAllowanceExample.java
index ddb84c5f8..779b20ff7 100644
--- a/examples/src/main/java/AccountAllowanceExample.java
+++ b/examples/src/main/java/AccountAllowanceExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/AccountCreateWithHtsExample.java b/examples/src/main/java/AccountCreateWithHtsExample.java
index 4b04acbde..e3adb676e 100644
--- a/examples/src/main/java/AccountCreateWithHtsExample.java
+++ b/examples/src/main/java/AccountCreateWithHtsExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ConsensusPubSubChunkedExample.java b/examples/src/main/java/ConsensusPubSubChunkedExample.java
index 8671ac1d4..507f38ee7 100644
--- a/examples/src/main/java/ConsensusPubSubChunkedExample.java
+++ b/examples/src/main/java/ConsensusPubSubChunkedExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ConsensusPubSubExample.java b/examples/src/main/java/ConsensusPubSubExample.java
index bc5c3ccb7..2e47365b0 100644
--- a/examples/src/main/java/ConsensusPubSubExample.java
+++ b/examples/src/main/java/ConsensusPubSubExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java b/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java
index af8fee0bc..56b235a18 100644
--- a/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java
+++ b/examples/src/main/java/ConsensusPubSubWithSubmitKeyExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ConstructClientExample.java b/examples/src/main/java/ConstructClientExample.java
index 8148a1e76..622fcd5a3 100644
--- a/examples/src/main/java/ConstructClientExample.java
+++ b/examples/src/main/java/ConstructClientExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ContractNoncesExample.java b/examples/src/main/java/ContractNoncesExample.java
index 5bd223df2..e91caa67f 100644
--- a/examples/src/main/java/ContractNoncesExample.java
+++ b/examples/src/main/java/ContractNoncesExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/CreateAccountExample.java b/examples/src/main/java/CreateAccountExample.java
index 4c13e19d1..c80b4019b 100644
--- a/examples/src/main/java/CreateAccountExample.java
+++ b/examples/src/main/java/CreateAccountExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/CreateAccountThresholdKeyExample.java b/examples/src/main/java/CreateAccountThresholdKeyExample.java
index 33396c216..a8884ed28 100644
--- a/examples/src/main/java/CreateAccountThresholdKeyExample.java
+++ b/examples/src/main/java/CreateAccountThresholdKeyExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/CreateFileExample.java b/examples/src/main/java/CreateFileExample.java
index f4fbda83e..1f9bd3c90 100644
--- a/examples/src/main/java/CreateFileExample.java
+++ b/examples/src/main/java/CreateFileExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/CreateSimpleContractExample.java b/examples/src/main/java/CreateSimpleContractExample.java
index 19beb92bc..ab978cfa6 100644
--- a/examples/src/main/java/CreateSimpleContractExample.java
+++ b/examples/src/main/java/CreateSimpleContractExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/CreateStatefulContractExample.java b/examples/src/main/java/CreateStatefulContractExample.java
index f7914651f..58e575240 100644
--- a/examples/src/main/java/CreateStatefulContractExample.java
+++ b/examples/src/main/java/CreateStatefulContractExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/CreateTopicExample.java b/examples/src/main/java/CreateTopicExample.java
index 80e8d306c..876617c71 100644
--- a/examples/src/main/java/CreateTopicExample.java
+++ b/examples/src/main/java/CreateTopicExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/CustomFeesExample.java b/examples/src/main/java/CustomFeesExample.java
index e1ac01b9a..077f4939c 100644
--- a/examples/src/main/java/CustomFeesExample.java
+++ b/examples/src/main/java/CustomFeesExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/DeleteAccountExample.java b/examples/src/main/java/DeleteAccountExample.java
index a13bc132c..f2d5c630c 100644
--- a/examples/src/main/java/DeleteAccountExample.java
+++ b/examples/src/main/java/DeleteAccountExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/DeleteFileExample.java b/examples/src/main/java/DeleteFileExample.java
index a85db6dac..440ee900a 100644
--- a/examples/src/main/java/DeleteFileExample.java
+++ b/examples/src/main/java/DeleteFileExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ExemptCustomFeesExample.java b/examples/src/main/java/ExemptCustomFeesExample.java
index 8ffc746f0..d8e3bed62 100644
--- a/examples/src/main/java/ExemptCustomFeesExample.java
+++ b/examples/src/main/java/ExemptCustomFeesExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/FileAppendChunkedExample.java b/examples/src/main/java/FileAppendChunkedExample.java
index f67acb2ad..aab6c7e6b 100644
--- a/examples/src/main/java/FileAppendChunkedExample.java
+++ b/examples/src/main/java/FileAppendChunkedExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/GenerateKeyExample.java b/examples/src/main/java/GenerateKeyExample.java
index 242eb2a63..5f383dcbf 100644
--- a/examples/src/main/java/GenerateKeyExample.java
+++ b/examples/src/main/java/GenerateKeyExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/GenerateKeyWithMnemonicExample.java b/examples/src/main/java/GenerateKeyWithMnemonicExample.java
index 9d99caa76..f99aa8a11 100644
--- a/examples/src/main/java/GenerateKeyWithMnemonicExample.java
+++ b/examples/src/main/java/GenerateKeyWithMnemonicExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/GetAccountBalanceExample.java b/examples/src/main/java/GetAccountBalanceExample.java
index b452e9d45..7f53ea75e 100644
--- a/examples/src/main/java/GetAccountBalanceExample.java
+++ b/examples/src/main/java/GetAccountBalanceExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/GetAccountInfoExample.java b/examples/src/main/java/GetAccountInfoExample.java
index acb6e83b0..bc6b3add0 100644
--- a/examples/src/main/java/GetAccountInfoExample.java
+++ b/examples/src/main/java/GetAccountInfoExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/GetAddressBookExample.java b/examples/src/main/java/GetAddressBookExample.java
index 34a0069a8..7fc36c364 100644
--- a/examples/src/main/java/GetAddressBookExample.java
+++ b/examples/src/main/java/GetAddressBookExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/GetExchangeRatesExample.java b/examples/src/main/java/GetExchangeRatesExample.java
index 27acf76fa..f5604fc0b 100644
--- a/examples/src/main/java/GetExchangeRatesExample.java
+++ b/examples/src/main/java/GetExchangeRatesExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/GetFileContentsExample.java b/examples/src/main/java/GetFileContentsExample.java
index ead5a64be..eb0a6d3bd 100644
--- a/examples/src/main/java/GetFileContentsExample.java
+++ b/examples/src/main/java/GetFileContentsExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/MultiAppTransferExample.java b/examples/src/main/java/MultiAppTransferExample.java
index 3bd32ede4..16052ca13 100644
--- a/examples/src/main/java/MultiAppTransferExample.java
+++ b/examples/src/main/java/MultiAppTransferExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/MultiSigOfflineExample.java b/examples/src/main/java/MultiSigOfflineExample.java
index 184b63507..e5ff0a063 100644
--- a/examples/src/main/java/MultiSigOfflineExample.java
+++ b/examples/src/main/java/MultiSigOfflineExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/NftAddRemoveAllowancesExample.java b/examples/src/main/java/NftAddRemoveAllowancesExample.java
index 383b805d9..73a6c369e 100644
--- a/examples/src/main/java/NftAddRemoveAllowancesExample.java
+++ b/examples/src/main/java/NftAddRemoveAllowancesExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/PrngExample.java b/examples/src/main/java/PrngExample.java
index a974b8722..1b9777a95 100644
--- a/examples/src/main/java/PrngExample.java
+++ b/examples/src/main/java/PrngExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ScheduleExample.java b/examples/src/main/java/ScheduleExample.java
index b9b1c917b..962f18920 100644
--- a/examples/src/main/java/ScheduleExample.java
+++ b/examples/src/main/java/ScheduleExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ScheduleIdenticalTransactionExample.java b/examples/src/main/java/ScheduleIdenticalTransactionExample.java
index 614a8e6e0..90c3f160c 100644
--- a/examples/src/main/java/ScheduleIdenticalTransactionExample.java
+++ b/examples/src/main/java/ScheduleIdenticalTransactionExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ScheduleMultiSigTransactionExample.java b/examples/src/main/java/ScheduleMultiSigTransactionExample.java
index 91115c392..4331c8a45 100644
--- a/examples/src/main/java/ScheduleMultiSigTransactionExample.java
+++ b/examples/src/main/java/ScheduleMultiSigTransactionExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java b/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java
index 921945d9b..06b9ad1ba 100644
--- a/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java
+++ b/examples/src/main/java/ScheduledTransactionMultiSigThresholdExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ScheduledTransferExample.java b/examples/src/main/java/ScheduledTransferExample.java
index e159af46b..2e8a5397b 100644
--- a/examples/src/main/java/ScheduledTransferExample.java
+++ b/examples/src/main/java/ScheduledTransferExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/SignTransactionExample.java b/examples/src/main/java/SignTransactionExample.java
index 51c5454f7..31971ca77 100644
--- a/examples/src/main/java/SignTransactionExample.java
+++ b/examples/src/main/java/SignTransactionExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/StakingExample.java b/examples/src/main/java/StakingExample.java
index 3be248d32..91ae1f5b9 100644
--- a/examples/src/main/java/StakingExample.java
+++ b/examples/src/main/java/StakingExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/StakingWithUpdateExample.java b/examples/src/main/java/StakingWithUpdateExample.java
index ce14b4eea..7058e6343 100644
--- a/examples/src/main/java/StakingWithUpdateExample.java
+++ b/examples/src/main/java/StakingWithUpdateExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/TopicWithAdminKeyExample.java b/examples/src/main/java/TopicWithAdminKeyExample.java
index 7e0e08577..1283a92af 100644
--- a/examples/src/main/java/TopicWithAdminKeyExample.java
+++ b/examples/src/main/java/TopicWithAdminKeyExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/TransferCryptoExample.java b/examples/src/main/java/TransferCryptoExample.java
index f4713fea4..b1088f80d 100644
--- a/examples/src/main/java/TransferCryptoExample.java
+++ b/examples/src/main/java/TransferCryptoExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/TransferTokensExample.java b/examples/src/main/java/TransferTokensExample.java
index 9f773a90b..19ce20e3b 100644
--- a/examples/src/main/java/TransferTokensExample.java
+++ b/examples/src/main/java/TransferTokensExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/UpdateAccountPublicKeyExample.java b/examples/src/main/java/UpdateAccountPublicKeyExample.java
index 01439f41a..307a4d2e2 100644
--- a/examples/src/main/java/UpdateAccountPublicKeyExample.java
+++ b/examples/src/main/java/UpdateAccountPublicKeyExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ValidateChecksumExample.java b/examples/src/main/java/ValidateChecksumExample.java
index c1927c389..f23ccf1cc 100644
--- a/examples/src/main/java/ValidateChecksumExample.java
+++ b/examples/src/main/java/ValidateChecksumExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/examples/src/main/java/ZeroTokenOperationsExample.java b/examples/src/main/java/ZeroTokenOperationsExample.java
index 80bc91eaf..c720b7f96 100644
--- a/examples/src/main/java/ZeroTokenOperationsExample.java
+++ b/examples/src/main/java/ZeroTokenOperationsExample.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/scripts/premade/FeeDataType-0.txt b/scripts/premade/FeeDataType-0.txt
index 0680caf88..1da2856c5 100644
--- a/scripts/premade/FeeDataType-0.txt
+++ b/scripts/premade/FeeDataType-0.txt
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/scripts/premade/FreezeType-0.txt b/scripts/premade/FreezeType-0.txt
index b1ce71cd1..68f32b363 100644
--- a/scripts/premade/FreezeType-0.txt
+++ b/scripts/premade/FreezeType-0.txt
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/scripts/premade/RequestType-0.txt b/scripts/premade/RequestType-0.txt
index 2c5ebcde6..5987a586c 100644
--- a/scripts/premade/RequestType-0.txt
+++ b/scripts/premade/RequestType-0.txt
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/scripts/premade/Status-0.txt b/scripts/premade/Status-0.txt
index 1335c69de..a27728cb1 100644
--- a/scripts/premade/Status-0.txt
+++ b/scripts/premade/Status-0.txt
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/build.gradle b/sdk/build.gradle
index 361bb8403..39f59b0ff 100644
--- a/sdk/build.gradle
+++ b/sdk/build.gradle
@@ -3,7 +3,7 @@ plugins {
id "idea"
id "signing"
id "maven-publish"
- id "com.google.protobuf" version "0.9.3"
+ id "com.google.protobuf" version "0.9.4"
id "com.github.spotbugs" version "5.0.14"
}
@@ -40,17 +40,17 @@ dependencies {
// https://mvnrepository.com/artifact/org.slf4j/slf4j-api
implementation 'org.slf4j:slf4j-api:2.0.7'
- implementation "io.grpc:grpc-core:1.56.1"
+ implementation "io.grpc:grpc-core:1.57.0"
implementation "io.grpc:grpc-stub:1.56.1"
implementation "com.google.code.gson:gson:2.10.1"
implementation 'javax.annotation:javax.annotation-api:1.3.2'
- implementation "com.esaulpaugh:headlong:9.3.0"
+ implementation 'com.esaulpaugh:headlong:9.3.0'
testImplementation "org.assertj:assertj-core:3.24.2"
testImplementation "io.github.json-snapshot:json-snapshot:1.0.17"
- testImplementation "org.junit.jupiter:junit-jupiter-engine:5.9.3"
- testImplementation "org.junit.jupiter:junit-jupiter-params:5.9.3"
+ testImplementation "org.junit.jupiter:junit-jupiter-engine:5.10.0"
+ testImplementation "org.junit.jupiter:junit-jupiter-params:5.10.0"
testRuntimeOnly "org.slf4j:slf4j-simple:2.0.7"
testRuntimeOnly "io.grpc:grpc-netty-shaded:1.56.1"
@@ -63,11 +63,11 @@ dependencies {
// https://github.com/google/protobuf-gradle-plugin
protobuf {
protoc {
- artifact = "com.google.protobuf:protoc:3.23.2"
+ artifact = "com.google.protobuf:protoc:3.23.4"
}
plugins {
grpc {
- artifact = "io.grpc:protoc-gen-grpc-java:1.56.1"
+ artifact = "io.grpc:protoc-gen-grpc-java:1.57.0"
}
}
}
diff --git a/sdk/src/integrationTest/java/AccountIdPopulationIntegrationTest.java b/sdk/src/integrationTest/java/AccountIdPopulationIntegrationTest.java
new file mode 100644
index 000000000..4d1d5eb87
--- /dev/null
+++ b/sdk/src/integrationTest/java/AccountIdPopulationIntegrationTest.java
@@ -0,0 +1,63 @@
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.hedera.hashgraph.sdk.AccountId;
+import com.hedera.hashgraph.sdk.Hbar;
+import com.hedera.hashgraph.sdk.PrivateKey;
+import com.hedera.hashgraph.sdk.TransactionReceiptQuery;
+import com.hedera.hashgraph.sdk.TransferTransaction;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+class AccountIdPopulationIntegrationTest {
+ @Test
+ @DisplayName("Can populate AccountId num from mirror node (using sync method)")
+ void canPopulateAccountIdNumSync() throws Exception {
+ var testEnv = new IntegrationTestEnv(1);
+
+ var privateKey = PrivateKey.generateECDSA();
+ var publicKey = privateKey.getPublicKey();
+
+ var evmAddress = publicKey.toEvmAddress();
+ var evmAddressAccount = AccountId.fromEvmAddress(evmAddress);
+
+ var tx = new TransferTransaction().addHbarTransfer(evmAddressAccount, new Hbar(1))
+ .addHbarTransfer(testEnv.operatorId, new Hbar(-1)).execute(testEnv.client);
+
+ var receipt = new TransactionReceiptQuery().setTransactionId(tx.transactionId).setIncludeChildren(true)
+ .execute(testEnv.client);
+
+ var newAccountId = receipt.children.get(0).accountId;
+
+ var idMirror = AccountId.fromEvmAddress(evmAddress);
+ Thread.sleep(5000);
+ var accountId = idMirror.populateAccountNum(testEnv.client);
+
+ assertThat(newAccountId.num).isEqualTo(accountId.num);
+ }
+
+ @Test
+ @DisplayName("Can populate AccountId num from mirror node (using async method)")
+ void canPopulateAccountIdNumAsync() throws Exception {
+ var testEnv = new IntegrationTestEnv(1);
+
+ var privateKey = PrivateKey.generateECDSA();
+ var publicKey = privateKey.getPublicKey();
+
+ var evmAddress = publicKey.toEvmAddress();
+ var evmAddressAccount = AccountId.fromEvmAddress(evmAddress);
+
+ var tx = new TransferTransaction().addHbarTransfer(evmAddressAccount, new Hbar(1))
+ .addHbarTransfer(testEnv.operatorId, new Hbar(-1)).execute(testEnv.client);
+
+ var receipt = new TransactionReceiptQuery().setTransactionId(tx.transactionId).setIncludeChildren(true)
+ .execute(testEnv.client);
+
+ var newAccountId = receipt.children.get(0).accountId;
+
+ var idMirror = AccountId.fromEvmAddress(evmAddress);
+ Thread.sleep(5000);
+ var accountId = idMirror.populateAccountNumAsync(testEnv.client).get();
+
+ assertThat(newAccountId.num).isEqualTo(accountId.num);
+ }
+}
diff --git a/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java b/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java
index 6258f2b88..228cc1ca8 100644
--- a/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java
+++ b/sdk/src/integrationTest/java/ContractExecuteIntegrationTest.java
@@ -1,3 +1,6 @@
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
+
import com.google.errorprone.annotations.Var;
import com.hedera.hashgraph.sdk.ContractCreateTransaction;
import com.hedera.hashgraph.sdk.ContractDeleteTransaction;
@@ -5,16 +8,13 @@
import com.hedera.hashgraph.sdk.ContractFunctionParameters;
import com.hedera.hashgraph.sdk.FileCreateTransaction;
import com.hedera.hashgraph.sdk.FileDeleteTransaction;
+import com.hedera.hashgraph.sdk.PrecheckStatusException;
import com.hedera.hashgraph.sdk.ReceiptStatusException;
import com.hedera.hashgraph.sdk.Status;
+import java.util.Objects;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
-import java.util.Objects;
-
-import static org.assertj.core.api.Assertions.assertThat;
-import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
-
public class ContractExecuteIntegrationTest {
private static final String SMART_CONTRACT_BYTECODE = "608060405234801561001057600080fd5b506040516104d73803806104d78339818101604052602081101561003357600080fd5b810190808051604051939291908464010000000082111561005357600080fd5b90830190602082018581111561006857600080fd5b825164010000000081118282018810171561008257600080fd5b82525081516020918201929091019080838360005b838110156100af578181015183820152602001610097565b50505050905090810190601f1680156100dc5780820380516001836020036101000a031916815260200191505b506040525050600080546001600160a01b0319163317905550805161010890600190602084019061010f565b50506101aa565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061015057805160ff191683800117855561017d565b8280016001018555821561017d579182015b8281111561017d578251825591602001919060010190610162565b5061018992915061018d565b5090565b6101a791905b808211156101895760008155600101610193565b90565b61031e806101b96000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c8063368b87721461004657806341c0e1b5146100ee578063ce6d41de146100f6575b600080fd5b6100ec6004803603602081101561005c57600080fd5b81019060208101813564010000000081111561007757600080fd5b82018360208201111561008957600080fd5b803590602001918460018302840111640100000000831117156100ab57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610173945050505050565b005b6100ec6101a2565b6100fe6101ba565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610138578181015183820152602001610120565b50505050905090810190601f1680156101655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000546001600160a01b0316331461018a5761019f565b805161019d906001906020840190610250565b505b50565b6000546001600160a01b03163314156101b85733ff5b565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156102455780601f1061021a57610100808354040283529160200191610245565b820191906000526020600020905b81548152906001019060200180831161022857829003601f168201915b505050505090505b90565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061029157805160ff19168380011785556102be565b828001600101855582156102be579182015b828111156102be5782518255916020019190600101906102a3565b506102ca9291506102ce565b5090565b61024d91905b808211156102ca57600081556001016102d456fea264697066735822122084964d4c3f6bc912a9d20e14e449721012d625aa3c8a12de41ae5519752fc89064736f6c63430006000033";
@@ -149,7 +149,7 @@ void cannotExecuteContractWhenGasIsNotSet() throws Exception {
.contractId
);
- assertThatExceptionOfType(ReceiptStatusException.class).isThrownBy(() -> {
+ assertThatExceptionOfType(PrecheckStatusException.class).isThrownBy(() -> {
new ContractExecuteTransaction()
.setContractId(contractId)
.setFunction("setMessage", new ContractFunctionParameters().addString("new message"))
diff --git a/sdk/src/integrationTest/java/ContractFunctionParametersIntegrationTest.java b/sdk/src/integrationTest/java/ContractFunctionParametersIntegrationTest.java
new file mode 100644
index 000000000..88feeb82c
--- /dev/null
+++ b/sdk/src/integrationTest/java/ContractFunctionParametersIntegrationTest.java
@@ -0,0 +1,2801 @@
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.esaulpaugh.headlong.abi.Address;
+import com.google.errorprone.annotations.Var;
+import com.hedera.hashgraph.sdk.ContractCallQuery;
+import com.hedera.hashgraph.sdk.ContractCreateTransaction;
+import com.hedera.hashgraph.sdk.ContractDeleteTransaction;
+import com.hedera.hashgraph.sdk.ContractFunctionParameters;
+import com.hedera.hashgraph.sdk.ContractId;
+import com.hedera.hashgraph.sdk.FileAppendTransaction;
+import com.hedera.hashgraph.sdk.FileCreateTransaction;
+import com.hedera.hashgraph.sdk.FileDeleteTransaction;
+import com.hedera.hashgraph.sdk.FileId;
+import com.hedera.hashgraph.sdk.Hbar;
+import java.math.BigInteger;
+import java.util.Arrays;
+import java.util.Objects;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class ContractFunctionParametersIntegrationTest {
+ private static final String SMART_CONTRACT_BYTECODE = "60806040523480156200001157600080fd5b5060408051608081018252600491810191825263082d8caf60e31b6060820152818152600160208201529060009081906200004d908262000106565b5060208201518160010155905050620001d2565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200008c57607f821691505b602082108103620000ad57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200010157600081815260208120601f850160051c81016020861015620000dc5750805b601f850160051c820191505b81811015620000fd57828155600101620000e8565b5050505b505050565b81516001600160401b0381111562000122576200012262000061565b6200013a8162000133845462000077565b84620000b3565b602080601f831160018114620001725760008415620001595750858301515b600019600386901b1c1916600185901b178555620000fd565b600085815260208120601f198616915b82811015620001a35788860151825594840194600190910190840162000182565b5085821015620001c25787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b615dfe80620001e26000396000f3fe608060405234801561001057600080fd5b50600436106108355760003560e01c80637f8082f711610437578063c5882dbb11610236578063e2a345291161013b578063f6e877f4116100c3578063fafc3b9911610092578063fafc3b9914611857578063fba1bc4c14611872578063febe099714611887578063ff5f54dd146118a2578063ffb80501146118bd57600080fd5b8063f6e877f4146117d9578063f8293f6e146117ff578063f914c4d214611821578063f962326a1461183c57600080fd5b8063eceda56a1161010a578063eceda56a1461174c578063ef65066114611767578063f0ebb92214611782578063f4e490f51461179d578063f680c24a146117be57600080fd5b8063e2a34529146116d8578063e4b90944146116f3578063e713cda81461170e578063ea945d301461173157600080fd5b8063d79d4d40116101be578063e05e91e01161018d578063e05e91e014611630578063e066de5014611656578063e0cddc551461167c578063e0f53e2414611697578063e1dbb318146116bd57600080fd5b8063d79d4d4014611592578063dade0c0b146115b8578063dbb04ed9146115da578063de9fb4841461160357600080fd5b8063cbd2e6a511610205578063cbd2e6a514611511578063cdb9e4e814611536578063cf7c3dfc1461155c578063d1b10ad714610ada578063d33c57501461157757600080fd5b8063c5882dbb1461148b578063c6c18a1c146114a6578063c7d8b87e146114d0578063cb47cdae146114f657600080fd5b8063a1bda1221161033c578063b5abe7df116102c4578063ba945bdb11610293578063ba945bdb146113dc578063bb6b524314611402578063bd90536a14611428578063be63d0b814611450578063c503772d1461146b57600080fd5b8063b5abe7df14611359578063b834bfe914611374578063b8da8d1614611395578063b989c7ee146113bb57600080fd5b8063aa016e681161030b578063aa016e68146112dc578063aa80ca2e14610c6b578063b2325c35146112f7578063b2db404a14611312578063b4e3e7b11461133357600080fd5b8063a1bda12214611259578063a401d60d1461127a578063a57ebf10146112a0578063a75761f1146112bb57600080fd5b80638f2805e0116103bf57806394cd7c801161038e57806394cd7c80146111b557806398508ba3146111d65780639b1794ae146111f7578063a08b9f671461121d578063a19962341461123e57600080fd5b80638f2805e0146111435780638ff4cfee1461115e578063909c5b2414611179578063923f5edf1461119457600080fd5b806386aba5a71161040657806386aba5a7146110ab578063881c8fb7146110c657806388b1dd37146110ec57806388b7e6f5146111075780638d7f60151461112857600080fd5b80637f8082f714610c6b578063817b24541461107557806381dbe13e14611090578063827147ce1461099a57600080fd5b806338fa6658116106435780635a8fd3b51161054857806370a5cb81116104d05780637ba844771161049f5780637ba8447714610fe25780637d0dc26214610ffd5780637d906c551461101e5780637e281630146110395780637ec32d841461105457600080fd5b806370a5cb8114610f5a57806372a06b4d14610f80578063737b801614610fa1578063796a27ea14610fbc57600080fd5b806369cbe0561161051757806369cbe05614610ecd5780636a54715c14610ee85780636a75c12f14610f095780636a9929db14610f245780636ee8f39c14610f3f57600080fd5b80635a8fd3b514610e4f578063628bc3ef14610e6a57806364e008c114610e8b57806368ef446614610eac57600080fd5b80634bbc9a67116105cb578063545e21131161059a578063545e211314610dd157806355f232a414610dfe57806357890ba914610e1957806357d9c08b14610e3457806359adb2df14610ada57600080fd5b80634bbc9a6714610d655780634e96247314610d80578063501297c214610d9b57806350370d8514610db657600080fd5b80633f396e67116106125780633f396e6714610ce3578063407b899b14610d0b578063435a33a814610d2c57806344e7b03714610af657806348d848d014610d4757600080fd5b806338fa665814610c6b5780633a73007714610c865780633b45e6e014610ca15780633e1a277114610cc257600080fd5b80631e9aa70f116107495780632ef16e8e116106d15780633135d681116106a05780633135d68114610beb57806333520ec314610c0657806333edb89614610c275780633729a2da14610c42578063382d087314610c5057600080fd5b80632ef16e8e14610b6d5780632f47a40d14610b8e5780632f6c1bb414610baf578063309f9ac914610bd057600080fd5b806322937ea91161071857806322937ea914610ada5780632421101f14610af657806324c3c3d214610b1c57806328a30eb714610b375780632a3082ce14610b5257600080fd5b80631e9aa70f14610a6e578063203ae83a14610a8957806321d1730b14610aa45780632234ea0214610abf57600080fd5b8063118b8415116107cc57806312b932a71161079b57806312b932a7146109db57806312cd95a1146109f657806315832ae414610a17578063189cea8e14610a325780631d11456214610a5357600080fd5b8063118b84151461095857806311ec6c9014610979578063126bc8151461099a578063129ed5da146109b557600080fd5b806306ac6fe11161080857806306ac6fe1146108ca57806308123e09146108f05780630a958dc81461091657806310d545531461093757600080fd5b8063017fa10b1461083a578063021d88ab14610868578063037454301461088e5780630577a846146108af575b600080fd5b61084b610848366004611a34565b90565b6040516001600160801b0390911681526020015b60405180910390f35b610876610848366004611a6d565b6040516001600160601b03909116815260200161085f565b61089c610848366004611a9a565b604051600c9190910b815260200161085f565b6108bd610848366004611b35565b60405161085f9190611bd1565b6108d8610848366004611c35565b6040516001600160781b03909116815260200161085f565b6108fe610848366004611c67565b60405166ffffffffffffff909116815260200161085f565b610924610848366004611c94565b60405160049190910b815260200161085f565b610945610848366004611cc1565b60405160119190910b815260200161085f565b610966610848366004611cee565b604051601e9190910b815260200161085f565b610987610848366004611d1b565b60405160139190910b815260200161085f565b6109a8610848366004611da5565b60405161085f9190611e27565b6109c3610848366004611e51565b6040516001600160981b03909116815260200161085f565b6109e9610848366004611e7e565b60405161085f9190611f0a565b610a04610848366004611f57565b60405160129190910b815260200161085f565b610a25610848366004611f83565b60405161085f919061200f565b610a4061084836600461205c565b60405160169190910b815260200161085f565b610a6161084836600461208f565b60405161085f919061211d565b610a7c610848366004612170565b60405161085f91906121fc565b610a97610848366004612237565b60405161085f91906122c3565b610ab261084836600461231b565b60405161085f91906123a7565b610acd6108483660046123fa565b60405161085f9190612486565b610ae86108483660046124c1565b60405190815260200161085f565b610b046108483660046124da565b6040516001600160a01b03909116815260200161085f565b610b2a61084836600461250e565b60405161085f919061259a565b610b456108483660046125db565b60405161085f9190612667565b610b606108483660046126b4565b60405161085f9190612740565b610b7b61084836600461278d565b604051601d9190910b815260200161085f565b610b9c6108483660046127a8565b604051600a9190910b815260200161085f565b610bbd6108483660046127d5565b60405160199190910b815260200161085f565b610bde610848366004612807565b60405161085f9190612893565b610bf96108483660046128eb565b60405161085f9190612977565b610c146108483660046129ca565b604051601a9190910b815260200161085f565b610c356108483660046129f7565b60405161085f9190612a83565b610a61610848366004612abe565b610c5e610848366004612b5e565b60405161085f9190612bea565b610c79610848366004612c25565b60405161085f9190612caa565b610c94610848366004612cfd565b60405161085f9190612d89565b610caf610848366004612de0565b60405160109190910b815260200161085f565b610cd0610848366004612e0d565b604051601c9190910b815260200161085f565b610cf1610848366004612e41565b60405168ffffffffffffffffff909116815260200161085f565b610d19610848366004612e6e565b60405160079190910b815260200161085f565b610d3a610848366004612e89565b60405161085f9190612f15565b610d55610848366004612f60565b604051901515815260200161085f565b610d73610848366004612f7b565b60405161085f9190613007565b610d8e610848366004613058565b60405161085f91906130e4565b610da9610848366004613137565b60405161085f91906131c3565b610dc4610848366004613215565b60405161085f91906132a1565b610de4610ddf3660046132f4565b6118e1565b60408051600093840b81529190920b60208201520161085f565b610e0c61084836600461330f565b60405161085f919061339b565b610e276108483660046133d6565b60405161085f9190613462565b610e426108483660046134b3565b60405161085f919061353f565b610e5d610848366004613593565b60405161085f919061361f565b610e7861084836600461366f565b60405160099190910b815260200161085f565b610e9961084836600461369c565b60405160179190910b815260200161085f565b610eba6108483660046136b7565b60405160149190910b815260200161085f565b610edb6108483660046136e4565b60405161085f9190613770565b610ef66108483660046137ab565b60405160069190910b815260200161085f565b610f176108483660046137d8565b60405161085f9190613864565b610f3261084836600461389f565b60405161085f919061392b565b610f4d610848366004613980565b60405161085f9190613a0c565b610f68610848366004613a67565b6040516001600160681b03909116815260200161085f565b610f8e6108483660046132f4565b60405160009190910b815260200161085f565b610faf610848366004613a99565b60405161085f9190613b25565b610fca610848366004613b66565b6040516001600160d81b03909116815260200161085f565b610ff0610848366004613b96565b60405161085f9190613c22565b61100b610848366004613c73565b604051601b9190910b815260200161085f565b61102c610848366004613ca1565b60405161085f9190613d2d565b611047610848366004613d7c565b60405161085f9190613e08565b611062610848366004613e56565b60405160029190910b815260200161085f565b611083610848366004613e88565b60405161085f9190613f14565b61109e610848366004613f55565b60405161085f9190614005565b6110b9610848366004614067565b60405161085f91906140f3565b6110d461084836600461414b565b6040516001600160b01b03909116815260200161085f565b6110fa610848366004614166565b60405161085f91906141f2565b61111561084836600461422d565b604051600f9190910b815260200161085f565b611136610848366004614248565b60405161085f91906142d4565b611151610848366004614326565b60405161085f91906143b2565b61116c6108483660046143f3565b60405161085f919061447f565b6111876108483660046144ba565b60405161085f919061455d565b6111a26108483660046145b2565b60405160159190910b815260200161085f565b6111c36108483660046145df565b60405160189190910b815260200161085f565b6111e46108483660046145fa565b604051600d9190910b815260200161085f565b61120561084836600461462c565b6040516001600160b81b03909116815260200161085f565b61122b610848366004614647565b604051600b9190910b815260200161085f565b61124c610848366004614662565b60405161085f91906146ee565b61126761084836600461472f565b60405160019190910b815260200161085f565b61128861084836600461474a565b6040516001600160f01b03909116815260200161085f565b6112ae610848366004614765565b60405161085f91906147f1565b6112c961084836600461482c565b60405161ffff909116815260200161085f565b6112ea610848366004614847565b60405161085f91906148d3565b611305610848366004614928565b60405161085f91906149b4565b611320610848366004614a01565b60405160059190910b815260200161085f565b611341610848366004614a1c565b6040516001600160701b03909116815260200161085f565b611367610848366004614a37565b60405161085f9190614ac3565b611382610848366004614b04565b604051600e9190910b815260200161085f565b6113a3610848366004614b1f565b6040516001600160a81b03909116815260200161085f565b6113c9610848366004614b3a565b60405160039190910b815260200161085f565b6113ea610848366004614b55565b6040516001600160881b03909116815260200161085f565b611410610848366004614b70565b6040516001600160c81b03909116815260200161085f565b61143b6114363660046124c1565b6118f9565b6040805192835260208301919091520161085f565b61145e610848366004614b8b565b60405161085f9190614c17565b611479610848366004614c52565b60405160ff909116815260200161085f565b611499610848366004614c6d565b60405161085f9190614cf9565b6114b4610848366004614d34565b6040516affffffffffffffffffffff909116815260200161085f565b6114de610848366004614d4f565b6040516001600160f81b03909116815260200161085f565b611504610848366004614d6a565b60405161085f9190614df6565b61151f610848366004614e31565b60405165ffffffffffff909116815260200161085f565b611544610848366004614e63565b6040516001600160e01b03909116815260200161085f565b61156a610848366004614e7e565b60405161085f9190614f0a565b611585610848366004614f45565b60405161085f9190614fd1565b6115a0610848366004615029565b6040516001600160d01b03909116815260200161085f565b6115cb6115c6366004615044565b611908565b60405161085f9392919061505f565b6115e8610848366004615096565b60405169ffffffffffffffffffff909116815260200161085f565b611616611611366004611c94565b611946565b60408051600493840b81529190920b60208201520161085f565b61163e6108483660046150b1565b6040516001600160401b03909116815260200161085f565b6116646108483660046150e3565b6040516001600160e81b03909116815260200161085f565b61168a6108483660046150fe565b60405161085f919061518a565b6116a56108483660046151c5565b6040516001600160c01b03909116815260200161085f565b6116cb6108483660046151f2565b60405161085f919061527e565b6116e66108483660046152b9565b60405161085f9190615345565b61170161084836600461538d565b60405161085f9190615419565b61171c610848366004615044565b60405163ffffffff909116815260200161085f565b61173f610848366004615454565b60405161085f91906154e0565b61175a61084836600461551b565b60405161085f91906155a7565b6117756108483660046155e2565b60405161085f919061566e565b6117906108483660046156af565b60405161085f919061573b565b6117ab610848366004615776565b60405160089190910b815260200161085f565b6117cc610848366004615791565b60405161085f919061581d565b6117e7610848366004615858565b6040516001600160901b03909116815260200161085f565b61180d610848366004615873565b60405162ffffff909116815260200161085f565b61182f61084836600461588e565b60405161085f919061591a565b61184a61084836600461595b565b60405161085f91906159e7565b611865610848366004615a28565b60405161085f9190615ab4565b61187a611955565b60405161085f9190615af5565b611895610848366004615b27565b60405161085f9190615bb3565b6118b0610848366004615bf4565b60405161085f9190615c80565b6118cb610848366004615cc1565b60405164ffffffffff909116815260200161085f565b600080826118f0816014615cf2565b91509150915091565b600080826118f0816001615d19565b600080606083611919600182615d41565b6040805180820190915260028152614f4b60f01b602082015291945063ffffffff16925090509193909250565b600080826118f0816001615d65565b604080518082019091526060815260006020820152600060405180604001604052908160008201805461198790615d8e565b80601f01602080910402602001604051908101604052809291908181526020018280546119b390615d8e565b8015611a005780601f106119d557610100808354040283529160200191611a00565b820191906000526020600020905b8154815290600101906020018083116119e357829003601f168201915b50505050508152602001600182015481525050905090565b80356001600160801b0381168114611a2f57600080fd5b919050565b600060208284031215611a4657600080fd5b611a4f82611a18565b9392505050565b80356001600160601b0381168114611a2f57600080fd5b600060208284031215611a7f57600080fd5b611a4f82611a56565b8035600c81900b8114611a2f57600080fd5b600060208284031215611aac57600080fd5b611a4f82611a88565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715611af357611af3611ab5565b604052919050565b60006001600160401b03821115611b1457611b14611ab5565b5060051b60200190565b80356001600160f01b0381168114611a2f57600080fd5b60006020808385031215611b4857600080fd5b82356001600160401b03811115611b5e57600080fd5b8301601f81018513611b6f57600080fd5b8035611b82611b7d82611afb565b611acb565b81815260059190911b82018301908381019087831115611ba157600080fd5b928401925b82841015611bc657611bb784611b1e565b82529284019290840190611ba6565b979650505050505050565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160f01b031683529284019291840191600101611bed565b50909695505050505050565b80356001600160781b0381168114611a2f57600080fd5b600060208284031215611c4757600080fd5b611a4f82611c1e565b803566ffffffffffffff81168114611a2f57600080fd5b600060208284031215611c7957600080fd5b611a4f82611c50565b8035600481900b8114611a2f57600080fd5b600060208284031215611ca657600080fd5b611a4f82611c82565b8035601181900b8114611a2f57600080fd5b600060208284031215611cd357600080fd5b611a4f82611caf565b8035601e81900b8114611a2f57600080fd5b600060208284031215611d0057600080fd5b611a4f82611cdc565b8035601381900b8114611a2f57600080fd5b600060208284031215611d2d57600080fd5b611a4f82611d09565b600082601f830112611d4757600080fd5b81356001600160401b03811115611d6057611d60611ab5565b611d73601f8201601f1916602001611acb565b818152846020838601011115611d8857600080fd5b816020850160208301376000918101602001919091529392505050565b600060208284031215611db757600080fd5b81356001600160401b03811115611dcd57600080fd5b611dd984828501611d36565b949350505050565b6000815180845260005b81811015611e0757602081850181015186830182015201611deb565b506000602082860101526020601f19601f83011685010191505092915050565b602081526000611a4f6020830184611de1565b80356001600160981b0381168114611a2f57600080fd5b600060208284031215611e6357600080fd5b611a4f82611e3a565b8035600381900b8114611a2f57600080fd5b60006020808385031215611e9157600080fd5b82356001600160401b03811115611ea757600080fd5b8301601f81018513611eb857600080fd5b8035611ec6611b7d82611afb565b81815260059190911b82018301908381019087831115611ee557600080fd5b928401925b82841015611bc657611efb84611e6c565b82529284019290840190611eea565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160030b83529284019291840191600101611f26565b8035601281900b8114611a2f57600080fd5b600060208284031215611f6957600080fd5b611a4f82611f45565b803560ff81168114611a2f57600080fd5b60006020808385031215611f9657600080fd5b82356001600160401b03811115611fac57600080fd5b8301601f81018513611fbd57600080fd5b8035611fcb611b7d82611afb565b81815260059190911b82018301908381019087831115611fea57600080fd5b928401925b82841015611bc65761200084611f72565b82529284019290840190611fef565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160ff168352928401929184019160010161202b565b8035601681900b8114611a2f57600080fd5b60006020828403121561206e57600080fd5b611a4f8261204a565b6001600160a01b038116811461208c57600080fd5b50565b600060208083850312156120a257600080fd5b82356001600160401b038111156120b857600080fd5b8301601f810185136120c957600080fd5b80356120d7611b7d82611afb565b81815260059190911b820183019083810190878311156120f657600080fd5b928401925b82841015611bc657833561210e81612077565b825292840192908401906120fb565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160a01b031683529284019291840191600101612139565b8035601481900b8114611a2f57600080fd5b6000602080838503121561218357600080fd5b82356001600160401b0381111561219957600080fd5b8301601f810185136121aa57600080fd5b80356121b8611b7d82611afb565b81815260059190911b820183019083810190878311156121d757600080fd5b928401925b82841015611bc6576121ed8461215e565b825292840192908401906121dc565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160140b83529284019291840191600101612218565b6000602080838503121561224a57600080fd5b82356001600160401b0381111561226057600080fd5b8301601f8101851361227157600080fd5b803561227f611b7d82611afb565b81815260059190911b8201830190838101908783111561229e57600080fd5b928401925b82841015611bc6576122b484611c50565b825292840192908401906122a3565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835166ffffffffffffff16835292840192918401916001016122df565b80356001600160f81b0381168114611a2f57600080fd5b6000602080838503121561232e57600080fd5b82356001600160401b0381111561234457600080fd5b8301601f8101851361235557600080fd5b8035612363611b7d82611afb565b81815260059190911b8201830190838101908783111561238257600080fd5b928401925b82841015611bc65761239884612304565b82529284019290840190612387565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160f81b0316835292840192918401916001016123c3565b8035600a81900b8114611a2f57600080fd5b6000602080838503121561240d57600080fd5b82356001600160401b0381111561242357600080fd5b8301601f8101851361243457600080fd5b8035612442611b7d82611afb565b81815260059190911b8201830190838101908783111561246157600080fd5b928401925b82841015611bc657612477846123e8565b82529284019290840190612466565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600a0b835292840192918401916001016124a2565b6000602082840312156124d357600080fd5b5035919050565b6000602082840312156124ec57600080fd5b8135611a4f81612077565b80356001600160c81b0381168114611a2f57600080fd5b6000602080838503121561252157600080fd5b82356001600160401b0381111561253757600080fd5b8301601f8101851361254857600080fd5b8035612556611b7d82611afb565b81815260059190911b8201830190838101908783111561257557600080fd5b928401925b82841015611bc65761258b846124f7565b8252928401929084019061257a565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160c81b0316835292840192918401916001016125b6565b600060208083850312156125ee57600080fd5b82356001600160401b0381111561260457600080fd5b8301601f8101851361261557600080fd5b8035612623611b7d82611afb565b81815260059190911b8201830190838101908783111561264257600080fd5b928401925b82841015611bc65761265884611d09565b82529284019290840190612647565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160130b83529284019291840191600101612683565b8035600b81900b8114611a2f57600080fd5b600060208083850312156126c757600080fd5b82356001600160401b038111156126dd57600080fd5b8301601f810185136126ee57600080fd5b80356126fc611b7d82611afb565b81815260059190911b8201830190838101908783111561271b57600080fd5b928401925b82841015611bc657612731846126a2565b82529284019290840190612720565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600b0b8352928401929184019160010161275c565b8035601d81900b8114611a2f57600080fd5b60006020828403121561279f57600080fd5b611a4f8261277b565b6000602082840312156127ba57600080fd5b611a4f826123e8565b8035601981900b8114611a2f57600080fd5b6000602082840312156127e757600080fd5b611a4f826127c3565b80356001600160c01b0381168114611a2f57600080fd5b6000602080838503121561281a57600080fd5b82356001600160401b0381111561283057600080fd5b8301601f8101851361284157600080fd5b803561284f611b7d82611afb565b81815260059190911b8201830190838101908783111561286e57600080fd5b928401925b82841015611bc657612884846127f0565b82529284019290840190612873565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160c01b0316835292840192918401916001016128af565b80356001600160401b0381168114611a2f57600080fd5b600060208083850312156128fe57600080fd5b82356001600160401b0381111561291457600080fd5b8301601f8101851361292557600080fd5b8035612933611b7d82611afb565b81815260059190911b8201830190838101908783111561295257600080fd5b928401925b82841015611bc657612968846128d4565b82529284019290840190612957565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160401b031683529284019291840191600101612993565b8035601a81900b8114611a2f57600080fd5b6000602082840312156129dc57600080fd5b611a4f826129b8565b8035600d81900b8114611a2f57600080fd5b60006020808385031215612a0a57600080fd5b82356001600160401b03811115612a2057600080fd5b8301601f81018513612a3157600080fd5b8035612a3f611b7d82611afb565b81815260059190911b82018301908381019087831115612a5e57600080fd5b928401925b82841015611bc657612a74846129e5565b82529284019290840190612a63565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600d0b83529284019291840191600101612a9f565b60006020808385031215612ad157600080fd5b82356001600160401b03811115612ae757600080fd5b8301601f81018513612af857600080fd5b8035612b06611b7d82611afb565b81815260059190911b82018301908381019087831115612b2557600080fd5b928401925b82841015611bc6578335612b3d81612077565b82529284019290840190612b2a565b8035600181900b8114611a2f57600080fd5b60006020808385031215612b7157600080fd5b82356001600160401b03811115612b8757600080fd5b8301601f81018513612b9857600080fd5b8035612ba6611b7d82611afb565b81815260059190911b82018301908381019087831115612bc557600080fd5b928401925b82841015611bc657612bdb84612b4c565b82529284019290840190612bca565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600190810b8452938501939285019201612c06565b60006020808385031215612c3857600080fd5b82356001600160401b03811115612c4e57600080fd5b8301601f81018513612c5f57600080fd5b8035612c6d611b7d82611afb565b81815260059190911b82018301908381019087831115612c8c57600080fd5b928401925b82841015611bc657833582529284019290840190612c91565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835183529284019291840191600101612cc6565b80356affffffffffffffffffffff81168114611a2f57600080fd5b60006020808385031215612d1057600080fd5b82356001600160401b03811115612d2657600080fd5b8301601f81018513612d3757600080fd5b8035612d45611b7d82611afb565b81815260059190911b82018301908381019087831115612d6457600080fd5b928401925b82841015611bc657612d7a84612ce2565b82529284019290840190612d69565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516affffffffffffffffffffff1683529284019291840191600101612da5565b8035601081900b8114611a2f57600080fd5b600060208284031215612df257600080fd5b611a4f82612dce565b8035601c81900b8114611a2f57600080fd5b600060208284031215612e1f57600080fd5b611a4f82612dfb565b803568ffffffffffffffffff81168114611a2f57600080fd5b600060208284031215612e5357600080fd5b611a4f82612e28565b8035600781900b8114611a2f57600080fd5b600060208284031215612e8057600080fd5b611a4f82612e5c565b60006020808385031215612e9c57600080fd5b82356001600160401b03811115612eb257600080fd5b8301601f81018513612ec357600080fd5b8035612ed1611b7d82611afb565b81815260059190911b82018301908381019087831115612ef057600080fd5b928401925b82841015611bc657612f06846129b8565b82529284019290840190612ef5565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601a0b83529284019291840191600101612f31565b80358015158114611a2f57600080fd5b600060208284031215612f7257600080fd5b611a4f82612f50565b60006020808385031215612f8e57600080fd5b82356001600160401b03811115612fa457600080fd5b8301601f81018513612fb557600080fd5b8035612fc3611b7d82611afb565b81815260059190911b82018301908381019087831115612fe257600080fd5b928401925b82841015611bc657612ff884612f50565b82529284019290840190612fe7565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351151583529284019291840191600101613023565b80356001600160d81b0381168114611a2f57600080fd5b6000602080838503121561306b57600080fd5b82356001600160401b0381111561308157600080fd5b8301601f8101851361309257600080fd5b80356130a0611b7d82611afb565b81815260059190911b820183019083810190878311156130bf57600080fd5b928401925b82841015611bc6576130d584613041565b825292840192908401906130c4565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160d81b031683529284019291840191600101613100565b8035601581900b8114611a2f57600080fd5b6000602080838503121561314a57600080fd5b82356001600160401b0381111561316057600080fd5b8301601f8101851361317157600080fd5b803561317f611b7d82611afb565b81815260059190911b8201830190838101908783111561319e57600080fd5b928401925b82841015611bc6576131b484613125565b825292840192908401906131a3565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160150b835292840192918401916001016131df565b80356001600160a81b0381168114611a2f57600080fd5b6000602080838503121561322857600080fd5b82356001600160401b0381111561323e57600080fd5b8301601f8101851361324f57600080fd5b803561325d611b7d82611afb565b81815260059190911b8201830190838101908783111561327c57600080fd5b928401925b82841015611bc657613292846131fe565b82529284019290840190613281565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160a81b0316835292840192918401916001016132bd565b8035600081900b8114611a2f57600080fd5b60006020828403121561330657600080fd5b611a4f826132e2565b6000602080838503121561332257600080fd5b82356001600160401b0381111561333857600080fd5b8301601f8101851361334957600080fd5b8035613357611b7d82611afb565b81815260059190911b8201830190838101908783111561337657600080fd5b928401925b82841015611bc65761338c84611caf565b8252928401929084019061337b565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160110b835292840192918401916001016133b7565b600060208083850312156133e957600080fd5b82356001600160401b038111156133ff57600080fd5b8301601f8101851361341057600080fd5b803561341e611b7d82611afb565b81815260059190911b8201830190838101908783111561343d57600080fd5b928401925b82841015611bc6576134538461204a565b82529284019290840190613442565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160160b8352928401929184019160010161347e565b803565ffffffffffff81168114611a2f57600080fd5b600060208083850312156134c657600080fd5b82356001600160401b038111156134dc57600080fd5b8301601f810185136134ed57600080fd5b80356134fb611b7d82611afb565b81815260059190911b8201830190838101908783111561351a57600080fd5b928401925b82841015611bc6576135308461349d565b8252928401929084019061351f565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835165ffffffffffff168352928401929184019160010161355b565b803563ffffffff81168114611a2f57600080fd5b600060208083850312156135a657600080fd5b82356001600160401b038111156135bc57600080fd5b8301601f810185136135cd57600080fd5b80356135db611b7d82611afb565b81815260059190911b820183019083810190878311156135fa57600080fd5b928401925b82841015611bc6576136108461357f565b825292840192908401906135ff565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835163ffffffff168352928401929184019160010161363b565b8035600981900b8114611a2f57600080fd5b60006020828403121561368157600080fd5b611a4f8261365d565b8035601781900b8114611a2f57600080fd5b6000602082840312156136ae57600080fd5b611a4f8261368a565b6000602082840312156136c957600080fd5b611a4f8261215e565b8035600681900b8114611a2f57600080fd5b600060208083850312156136f757600080fd5b82356001600160401b0381111561370d57600080fd5b8301601f8101851361371e57600080fd5b803561372c611b7d82611afb565b81815260059190911b8201830190838101908783111561374b57600080fd5b928401925b82841015611bc657613761846136d2565b82529284019290840190613750565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160060b8352928401929184019160010161378c565b6000602082840312156137bd57600080fd5b611a4f826136d2565b8035600f81900b8114611a2f57600080fd5b600060208083850312156137eb57600080fd5b82356001600160401b0381111561380157600080fd5b8301601f8101851361381257600080fd5b8035613820611b7d82611afb565b81815260059190911b8201830190838101908783111561383f57600080fd5b928401925b82841015611bc657613855846137c6565b82529284019290840190613844565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600f0b83529284019291840191600101613880565b600060208083850312156138b257600080fd5b82356001600160401b038111156138c857600080fd5b8301601f810185136138d957600080fd5b80356138e7611b7d82611afb565b81815260059190911b8201830190838101908783111561390657600080fd5b928401925b82841015611bc65761391c84611cdc565b8252928401929084019061390b565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601e0b83529284019291840191600101613947565b803569ffffffffffffffffffff81168114611a2f57600080fd5b6000602080838503121561399357600080fd5b82356001600160401b038111156139a957600080fd5b8301601f810185136139ba57600080fd5b80356139c8611b7d82611afb565b81815260059190911b820183019083810190878311156139e757600080fd5b928401925b82841015611bc6576139fd84613966565b825292840192908401906139ec565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835169ffffffffffffffffffff1683529284019291840191600101613a28565b80356001600160681b0381168114611a2f57600080fd5b600060208284031215613a7957600080fd5b611a4f82613a50565b80356001600160701b0381168114611a2f57600080fd5b60006020808385031215613aac57600080fd5b82356001600160401b03811115613ac257600080fd5b8301601f81018513613ad357600080fd5b8035613ae1611b7d82611afb565b81815260059190911b82018301908381019087831115613b0057600080fd5b928401925b82841015611bc657613b1684613a82565b82529284019290840190613b05565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160701b031683529284019291840191600101613b41565b600060208284031215613b7857600080fd5b611a4f82613041565b803564ffffffffff81168114611a2f57600080fd5b60006020808385031215613ba957600080fd5b82356001600160401b03811115613bbf57600080fd5b8301601f81018513613bd057600080fd5b8035613bde611b7d82611afb565b81815260059190911b82018301908381019087831115613bfd57600080fd5b928401925b82841015611bc657613c1384613b81565b82529284019290840190613c02565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835164ffffffffff1683529284019291840191600101613c3e565b8035601b81900b8114611a2f57600080fd5b600060208284031215613c8557600080fd5b611a4f82613c61565b803562ffffff81168114611a2f57600080fd5b60006020808385031215613cb457600080fd5b82356001600160401b03811115613cca57600080fd5b8301601f81018513613cdb57600080fd5b8035613ce9611b7d82611afb565b81815260059190911b82018301908381019087831115613d0857600080fd5b928401925b82841015611bc657613d1e84613c8e565b82529284019290840190613d0d565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835162ffffff1683529284019291840191600101613d49565b803561ffff81168114611a2f57600080fd5b60006020808385031215613d8f57600080fd5b82356001600160401b03811115613da557600080fd5b8301601f81018513613db657600080fd5b8035613dc4611b7d82611afb565b81815260059190911b82018301908381019087831115613de357600080fd5b928401925b82841015611bc657613df984613d6a565b82529284019290840190613de8565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835161ffff1683529284019291840191600101613e24565b8035600281900b8114611a2f57600080fd5b600060208284031215613e6857600080fd5b611a4f82613e44565b80356001600160901b0381168114611a2f57600080fd5b60006020808385031215613e9b57600080fd5b82356001600160401b03811115613eb157600080fd5b8301601f81018513613ec257600080fd5b8035613ed0611b7d82611afb565b81815260059190911b82018301908381019087831115613eef57600080fd5b928401925b82841015611bc657613f0584613e71565b82529284019290840190613ef4565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160901b031683529284019291840191600101613f30565b60006020808385031215613f6857600080fd5b82356001600160401b0380821115613f7f57600080fd5b818501915085601f830112613f9357600080fd5b8135613fa1611b7d82611afb565b81815260059190911b83018401908481019088831115613fc057600080fd5b8585015b83811015613ff857803585811115613fdc5760008081fd5b613fea8b89838a0101611d36565b845250918601918601613fc4565b5098975050505050505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561405a57603f19888603018452614048858351611de1565b9450928501929085019060010161402c565b5092979650505050505050565b6000602080838503121561407a57600080fd5b82356001600160401b0381111561409057600080fd5b8301601f810185136140a157600080fd5b80356140af611b7d82611afb565b81815260059190911b820183019083810190878311156140ce57600080fd5b928401925b82841015611bc6576140e484611e3a565b825292840192908401906140d3565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160981b03168352928401929184019160010161410f565b80356001600160b01b0381168114611a2f57600080fd5b60006020828403121561415d57600080fd5b611a4f82614134565b6000602080838503121561417957600080fd5b82356001600160401b0381111561418f57600080fd5b8301601f810185136141a057600080fd5b80356141ae611b7d82611afb565b81815260059190911b820183019083810190878311156141cd57600080fd5b928401925b82841015611bc6576141e384612dce565b825292840192908401906141d2565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160100b8352928401929184019160010161420e565b60006020828403121561423f57600080fd5b611a4f826137c6565b6000602080838503121561425b57600080fd5b82356001600160401b0381111561427157600080fd5b8301601f8101851361428257600080fd5b8035614290611b7d82611afb565b81815260059190911b820183019083810190878311156142af57600080fd5b928401925b82841015611bc6576142c5846127c3565b825292840192908401906142b4565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160190b835292840192918401916001016142f0565b80356001600160881b0381168114611a2f57600080fd5b6000602080838503121561433957600080fd5b82356001600160401b0381111561434f57600080fd5b8301601f8101851361436057600080fd5b803561436e611b7d82611afb565b81815260059190911b8201830190838101908783111561438d57600080fd5b928401925b82841015611bc6576143a38461430f565b82529284019290840190614392565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160881b0316835292840192918401916001016143ce565b6000602080838503121561440657600080fd5b82356001600160401b0381111561441c57600080fd5b8301601f8101851361442d57600080fd5b803561443b611b7d82611afb565b81815260059190911b8201830190838101908783111561445a57600080fd5b928401925b82841015611bc65761447084613c61565b8252928401929084019061445f565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601b0b8352928401929184019160010161449b565b600060208083850312156144cd57600080fd5b82356001600160401b03808211156144e457600080fd5b818501915085601f8301126144f857600080fd5b8135614506611b7d82611afb565b81815260059190911b8301840190848101908883111561452557600080fd5b8585015b83811015613ff8578035858111156145415760008081fd5b61454f8b89838a0101611d36565b845250918601918601614529565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561405a57603f198886030184526145a0858351611de1565b94509285019290850190600101614584565b6000602082840312156145c457600080fd5b611a4f82613125565b8035601881900b8114611a2f57600080fd5b6000602082840312156145f157600080fd5b611a4f826145cd565b60006020828403121561460c57600080fd5b611a4f826129e5565b80356001600160b81b0381168114611a2f57600080fd5b60006020828403121561463e57600080fd5b611a4f82614615565b60006020828403121561465957600080fd5b611a4f826126a2565b6000602080838503121561467557600080fd5b82356001600160401b0381111561468b57600080fd5b8301601f8101851361469c57600080fd5b80356146aa611b7d82611afb565b81815260059190911b820183019083810190878311156146c957600080fd5b928401925b82841015611bc6576146df84614134565b825292840192908401906146ce565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160b01b03168352928401929184019160010161470a565b60006020828403121561474157600080fd5b611a4f82612b4c565b60006020828403121561475c57600080fd5b611a4f82611b1e565b6000602080838503121561477857600080fd5b82356001600160401b0381111561478e57600080fd5b8301601f8101851361479f57600080fd5b80356147ad611b7d82611afb565b81815260059190911b820183019083810190878311156147cc57600080fd5b928401925b82841015611bc6576147e284611a88565b825292840192908401906147d1565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600c0b8352928401929184019160010161480d565b60006020828403121561483e57600080fd5b611a4f82613d6a565b6000602080838503121561485a57600080fd5b82356001600160401b0381111561487057600080fd5b8301601f8101851361488157600080fd5b803561488f611b7d82611afb565b81815260059190911b820183019083810190878311156148ae57600080fd5b928401925b82841015611bc6576148c484612e28565b825292840192908401906148b3565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835168ffffffffffffffffff16835292840192918401916001016148ef565b8035600e81900b8114611a2f57600080fd5b6000602080838503121561493b57600080fd5b82356001600160401b0381111561495157600080fd5b8301601f8101851361496257600080fd5b8035614970611b7d82611afb565b81815260059190911b8201830190838101908783111561498f57600080fd5b928401925b82841015611bc6576149a584614916565b82529284019290840190614994565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351600e0b835292840192918401916001016149d0565b8035600581900b8114611a2f57600080fd5b600060208284031215614a1357600080fd5b611a4f826149ef565b600060208284031215614a2e57600080fd5b611a4f82613a82565b60006020808385031215614a4a57600080fd5b82356001600160401b03811115614a6057600080fd5b8301601f81018513614a7157600080fd5b8035614a7f611b7d82611afb565b81815260059190911b82018301908381019087831115614a9e57600080fd5b928401925b82841015611bc657614ab484613a50565b82529284019290840190614aa3565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160681b031683529284019291840191600101614adf565b600060208284031215614b1657600080fd5b611a4f82614916565b600060208284031215614b3157600080fd5b611a4f826131fe565b600060208284031215614b4c57600080fd5b611a4f82611e6c565b600060208284031215614b6757600080fd5b611a4f8261430f565b600060208284031215614b8257600080fd5b611a4f826124f7565b60006020808385031215614b9e57600080fd5b82356001600160401b03811115614bb457600080fd5b8301601f81018513614bc557600080fd5b8035614bd3611b7d82611afb565b81815260059190911b82018301908381019087831115614bf257600080fd5b928401925b82841015611bc657614c08846149ef565b82529284019290840190614bf7565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160050b83529284019291840191600101614c33565b600060208284031215614c6457600080fd5b611a4f82611f72565b60006020808385031215614c8057600080fd5b82356001600160401b03811115614c9657600080fd5b8301601f81018513614ca757600080fd5b8035614cb5611b7d82611afb565b81815260059190911b82018301908381019087831115614cd457600080fd5b928401925b82841015611bc657614cea84611f45565b82529284019290840190614cd9565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160120b83529284019291840191600101614d15565b600060208284031215614d4657600080fd5b611a4f82612ce2565b600060208284031215614d6157600080fd5b611a4f82612304565b60006020808385031215614d7d57600080fd5b82356001600160401b03811115614d9357600080fd5b8301601f81018513614da457600080fd5b8035614db2611b7d82611afb565b81815260059190911b82018301908381019087831115614dd157600080fd5b928401925b82841015611bc657614de7846145cd565b82529284019290840190614dd6565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160180b83529284019291840191600101614e12565b600060208284031215614e4357600080fd5b611a4f8261349d565b80356001600160e01b0381168114611a2f57600080fd5b600060208284031215614e7557600080fd5b611a4f82614e4c565b60006020808385031215614e9157600080fd5b82356001600160401b03811115614ea757600080fd5b8301601f81018513614eb857600080fd5b8035614ec6611b7d82611afb565b81815260059190911b82018301908381019087831115614ee557600080fd5b928401925b82841015611bc657614efb8461365d565b82529284019290840190614eea565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160090b83529284019291840191600101614f26565b60006020808385031215614f5857600080fd5b82356001600160401b03811115614f6e57600080fd5b8301601f81018513614f7f57600080fd5b8035614f8d611b7d82611afb565b81815260059190911b82018301908381019087831115614fac57600080fd5b928401925b82841015611bc657614fc284614e4c565b82529284019290840190614fb1565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160e01b031683529284019291840191600101614fed565b80356001600160d01b0381168114611a2f57600080fd5b60006020828403121561503b57600080fd5b611a4f82615012565b60006020828403121561505657600080fd5b611a4f8261357f565b63ffffffff841681526001600160401b038316602082015260606040820152600061508d6060830184611de1565b95945050505050565b6000602082840312156150a857600080fd5b611a4f82613966565b6000602082840312156150c357600080fd5b611a4f826128d4565b80356001600160e81b0381168114611a2f57600080fd5b6000602082840312156150f557600080fd5b611a4f826150cc565b6000602080838503121561511157600080fd5b82356001600160401b0381111561512757600080fd5b8301601f8101851361513857600080fd5b8035615146611b7d82611afb565b81815260059190911b8201830190838101908783111561516557600080fd5b928401925b82841015611bc65761517b84612dfb565b8252928401929084019061516a565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601c0b835292840192918401916001016151a6565b6000602082840312156151d757600080fd5b611a4f826127f0565b8035600881900b8114611a2f57600080fd5b6000602080838503121561520557600080fd5b82356001600160401b0381111561521b57600080fd5b8301601f8101851361522c57600080fd5b803561523a611b7d82611afb565b81815260059190911b8201830190838101908783111561525957600080fd5b928401925b82841015611bc65761526f846151e0565b8252928401929084019061525e565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160080b8352928401929184019160010161529a565b600060208083850312156152cc57600080fd5b82356001600160401b038111156152e257600080fd5b8301601f810185136152f357600080fd5b8035615301611b7d82611afb565b81815260059190911b8201830190838101908783111561532057600080fd5b928401925b82841015611bc657615336846132e2565b82529284019290840190615325565b602080825282518282018190526000919084820190604085019084805b82811015615380578451820b84529385019392850192600101615362565b5091979650505050505050565b600060208083850312156153a057600080fd5b82356001600160401b038111156153b657600080fd5b8301601f810185136153c757600080fd5b80356153d5611b7d82611afb565b81815260059190911b820183019083810190878311156153f457600080fd5b928401925b82841015611bc65761540a8461277b565b825292840192908401906153f9565b6020808252825182820181905260009190848201906040850190845b81811015611c12578351601d0b83529284019291840191600101615435565b6000602080838503121561546757600080fd5b82356001600160401b0381111561547d57600080fd5b8301601f8101851361548e57600080fd5b803561549c611b7d82611afb565b81815260059190911b820183019083810190878311156154bb57600080fd5b928401925b82841015611bc6576154d184611c82565b825292840192908401906154c0565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160040b835292840192918401916001016154fc565b6000602080838503121561552e57600080fd5b82356001600160401b0381111561554457600080fd5b8301601f8101851361555557600080fd5b8035615563611b7d82611afb565b81815260059190911b8201830190838101908783111561558257600080fd5b928401925b82841015611bc65761559884613e44565b82529284019290840190615587565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160020b835292840192918401916001016155c3565b600060208083850312156155f557600080fd5b82356001600160401b0381111561560b57600080fd5b8301601f8101851361561c57600080fd5b803561562a611b7d82611afb565b81815260059190911b8201830190838101908783111561564957600080fd5b928401925b82841015611bc65761565f846150cc565b8252928401929084019061564e565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160e81b03168352928401929184019160010161568a565b600060208083850312156156c257600080fd5b82356001600160401b038111156156d857600080fd5b8301601f810185136156e957600080fd5b80356156f7611b7d82611afb565b81815260059190911b8201830190838101908783111561571657600080fd5b928401925b82841015611bc65761572c8461368a565b8252928401929084019061571b565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160170b83529284019291840191600101615757565b60006020828403121561578857600080fd5b611a4f826151e0565b600060208083850312156157a457600080fd5b82356001600160401b038111156157ba57600080fd5b8301601f810185136157cb57600080fd5b80356157d9611b7d82611afb565b81815260059190911b820183019083810190878311156157f857600080fd5b928401925b82841015611bc65761580e84612e5c565b825292840192908401906157fd565b6020808252825182820181905260009190848201906040850190845b81811015611c1257835160070b83529284019291840191600101615839565b60006020828403121561586a57600080fd5b611a4f82613e71565b60006020828403121561588557600080fd5b611a4f82613c8e565b600060208083850312156158a157600080fd5b82356001600160401b038111156158b757600080fd5b8301601f810185136158c857600080fd5b80356158d6611b7d82611afb565b81815260059190911b820183019083810190878311156158f557600080fd5b928401925b82841015611bc65761590b84611a18565b825292840192908401906158fa565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160801b031683529284019291840191600101615936565b6000602080838503121561596e57600080fd5b82356001600160401b0381111561598457600080fd5b8301601f8101851361599557600080fd5b80356159a3611b7d82611afb565b81815260059190911b820183019083810190878311156159c257600080fd5b928401925b82841015611bc6576159d884615012565b825292840192908401906159c7565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160d01b031683529284019291840191600101615a03565b60006020808385031215615a3b57600080fd5b82356001600160401b03811115615a5157600080fd5b8301601f81018513615a6257600080fd5b8035615a70611b7d82611afb565b81815260059190911b82018301908381019087831115615a8f57600080fd5b928401925b82841015611bc657615aa584614615565b82529284019290840190615a94565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160b81b031683529284019291840191600101615ad0565b602081526000825160406020840152615b116060840182611de1565b9050602084015160408401528091505092915050565b60006020808385031215615b3a57600080fd5b82356001600160401b03811115615b5057600080fd5b8301601f81018513615b6157600080fd5b8035615b6f611b7d82611afb565b81815260059190911b82018301908381019087831115615b8e57600080fd5b928401925b82841015611bc657615ba484611c1e565b82529284019290840190615b93565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160781b031683529284019291840191600101615bcf565b60006020808385031215615c0757600080fd5b82356001600160401b03811115615c1d57600080fd5b8301601f81018513615c2e57600080fd5b8035615c3c611b7d82611afb565b81815260059190911b82018301908381019087831115615c5b57600080fd5b928401925b82841015611bc657615c7184611a56565b82529284019290840190615c60565b6020808252825182820181905260009190848201906040850190845b81811015611c125783516001600160601b031683529284019291840191600101615c9c565b600060208284031215615cd357600080fd5b611a4f82613b81565b634e487b7160e01b600052601160045260246000fd5b600081810b9083900b01607f8113607f1982121715615d1357615d13615cdc565b92915050565b8082018281126000831280158216821582161715615d3957615d39615cdc565b505092915050565b63ffffffff828116828216039080821115615d5e57615d5e615cdc565b5092915050565b600481810b9083900b01647fffffffff8113647fffffffff1982121715615d1357615d13615cdc565b600181811c90821680615da257607f821691505b602082108103615dc257634e487b7160e01b600052602260045260246000fd5b5091905056fea2646970667358221220a5b87b6881e1a012e4a59d55c230cfcf3a2342b83efdbfb3c5f5cfa532fc854864736f6c63430008120033";
+ private static IntegrationTestEnv testEnv;
+ private static FileId fileId;
+ private static ContractId contractId;
+
+ @BeforeAll
+ public static void beforeAll() throws Exception {
+ testEnv = new IntegrationTestEnv(1);
+
+ @Var var response = new FileCreateTransaction().setKeys(testEnv.operatorKey).execute(testEnv.client);
+
+ fileId = Objects.requireNonNull(response.getReceipt(testEnv.client).fileId);
+
+ new FileAppendTransaction().setFileId(fileId).setContents(SMART_CONTRACT_BYTECODE).setMaxChunks(31)
+ .execute(testEnv.client);
+
+ response = new ContractCreateTransaction().setAdminKey(testEnv.operatorKey).setGas(1500000)
+ .setConstructorParameters(new ContractFunctionParameters()).setBytecodeFileId(fileId)
+ .execute(testEnv.client);
+
+ contractId = Objects.requireNonNull(response.getReceipt(testEnv.client).contractId);
+ }
+
+ @AfterAll
+ public static void afterAll() throws Exception {
+ new ContractDeleteTransaction().setTransferAccountId(testEnv.operatorId).setContractId(contractId)
+ .execute(testEnv.client).getReceipt(testEnv.client);
+
+ new FileDeleteTransaction().setFileId(fileId).execute(testEnv.client).getReceipt(testEnv.client);
+
+ testEnv.close();
+ }
+
+ // so we don't get "network is busy" error
+ @AfterEach
+ public void afterEach() throws InterruptedException {
+ Thread.sleep(150);
+ }
+
+ @Test
+ @DisplayName("Can receive uint8 min value from contract call")
+ void canCallContractFunctionUint8Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint8", new ContractFunctionParameters().addUint8((byte) 0x0))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint8(0)).isEqualTo((byte) 0x0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint8 max value from contract call")
+ void canCallContractFunctionUint8Max() throws Exception {
+ int uint8Max = 255;
+ byte uint8MaxByte = (byte) uint8Max;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint8", new ContractFunctionParameters().addUint8(uint8MaxByte))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint8MaxFromResponse = Byte.toUnsignedInt(response.getUint8(0));
+
+ assertThat(uint8MaxFromResponse).isEqualTo(uint8Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint8 array value from contract call")
+ void canCallContractFunctionUint8Array() throws Exception {
+ byte uint8MinByte = (byte) 0x0;
+ int uint8Max = 255;
+ byte uint8MaxByte = (byte) uint8Max;
+ byte[] uint8Array = {uint8MinByte, uint8MaxByte};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint8Arr", new ContractFunctionParameters().addUint8Array(uint8Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (int[]) response.getResult("(uint8[])").get(0);
+
+ assertThat(responseResult[0]).isEqualTo(uint8MinByte);
+ assertThat(responseResult[1]).isEqualTo(uint8Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint16 min value from contract call")
+ void canCallContractFunctionUint16Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint16", new ContractFunctionParameters().addUint16(0)).setQueryPayment(new Hbar(10))
+ .execute(testEnv.client);
+
+ assertThat(response.getUint32(0)).isEqualTo(0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint16 max value from contract call")
+ void canCallContractFunctionUint16Max() throws Exception {
+ var uint16Max = "65535";
+ int uint16MaxInt = Integer.parseUnsignedInt(uint16Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint16", new ContractFunctionParameters().addUint16(uint16MaxInt))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint16MaxIntFromResponse = Integer.toUnsignedString(response.getUint32(0));
+
+ assertThat(uint16MaxIntFromResponse).isEqualTo(uint16Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint16 array value from contract call")
+ void canCallContractFunctionUint16Array() throws Exception {
+ int uint16MinInt = 0;
+ var uint16Max = "65535";
+ int uint16MaxInt = Integer.parseUnsignedInt(uint16Max);
+ int[] uint16Array = {uint16MinInt, uint16MaxInt};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint16Arr", new ContractFunctionParameters().addUint16Array(uint16Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (int[]) response.getResult("(uint16[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint16Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint24 min value from contract call")
+ void canCallContractFunctionUint24Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint24", new ContractFunctionParameters().addUint24(0)).setQueryPayment(new Hbar(10))
+ .execute(testEnv.client);
+
+ assertThat(response.getUint32(0)).isEqualTo(0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint24 max value from contract call")
+ void canCallContractFunctionUint24Max() throws Exception {
+ var uint24Max = "16777215";
+ int uint24MaxInt = Integer.parseUnsignedInt(uint24Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint24", new ContractFunctionParameters().addUint24(uint24MaxInt))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint24MaxIntFromResponse = Integer.toUnsignedString(response.getUint32(0));
+
+ assertThat(uint24MaxIntFromResponse).isEqualTo(uint24Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint24 array value from contract call")
+ void canCallContractFunctionUint24Array() throws Exception {
+ int uint24MinInt = 0;
+ var uint24Max = "16777215";
+ int uint24MaxInt = Integer.parseUnsignedInt(uint24Max);
+ int[] uint24Array = {uint24MinInt, uint24MaxInt};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint24Arr", new ContractFunctionParameters().addUint24Array(uint24Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (int[]) response.getResult("(uint24[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint24Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint32 min value from contract call")
+ void canCallContractFunctionUint32Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint32", new ContractFunctionParameters().addUint32(0)).setQueryPayment(new Hbar(10))
+ .execute(testEnv.client);
+
+ assertThat(response.getUint32(0)).isEqualTo(0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint32 max value from contract call")
+ void canCallContractFunctionUint32Max() throws Exception {
+ var uint32Max = "4294967295";
+ int uint32MaxInt = Integer.parseUnsignedInt(uint32Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint32", new ContractFunctionParameters().addUint32(uint32MaxInt))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint32MaxIntFromResponse = Integer.toUnsignedString(response.getUint32(0));
+
+ assertThat(uint32MaxIntFromResponse).isEqualTo(uint32Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint32 array value from contract call")
+ void canCallContractFunctionUint32Array() throws Exception {
+ int uint32MinInt = 0;
+ var uint32Max = "4294967295";
+ int uint32MaxInt = Integer.parseUnsignedInt(uint32Max);
+ int[] uint32Array = {uint32MinInt, uint32MaxInt};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint32Arr", new ContractFunctionParameters().addUint32Array(uint32Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(uint32[])").get(0);
+
+ assertThat(responseResult[0]).isEqualTo(uint32MinInt);
+ assertThat(responseResult[1]).isEqualTo(Long.parseUnsignedLong(uint32Max));
+ }
+
+ @Test
+ @DisplayName("Can receive uint40 min value from contract call")
+ void canCallContractFunctionUint40Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint40", new ContractFunctionParameters().addUint40(0)).setQueryPayment(new Hbar(10))
+ .execute(testEnv.client);
+
+ assertThat(response.getUint64(0)).isEqualTo(0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint40 max value from contract call")
+ void canCallContractFunctionUint40Max() throws Exception {
+ var uint40Max = "109951162777";
+ long uint40MaxLong = Long.parseUnsignedLong(uint40Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint40", new ContractFunctionParameters().addUint40(uint40MaxLong))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0));
+
+ assertThat(uint64MaxLongFromResponse).isEqualTo(uint40Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint40 array value from contract call")
+ void canCallContractFunctionUint40Array() throws Exception {
+ long uint40MinLong = 0;
+ var uint40Max = "109951162777";
+ long uint40MaxLong = Long.parseUnsignedLong(uint40Max);
+ long[] uint40Array = {uint40MinLong, uint40MaxLong};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint40Arr", new ContractFunctionParameters().addUint40Array(uint40Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(uint40[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint40Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint48 min value from contract call")
+ void canCallContractFunctionUint48Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint48", new ContractFunctionParameters().addUint48(0)).setQueryPayment(new Hbar(10))
+ .execute(testEnv.client);
+
+ assertThat(response.getUint64(0)).isEqualTo(0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint48 max value from contract call")
+ void canCallContractFunctionUint48Max() throws Exception {
+ var uint48Max = "281474976710655";
+ long uint48MaxLong = Long.parseUnsignedLong(uint48Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint48", new ContractFunctionParameters().addUint48(uint48MaxLong))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0));
+
+ assertThat(uint64MaxLongFromResponse).isEqualTo(uint48Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint48 array value from contract call")
+ void canCallContractFunctionUint48Array() throws Exception {
+ long uint48MinLong = 0;
+ var uint48Max = "281474976710655";
+ long uint48MaxLong = Long.parseUnsignedLong(uint48Max);
+ long[] uint48Array = {uint48MinLong, uint48MaxLong};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint48Arr", new ContractFunctionParameters().addUint48Array(uint48Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(uint48[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint48Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint56 min value from contract call")
+ void canCallContractFunctionUint56Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint56", new ContractFunctionParameters().addUint56(0)).setQueryPayment(new Hbar(10))
+ .execute(testEnv.client);
+
+ assertThat(response.getUint64(0)).isEqualTo(0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint56 max value from contract call")
+ void canCallContractFunctionUint56Max() throws Exception {
+ var uint56Max = "72057594037927935";
+ long uint56MaxLong = Long.parseUnsignedLong(uint56Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint56", new ContractFunctionParameters().addUint56(uint56MaxLong))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0));
+
+ assertThat(uint64MaxLongFromResponse).isEqualTo(uint56Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint56 array value from contract call")
+ void canCallContractFunctionUint56Array() throws Exception {
+ long uint56MinLong = 0;
+ var uint56Max = "72057594037927935";
+ long uint56MaxLong = Long.parseUnsignedLong(uint56Max);
+ long[] uint56Array = {uint56MinLong, uint56MaxLong};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint56Arr", new ContractFunctionParameters().addUint56Array(uint56Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(uint56[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint56Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint64 min value from contract call")
+ void canCallContractFunctionUint64Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint64", new ContractFunctionParameters().addUint64(0)).setQueryPayment(new Hbar(10))
+ .execute(testEnv.client);
+
+ assertThat(response.getUint64(0)).isEqualTo(0);
+ }
+
+ @Test
+ @DisplayName("Can receive uint64 max value from contract call")
+ void canCallContractFunctionUint64Max() throws Exception {
+ var uint64Max = "9223372036854775807";
+ long uint64MaxLong = Long.parseUnsignedLong(uint64Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint64", new ContractFunctionParameters().addUint64(uint64MaxLong))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var uint64MaxLongFromResponse = Long.toUnsignedString(response.getUint64(0));
+
+ assertThat(uint64MaxLongFromResponse).isEqualTo(uint64Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint64 array value from contract call")
+ void canCallContractFunctionUint64Array() throws Exception {
+ long uint64MinLong = 0;
+ var uint64Max = "9223372036854775807";
+ long uint64MaxLong = Long.parseUnsignedLong(uint64Max);
+ long[] uint64Array = {uint64MinLong, uint64MaxLong};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint64Arr", new ContractFunctionParameters().addUint64Array(uint64Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint64[])").get(0);
+
+ assertThat(responseResult[0]).isEqualTo(uint64MinLong);
+ assertThat(responseResult[1]).isEqualTo(Long.parseUnsignedLong(uint64Max));
+ }
+
+ @Test
+ @DisplayName("Can receive uint72 min value from contract call")
+ void canCallContractFunctionUint72Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint72", new ContractFunctionParameters().addUint72(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint72 max value from contract call")
+ void canCallContractFunctionUint72Max() throws Exception {
+ BigInteger uint72Max = new BigInteger("4722366482869645213695");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint72", new ContractFunctionParameters().addUint72(uint72Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint72Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint72 array value from contract call")
+ void canCallContractFunctionUint72Array() throws Exception {
+ BigInteger uint72Min = BigInteger.ZERO;
+ BigInteger uint72Max = new BigInteger("4722366482869645213695");
+ BigInteger[] uint72Array = {uint72Min, uint72Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint72Arr", new ContractFunctionParameters().addUint72Array(uint72Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint72[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint72Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint80 min value from contract call")
+ void canCallContractFunctionUint80Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint80", new ContractFunctionParameters().addUint80(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint80 max value from contract call")
+ void canCallContractFunctionUint80Max() throws Exception {
+ BigInteger uint80Max = new BigInteger("1208925819614629174706175");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint80", new ContractFunctionParameters().addUint80(uint80Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint80Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint80 array value from contract call")
+ void canCallContractFunctionUint80Array() throws Exception {
+ BigInteger uint80Min = BigInteger.ZERO;
+ BigInteger uint80Max = new BigInteger("1208925819614629174706175");
+ BigInteger[] uint80Array = {uint80Min, uint80Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint80Arr", new ContractFunctionParameters().addUint80Array(uint80Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint80[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint80Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint88 min value from contract call")
+ void canCallContractFunctionUint88Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint88", new ContractFunctionParameters().addUint88(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint88 max value from contract call")
+ void canCallContractFunctionUint88Max() throws Exception {
+ BigInteger uint88Max = new BigInteger("309485009821345068724781055");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint88", new ContractFunctionParameters().addUint88(uint88Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint88Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint88 array value from contract call")
+ void canCallContractFunctionUint88Array() throws Exception {
+ BigInteger uint88Min = BigInteger.ZERO;
+ BigInteger uint88Max = new BigInteger("309485009821345068724781055");
+ BigInteger[] uint88Array = {uint88Min, uint88Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint88Arr", new ContractFunctionParameters().addUint88Array(uint88Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint88[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint88Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint96 min value from contract call")
+ void canCallContractFunctionUint96Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint96", new ContractFunctionParameters().addUint96(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint96 max value from contract call")
+ void canCallContractFunctionUint96Max() throws Exception {
+ BigInteger uint96Max = new BigInteger("79228162514264337593543950335");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint96", new ContractFunctionParameters().addUint96(uint96Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint96Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint96 array value from contract call")
+ void canCallContractFunctionUint96Array() throws Exception {
+ BigInteger uint96Min = BigInteger.ZERO;
+ BigInteger uint96Max = new BigInteger("79228162514264337593543950335");
+ BigInteger[] uint96Array = {uint96Min, uint96Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint96Arr", new ContractFunctionParameters().addUint96Array(uint96Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint96[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint96Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint104 min value from contract call")
+ void canCallContractFunctionUint104Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint104", new ContractFunctionParameters().addUint104(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint104 max value from contract call")
+ void canCallContractFunctionUint104Max() throws Exception {
+ BigInteger uint104Max = new BigInteger("20282409603651670423947251286015");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint104", new ContractFunctionParameters().addUint104(uint104Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint104Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint104 array value from contract call")
+ void canCallContractFunctionUint104Array() throws Exception {
+ BigInteger uint104Min = BigInteger.ZERO;
+ BigInteger uint104Max = new BigInteger("20282409603651670423947251286015");
+ BigInteger[] uint104Array = {uint104Min, uint104Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint104Arr", new ContractFunctionParameters().addUint104Array(uint104Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint104[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint104Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint112 min value from contract call")
+ void canCallContractFunctionUint112Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint112", new ContractFunctionParameters().addUint112(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint112 max value from contract call")
+ void canCallContractFunctionUint112Max() throws Exception {
+ BigInteger uint112Max = new BigInteger("5192296858534827628530496329220095");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint112", new ContractFunctionParameters().addUint112(uint112Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint112Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint112 array value from contract call")
+ void canCallContractFunctionUint112Array() throws Exception {
+ BigInteger uint112Min = BigInteger.ZERO;
+ BigInteger uint112Max = new BigInteger("5192296858534827628530496329220095");
+ BigInteger[] uint112Array = {uint112Min, uint112Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint112Arr", new ContractFunctionParameters().addUint112Array(uint112Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint112[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint112Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint120 min value from contract call")
+ void canCallContractFunctionUint120Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint120", new ContractFunctionParameters().addUint120(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint120 max value from contract call")
+ void canCallContractFunctionUint120Max() throws Exception {
+ BigInteger uint120Max = new BigInteger("1329227995784915872903807060280344575");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint120", new ContractFunctionParameters().addUint120(uint120Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint120Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint120 array value from contract call")
+ void canCallContractFunctionUint120Array() throws Exception {
+ BigInteger uint120Min = BigInteger.ZERO;
+ BigInteger uint120Max = new BigInteger("1329227995784915872903807060280344575");
+ BigInteger[] uint120Array = {uint120Min, uint120Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint120Arr", new ContractFunctionParameters().addUint120Array(uint120Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint120[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint120Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint128 min value from contract call")
+ void canCallContractFunctionUint128Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint128", new ContractFunctionParameters().addUint128(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint128 max value from contract call")
+ void canCallContractFunctionUint128Max() throws Exception {
+ BigInteger uint128Max = new BigInteger("340282366920938463463374607431768211455");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint128", new ContractFunctionParameters().addUint128(uint128Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint128Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint128 array value from contract call")
+ void canCallContractFunctionUint128Array() throws Exception {
+ BigInteger uint128Min = BigInteger.ZERO;
+ BigInteger uint128Max = new BigInteger("340282366920938463463374607431768211455");
+ BigInteger[] uint128Array = {uint128Min, uint128Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint128Arr", new ContractFunctionParameters().addUint128Array(uint128Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint128[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint128Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint136 min value from contract call")
+ void canCallContractFunctionUint136Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint136", new ContractFunctionParameters().addUint136(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint136 max value from contract call")
+ void canCallContractFunctionUint136Max() throws Exception {
+ BigInteger uint136Max = new BigInteger("87112285931760246646623899502532662132735");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint136", new ContractFunctionParameters().addUint136(uint136Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint136Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint136 array value from contract call")
+ void canCallContractFunctionUint136Array() throws Exception {
+ BigInteger uint136Min = BigInteger.ZERO;
+ BigInteger uint136Max = new BigInteger("87112285931760246646623899502532662132735");
+ BigInteger[] uint136Array = {uint136Min, uint136Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint136Arr", new ContractFunctionParameters().addUint136Array(uint136Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint136[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint136Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint144 min value from contract call")
+ void canCallContractFunctionUint144Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint144", new ContractFunctionParameters().addUint144(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint144 max value from contract call")
+ void canCallContractFunctionUint144Max() throws Exception {
+ BigInteger uint144Max = new BigInteger("22300745198530623141535718272648361505980415");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint144", new ContractFunctionParameters().addUint144(uint144Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint144Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint144 array value from contract call")
+ void canCallContractFunctionUint144Array() throws Exception {
+ BigInteger uint144Min = BigInteger.ZERO;
+ BigInteger uint144Max = new BigInteger("22300745198530623141535718272648361505980415");
+ BigInteger[] uint144Array = {uint144Min, uint144Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint144Arr", new ContractFunctionParameters().addUint144Array(uint144Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint144[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint144Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint152 min value from contract call")
+ void canCallContractFunctionUint152Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint152", new ContractFunctionParameters().addUint152(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint152 max value from contract call")
+ void canCallContractFunctionUint152Max() throws Exception {
+ BigInteger uint152Max = new BigInteger("5708990770823839524233143877797980545530986495");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint152", new ContractFunctionParameters().addUint152(uint152Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint152Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint152 array value from contract call")
+ void canCallContractFunctionUint152Array() throws Exception {
+ BigInteger uint152Min = BigInteger.ZERO;
+ BigInteger uint152Max = new BigInteger("5708990770823839524233143877797980545530986495");
+ BigInteger[] uint152Array = {uint152Min, uint152Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint152Arr", new ContractFunctionParameters().addUint152Array(uint152Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint152[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint152Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint160 min value from contract call")
+ void canCallContractFunctionUint160Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint160", new ContractFunctionParameters().addUint160(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint160 max value from contract call")
+ void canCallContractFunctionUint160Max() throws Exception {
+ BigInteger uint160Max = new BigInteger("1461501637330902918203684832716283019655932542975");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint160", new ContractFunctionParameters().addUint160(uint160Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint160Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint160 array value from contract call")
+ void canCallContractFunctionUint160Array() throws Exception {
+ BigInteger uint160Min = BigInteger.ZERO;
+ BigInteger uint160Max = new BigInteger("1461501637330902918203684832716283019655932542975");
+ BigInteger[] uint160Array = {uint160Min, uint160Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint160Arr", new ContractFunctionParameters().addUint160Array(uint160Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint160[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint160Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint168 min value from contract call")
+ void canCallContractFunctionUint168Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint168", new ContractFunctionParameters().addUint168(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint168 max value from contract call")
+ void canCallContractFunctionUint168Max() throws Exception {
+ BigInteger uint168Max = new BigInteger("374144419156711147060143317175368453031918731001855");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint168", new ContractFunctionParameters().addUint168(uint168Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint168Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint168 array value from contract call")
+ void canCallContractFunctionUint168Array() throws Exception {
+ BigInteger uint168Min = BigInteger.ZERO;
+ BigInteger uint168Max = new BigInteger("374144419156711147060143317175368453031918731001855");
+ BigInteger[] uint168Array = {uint168Min, uint168Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint168Arr", new ContractFunctionParameters().addUint168Array(uint168Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint168[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint168Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint176 min value from contract call")
+ void canCallContractFunctionUint176Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint176", new ContractFunctionParameters().addUint176(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint176 max value from contract call")
+ void canCallContractFunctionUint176Max() throws Exception {
+ BigInteger uint176Max = new BigInteger("95780971304118053647396689196894323976171195136475135");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint176", new ContractFunctionParameters().addUint176(uint176Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint176Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint176 array value from contract call")
+ void canCallContractFunctionUint176Array() throws Exception {
+ BigInteger uint176Min = BigInteger.ZERO;
+ BigInteger uint176Max = new BigInteger("95780971304118053647396689196894323976171195136475135");
+ BigInteger[] uint176Array = {uint176Min, uint176Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint176Arr", new ContractFunctionParameters().addUint176Array(uint176Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint176[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint176Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint184 min value from contract call")
+ void canCallContractFunctionUint184Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint184", new ContractFunctionParameters().addUint184(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint184 max value from contract call")
+ void canCallContractFunctionUint184Max() throws Exception {
+ BigInteger uint184Max = new BigInteger("24519928653854221733733552434404946937899825954937634815");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint184", new ContractFunctionParameters().addUint184(uint184Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint184Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint184 array value from contract call")
+ void canCallContractFunctionUint184Array() throws Exception {
+ BigInteger uint184Min = BigInteger.ZERO;
+ BigInteger uint184Max = new BigInteger("24519928653854221733733552434404946937899825954937634815");
+ BigInteger[] uint184Array = {uint184Min, uint184Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint184Arr", new ContractFunctionParameters().addUint184Array(uint184Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint184[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint184Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint192 min value from contract call")
+ void canCallContractFunctionUint192Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint192", new ContractFunctionParameters().addUint192(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint192 max value from contract call")
+ void canCallContractFunctionUint192Max() throws Exception {
+ BigInteger uint192Max = new BigInteger("6277101735386680763835789423207666416102355444464034512895");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint192", new ContractFunctionParameters().addUint192(uint192Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint192Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint192 array value from contract call")
+ void canCallContractFunctionUint192Array() throws Exception {
+ BigInteger uint192Min = BigInteger.ZERO;
+ BigInteger uint192Max = new BigInteger("6277101735386680763835789423207666416102355444464034512895");
+ BigInteger[] uint192Array = {uint192Min, uint192Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint192Arr", new ContractFunctionParameters().addUint192Array(uint192Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint192[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint192Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint200 min value from contract call")
+ void canCallContractFunctionUint200Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint200", new ContractFunctionParameters().addUint200(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint200 max value from contract call")
+ void canCallContractFunctionUint200Max() throws Exception {
+ BigInteger uint200Max = new BigInteger("1606938044258990275541962092341162602522202993782792835301375");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint200", new ContractFunctionParameters().addUint200(uint200Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint200Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint200 array value from contract call")
+ void canCallContractFunctionUint200Array() throws Exception {
+ BigInteger uint200Min = BigInteger.ZERO;
+ BigInteger uint200Max = new BigInteger("1606938044258990275541962092341162602522202993782792835301375");
+ BigInteger[] uint200Array = {uint200Min, uint200Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint200Arr", new ContractFunctionParameters().addUint200Array(uint200Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint200[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint200Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint208 min value from contract call")
+ void canCallContractFunctionUint208Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint208", new ContractFunctionParameters().addUint208(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint208 max value from contract call")
+ void canCallContractFunctionUint208Max() throws Exception {
+ BigInteger uint208Max = new BigInteger("411376139330301510538742295639337626245683966408394965837152255");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint208", new ContractFunctionParameters().addUint208(uint208Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint208Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint208 array value from contract call")
+ void canCallContractFunctionUint208Array() throws Exception {
+ BigInteger uint208Min = BigInteger.ZERO;
+ BigInteger uint208Max = new BigInteger("411376139330301510538742295639337626245683966408394965837152255");
+ BigInteger[] uint208Array = {uint208Min, uint208Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint208Arr", new ContractFunctionParameters().addUint208Array(uint208Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint208[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint208Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint216 min value from contract call")
+ void canCallContractFunctionUint216Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint216", new ContractFunctionParameters().addUint216(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint216 max value from contract call")
+ void canCallContractFunctionUint216Max() throws Exception {
+ BigInteger uint216Max = new BigInteger("105312291668557186697918027683670432318895095400549111254310977535");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint216", new ContractFunctionParameters().addUint216(uint216Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint216Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint216 array value from contract call")
+ void canCallContractFunctionUint216Array() throws Exception {
+ BigInteger uint216Min = BigInteger.ZERO;
+ BigInteger uint216Max = new BigInteger("105312291668557186697918027683670432318895095400549111254310977535");
+ BigInteger[] uint216Array = {uint216Min, uint216Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint216Arr", new ContractFunctionParameters().addUint216Array(uint216Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint216[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint216Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint224 min value from contract call")
+ void canCallContractFunctionUint224Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint224", new ContractFunctionParameters().addUint224(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint224 max value from contract call")
+ void canCallContractFunctionUint224Max() throws Exception {
+ BigInteger uint224Max = new BigInteger("26959946667150639794667015087019630673637144422540572481103610249215");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint224", new ContractFunctionParameters().addUint224(uint224Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint224Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint224 array value from contract call")
+ void canCallContractFunctionUint224Array() throws Exception {
+ BigInteger uint224Min = BigInteger.ZERO;
+ BigInteger uint224Max = new BigInteger("26959946667150639794667015087019630673637144422540572481103610249215");
+ BigInteger[] uint224Array = {uint224Min, uint224Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint224Arr", new ContractFunctionParameters().addUint224Array(uint224Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint224[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint224Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint232 min value from contract call")
+ void canCallContractFunctionUint232Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint232", new ContractFunctionParameters().addUint232(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint232 max value from contract call")
+ void canCallContractFunctionUint232Max() throws Exception {
+ BigInteger uint232Max = new BigInteger(
+ "6901746346790563787434755862277025452451108972170386555162524223799295");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint232", new ContractFunctionParameters().addUint232(uint232Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint232Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint232 array value from contract call")
+ void canCallContractFunctionUint232Array() throws Exception {
+ BigInteger uint232Min = BigInteger.ZERO;
+ BigInteger uint232Max = new BigInteger(
+ "6901746346790563787434755862277025452451108972170386555162524223799295");
+ BigInteger[] uint232Array = {uint232Min, uint232Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint232Arr", new ContractFunctionParameters().addUint232Array(uint232Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint232[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint232Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint240 min value from contract call")
+ void canCallContractFunctionUint240Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint240", new ContractFunctionParameters().addUint240(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint240 max value from contract call")
+ void canCallContractFunctionUint240Max() throws Exception {
+ BigInteger uint240Max = new BigInteger(
+ "1766847064778384329583297500742918515827483896875618958121606201292619775");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint240", new ContractFunctionParameters().addUint240(uint240Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint240Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint240 array value from contract call")
+ void canCallContractFunctionUint240Array() throws Exception {
+ BigInteger uint240Min = BigInteger.ZERO;
+ BigInteger uint240Max = new BigInteger(
+ "1766847064778384329583297500742918515827483896875618958121606201292619775");
+ BigInteger[] uint240Array = {uint240Min, uint240Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint240Arr", new ContractFunctionParameters().addUint240Array(uint240Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint240[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint240Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint248 min value from contract call")
+ void canCallContractFunctionUint248Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint248", new ContractFunctionParameters().addUint248(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint248 max value from contract call")
+ void canCallContractFunctionUint248Max() throws Exception {
+ BigInteger uint248Max = new BigInteger(
+ "452312848583266388373324160190187140051835877600158453279131187530910662655");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint248", new ContractFunctionParameters().addUint248(uint248Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint248Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint248 array value from contract call")
+ void canCallContractFunctionUint248Array() throws Exception {
+ BigInteger uint248Min = BigInteger.ZERO;
+ BigInteger uint248Max = new BigInteger(
+ "452312848583266388373324160190187140051835877600158453279131187530910662655");
+ BigInteger[] uint248Array = {uint248Min, uint248Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint248Arr", new ContractFunctionParameters().addUint248Array(uint248Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint248[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint248Array);
+ }
+
+ @Test
+ @DisplayName("Can receive uint256 min value from contract call")
+ void canCallContractFunctionUint256Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint256", new ContractFunctionParameters().addUint256(BigInteger.ZERO))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(BigInteger.ZERO);
+ }
+
+ @Test
+ @DisplayName("Can receive uint256 max value from contract call")
+ void canCallContractFunctionUint256Max() throws Exception {
+ BigInteger uint256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint256", new ContractFunctionParameters().addUint256(uint256Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint256(0)).isEqualTo(uint256Max);
+ }
+
+ @Test
+ @DisplayName("Can receive uint256 array value from contract call")
+ void canCallContractFunctionUint256Array() throws Exception {
+ BigInteger uint256Min = BigInteger.ZERO;
+ BigInteger uint256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE);
+ BigInteger[] uint256Array = {uint256Min, uint256Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint256Arr", new ContractFunctionParameters().addUint256Array(uint256Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(uint256[])").get(0);
+
+ assertThat(responseResult).isEqualTo(uint256Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int8 min value from contract call")
+ void canCallContractFunctionInt8Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt8", new ContractFunctionParameters().addInt8(Byte.MIN_VALUE))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt8(0)).isEqualTo(Byte.MIN_VALUE);
+ }
+
+ @Test
+ @DisplayName("Can receive int8 max value from contract call")
+ void canCallContractFunctionInt8Max() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt8", new ContractFunctionParameters().addInt8(Byte.MAX_VALUE))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt8(0)).isEqualTo(Byte.MAX_VALUE);
+ }
+
+ @Test
+ @DisplayName("Can receive int8 array value from contract call")
+ void canCallContractFunctionInt8Array() throws Exception {
+ byte[] int8Array = {Byte.MIN_VALUE, Byte.MAX_VALUE};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt8Arr", new ContractFunctionParameters().addInt8Array(int8Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (int[]) response.getResult("(int8[])").get(0);
+
+ assertThat(responseResult[0]).isEqualTo(int8Array[0]);
+ assertThat(responseResult[1]).isEqualTo(int8Array[1]);
+ }
+
+ @Test
+ @DisplayName("Can receive int16 min value from contract call")
+ void canCallContractFunctionInt16Min() throws Exception {
+ int int16Min = -32768;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt16", new ContractFunctionParameters().addInt16(int16Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt32(0)).isEqualTo(int16Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int16 max value from contract call")
+ void canCallContractFunctionInt16Max() throws Exception {
+ int int16Max = 32767;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt16", new ContractFunctionParameters().addInt16(int16Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt32(0)).isEqualTo(int16Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int16 array value from contract call")
+ void canCallContractFunctionInt16Array() throws Exception {
+ int int16Min = -32768;
+ int int16Max = 32767;
+ int[] int16Array = {int16Min, int16Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt16Arr", new ContractFunctionParameters().addInt16Array(int16Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (int[]) response.getResult("(int16[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int16Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int24 min value from contract call")
+ void canCallContractFunctionInt24Min() throws Exception {
+ int int24Min = -8388608;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt24", new ContractFunctionParameters().addInt24(int24Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt32(0)).isEqualTo(int24Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int24 max value from contract call")
+ void canCallContractFunctionInt24Max() throws Exception {
+ int int24Max = 8388607;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt24", new ContractFunctionParameters().addInt24(int24Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt32(0)).isEqualTo(int24Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int24 array value from contract call")
+ void canCallContractFunctionInt24Array() throws Exception {
+ int int24Min = -8388608;
+ int int24Max = 8388607;
+ int[] int24Array = {int24Min, int24Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt24Arr", new ContractFunctionParameters().addInt24Array(int24Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (int[]) response.getResult("(int24[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int24Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int32 min value from contract call")
+ void canCallContractFunctionInt32Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt32", new ContractFunctionParameters().addInt32(Integer.MIN_VALUE))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt32(0)).isEqualTo(Integer.MIN_VALUE);
+ }
+
+ @Test
+ @DisplayName("Can receive int32 max value from contract call")
+ void canCallContractFunctionInt32Max() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt32", new ContractFunctionParameters().addInt32(Integer.MAX_VALUE))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt32(0)).isEqualTo(Integer.MAX_VALUE);
+ }
+
+ @Test
+ @DisplayName("Can receive int32 array value from contract call")
+ void canCallContractFunctionInt32Array() throws Exception {
+ int int32Min = Integer.MIN_VALUE;
+ int int32Max = Integer.MAX_VALUE;
+ int[] int32Array = {int32Min, int32Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt32Arr", new ContractFunctionParameters().addInt32Array(int32Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (int[]) response.getResult("(int32[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int32Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int40 min value from contract call")
+ void canCallContractFunctionInt40Min() throws Exception {
+ long int40Min = -549755813888L;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt40", new ContractFunctionParameters().addInt40(int40Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt64(0)).isEqualTo(int40Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int40 max value from contract call")
+ void canCallContractFunctionInt40Max() throws Exception {
+ long int40Max = 549755813887L;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt40", new ContractFunctionParameters().addInt40(int40Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt64(0)).isEqualTo(int40Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int40 array value from contract call")
+ void canCallContractFunctionInt40Array() throws Exception {
+ long int40Min = -549755813888L;
+ long int40Max = 549755813887L;
+ long[] int40Array = {int40Min, int40Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt40Arr", new ContractFunctionParameters().addInt40Array(int40Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(int40[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int40Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int48 min value from contract call")
+ void canCallContractFunctionInt48Min() throws Exception {
+ long int48Min = -140737488355328L;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt48", new ContractFunctionParameters().addInt48(int48Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt64(0)).isEqualTo(int48Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int48 max value from contract call")
+ void canCallContractFunctionInt48Max() throws Exception {
+ long int48Max = 140737488355327L;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt48", new ContractFunctionParameters().addInt48(int48Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt64(0)).isEqualTo(int48Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int48 array value from contract call")
+ void canCallContractFunctionInt48Array() throws Exception {
+ long int48Min = -140737488355328L;
+ long int48Max = 140737488355327L;
+ long[] int48Array = {int48Min, int48Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt48Arr", new ContractFunctionParameters().addInt48Array(int48Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(int48[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int48Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int56 min value from contract call")
+ void canCallContractFunctionInt56Min() throws Exception {
+ long int56Min = -36028797018963968L;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt56", new ContractFunctionParameters().addInt56(int56Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt64(0)).isEqualTo(int56Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int56 max value from contract call")
+ void canCallContractFunctionInt56Max() throws Exception {
+ long int56Max = 36028797018963967L;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt56", new ContractFunctionParameters().addInt56(int56Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt64(0)).isEqualTo(int56Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int56 array value from contract call")
+ void canCallContractFunctionInt56Array() throws Exception {
+ long int56Min = -36028797018963968L;
+ long int56Max = 36028797018963967L;
+ long[] int56Array = {int56Min, int56Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt56Arr", new ContractFunctionParameters().addInt56Array(int56Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(int56[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int56Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int64 min value from contract call")
+ void canCallContractFunctionInt64Min() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt64", new ContractFunctionParameters().addInt64(Long.MIN_VALUE))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint64(0)).isEqualTo(Long.MIN_VALUE);
+ }
+
+ @Test
+ @DisplayName("Can receive int64 max value from contract call")
+ void canCallContractFunctionInt64Max() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnUint64", new ContractFunctionParameters().addUint64(Long.MAX_VALUE))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getUint64(0)).isEqualTo(Long.MAX_VALUE);
+ }
+
+ @Test
+ @DisplayName("Can receive int64 array value from contract call")
+ void canCallContractFunctionInt64Array() throws Exception {
+ long int64Min = Long.MIN_VALUE;
+ long int64Max = Long.MAX_VALUE;
+ long[] int64Array = {int64Min, int64Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt64Arr", new ContractFunctionParameters().addInt64Array(int64Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (long[]) response.getResult("(int64[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int64Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int72 min value from contract call")
+ void canCallContractFunctionInt72Min() throws Exception {
+ BigInteger int72Min = new BigInteger("-2361183241434822606848");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt72", new ContractFunctionParameters().addInt72(int72Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int72Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int72 max value from contract call")
+ void canCallContractFunctionInt72Max() throws Exception {
+ BigInteger int72Max = new BigInteger("2361183241434822606847");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt72", new ContractFunctionParameters().addInt72(int72Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int72Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int72 array value from contract call")
+ void canCallContractFunctionInt72Array() throws Exception {
+ BigInteger int72Min = new BigInteger("-2361183241434822606848");
+ BigInteger int72Max = new BigInteger("2361183241434822606847");
+ BigInteger[] int72Array = {int72Min, int72Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt72Arr", new ContractFunctionParameters().addInt72Array(int72Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int72[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int72Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int80 min value from contract call")
+ void canCallContractFunctionInt80Min() throws Exception {
+ BigInteger int80Min = new BigInteger("-604462909807314587353088");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt80", new ContractFunctionParameters().addInt80(int80Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int80Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int80 max value from contract call")
+ void canCallContractFunctionInt80Max() throws Exception {
+ BigInteger int80Max = new BigInteger("604462909807314587353087");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt80", new ContractFunctionParameters().addInt80(int80Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int80Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int80 array value from contract call")
+ void canCallContractFunctionInt80Array() throws Exception {
+ BigInteger int80Min = new BigInteger("-604462909807314587353088");
+ BigInteger int80Max = new BigInteger("604462909807314587353087");
+ BigInteger[] int80Array = {int80Min, int80Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt80Arr", new ContractFunctionParameters().addInt80Array(int80Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int80[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int80Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int88 min value from contract call")
+ void canCallContractFunctionInt88Min() throws Exception {
+ BigInteger int88Min = new BigInteger("-154742504910672534362390528");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt88", new ContractFunctionParameters().addInt88(int88Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int88Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int88 max value from contract call")
+ void canCallContractFunctionInt88Max() throws Exception {
+ BigInteger int88Max = new BigInteger("154742504910672534362390527");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt88", new ContractFunctionParameters().addInt88(int88Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int88Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int88 array value from contract call")
+ void canCallContractFunctionInt88Array() throws Exception {
+ BigInteger int88Min = new BigInteger("-154742504910672534362390528");
+ BigInteger int88Max = new BigInteger("154742504910672534362390527");
+ BigInteger[] int88Array = {int88Min, int88Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt88Arr", new ContractFunctionParameters().addInt88Array(int88Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int88[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int88Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int96 min value from contract call")
+ void canCallContractFunctionInt96Min() throws Exception {
+ BigInteger int96Min = new BigInteger("-39614081257132168796771975168");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt96", new ContractFunctionParameters().addInt96(int96Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int96Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int96 max value from contract call")
+ void canCallContractFunctionInt96Max() throws Exception {
+ BigInteger int96Max = new BigInteger("39614081257132168796771975167");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt96", new ContractFunctionParameters().addInt96(int96Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int96Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int96 array value from contract call")
+ void canCallContractFunctionInt96Array() throws Exception {
+ BigInteger int96Min = new BigInteger("-39614081257132168796771975168");
+ BigInteger int96Max = new BigInteger("39614081257132168796771975167");
+ BigInteger[] int96Array = {int96Min, int96Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt96Arr", new ContractFunctionParameters().addInt96Array(int96Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int96[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int96Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int104 min value from contract call")
+ void canCallContractFunctionInt104Min() throws Exception {
+ BigInteger int104Min = new BigInteger("-10141204801825835211973625643008");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt104", new ContractFunctionParameters().addInt104(int104Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int104Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int104 max value from contract call")
+ void canCallContractFunctionInt104Max() throws Exception {
+ BigInteger int104Max = new BigInteger("10141204801825835211973625643007");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt104", new ContractFunctionParameters().addInt104(int104Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int104Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int104 array value from contract call")
+ void canCallContractFunctionInt104Array() throws Exception {
+ BigInteger int104Min = new BigInteger("-10141204801825835211973625643008");
+ BigInteger int104Max = new BigInteger("10141204801825835211973625643007");
+ BigInteger[] int104Array = {int104Min, int104Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt104Arr", new ContractFunctionParameters().addInt104Array(int104Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int104[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int104Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int112 min value from contract call")
+ void canCallContractFunctionInt112Min() throws Exception {
+ BigInteger int112Min = new BigInteger("-2596148429267413814265248164610048");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt112", new ContractFunctionParameters().addInt112(int112Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int112Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int112 max value from contract call")
+ void canCallContractFunctionInt112Max() throws Exception {
+ BigInteger int112Max = new BigInteger("2596148429267413814265248164610047");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt112", new ContractFunctionParameters().addInt112(int112Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int112Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int112 array value from contract call")
+ void canCallContractFunctionInt112Array() throws Exception {
+ BigInteger int112Min = new BigInteger("-2596148429267413814265248164610048");
+ BigInteger int112Max = new BigInteger("2596148429267413814265248164610047");
+ BigInteger[] int112Array = {int112Min, int112Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt112Arr", new ContractFunctionParameters().addInt112Array(int112Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int112[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int112Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int120 min value from contract call")
+ void canCallContractFunctionInt120Min() throws Exception {
+ BigInteger int120Min = new BigInteger("-664613997892457936451903530140172288");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt120", new ContractFunctionParameters().addInt120(int120Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int120Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int120 max value from contract call")
+ void canCallContractFunctionInt120Max() throws Exception {
+ BigInteger int120Max = new BigInteger("664613997892457936451903530140172287");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt120", new ContractFunctionParameters().addInt120(int120Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int120Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int120 array value from contract call")
+ void canCallContractFunctionInt120Array() throws Exception {
+ BigInteger int120Min = new BigInteger("-664613997892457936451903530140172288");
+ BigInteger int120Max = new BigInteger("664613997892457936451903530140172287");
+ BigInteger[] int120Array = {int120Min, int120Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt120Arr", new ContractFunctionParameters().addInt120Array(int120Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int120[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int120Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int128 min value from contract call")
+ void canCallContractFunctionInt128Min() throws Exception {
+ BigInteger int128Min = new BigInteger("-170141183460469231731687303715884105728");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt128", new ContractFunctionParameters().addInt128(int128Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int128Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int128 max value from contract call")
+ void canCallContractFunctionInt128Max() throws Exception {
+ BigInteger int128Max = new BigInteger("170141183460469231731687303715884105727");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt128", new ContractFunctionParameters().addInt128(int128Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int128Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int128 array value from contract call")
+ void canCallContractFunctionInt128Array() throws Exception {
+ BigInteger int128Min = new BigInteger("-170141183460469231731687303715884105728");
+ BigInteger int128Max = new BigInteger("170141183460469231731687303715884105727");
+ BigInteger[] int128Array = {int128Min, int128Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt128Arr", new ContractFunctionParameters().addInt128Array(int128Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int128[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int128Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int136 min value from contract call")
+ void canCallContractFunctionInt136Min() throws Exception {
+ BigInteger int136Min = new BigInteger("-43556142965880123323311949751266331066368");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt136", new ContractFunctionParameters().addInt136(int136Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int136Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int136 max value from contract call")
+ void canCallContractFunctionInt136Max() throws Exception {
+ BigInteger int136Max = new BigInteger("43556142965880123323311949751266331066367");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt136", new ContractFunctionParameters().addInt136(int136Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int136Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int136 array value from contract call")
+ void canCallContractFunctionInt136Array() throws Exception {
+ BigInteger int136Min = new BigInteger("-43556142965880123323311949751266331066368");
+ BigInteger int136Max = new BigInteger("43556142965880123323311949751266331066367");
+ BigInteger[] int136Array = {int136Min, int136Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt136Arr", new ContractFunctionParameters().addInt136Array(int136Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int136[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int136Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int144 min value from contract call")
+ void canCallContractFunctionInt144Min() throws Exception {
+ BigInteger int144Min = new BigInteger("-11150372599265311570767859136324180752990208");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt144", new ContractFunctionParameters().addInt144(int144Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int144Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int144 max value from contract call")
+ void canCallContractFunctionInt144Max() throws Exception {
+ BigInteger int144Max = new BigInteger("11150372599265311570767859136324180752990207");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt144", new ContractFunctionParameters().addInt144(int144Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int144Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int144 array value from contract call")
+ void canCallContractFunctionInt144Array() throws Exception {
+ BigInteger int144Min = new BigInteger("-11150372599265311570767859136324180752990208");
+ BigInteger int144Max = new BigInteger("11150372599265311570767859136324180752990207");
+ BigInteger[] int144Array = {int144Min, int144Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt144Arr", new ContractFunctionParameters().addInt144Array(int144Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int144[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int144Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int152 min value from contract call")
+ void canCallContractFunctionInt152Min() throws Exception {
+ BigInteger int152Min = new BigInteger("-2854495385411919762116571938898990272765493248");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt152", new ContractFunctionParameters().addInt152(int152Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int152Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int152 max value from contract call")
+ void canCallContractFunctionInt152Max() throws Exception {
+ BigInteger int152Max = new BigInteger("2854495385411919762116571938898990272765493247");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt152", new ContractFunctionParameters().addInt152(int152Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int152Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int152 array value from contract call")
+ void canCallContractFunctionInt152Array() throws Exception {
+ BigInteger int152Min = new BigInteger("-2854495385411919762116571938898990272765493248");
+ BigInteger int152Max = new BigInteger("2854495385411919762116571938898990272765493247");
+ BigInteger[] int152Array = {int152Min, int152Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt152Arr", new ContractFunctionParameters().addInt152Array(int152Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int152[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int152Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int160 min value from contract call")
+ void canCallContractFunctionInt160Min() throws Exception {
+ BigInteger int160Min = new BigInteger("-730750818665451459101842416358141509827966271488");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt160", new ContractFunctionParameters().addInt160(int160Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int160Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int160 max value from contract call")
+ void canCallContractFunctionInt160Max() throws Exception {
+ BigInteger int160Max = new BigInteger("730750818665451459101842416358141509827966271487");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt160", new ContractFunctionParameters().addInt160(int160Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int160Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int160 array value from contract call")
+ void canCallContractFunctionInt160Array() throws Exception {
+ BigInteger int160Min = new BigInteger("-730750818665451459101842416358141509827966271488");
+ BigInteger int160Max = new BigInteger("730750818665451459101842416358141509827966271487");
+ BigInteger[] int160Array = {int160Min, int160Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt160Arr", new ContractFunctionParameters().addInt160Array(int160Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int160[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int160Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int168 min value from contract call")
+ void canCallContractFunctionInt168Min() throws Exception {
+ BigInteger int168Min = new BigInteger("-187072209578355573530071658587684226515959365500928");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt168", new ContractFunctionParameters().addInt168(int168Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int168Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int168 max value from contract call")
+ void canCallContractFunctionInt168Max() throws Exception {
+ BigInteger int168Max = new BigInteger("187072209578355573530071658587684226515959365500927");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt168", new ContractFunctionParameters().addInt168(int168Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int168Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int168 array value from contract call")
+ void canCallContractFunctionInt168Array() throws Exception {
+ BigInteger int168Min = new BigInteger("-187072209578355573530071658587684226515959365500928");
+ BigInteger int168Max = new BigInteger("187072209578355573530071658587684226515959365500927");
+ BigInteger[] int168Array = {int168Min, int168Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt168Arr", new ContractFunctionParameters().addInt168Array(int168Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int168[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int168Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int176 min value from contract call")
+ void canCallContractFunctionInt176Min() throws Exception {
+ BigInteger int176Min = new BigInteger("-47890485652059026823698344598447161988085597568237568");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt176", new ContractFunctionParameters().addInt176(int176Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int176Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int176 max value from contract call")
+ void canCallContractFunctionInt176Max() throws Exception {
+ BigInteger int176Max = new BigInteger("47890485652059026823698344598447161988085597568237567");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt176", new ContractFunctionParameters().addInt176(int176Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int176Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int176 array value from contract call")
+ void canCallContractFunctionInt176Array() throws Exception {
+ BigInteger int176Min = new BigInteger("-47890485652059026823698344598447161988085597568237568");
+ BigInteger int176Max = new BigInteger("47890485652059026823698344598447161988085597568237567");
+ BigInteger[] int176Array = {int176Min, int176Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt176Arr", new ContractFunctionParameters().addInt176Array(int176Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int176[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int176Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int184 min value from contract call")
+ void canCallContractFunctionInt184Min() throws Exception {
+ BigInteger int184Min = new BigInteger("-12259964326927110866866776217202473468949912977468817408");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt184", new ContractFunctionParameters().addInt184(int184Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int184Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int184 max value from contract call")
+ void canCallContractFunctionInt184Max() throws Exception {
+ BigInteger int184Max = new BigInteger("12259964326927110866866776217202473468949912977468817407");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt184", new ContractFunctionParameters().addInt184(int184Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int184Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int184 array value from contract call")
+ void canCallContractFunctionInt184Array() throws Exception {
+ BigInteger int184Min = new BigInteger("-12259964326927110866866776217202473468949912977468817408");
+ BigInteger int184Max = new BigInteger("12259964326927110866866776217202473468949912977468817407");
+ BigInteger[] int184Array = {int184Min, int184Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt184Arr", new ContractFunctionParameters().addInt184Array(int184Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int184[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int184Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int192 min value from contract call")
+ void canCallContractFunctionInt192Min() throws Exception {
+ BigInteger int192Min = new BigInteger("-3138550867693340381917894711603833208051177722232017256448");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt192", new ContractFunctionParameters().addInt192(int192Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int192Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int192 max value from contract call")
+ void canCallContractFunctionInt192Max() throws Exception {
+ BigInteger int192Max = new BigInteger("3138550867693340381917894711603833208051177722232017256447");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt192", new ContractFunctionParameters().addInt192(int192Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int192Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int192 array value from contract call")
+ void canCallContractFunctionInt192Array() throws Exception {
+ BigInteger int192Min = new BigInteger("-3138550867693340381917894711603833208051177722232017256448");
+ BigInteger int192Max = new BigInteger("3138550867693340381917894711603833208051177722232017256447");
+ BigInteger[] int192Array = {int192Min, int192Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt192Arr", new ContractFunctionParameters().addInt192Array(int192Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int192[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int192Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int200 min value from contract call")
+ void canCallContractFunctionInt200Min() throws Exception {
+ BigInteger int200Min = new BigInteger("-803469022129495137770981046170581301261101496891396417650688");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt200", new ContractFunctionParameters().addInt200(int200Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int200Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int200 max value from contract call")
+ void canCallContractFunctionInt200Max() throws Exception {
+ BigInteger int200Max = new BigInteger("803469022129495137770981046170581301261101496891396417650687");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt200", new ContractFunctionParameters().addInt200(int200Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int200Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int200 array value from contract call")
+ void canCallContractFunctionInt200Array() throws Exception {
+ BigInteger int200Min = new BigInteger("-803469022129495137770981046170581301261101496891396417650688");
+ BigInteger int200Max = new BigInteger("803469022129495137770981046170581301261101496891396417650687");
+ BigInteger[] int200Array = {int200Min, int200Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt200Arr", new ContractFunctionParameters().addInt200Array(int200Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int200[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int200Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int208 min value from contract call")
+ void canCallContractFunctionInt208Min() throws Exception {
+ BigInteger int208Min = new BigInteger("-205688069665150755269371147819668813122841983204197482918576128");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt208", new ContractFunctionParameters().addInt208(int208Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int208Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int208 max value from contract call")
+ void canCallContractFunctionInt208Max() throws Exception {
+ BigInteger int208Max = new BigInteger("205688069665150755269371147819668813122841983204197482918576127");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt208", new ContractFunctionParameters().addInt208(int208Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int208Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int208 array value from contract call")
+ void canCallContractFunctionInt208Array() throws Exception {
+ BigInteger int208Min = new BigInteger("-205688069665150755269371147819668813122841983204197482918576128");
+ BigInteger int208Max = new BigInteger("205688069665150755269371147819668813122841983204197482918576127");
+ BigInteger[] int208Array = {int208Min, int208Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt208Arr", new ContractFunctionParameters().addInt208Array(int208Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int208[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int208Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int216 min value from contract call")
+ void canCallContractFunctionInt216Min() throws Exception {
+ BigInteger int216Min = new BigInteger("-52656145834278593348959013841835216159447547700274555627155488768");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt216", new ContractFunctionParameters().addInt216(int216Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int216Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int216 max value from contract call")
+ void canCallContractFunctionInt216Max() throws Exception {
+ BigInteger int216Max = new BigInteger("52656145834278593348959013841835216159447547700274555627155488767");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt216", new ContractFunctionParameters().addInt216(int216Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int216Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int216 array value from contract call")
+ void canCallContractFunctionInt216Array() throws Exception {
+ BigInteger int216Min = new BigInteger("-52656145834278593348959013841835216159447547700274555627155488768");
+ BigInteger int216Max = new BigInteger("52656145834278593348959013841835216159447547700274555627155488767");
+ BigInteger[] int216Array = {int216Min, int216Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt216Arr", new ContractFunctionParameters().addInt216Array(int216Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int216[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int216Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int224 min value from contract call")
+ void canCallContractFunctionInt224Min() throws Exception {
+ BigInteger int224Min = new BigInteger("-13479973333575319897333507543509815336818572211270286240551805124608");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt224", new ContractFunctionParameters().addInt224(int224Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int224Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int224 max value from contract call")
+ void canCallContractFunctionInt224Max() throws Exception {
+ BigInteger int224Max = new BigInteger("13479973333575319897333507543509815336818572211270286240551805124607");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt224", new ContractFunctionParameters().addInt224(int224Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int224Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int224 array value from contract call")
+ void canCallContractFunctionInt224Array() throws Exception {
+ BigInteger int224Min = new BigInteger("-13479973333575319897333507543509815336818572211270286240551805124608");
+ BigInteger int224Max = new BigInteger("13479973333575319897333507543509815336818572211270286240551805124607");
+ BigInteger[] int224Array = {int224Min, int224Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt224Arr", new ContractFunctionParameters().addInt224Array(int224Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int224[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int224Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int232 min value from contract call")
+ void canCallContractFunctionInt232Min() throws Exception {
+ BigInteger int232Min = new BigInteger(
+ "-3450873173395281893717377931138512726225554486085193277581262111899648");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt232", new ContractFunctionParameters().addInt232(int232Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int232Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int232 max value from contract call")
+ void canCallContractFunctionInt232Max() throws Exception {
+ BigInteger int232Max = new BigInteger("3450873173395281893717377931138512726225554486085193277581262111899647");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt232", new ContractFunctionParameters().addInt232(int232Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int232Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int232 array value from contract call")
+ void canCallContractFunctionInt232Array() throws Exception {
+ BigInteger int232Min = new BigInteger(
+ "-3450873173395281893717377931138512726225554486085193277581262111899648");
+ BigInteger int232Max = new BigInteger("3450873173395281893717377931138512726225554486085193277581262111899647");
+ BigInteger[] int232Array = {int232Min, int232Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt232Arr", new ContractFunctionParameters().addInt232Array(int232Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int232[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int232Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int240 min value from contract call")
+ void canCallContractFunctionInt240Min() throws Exception {
+ BigInteger int240Min = new BigInteger(
+ "-883423532389192164791648750371459257913741948437809479060803100646309888");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt240", new ContractFunctionParameters().addInt240(int240Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int240Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int240 max value from contract call")
+ void canCallContractFunctionInt240Max() throws Exception {
+ BigInteger int240Max = new BigInteger(
+ "883423532389192164791648750371459257913741948437809479060803100646309887");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt240", new ContractFunctionParameters().addInt240(int240Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int240Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int240 array value from contract call")
+ void canCallContractFunctionInt240Array() throws Exception {
+ BigInteger int240Min = new BigInteger(
+ "-883423532389192164791648750371459257913741948437809479060803100646309888");
+ BigInteger int240Max = new BigInteger(
+ "883423532389192164791648750371459257913741948437809479060803100646309887");
+ BigInteger[] int240Array = {int240Min, int240Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt240Arr", new ContractFunctionParameters().addInt240Array(int240Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int240[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int240Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int248 min value from contract call")
+ void canCallContractFunctionInt248Min() throws Exception {
+ BigInteger int248Min = new BigInteger(
+ "-226156424291633194186662080095093570025917938800079226639565593765455331328");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt248", new ContractFunctionParameters().addInt248(int248Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int248Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int248 max value from contract call")
+ void canCallContractFunctionInt248Max() throws Exception {
+ BigInteger int248Max = new BigInteger(
+ "226156424291633194186662080095093570025917938800079226639565593765455331327");
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt248", new ContractFunctionParameters().addInt248(int248Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int248Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int248 array value from contract call")
+ void canCallContractFunctionInt248Array() throws Exception {
+ BigInteger int248Min = new BigInteger(
+ "-226156424291633194186662080095093570025917938800079226639565593765455331328");
+ BigInteger int248Max = new BigInteger(
+ "226156424291633194186662080095093570025917938800079226639565593765455331327");
+ BigInteger[] int248Array = {int248Min, int248Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt248Arr", new ContractFunctionParameters().addInt248Array(int248Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int248[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int248Array);
+ }
+
+ @Test
+ @DisplayName("Can receive int256 min value from contract call")
+ void canCallContractFunctionInt256Min() throws Exception {
+ BigInteger int256Min = new BigInteger("2").pow(256).divide(BigInteger.TWO).negate();
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt256", new ContractFunctionParameters().addInt256(int256Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int256Min);
+ }
+
+ @Test
+ @DisplayName("Can receive int256 max value from contract call")
+ void canCallContractFunctionInt256Max() throws Exception {
+ BigInteger int256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE).divide(BigInteger.TWO);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt256", new ContractFunctionParameters().addInt256(int256Max))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int256Max);
+ }
+
+ @Test
+ @DisplayName("Can receive int256 array value from contract call")
+ void canCallContractFunctionInt256Array() throws Exception {
+ BigInteger int256Min = new BigInteger("2").pow(256).divide(BigInteger.TWO).negate();
+ BigInteger int256Max = new BigInteger("2").pow(256).subtract(BigInteger.ONE).divide(BigInteger.TWO);
+ BigInteger[] int256Array = {int256Min, int256Max};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt256Arr", new ContractFunctionParameters().addInt256Array(int256Array))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (BigInteger[]) response.getResult("(int256[])").get(0);
+
+ assertThat(responseResult).isEqualTo(int256Array);
+ }
+
+ @Test
+ @DisplayName("Can receive multiple int8 values from contract call")
+ void canCallContractFunctionMultipleInt8() throws Exception {
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnInt8Multiple", new ContractFunctionParameters().addInt8(Byte.MIN_VALUE))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt8(0)).isEqualTo(Byte.MIN_VALUE);
+ assertThat(response.getInt8(1)).isEqualTo((byte) -108);
+ }
+
+ @Test
+ @DisplayName("Can receive multiple int40 values from contract call")
+ void canCallContractFunctionMultipleInt40() throws Exception {
+ long int40 = 549755813885L;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnMultipleInt40", new ContractFunctionParameters().addInt40(int40))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt64(0)).isEqualTo(int40);
+ assertThat(response.getInt64(1)).isEqualTo(int40 + 1);
+ }
+
+ @Test
+ @DisplayName("Can receive multiple int256 values from contract call")
+ void canCallContractFunctionMultipleInt256() throws Exception {
+ BigInteger int256Min = new BigInteger("2").pow(256).divide(BigInteger.TWO).negate();
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnMultipleInt256", new ContractFunctionParameters().addInt256(int256Min))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getInt256(0)).isEqualTo(int256Min);
+ assertThat(response.getInt256(1)).isEqualTo(int256Min.add(BigInteger.ONE));
+ }
+
+ @Test
+ @DisplayName("Can receive multiple types of values from contract call")
+ void canCallContractFunctionMultipleTypes() throws Exception {
+ var uint32Max = "4294967295";
+ int uint32MaxInt = Integer.parseUnsignedInt(uint32Max);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnMultipleTypeParams", new ContractFunctionParameters().addUint32(uint32MaxInt))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(Integer.toUnsignedString(response.getUint32(0))).isEqualTo(uint32Max);
+ assertThat(response.getUint64(1)).isEqualTo(Long.parseUnsignedLong(uint32Max) - 1);
+ assertThat(response.getString(2)).isEqualTo("OK");
+ }
+
+ @Test
+ @DisplayName("Can receive string value from contract call")
+ void canCallContractFunctionStringType() throws Exception {
+ var testString = "test";
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnString", new ContractFunctionParameters().addString(testString))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getString(0)).isEqualTo(testString);
+ }
+
+ @Test
+ @DisplayName("Can receive string array value from contract call")
+ void canCallContractFunctionStringArrayType() throws Exception {
+ var testStringArray = new String[]{"Test1", "Test2"};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnStringArr", new ContractFunctionParameters().addStringArray(testStringArray))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getStringArray(0).get(0)).isEqualTo(testStringArray[0]);
+ assertThat(response.getStringArray(0).get(1)).isEqualTo(testStringArray[1]);
+ }
+
+ @Test
+ @DisplayName("Can receive string array value from contract call with getResult function")
+ void canCallContractFunctionStringArrayType_getResult() throws Exception {
+ var testStringArray = new String[]{"Test1", "Test2"};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnStringArr", new ContractFunctionParameters().addStringArray(testStringArray))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (String[]) response.getResult("(string[])").get(0);
+ assertThat(responseResult).isEqualTo(testStringArray);
+ }
+
+ @Test
+ @DisplayName("Can receive address value from contract call")
+ void canCallContractFunctionAddressType() throws Exception {
+ var testAddress = "1234567890123456789012345678901234567890";
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnAddress", new ContractFunctionParameters().addAddress(testAddress))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getAddress(0)).isEqualTo(testAddress);
+ }
+
+ @Test
+ @DisplayName("Can receive address array value from contract call")
+ void canCallContractFunctionAddressArrayType() throws Exception {
+ var testAddressArray = new String[]{"1234567890123456789012345678901234567890",
+ "1234567890123456789012345678901234567891"};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnAddressArr", new ContractFunctionParameters().addAddressArray(testAddressArray))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (Address[]) response.getResult("(address[])").get(0);
+
+ Address[] testAddressArray_Address = Arrays.stream(testAddressArray).map(addressStr -> "0x" + addressStr)
+ .map(Address::wrap).toArray(Address[]::new);
+
+ assertThat(responseResult).isEqualTo(testAddressArray_Address);
+ }
+
+ @Test
+ @DisplayName("Can receive boolean value from contract call")
+ void canCallContractFunctionBooleanType() throws Exception {
+ var testBoolean = true;
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnBoolean", new ContractFunctionParameters().addBool(testBoolean))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getBool(0)).isEqualTo(testBoolean);
+ }
+
+ @Test
+ @DisplayName("Can receive boolean array value from contract call")
+ void canCallContractFunctionBooleanArrayType() throws Exception {
+ var testBooleanArray = new boolean[]{true, false};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnBooleanArr", new ContractFunctionParameters().addBoolArray(testBooleanArray))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (boolean[]) response.getResult("(bool[])").get(0);
+
+ assertThat(responseResult).isEqualTo(testBooleanArray);
+ }
+
+ @Test
+ @DisplayName("Can receive bytes value from contract call")
+ void canCallContractFunctionBytesType() throws Exception {
+ var testBytes = "Test".getBytes();
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnBytes", new ContractFunctionParameters().addBytes(testBytes))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getBytes(0)).isEqualTo(testBytes);
+ }
+
+ @Test
+ @DisplayName("Can receive bytes array value from contract call")
+ void canCallContractFunctionBytesArrayType() throws Exception {
+ byte[][] testBytes = new byte[][]{"Test1".getBytes(), "Test2".getBytes()};
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnBytesArr", new ContractFunctionParameters().addBytesArray(testBytes))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (byte[][]) response.getResult("(bytes[])").get(0);
+
+ assertThat(responseResult).isEqualTo(testBytes);
+ }
+
+ @Test
+ @DisplayName("Can receive bytes32 value from contract call")
+ void canCallContractFunctionBytes32Type() throws Exception {
+ byte[] testBytes = "Test".getBytes();
+ byte[] testBytesLen32 = new byte[32];
+ System.arraycopy(testBytes, 0, testBytesLen32, 0, testBytes.length);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnBytes32", new ContractFunctionParameters().addBytes32(testBytesLen32))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ assertThat(response.getBytes32(0)).isEqualTo(testBytesLen32);
+ }
+
+ @Test
+ @DisplayName("Can receive bytes32 array value from contract call")
+ void canCallContractFunctionBytes32ArrayType() throws Exception {
+ byte[] testBytes = "Test".getBytes();
+ byte[] testBytes2 = "Test2".getBytes();
+ byte[][] testBytesLen32 = new byte[2][32];
+ System.arraycopy(testBytes, 0, testBytesLen32[0], 0, testBytes.length);
+ System.arraycopy(testBytes2, 0, testBytesLen32[1], 0, testBytes2.length);
+
+ var response = new ContractCallQuery().setContractId(contractId).setGas(1500000)
+ .setFunction("returnBytes32Arr", new ContractFunctionParameters().addBytes32Array(testBytesLen32))
+ .setQueryPayment(new Hbar(10)).execute(testEnv.client);
+
+ var responseResult = (byte[][]) response.getResult("(bytes32[])").get(0);
+
+ assertThat(responseResult).isEqualTo(testBytesLen32);
+ }
+}
diff --git a/sdk/src/integrationTest/java/ContractIdPopulationIntegrationTest.java b/sdk/src/integrationTest/java/ContractIdPopulationIntegrationTest.java
new file mode 100644
index 000000000..2e7163f7f
--- /dev/null
+++ b/sdk/src/integrationTest/java/ContractIdPopulationIntegrationTest.java
@@ -0,0 +1,90 @@
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.hedera.hashgraph.sdk.ContractCreateTransaction;
+import com.hedera.hashgraph.sdk.ContractFunctionParameters;
+import com.hedera.hashgraph.sdk.ContractId;
+import com.hedera.hashgraph.sdk.ContractInfoQuery;
+import com.hedera.hashgraph.sdk.FileCreateTransaction;
+import java.util.Objects;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+class ContractIdPopulationIntegrationTest {
+ @Test
+ @DisplayName("Can populate ContractId num from mirror node (using sync method)")
+ void canPopulateContractIdNumSync() throws Exception {
+ var testEnv = new IntegrationTestEnv(1);
+
+ var testContractByteCode = "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101cb806100606000396000f3fe608060405260043610610046576000357c01000000000000000000000000000000000000000000000000000000009004806341c0e1b51461004b578063cfae321714610062575b600080fd5b34801561005757600080fd5b506100606100f2565b005b34801561006e57600080fd5b50610077610162565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b757808201518184015260208101905061009c565b50505050905090810190601f1680156100e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610160573373ffffffffffffffffffffffffffffffffffffffff16ff5b565b60606040805190810160405280600d81526020017f48656c6c6f2c20776f726c64210000000000000000000000000000000000000081525090509056fea165627a7a72305820ae96fb3af7cde9c0abfe365272441894ab717f816f07f41f07b1cbede54e256e0029";
+
+ var response = new FileCreateTransaction()
+ .setKeys(testEnv.operatorKey)
+ .setContents(testContractByteCode)
+ .execute(testEnv.client);
+
+ var receipt = response.setValidateStatus(true).getReceipt(testEnv.client);
+ var fileId = Objects.requireNonNull(receipt.fileId);
+
+ response = new ContractCreateTransaction()
+ .setAdminKey(testEnv.operatorKey)
+ .setGas(100000)
+ .setConstructorParameters(new ContractFunctionParameters().addString("Hello from Hedera."))
+ .setBytecodeFileId(fileId)
+ .setContractMemo("[e2e::canPopulateContractIdNum]")
+ .execute(testEnv.client);
+
+ receipt = response.setValidateStatus(true).getReceipt(testEnv.client);
+
+ var contractId = Objects.requireNonNull(receipt.contractId);
+
+ var info = new ContractInfoQuery()
+ .setContractId(contractId)
+ .execute(testEnv.client);
+
+ var idMirror = ContractId.fromEvmAddress(0, 0, info.contractAccountId);
+ Thread.sleep(5000);
+
+ var newContractId = idMirror.populateContractNum(testEnv.client);
+
+ assertThat(contractId.num).isEqualTo(newContractId.num);
+ }
+
+ @Test
+ @DisplayName("Can populate ContractId num from mirror node (using async method)")
+ void canPopulateContractIdNumAsync() throws Exception {
+ var testEnv = new IntegrationTestEnv(1);
+
+ var testContractByteCode = "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506101cb806100606000396000f3fe608060405260043610610046576000357c01000000000000000000000000000000000000000000000000000000009004806341c0e1b51461004b578063cfae321714610062575b600080fd5b34801561005757600080fd5b506100606100f2565b005b34801561006e57600080fd5b50610077610162565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100b757808201518184015260208101905061009c565b50505050905090810190601f1680156100e45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610160573373ffffffffffffffffffffffffffffffffffffffff16ff5b565b60606040805190810160405280600d81526020017f48656c6c6f2c20776f726c64210000000000000000000000000000000000000081525090509056fea165627a7a72305820ae96fb3af7cde9c0abfe365272441894ab717f816f07f41f07b1cbede54e256e0029";
+
+ var response = new FileCreateTransaction()
+ .setKeys(testEnv.operatorKey)
+ .setContents(testContractByteCode)
+ .execute(testEnv.client);
+
+ var receipt = response.setValidateStatus(true).getReceipt(testEnv.client);
+ var fileId = Objects.requireNonNull(receipt.fileId);
+
+ response = new ContractCreateTransaction()
+ .setAdminKey(testEnv.operatorKey)
+ .setGas(100000)
+ .setConstructorParameters(new ContractFunctionParameters().addString("Hello from Hedera."))
+ .setBytecodeFileId(fileId)
+ .setContractMemo("[e2e::canPopulateContractIdNum]")
+ .execute(testEnv.client);
+
+ receipt = response.setValidateStatus(true).getReceipt(testEnv.client);
+
+ var contractId = Objects.requireNonNull(receipt.contractId);
+
+ var info = new ContractInfoQuery()
+ .setContractId(contractId)
+ .execute(testEnv.client);
+
+ var idMirror = ContractId.fromEvmAddress(0, 0, info.contractAccountId);
+ Thread.sleep(5000);
+
+ var newContractId = idMirror.populateContractNumAsync(testEnv.client).get();
+
+ assertThat(contractId.num).isEqualTo(newContractId.num);
+ }
+}
diff --git a/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java b/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java
index f9d6c1aae..c12165af6 100644
--- a/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java
+++ b/sdk/src/integrationTest/java/ContractNonceInfoIntegrationTest.java
@@ -14,11 +14,10 @@
public class ContractNonceInfoIntegrationTest {
private static final String SMART_CONTRACT_BYTECODE = "6080604052348015600f57600080fd5b50604051601a90603b565b604051809103906000f0801580156035573d6000803e3d6000fd5b50506047565b605c8061009483390190565b603f806100556000396000f3fe6080604052600080fdfea2646970667358221220a20122cbad3457fedcc0600363d6e895f17048f5caa4afdab9e655123737567d64736f6c634300081200336080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea264697066735822122053dfd8835e3dc6fedfb8b4806460b9b7163f8a7248bac510c6d6808d9da9d6d364736f6c63430008120033";
- // revisit me later
@Test
@DisplayName("Contract Create of A nonce, which deploys contract B in CONSTRUCTOR")
void canIncrementNonceThroughContractConstructor() throws Exception {
- var testEnv = new IntegrationTestEnv(1, 1);
+ var testEnv = new IntegrationTestEnv(1);
@Var var response = new FileCreateTransaction()
.setKeys(testEnv.operatorKey)
diff --git a/sdk/src/integrationTest/java/IntegrationTestEnv.java b/sdk/src/integrationTest/java/IntegrationTestEnv.java
index e0040e1cc..c724443f2 100644
--- a/sdk/src/integrationTest/java/IntegrationTestEnv.java
+++ b/sdk/src/integrationTest/java/IntegrationTestEnv.java
@@ -72,48 +72,6 @@ public IntegrationTestEnv(int maxNodesPerTransaction) throws Exception {
client.setNetwork(network);
}
- // revisit me later
- public IntegrationTestEnv(int maxNodesPerTransaction, int previewnet) throws Exception {
-
- client = Client.forPreviewnet();
-
- if (maxNodesPerTransaction == 0) {
- maxNodesPerTransaction = client.getNetwork().size();
- }
-
- client.setMaxNodesPerTransaction(maxNodesPerTransaction);
- originalClient = client;
-
- try {
- var operatorPrivateKey = PrivateKey.fromString(
- "302e020100300506032b657004220420895ce211730a889dce859325fc2dc79517f6cd2071ac4c4e135fcc46b09c83dd");
- operatorId = AccountId.fromString("0.0.1071");
- operatorKey = operatorPrivateKey.getPublicKey();
-
- client.setOperator(operatorId, operatorPrivateKey);
- } catch (RuntimeException ignored) {
- }
-
- operatorKey = client.getOperatorPublicKey();
- operatorId = client.getOperatorAccountId();
-
- assertThat(client.getOperatorAccountId()).isNotNull();
- assertThat(client.getOperatorPublicKey()).isNotNull();
-
- if (client.getNetwork().size() > 0 && (client.getNetwork().containsKey(DEFAULT_LOCAL_NODE_ADDRESS))) {
- isLocalNode = true;
- }
-
- var nodeGetter = new TestEnvNodeGetter(client);
- var network = new HashMap();
-
- var nodeCount = Math.min(client.getNetwork().size(), maxNodesPerTransaction);
- for (@Var int i = 0; i < nodeCount; i++) {
- nodeGetter.nextNode(network);
- }
- client.setNetwork(network);
- }
-
@SuppressWarnings("EmptyCatch")
private static Client createTestEnvClient() throws Exception {
if (System.getProperty("HEDERA_NETWORK").equals("previewnet")) {
diff --git a/sdk/src/integrationTest/java/TokenPauseIntegrationTest.java b/sdk/src/integrationTest/java/TokenPauseIntegrationTest.java
new file mode 100644
index 000000000..c4b5272d8
--- /dev/null
+++ b/sdk/src/integrationTest/java/TokenPauseIntegrationTest.java
@@ -0,0 +1,62 @@
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import com.hedera.hashgraph.sdk.AccountCreateTransaction;
+import com.hedera.hashgraph.sdk.Hbar;
+import com.hedera.hashgraph.sdk.PrecheckStatusException;
+import com.hedera.hashgraph.sdk.PrivateKey;
+import com.hedera.hashgraph.sdk.ReceiptStatusException;
+import com.hedera.hashgraph.sdk.TokenAssociateTransaction;
+import com.hedera.hashgraph.sdk.TokenCreateTransaction;
+import com.hedera.hashgraph.sdk.TokenPauseTransaction;
+import com.hedera.hashgraph.sdk.TransferTransaction;
+import java.util.Collections;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class TokenPauseIntegrationTest {
+
+ @Test
+ @DisplayName("Can execute token pause transaction")
+ void canExecuteTokenPauseTransaction() throws Exception {
+ var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
+ var accountKey = PrivateKey.generateED25519();
+ var testTokenAmount = 10;
+ var accountId = new AccountCreateTransaction().setKey(accountKey).setInitialBalance(new Hbar(2))
+ .execute(testEnv.client).getReceipt(testEnv.client).accountId;
+
+ var tokenId = new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setInitialSupply(1000000)
+ .setDecimals(3).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey)
+ .setPauseKey(testEnv.operatorKey).setFreezeDefault(false).execute(testEnv.client)
+ .getReceipt(testEnv.client).tokenId;
+
+ new TokenAssociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId))
+ .freezeWith(testEnv.client).sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client);
+
+ new TransferTransaction().addTokenTransfer(tokenId, accountId, testTokenAmount)
+ .addTokenTransfer(tokenId, testEnv.operatorId, -testTokenAmount).execute(testEnv.client)
+ .getReceipt(testEnv.client);
+
+ new TokenPauseTransaction().setTokenId(tokenId).freezeWith(testEnv.client).execute(testEnv.client)
+ .getReceipt(testEnv.client);
+
+ assertThrows(ReceiptStatusException.class, () -> {
+ new TransferTransaction().addTokenTransfer(tokenId, accountId, testTokenAmount)
+ .addTokenTransfer(tokenId, testEnv.operatorId, -testTokenAmount).freezeWith(testEnv.client)
+ .sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client);
+ });
+
+ testEnv.close();
+ }
+
+ @Test
+ @DisplayName("Cannot pause with no token ID")
+ void cannotPauseWithNoTokenId() throws Exception {
+ var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
+
+ assertThrows(PrecheckStatusException.class, () -> {
+ new TokenPauseTransaction().execute(testEnv.client).getReceipt(testEnv.client);
+ });
+
+ testEnv.close();
+ }
+}
diff --git a/sdk/src/integrationTest/java/TokenUnpauseIntegrationTest.java b/sdk/src/integrationTest/java/TokenUnpauseIntegrationTest.java
new file mode 100644
index 000000000..028c324f6
--- /dev/null
+++ b/sdk/src/integrationTest/java/TokenUnpauseIntegrationTest.java
@@ -0,0 +1,66 @@
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import com.hedera.hashgraph.sdk.AccountCreateTransaction;
+import com.hedera.hashgraph.sdk.AccountDeleteTransaction;
+import com.hedera.hashgraph.sdk.Hbar;
+import com.hedera.hashgraph.sdk.PrecheckStatusException;
+import com.hedera.hashgraph.sdk.PrivateKey;
+import com.hedera.hashgraph.sdk.TokenAssociateTransaction;
+import com.hedera.hashgraph.sdk.TokenCreateTransaction;
+import com.hedera.hashgraph.sdk.TokenDeleteTransaction;
+import com.hedera.hashgraph.sdk.TokenUnpauseTransaction;
+import com.hedera.hashgraph.sdk.TokenWipeTransaction;
+import com.hedera.hashgraph.sdk.TransferTransaction;
+import java.util.Collections;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class TokenUnpauseIntegrationTest {
+
+ @Test
+ @DisplayName("Can execute token unpause transaction")
+ void canExecuteTokenUnpauseTransaction() throws Exception {
+ var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
+ var accountKey = PrivateKey.generateED25519();
+ var testTokenAmount = 10;
+ var accountId = new AccountCreateTransaction().setKey(accountKey).setInitialBalance(new Hbar(2))
+ .execute(testEnv.client).getReceipt(testEnv.client).accountId;
+
+ var tokenId = new TokenCreateTransaction().setTokenName("ffff").setTokenSymbol("F").setInitialSupply(1000000)
+ .setDecimals(3).setTreasuryAccountId(testEnv.operatorId).setAdminKey(testEnv.operatorKey)
+ .setPauseKey(testEnv.operatorKey).setWipeKey(testEnv.operatorKey).setFreezeDefault(false)
+ .execute(testEnv.client).getReceipt(testEnv.client).tokenId;
+
+ new TokenAssociateTransaction().setAccountId(accountId).setTokenIds(Collections.singletonList(tokenId))
+ .freezeWith(testEnv.client).sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client);
+
+ new TokenUnpauseTransaction().setTokenId(tokenId).freezeWith(testEnv.client).execute(testEnv.client)
+ .getReceipt(testEnv.client);
+
+ new TransferTransaction().addTokenTransfer(tokenId, accountId, testTokenAmount)
+ .addTokenTransfer(tokenId, testEnv.operatorId, -testTokenAmount).execute(testEnv.client)
+ .getReceipt(testEnv.client);
+
+ new TokenWipeTransaction().setTokenId(tokenId).setAccountId(accountId).setAmount(testTokenAmount)
+ .execute(testEnv.client).getReceipt(testEnv.client);
+
+ new TokenDeleteTransaction().setTokenId(tokenId).execute(testEnv.client).getReceipt(testEnv.client);
+
+ new AccountDeleteTransaction().setTransferAccountId(testEnv.operatorId).setAccountId(accountId)
+ .freezeWith(testEnv.client).sign(accountKey).execute(testEnv.client).getReceipt(testEnv.client);
+
+ testEnv.close();
+ }
+
+ @Test
+ @DisplayName("Cannot unpause with no token ID")
+ void cannotUnpauseWithNoTokenId() throws Exception {
+ var testEnv = new IntegrationTestEnv(1).useThrowawayAccount();
+
+ assertThrows(PrecheckStatusException.class, () -> {
+ new TokenUnpauseTransaction().execute(testEnv.client).getReceipt(testEnv.client);
+ });
+
+ testEnv.close();
+ }
+}
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java
index 29a072161..21882580f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceAdjustTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java
index c352bf0bd..b0b0fe303 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceApproveTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java
index e0c05e3a5..27fd8438a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountAllowanceDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java
index 4ee5764e1..c06adad5a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalance.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java
index c4344a378..a103a54ba 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountBalanceQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java
index 6ca18c996..0ee3bf9df 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountCreateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java
index d59cfae6c..150d47b66 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java
index 1075cf937..f60991014 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,13 +22,14 @@
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.hedera.hashgraph.sdk.proto.AccountID;
-import org.bouncycastle.util.encoders.Hex;
-
-import javax.annotation.Nonnegative;
-import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.regex.Pattern;
+import javax.annotation.Nonnegative;
+import javax.annotation.Nullable;
+import org.bouncycastle.util.encoders.Hex;
/**
* The ID for a cryptocurrency account on Hedera.
@@ -223,7 +224,11 @@ public static AccountId fromEvmAddress(EvmAddress evmAddress, @Nonnegative long
* @return the account id object
*/
public static AccountId fromSolidityAddress(String address) {
- return EntityIdHelper.fromSolidityAddress(address, AccountId::new);
+ if (EntityIdHelper.isLongZeroAddress(EntityIdHelper.decodeSolidityAddress(address))) {
+ return EntityIdHelper.fromSolidityAddress(address, AccountId::new);
+ } else {
+ return fromEvmAddress(address);
+ }
}
/**
@@ -293,6 +298,40 @@ AccountID toProtobuf() {
return accountIdBuilder.build();
}
+ /**
+ * Gets the actual `num` field of the `AccountId` from the Mirror Node.
+ * Should be used after generating `AccountId.fromEvmAddress()` because it sets the `num` field to `0`
+ * automatically since there is no connection between the `num` and the `evmAddress`
+ * Sync version
+ *
+ * @param client
+ * @return populated AccountId instance
+ */
+ public AccountId populateAccountNum(Client client) throws InterruptedException, ExecutionException {
+ return populateAccountNumAsync(client).get();
+ }
+
+ /**
+ * Gets the actual `num` field of the `AccountId` from the Mirror Node.
+ * Should be used after generating `AccountId.fromEvmAddress()` because it sets the `num` field to `0`
+ * automatically since there is no connection between the `num` and the `evmAddress`
+ * Async version
+ *
+ * @param client
+ * @return populated AccountId instance
+ */
+ public CompletableFuture populateAccountNumAsync(Client client) {
+ return EntityIdHelper.getAccountNumFromMirrorNodeAsync(client, evmAddress.toString())
+ .thenApply(accountNumFromMirrorNode ->
+ new AccountId(
+ this.shard,
+ this.realm,
+ accountNumFromMirrorNode,
+ this.checksum,
+ this.aliasKey,
+ this.evmAddress));
+ }
+
/**
* @param client to validate against
* @throws BadEntityIdException if entity ID is formatted poorly
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java
index 175edc650..47f172946 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java
index cada2595a..1fb0c0c68 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoFlow.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java
index 699b23b4f..d4b7bdde7 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java
index 2674d1fc3..12bbf31f3 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountRecordsQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java
index fde3ee927..159ba1643 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountStakersQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java
index c524405d3..778331c69 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AccountUpdateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java
index 514649f5a..682934a74 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AddressBookQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java
index bbf6a6f8e..49ff9bd8d 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/AssessedCustomFee.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java
index 476cec78b..3ed3a1926 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadEntityIdException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java
index 27a0ecca0..8b7a50ad0 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadKeyException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java
index 458941da4..c43d03bab 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java
index 2b2ac76a4..8ab2895c8 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BadMnemonicReason.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java
index a1a983a19..84ec35f90 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNetwork.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java
index 6ab1961a7..81faf0c52 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNode.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -27,14 +27,13 @@
import io.grpc.ManagedChannelBuilder;
import io.grpc.TlsChannelCredentials;
import io.grpc.inprocess.InProcessChannelBuilder;
-import java.util.Objects;
-import java.util.concurrent.CompletableFuture;
import java.time.Duration;
import java.time.Instant;
-
-import javax.annotation.Nullable;
+import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.TimeUnit;
+import javax.annotation.Nullable;
/**
* Internal utility class.
@@ -282,9 +281,10 @@ synchronized ManagedChannel getChannel() {
channel = channelBuilder
.keepAliveTimeout(10, TimeUnit.SECONDS)
+ .keepAliveWithoutCalls(true)
+ .disableRetry()
.userAgent(getUserAgent())
.executor(executor)
- .disableRetry()
.build();
return channel;
@@ -296,12 +296,20 @@ synchronized ManagedChannel getChannel() {
* @return did we fail to connect
*/
boolean channelFailedToConnect() {
+ return channelFailedToConnect(Instant.MAX);
+ }
+
+ boolean channelFailedToConnect(Instant timeoutTime) {
if (hasConnected) {
return false;
}
hasConnected = (getChannel().getState(true) == ConnectivityState.READY);
try {
for (@Var int i = 0; i < GET_STATE_MAX_ATTEMPTS && !hasConnected; i++) {
+ Duration currentTimeout = Duration.between(Instant.now(), timeoutTime);
+ if (currentTimeout.isNegative() || currentTimeout.isZero()) {
+ return false;
+ }
TimeUnit.MILLISECONDS.sleep(GET_STATE_INTERVAL_MILLIS);
hasConnected = (getChannel().getState(true) == ConnectivityState.READY);
}
@@ -311,6 +319,7 @@ boolean channelFailedToConnect() {
return !hasConnected;
}
+
private CompletableFuture channelFailedToConnectAsync(int i, ConnectivityState state) {
hasConnected = (state == ConnectivityState.READY);
if (i >= GET_STATE_MAX_ATTEMPTS || hasConnected) {
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java
index afd0332ad..ac32d766f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/BaseNodeAddress.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java
index fe446d5b6..42921e41d 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ChunkedTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java
index c8006808c..a843813f7 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Client.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java
index 1a4589e91..4b7147024 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractByteCodeQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java
index d9de0f543..2282b7fe4 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCallQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java
index fe0141b7f..547141393 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateFlow.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java
index 83e71f353..f14726162 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractCreateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java
index 3d3b89d90..8ff40a3fe 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java
index bb1219642..f4e525519 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractExecuteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java
index bbad72dfe..dc3419b5c 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionParameters.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -93,6 +93,10 @@ private static ByteString encodeBytes32(byte[] bytes) {
return rightPad32(ByteString.copyFrom(bytes));
}
+ private static ByteString encodeBool(boolean bool) {
+ return int256(bool ? 1 : 0, 8);
+ }
+
private static ByteString encodeArray(Stream elements) {
List list = elements.toList();
@@ -312,7 +316,27 @@ public ContractFunctionParameters addBytes32Array(byte[][] param) {
*/
public ContractFunctionParameters addBool(boolean bool) {
// boolean encodes to `uint8` of values [0, 1]
- args.add(new Argument("bool", int256(bool ? 1 : 0, 8), false));
+ args.add(new Argument("bool", encodeBool(bool), false));
+ return this;
+ }
+
+ /**
+ * Add a boolean array parameter
+ *
+ * @param param The array of booleans to be added
+ * @return {@code this}
+ */
+ public ContractFunctionParameters addBoolArray(boolean[] param) {
+ Boolean[] boolWrapperArray = new Boolean[param.length];
+ for (int i = 0; i < param.length; i++) {
+ boolWrapperArray[i] = param[i];
+ }
+
+ Stream bools = Arrays.stream(boolWrapperArray)
+ .map(ContractFunctionParameters::encodeBool);
+
+ args.add(new Argument("bool[]", encodeArray(bools), true));
+
return this;
}
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java
index 2f557206b..b478ccdc7 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionResult.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,18 +19,19 @@
*/
package com.hedera.hashgraph.sdk;
+import com.esaulpaugh.headlong.abi.Tuple;
+import com.esaulpaugh.headlong.abi.TupleType;
import com.google.common.base.MoreObjects;
import com.google.protobuf.ByteString;
import com.google.protobuf.BytesValue;
import com.hedera.hashgraph.sdk.proto.ContractFunctionResultOrBuilder;
-import org.bouncycastle.util.encoders.Hex;
-
-import javax.annotation.Nullable;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
+import javax.annotation.Nullable;
+import org.bouncycastle.util.encoders.Hex;
/**
* Result of invoking a contract via {@link ContractCallQuery}, or {@link ContractExecuteTransaction}, or the result of
@@ -111,8 +112,9 @@ public final class ContractFunctionResult {
@Nullable
public final AccountId senderAccountId;
/**
- * A list of updated contract account nonces containing the new nonce value for each contract account.
- * This is always empty in a ContractCallLocalResponse#ContractFunctionResult message, since no internal creations can happen in a static EVM call.
+ * A list of updated contract account nonces containing the new nonce value for each contract account. This is
+ * always empty in a ContractCallLocalResponse#ContractFunctionResult message, since no internal creations can
+ * happen in a static EVM call.
*/
public final List contractNonces;
private final ByteString rawResult;
@@ -474,4 +476,9 @@ public String toString() {
.add("contractNonces", contractNonces)
.toString();
}
+
+ public Tuple getResult(String types) {
+ TupleType tupleType = TupleType.parse(types);
+ return tupleType.decode(rawResult.toByteArray());
+ }
}
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java
index ec0aa7e53..52cb3e62d 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractFunctionSelector.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java
index 32985478d..efa5c4b83 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -22,13 +22,14 @@
import com.google.protobuf.ByteString;
import com.google.protobuf.InvalidProtocolBufferException;
import com.hedera.hashgraph.sdk.proto.ContractID;
-import org.bouncycastle.util.encoders.Hex;
-
-import javax.annotation.Nonnegative;
-import javax.annotation.Nullable;
import java.util.Arrays;
import java.util.Objects;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.regex.Pattern;
+import javax.annotation.Nonnegative;
+import javax.annotation.Nullable;
+import org.bouncycastle.util.encoders.Hex;
/**
* The ID for a smart contract instance on Hedera.
@@ -133,7 +134,11 @@ public static ContractId fromString(String id) {
* @return the contract id object
*/
public static ContractId fromSolidityAddress(String address) {
- return EntityIdHelper.fromSolidityAddress(address, ContractId::new);
+ if (EntityIdHelper.isLongZeroAddress(EntityIdHelper.decodeSolidityAddress(address))) {
+ return EntityIdHelper.fromSolidityAddress(address, ContractId::new);
+ } else {
+ return fromEvmAddress(0, 0, address);
+ }
}
/**
@@ -212,6 +217,36 @@ ContractID toProtobuf() {
return builder.build();
}
+ /**
+ * Gets the actual `num` field of the `ContractId` from the Mirror Node.
+ * Should be used after generating `ContractId.fromEvmAddress()` because it sets the `num` field to `0`
+ * automatically since there is no connection between the `num` and the `evmAddress`
+ * Sync version
+ *
+ * @param client
+ * @return populated ContractId instance
+ */
+ public ContractId populateContractNum(Client client) throws InterruptedException, ExecutionException {
+ return populateContractNumAsync(client).get();
+ }
+
+ /**
+ * Gets the actual `num` field of the `ContractId` from the Mirror Node.
+ * Should be used after generating `ContractId.fromEvmAddress()` because it sets the `num` field to `0`
+ * automatically since there is no connection between the `num` and the `evmAddress`
+ * Async version
+ *
+ * @param client
+ * @return populated ContractId instance
+ */
+ public CompletableFuture populateContractNumAsync(Client client) {
+ EvmAddress address = new EvmAddress(this.evmAddress);
+
+ return EntityIdHelper.getContractNumFromMirrorNodeAsync(client, address.toString())
+ .thenApply(contractNumFromMirrorNode ->
+ new ContractId(this.shard, this.realm, contractNumFromMirrorNode, checksum));
+ }
+
/**
* @param client to validate against
* @throws BadEntityIdException if entity ID is formatted poorly
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java
index 8f94adca6..e432fe2eb 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java
index 25fa517a1..14c82880a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java
index 6f9a43611..df2b44452 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractLogInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java
index adaf6ad23..7e2a2eb90 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractStateChange.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java
index 14fad8289..472d0a078 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ContractUpdateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java
index b89106ed1..ab582a39d 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Crypto.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java
index 93ce6edd1..4432f309a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFee.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java
index 374666cb6..00475043a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFeeBase.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java
index a4f99d5ac..b2ea8b432 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFixedFee.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java
index 998bda1eb..320236c93 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomFractionalFee.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java
index 59e8cab56..de6091ebc 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/CustomRoyaltyFee.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java
index 191bd099f..33b53df59 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Delayer.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java
index bb1e85c69..c99f035e8 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/DelegateContractId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java
index c26e1ffe7..328126a9f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/DurationConverter.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java
index 5f30b3d44..472244d64 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Endpoint.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java
index 65bc546f9..a24e9d066 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/EntityIdHelper.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,9 +20,19 @@
package com.hedera.hashgraph.sdk;
import com.google.errorprone.annotations.Var;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import java.io.IOException;
+import java.net.URI;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
import java.nio.ByteBuffer;
+import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.CompletableFuture;
import java.util.regex.Pattern;
import javax.annotation.Nullable;
import org.bouncycastle.util.encoders.DecoderException;
@@ -45,6 +55,8 @@ class EntityIdHelper {
private static final Pattern ENTITY_ID_REGEX = Pattern.compile(
"(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-([a-z]{5}))?$");
+ static final Duration MIRROR_NODE_CONNECTION_TIMEOUT = Duration.ofSeconds(30);
+
/**
* Constructor.
*/
@@ -101,7 +113,7 @@ private static R fromSolidityAddress(byte[] address, WithIdNums withAddre
* @param address the string representation
* @return the decoded address
*/
- private static byte[] decodeSolidityAddress(@Var String address) {
+ public static byte[] decodeSolidityAddress(@Var String address) {
address = address.startsWith("0x") ? address.substring(2) : address;
if (address.length() != SOLIDITY_ADDRESS_LEN_HEX) {
@@ -256,6 +268,88 @@ static String toStringWithChecksum(long shard, long realm, long num, Client clie
}
}
+ /**
+ * Takes an address as `byte[]` and returns whether this is a long-zero address
+ * @param address
+ * @return
+ */
+ public static boolean isLongZeroAddress(byte[] address) {
+ for (int i = 0; i < 12; i++) {
+ if (address[i] != 0) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Get AccountId num from mirror node using evm address.
+ *
+ * @param client
+ * @param evmAddress
+ * @return
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static CompletableFuture getAccountNumFromMirrorNodeAsync(Client client, String evmAddress) {
+ String apiEndpoint = "/accounts/" + evmAddress;
+ return performQueryToMirrorNodeAsync(client, apiEndpoint)
+ .thenApply(response ->
+ parseNumFromMirrorNodeResponse(response, "account"));
+ }
+
+ /**
+ * Get ContractId num from mirror node using evm address.
+ *
+ * @param client
+ * @param evmAddress
+ * @return
+ * @throws IOException
+ * @throws InterruptedException
+ */
+ public static CompletableFuture getContractNumFromMirrorNodeAsync(Client client, String evmAddress) {
+ String apiEndpoint = "/contracts/" + evmAddress;
+
+ CompletableFuture responseFuture = performQueryToMirrorNodeAsync(client, apiEndpoint);
+
+ return responseFuture.thenApply(response ->
+ parseNumFromMirrorNodeResponse(response, "contract_id"));
+ }
+
+ private static CompletableFuture performQueryToMirrorNodeAsync(Client client, String apiEndpoint) {
+ Optional mirrorUrl = client.getMirrorNetwork().stream()
+ .map(url -> url.substring(0, url.indexOf(":")))
+ .findFirst();
+
+ if (mirrorUrl.isEmpty()) {
+ return CompletableFuture.failedFuture(new IllegalArgumentException("Mirror URL not found"));
+ }
+
+ String apiUrl = "https://" + mirrorUrl.get() + "/api/v1" + apiEndpoint;
+
+ if (client.getLedgerId() == null) {
+ apiUrl = "http://" + mirrorUrl.get() + ":5551/api/v1" + apiEndpoint;
+ }
+
+ HttpClient httpClient = HttpClient.newHttpClient();
+ HttpRequest httpRequest = HttpRequest.newBuilder()
+ .timeout(MIRROR_NODE_CONNECTION_TIMEOUT)
+ .uri(URI.create(apiUrl))
+ .build();
+
+ return httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofString())
+ .thenApply(HttpResponse::body);
+ }
+
+ private static long parseNumFromMirrorNodeResponse(String responseBody, String memberName) {
+ JsonParser jsonParser = new JsonParser();
+ JsonObject jsonObject = jsonParser.parse(responseBody).getAsJsonObject();
+
+ String num = jsonObject.get(memberName).getAsString();
+
+ return Long.parseLong(num.substring(num.lastIndexOf(".") + 1));
+ }
+
@FunctionalInterface
interface WithIdNums {
R apply(long shard, long realm, long num, @Nullable String checksum);
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java
index bffe5558d..011f02db5 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/EvmAddress.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java
index 4d133d195..52825a7c5 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRate.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java
index bfdbda398..fc66912fa 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExchangeRates.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java
index 8c71e7bac..18461cab0 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Executable.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,6 +19,8 @@
*/
package com.hedera.hashgraph.sdk;
+import static com.hedera.hashgraph.sdk.FutureConverter.toCompletableFuture;
+
import com.google.common.annotations.VisibleForTesting;
import com.google.protobuf.MessageLite;
import com.hedera.hashgraph.sdk.logger.LogLevel;
@@ -29,9 +31,6 @@
import io.grpc.Status.Code;
import io.grpc.StatusRuntimeException;
import io.grpc.stub.ClientCalls;
-import org.bouncycastle.util.encoders.Hex;
-
-import javax.annotation.Nullable;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
@@ -42,10 +41,14 @@
import java.util.concurrent.CompletionException;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
-import java.util.function.*;
+import java.util.function.BiConsumer;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Supplier;
+import java.util.function.UnaryOperator;
import java.util.regex.Pattern;
-
-import static com.hedera.hashgraph.sdk.FutureConverter.toCompletableFuture;
+import javax.annotation.Nullable;
+import org.bouncycastle.util.encoders.Hex;
/**
* Abstract base utility class.
@@ -406,16 +409,25 @@ public O execute(Client client, Duration timeout) throws TimeoutException, Prech
delay(node.getRemainingTimeForBackoff());
}
- if (node.channelFailedToConnect()) {
+ if (node.channelFailedToConnect(timeoutTime)) {
logger.trace("Failed to connect channel for node {} for request #{}", node.getAccountId(), attempt);
lastException = grpcRequest.reactToConnectionFailure();
continue;
}
+ currentTimeout = Duration.between(Instant.now(), timeoutTime);
+ grpcRequest.setGrpcDeadline(currentTimeout);
+
try {
response = blockingUnaryCall.apply(grpcRequest);
logTransaction(this.getTransactionIdInternal(), client, node, false, attempt, response, null);
} catch (Throwable e) {
+ if (e instanceof StatusRuntimeException) {
+ StatusRuntimeException statusRuntimeException = (StatusRuntimeException) e;
+ if (statusRuntimeException.getStatus().getCode().equals(Code.DEADLINE_EXCEEDED)) {
+ throw new TimeoutException();
+ }
+ }
lastException = e;
logTransaction(this.getTransactionIdInternal(), client, node, false, attempt, null, e);
}
@@ -440,7 +452,8 @@ public O execute(Client client, Duration timeout) throws TimeoutException, Prech
// Response is not ready yet from server, need to wait.
lastException = grpcRequest.mapStatusException();
if (attempt < maxAttempts) {
- delay(grpcRequest.getDelay());
+ currentTimeout = Duration.between(Instant.now(), timeoutTime);
+ delay(Math.min(currentTimeout.toMillis(), grpcRequest.getDelay()));
}
continue;
case REQUEST_ERROR:
@@ -835,8 +848,7 @@ class GrpcRequest {
private final ProtoRequestT request;
private final long startAt;
private final long delay;
- private final Duration grpcDeadline;
-
+ private Duration grpcDeadline;
private ResponseT response;
private double latency;
private Status responseStatus;
@@ -862,6 +874,10 @@ public CallOptions getCallOptions() {
return CallOptions.DEFAULT.withDeadlineAfter(deadline, TimeUnit.MILLISECONDS);
}
+ public void setGrpcDeadline(Duration grpcDeadline) {
+ this.grpcDeadline = grpcDeadline;
+ }
+
public Node getNode() {
return node;
}
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java
index 888ecbb0f..412e05efa 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ExecutionState.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java
index 0f93c99ef..765521886 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeAssessmentMethod.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java
index 7571d677b..a8bea950b 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeComponents.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java
index 621f508a3..d13287150 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeData.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java
index 79761b639..f67ed78af 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeDataType.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java
index 978ddc642..37490f632 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedule.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java
index 38d747bb3..d201ccd57 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FeeSchedules.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java
index e5b35920c..ad5c8778b 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileAppendTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java
index 98dfdaf8a..0df84b101 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileContentsQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java
index ede70b16e..59fea2f18 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileCreateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java
index dffebcee4..8d1972139 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java
index 648591f04..3aab43634 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java
index a0accf9e9..73440ecf5 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java
index dc577b434..9c1a4a941 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java
index de18c7752..86a5259fc 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FileUpdateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java
index 0dbbed552..1361cb403 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java
index 072b8bada..ddd52b3ec 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FreezeType.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java
index b45978852..6ef067154 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/FutureConverter.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java
index cb6822b23..c85cdcc77 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Hbar.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java
index 4310d7526..f796e2ada 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarAllowance.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java
index 0b0c97923..9e4893de8 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HbarUnit.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java
index d85b335d7..978eb440f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaPreCheckStatusException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java
index 19cab2bad..d1e2ec8a5 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaReceiptStatusException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java
index 2448f4d78..c11d6b248 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/HederaTrustManager.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java
index 919090604..957e934ba 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4Address.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java
index 767e21683..33f0cbcd9 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/IPv4AddressPart.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java
index 93e609b4c..c6aa54222 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/InstantConverter.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java
index b7b97adbe..ae7dea3e6 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Key.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java
index ba73367c9..a717ad216 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/KeyList.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java
index e245cecfe..d0b15be58 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Keystore.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java
index d7d2db382..ee875d778 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LedgerId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java
index 7c045fd4e..751a15650 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHash.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java
index 2978b0679..943ac372d 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashAddTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java
index a4c52622f..3740b2174 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java
index 9b7519296..db487c5ee 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LiveHashQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java
index 50b8d46df..d09280312 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/LockableList.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java
index 907245f8d..0906a169d 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxAttemptsExceededException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java
index 2f4e3989c..6f7e98a05 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java
index 1670f6d5c..d94629804 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNetwork.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java
index b421c695b..baabee66f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/MirrorNode.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java
index 466b7f392..c196f4a63 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Mnemonic.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java
index e89b6569e..93b789681 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Network.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java
index 70306dfd1..2d115ca38 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkName.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java
index 4fc7fdb15..4e7f3e530 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java
index 406d878c9..a486ff2ec 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NetworkVersionInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java
index 960d546ad..3caa330e7 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NftId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java
index 5cbdd2908..92614895f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Node.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java
index 37251e1da..82faf1683 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddress.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java
index 8a0e93ade..e065eeaaf 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/NodeAddressBook.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java
index 99d53c8e9..ca036877e 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Pem.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java
index 7df3224aa..bac8a2b0c 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrecheckStatusException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java
index 66ea9ac0f..253c8102c 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKey.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java
index 66d577c78..521519b87 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyECDSA.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java
index 7f9d5d722..84638043d 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrivateKeyED25519.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java
index 14434be87..8dab73131 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PrngTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java
index 1d24f3001..766fadd8e 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ProxyStaker.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java
index b8287d9b5..6995c9f38 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKey.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java
index d62f6bd7c..f7d889f70 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyECDSA.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java
index b87780b5d..bc6a50912 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/PublicKeyED25519.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java
index 9a526a4b7..726c72f19 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Query.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java
index 35fd1100b..56edc41f8 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ReceiptStatusException.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java
index 78ae0ce46..868471486 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/RequestType.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java
index 828b8e09e..2ee92d237 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleCreateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java
index 8780c094a..08ce3a90a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java
index f31440a4a..d4baaee87 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java
index 468dca18f..ba44ba0f5 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java
index c6594aa26..088e81369 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java
index f8195eb7c..4d6571418 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ScheduleSignTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java
index 7c8f35714..397af9948 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SemanticVersion.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java
index 6ed605ea8..d4ea5dbe2 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Status.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java
index 28bd3a65e..ed263efe3 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/StorageChange.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java
index 63e7fef8a..5ce034dec 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SubscriptionHandle.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java
index b295341db..807c25e53 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java
index cb7ce556d..6f96623b7 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/SystemUndeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java
index 07bfb8f5f..2bfbe227b 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/ThreadLocalSecureRandom.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java
index f79f6bcbe..bb72c4d40 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAllowance.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java
index e544b2606..fdcebc483 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java
index aef00715f..6c9a7183a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenAssociation.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java
index 56b00769d..9da12e6b8 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenBurnTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java
index f13ef2dc6..2f2ac53ba 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenCreateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java
index b0cc72aca..4b34554ed 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java
index f758917c9..ca852dd1a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenDissociateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java
index a6bf7c963..af8f12f32 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java
index 20eb8944f..02b157589 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenFreezeTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java
index 99389e0f2..ade7f564a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenGrantKycTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java
index 3c4452e65..50a75e847 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java
index 9ea52ec98..f856c5f76 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java
index 2d942c6f9..58afd00f7 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java
index 1a801ca79..9daa2cd6b 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenMintTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java
index 76bab059e..c10c38fca 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftAllowance.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java
index a77fedc8a..c53842a41 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java
index aca6497bf..cdaf3af30 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java
index c3c81a8ed..573b1601e 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenNftTransfer.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java
index 59a774dd2..fb2979e7a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenPauseTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java
index b321e4732..81914d4e6 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRelationship.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java
index 953428da9..dc9bdbf43 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java
index b96f8da58..d745b8b70 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenSupplyType.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java
index 41466ea4a..1292df833 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenTransfer.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java
index 8f176e30b..7e344d688 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenType.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java
index 9e5c6d3e1..6fe410404 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java
index d5f4d3735..b821d0a35 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUnpauseTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java
index 0d1619382..36057602e 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenUpdateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java
index 91b939804..f72e953a3 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TokenWipeTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java
index 29ccd6168..726cd0ac9 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicCreateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java
index afd7ee5c3..aa8bcac77 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicDeleteTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java
index 2ea229a5e..7297ff711 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java
index a0ad1daba..41dbdb3ae 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfo.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java
index 7299f9201..66fcfd8ff 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicInfoQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java
index aaff4b040..b048148b3 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessage.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java
index b27615352..da8357275 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageChunk.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java
index f4423c603..46dc820e4 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java
index a0991a36b..0e5c9c332 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java
index 2c362459f..7a3786007 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TopicUpdateTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java
index cf0996d24..5264c8101 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java
index 46c73f019..0ce24f072 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionFeeSchedule.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java
index 0db859630..5dc8a939f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionId.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java
index bb995d7ba..d09e3073f 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceipt.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java
index 4eb768f66..963e48684 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionReceiptQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java
index 98db7c3af..fceb5afea 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecord.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java
index f780e491a..dd8079c00 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionRecordQuery.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java
index ed32f3518..3ab492d80 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransactionResponse.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java
index 5ab4c377c..d2bc1968c 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/Transfer.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java
index be05ddf55..9952a368a 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/TransferTransaction.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java b/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java
index 121645aaf..e057ee007 100644
--- a/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java
+++ b/sdk/src/main/java/com/hedera/hashgraph/sdk/package-info.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/main/resources/addressbook/mainnet.pb b/sdk/src/main/resources/addressbook/mainnet.pb
index 4f8a231d5..f2f9e8fd3 100644
--- a/sdk/src/main/resources/addressbook/mainnet.pb
+++ b/sdk/src/main/resources/addressbook/mainnet.pb
@@ -1,172 +1,172 @@
Ð"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009098865def2f2ab376c7f0f738c1d87a27ac01afd008620c35cb6ebfcbb0c33003193a388c346d30231727012193bb76fd3004b864312c689ef5213cbb901101509deab94f26a732e637929da4c4cb32517e3adbb3811d50ac4c77c1fce8b651606215f34707f3e7265545e58c894609e28376bdb7775fe30439e0e1592fdcb0c3ee1c305773d072a6b8957eafce1a11be965edaff3843366cb6a44ec25a890106e6247567f76b550fda482baec6307d698ec88841fd66f23f210e47b8a9dcba6ba4e1fa716db33c80e30819496dcb5e5609fb6e7c615379bdded427e9231b9254c2baf943608a86d698ae9a3c8639df887d6f6b5a71385d24338d911a212bf71f1e2acc8b186b96ec8e69c86b6d058217776a09c9c68953edb5916578b5a263b2f469e3b0c07eada71a447eea7f8fc1bb8074255567b7f0bd1e6afb0358718c98b429e24b2298596fc76cf6af396ca9434d7926ec7d37d4b92af56d45feff8196095224a916c1ffe6b667e255fc3ac8cccef920dc044b25003132b87806742f02030100012:`34244d50a8ed4d4cbadf25620d1ab88a32081977d2f8d70ba82ba52b3305a4560824cf6b0106d635ed5c39272fffabe8B
-¤,B¤ˆB
+"ïR£ˆB
¥vû£ˆB
-#íÈ´¤ˆB
+"ïR¤ˆB
|Ž~¤ˆB
-¤,B£ˆB
-
#íÈ´£ˆB
-"ïR¤ˆB
-
-"ïR£ˆB
+¤,B£ˆB
|Ž~£ˆB
+#íÈ´¤ˆB
+
+¤,B¤ˆB
+
¥vû¤ˆJ!Hosted by LG | Seoul, South Korea
"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009131aa368f9345229f97b6259cccaffea23e00cd5ead02e3f696c1e714ee3939dad860e38bf95a2974f9eb48e9343f8aac405ea955d05323e117b3b1c94813a3af42fe8082c3d43baf1bd4d8367e93db00ad696e627a1036ae534f011ead5e56f37a6ffe44b6b9e099401192ad560a0346b41a810095f5f2d7fd32d6eeb655ba758c6b526c129386af7197c7a53ae603d622832254961f16d0efa8079a768561888be733492217956bbcafaebb6135c5fbb2484d5b4a5fdf0336ac02e26c1652c1bd8eaf30dae1d6d3eb00f7b4fab8d6478fe8d95eb911df966a0dea4e522db76b8966570ecc5af09516424f0af5f8ee66e386d5650713997169ac37573bf52fd058de95ab2ff68e68111ab23405ea964b2bb88d02c0f1caed71ecdd4e4e408594876fdb8500bc55c7ba02066e05ab98d9f7e0466d9702eb57ee3722f8fcc85a75505ff3262170288b788723adb97e4de5620cc90ead1382fcd7571889fefb11e6771bc3f6f3feb19c7ac542878d03a90270526c3eed2494eff54e153ca9f6890203010001(2:`01d173753810c0aae794ba72d5443c292e9ff962b01046220dd99f5816422696e0569c977e2f169e1e5688afc8f4aa16B
-#º¿÷¤ˆB
-
-‚4줈B
+‚4죈B
#º¿÷£ˆB
-‚4죈J'Hosted by Swirlds | North Carolina, USA
+‚4줈B
+
+#º¿÷¤ˆJ'Hosted by Swirlds | North Carolina, USA
Í"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b2ccac65ad0fc7645a817bfabc487ad7e41311e7a3198b37fb842d84c395b3f67d6bd848f10c6f03c290e8f7daa8d001a8441dc352a19160a3193e68b82edf19ae67693a9a33d4cb87e789a1070715515ea772caa8b86a569b91c5450835d9c354f0dacec97fe77091b45b147698b7f8601422dcd2261e928de4dac9c42dcbafdf96c07233ba3027076f37c969e8ed30b6b5d8f5034be7d92c596f8be861e51fcc3a242bf9d8be9e2a9e8e0f155ebcff23effa7cd57c10542811d80776c9585526fdb0eaa34ee1955d51119390fe873e4c04dedd29165884b98b46308788ae7fc4d4aa4a8fc9bc2674ba321493b624455ad410c1de71bc95d1d91fa0f201418a795e309eaf297b699bf27c9fa2763cd59ceb021e16b8200c1060f2817fd83cfc767183489461e3599291b380d6e939baa4b19232a6a272dde651f8046fdc34db276a777d6fb2bec3255b2cc244b4af566b105f30c6506ddae0eb3deddcf947bcb9c60e000984f3b4a8c6c4ed4bf90bc1932b7f94dc3ae6b360008eb902040f9b0203010001(2:`e55c559975c1c9285c5262d6c94262287e5d501c66a0c770f0c9a88f7234e0435c5643e03664eb9c8ce2d9f94de717ecB
-k›@b£ˆB
+þ¤ˆB
-þ£ˆB
+J2u#£ˆB
#À£ˆB
-oºú¤ˆB
-
-k›@b¤ˆB
-
oºú£ˆB
J2u#¤ˆB
-J2u#£ˆB
+k›@b¤ˆB
-þ¤ˆB
+k›@b£ˆB
-#À¤ˆJHosted by FIS | Florida, USA
-¸"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a3e37b76c6cd5f6622d6924444d12c677c395f2b5902f3bb98b8a8b5055a707706ca028cd75060a2d8702d2d8b04947bdcfe0a8c141aa2844b1e06e66190012e8b6326ab0fa317973bc7cb4d2949f2108aa04c4b0c91baa5728f5b5622ec75abf578a1f7b41ede2a67ebd69c18e581fdf9c6020ac0de9ca2c31f0c6469003311fbb5ce7db49c787e1a7d27aa425ee7b84da7e66939f9c80d0e82fce55e02dfc8b5c78418a26aa43650698719bafcecf0bd49000addcfa405708bdbefbb19749d22dab007e44d45ea23b106f8834c152e25062d4cf24ff25356c7eb3729105393fb49bab904a02f0f0bb417cd919d352890128e6bbff4fac9f90de118a974f2a6dd01e032a79b178f60fa1fcbbd02b5704fb46295c15190816373edd6635c856978f1b9503f1f73b4b0be8aba2ed1feead59953bf82efde93a3471abd55cda3ba8a673fbb3799749fb006d003f0e63f665c3461d2a7b29dc8b204ba59a65668a46ae2878f00d1f9490df9e280febf4315ea04eaa568a3a9fd48c62c63b6ecda690203010001(2:`b8707dd891621b10fce02bd6ea28773456f008b06b9da985ae2da1ad66be8237cf831fc5b8b4fea54595179e9735d5d2B
+#À¤ˆB
-
4ló£ˆB
+oºú¤ˆB
-hÓÍ|¤ˆB
+þ£ˆJHosted by FIS | Florida, USA
+¸"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a3e37b76c6cd5f6622d6924444d12c677c395f2b5902f3bb98b8a8b5055a707706ca028cd75060a2d8702d2d8b04947bdcfe0a8c141aa2844b1e06e66190012e8b6326ab0fa317973bc7cb4d2949f2108aa04c4b0c91baa5728f5b5622ec75abf578a1f7b41ede2a67ebd69c18e581fdf9c6020ac0de9ca2c31f0c6469003311fbb5ce7db49c787e1a7d27aa425ee7b84da7e66939f9c80d0e82fce55e02dfc8b5c78418a26aa43650698719bafcecf0bd49000addcfa405708bdbefbb19749d22dab007e44d45ea23b106f8834c152e25062d4cf24ff25356c7eb3729105393fb49bab904a02f0f0bb417cd919d352890128e6bbff4fac9f90de118a974f2a6dd01e032a79b178f60fa1fcbbd02b5704fb46295c15190816373edd6635c856978f1b9503f1f73b4b0be8aba2ed1feead59953bf82efde93a3471abd55cda3ba8a673fbb3799749fb006d003f0e63f665c3461d2a7b29dc8b204ba59a65668a46ae2878f00d1f9490df9e280febf4315ea04eaa568a3a9fd48c62c63b6ecda690203010001(2:`b8707dd891621b10fce02bd6ea28773456f008b06b9da985ae2da1ad66be8237cf831fc5b8b4fea54595179e9735d5d2B
-#Ç¡l¤ˆB
+
4ló¤ˆB
+
+
GZš£ˆB
#Ç¡l£ˆB
+hÓÍ|¤ˆB
+
GZš¤ˆB
-
4ló¤ˆB
+#Ç¡l¤ˆB
-hÓÍ|£ˆB
+
4ló£ˆB
-
GZš£ˆJHosted by Wipro | Mumbai, India
-ˆ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100c4561e3c278cd650e80c413ca44423c1c3c13cf1475f6f6976d597ae432b49ab42086b79b841326054b8b3dcf57d8fcd79bfc058183ca24cd4c1cbc574ed1117e2f5b7b3c63ce7b06d9b4efcf7375637b41fe6f53c811b9de6143f3a52957cdf956775120b33703ff57621407ab9575bc2d35c0d44f0983fc1ef63a4ff5209f070c92af106295601c96bced064ec190197019c6811c4c8dd80cb4f4ac71f9ad76e7ac89456fbf4f011f90abd2d90536e8234651f6bef927e3d5d8b7bf459050983beca3abef2a9d97af345772a7740e9699275b018ea0df286add6ce923ef908fbe762a75f21116862db44d3dca1d44b4d2e8dc1066c5006bb5a7d954ad255d4b603273475e511aeb485d069a067c0ab5c24538c933c06b5a6aefa94005c2915213e4ccdae6c942f6272f9dd5282d6b890f1f20efd2399cd674924fa57046ac6da32e73951a73113e91fc2b7ff29e4851b83ff39f83ba9ec6f08cefdbb6cbbbffabfdfaa91d930f7200da48137c394cbd13e701ecdc2616fd21bad681aa4f0010203010001(2:`b8c3c9a1a6403aa556c4b96c89643925c981d5e83d29cafed79082e310e1eb4f15b569c79fdbc24160b891ec721fca37B
+hÓÍ|£ˆJHosted by Wipro | Mumbai, India
+"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100c4561e3c278cd650e80c413ca44423c1c3c13cf1475f6f6976d597ae432b49ab42086b79b841326054b8b3dcf57d8fcd79bfc058183ca24cd4c1cbc574ed1117e2f5b7b3c63ce7b06d9b4efcf7375637b41fe6f53c811b9de6143f3a52957cdf956775120b33703ff57621407ab9575bc2d35c0d44f0983fc1ef63a4ff5209f070c92af106295601c96bced064ec190197019c6811c4c8dd80cb4f4ac71f9ad76e7ac89456fbf4f011f90abd2d90536e8234651f6bef927e3d5d8b7bf459050983beca3abef2a9d97af345772a7740e9699275b018ea0df286add6ce923ef908fbe762a75f21116862db44d3dca1d44b4d2e8dc1066c5006bb5a7d954ad255d4b603273475e511aeb485d069a067c0ab5c24538c933c06b5a6aefa94005c2915213e4ccdae6c942f6272f9dd5282d6b890f1f20efd2399cd674924fa57046ac6da32e73951a73113e91fc2b7ff29e4851b83ff39f83ba9ec6f08cefdbb6cbbbffabfdfaa91d930f7200da48137c394cbd13e701ecdc2616fd21bad681aa4f0010203010001(2:`b8c3c9a1a6403aa556c4b96c89643925c981d5e83d29cafed79082e310e1eb4f15b569c79fdbc24160b891ec721fca37B
-r6¤ˆB
+r6£ˆB
#ËRð¤ˆB
-r6£ˆB
+r6¤ˆB
-#ËRð£ˆJHosted by Nomura | Tokyo, Japan
+#ËRð£ˆJ&Hosted for Nomura | Vilnius, Lithuania
"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a1c4077154303cc72c4fb7692c3f94251bdec1239a1f7a8972abe91a35323fbeca625a7ffae6406c855dc2af2110900b0df0e6e6db76364dfa1ffe85eda567936e2985b85634a32aa52a6599dd6c30be1f7a6c5b8f5eecaf2621d8a459682fcd2dbaad1561d11f33fccb7f5500ac568d165dbeaace3286d2894f64129d781d6c72fd7d599c9e1d3af4aa433c23b910fae4c4841641f61526ad787ebea539874167e9d3a73cc0fb156429d15ec763a6d0f06115a79b9af783d77b98d83096aa4743f97408d9e14bcf4ddffe4591768847b40cb8da7ca375256d2b935d095fe252fae81ff6e37f84d7a90d7e570a4f8ef3c7d766eeda472f0920199015a8908259a873c5454fcbbdcad2e528de85455b4083c7dc4adc5a988e0cddfdc159d5d712abd544aa73ec029089814c98a44f26fc0644659c183e3184aa272f8d1dc0bfa3e0a560484cb055ba4dbb5cc339ec80bd11d642dc3a702e8c703ab2193084d9bd63f0dfe12a433c2576eaf781cfad867ef70bda61768b2bef14f50c6c3b8b096f0203010001(2:`4a44dbafd50dce9e19ae6595efcf27badfe79db88f0e291c32b03c0ffc96830b391c143114611255f5a76e4a33ba0319B
-#·B–¤ˆB
-
#ìÛ£ˆB
-#ìÛ¤ˆB
+#·B–¤ˆB
+
+#·B–£ˆB
-#·B–£ˆJ$Hosted by Google | Helsinki, Finland
+#ìÛ¤ˆJ$Hosted by Google | Helsinki, Finland
“"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810093a215cc4a7a722cae9c13abd636df99cceec6af9db46b69fa516716ef50ce2490a981e09ab019ca2cb46811b5b619d1bd1d5ee6f46a42c777cbdee642a1484ecdf5ddd3729642c38c6d43a8858874475f5824443664c04dfed9b89045fb085e25c3efcb4841733eff7c529c139e69350c2cd79b2c8d19679a712e4e8cafd3267541b832b3e10a01255def69df1e9d3b8d8eaf0311de67d5e12b26dd01dbbd9d3e42d35d9de271302e0f1f69d87cbc7aca9e8867e9d428d3cab0666eb490d5fbab30bff3f785d03f2072a43bb9b5e54656a592cb61eafd5a5ef284c7caec66f7f47325cc0d4c1d27f661d8a748ca5071c06ef134dff96f4086688366d468a24780017e0b56aba7fab43b3b7c0b77906fae5482f32811c292e6b14454e14b894801a86a03cc47794dd0d74527a72e424ed3afa04899ecb9a63f2a9ae72be7fa989adf0d65a32c851d9801fc41048df33564fc7b31707ec8fb80140fe7b7a1fa120ba1cb660324ceffb4bcc2d9bb7de0cf54c819f2dd3bceadec9c25f5e19dc9b10203010001(2 :`9281f9a1f057e9de66fac4432cb13b102d90d5cc5ea787487f71403cb62aa809976f65cc3b5eda38a1c33a719b46b303B
#µžú¤ˆB
-#µžú£ˆB
+#ÅÀᤈB
-#ÅÀᣈB
+#µžú£ˆB
-#ÅÀᤈJ*Hosted by Zain Group | Kuwait City, Kuwait
+#ÅÀᣈJ*Hosted by Zain Group | Kuwait City, Kuwait
¦"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100c57edb9ff276e023b28021cb1d87cdf1966b698cf48e4eaaa7c692077ceee8ccb239a4c921597e8e89f7cc05d3f3131578976c4e314405d4a4e03a72410c5c09ca527ad5a85b998637e72a32e1fbc0d5546b2465e9e806c2dd509eb050ab5fb27063fd92815b1dd2689e2111caeb6f549e94a9f00f0821d4ca6c6a6117f5a533c9263bf074a30d5cbef50d1c8c2387bca972ededa0983b5d0a6b57dcb0020006828b40e4076b4870b24bad84056ee52b5f422e8840028c25006382d8e9c661225f4f76ea72e340607e9fc6f3c20433076a1ca8cb15ed03ac8966d0507bcde681e4e0231ee9f87d111e7b48ac8f94d2d842b52df73f573cc5414964797c626968ffae7418f3b6109b5a0f09e3223f4a4d5e3509dd250138f6bc17bf6cece17594430df180a38e90adf2affbfad0c6b8c1b87f178a061dcfbff8b92c9166d874c1ff5af4fbcdbfe8e9d099370ddf60be747633d36ee4eb5cd51f6e3c339e151e41bdb5a5ce2c8c97a0a43b3cd4cc081884c879f9d2f3748428c8573f17c90f3cbd0203010001(2
:`74bccc94033896aa45945458b883b98143f3d261021bde847675c5c7b0d0f6916defdcd88f2079086a21f6d63547091eB
-ø0£ˆB
+#ò隣ˆB
-±š>꤈B
+ø0¤ˆB
-#ò隣ˆB
+±š>꤈B
#ò隤ˆB
-ø0¤ˆB
+±š>꣈B
-±š>꣈J%Hosted by Magalu | São Paulo, Brazil
+ø0£ˆJ%Hosted by Magalu | São Paulo, Brazil
‹"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009bdd8e84fadaa3532fc4ce01a8a17d4c3b232f50a9790e262684edc4823e815a1bd5b20ecea7bf56e29f6bb7b831fb3bf6efcd1475f0b8ed5ffb0b1385b96d166b629f0396a8fef5f06e4bca25ee4a1340ee263a4d9bb020d8f472306f3d886138de7a019e059bd0afc902ccba1a213ae2daa60c8a013755fe0a48e034f5b4023a2dadeaa88c54868353ac7a7a3df12b2fb6418774e9b14be6eab8cc27b88012ad6162da74e0eeb16135905f437374dab8586d750a26bbd3ac24aed878c4d53e651072c871e94d7acc575c967381734a53feaf4d7ba6bcdd241cc6458c6087d86302aa251c04f6d56b9c32d7d96624750ed055785d0773f43dc099b28c92281148e6c81f297ff9d166e000ac04b3124186775fcef75f5eba0c1032bf130df6cd7a46211d0df3e0584d92ea67349d8490508eb4ef88f54c8c3d486de8719f10fa96feb85cc796076ca781318ee2d9ed903ca1336040c59ad91a4d2f698e9108ae0edb9b1cb95ad33b197ffb18bd1ba8b56cbee2aae9585ece208a1e14b48564630203010001(2:`7031f1541dbd7b6fe7da70240265820d37f7c529a93348f50d78421b18797e7b15cde7d0e5f057c884b87d093e7d38f5B
-
5w¹¤ˆB
+#ðv`£ˆB
5w¹£ˆB
-#ðv`£ˆB
-
-#ðv`¤ˆJ"Hosted by Boeing | Toronto, Canada
-¡"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810090259f4e3d9f0f394256548e9c7308b10b73403cc9094d97ad151b7706170b9772ceb64d662ecef901a8d7d15d319a59c8b71071accd895b7c93610dc6976f67c4e1729ba8373ab7e52a3f3c8f265491dde69d6e0999470e7445981131bd96c36e6865203fb2ebd5d50eadafb726396dec1d9174898b4e9be04c74d304feadd9cbd3234c3b7f3306c99cb0c339fc25969b41d58a2b7cfc1832e226d81c1963993e2255a087d1698c03d4210bd64580644d095ca76aa1794edd40c1c87b5f82a8e39f603e97116ba04578e7e80346495d785d4ef7cf7714b9eb6f5f9e0b9a94f4b73884619b9274d4a95ef15754a89d97ef5c1a88b6d693e0a80ebd537fc9cf0ca91d1c62d915de7ed818b952e64c200293ee8e284a416a72a3e12fc7d423b158f9b49660cbc2466fbed0fed2e24e102fde942eb4cfd94bec46d3d90fc08c39fecba03e0ca2464ae664b979515ba29e1f702c3fe702be793796d8edb17aa48c09290b024549f0611f5ae23ed7e16442df7d1dad2286c2bb09d5522dd3ed698c2f0203010001( 2:`200cdbe854f985aa6d6bd159a24a034eabe90d838a8480f8fb0e6e92eb5c57be2ecbe54a32c71ae4f971e3c36f2f70c9B
+
5w¹¤ˆB
-#ÌV £ˆB
+#ðv`¤ˆJ"Hosted by Boeing | Washington, USA
+©"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810090259f4e3d9f0f394256548e9c7308b10b73403cc9094d97ad151b7706170b9772ceb64d662ecef901a8d7d15d319a59c8b71071accd895b7c93610dc6976f67c4e1729ba8373ab7e52a3f3c8f265491dde69d6e0999470e7445981131bd96c36e6865203fb2ebd5d50eadafb726396dec1d9174898b4e9be04c74d304feadd9cbd3234c3b7f3306c99cb0c339fc25969b41d58a2b7cfc1832e226d81c1963993e2255a087d1698c03d4210bd64580644d095ca76aa1794edd40c1c87b5f82a8e39f603e97116ba04578e7e80346495d785d4ef7cf7714b9eb6f5f9e0b9a94f4b73884619b9274d4a95ef15754a89d97ef5c1a88b6d693e0a80ebd537fc9cf0ca91d1c62d915de7ed818b952e64c200293ee8e284a416a72a3e12fc7d423b158f9b49660cbc2466fbed0fed2e24e102fde942eb4cfd94bec46d3d90fc08c39fecba03e0ca2464ae664b979515ba29e1f702c3fe702be793796d8edb17aa48c09290b024549f0611f5ae23ed7e16442df7d1dad2286c2bb09d5522dd3ed698c2f0203010001( 2:`200cdbe854f985aa6d6bd159a24a034eabe90d838a8480f8fb0e6e92eb5c57be2ecbe54a32c71ae4f971e3c36f2f70c9B
#±¢´£ˆB
#ÌV ¤ˆB
-#±¢´¤ˆB
+#ÌV £ˆB
+
+ª»¸î¤ˆB
ª»¸î£ˆB
-ª»¸î¤ˆJ Hosted by DLA Piper | London, UK
+#±¢´¤ˆJ(Hosted for DLA Piper | Helsinki, Finland
˜"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810082de73065f34ffc29340d5949d2220b1e4366ed5cf7c6ebd616cf9416a53ea0017f6bb116bfd3f3defcc15b7a4ddf0e44d02fe695688053e79a770e201bcf7193390039ee8f086d4fa746c7e056918301f9b5e84e39262828085a79b322bca0b5d85fe97221a26bbde258c620f0dcea02ab1edd16cc49a3f2ab9288e3dd1f37dc4b6a6f7133ff92e541c71b70d2a2f66d55725ab18bf86d009ec3d24f5d12e0b5e6802d1151372d4b764ebecb4af82f649485ec57b5a01dc67958f5a03ccaab7cba9354a17372c1316ba47c953aaf94901b3f8c24e6a3afd6758e7f3b143ce2dd3cb071b2a74c921cee949a4b5a6be879f1c790a6b8d63b192d7ee29a9491fdd689a98c0a7c3d60320f1b4ac2d6229dfd94e42f3a6048a76be1eb958c8a1873be8d338aec9fc59ab7f37626789402c1fd595f19087575e0be827fc4c0a4fb3d393ad74a949cc986bfb64cabddae53935f6dc56074db93d77ea3b816bdd6be534497272289859ff34ce51860affb621d10487dc3843f1f86d54034a63e48a1a0d0203010001(
2
:`07b77ce284f7ebb5beb07b105375af55d228a765e1a84587eb1d1f1b0675c38a1d1512370e56f21c8ed5eadefb3779a9B
-#ê„k¤ˆB
+"×Àh¤ˆB
"×Àh£ˆB
-"×Àh¤ˆB
+#ê„k£ˆB
-#ê„k£ˆJ/Hosted by Tata Communications | California, USA
+#ê„k¤ˆJ/Hosted by Tata Communications | California, USA
ˆ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810098755a408b5321e263052000d6d7d4a2c3a554d5e1384a9cb5ebf474ae882c63b486bd08d144ddf1a94ce9a7d6251963006afdaac458846f17640195fe2539a656930efa854f2148e68ec1a08c1c49d200c3f3045fe7147f06d534c4bd262100cb1dd39739d760d81a0bd20f83f255d2507d4ccb1106b53618c6a94409c887cae262d4cee9c86232147cec1404e0c57bba7317130ee39643888af3d598edd82b8c61e65ae81a4e1a56bc06d397143a98d41ca87d3ef433ef0aeab6801191b3e38480968f66b6e88662af45a9e212994f68b288eb967beb98478c243e2136c1a1591f061f5bc04b21ff2ba48b29f18431088873bdfe99f8a52e9408971856e804dea602a311786c985652963c3a3770329b409f74fdfc746b22a5f8418912071c4ce846c9b4b320fedf6e9b64e2cbe384f9a82b6aaad4b20907431df1a33f69207a565600be81070d0832900995859a4498d5b59315bcebefee807eb0a3a942f1cdf3367dd4444fdb29886efcdd0be4abe9a188803953875eda33db72989f763b0203010001(2:`50afa448a3a78b615f49fef577bd7b62b13082eb552cf8895109e0e5438f79ac8aed2f2a48e2f570490746f4c439104bB
-#줈B
-
4£ˆB
-4¤ˆB
+#줈B
-#죈JHosted by IBM | Washington, USA
-•"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a9db7f8baa126898fab789115a3b5d89744f197e28041ae098f3e886c69871721e11bb0ad11f3ce9124aa961d6a0dc845f49765c3fab19958402676f564462bf281dba5588780f03e905798e184269aaa60f7a1472331e2fb1deadd877c84cbcb641ca9e5c8ad6e45bc159cb079fcb0d449cdcd8d9239c1a047e7b448da0cdca26610a25f296d96e7469b676d4a444516e7a59e85293a8086f840c052854e02a8cb2002dad35825be4d83b52fa91e8c73ff049746148862787c1118f924d31cbac1b44feff22d436b3979eadf9b43a4bfa72e15b4755fcab260e06a279c3bb73bc7f16a060d4d522fd490580388aa595d8044736e522f6424915f7803b7583e095cdf78c32519697de81b89fb50054753b1a17f9aafb064d84c992f9ab11ccbc8cb10814dcaf5264aa45f21bdefac82ccacaaf358e31373ee1ba4e7402fd8a70ea0c28ca5cc74dc42510c969cd2c459b1ec3688a01ea39a992710cd2297c98a84b6348a577804fdc234d3fe1903e2c21e172da28b59ae6e4c7e8edd8b71c49d70203010001(2:`c6713d87e3c1f6859a3a3663ebb1b7e1bd1da14fcf076ce51d36464b5682a5df7cfadd440197564f498842313091c2bdB
+#죈B
-yB
+4¤ˆJHosted by IBM | Washington, USA
+•"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a9db7f8baa126898fab789115a3b5d89744f197e28041ae098f3e886c69871721e11bb0ad11f3ce9124aa961d6a0dc845f49765c3fab19958402676f564462bf281dba5588780f03e905798e184269aaa60f7a1472331e2fb1deadd877c84cbcb641ca9e5c8ad6e45bc159cb079fcb0d449cdcd8d9239c1a047e7b448da0cdca26610a25f296d96e7469b676d4a444516e7a59e85293a8086f840c052854e02a8cb2002dad35825be4d83b52fa91e8c73ff049746148862787c1118f924d31cbac1b44feff22d436b3979eadf9b43a4bfa72e15b4755fcab260e06a279c3bb73bc7f16a060d4d522fd490580388aa595d8044736e522f6424915f7803b7583e095cdf78c32519697de81b89fb50054753b1a17f9aafb064d84c992f9ab11ccbc8cb10814dcaf5264aa45f21bdefac82ccacaaf358e31373ee1ba4e7402fd8a70ea0c28ca5cc74dc42510c969cd2c459b1ec3688a01ea39a992710cd2297c98a84b6348a577804fdc234d3fe1903e2c21e172da28b59ae6e4c7e8edd8b71c49d70203010001(2:`c6713d87e3c1f6859a3a3663ebb1b7e1bd1da14fcf076ce51d36464b5682a5df7cfadd440197564f498842313091c2bdB
-#ä5¤ˆB
+yB
#ä5£ˆB
-yJ,Hosted by Deutsche Telekom | Berlin, Germany
+yB
+
+#ä5¤ˆJ,Hosted by Deutsche Telekom | Berlin, Germany
ƒ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a8ceac367eb1f1de5f0d9ef3eaf0df9b98448fe20808476562a060c51c289770b4cacfe92cb65569823e962c2a2c9fed53bd36ca3a122de1c525a582f25a4d7d628c1a3d5bdb8936aece7510e7554ee7033025c092c828eeb5738be02ed963da81a59205634ce9454577ab82f40f13f1ee55e0ae727e23c30284b1f44b99ace4ddc5f9ac7ad88d9fa2255935b24dcba8400642e16cf2532c0b0d6892904608715c4076f46d84a0e0fed36e76ccdc96355e7a26160945c2b54ae26cc00fd082326346eeeea7dd75f91911e99dbcb99ea4ac6ba056c33228d881d85831d9cc879593da1746dd0ee95dc2b96fe93bafcff2cd7d92958d78df33f205d7115ed9fac4db6f4cc60e56a5441da5b5b55fa5999902e958a6b6c44d810ddc56181241b87f22f059a6880e8021736d01897db65449ce817a2375d03551cb0de507c609a0c8030ecf4bfdeb213c03daa764a1821b724334f71f768d7aecb277052a7033765f07218056c78f2a87af18386d8f61a5cfcb3f2ba4dd59915f13d38634d16957570203010001(
2:`a53c8eb70bdd89edb6be5fec50cfabc081002a477af478eefa355ea6ee572e4ae50e84988f8ea2c068afa78967b2caf0B
-"[µ·¤ˆB
+ß棈B
ß椈B
"[µ·£ˆB
-ß棈JHosted by UCL | London, UK
+"[µ·¤ˆJHosted by UCL | London, UK
•"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100af0b914257bf7a4655c4a50d0cad5e0a1e4581ed6623f0e8730f796b8f29c58178bccc6932c1fc31f39ef44b82d3c43b398737373fecb1295228a04fd50a14f3646d84fe1f467caeb98d463e2975e995b8d2e1e39f3bf6addc25ae35d65d02608e0345537966e2abce49b814bead3c1b757174ae30c00b0c43e99b80496b72d3c131f1c6e4fcda05f28117ef9e28c4303be4d8c7e042d58b83cc121945a2c65e7962caa9185938f3757df7cca95cf02b5e31944a3a619a0ac3f1e34b9b013d4c224c4f1e70fd9fd36983ef86ade518362cc8322c0f7b61a9ac75fb82e7b86d68bc0f099a09a14cac5a1d8d38f9a8a70cc37ff5cc3bbd2742ffd146255c171e6a178083271dce0fde681ed492cb59b0796d270175838dc5908107e3a6ea3f9a406b3d1130ccec3b4791e49bbc231603b46ab2d0f93d43be75ab9a4d710ea940e285a7b153b0ca7cddee6d9dce0ad8350c41d90c215b9588515afa0ac3365ae07e81f3bbb36bdbeac4b31bcb1aa4e82565b977f9dad85d626eef9aaa9ef8d7e3fb0203010001(2:`b5b28e6f57240730cda802c56e53b8837a7d63dab9b3b3ab156a04d9e2e6e24b6790c38a5fd335be67a951b77beec748B
èû¤ˆB
@@ -176,13 +176,13 @@
èû£ˆB
"VÔ÷¤ˆJ,Hosted by Avery Dennison | Pennsylvania, USA
-»"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181008c07be305ad60b90ba2dab39b0ee7760e1a22f857522540d70b03b3f9e4875a3a29ab08088f144f57eb252e46ba59385d0e6d4270117da0abc1b3b80694c9a5058b86d61dfa06e716709c88e8feac7c3a0e1d25fc0aebf6a8f76fcb99f845fe181461cab6858b97c3a4027fb3712b14e6c0789de17d41764577e511417eb162692eb07ae1e7355235e9bb439047b6c01613782e7dd6f604daa4674661d53961f46c3faa6b7e76762d373b5b542b79ea963efbf33ac68198bb2b661cff676916ef372ad4c26c216c4bc4787c84ec32d184d77c75186c09cf3d9f91433ca9853119bab31fa6ad26f453e596d9bdeca68a5769bc8fee7a535d80c8c6f3efb1dfb288ab6a979854b7ce83124ec0d102aff94c3b74f9c378958c25eb933dd53c1e805a18654d6d9186990f6570429f960f34e8b4f7fd9972dcbfe9240e074da2d355a5f7ef9c1af62ef5982a8174578b9c15c49ec566bdacb30ccfcef09cdfe708ad487424e9c1be653f9ee7660e7d942c1efa5da286e1addab06a9a33f9de946795b0203010001(2:`eb976995e5d2a9da69c44b06df3c29ecca5eba5008f054077c0ee87b08813314c4fd91ec834d3b868fb7ee7794f4cbebB
+Î"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181008c07be305ad60b90ba2dab39b0ee7760e1a22f857522540d70b03b3f9e4875a3a29ab08088f144f57eb252e46ba59385d0e6d4270117da0abc1b3b80694c9a5058b86d61dfa06e716709c88e8feac7c3a0e1d25fc0aebf6a8f76fcb99f845fe181461cab6858b97c3a4027fb3712b14e6c0789de17d41764577e511417eb162692eb07ae1e7355235e9bb439047b6c01613782e7dd6f604daa4674661d53961f46c3faa6b7e76762d373b5b542b79ea963efbf33ac68198bb2b661cff676916ef372ad4c26c216c4bc4787c84ec32d184d77c75186c09cf3d9f91433ca9853119bab31fa6ad26f453e596d9bdeca68a5769bc8fee7a535d80c8c6f3efb1dfb288ab6a979854b7ce83124ec0d102aff94c3b74f9c378958c25eb933dd53c1e805a18654d6d9186990f6570429f960f34e8b4f7fd9972dcbfe9240e074da2d355a5f7ef9c1af62ef5982a8174578b9c15c49ec566bdacb30ccfcef09cdfe708ad487424e9c1be653f9ee7660e7d942c1efa5da286e1addab06a9a33f9de946795b0203010001(2:`eb976995e5d2a9da69c44b06df3c29ecca5eba5008f054077c0ee87b08813314c4fd91ec834d3b868fb7ee7794f4cbebB
-‹¢œÞ£ˆB
+‹¢œÞ¤ˆB
-^¯»¤ˆB
+¬h–„£ˆB
-‹¢œÞ¤ˆB
+‹¢œÞ£ˆB
^¯»£ˆB
@@ -190,94 +190,94 @@
¬i÷C¤ˆB
-¬h–„£ˆB
+^¯»¤ˆB
-¬i÷C£ˆJ"Hosted for Dentons | Frankfurt, DE
-Â"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100be17c99647cec65a44407b535856b3c3baef5b54f565af58b8456ba8c7ce535d5ac72c61c44c76b3c57c8e864841637be10a83cfe39c092476d0dbe4d6cdcdcd720a30b5bfeb51a01a18f582c45f6c86993fcf7df182935de1d86906044dcf35186935d9bd7eea7952352bebb4ef9ae0f7661e70a4237afa98996687ca48fcfc5b00d3807f054be0fa8c3bfa425038be6ef295164f22f73b7e88c94ea9be8aa4f3a245c89b9d1fd5192f7a50b958b2ef8104b36f1bf8fd2cfb28c1421800c1c47e4ef98af150070cc6d69d17e8eb92f18a6aa1a65266a495238d103f8f695b57ecf373650a052008745721bea815627967c8076365df8c4c7a7d4dd8f2c3850c18fba71eb60e6e8dfbd196e0537fd70b344ecbcc530dfc83da6fedf49d51a90419502ba9d70cd35f1cf3c0694e2354f9064fdbf535eb23c27c0a43d0b78c1f867c61d98695d8def7bc2a10bb6674c22f66aab0a91813ddf27cdb852c59ef79e1b9e1a075fa6ee27a7e3774dbf4b26465427e6d5ab91fe7f0f3a71784eca182b50203010001(2:`d5ce6f4378d6d547239486efd6a702a74fca9e965723f0ea43eefa32be98179508c42185fa23750d20e8c0f1ca1d563aB
+¬i÷C£ˆJ5Hosted for Dentons | Singapore, Republic of Singapore
+Î"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100be17c99647cec65a44407b535856b3c3baef5b54f565af58b8456ba8c7ce535d5ac72c61c44c76b3c57c8e864841637be10a83cfe39c092476d0dbe4d6cdcdcd720a30b5bfeb51a01a18f582c45f6c86993fcf7df182935de1d86906044dcf35186935d9bd7eea7952352bebb4ef9ae0f7661e70a4237afa98996687ca48fcfc5b00d3807f054be0fa8c3bfa425038be6ef295164f22f73b7e88c94ea9be8aa4f3a245c89b9d1fd5192f7a50b958b2ef8104b36f1bf8fd2cfb28c1421800c1c47e4ef98af150070cc6d69d17e8eb92f18a6aa1a65266a495238d103f8f695b57ecf373650a052008745721bea815627967c8076365df8c4c7a7d4dd8f2c3850c18fba71eb60e6e8dfbd196e0537fd70b344ecbcc530dfc83da6fedf49d51a90419502ba9d70cd35f1cf3c0694e2354f9064fdbf535eb23c27c0a43d0b78c1f867c61d98695d8def7bc2a10bb6674c22f66aab0a91813ddf27cdb852c59ef79e1b9e1a075fa6ee27a7e3774dbf4b26465427e6d5ab91fe7f0f3a71784eca182b50203010001(2:`d5ce6f4378d6d547239486efd6a702a74fca9e965723f0ea43eefa32be98179508c42185fa23750d20e8c0f1ca1d563aB
-
ö3*¤ˆB
+¨;¤ˆB
-¨;£ˆB
+
ö3*¤ˆB
"YWŠ¤ˆB
ô¦Ò£ˆB
-¨;¤ˆB
-
"YWŠ£ˆB
ô¦Ò¤ˆB
-
ö3*£ˆJ)Hosted for Standard Bank | Warsaw, Poland
+
ö3*£ˆB
+
+¨;£ˆJ5Hosted for Standard Bank | Johannesburg, South Africa
"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100a5ad2b7643a04c055d2f8cd2511b15139fc45575621388e49c119b2f398aca110f61396b0c866de5063522bb8540273e13f6d94ce1e60438f6afb00aaa64612f7145e9bce8bc1a53b941913aa76c9f3a2833fad7cf285c7ac2d37f99f3c2cdb49de4d151e61678564f281f541424b41fa7c51b2a9602283c7d32ee00eb838da15c38afc96e061d97cede22165ff1aa959f1c4275b2d098c40586a5579fbb3cb90072704120a8a66a5270f4fcfd1086c923690a35e7fd445e33ac03f139c6868556570cdc4aaf22107a6c1a442456a7c6c79ee04090e7e5d4f66bca60ca1f47b6dfb543dac3cbf19a7719a8f55b6f83b4a3b8a66d60256d0a46551fa7024bd05631b8a5580877254c2f2f268cdc33d2dbbcfb733e9fbe233bb9cb59ab31a0148b23e8c42680ff10af4c79a4d08346fb79a93d9629548eaf1bb124698faefa4cdd72442c03a04b733432f748903a325c283d456ab9ae921ae7ed3391e5d1787efdc23540a7b85c691ae870a07f90b11c13b32ce43eaed15b369685ce49177cc9850203010001(2:`b0d760b75396bd80292cf751dc43832a01426fc79e2940aa9d2839525ffda1db04bd47d4e2ed3b46088373800504ce13B
"RNÿ£ˆB
-"RNÿ¤ˆB
+4'¢Ø£ˆB
-4'¢Ø¤ˆB
+"RNÿ¤ˆB
-4'¢Ø£ˆJ$Hosted by eftpos | Sydney, Australia
+4'¢Ø¤ˆJ$Hosted by eftpos | Sydney, Australia
†"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181008d45c21c0c95ef65a029d52c957fd0f85f20123da034e61671ddee5475f07382a66c66cb4dc50504ddfd37581083df8d1757730ed8d6f364df4c36a2651591955da201a2407fa8ab9b2313811225a0da230fbe380e090aa56efa4f202ec9b4823f6501d96ac698ebf26aacf3ee2d1f32a721c947e1076cf35b373da1d87a36a152e00e71011792282e825ff171c5833b88570bfc6da8449e6f95f8b1265ab555194031553d1d576f93c42c0ca60aabac4c8dd162d8114f2b21511583c72539fe56c499a929de3a40a0d45c17c589c2d7988ce26eafc92a3d37b7ea0042d43e03afa6271b26255a6cccfae5371821d81e0b05c250b59f0a90741a0e0e88a09ed56c5b9780d095f0906f0b81d51263982aae01136c072d844a11d6da4b2a61c644e1ab17f16ff48ee23fede8452f1e42e2d30a0790c25d42060e1d44a671a2eb23d114f68c71e33f176db58a68b430054bc1d2983a23a32ea6ff95fa7c4d8e380eb296e98b7968ecf8454d817c737eea5dd921eb86c16c7b29304a4a7ecbe5a3a10203010001(2:`c32b80403febe31c4ba1eb46cfa93cbc9169f28597a30ca01365cb3e179672a755a38450ce6aaabf40ad9e36048fd8d4B
+"LŒm£ˆB
+
${Ñ£ˆB
"LŒm¤ˆB
-"LŒm£ˆB
-
${ѤˆJHosted by EDF | Paris, France
-•"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b05abe2ab00fdd06c955e86710b0e06f1a92624a48ad1cbc8dfc6f2212962b0c30fdbd284a37c5a37658b63c36ea8162561a8e4f946cbe5722c028801f0f281c70f8d88c7c00a2f2e29f597b799869ed8356df57c47be9944a2aaff650f9b4bba0dbc53dc880fdbb69ea451905d2802202f8e29c04a76d27af2eb7c548485bf3f4694c90c41810888843792848835f7816707d3e8d76f4e67f5780bcf08813c55ec639a9bd624178f5eb147d500af351e9ef1b1e342484ca260db7ccbae486f13cf265b5b1ab688066008053b20c3dedce771c9a08a0320aa9ce451eb9d983a7b49caa1096f8adc098318dc38e0e7cef0d8e5d557a0675685a1c9e256a2bc9dba322b3bb3172cf714077bc380f8a0a433a8bfa7fbfc59f6b093ec8bf6e9397c09b18e18040c1b566864737c8fa7e29795f3a4588dda7c2bab495665cc4a9b836e2eb90c62a3fcaf591fb5f81804c76180e626fa2644a7de34511d6c4667d98937e27733f4d1e913883354e54fd7351721e76f7b56c3483388f4a6b87b28aebeb0203010001(2:`73d89b53f7cc1ec674af28ad521faf08d7a018166469efc845154ac41108a9d8129a8830031a19a5751a2d79cbc47520B
-
-4NÊ"¤ˆB
+"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b05abe2ab00fdd06c955e86710b0e06f1a92624a48ad1cbc8dfc6f2212962b0c30fdbd284a37c5a37658b63c36ea8162561a8e4f946cbe5722c028801f0f281c70f8d88c7c00a2f2e29f597b799869ed8356df57c47be9944a2aaff650f9b4bba0dbc53dc880fdbb69ea451905d2802202f8e29c04a76d27af2eb7c548485bf3f4694c90c41810888843792848835f7816707d3e8d76f4e67f5780bcf08813c55ec639a9bd624178f5eb147d500af351e9ef1b1e342484ca260db7ccbae486f13cf265b5b1ab688066008053b20c3dedce771c9a08a0320aa9ce451eb9d983a7b49caa1096f8adc098318dc38e0e7cef0d8e5d557a0675685a1c9e256a2bc9dba322b3bb3172cf714077bc380f8a0a433a8bfa7fbfc59f6b093ec8bf6e9397c09b18e18040c1b566864737c8fa7e29795f3a4588dda7c2bab495665cc4a9b836e2eb90c62a3fcaf591fb5f81804c76180e626fa2644a7de34511d6c4667d98937e27733f4d1e913883354e54fd7351721e76f7b56c3483388f4a6b87b28aebeb0203010001(2:`73d89b53f7cc1ec674af28ad521faf08d7a018166469efc845154ac41108a9d8129a8830031a19a5751a2d79cbc47520B
"@¦£ˆB
+4NÊ"¤ˆB
+
"@¦¤ˆB
-4NÊ"£ˆJ,Hosted for Shinhan Bank | Seoul, South Korea
+4NÊ"£ˆJ$Hosted for Shinhan Bank | London, UK
ª"Ì308201a2300d06092a864886f70d01010105000382018f003082018a028201810098ed6b2213a3da894b8e83c4532589097d1f9456c70b9fe2d8c308def36daa87706d430f23ca53b27d034deff5c2e0ac351a0729b4760a19b1525b9d20a1961b962255c4bb2a5cc05a05d7b476f6e5b0547b4a883b50f7d1c93745ba40366608106dbf05b755ebc51d1b8291d107f5c0d9a2483ebce3d07c8b7b5857d62b4be56375cf2314f7e009e4f19e8c8089ec69f96d0266199cf7ea3363b157ae952b2283a8d9f7ceb45738b152486f54d40f6200b7ea755d336e1c33ad58ffe03a8c5650ab62b93b2b6645769fe01f4d21cfaa4ce99510f771de22ba9ad1e8c5ecd3404cc3183174c7c84fbdf108b49733868e7c9fecb90b3bb85b0c3c1378032f3b798e6fb9f7fd35fd25f3c21e7cfae81a01bba50bc4fdf82222a1686e9200a1b323b618e448990e2aefb30619048be3599ffc8880ede3b67ecc8bbd4df6432f521bfb337bf2b0958e29e66223ae35dc09406be0212132be29581694a7402604f1ce689c4b57a5bafbc1d46b342b51c31ff2b5675c6c1df60d128d4a64c66fb4f1830203010001(2:`903388fe34e8bd8cae28eec4c6e8fdd2035b1dcb5c9f45b32b4b17d658c688b81d2330689564c371d477f68b4d2b3959B
[°£ˆB
#èô‘£ˆB
-[°¤ˆB
-
#èô‘¤ˆB
-E§©Ð£ˆB
-
-E§©Ð¤ˆJ)Hosted for Chainlink Labs | Michigan, USA
-‡"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009dcd8c0a53e90c3559574f66204117d3b503e50a36d3097fac8429e6cecd37bb54071808f2ee982035f851a0c9be2176383a22e38c1aba168f32f90570cb3233cfe625987666af67b514caef21fb8df6d0fcd33cf2606b92ddea5536b6068d86782e39bd5c38445991d419b7d1ec08599412c0949d1c240b35c14dc55274dba71ffae936125a5f819f54132e2439d4ac5597996ece85e13dff3361f9131f56ceac5b9f552b49cf6f9a9ac6e5dce2db369462f93af80e5b56b6e8befa162a061b4a76892bdc84647306c600858fdd2703276c2c70440198efd7fe3545cf2ab580c74cfd6445aaf7bd7f745cc252eabd265eabee862417104e6948a55756fdc222df0a101524de1c3c08ccf043011ec7fe964edd8451a130147c07363a35f11fdeef8f2a2b761757b4358ff89b75a48d67bdc6090693e0bb8679ecbb93ffdb3f3ed96bec93ef4656e3716ab87ce46ca8e1259c8fedde8f2f1ea0f3eb2c48e96551de12330345725f45ed69c8575b51683afa472621826db22bb2d1c4f1e36464a90203010001(2:`416f95bfee63fdd45bfc1007cbec3d544fac6b3039fe1d00317aff4c9c9e67918b28c48bddb23c4ca11131cd8260b3edB
+E§©Ð¤ˆB
-‡Ó¤ˆB
+[°¤ˆB
-"Yg&£ˆB
+E§©Ð£ˆJ)Hosted for Chainlink Labs | Michigan, USA
+ƒ"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009dcd8c0a53e90c3559574f66204117d3b503e50a36d3097fac8429e6cecd37bb54071808f2ee982035f851a0c9be2176383a22e38c1aba168f32f90570cb3233cfe625987666af67b514caef21fb8df6d0fcd33cf2606b92ddea5536b6068d86782e39bd5c38445991d419b7d1ec08599412c0949d1c240b35c14dc55274dba71ffae936125a5f819f54132e2439d4ac5597996ece85e13dff3361f9131f56ceac5b9f552b49cf6f9a9ac6e5dce2db369462f93af80e5b56b6e8befa162a061b4a76892bdc84647306c600858fdd2703276c2c70440198efd7fe3545cf2ab580c74cfd6445aaf7bd7f745cc252eabd265eabee862417104e6948a55756fdc222df0a101524de1c3c08ccf043011ec7fe964edd8451a130147c07363a35f11fdeef8f2a2b761757b4358ff89b75a48d67bdc6090693e0bb8679ecbb93ffdb3f3ed96bec93ef4656e3716ab87ce46ca8e1259c8fedde8f2f1ea0f3eb2c48e96551de12330345725f45ed69c8575b51683afa472621826db22bb2d1c4f1e36464a90203010001(2:`416f95bfee63fdd45bfc1007cbec3d544fac6b3039fe1d00317aff4c9c9e67918b28c48bddb23c4ca11131cd8260b3edB
‡Ó£ˆB
-"Yg&¤ˆJHosted for LSE | Virginia, USA
-"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ae7af9c608c1bdb289fb817ffc6c9577ed6d4f6d57f274b215f1390c7e79e490f9dcb74cffe0e8757d67f90f4b20dd4451b7ff6631a6b45c9e403be5a66224955583d1aa4238ba6f946b71cca8c16cc7888b2f0d333c635b8e5478fac3ba3f81457a1a16b04e2b2252651b6c4688c5510d2edc21b03e0a9b283041beef6783c0089845ecc96e6d235c56685d248f8391fe0afcf8ee03f3b498696c6d9decf2fc990c219ef6d2cbba2a69a26528e6009632d82ead3a583ef0c37c2b79068118e0320b9fcb318f5ae48c0877955d0831bc9521aaa88b93419fed9f462f900fc42601056e24ce449edbdc849bb782c09a1a36ad5e4d4b5d7466b7763913f794b2771b07afb617444fb6b4b7484d64e191b513fc8e2501043f725421cd57b073bed21b00314185d6887fbc2b548d90bb2a3c9184ae944c326db8f37a7356aa882bad4c7947a80e16d0f02e382d5771f1987c1b76e88cde1cdf2d1a92215ec68d9b204e80b5dc4675ff3aabf223f7787eb2415df5e389cff60fc40ca252000b4768410203010001(2:`8852cb8dcddab369e5719cdbac5e5f50098f882176412ad711e2b03ac6e9fe7035826fd47c12a12742d2c00d5075753fB
+"Yg&¤ˆB
-"]p¤ˆB
+‡Ó¤ˆB
+
+"Yg&£ˆJHosted by LSE | London, UK
+"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ae7af9c608c1bdb289fb817ffc6c9577ed6d4f6d57f274b215f1390c7e79e490f9dcb74cffe0e8757d67f90f4b20dd4451b7ff6631a6b45c9e403be5a66224955583d1aa4238ba6f946b71cca8c16cc7888b2f0d333c635b8e5478fac3ba3f81457a1a16b04e2b2252651b6c4688c5510d2edc21b03e0a9b283041beef6783c0089845ecc96e6d235c56685d248f8391fe0afcf8ee03f3b498696c6d9decf2fc990c219ef6d2cbba2a69a26528e6009632d82ead3a583ef0c37c2b79068118e0320b9fcb318f5ae48c0877955d0831bc9521aaa88b93419fed9f462f900fc42601056e24ce449edbdc849bb782c09a1a36ad5e4d4b5d7466b7763913f794b2771b07afb617444fb6b4b7484d64e191b513fc8e2501043f725421cd57b073bed21b00314185d6887fbc2b548d90bb2a3c9184ae944c326db8f37a7356aa882bad4c7947a80e16d0f02e382d5771f1987c1b76e88cde1cdf2d1a92215ec68d9b204e80b5dc4675ff3aabf223f7787eb2415df5e389cff60fc40ca252000b4768410203010001(2:`8852cb8dcddab369e5719cdbac5e5f50098f882176412ad711e2b03ac6e9fe7035826fd47c12a12742d2c00d5075753fB
èðÏ£ˆB
-"]p£ˆB
+"]p¤ˆB
-
èðϤˆJ$Hosted for IIT Madras | Georgia, USA
-š"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b72801058ccefb52139ba9c6868a9495e37ba6571c5bc0fb7f2b0d079005dd5ce12af705dfc5ace7fe4b011e6497e1b065e5ef3d937553b1c7c10545ac5c91354ecfad6a6476468883cc66a4a5eb0e1c1d1bbf1030d9650f67b075909e53696ea31acad5240111f75537b14e6eef6451d7b334d1804a2a5789b5e4ac6bfa27955e5517851601b67cfd0bd2869c7ed1f4ce098e367f133b1958743c13c6f69011a8c475b2126d3bc352387989c866fe219a16291e44a92d5471f6fc16862ec7bfe0cad5a4eea1c60829876fb5a012e1dbc51c0c082d890b9635267dd99b4c81115826e816e22e336834c9303c533e202cfa6a191392601ceedba3f9ca4de6117775e0fc6104341e73521139d76c3364de28af58f1473a08472c60916a641ae97ddb9bb072832dfe5b92271fd47ef89c9828a0c7175418d1c9ea3202e2ba588130bbf2e384eb847c9ac2d6807a92e4ba133d5715f36266617f8da56c9c8b394bc002575ca2020cda9f9297a7d045d251025817559e2ea52f54428328ec3db312710203010001(2:`43e94ba24bfb7fea94918f3881be62529905b81561a7dbc7cd4dcc0aeb02bea20b896980344c3e7e35a328eb1c526440B
+
èðϤˆB
-"W–®¤ˆB
+"]p£ˆJ'Hosted for IIT Madras | New Jersey, USA
+†"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100b72801058ccefb52139ba9c6868a9495e37ba6571c5bc0fb7f2b0d079005dd5ce12af705dfc5ace7fe4b011e6497e1b065e5ef3d937553b1c7c10545ac5c91354ecfad6a6476468883cc66a4a5eb0e1c1d1bbf1030d9650f67b075909e53696ea31acad5240111f75537b14e6eef6451d7b334d1804a2a5789b5e4ac6bfa27955e5517851601b67cfd0bd2869c7ed1f4ce098e367f133b1958743c13c6f69011a8c475b2126d3bc352387989c866fe219a16291e44a92d5471f6fc16862ec7bfe0cad5a4eea1c60829876fb5a012e1dbc51c0c082d890b9635267dd99b4c81115826e816e22e336834c9303c533e202cfa6a191392601ceedba3f9ca4de6117775e0fc6104341e73521139d76c3364de28af58f1473a08472c60916a641ae97ddb9bb072832dfe5b92271fd47ef89c9828a0c7175418d1c9ea3202e2ba588130bbf2e384eb847c9ac2d6807a92e4ba133d5715f36266617f8da56c9c8b394bc002575ca2020cda9f9297a7d045d251025817559e2ea52f54428328ec3db312710203010001(2:`43e94ba24bfb7fea94918f3881be62529905b81561a7dbc7cd4dcc0aeb02bea20b896980344c3e7e35a328eb1c526440B
äg£ˆB
+"W–®¤ˆB
+
äg¤ˆB
-"W–®£ˆJ1Hosted for DBS | Singapore, Republic of Singapore
-‹"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ca795b166d8343bed7ee146c955dd21b828e83078b2a6d314b677610ffd73eba291183a69b558e93c4e0e6c68a2535b13aaf61f9a56e2901f7e1bb999fe178f4c9354f456fcd5cc8c98d259028afdd2fb1df66622d343a0d51317677fee1eb7491693334a0f66b89665be40a4aeb376acc0ac0283c5f5d304b1030696bfd6c073063f21fdfe7b9a2c839abf637828303bf2dea28da015920458f9fd94eac62fd174e37ee08a43b7930b22214a5664deca8d348295e0c399aa8b8460821fb644d77024267ec942edf2dd0c5dab272640431333885f442e73cc194148f728c5a7c9b5a2966d3e3b25f983600fda0ea3a4be97cf7e8f3b0fb648f0b35fa13d272ae7d4342a929b597b40d1c544439cadc26db99b545caee607418883135e9bf160f9779f58d08d502f5eb951bf1e10917c8039abdf09ac3614ede498839f3da2760016840541fefc84ac93c7efd91852a44016bfdc68e38e50c3ae3cc545c37d83a06742aa8ae531d5b16be32c6bdf06dcc2373013892f92e3ae53641d76cd2a8dd0203010001(2:`9e51d01fd202f55080e5ddc4c5a9822747c66a857b0d4070fc20b3f508c5a20239877a219b761825349af5f30010a83dB
+"W–®£ˆJHosted for DBS | Georgia, USA
+"Ì308201a2300d06092a864886f70d01010105000382018f003082018a0282018100ca795b166d8343bed7ee146c955dd21b828e83078b2a6d314b677610ffd73eba291183a69b558e93c4e0e6c68a2535b13aaf61f9a56e2901f7e1bb999fe178f4c9354f456fcd5cc8c98d259028afdd2fb1df66622d343a0d51317677fee1eb7491693334a0f66b89665be40a4aeb376acc0ac0283c5f5d304b1030696bfd6c073063f21fdfe7b9a2c839abf637828303bf2dea28da015920458f9fd94eac62fd174e37ee08a43b7930b22214a5664deca8d348295e0c399aa8b8460821fb644d77024267ec942edf2dd0c5dab272640431333885f442e73cc194148f728c5a7c9b5a2966d3e3b25f983600fda0ea3a4be97cf7e8f3b0fb648f0b35fa13d272ae7d4342a929b597b40d1c544439cadc26db99b545caee607418883135e9bf160f9779f58d08d502f5eb951bf1e10917c8039abdf09ac3614ede498839f3da2760016840541fefc84ac93c7efd91852a44016bfdc68e38e50c3ae3cc545c37d83a06742aa8ae531d5b16be32c6bdf06dcc2373013892f92e3ae53641d76cd2a8dd0203010001(2:`9e51d01fd202f55080e5ddc4c5a9822747c66a857b0d4070fc20b3f508c5a20239877a219b761825349af5f30010a83dB
"}È`¤ˆB
@@ -285,29 +285,29 @@
8`£ˆB
-"}È`£ˆJ"Hosted by ServiceNow | Ogden, Utah
+"}È`£ˆJ'Hosted for ServiceNow | Washington, USA
ž"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009f661e1b6526bd231239280555db14a909404cdcc9188642b6d47cb2f3e9c916632e26a4504cff08ba70d146db317a08cc08200419b1b96945984c19cf38d61cb4ae6f11a6aa507eabc12a7291731363790816df3a65fb9f55b20218429c6d24cd19302b12bdb659ad6bb8171ed6f68d9e96dde1aa0af45c69c3bec061c5615d81600bd2bd710d8135a500e37eb748fd296f7c568c26c0dcbe6afe8a2fc2bc3a7e530524c835128d76aa54b413efa035269fd6881497d5ab300ab4efda455f42a80ef39c6bc41931f46b891299040b6d0f3de893f68254be0841aae4f5112097e09db8ffc80c8523c79ea81c6c1adecd04115af9dbbcbc35a02dbe89db88eff6fff8cd6b1f335ef4fa720008fa0b2a5b14022193eb9e2cb7f0372fa9b7e881438ef7460fe1780ec653f2a3ce789c0f5cb6f7b2716148a2e1cb3edc1c6daa1e10a4c0b86741b1bfc8c4d2f35cbb0b0bc14cffbd677512fc15b0df93f76b22c32437c2751c8329cddd8a56eca7520072ef3d01acefc17bb38aa4d442bb56d3b06d0203010001(2:`b02c9e85f49da18147fd1353773baf0e71d72e22a007f1df9051aa8a4761ae87ad4f90ea4c3409811a1c4777cc2fc61fB
‹/¤ˆB
#ÆÜK¤ˆB
-#ÆÜK£ˆB
+‹/£ˆB
-‹/£ˆJ5Hosted for Ubisoft | Singapore, Republic of Singapore
+#ÆÜK£ˆJ5Hosted for Ubisoft | Singapore, Republic of Singapore
"Ì308201a2300d06092a864886f70d01010105000382018f003082018a02820181009b18967c838877f85a6471ce9f164cef939b01830b9eb22c02cc6b72a907020b3e4c014dc711ea8e095b88d0b4858ec86b05a8c3a59ac12d2b9fabcac282ceb618db00eb59716611d6706c81aa32d9dddc6a6c7b396ba202fedeb33f289a887284ebfc07d166d02c2c6ed32c7324c3ec8ae22112854e18ab5ea07a615c5ef8004ec68ac70dc03003a47f7efe103edce257d28e7961f428f1cfa2e6cf71bf45c564b82ccbda14a183f30c2c3d5a7afba7a004079e87702c249e96a7b2fdd562fc16759efe75abe6a23d0d2f906a2df1d4b64cb2117a7304449c75319a7620c219a4ffc982e822b6e1a07be1cf98be9265d086dc271aa406310f8a846fd331239fe303bd5616c89080fb88639b7c0ceb14009381823e0433db6f9156e2bda1873d4aa9a3a639604bfbd11a6dd6ce03b4b0ceef95601c7d88a840397cdbca3ff214fbf58c9d9dbd79d39ea767e9ae5f6eab9fca05fc4800f557657c90c12c60e02164825d4c33af4737374ea235b50313ed0b75bf89a6b79001fba74cc1319e55150203010001(2:`fff800ea4280d62c9c1ff333cf430194e0f8af282b813b45211328533cf72f9f14644c0604aacf12b165b5a6b059acc3B
-6J txResp;
- com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(client);
+ com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(
+ client);
assertThat(resp.nodeId).isEqualTo(new AccountId(3));
assertThat(resp.getValidateStatus()).isTrue();
@@ -305,14 +311,15 @@ void executeWithChannelFailure() throws PrecheckStatusException, TimeoutExceptio
when(node3.isHealthy()).thenReturn(true);
when(node4.isHealthy()).thenReturn(true);
- when(node3.channelFailedToConnect()).thenReturn(true);
- when(node4.channelFailedToConnect()).thenReturn(false);
+ when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(true);
+ when(node4.channelFailedToConnect(any(Instant.class))).thenReturn(false);
var now = java.time.Instant.now();
var tx = new DummyTransaction() {
@Nullable
@Override
- TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) {
+ TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response,
+ AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) {
return new TransactionResponse(
new AccountId(4),
TransactionId.withValidStart(new AccountId(4), now),
@@ -335,10 +342,11 @@ TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionRespon
.build();
tx.blockingUnaryCall = (grpcRequest) -> txResp;
- com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(client);
+ com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(
+ client);
- verify(node3).channelFailedToConnect();
- verify(node4).channelFailedToConnect();
+ verify(node3).channelFailedToConnect(any(Instant.class));
+ verify(node4).channelFailedToConnect(any(Instant.class));
assertThat(resp.nodeId).isEqualTo(new AccountId(4));
}
@@ -354,9 +362,10 @@ void executeWithAllUnhealthyNodes() throws PrecheckStatusException, TimeoutExcep
when(node4.isHealthy()).thenAnswer((Answer) inv -> i.get() == 0);
when(node5.isHealthy()).thenAnswer((Answer) inv -> i.get() == 0);
- when(node3.channelFailedToConnect()).thenAnswer((Answer) inv -> i.get() == 0);
- when(node4.channelFailedToConnect()).thenAnswer((Answer) inv -> i.get() == 0);
- when(node5.channelFailedToConnect()).thenAnswer((Answer) inv -> i.getAndIncrement() == 0);
+ when(node3.channelFailedToConnect(any(Instant.class))).thenAnswer((Answer) inv -> i.get() == 0);
+ when(node4.channelFailedToConnect(any(Instant.class))).thenAnswer((Answer) inv -> i.get() == 0);
+ when(node5.channelFailedToConnect(any(Instant.class))).thenAnswer(
+ (Answer) inv -> i.getAndIncrement() == 0);
when(node3.getRemainingTimeForBackoff()).thenReturn(500L);
when(node4.getRemainingTimeForBackoff()).thenReturn(600L);
@@ -366,7 +375,8 @@ void executeWithAllUnhealthyNodes() throws PrecheckStatusException, TimeoutExcep
var tx = new DummyTransaction() {
@Nullable
@Override
- TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) {
+ TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response,
+ AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) {
return new TransactionResponse(
new AccountId(3),
TransactionId.withValidStart(new AccountId(3), now),
@@ -389,11 +399,12 @@ TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionRespon
.build();
tx.blockingUnaryCall = (grpcRequest) -> txResp;
- com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(client);
+ com.hedera.hashgraph.sdk.TransactionResponse resp = (com.hedera.hashgraph.sdk.TransactionResponse) tx.execute(
+ client);
- verify(node3, times(2)).channelFailedToConnect();
- verify(node4).channelFailedToConnect();
- verify(node5).channelFailedToConnect();
+ verify(node3, times(2)).channelFailedToConnect(any(Instant.class));
+ verify(node4).channelFailedToConnect(any(Instant.class));
+ verify(node5).channelFailedToConnect(any(Instant.class));
assertThat(resp.nodeId).isEqualTo(new AccountId(3));
}
@@ -403,9 +414,9 @@ void executeExhaustRetries() {
when(node4.isHealthy()).thenReturn(true);
when(node5.isHealthy()).thenReturn(true);
- when(node3.channelFailedToConnect()).thenReturn(true);
- when(node4.channelFailedToConnect()).thenReturn(true);
- when(node5.channelFailedToConnect()).thenReturn(true);
+ when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(true);
+ when(node4.channelFailedToConnect(any(Instant.class))).thenReturn(true);
+ when(node5.channelFailedToConnect(any(Instant.class))).thenReturn(true);
var tx = new DummyTransaction();
var nodeAccountIds = Arrays.asList(
@@ -424,8 +435,8 @@ void executeRetriableErrorDuringCall() {
when(node3.isHealthy()).thenReturn(true);
when(node4.isHealthy()).thenReturn(true);
- when(node3.channelFailedToConnect()).thenReturn(false);
- when(node4.channelFailedToConnect()).thenReturn(false);
+ when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(false);
+ when(node4.channelFailedToConnect(any(Instant.class))).thenReturn(false);
var tx = new DummyTransaction();
var nodeAccountIds = Arrays.asList(
@@ -436,16 +447,38 @@ void executeRetriableErrorDuringCall() {
tx.setNodeAccountIds(nodeAccountIds);
tx.blockingUnaryCall = (grpcRequest) -> {
- if (i.getAndIncrement() == 0)
+ if (i.getAndIncrement() == 0) {
throw new StatusRuntimeException(io.grpc.Status.UNAVAILABLE);
- else
+ } else {
throw new StatusRuntimeException(io.grpc.Status.ABORTED);
+ }
};
assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> tx.execute(client));
- verify(node3).channelFailedToConnect();
- verify(node4).channelFailedToConnect();
+ verify(node3).channelFailedToConnect(any(Instant.class));
+ verify(node4).channelFailedToConnect(any(Instant.class));
+ }
+
+ @Test
+ void testChannelFailedToConnectTimeout() {
+ TransactionResponse transactionResponse = new TransactionResponse(
+ new AccountId(3),
+ TransactionId.withValidStart(new AccountId(3), java.time.Instant.now()),
+ new byte[]{1, 2, 3},
+ null
+ );
+ var tx = new DummyTransaction();
+
+ tx.blockingUnaryCall = (grpcRequest) -> {
+ throw new StatusRuntimeException(io.grpc.Status.UNAVAILABLE);
+ };
+
+ when(node3.isHealthy()).thenReturn(true);
+ when(node3.channelFailedToConnect(any(Instant.class))).thenReturn(true);
+
+ assertThatExceptionOfType(MaxAttemptsExceededException.class).isThrownBy(
+ () -> transactionResponse.getReceipt(client, Duration.ofSeconds(2)));
}
@Test
@@ -486,8 +519,8 @@ ExecutionState getExecutionState(Status status, Response response) {
tx.blockingUnaryCall = (grpcRequest) -> resp;
tx.execute(client);
- verify(node3).channelFailedToConnect();
- verify(node4).channelFailedToConnect();
+ verify(node3).channelFailedToConnect(any(Instant.class));
+ verify(node4).channelFailedToConnect(any(Instant.class));
}
@@ -518,7 +551,7 @@ Status mapResponseStatus(com.hedera.hashgraph.sdk.proto.TransactionResponse resp
tx.blockingUnaryCall = (grpcRequest) -> txResp;
assertThatExceptionOfType(PrecheckStatusException.class).isThrownBy(() -> tx.execute(client));
- verify(node3).channelFailedToConnect();
+ verify(node3).channelFailedToConnect(any(Instant.class));
}
@Test
@@ -529,7 +562,8 @@ Status mapResponseStatus(com.hedera.hashgraph.sdk.proto.TransactionResponse resp
void shouldRetryReturnsCorrectStates() {
var tx = new DummyTransaction();
- assertThat(tx.getExecutionState(Status.PLATFORM_TRANSACTION_NOT_CREATED, null)).isEqualTo(ExecutionState.SERVER_ERROR);
+ assertThat(tx.getExecutionState(Status.PLATFORM_TRANSACTION_NOT_CREATED, null)).isEqualTo(
+ ExecutionState.SERVER_ERROR);
assertThat(tx.getExecutionState(Status.PLATFORM_NOT_ACTIVE, null)).isEqualTo(ExecutionState.SERVER_ERROR);
assertThat(tx.getExecutionState(Status.BUSY, null)).isEqualTo(ExecutionState.SERVER_ERROR);
assertThat(tx.getExecutionState(Status.OK, null)).isEqualTo(ExecutionState.SUCCESS);
@@ -548,7 +582,8 @@ void shouldSetMaxRetry() {
}
static class DummyTransaction>
- extends Executable {
+ extends
+ Executable {
@Override
void onExecute(Client client) {
@@ -568,7 +603,8 @@ com.hedera.hashgraph.sdk.proto.Transaction makeRequest() {
@Nullable
@Override
- TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Transaction request) {
+ TransactionResponse mapResponse(com.hedera.hashgraph.sdk.proto.TransactionResponse response, AccountId nodeId,
+ com.hedera.hashgraph.sdk.proto.Transaction request) {
return null;
}
@@ -596,7 +632,8 @@ void onExecute(Client client) {
}
@Override
- TransactionReceipt mapResponse(Response response, AccountId nodeId, com.hedera.hashgraph.sdk.proto.Query request) {
+ TransactionReceipt mapResponse(Response response, AccountId nodeId,
+ com.hedera.hashgraph.sdk.proto.Query request) {
return null;
}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java
index 91ac4be15..c8566fbe6 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FeeSchedulesTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java
index 25953399b..b45a8f668 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileAppendTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java
index 9b40ca87c..eaee5ae20 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileContentsQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java
index f3823277d..43e91243a 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileCreateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java
index 2e30a7ceb..251f0f2c4 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileDeleteTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java
index 754b42052..ab8850e26 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileIdTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java
index 54dd0a002..c939a0a69 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java
index ac168264e..ad6b531e0 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileInfoTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java
index eb85fd528..b7ee03c94 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FileUpdateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java
index 2c4f4bb07..fee6937a5 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/FreezeTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java
index 320618af3..2423b5dad 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/HbarTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java
index 04610f834..42277ac0a 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/HederaTrustManagerTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java
index 028c2de14..9396abf1b 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeyTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java
index c332bf456..ee0779a32 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/KeystoreTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java
index 67bf979c5..0937da6f7 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ListInputTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java
index c27108420..eb8f89487 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MaxQueryPaymentExceededExceptionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java
index 3d7859b31..031324b1f 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MessageSubmitTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java
index 21f8ae978..81d24e608 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MnemonicTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java
index a8995994e..4322d8dd6 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/Mocker.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java
index bdcd5d938..9048440f6 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/MockingTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java
index ed76b590b..e44d99ce1 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/NftIdTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java
index 0e2939ad3..a9cbb0fbf 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrivateKeyTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java
index f77335cc2..4fb15c896 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/PrngTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java
index 19ed5e5df..0a8e9ec85 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/RegenerateTransactionIdsTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java
index 371d9c18e..a9f238c64 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleCreateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java
index d7c55bc4c..dec9a6e5f 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleDeleteTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java
index 7d0c5be83..d355abb19 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleInfoQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java
index 0da728420..274e622a4 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/ScheduleSignTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java
index 50aad95da..a31112dd2 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/StatusTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java
index 376c834b5..93c3075be 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemDeleteTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java
index 15212e34a..cd487631c 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/SystemUndeleteTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java
index a4cb11554..3d243fe01 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestResponse.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java
index 4b5454ee9..559542b81 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestServer.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java
index d7d0c3bec..60b5c912e 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TestService.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAllowanceTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAllowanceTest.java
new file mode 100644
index 000000000..995ee2454
--- /dev/null
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAllowanceTest.java
@@ -0,0 +1,53 @@
+package com.hedera.hashgraph.sdk;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+import org.junit.jupiter.api.Test;
+
+public class TokenAllowanceTest {
+
+ private static final TokenId testTokenId = TokenId.fromString("0.6.9");
+ private static final AccountId testOwnerAccountId = AccountId.fromString("8.8.8");
+ private static final AccountId testSpenderAccountId = AccountId.fromString("7.7.7");
+ private static final long testAmount = 4L;
+
+ @Test
+ void constructWithTokenIdOwnerSpenderAmount() {
+ TokenAllowance tokenAllowance = new TokenAllowance(testTokenId, testOwnerAccountId, testSpenderAccountId,
+ testAmount);
+
+ assertThat(tokenAllowance.tokenId).isEqualTo(testTokenId);
+ assertThat(tokenAllowance.ownerAccountId).isEqualTo(testOwnerAccountId);
+ assertThat(tokenAllowance.spenderAccountId).isEqualTo(testSpenderAccountId);
+ assertThat(tokenAllowance.amount).isEqualTo(testAmount);
+ }
+
+ @Test
+ void fromProtobuf() {
+ var tokenAllowanceProtobuf = new TokenAllowance(testTokenId, testOwnerAccountId, testSpenderAccountId,
+ testAmount).toProtobuf();
+ var tokenAllowance = TokenAllowance.fromProtobuf(tokenAllowanceProtobuf);
+
+ assertThat(tokenAllowance.tokenId).isEqualTo(testTokenId);
+ assertThat(tokenAllowance.ownerAccountId).isEqualTo(testOwnerAccountId);
+ assertThat(tokenAllowance.spenderAccountId).isEqualTo(testSpenderAccountId);
+ assertThat(tokenAllowance.amount).isEqualTo(testAmount);
+ }
+
+ @Test
+ void toProtobuf() {
+ var tokenAllowanceProtobuf = new TokenAllowance(testTokenId, testOwnerAccountId, testSpenderAccountId,
+ testAmount).toProtobuf();
+
+ assertTrue(tokenAllowanceProtobuf.hasTokenId());
+ assertThat(TokenId.fromProtobuf(tokenAllowanceProtobuf.getTokenId())).isEqualTo(testTokenId);
+
+ assertTrue(tokenAllowanceProtobuf.hasOwner());
+ assertThat(AccountId.fromProtobuf(tokenAllowanceProtobuf.getOwner())).isEqualTo(testOwnerAccountId);
+
+ assertTrue(tokenAllowanceProtobuf.hasSpender());
+ assertThat(AccountId.fromProtobuf(tokenAllowanceProtobuf.getSpender())).isEqualTo(testSpenderAccountId);
+
+ }
+}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java
index b30f9bbfa..361335a0b 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenAssociateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java
index 63e7f963f..774516788 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenBurnTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java
index c63c0f8e5..9fa6d4981 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenCreateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java
index b9da9484d..f92318385 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDeleteTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java
index a87622b09..469e7830a 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenDissociateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java
index cdb001076..29074be72 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFeeScheduleUpdateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java
index 9b9fc26b8..771fb8b2b 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenFreezeTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java
index 93f712a40..e72037da9 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,22 +19,24 @@
*/
package com.hedera.hashgraph.sdk;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody;
import com.hedera.hashgraph.sdk.proto.TokenGrantKycTransactionBody;
-import com.hedera.hashgraph.sdk.proto.TokenUnfreezeAccountTransactionBody;
+import com.hedera.hashgraph.sdk.proto.TransactionBody;
import io.github.jsonSnapshot.SnapshotMatcher;
+import java.time.Instant;
+import java.util.Arrays;
import org.junit.AfterClass;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
-
-import java.util.Arrays;
-
-import static org.assertj.core.api.Assertions.assertThat;
public class TokenGrantKycTransactionTest {
private static final PrivateKey unusedPrivateKey = PrivateKey.fromString(
"302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10");
+ private static final TokenId testTokenId = TokenId.fromString("4.2.0");
+ private static final AccountId testAccountId = AccountId.fromString("6.9.0");
final Instant validStart = Instant.ofEpochSecond(1554158542);
@@ -50,19 +52,14 @@ public static void afterAll() {
@Test
void shouldSerialize() {
- SnapshotMatcher.expect(spawnTestTransaction()
- .toString()
- ).toMatchSnapshot();
+ SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot();
}
private TokenGrantKycTransaction spawnTestTransaction() {
- return new TokenGrantKycTransaction()
- .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ return new TokenGrantKycTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
.setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
- .setAccountId(AccountId.fromString("0.0.222"))
- .setTokenId(TokenId.fromString("6.5.4"))
- .setMaxTransactionFee(new Hbar(1))
- .freeze()
+ .setAccountId(testAccountId).setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze()
.sign(unusedPrivateKey);
}
@@ -76,11 +73,45 @@ void shouldBytes() throws Exception {
@Test
void fromScheduledTransaction() {
var transactionBody = SchedulableTransactionBody.newBuilder()
- .setTokenGrantKyc(TokenGrantKycTransactionBody.newBuilder().build())
- .build();
+ .setTokenGrantKyc(TokenGrantKycTransactionBody.newBuilder().build()).build();
var tx = Transaction.fromScheduledTransaction(transactionBody);
assertThat(tx).isInstanceOf(TokenGrantKycTransaction.class);
}
+
+ @Test
+ void constructTokenGrantKycTransactionFromTransactionBodyProtobuf() {
+ var transactionBody = TokenGrantKycTransactionBody.newBuilder().setAccount(testAccountId.toProtobuf())
+ .setToken(testTokenId.toProtobuf()).build();
+
+ var tx = TransactionBody.newBuilder().setTokenGrantKyc(transactionBody).build();
+ var tokenGrantKycTransaction = new TokenGrantKycTransaction(tx);
+
+ assertThat(tokenGrantKycTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetAccountId() {
+ var tokenGrantKycTransaction = new TokenGrantKycTransaction().setAccountId(testAccountId);
+ assertThat(tokenGrantKycTransaction.getAccountId()).isEqualTo(testAccountId);
+ }
+
+ @Test
+ void getSetAccountIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setAccountId(testAccountId));
+ }
+
+ @Test
+ void getSetTokenId() {
+ var tokenGrantKycTransaction = new TokenGrantKycTransaction().setTokenId(testTokenId);
+ assertThat(tokenGrantKycTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetTokenIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId));
+ }
}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap
index 45fc0c7a9..80980fb0b 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenGrantKycTransactionTest.snap
@@ -1,3 +1,3 @@
com.hedera.hashgraph.sdk.TokenGrantKycTransactionTest.shouldSerialize=[
- "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_grant_kyc {\n account {\n account_num: 222\n realm_num: 0\n shard_num: 0\n }\n token {\n realm_num: 5\n shard_num: 6\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
+ "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_grant_kyc {\n account {\n account_num: 0\n realm_num: 9\n shard_num: 6\n }\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
]
\ No newline at end of file
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java
index e5c80e041..13ce9060c 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java
index 2b0c75d30..86145b4f0 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenInfoTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java
index ef84da270..0e6a35321 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,23 +19,23 @@
*/
package com.hedera.hashgraph.sdk;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody;
-import com.hedera.hashgraph.sdk.proto.TokenFeeScheduleUpdateTransactionBody;
import com.hedera.hashgraph.sdk.proto.TokenPauseTransactionBody;
+import com.hedera.hashgraph.sdk.proto.TransactionBody;
import io.github.jsonSnapshot.SnapshotMatcher;
+import java.time.Instant;
+import java.util.Arrays;
import org.junit.AfterClass;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
-
-import java.util.Arrays;
-
-import static org.assertj.core.api.Assertions.assertThat;
public class TokenPauseTransactionTest {
private static final PrivateKey unusedPrivateKey = PrivateKey.fromString(
"302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10");
-
+ private static final TokenId testTokenId = TokenId.fromString("4.2.0");
final Instant validStart = Instant.ofEpochSecond(1554158542);
@BeforeAll
@@ -49,20 +49,15 @@ public static void afterAll() {
}
TokenPauseTransaction spawnTestTransaction() {
- return new TokenPauseTransaction()
- .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ return new TokenPauseTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
.setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
- .setTokenId(TokenId.fromString("1.23.4"))
- .setMaxTransactionFee(new Hbar(1))
- .freeze()
- .sign(unusedPrivateKey);
+ .setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze().sign(unusedPrivateKey);
}
@Test
void shouldSerialize() {
- SnapshotMatcher.expect(spawnTestTransaction()
- .toString()
- ).toMatchSnapshot();
+ SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot();
}
@Test
@@ -75,11 +70,33 @@ void shouldBytesNft() throws Exception {
@Test
void fromScheduledTransaction() {
var transactionBody = SchedulableTransactionBody.newBuilder()
- .setTokenPause(TokenPauseTransactionBody.newBuilder().build())
- .build();
+ .setTokenPause(TokenPauseTransactionBody.newBuilder().build()).build();
var tx = Transaction.fromScheduledTransaction(transactionBody);
assertThat(tx).isInstanceOf(TokenPauseTransaction.class);
}
+
+ @Test
+ void constructTokenPauseTransactionFromTransactionBodyProtobuf() {
+ var transactionBody = TokenPauseTransactionBody.newBuilder().setToken(testTokenId.toProtobuf()).build();
+
+ var tx = TransactionBody.newBuilder().setTokenPause(transactionBody).build();
+ var tokenPauseTransaction = new TokenPauseTransaction(tx);
+
+ assertThat(tokenPauseTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetTokenId() {
+ var tokenPauseTransaction = new TokenPauseTransaction().setTokenId(testTokenId);
+ assertThat(tokenPauseTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetTokenIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId));
+ }
+
}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap
index ce4b3db49..6f138223e 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenPauseTransactionTest.snap
@@ -1,3 +1,3 @@
com.hedera.hashgraph.sdk.TokenPauseTransactionTest.shouldSerialize=[
- "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_pause {\n token {\n realm_num: 23\n shard_num: 1\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
+ "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_pause {\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
]
\ No newline at end of file
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java
index 11f7de523..43a2066b8 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,22 +19,24 @@
*/
package com.hedera.hashgraph.sdk;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody;
-import com.hedera.hashgraph.sdk.proto.TokenGrantKycTransactionBody;
import com.hedera.hashgraph.sdk.proto.TokenRevokeKycTransactionBody;
+import com.hedera.hashgraph.sdk.proto.TransactionBody;
import io.github.jsonSnapshot.SnapshotMatcher;
+import java.time.Instant;
+import java.util.Arrays;
import org.junit.AfterClass;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
-
-import java.util.Arrays;
-
-import static org.assertj.core.api.Assertions.assertThat;
public class TokenRevokeKycTransactionTest {
private static final PrivateKey unusedPrivateKey = PrivateKey.fromString(
"302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10");
+ private static final TokenId testTokenId = TokenId.fromString("4.2.0");
+ private static final AccountId testAccountId = AccountId.fromString("6.9.0");
final Instant validStart = Instant.ofEpochSecond(1554158542);
@@ -50,19 +52,14 @@ public static void afterAll() {
@Test
void shouldSerialize() {
- SnapshotMatcher.expect(spawnTestTransaction()
- .toString()
- ).toMatchSnapshot();
+ SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot();
}
private TokenRevokeKycTransaction spawnTestTransaction() {
- return new TokenRevokeKycTransaction()
- .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ return new TokenRevokeKycTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
.setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
- .setAccountId(AccountId.fromString("0.0.222"))
- .setTokenId(TokenId.fromString("6.5.4"))
- .setMaxTransactionFee(new Hbar(1))
- .freeze()
+ .setAccountId(testAccountId).setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze()
.sign(unusedPrivateKey);
}
@@ -76,11 +73,45 @@ void shouldBytes() throws Exception {
@Test
void fromScheduledTransaction() {
var transactionBody = SchedulableTransactionBody.newBuilder()
- .setTokenRevokeKyc(TokenRevokeKycTransactionBody.newBuilder().build())
- .build();
+ .setTokenRevokeKyc(TokenRevokeKycTransactionBody.newBuilder().build()).build();
var tx = Transaction.fromScheduledTransaction(transactionBody);
assertThat(tx).isInstanceOf(TokenRevokeKycTransaction.class);
}
+
+ @Test
+ void constructTokenRevokeKycTransactionFromTransactionBodyProtobuf() {
+ var transactionBody = TokenRevokeKycTransactionBody.newBuilder().setAccount(testAccountId.toProtobuf())
+ .setToken(testTokenId.toProtobuf()).build();
+
+ var tx = TransactionBody.newBuilder().setTokenRevokeKyc(transactionBody).build();
+ var tokenRevokeKycTransaction = new TokenRevokeKycTransaction(tx);
+
+ assertThat(tokenRevokeKycTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetAccountId() {
+ var tokenRevokeKycTransaction = new TokenRevokeKycTransaction().setAccountId(testAccountId);
+ assertThat(tokenRevokeKycTransaction.getAccountId()).isEqualTo(testAccountId);
+ }
+
+ @Test
+ void getSetAccountIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setAccountId(testAccountId));
+ }
+
+ @Test
+ void getSetTokenId() {
+ var tokenRevokeKycTransaction = new TokenRevokeKycTransaction().setTokenId(testTokenId);
+ assertThat(tokenRevokeKycTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetTokenIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId));
+ }
}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap
index ab81b0e62..6c91f3c12 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenRevokeKycTransactionTest.snap
@@ -1,3 +1,3 @@
com.hedera.hashgraph.sdk.TokenRevokeKycTransactionTest.shouldSerialize=[
- "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_revoke_kyc {\n account {\n account_num: 222\n realm_num: 0\n shard_num: 0\n }\n token {\n realm_num: 5\n shard_num: 6\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
+ "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_revoke_kyc {\n account {\n account_num: 0\n realm_num: 9\n shard_num: 6\n }\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
]
\ No newline at end of file
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java
index acf43fddd..5faefb763 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnfreezeTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java
index 37730ea18..fd1b77126 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,22 +19,23 @@
*/
package com.hedera.hashgraph.sdk;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody;
-import com.hedera.hashgraph.sdk.proto.TokenPauseTransactionBody;
import com.hedera.hashgraph.sdk.proto.TokenUnpauseTransactionBody;
+import com.hedera.hashgraph.sdk.proto.TransactionBody;
import io.github.jsonSnapshot.SnapshotMatcher;
+import java.time.Instant;
+import java.util.Arrays;
import org.junit.AfterClass;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
-import java.time.Instant;
-
-import java.util.Arrays;
-
-import static org.assertj.core.api.Assertions.assertThat;
public class TokenUnpauseTransactionTest {
private static final PrivateKey unusedPrivateKey = PrivateKey.fromString(
"302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10");
+ private static final TokenId testTokenId = TokenId.fromString("4.2.0");
final Instant validStart = Instant.ofEpochSecond(1554158542);
@@ -49,20 +50,15 @@ public static void afterAll() {
}
TokenUnpauseTransaction spawnTestTransaction() {
- return new TokenUnpauseTransaction()
- .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ return new TokenUnpauseTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
.setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
- .setTokenId(TokenId.fromString("1.23.4"))
- .setMaxTransactionFee(new Hbar(1))
- .freeze()
- .sign(unusedPrivateKey);
+ .setTokenId(testTokenId).setMaxTransactionFee(new Hbar(1)).freeze().sign(unusedPrivateKey);
}
@Test
void shouldSerialize() {
- SnapshotMatcher.expect(spawnTestTransaction()
- .toString()
- ).toMatchSnapshot();
+ SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot();
}
@Test
@@ -75,11 +71,32 @@ void shouldBytesNft() throws Exception {
@Test
void fromScheduledTransaction() {
var transactionBody = SchedulableTransactionBody.newBuilder()
- .setTokenUnpause(TokenUnpauseTransactionBody.newBuilder().build())
- .build();
+ .setTokenUnpause(TokenUnpauseTransactionBody.newBuilder().build()).build();
var tx = Transaction.fromScheduledTransaction(transactionBody);
assertThat(tx).isInstanceOf(TokenUnpauseTransaction.class);
}
+
+ @Test
+ void constructTokenUnpauseTransactionFromTransactionBodyProtobuf() {
+ var transactionBody = TokenUnpauseTransactionBody.newBuilder().setToken(testTokenId.toProtobuf()).build();
+
+ var tx = TransactionBody.newBuilder().setTokenUnpause(transactionBody).build();
+ var tokenUnpauseTransaction = new TokenUnpauseTransaction(tx);
+
+ assertThat(tokenUnpauseTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetTokenId() {
+ var tokenUnpauseTransaction = new TokenUnpauseTransaction().setTokenId(testTokenId);
+ assertThat(tokenUnpauseTransaction.getTokenId()).isEqualTo(testTokenId);
+ }
+
+ @Test
+ void getSetTokenIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setTokenId(testTokenId));
+ }
}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap
index 265cf480e..019f591a2 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUnpauseTransactionTest.snap
@@ -1,3 +1,3 @@
com.hedera.hashgraph.sdk.TokenUnpauseTransactionTest.shouldSerialize=[
- "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_unpause {\n token {\n realm_num: 23\n shard_num: 1\n token_num: 4\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
+ "# com.hedera.hashgraph.sdk.proto.TransactionBody\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntoken_unpause {\n token {\n realm_num: 2\n shard_num: 4\n token_num: 0\n }\n}\ntransaction_fee: 100000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
]
\ No newline at end of file
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java
index b5dca84e8..3786261a7 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenUpdateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java
index 3901eb84e..292abd10e 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TokenWipeTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java
index c0bf4c26a..160385b0f 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicCreateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java
index c210bcc73..e325f87d3 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicDeleteTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java
index 061a17456..e48e1ab06 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicIdTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java
index 7c66458dc..43327c5e7 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java
index 949bc3a3c..5914b0afc 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicInfoTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageChunkTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageChunkTest.java
new file mode 100644
index 000000000..a8ee05dd9
--- /dev/null
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageChunkTest.java
@@ -0,0 +1,36 @@
+package com.hedera.hashgraph.sdk;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.protobuf.ByteString;
+import com.hedera.hashgraph.sdk.proto.ConsensusMessageChunkInfo;
+import com.hedera.hashgraph.sdk.proto.Timestamp;
+import com.hedera.hashgraph.sdk.proto.mirror.ConsensusTopicResponse;
+import java.time.Instant;
+import org.junit.jupiter.api.Test;
+
+public class TopicMessageChunkTest {
+
+ private static final Instant testTimestamp = Instant.ofEpochSecond(1554158542);
+ private static final byte[] testContents = new byte[]{0x01, 0x02, 0x03};
+ private static final byte[] testRunningHash = new byte[]{0x04, 0x05, 0x06};
+ private static final long testSequenceNumber = 7L;
+ private static final TransactionId testTransactionId = new TransactionId(new AccountId(1), testTimestamp);
+
+ @Test
+ void constructWithArgs() {
+ var consensusTopicResponse = ConsensusTopicResponse.newBuilder()
+ .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond()))
+ .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash))
+ .setSequenceNumber(testSequenceNumber).setChunkInfo(
+ ConsensusMessageChunkInfo.newBuilder().setInitialTransactionID(testTransactionId.toProtobuf()).build())
+ .build();
+
+ TopicMessageChunk topicMessageChunk = new TopicMessageChunk(consensusTopicResponse);
+
+ assertThat(topicMessageChunk.consensusTimestamp).isEqualTo(testTimestamp);
+ assertThat(topicMessageChunk.contentSize).isEqualTo(testContents.length);
+ assertThat(topicMessageChunk.runningHash).isEqualTo(testRunningHash);
+ assertThat(topicMessageChunk.sequenceNumber).isEqualTo(testSequenceNumber);
+ }
+}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java
index 540e6577c..dbbd4a33c 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.java
new file mode 100644
index 000000000..8bee382f7
--- /dev/null
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.java
@@ -0,0 +1,100 @@
+package com.hedera.hashgraph.sdk;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import com.google.protobuf.ByteString;
+import com.hedera.hashgraph.sdk.proto.ConsensusSubmitMessageTransactionBody;
+import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody;
+import com.hedera.hashgraph.sdk.proto.TransactionBody;
+import io.github.jsonSnapshot.SnapshotMatcher;
+import java.time.Instant;
+import java.util.Arrays;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+public class TopicMessageSubmitTransactionTest {
+ private static final PrivateKey unusedPrivateKey = PrivateKey.fromString(
+ "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10");
+ private static final TopicId testTopicId = new TopicId(0, 6, 9);
+ private static final byte[] testMessageBytes = {0x04, 0x05, 0x06};
+ private static final Instant validStart = Instant.ofEpochSecond(1554158542);
+
+ @BeforeAll
+ public static void beforeAll() {
+ SnapshotMatcher.start();
+ }
+
+ @AfterAll
+ public static void afterAll() {
+ SnapshotMatcher.validateSnapshots();
+ }
+
+ private TopicMessageSubmitTransaction spawnTestTransactionString() {
+ return new TopicMessageSubmitTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
+ .setTopicId(testTopicId).setMessage(new String(testMessageBytes)).freeze().sign(unusedPrivateKey);
+ }
+
+ private TopicMessageSubmitTransaction spawnTestTransactionBytes() {
+ return new TopicMessageSubmitTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ .setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
+ .setTopicId(testTopicId).setMessage(testMessageBytes).freeze().sign(unusedPrivateKey);
+ }
+
+ @Test
+ void fromScheduledTransaction() {
+ var transactionBody = SchedulableTransactionBody.newBuilder()
+ .setConsensusSubmitMessage(ConsensusSubmitMessageTransactionBody.newBuilder().build()).build();
+
+ var tx = Transaction.fromScheduledTransaction(transactionBody);
+
+ assertThat(tx).isInstanceOf(TopicMessageSubmitTransaction.class);
+ }
+
+
+ @Test
+ void constructTopicMessageSubmitTransactionFromTransactionBodyProtobuf() {
+ var transactionBody = ConsensusSubmitMessageTransactionBody.newBuilder().setTopicID(testTopicId.toProtobuf())
+ .setMessage(ByteString.copyFrom(testMessageBytes)).build();
+
+ var tx = TransactionBody.newBuilder().setConsensusSubmitMessage(transactionBody).build();
+
+ var topicSubmitMessageTransaction = new TopicMessageSubmitTransaction(tx);
+ assertThat(topicSubmitMessageTransaction.getTopicId()).isEqualTo(testTopicId);
+ }
+
+ @Test
+ void getSetTopicId() {
+ var topicSubmitMessageTransaction = new TopicMessageSubmitTransaction().setTopicId(testTopicId);
+ assertThat(topicSubmitMessageTransaction.getTopicId()).isEqualTo(testTopicId);
+ }
+
+ @Test
+ void getSetTopicIdFrozen() {
+ var tx = spawnTestTransactionString();
+ assertThrows(IllegalStateException.class, () -> tx.setTopicId(testTopicId));
+ }
+
+ @Test
+ void getSetMessage() {
+ var topicSubmitMessageTransactionString = new TopicMessageSubmitTransaction().setMessage(
+ new String(testMessageBytes));
+ var topicSubmitMessageTransactionBytes = new TopicMessageSubmitTransaction().setMessage(testMessageBytes);
+ assertThat(topicSubmitMessageTransactionString.getMessage().toByteArray()).isEqualTo(testMessageBytes);
+ assertThat(topicSubmitMessageTransactionBytes.getMessage().toByteArray()).isEqualTo(testMessageBytes);
+ }
+
+ @Test
+ void getSetMessageFrozen() {
+ var topicSubmitMessageTransactionString = spawnTestTransactionString();
+ var topicSubmitMessageTransactionBytes = spawnTestTransactionBytes();
+ assertThrows(IllegalStateException.class,
+ () -> topicSubmitMessageTransactionString.setMessage(testMessageBytes));
+ assertThrows(IllegalStateException.class,
+ () -> topicSubmitMessageTransactionBytes.setMessage(testMessageBytes));
+ }
+}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageSubmitTransactionTest.snap
new file mode 100644
index 000000000..e69de29bb
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageTest.java
new file mode 100644
index 000000000..28e03da5f
--- /dev/null
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicMessageTest.java
@@ -0,0 +1,86 @@
+package com.hedera.hashgraph.sdk;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import com.google.protobuf.ByteString;
+import com.hedera.hashgraph.sdk.proto.ConsensusMessageChunkInfo;
+import com.hedera.hashgraph.sdk.proto.Timestamp;
+import com.hedera.hashgraph.sdk.proto.mirror.ConsensusTopicResponse;
+import java.time.Instant;
+import java.util.List;
+import org.junit.jupiter.api.Test;
+
+public class TopicMessageTest {
+
+ private static final Instant testTimestamp = Instant.ofEpochSecond(1554158542);
+ private static final byte[] testContents = new byte[]{0x01, 0x02, 0x03};
+ private static final byte[] testRunningHash = new byte[]{0x04, 0x05, 0x06};
+ private static final long testSequenceNumber = 7L;
+ private static final TransactionId testTransactionId = new TransactionId(new AccountId(1), testTimestamp);
+
+ @Test
+ void constructWithArgs() {
+ TopicMessageChunk topicMessageChunk = new TopicMessageChunk(ConsensusTopicResponse.newBuilder()
+ .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond()))
+ .setRunningHash(ByteString.copyFrom(testRunningHash)).setSequenceNumber(testSequenceNumber).build());
+
+ TopicMessageChunk[] topicMessageChunkArr = {topicMessageChunk, topicMessageChunk, topicMessageChunk};
+
+ TopicMessage topicMessage = new TopicMessage(testTimestamp, testContents, testRunningHash, testSequenceNumber,
+ topicMessageChunkArr, testTransactionId);
+
+ assertThat(topicMessage.consensusTimestamp).isEqualTo(testTimestamp);
+ assertThat(topicMessage.contents).isEqualTo(testContents);
+ assertThat(topicMessage.runningHash).isEqualTo(testRunningHash);
+ assertThat(topicMessage.sequenceNumber).isEqualTo(testSequenceNumber);
+ assertThat(topicMessage.chunks).hasSize(3);
+ assertThat(topicMessage.transactionId).isEqualTo(testTransactionId);
+ }
+
+ @Test
+ void ofSingle() {
+ var consensusTopicResponse = ConsensusTopicResponse.newBuilder()
+ .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond()))
+ .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash))
+ .setSequenceNumber(testSequenceNumber).setChunkInfo(
+ ConsensusMessageChunkInfo.newBuilder().setInitialTransactionID(testTransactionId.toProtobuf()).build())
+ .build();
+
+ TopicMessage topicMessage = TopicMessage.ofSingle(consensusTopicResponse);
+
+ assertThat(topicMessage.consensusTimestamp).isEqualTo(testTimestamp);
+ assertThat(topicMessage.contents).isEqualTo(testContents);
+ assertThat(topicMessage.runningHash).isEqualTo(testRunningHash);
+ assertThat(topicMessage.sequenceNumber).isEqualTo(testSequenceNumber);
+ assertThat(topicMessage.chunks).hasSize(1);
+ assertThat(topicMessage.transactionId).isEqualTo(testTransactionId);
+ }
+
+ @Test
+ void ofMany() {
+ var consensusTopicResponse1 = ConsensusTopicResponse.newBuilder()
+ .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond()))
+ .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash))
+ .setSequenceNumber(testSequenceNumber).setChunkInfo(
+ ConsensusMessageChunkInfo.newBuilder().setInitialTransactionID(testTransactionId.toProtobuf())
+ .setNumber(1).setTotal(2).build()).build();
+
+ var consensusTopicResponse2 = ConsensusTopicResponse.newBuilder()
+ .setConsensusTimestamp(Timestamp.newBuilder().setSeconds(testTimestamp.getEpochSecond() + 1))
+ .setMessage(ByteString.copyFrom(testContents)).setRunningHash(ByteString.copyFrom(testRunningHash))
+ .setSequenceNumber(testSequenceNumber + 1L)
+ .setChunkInfo(ConsensusMessageChunkInfo.newBuilder().setNumber(2).setTotal(2).build()).build();
+
+ TopicMessage topicMessage = TopicMessage.ofMany(List.of(consensusTopicResponse1, consensusTopicResponse2));
+
+ byte[] totalContents = new byte[testContents.length * 2];
+ System.arraycopy(testContents, 0, totalContents, 0, testContents.length);
+ System.arraycopy(testContents, 0, totalContents, testContents.length, testContents.length);
+ assertThat(topicMessage.consensusTimestamp).isEqualTo(testTimestamp.plusSeconds(1));
+ assertThat(topicMessage.contents).isEqualTo(totalContents);
+ assertThat(topicMessage.runningHash).isEqualTo(testRunningHash);
+ assertThat(topicMessage.sequenceNumber).isEqualTo(testSequenceNumber + 1L);
+ assertThat(topicMessage.chunks).hasSize(2);
+ assertThat(topicMessage.transactionId).isEqualTo(testTransactionId);
+ }
+}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java
index d33edf00e..81ff5cc1c 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,25 +19,38 @@
*/
package com.hedera.hashgraph.sdk;
-import com.hedera.hashgraph.sdk.proto.ConsensusCreateTopicTransactionBody;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
+import com.google.protobuf.StringValue;
import com.hedera.hashgraph.sdk.proto.ConsensusUpdateTopicTransactionBody;
+import com.hedera.hashgraph.sdk.proto.CryptoDeleteTransactionBody;
import com.hedera.hashgraph.sdk.proto.SchedulableTransactionBody;
+import com.hedera.hashgraph.sdk.proto.Timestamp;
+import com.hedera.hashgraph.sdk.proto.TransactionBody;
import io.github.jsonSnapshot.SnapshotMatcher;
-import org.junit.AfterClass;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
import java.time.Duration;
import java.time.Instant;
-
import java.util.Arrays;
-
-import static org.assertj.core.api.Assertions.assertThat;
+import org.junit.AfterClass;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
public class TopicUpdateTransactionTest {
private static final PrivateKey unusedPrivateKey = PrivateKey.fromString(
"302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e10");
-
- final Instant validStart = Instant.ofEpochSecond(1554158542);
+ private static final PublicKey testAdminKey = PrivateKey.fromString(
+ "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e11")
+ .getPublicKey();
+ private static final PublicKey testSubmitKey = PrivateKey.fromString(
+ "302e020100300506032b657004220420db484b828e64b2d8f12ce3c0a0e93a0b8cce7af1bb8f39c97732394482538e12")
+ .getPublicKey();
+ private static final TopicId testTopicId = TopicId.fromString("0.0.5007");
+ private static final String testTopicMemo = "test memo";
+ private static final Duration testAutoRenewPeriod = Duration.ofHours(10);
+ private static final Instant testExpirationTime = Instant.now();
+ private static final AccountId testAutoRenewAccountId = AccountId.fromString("8.8.8");
+ private static final Instant validStart = Instant.ofEpochSecond(1554158542);
@BeforeAll
public static void beforeAll() {
@@ -51,40 +64,25 @@ public static void afterAll() {
@Test
void clearShouldSerialize() {
- SnapshotMatcher.expect(new TopicUpdateTransaction()
- .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ SnapshotMatcher.expect(new TopicUpdateTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
.setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
- .setTopicId(TopicId.fromString("0.0.5007"))
- .clearAdminKey()
- .clearAutoRenewAccountId()
- .clearSubmitKey()
- .clearTopicMemo()
- .freeze()
- .sign(unusedPrivateKey)
- .toString()
- ).toMatchSnapshot();
+ .setTopicId(testTopicId).clearAdminKey().clearAutoRenewAccountId().clearSubmitKey().clearTopicMemo()
+ .freeze().sign(unusedPrivateKey).toString()).toMatchSnapshot();
}
@Test
void setShouldSerialize() {
- SnapshotMatcher.expect(spawnTestTransaction()
- .toString()
- ).toMatchSnapshot();
+ SnapshotMatcher.expect(spawnTestTransaction().toString()).toMatchSnapshot();
}
private TopicUpdateTransaction spawnTestTransaction() {
- return new TopicUpdateTransaction()
- .setNodeAccountIds(Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
+ return new TopicUpdateTransaction().setNodeAccountIds(
+ Arrays.asList(AccountId.fromString("0.0.5005"), AccountId.fromString("0.0.5006")))
.setTransactionId(TransactionId.withValidStart(AccountId.fromString("0.0.5006"), validStart))
- .setTopicId(TopicId.fromString("0.0.5007"))
- .setAdminKey(unusedPrivateKey)
- .setAutoRenewAccountId(AccountId.fromString("0.0.5009"))
- .setAutoRenewPeriod(Duration.ofHours(24))
- .setSubmitKey(unusedPrivateKey)
- .setTopicMemo("Hello memo")
- .setExpirationTime(validStart)
- .freeze()
- .sign(unusedPrivateKey);
+ .setTopicId(testTopicId).setAdminKey(testAdminKey).setAutoRenewAccountId(testAutoRenewAccountId)
+ .setAutoRenewPeriod(testAutoRenewPeriod).setSubmitKey(testSubmitKey).setTopicMemo(testTopicMemo)
+ .setExpirationTime(validStart).freeze().sign(unusedPrivateKey);
}
@Test
@@ -97,11 +95,177 @@ void shouldBytes() throws Exception {
@Test
void fromScheduledTransaction() {
var transactionBody = SchedulableTransactionBody.newBuilder()
- .setConsensusUpdateTopic(ConsensusUpdateTopicTransactionBody.newBuilder().build())
- .build();
+ .setConsensusUpdateTopic(ConsensusUpdateTopicTransactionBody.newBuilder().build()).build();
var tx = Transaction.fromScheduledTransaction(transactionBody);
assertThat(tx).isInstanceOf(TopicUpdateTransaction.class);
}
+
+ @Test
+ void constructTopicUpdateTransactionFromTransactionBodyProtobuf() {
+ var transactionBody = ConsensusUpdateTopicTransactionBody.newBuilder().setTopicID(testTopicId.toProtobuf())
+ .setMemo(StringValue.newBuilder().setValue(testTopicMemo).build())
+ .setExpirationTime(Timestamp.newBuilder().setSeconds(testExpirationTime.getEpochSecond()).build())
+ .setAdminKey(testAdminKey.toProtobufKey()).setSubmitKey(testSubmitKey.toProtobufKey()).setAutoRenewPeriod(
+ com.hedera.hashgraph.sdk.proto.Duration.newBuilder().setSeconds(testAutoRenewPeriod.toSeconds())
+ .build()).setAutoRenewAccount(testAutoRenewAccountId.toProtobuf()).build();
+
+ var tx = TransactionBody.newBuilder().setConsensusUpdateTopic(transactionBody).build();
+ var topicUpdateTransaction = new TopicUpdateTransaction(tx);
+
+ assertThat(topicUpdateTransaction.getTopicId()).isEqualTo(testTopicId);
+ assertThat(topicUpdateTransaction.getTopicMemo()).isEqualTo(testTopicMemo);
+ assertThat(topicUpdateTransaction.getExpirationTime().getEpochSecond()).isEqualTo(
+ testExpirationTime.getEpochSecond());
+ assertThat(topicUpdateTransaction.getAdminKey()).isEqualTo(testAdminKey);
+ assertThat(topicUpdateTransaction.getSubmitKey()).isEqualTo(testSubmitKey);
+ assertThat(topicUpdateTransaction.getAutoRenewPeriod().toSeconds()).isEqualTo(testAutoRenewPeriod.toSeconds());
+ assertThat(topicUpdateTransaction.getAutoRenewAccountId()).isEqualTo(testAutoRenewAccountId);
+ }
+
+ // doesn't throw an exception as opposed to C++ sdk
+ @Test
+ void constructTopicUpdateTransactionFromWrongTransactionBodyProtobuf() {
+ var transactionBody = CryptoDeleteTransactionBody.newBuilder().build();
+ var tx = TransactionBody.newBuilder().setCryptoDelete(transactionBody).build();
+
+ new TopicUpdateTransaction(tx);
+ }
+
+ @Test
+ void getSetTopicId() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setTopicId(testTopicId);
+ assertThat(topicUpdateTransaction.getTopicId()).isEqualTo(testTopicId);
+ }
+
+ @Test
+ void getSetTopicIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setTopicId(testTopicId));
+ }
+
+ @Test
+ void getSetTopicMemo() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setTopicMemo(testTopicMemo);
+ assertThat(topicUpdateTransaction.getTopicMemo()).isEqualTo(testTopicMemo);
+ }
+
+ @Test
+ void getSetTopicMemoFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setTopicMemo(testTopicMemo));
+ }
+
+ @Test
+ void clearTopicMemo() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setTopicMemo(testTopicMemo);
+ topicUpdateTransaction.clearTopicMemo();
+ assertThat(topicUpdateTransaction.getTopicMemo()).isEmpty();
+ }
+
+ @Test
+ void clearTopicMemoFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.clearTopicMemo());
+ }
+
+ @Test
+ void getSetExpirationTime() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setExpirationTime(testExpirationTime);
+ assertThat(topicUpdateTransaction.getExpirationTime()).isEqualTo(testExpirationTime);
+ }
+
+ @Test
+ void getSetExpirationTimeFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setExpirationTime(testExpirationTime));
+ }
+
+ @Test
+ void getSetAdminKey() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setAdminKey(testAdminKey);
+ assertThat(topicUpdateTransaction.getAdminKey()).isEqualTo(testAdminKey);
+ }
+
+ @Test
+ void getSetAdminKeyFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setAdminKey(testAdminKey));
+ }
+
+ @Test
+ void clearAdminKey() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setAdminKey(testAdminKey);
+ topicUpdateTransaction.clearAdminKey();
+ assertThat(topicUpdateTransaction.getAdminKey()).isEqualTo(new KeyList());
+ }
+
+ @Test
+ void clearAdminKeyFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.clearAdminKey());
+ }
+
+ @Test
+ void getSetSubmitKey() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setSubmitKey(testSubmitKey);
+ assertThat(topicUpdateTransaction.getSubmitKey()).isEqualTo(testSubmitKey);
+ }
+
+ @Test
+ void getSetSubmitKeyFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setSubmitKey(testSubmitKey));
+ }
+
+ @Test
+ void clearSubmitKey() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setSubmitKey(testSubmitKey);
+ topicUpdateTransaction.clearSubmitKey();
+ assertThat(topicUpdateTransaction.getSubmitKey()).isEqualTo(new KeyList());
+ }
+
+ @Test
+ void clearSubmitKeyFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.clearSubmitKey());
+ }
+
+ @Test
+ void getSetAutoRenewPeriod() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setAutoRenewPeriod(testAutoRenewPeriod);
+ assertThat(topicUpdateTransaction.getAutoRenewPeriod()).isEqualTo(testAutoRenewPeriod);
+ }
+
+ @Test
+ void getSetAutoRenewPeriodFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setAutoRenewPeriod(testAutoRenewPeriod));
+ }
+
+ @Test
+ void getSetAutoRenewAccountId() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setAutoRenewAccountId(testAutoRenewAccountId);
+ assertThat(topicUpdateTransaction.getAutoRenewAccountId()).isEqualTo(testAutoRenewAccountId);
+ }
+
+ @Test
+ void getSetAutoRenewAccountIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.setAutoRenewAccountId(testAutoRenewAccountId));
+ }
+
+ @Test
+ void clearAutoRenewAccountId() {
+ var topicUpdateTransaction = new TopicUpdateTransaction().setAutoRenewAccountId(testAutoRenewAccountId);
+ topicUpdateTransaction.clearAutoRenewAccountId();
+ assertThat(topicUpdateTransaction.getAutoRenewAccountId()).isEqualTo(new AccountId(0));
+ }
+
+ @Test
+ void clearAutoRenewAccountIdFrozen() {
+ var tx = spawnTestTransaction();
+ assertThrows(IllegalStateException.class, () -> tx.clearAutoRenewAccountId());
+ }
}
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap
index c22790fbc..bc899ce78 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TopicUpdateTransactionTest.snap
@@ -4,5 +4,5 @@ com.hedera.hashgraph.sdk.TopicUpdateTransactionTest.clearShouldSerialize=[
com.hedera.hashgraph.sdk.TopicUpdateTransactionTest.setShouldSerialize=[
- "# com.hedera.hashgraph.sdk.proto.TransactionBody\nconsensus_update_topic {\n admin_key {\n ed25519: \"\\340\\310\\354\\'X\\245\\207\\237\\372\\302&\\241<\\fQky\\236r\\343QA\\240\\335\\202\\217\\224\\323y\\210\\244\\267\"\n }\n auto_renew_account {\n account_num: 5009\n realm_num: 0\n shard_num: 0\n }\n auto_renew_period {\n seconds: 86400\n }\n expiration_time {\n seconds: 1554158542\n }\n memo {\n value: \"Hello memo\"\n }\n submit_key {\n ed25519: \"\\340\\310\\354\\'X\\245\\207\\237\\372\\302&\\241<\\fQky\\236r\\343QA\\240\\335\\202\\217\\224\\323y\\210\\244\\267\"\n }\n topic_i_d {\n realm_num: 0\n shard_num: 0\n topic_num: 5007\n }\n}\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntransaction_fee: 200000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
+ "# com.hedera.hashgraph.sdk.proto.TransactionBody\nconsensus_update_topic {\n admin_key {\n ed25519: \"\\332\\207p\\020\\227\\206ns\\360\\335\\224,\\273>\\227\\0063)\\371\\005X\\206!\\261x\\322\\027Yh\\215G\\374\"\n }\n auto_renew_account {\n account_num: 8\n realm_num: 8\n shard_num: 8\n }\n auto_renew_period {\n seconds: 36000\n }\n expiration_time {\n seconds: 1554158542\n }\n memo {\n value: \"test memo\"\n }\n submit_key {\n ed25519: \"\\373\\210\\2637\\337\\327ea{\\3442*\\347\\357\\2053\\326\\036d\\203\\005\\016 \\354HE\\2453\\275\\334\\244\\261\"\n }\n topic_i_d {\n realm_num: 0\n shard_num: 0\n topic_num: 5007\n }\n}\nnode_account_i_d {\n account_num: 5005\n realm_num: 0\n shard_num: 0\n}\ntransaction_fee: 200000000\ntransaction_i_d {\n account_i_d {\n account_num: 5006\n realm_num: 0\n shard_num: 0\n }\n transaction_valid_start {\n seconds: 1554158542\n }\n}\ntransaction_valid_duration {\n seconds: 120\n}"
]
\ No newline at end of file
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java
index 615368a69..7342666b7 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionIdTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java
index f449fa399..bee07c33e 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionReceiptQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java
index 97c2e8362..b55c2e734 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordQueryTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java
index 0707ec5e9..20ab3b7e4 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionRecordTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java
index efef40ab3..1fc72603a 100644
--- a/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java
+++ b/sdk/src/test/java/com/hedera/hashgraph/sdk/TransactionTest.java
@@ -2,7 +2,7 @@
*
* Hedera Java SDK
*
- * Copyright (C) 2020 - 2022 Hedera Hashgraph, LLC
+ * Copyright (C) 2020 - 2023 Hedera Hashgraph, LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/version.gradle b/version.gradle
index d0b19af45..3da30a4d7 100644
--- a/version.gradle
+++ b/version.gradle
@@ -2,4 +2,4 @@
// and `sdk/build.gradle` so I extracted them into another file and made both aforementioned
// files import this one.
group = "com.hedera.hashgraph"
-version = "2.26.0"
+version = "2.28.0"