diff --git a/.config/dictionaries/project.dic b/.config/dictionaries/project.dic index 6f4be29fa9f9..aa6690cb4619 100644 --- a/.config/dictionaries/project.dic +++ b/.config/dictionaries/project.dic @@ -99,12 +99,12 @@ dockerenv dockerhub domcontentloaded Dominik -downloadsfolder donts dorny dotenv dotenvy dotglob +downloadsfolder drep dreps dt-iohk @@ -271,8 +271,8 @@ postcss Pozhylenkov Precache Precertificate -proguard preprod +proguard projectcatalyst Prokhorenko proptest @@ -339,9 +339,9 @@ stevenj stringzilla subchain Subkey -subprojects submiting subosito +subprojects svgs syncable SYSROOT diff --git a/Earthfile b/Earthfile index 0aa5d963e3bc..bef7c8b00e21 100644 --- a/Earthfile +++ b/Earthfile @@ -1,8 +1,8 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/mdlint:v3.5.15 AS mdlint-ci -IMPORT github.com/input-output-hk/catalyst-ci/earthly/cspell:v3.5.15 AS cspell-ci -IMPORT github.com/input-output-hk/catalyst-ci/earthly/postgresql:v3.5.15 AS postgresql-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/mdlint:feat/catalyst-compression-setup AS mdlint-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/cspell:feat/catalyst-compression-setup AS cspell-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/postgresql:feat/catalyst-compression-setup AS postgresql-ci ARG --global REGISTRY="harbor.shared-services.projectcatalyst.io/dockerhub/library" FROM ${REGISTRY}/debian:stable-slim diff --git a/catalyst-gateway/.config/nextest.toml b/catalyst-gateway/.config/nextest.toml index be3673830bb0..c8cccf508139 100644 --- a/catalyst-gateway/.config/nextest.toml +++ b/catalyst-gateway/.config/nextest.toml @@ -47,3 +47,14 @@ store-success-output = true # Note that if a description can be extracted from the output, it is always stored in the # element. store-failure-output = true + +[test-groups] +serial-integration = { max-threads = 1 } + +[[profile.default.overrides]] +filter = 'test(/^serial::/)' +test-group = 'serial-integration' + +[[profile.ci.overrides]] +filter = 'test(/^serial::/)' +test-group = "serial-integration" diff --git a/catalyst-gateway/Earthfile b/catalyst-gateway/Earthfile index 2f2168ff1156..2f1f9975ee49 100644 --- a/catalyst-gateway/Earthfile +++ b/catalyst-gateway/Earthfile @@ -1,6 +1,6 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:v3.5.13 AS rust-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:feat/catalyst-compression-setup AS rust-ci IMPORT ../ AS repo-ci IMPORT github.com/input-output-hk/catalyst-voices/catalyst-gateway:main AS cat-gateway-main diff --git a/catalyst-gateway/deny.toml b/catalyst-gateway/deny.toml index e6e3ed2ecee0..0976bbb2a00a 100644 --- a/catalyst-gateway/deny.toml +++ b/catalyst-gateway/deny.toml @@ -60,6 +60,8 @@ allow-git = [ "https://github.com/input-output-hk/mithril", # Maintained fork of an archived crates-io version. "https://github.com/dariusc93/rust-ipfs", + # TODO(dt-iohk): remove this when forked flutter_rust_bridge is no longer needed + "https://github.com/dt-iohk/flutter_rust_bridge", ] [licenses] diff --git a/catalyst-gateway/event-db/Earthfile b/catalyst-gateway/event-db/Earthfile index bfe503f33165..982ab9aa33a6 100644 --- a/catalyst-gateway/event-db/Earthfile +++ b/catalyst-gateway/event-db/Earthfile @@ -3,7 +3,7 @@ # the database and its associated software. VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/postgresql:v3.5.15 AS postgresql-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/postgresql:feat/catalyst-compression-setup AS postgresql-ci # cspell: words diff --git a/catalyst-gateway/tests/Earthfile b/catalyst-gateway/tests/Earthfile index 3fc4509b4e19..d33131d9379e 100644 --- a/catalyst-gateway/tests/Earthfile +++ b/catalyst-gateway/tests/Earthfile @@ -1,7 +1,7 @@ # cspell: words unittests socat VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/spectral:v3.5.15 AS spectral-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/spectral:feat/catalyst-compression-setup AS spectral-ci IMPORT .. AS gateway # build all necessary docker images required to run `docker-compose.yml` services diff --git a/catalyst-gateway/tests/api_tests/Earthfile b/catalyst-gateway/tests/api_tests/Earthfile index 02708f7c4686..1ec497d173a0 100644 --- a/catalyst-gateway/tests/api_tests/Earthfile +++ b/catalyst-gateway/tests/api_tests/Earthfile @@ -1,6 +1,6 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/python:v3.5.12 AS python-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/python:feat/catalyst-compression-setup AS python-ci IMPORT github.com/input-output-hk/catalyst-libs/rust:catalyst-signed-doc/v.0.0.6-refinery-fix AS cat-libs-rust IMPORT github.com/input-output-hk/catalyst-libs/rust:catalyst-signed-doc/v.0.0.4-refinery-fix AS dep-cat-libs-rust IMPORT github.com/input-output-hk/catalyst-storage AS cat-storage diff --git a/catalyst_voices/Earthfile b/catalyst_voices/Earthfile index bfac91246076..7eef2f16e53a 100644 --- a/catalyst_voices/Earthfile +++ b/catalyst_voices/Earthfile @@ -2,7 +2,7 @@ VERSION 0.8 IMPORT ../ AS repo-ci IMPORT ../catalyst-gateway AS catalyst-gateway -IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:v3.5.15 AS flutter-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:feat/catalyst-compression-setup AS flutter-ci # repo-catalyst-voices - Creates artifacts of all configuration files, # packages and folders related to catalyst_voices frontend. diff --git a/catalyst_voices/README.md b/catalyst_voices/README.md index 2034f8bc9f9a..12b02e694282 100644 --- a/catalyst_voices/README.md +++ b/catalyst_voices/README.md @@ -38,6 +38,7 @@ This repository contains the Catalyst Voices app and packages. * [Visual Studio Code](https://flutter.dev/docs/get-started/editor?tab=vscode) * [Android Studio / IntelliJ](https://flutter.dev/docs/get-started/editor?tab=androidstudio) * [Emacs](https://docs.flutter.dev/get-started/editor?tab=emacs) +* [Rust](https://rustup.rs/): 1.80.0+ ❗️We recommend using **Visual Studio Code** as the **default editor** for this project. diff --git a/catalyst_voices/apps/voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/catalyst_voices/apps/voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index cadd84e15318..611bb94eef93 100644 --- a/catalyst_voices/apps/voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/catalyst_voices/apps/voices/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -26,6 +26,7 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" + customLLDBInitFile = "$(SRCROOT)/Flutter/ephemeral/flutter_lldbinit" shouldUseLaunchSchemeArgsEnv = "YES"> ()); }) ..registerLazySingleton(() { - return const SignedDocumentManager(); + return const SignedDocumentManager( + brotli: CatalystBrotliCompressor(), + zstd: CatalystZstdCompressor(), + ); }) ..registerLazySingleton(() { return DatabaseDraftsDataSource( diff --git a/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj b/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj index 683361529e26..30a4f33f2ec8 100644 --- a/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj +++ b/catalyst_voices/apps/voices/macos/Runner.xcodeproj/project.pbxproj @@ -560,7 +560,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; @@ -647,7 +647,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = macosx; @@ -698,7 +698,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.14; + MACOSX_DEPLOYMENT_TARGET = 10.15; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = macosx; SWIFT_COMPILATION_MODE = wholemodule; diff --git a/catalyst_voices/apps/voices/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/catalyst_voices/apps/voices/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index 25a1dcde5851..f8fea40dcc8a 100644 --- a/catalyst_voices/apps/voices/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/catalyst_voices/apps/voices/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -59,6 +59,7 @@ ignoresPersistentStateOnLaunch = "NO" debugDocumentVersioning = "YES" debugServiceExtension = "internal" + enableGPUValidationMode = "1" allowLocationSimulation = "YES"> diff --git a/catalyst_voices/apps/voices/pubspec.yaml b/catalyst_voices/apps/voices/pubspec.yaml index 2cd14d89a002..8f4cf3919b0f 100644 --- a/catalyst_voices/apps/voices/pubspec.yaml +++ b/catalyst_voices/apps/voices/pubspec.yaml @@ -12,6 +12,7 @@ dependencies: catalyst_cardano: ^1.0.0 catalyst_cardano_serialization: ^1.0.0 catalyst_cardano_web: ^1.0.0 + catalyst_compression: ^1.0.0 catalyst_key_derivation: ^1.0.0 catalyst_voices_assets: path: ../../packages/internal/catalyst_voices_assets diff --git a/catalyst_voices/apps/voices/web/index.html b/catalyst_voices/apps/voices/web/index.html index ac4fd22fa59c..dbf007e3dc9a 100644 --- a/catalyst_voices/apps/voices/web/index.html +++ b/catalyst_voices/apps/voices/web/index.html @@ -36,7 +36,6 @@ Catalyst - diff --git a/catalyst_voices/justfile b/catalyst_voices/justfile index 94ca1ca2ee73..631271816916 100755 --- a/catalyst_voices/justfile +++ b/catalyst_voices/justfile @@ -9,24 +9,28 @@ setup-code: melos bs # Builds generated code -generate-code: setup-code +generate-code: cd .. && earthly ./catalyst_voices+code-generator --platform=linux/amd64 --save_locally=true # Syntax sugar for linking packages and building generated code -bootstrap: generate-code +bootstrap: setup-code generate-code # Runs all static code checks check-code: - earthly +build-static-analysis earthly +check-code-formatting + earthly +check-package-publishing earthly +check-license + earthly +build-static-analysis # Runs unit tests test-code: + # TODO(dt-iohk): enable running unit tests in earthly, remove melos tests, + # currently it fails because of `libsqlite3.so.3.49.1` unable to load on arm64 linux. earthly +test-unit-native + # melos test-native # Pre Push Checks -pre-push: check-code +pre-push: generate-code check-code test-code license-list: setup-code melos license-list diff --git a/catalyst_voices/melos.yaml b/catalyst_voices/melos.yaml index 5e258833a0b4..3d6eb1e07ed5 100644 --- a/catalyst_voices/melos.yaml +++ b/catalyst_voices/melos.yaml @@ -9,9 +9,9 @@ packages: ignore: # ignore flutter_rust_bridge packages that are non-conformant with melos - - packages/libs/catalyst_key_derivation/example/** + - /**/cargokit/** # ignore temporary packages that are non-conformant with melos - - apps/voices/build/** + - /**/build/** permittedLicenses: - MIT @@ -41,16 +41,12 @@ packageLicenseOverride: catalyst_cardano_serialization: Apache-2.0 catalyst_cardano_platform_interface: Apache-2.0 catalyst_compression: Apache-2.0 - catalyst_compression_web: Apache-2.0 - catalyst_cardano_web: Apache-2.0 - catalyst_compression_platform_interface: Apache-2.0 catalyst_key_derivation: Apache-2.0 - catalyst_key_derivation_web: Apache-2.0 - catalyst_key_derivation_platform_interface: Apache-2.0 catalyst_voices_assets: Apache-2.0 catalyst_voices_assets_example: Apache-2.0 catalyst_cardano: Apache-2.0 catalyst_cardano_example: Apache-2.0 + catalyst_cardano_web: Apache-2.0 catalyst_voices_localization: Apache-2.0 catalyst_voices_models: Apache-2.0 example: Apache-2.0 @@ -125,7 +121,11 @@ command: url: https://github.com/input-output-hk/flutter-quill path: flutter_quill_extensions ref: 10be2c8d1fb0d7728183fc883e133b5b48251d62 - flutter_rust_bridge: 2.11.1 + flutter_rust_bridge: + git: + url: https://github.com/dt-iohk/flutter_rust_bridge + ref: 64678315e8f5a877fc7b78524d9441cd05f42d65 + path: frb_dart/ flutter_secure_storage: ^9.2.4 formz: ^0.8.0 google_fonts: ^6.3.0 diff --git a/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb b/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb index 093ade5eefe6..2e42f86d6f1a 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb +++ b/catalyst_voices/packages/internal/catalyst_voices_localization/lib/l10n/intl_en.arb @@ -841,6 +841,10 @@ "@defaultPermissionRationale": { "description": "Default rationale for permission" }, + "defaultProposalsOrder": "Default", + "@defaultProposalsOrder": { + "description": "Ordering options for proposals" + }, "defaultRole": "Default", "@defaultRole": { "description": "Related to account role" @@ -2073,10 +2077,6 @@ "@orderProposalsUpdateDateDesc": { "description": "Order proposals by update date option" }, - "defaultProposalsOrder": "Default", - "@defaultProposalsOrder": { - "description": "Ordering options for proposals" - }, "paginationProposalsCounter": "{from}-{to} of {max} {max, plural, =0{proposals} =1{proposal} other{proposals}}", "@paginationProposalsCounter": { "description": "Below pagination list, next to page switch controls", @@ -2585,10 +2585,6 @@ "@recoverKeychainMethodsListTitle": { "description": "Header for recovery methods selection list" }, - "recoverKeychainMethodsNoKeychainFound": "No Catalyst Keychain found on this device.", - "@recoverKeychainMethodsNoKeychainFound": { - "description": "Message shown when no keychain is found on device" - }, "recoverKeychainMethodsSubtitle": "Not to worry, in the next step you can choose the recovery option that applies to you for this device!", "@recoverKeychainMethodsSubtitle": { "description": "Subtitle explaining recovery options availability" diff --git a/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/errors/sync_exception.dart b/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/errors/sync_exception.dart index 2e27e2c4ec05..8a8ab11cc5b8 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/errors/sync_exception.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_models/lib/src/errors/sync_exception.dart @@ -3,7 +3,7 @@ import 'package:catalyst_voices_models/catalyst_voices_models.dart'; final class RefsSyncException extends SyncException { final List errors; - RefsSyncException(this.errors); + const RefsSyncException(this.errors); @override String toString() => 'RefsSyncException errors[${errors.length}]'; diff --git a/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager.dart b/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager.dart index 0d474eb34e72..dfd7e5b22d11 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager.dart @@ -1,3 +1,4 @@ +import 'package:catalyst_compression/catalyst_compression.dart'; import 'package:catalyst_voices_models/catalyst_voices_models.dart'; import 'package:catalyst_voices_repositories/src/signed_document/signed_document_manager_impl.dart'; import 'package:flutter/foundation.dart'; @@ -6,7 +7,10 @@ import 'package:flutter/foundation.dart'; abstract interface class SignedDocumentManager { /// The default constructor for the [SignedDocumentManager], /// provides the default implementation of the interface. - const factory SignedDocumentManager() = SignedDocumentManagerImpl; + const factory SignedDocumentManager({ + required CatalystCompressor brotli, + required CatalystCompressor zstd, + }) = SignedDocumentManagerImpl; /// Parses the document from the [bytes] representation. /// diff --git a/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager_impl.dart b/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager_impl.dart index ee9764c6048a..36c0b0ca2af0 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager_impl.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_repositories/lib/src/signed_document/signed_document_manager_impl.dart @@ -11,7 +11,13 @@ import 'package:equatable/equatable.dart'; const _brotliEncoding = StringValue(CoseValues.brotliContentEncoding); final class SignedDocumentManagerImpl implements SignedDocumentManager { - const SignedDocumentManagerImpl(); + final CatalystCompressor brotli; + final CatalystCompressor zstd; + + const SignedDocumentManagerImpl({ + required this.brotli, + required this.zstd, + }); @override Future parseDocument(Uint8List bytes) async { @@ -60,15 +66,13 @@ final class SignedDocumentManagerImpl implements SignedDocumentManager { } Future _brotliCompressPayload(Uint8List payload) async { - final compressor = CatalystCompression.instance.brotli; - final compressed = await compressor.compress(payload); + final compressed = await brotli.compress(payload); return Uint8List.fromList(compressed); } Future _brotliDecompressPayload(CoseSign coseSign) async { if (coseSign.protectedHeaders.contentEncoding == _brotliEncoding) { - final compressor = CatalystCompression.instance.brotli; - final decompressed = await compressor.decompress(coseSign.payload); + final decompressed = await brotli.decompress(coseSign.payload); return Uint8List.fromList(decompressed); } else { return coseSign.payload; diff --git a/catalyst_voices/packages/internal/catalyst_voices_repositories/test/src/signed_document/signed_document_manager_test.dart b/catalyst_voices/packages/internal/catalyst_voices_repositories/test/src/signed_document/signed_document_manager_test.dart index 778ce3403315..2e91d2ec0ea2 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_repositories/test/src/signed_document/signed_document_manager_test.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_repositories/test/src/signed_document/signed_document_manager_test.dart @@ -6,12 +6,14 @@ import 'package:flutter_test/flutter_test.dart'; void main() { group(SignedDocumentManager, () { - const documentManager = SignedDocumentManager(); + const documentManager = SignedDocumentManager( + brotli: _FakeCompressor(), + zstd: _FakeCompressor(), + ); setUpAll(() { CatalystPublicKey.factory = _FakeCatalystPublicKeyFactory(); CatalystSignature.factory = _FakeCatalystSignatureFactory(); - CatalystCompressionPlatform.instance = _FakeCatalystCompressionPlatform(); }); test('signDocument creates a signed document ' @@ -58,11 +60,6 @@ final _publicKeyBytes = Uint8List.fromList(List.filled(32, 1)); final _signature = _FakeCatalystSignature(bytes: _signatureBytes); final _signatureBytes = Uint8List.fromList(List.filled(32, 2)); -class _FakeCatalystCompressionPlatform extends CatalystCompressionPlatform { - @override - CatalystCompressor get brotli => const _FakeCompressor(); -} - class _FakeCatalystPrivateKey extends Fake implements CatalystPrivateKey { @override final Uint8List bytes; diff --git a/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/registration_transaction_builder_test.dart b/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/registration_transaction_builder_test.dart index d75e14a31b00..4e74491d2b88 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/registration_transaction_builder_test.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/registration_transaction_builder_test.dart @@ -16,7 +16,8 @@ void main() { kd.Bip32Ed25519XPublicKeyFactory.instance = _FakeBip32Ed25519XPublicKeyFactory(); kd.Bip32Ed25519XPrivateKeyFactory.instance = _FakeBip32Ed25519XPrivateKeyFactory(); kd.Bip32Ed25519XSignatureFactory.instance = _FakeBip32Ed25519XSignatureFactory(); - CatalystCompressionPlatform.instance = _FakeCatalystCompressionPlatform(); + CatalystCompression.overrideBrotli(const _FakeCompressor()); + CatalystCompression.overrideZstd(const _FakeCompressor()); }); setUp(() async { @@ -328,14 +329,6 @@ class _FakeBip32Ed25519XSignatureFactory extends kd.Bip32Ed25519XSignatureFactor } } -class _FakeCatalystCompressionPlatform extends CatalystCompressionPlatform { - @override - CatalystCompressor get brotli => const _FakeCompressor(); - - @override - CatalystCompressor get zstd => const _FakeCompressor(); -} - class _FakeCatalystPrivateKey extends Fake implements CatalystPrivateKey { @override final Uint8List bytes; diff --git a/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_bytes_test.dart b/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_bytes_test.dart index 2949a1d9028e..1a3bfdc7d2e6 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_bytes_test.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_bytes_test.dart @@ -18,7 +18,8 @@ void main() { kd.Bip32Ed25519XPublicKeyFactory.instance = _FakeBip32Ed25519XPublicKeyFactory(); kd.Bip32Ed25519XPrivateKeyFactory.instance = _FakeBip32Ed25519XPrivateKeyFactory(); kd.Bip32Ed25519XSignatureFactory.instance = _FakeBip32Ed25519XSignatureFactory(); - CatalystCompressionPlatform.instance = _FakeCatalystCompressionPlatform(); + CatalystCompression.overrideBrotli(const _FakeCompressor()); + CatalystCompression.overrideZstd(const _FakeCompressor()); }); setUp(() async { @@ -917,14 +918,6 @@ class _FakeBip32Ed25519XSignatureFactory extends kd.Bip32Ed25519XSignatureFactor } } -class _FakeCatalystCompressionPlatform extends CatalystCompressionPlatform { - @override - CatalystCompressor get brotli => const _FakeCompressor(); - - @override - CatalystCompressor get zstd => const _FakeCompressor(); -} - class _FakeCatalystPrivateKey extends Fake implements CatalystPrivateKey { @override final Uint8List bytes; diff --git a/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_test.dart b/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_test.dart index 6ada91b377cf..677f186572c4 100644 --- a/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_test.dart +++ b/catalyst_voices/packages/internal/catalyst_voices_services/test/src/registration/strategy/registration_transaction_strategy_test.dart @@ -20,7 +20,8 @@ void main() { kd.Bip32Ed25519XPublicKeyFactory.instance = _FakeBip32Ed25519XPublicKeyFactory(); kd.Bip32Ed25519XPrivateKeyFactory.instance = _FakeBip32Ed25519XPrivateKeyFactory(); kd.Bip32Ed25519XSignatureFactory.instance = _FakeBip32Ed25519XSignatureFactory(); - CatalystCompressionPlatform.instance = _FakeCatalystCompressionPlatform(); + CatalystCompression.overrideBrotli(const _FakeCompressor()); + CatalystCompression.overrideZstd(const _FakeCompressor()); }); setUp(() async { @@ -247,14 +248,6 @@ class _FakeBip32Ed25519XSignatureFactory extends kd.Bip32Ed25519XSignatureFactor } } -class _FakeCatalystCompressionPlatform extends CatalystCompressionPlatform { - @override - CatalystCompressor get brotli => const _FakeCompressor(); - - @override - CatalystCompressor get zstd => const _FakeCompressor(); -} - class _FakeCatalystPrivateKey extends Fake implements CatalystPrivateKey { @override final Uint8List bytes; diff --git a/catalyst_voices/packages/libs/README.md b/catalyst_voices/packages/libs/README.md index c371bd8ac4bb..bb155df58732 100644 --- a/catalyst_voices/packages/libs/README.md +++ b/catalyst_voices/packages/libs/README.md @@ -19,10 +19,9 @@ A collection of Catalyst packages and plugins for Flutter and Dart. | [`catalyst_cardano`](catalyst_cardano/catalyst_cardano) | ![pub package](https://img.shields.io/pub/v/catalyst_cardano.svg) | [📖](https://pub.dev/documentation/catalyst_cardano/latest/catalyst_cardano/catalyst_cardano-library.html) | N/A | N/A | ✔️ | N/A | N/A | N/A | | [`catalyst_cardano_platform_interface`](catalyst_cardano/catalyst_cardano_platform_interface) | ![pub package](https://img.shields.io/pub/v/catalyst_cardano_platform_interface.svg) | [📖](https://pub.dev/documentation/catalyst_cardano_platform_interface/latest/catalyst_cardano_platform_interface/catalyst_cardano_platform_interface-library.html) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | [`catalyst_cardano_web`](catalyst_cardano/catalyst_cardano_web) | ![pub package](https://img.shields.io/pub/v/catalyst_cardano_web.svg) | [📖](https://pub.dev/documentation/catalyst_cardano_web/latest/catalyst_cardano_web/catalyst_cardano_web-library.html) | N/A | N/A | ✔️ | N/A | N/A | N/A | -| [`catalyst_compression`](catalyst_compression/catalyst_compression) | ![pub package](https://img.shields.io/pub/v/catalyst_compression.svg) | [📖](https://pub.dev/documentation/catalyst_compression/latest/catalyst_compression/catalyst_compression-library.html) | N/A | N/A | ✔️ | N/A | N/A | N/A | -| [`catalyst_compression_platform_interface`](catalyst_compression/catalyst_compression_platform_interface) | ![pub package](https://img.shields.io/pub/v/catalyst_compression_platform_interface.svg) | [📖](https://pub.dev/documentation/catalyst_compression_platform_interface/latest/catalyst_compression_platform_interface/catalyst_compression_platform_interface-library.html) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | -| [`catalyst_compression_web`](catalyst_compression/catalyst_compression_web) | ![pub package](https://img.shields.io/pub/v/catalyst_compression_web.svg) | [📖](https://pub.dev/documentation/catalyst_compression_web/latest/catalyst_compression_web/catalyst_compression_web-library.html) | N/A | N/A | ✔️ | N/A | N/A | N/A | +| [`catalyst_compression`](catalyst_compression/catalyst_compression) | ![pub package](https://img.shields.io/pub/v/catalyst_compression.svg) | [📖](https://pub.dev/documentation/catalyst_compression/latest/catalyst_compression/catalyst_compression-library.html) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | [`catalyst_cose`](catalyst_cose) | ![pub package](https://img.shields.io/pub/v/catalyst_cose.svg) | [📖](https://pub.dev/documentation/catalyst_cose/latest/catalyst_cose/catalyst_cose-library.html) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | +| [`catalyst_key_derivation`](catalyst_key_derivation) | ![pub package](https://img.shields.io/pub/v/catalyst_key_derivation.svg) | [📖](https://pub.dev/documentation/catalyst_key_derivation/latest/catalyst_key_derivation/catalyst_key_derivation-library.html) | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ## Requirements @@ -35,6 +34,7 @@ A collection of Catalyst packages and plugins for Flutter and Dart. * [Visual Studio Code](https://flutter.dev/docs/get-started/editor?tab=vscode) * [Android Studio / IntelliJ](https://flutter.dev/docs/get-started/editor?tab=androidstudio) * [Emacs](https://docs.flutter.dev/get-started/editor?tab=emacs) +* [Rust](https://rustup.rs/): 1.80.0+ ## Bootstrapping diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml index 765d4cddaab4..295084f9ac83 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/pubspec.yaml @@ -13,7 +13,6 @@ dependencies: catalyst_cardano_serialization: ^1.0.0 catalyst_cardano_web: ^1.0.0 catalyst_compression: ^1.0.0 - catalyst_compression_web: ^1.0.0 catalyst_key_derivation: ^1.0.0 catalyst_voices_driver: path: ../../../../internal/catalyst_voices_driver diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/web/index.html b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/web/index.html index 62e096fcfecf..37f8cd13b92e 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/web/index.html +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/example/web/index.html @@ -33,7 +33,6 @@ example - diff --git a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/wallet-automation/Earthfile b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/wallet-automation/Earthfile index 61a267e684fb..37678597054b 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/wallet-automation/Earthfile +++ b/catalyst_voices/packages/libs/catalyst_cardano/catalyst_cardano/wallet-automation/Earthfile @@ -1,6 +1,6 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:v3.5.15 AS flutter-ci -IMPORT github.com/input-output-hk/catalyst-ci/earthly/playwright:v3.5.15 AS playwright-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:feat/catalyst-compression-setup AS flutter-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/playwright:feat/catalyst-compression-setup AS playwright-ci ARG --global REGISTRY="harbor.shared-services.projectcatalyst.io/dockerhub/" diff --git a/catalyst_voices/packages/libs/catalyst_cardano_serialization/lib/src/rbac/x509_metadata_envelope.dart b/catalyst_voices/packages/libs/catalyst_cardano_serialization/lib/src/rbac/x509_metadata_envelope.dart index 66d88001e67f..a030f70f3c31 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano_serialization/lib/src/rbac/x509_metadata_envelope.dart +++ b/catalyst_voices/packages/libs/catalyst_cardano_serialization/lib/src/rbac/x509_metadata_envelope.dart @@ -3,6 +3,9 @@ import 'package:catalyst_compression/catalyst_compression.dart'; import 'package:catalyst_key_derivation/catalyst_key_derivation.dart'; import 'package:cbor/cbor.dart'; import 'package:equatable/equatable.dart'; +import 'package:logging/logging.dart'; + +final _logger = Logger('X509MetadataEnvelope'); /// Deserializes the type [T] from cbor. /// @@ -260,16 +263,18 @@ final class X509MetadataEnvelope extends Equatable { static Future?> _compressBrotli(List bytes) async { try { - return await CatalystCompression.instance.brotli.compress(bytes); - } on CompressionNotSupportedException { + return await CatalystCompression.brotli.compress(bytes); + } catch (error, stackTrace) { + _logger.severe('compressBrotli', error, stackTrace); return null; } } static Future?> _compressZstd(List bytes) async { try { - return await CatalystCompression.instance.zstd.compress(bytes); - } on CompressionNotSupportedException { + return await CatalystCompression.zstd.compress(bytes); + } catch (error, stackTrace) { + _logger.severe('compressZstd', error, stackTrace); return null; } } @@ -284,14 +289,14 @@ final class X509MetadataEnvelope extends Equatable { final brotliCbor = map[const CborSmallInt(11)] as CborList?; if (brotliCbor != null) { final bytes = _unchunkCborBytes(brotliCbor); - final uncompressedBytes = await CatalystCompression.instance.brotli.decompress(bytes); + final uncompressedBytes = await CatalystCompression.brotli.decompress(bytes); return cbor.decode(uncompressedBytes); } final zstdCbor = map[const CborSmallInt(12)] as CborList?; if (zstdCbor != null) { final bytes = _unchunkCborBytes(zstdCbor); - final uncompressedBytes = await CatalystCompression.instance.zstd.decompress(bytes); + final uncompressedBytes = await CatalystCompression.zstd.decompress(bytes); return cbor.decode(uncompressedBytes); } diff --git a/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml index bac7ee9319b6..b4e819cc0069 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_cardano_serialization/pubspec.yaml @@ -14,13 +14,13 @@ dependencies: bech32: ^0.2.2 bip32_ed25519: ^0.6.2 catalyst_compression: ^1.0.0 - catalyst_compression_web: ^1.0.0 catalyst_key_derivation: ^1.0.0 cbor: 6.3.7 collection: ^1.19.1 convert: ^3.1.2 cryptography: ^2.7.0 equatable: ^2.0.7 + logging: ^1.3.0 meta: ^1.16.0 pinenacl: ^0.6.0 typed_data: ^1.4.0 diff --git a/catalyst_voices/packages/libs/catalyst_cardano_serialization/test/raw_transaction_test.dart b/catalyst_voices/packages/libs/catalyst_cardano_serialization/test/raw_transaction_test.dart index 7713b43047dd..0d2aad0629b7 100644 --- a/catalyst_voices/packages/libs/catalyst_cardano_serialization/test/raw_transaction_test.dart +++ b/catalyst_voices/packages/libs/catalyst_cardano_serialization/test/raw_transaction_test.dart @@ -35,7 +35,8 @@ void main() { late X509MetadataEnvelope envelope; setUpAll(() { - CatalystCompressionPlatform.instance = _FakeCatalystCompressionPlatform(); + CatalystCompression.overrideBrotli(const _FakeCompressor()); + CatalystCompression.overrideZstd(const _FakeCompressor()); }); setUp(() async { @@ -479,14 +480,6 @@ class _FakeBip32Ed25519XSignature extends Fake implements kd.Bip32Ed25519XSignat CborValue toCbor() => CborBytes(bytes); } -class _FakeCatalystCompressionPlatform extends CatalystCompressionPlatform { - @override - CatalystCompressor get brotli => const _FakeCompressor(); - - @override - CatalystCompressor get zstd => const _FakeCompressor(); -} - final class _FakeCompressor implements CatalystCompressor { const _FakeCompressor(); diff --git a/catalyst_voices/packages/libs/catalyst_compression/.earthlyignore b/catalyst_voices/packages/libs/catalyst_compression/.earthlyignore new file mode 100644 index 000000000000..0a9505a3048c --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/.earthlyignore @@ -0,0 +1,39 @@ +# Files and directories created by pub + +**/.dart_tool/ +**/.packages +**/build/ +**/pubspec.lock +**/pubspec_overrides.yaml +**/.flutter-plugins +**/.flutter-plugins-dependencies +**/.idea/ +**/*.iml +**/coverage/ +**/test_reports/ +**/*.log + +# Generated files from code generation tools +**/*.g.dart +**/*.freezed.dart +**/*.chopper.dart +**/*.swagger.dart +**/*.openapi.dart +**/*.gen.dart +**/*.swagger.*.dart +**/*.drift.dart +**/openapi/processed/ +**/catalyst_voices_localizations_*.dart +**/catalyst_voices_localizations.dart + +# node related + +**/node_modules/ + +# Rust related + +**/target +**/Cargo.lock + +# iOS related +**/Podfile.lock \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/.gitignore new file mode 100644 index 000000000000..b9d7f25b91b6 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/.gitignore @@ -0,0 +1,33 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +# Libraries should not include pubspec.lock, per https://dart.dev/guides/libraries/private-files#pubspeclock. +/pubspec.lock +**/doc/api/ +.dart_tool/ +.flutter-plugins-dependencies +/build/ +/coverage/ diff --git a/catalyst_voices/packages/libs/catalyst_compression/.metadata b/catalyst_voices/packages/libs/catalyst_compression/.metadata new file mode 100644 index 000000000000..783986e3a060 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/.metadata @@ -0,0 +1,42 @@ +# This file tracks properties of this Flutter project. +# Used by Flutter tool to assess capabilities and perform upgrades etc. +# +# This file should be version controlled and should not be manually edited. + +version: + revision: "20f82749394e68bcfbbeee96bad384abaae09c13" + channel: "stable" + +project_type: plugin_ffi + +# Tracks metadata for the flutter migrate command +migration: + platforms: + - platform: root + create_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + base_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + - platform: android + create_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + base_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + - platform: ios + create_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + base_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + - platform: linux + create_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + base_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + - platform: macos + create_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + base_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + - platform: windows + create_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + base_revision: 20f82749394e68bcfbbeee96bad384abaae09c13 + + # User provided section + + # List of Local paths (relative to this file) that should be + # ignored by the migrate tool. + # + # Files that are not part of the templates will be ignored by default. + unmanaged_files: + - 'lib/main.dart' + - 'ios/Runner.xcodeproj/project.pbxproj' diff --git a/catalyst_voices/packages/libs/catalyst_compression/.pubignore b/catalyst_voices/packages/libs/catalyst_compression/.pubignore new file mode 100644 index 000000000000..d24167e4e459 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/.pubignore @@ -0,0 +1,14 @@ +# ignores all files not intended to be published to pub.dev + +.dart_tool/ +build +coverage +example +target +.secret +blueprint.cue +Earthfile +Justfile +*.log +*.iml +pubspec_overrides.yaml \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_compression/CHANGELOG.md similarity index 100% rename from catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/CHANGELOG.md rename to catalyst_voices/packages/libs/catalyst_compression/CHANGELOG.md diff --git a/catalyst_voices/packages/libs/catalyst_compression/Earthfile b/catalyst_voices/packages/libs/catalyst_compression/Earthfile new file mode 100644 index 000000000000..c4e60c169a81 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/Earthfile @@ -0,0 +1,24 @@ +VERSION 0.8 + +IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:feat/catalyst-compression-setup AS flutter-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter_rust_bridge:feat/catalyst-compression-setup AS flutter_rust_bridge + +builder: + FROM flutter_rust_bridge+builder + COPY . . + +# Generated necessary files for running Flutter web locally and save it locally. +code-generator: + ARG local = false + FROM +builder + DO flutter_rust_bridge+CODE_GENERATOR_WEB --WASM_MODULE_NAME="compression_wasm_bindgen" + + IF [ $local = true ] + SAVE ARTIFACT ./assets/js AS LOCAL ./assets/js + SAVE ARTIFACT ./rust/src/frb_generated.rs AS LOCAL ./rust/src/frb_generated.rs + SAVE ARTIFACT ./lib/src AS LOCAL ./lib/src + ELSE + SAVE ARTIFACT ./assets/js assets_js + SAVE ARTIFACT ./rust/src/frb_generated.rs frb_generated.rs + SAVE ARTIFACT ./lib/src src + END \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/Justfile b/catalyst_voices/packages/libs/catalyst_compression/Justfile new file mode 100644 index 000000000000..a07203417d8a --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/Justfile @@ -0,0 +1,12 @@ +# use with https://github.com/casey/just +# +# Catalyst Compression developers' convenience functions. + +# Generated necessary files using Earthly for running Flutter web locally. +code-gen-web: + earthly +code-generator --local=true + +# Run local Flutter web. +run-web: code-gen-web + cd example + flutter run --web-header=Cross-Origin-Opener-Policy=same-origin --web-header=Cross-Origin-Embedder-Policy=require-corp -d chrome diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/LICENSE b/catalyst_voices/packages/libs/catalyst_compression/LICENSE similarity index 100% rename from catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/LICENSE rename to catalyst_voices/packages/libs/catalyst_compression/LICENSE diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/README.md b/catalyst_voices/packages/libs/catalyst_compression/README.md similarity index 78% rename from catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/README.md rename to catalyst_voices/packages/libs/catalyst_compression/README.md index 8bd0f391f35c..60fa3b7f7741 100644 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/README.md +++ b/catalyst_voices/packages/libs/catalyst_compression/README.md @@ -4,38 +4,26 @@ * [Features](#features) * [Requirements](#requirements) * [Install](#install) - * [Web setup](#web-setup) * [Example](#example) - * [Limitations](#limitations) * [Support](#support) * [License](#license) ## Features -This package exposes a JS wrapper around Brotli and zstd compression/decompression algorithms. - -* [brotli-wasm](https://www.npmjs.com/package/brotli-wasm) -* [zstd-js](https://www.npmjs.com/package/@oneidentity/zstd-js) +A Flutter plugin exposing Brotli and zstd compression algorithms through +[flutter_rust_bridge](https://pub.dev/packages/flutter_rust_bridge). ## Requirements * Dart: 3.9.0+ * Flutter: 3.35.1+ +* [Rust](https://rustup.rs/): 1.80.0+ ## Install ```yaml dependencies: catalyst_compression: any # or the latest version on Pub - catalyst_compression_web: any # or the latest version on Pub -``` - -## Web setup - -Add the following line at the end of `` section in web/index.html: - -```html - ``` ## Example @@ -45,7 +33,9 @@ import 'package:catalyst_compression/catalyst_compression.dart'; import 'package:convert/convert.dart'; import 'package:flutter/foundation.dart'; -final derCertHex = ''' + +final derCertHex = + ''' 308202343082019DA00302010202145A FC371DAF301793CF0B1835A118C2F903 63D5D9300D06092A864886F70D01010B @@ -83,13 +73,13 @@ F366A8B930443CA6B69B12DD9DEBEE9C E61E8EE7D77E9F7F9804E03EBC31B458 1313C955A667658B ''' - .replaceAll('\n', ''); + .replaceAll('\n', ''); Future main() async { final rawBytes = hex.decode(derCertHex); // brotli - final brotli = CatalystCompression.instance.brotli; + final brotli = CatalystCompression.brotli; final brotliCompressed = await brotli.compress(rawBytes); final brotliDecompressed = await brotli.decompress(brotliCompressed); @@ -99,7 +89,7 @@ Future main() async { ); // zstd - final zstd = CatalystCompression.instance.zstd; + final zstd = CatalystCompression.zstd; final zstdCompressed = await zstd.compress(rawBytes); final zstdDecompressed = await zstd.decompress(zstdCompressed); @@ -110,10 +100,6 @@ Future main() async { } ``` -## Limitations - -This package supports only web platform at the moment but it's intended that other platforms are supported in the future. - ## Support Post issues and feature requests on the GitHub [issue tracker](https://github.com/input-output-hk/catalyst-voices/issues). diff --git a/catalyst_voices/packages/libs/catalyst_compression/analysis_options.yaml b/catalyst_voices/packages/libs/catalyst_compression/analysis_options.yaml new file mode 100644 index 000000000000..40778efe1068 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/analysis_options.yaml @@ -0,0 +1,6 @@ +include: package:catalyst_analysis/analysis_options.yaml + +analyzer: + exclude: [build/**, lib/*.g.dart, lib/generated/**, lib/src/rust/**, cargokit/**] + errors: + public_member_api_docs: ignore diff --git a/catalyst_voices/packages/libs/catalyst_compression/android/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/android/.gitignore new file mode 100644 index 000000000000..161bdcdaf88c --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/android/.gitignore @@ -0,0 +1,9 @@ +*.iml +.gradle +/local.properties +/.idea/workspace.xml +/.idea/libraries +.DS_Store +/build +/captures +.cxx diff --git a/catalyst_voices/packages/libs/catalyst_compression/android/build.gradle b/catalyst_voices/packages/libs/catalyst_compression/android/build.gradle new file mode 100644 index 000000000000..85e5c66fcc7f --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/android/build.gradle @@ -0,0 +1,56 @@ +// The Android Gradle Plugin builds the native code with the Android NDK. + +group 'com.flutter_rust_bridge.catalyst_compression' +version '1.0' + +buildscript { + repositories { + google() + mavenCentral() + } + + dependencies { + // The Android Gradle Plugin knows how to build native code with the NDK. + classpath 'com.android.tools.build:gradle:8.3.0' + } +} + +rootProject.allprojects { + repositories { + google() + mavenCentral() + } +} + +apply plugin: 'com.android.library' + +android { + if (project.android.hasProperty("namespace")) { + namespace 'com.flutter_rust_bridge.catalyst_compression' + } + + // Bumping the plugin compileSdkVersion requires all clients of this plugin + // to bump the version in their app. + compileSdkVersion 33 + + // Use the NDK version + // declared in /android/app/build.gradle file of the Flutter project. + // Replace it with a version number if this plugin requires a specific NDK version. + // (e.g. ndkVersion "23.1.7779620") + ndkVersion android.ndkVersion + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + defaultConfig { + minSdkVersion 19 + } +} + +apply from: "../cargokit/gradle/plugin.gradle" +cargokit { + manifestDir = "../rust" + libname = "catalyst_compression" +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/android/settings.gradle b/catalyst_voices/packages/libs/catalyst_compression/android/settings.gradle new file mode 100644 index 000000000000..3fdceb5a0f10 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/android/settings.gradle @@ -0,0 +1 @@ +rootProject.name = 'catalyst_compression' diff --git a/catalyst_voices/packages/libs/catalyst_compression/android/src/main/AndroidManifest.xml b/catalyst_voices/packages/libs/catalyst_compression/android/src/main/AndroidManifest.xml new file mode 100644 index 000000000000..a498ecc4ccb4 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/android/src/main/AndroidManifest.xml @@ -0,0 +1,3 @@ + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/assets/js/catalyst_compression.js b/catalyst_voices/packages/libs/catalyst_compression/assets/js/catalyst_compression.js new file mode 100644 index 000000000000..32f7c812212e --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/assets/js/catalyst_compression.js @@ -0,0 +1,875 @@ +let compression_wasm_bindgen; +(function() { + const __exports = {}; + let script_src; + if (typeof document !== 'undefined' && document.currentScript !== null) { + script_src = new URL(document.currentScript.src, location.href).toString(); + } + let wasm = undefined; + + function addToExternrefTable0(obj) { + const idx = wasm.__externref_table_alloc(); + wasm.__wbindgen_export_2.set(idx, obj); + return idx; + } + + function handleError(f, args) { + try { + return f.apply(this, args); + } catch (e) { + const idx = addToExternrefTable0(e); + wasm.__wbindgen_exn_store(idx); + } + } + + let WASM_VECTOR_LEN = 0; + + let cachedUint8ArrayMemory0 = null; + + function getUint8ArrayMemory0() { + if (cachedUint8ArrayMemory0 === null || cachedUint8ArrayMemory0.buffer !== wasm.memory.buffer) { + cachedUint8ArrayMemory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8ArrayMemory0; + } + + const cachedTextEncoder = (typeof TextEncoder !== 'undefined' ? new TextEncoder('utf-8') : { encode: () => { throw Error('TextEncoder not available') } } ); + + const encodeString = function (arg, view) { + const buf = cachedTextEncoder.encode(arg); + view.set(buf); + return { + read: arg.length, + written: buf.length + }; + }; + + function passStringToWasm0(arg, malloc, realloc) { + + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length, 1) >>> 0; + getUint8ArrayMemory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + + let len = arg.length; + let ptr = malloc(len, 1) >>> 0; + + const mem = getUint8ArrayMemory0(); + + let offset = 0; + + for (; offset < len; offset++) { + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr + offset] = code; + } + + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; + const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); + const ret = encodeString(arg, view); + + offset += ret.written; + ptr = realloc(ptr, len, offset, 1) >>> 0; + } + + WASM_VECTOR_LEN = offset; + return ptr; + } + + let cachedDataViewMemory0 = null; + + function getDataViewMemory0() { + if (cachedDataViewMemory0 === null || cachedDataViewMemory0.buffer !== wasm.memory.buffer) { + cachedDataViewMemory0 = new DataView(wasm.memory.buffer); + } + return cachedDataViewMemory0; + } + + let cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + + if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + + function decodeText(ptr, len) { + return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); + } + + function getStringFromWasm0(ptr, len) { + ptr = ptr >>> 0; + return decodeText(ptr, len); + } + + function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); + } + + function isLikeNone(x) { + return x === undefined || x === null; + } + + const CLOSURE_DTORS = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(state => { + wasm.__wbindgen_export_7.get(state.dtor)(state.a, state.b) + }); + + function makeMutClosure(arg0, arg1, dtor, f) { + const state = { a: arg0, b: arg1, cnt: 1, dtor }; + const real = (...args) => { + // First up with a closure we increment the internal reference + // count. This ensures that the Rust closure environment won't + // be deallocated while we're invoking it. + state.cnt++; + const a = state.a; + state.a = 0; + try { + return f(a, state.b, ...args); + } finally { + if (--state.cnt === 0) { + wasm.__wbindgen_export_7.get(state.dtor)(a, state.b); + CLOSURE_DTORS.unregister(state); + } else { + state.a = a; + } + } + }; + real.original = state; + CLOSURE_DTORS.register(real, state, state); + return real; + } + + function debugString(val) { + // primitive types + const type = typeof val; + if (type == 'number' || type == 'boolean' || val == null) { + return `${val}`; + } + if (type == 'string') { + return `"${val}"`; + } + if (type == 'symbol') { + const description = val.description; + if (description == null) { + return 'Symbol'; + } else { + return `Symbol(${description})`; + } + } + if (type == 'function') { + const name = val.name; + if (typeof name == 'string' && name.length > 0) { + return `Function(${name})`; + } else { + return 'Function'; + } + } + // objects + if (Array.isArray(val)) { + const length = val.length; + let debug = '['; + if (length > 0) { + debug += debugString(val[0]); + } + for(let i = 1; i < length; i++) { + debug += ', ' + debugString(val[i]); + } + debug += ']'; + return debug; + } + // Test for built-in + const builtInMatches = /\[object ([^\]]+)\]/.exec(toString.call(val)); + let className; + if (builtInMatches && builtInMatches.length > 1) { + className = builtInMatches[1]; + } else { + // Failed to match the standard '[object ClassName]' + return toString.call(val); + } + if (className == 'Object') { + // we're a user defined class or Object + // JSON.stringify avoids problems with cycles, and is generally much + // easier than looping through ownProperties of `val`. + try { + return 'Object(' + JSON.stringify(val) + ')'; + } catch (_) { + return 'Object'; + } + } + // errors + if (val instanceof Error) { + return `${val.name}: ${val.message}\n${val.stack}`; + } + // TODO we could test for more things here, like `Set`s and `Map`s. + return className; + } + /** + * @returns {number} + */ + __exports.frb_get_rust_content_hash = function() { + const ret = wasm.frb_get_rust_content_hash(); + return ret; + }; + + /** + * @param {number} func_id + * @param {any} ptr_ + * @param {number} rust_vec_len_ + * @param {number} data_len_ + * @returns {any} + */ + __exports.frb_pde_ffi_dispatcher_sync = function(func_id, ptr_, rust_vec_len_, data_len_) { + const ret = wasm.frb_pde_ffi_dispatcher_sync(func_id, ptr_, rust_vec_len_, data_len_); + return ret; + }; + + /** + * @param {number} func_id + * @param {any} port_ + * @param {any} ptr_ + * @param {number} rust_vec_len_ + * @param {number} data_len_ + */ + __exports.frb_pde_ffi_dispatcher_primary = function(func_id, port_, ptr_, rust_vec_len_, data_len_) { + wasm.frb_pde_ffi_dispatcher_primary(func_id, port_, ptr_, rust_vec_len_, data_len_); + }; + + /** + * @param {number} call_id + * @param {any} ptr_ + * @param {number} rust_vec_len_ + * @param {number} data_len_ + */ + __exports.frb_dart_fn_deliver_output = function(call_id, ptr_, rust_vec_len_, data_len_) { + wasm.frb_dart_fn_deliver_output(call_id, ptr_, rust_vec_len_, data_len_); + }; + + function takeFromExternrefTable0(idx) { + const value = wasm.__wbindgen_export_2.get(idx); + wasm.__externref_table_dealloc(idx); + return value; + } + + function passArrayJsValueToWasm0(array, malloc) { + const ptr = malloc(array.length * 4, 4) >>> 0; + for (let i = 0; i < array.length; i++) { + const add = addToExternrefTable0(array[i]); + getDataViewMemory0().setUint32(ptr + 4 * i, add, true); + } + WASM_VECTOR_LEN = array.length; + return ptr; + } + /** + * ## Safety + * This function reclaims a raw pointer created by [`TransferClosure`], and therefore + * should **only** be used in conjunction with it. + * Furthermore, the WASM module in the worker must have been initialized with the shared + * memory from the host JS scope. + * @param {number} payload + * @param {any[]} transfer + */ + __exports.receive_transfer_closure = function(payload, transfer) { + const ptr0 = passArrayJsValueToWasm0(transfer, wasm.__wbindgen_malloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.receive_transfer_closure(payload, ptr0, len0); + if (ret[1]) { + throw takeFromExternrefTable0(ret[0]); + } + }; + + /** + * @param {number} ptr + */ + __exports.frb_dart_opaque_drop_thread_box_persistent_handle = function(ptr) { + wasm.frb_dart_opaque_drop_thread_box_persistent_handle(ptr); + }; + + /** + * # Safety + * + * This should never be called manually. + * @param {any} handle + * @param {any} dart_handler_port + * @returns {number} + */ + __exports.frb_dart_opaque_dart2rust_encode = function(handle, dart_handler_port) { + const ret = wasm.frb_dart_opaque_dart2rust_encode(handle, dart_handler_port); + return ret >>> 0; + }; + + /** + * @param {number} ptr + * @returns {any} + */ + __exports.frb_dart_opaque_rust2dart_decode = function(ptr) { + const ret = wasm.frb_dart_opaque_rust2dart_decode(ptr); + return ret; + }; + + __exports.wasm_start_callback = function() { + wasm.wasm_start_callback(); + }; + + function __wbg_adapter_36(arg0, arg1, arg2) { + wasm.closure179_externref_shim(arg0, arg1, arg2); + } + + function __wbg_adapter_39(arg0, arg1, arg2) { + wasm.closure209_externref_shim(arg0, arg1, arg2); + } + + function __wbg_adapter_42(arg0, arg1, arg2) { + wasm.closure211_externref_shim(arg0, arg1, arg2); + } + + function __wbg_adapter_115(arg0, arg1, arg2, arg3) { + wasm.closure260_externref_shim(arg0, arg1, arg2, arg3); + } + + const WorkerPoolFinalization = (typeof FinalizationRegistry === 'undefined') + ? { register: () => {}, unregister: () => {} } + : new FinalizationRegistry(ptr => wasm.__wbg_workerpool_free(ptr >>> 0, 1)); + + class WorkerPool { + + static __wrap(ptr) { + ptr = ptr >>> 0; + const obj = Object.create(WorkerPool.prototype); + obj.__wbg_ptr = ptr; + WorkerPoolFinalization.register(obj, obj.__wbg_ptr, obj); + return obj; + } + + __destroy_into_raw() { + const ptr = this.__wbg_ptr; + this.__wbg_ptr = 0; + WorkerPoolFinalization.unregister(this); + return ptr; + } + + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_workerpool_free(ptr, 0); + } + /** + * @param {number | null} [initial] + * @param {string | null} [script_src] + * @param {string | null} [wasm_bindgen_name] + * @param {string | null} [worker_js_preamble] + * @returns {WorkerPool} + */ + static new(initial, script_src, wasm_bindgen_name, worker_js_preamble) { + var ptr0 = isLikeNone(script_src) ? 0 : passStringToWasm0(script_src, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len0 = WASM_VECTOR_LEN; + var ptr1 = isLikeNone(wasm_bindgen_name) ? 0 : passStringToWasm0(wasm_bindgen_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + var ptr2 = isLikeNone(worker_js_preamble) ? 0 : passStringToWasm0(worker_js_preamble, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len2 = WASM_VECTOR_LEN; + const ret = wasm.workerpool_new(isLikeNone(initial) ? 0x100000001 : (initial) >>> 0, ptr0, len0, ptr1, len1, ptr2, len2); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return WorkerPool.__wrap(ret[0]); + } + /** + * Creates a new `WorkerPool` which immediately creates `initial` workers. + * + * The pool created here can be used over a long period of time, and it + * will be initially primed with `initial` workers. Currently workers are + * never released or gc'd until the whole pool is destroyed. + * + * # Errors + * + * Returns any error that may happen while a JS web worker is created and a + * message is sent to it. + * @param {number} initial + * @param {string} script_src + * @param {string} wasm_bindgen_name + * @param {string} worker_js_preamble + */ + constructor(initial, script_src, wasm_bindgen_name, worker_js_preamble) { + const ptr0 = passStringToWasm0(script_src, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ptr1 = passStringToWasm0(wasm_bindgen_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + const ptr2 = passStringToWasm0(worker_js_preamble, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len2 = WASM_VECTOR_LEN; + const ret = wasm.workerpool_new_raw(initial, ptr0, len0, ptr1, len1, ptr2, len2); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + this.__wbg_ptr = ret[0] >>> 0; + WorkerPoolFinalization.register(this, this.__wbg_ptr, this); + return this; + } + } + __exports.WorkerPool = WorkerPool; + + const EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']); + + async function __wbg_load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + + } catch (e) { + const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + + } else { + throw e; + } + } + } + + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + + } else { + const instance = await WebAssembly.instantiate(module, imports); + + if (instance instanceof WebAssembly.Instance) { + return { instance, module }; + + } else { + return instance; + } + } + } + + function __wbg_get_imports() { + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbg_async_89f8ca583cefeb81 = function(arg0) { + const ret = arg0.async; + return ret; + }; + imports.wbg.__wbg_buffer_a1a27a0dfa70165d = function(arg0) { + const ret = arg0.buffer; + return ret; + }; + imports.wbg.__wbg_call_f2db6205e5c51dc8 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.call(arg1, arg2); + return ret; + }, arguments) }; + imports.wbg.__wbg_call_fbe8be8bf6436ce5 = function() { return handleError(function (arg0, arg1) { + const ret = arg0.call(arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_createObjectURL_1acd82bf8749f5a9 = function() { return handleError(function (arg0, arg1) { + const ret = URL.createObjectURL(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }, arguments) }; + imports.wbg.__wbg_data_fffd43bf0ca75fff = function(arg0) { + const ret = arg0.data; + return ret; + }; + imports.wbg.__wbg_error_076d4beefd7cfd14 = function(arg0, arg1) { + console.error(getStringFromWasm0(arg0, arg1)); + }; + imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) { + let deferred0_0; + let deferred0_1; + try { + deferred0_0 = arg0; + deferred0_1 = arg1; + console.error(getStringFromWasm0(arg0, arg1)); + } finally { + wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); + } + }; + imports.wbg.__wbg_eval_17f2fea482576acf = function() { return handleError(function (arg0, arg1) { + const ret = eval(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_get_92470be87867c2e5 = function() { return handleError(function (arg0, arg1) { + const ret = Reflect.get(arg0, arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_instanceof_BroadcastChannel_fcd921b3f5a54294 = function(arg0) { + let result; + try { + result = arg0 instanceof BroadcastChannel; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_instanceof_ErrorEvent_9071844b9191577f = function(arg0) { + let result; + try { + result = arg0 instanceof ErrorEvent; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_instanceof_MessageEvent_5a42550b0b1aaf8b = function(arg0) { + let result; + try { + result = arg0 instanceof MessageEvent; + } catch (_) { + result = false; + } + const ret = result; + return ret; + }; + imports.wbg.__wbg_length_ab6d22b5ead75c72 = function(arg0) { + const ret = arg0.length; + return ret; + }; + imports.wbg.__wbg_message_44ef9b801b7d8bc3 = function(arg0, arg1) { + const ret = arg1.message; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbg_name_c21500d3f06b9806 = function(arg0, arg1) { + const ret = arg1.name; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbg_new_07b483f72211fd66 = function() { + const ret = new Object(); + return ret; + }; + imports.wbg.__wbg_new_181343b7eb238d99 = function(arg0) { + const ret = new Int32Array(arg0); + return ret; + }; + imports.wbg.__wbg_new_39fae4e38868373c = function() { return handleError(function (arg0, arg1) { + const ret = new Worker(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_58353953ad2097cc = function() { + const ret = new Array(); + return ret; + }; + imports.wbg.__wbg_new_8a6f238a6ece86ea = function() { + const ret = new Error(); + return ret; + }; + imports.wbg.__wbg_new_a842e76509e6e542 = function() { return handleError(function (arg0, arg1) { + const ret = new BroadcastChannel(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_e30c39c06edaabf2 = function(arg0, arg1) { + try { + var state0 = {a: arg0, b: arg1}; + var cb0 = (arg0, arg1) => { + const a = state0.a; + state0.a = 0; + try { + return __wbg_adapter_115(a, state0.b, arg0, arg1); + } finally { + state0.a = a; + } + }; + const ret = new Promise(cb0); + return ret; + } finally { + state0.a = state0.b = 0; + } + }; + imports.wbg.__wbg_new_e52b3efaaa774f96 = function(arg0) { + const ret = new Uint8Array(arg0); + return ret; + }; + imports.wbg.__wbg_newfromslice_7c05ab1297cb2d88 = function(arg0, arg1) { + const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1)); + return ret; + }; + imports.wbg.__wbg_newnoargs_ff528e72d35de39a = function(arg0, arg1) { + const ret = new Function(getStringFromWasm0(arg0, arg1)); + return ret; + }; + imports.wbg.__wbg_newwithblobsequenceandoptions_ad0af943e7672432 = function() { return handleError(function (arg0, arg1) { + const ret = new Blob(arg0, arg1); + return ret; + }, arguments) }; + imports.wbg.__wbg_of_995ab9c48c3965f1 = function(arg0, arg1, arg2) { + const ret = Array.of(arg0, arg1, arg2); + return ret; + }; + imports.wbg.__wbg_postMessage_33814d4dc32c2dcf = function() { return handleError(function (arg0, arg1) { + arg0.postMessage(arg1); + }, arguments) }; + imports.wbg.__wbg_postMessage_54ce7f4b41ac732e = function() { return handleError(function (arg0, arg1) { + arg0.postMessage(arg1); + }, arguments) }; + imports.wbg.__wbg_postMessage_95ef4554c6b7ca0c = function() { return handleError(function (arg0, arg1) { + arg0.postMessage(arg1); + }, arguments) }; + imports.wbg.__wbg_postMessage_acaa82cfcb43d6a6 = function() { return handleError(function (arg0, arg1, arg2) { + arg0.postMessage(arg1, arg2); + }, arguments) }; + imports.wbg.__wbg_push_73fd7b5550ebf707 = function(arg0, arg1) { + const ret = arg0.push(arg1); + return ret; + }; + imports.wbg.__wbg_queueMicrotask_46c1df247678729f = function(arg0) { + queueMicrotask(arg0); + }; + imports.wbg.__wbg_queueMicrotask_8acf3ccb75ed8d11 = function(arg0) { + const ret = arg0.queueMicrotask; + return ret; + }; + imports.wbg.__wbg_resolve_0dac8c580ffd4678 = function(arg0) { + const ret = Promise.resolve(arg0); + return ret; + }; + imports.wbg.__wbg_set_c43293f93a35998a = function() { return handleError(function (arg0, arg1, arg2) { + const ret = Reflect.set(arg0, arg1, arg2); + return ret; + }, arguments) }; + imports.wbg.__wbg_set_fe4e79d1ed3b0e9b = function(arg0, arg1, arg2) { + arg0.set(arg1, arg2 >>> 0); + }; + imports.wbg.__wbg_setonerror_890bfd1ff86e9c78 = function(arg0, arg1) { + arg0.onerror = arg1; + }; + imports.wbg.__wbg_setonmessage_f6cf46183c427754 = function(arg0, arg1) { + arg0.onmessage = arg1; + }; + imports.wbg.__wbg_settype_acc38e64fddb9e3f = function(arg0, arg1, arg2) { + arg0.type = getStringFromWasm0(arg1, arg2); + }; + imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) { + const ret = arg1.stack; + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbg_static_accessor_GLOBAL_487c52c58d65314d = function() { + const ret = typeof global === 'undefined' ? null : global; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_static_accessor_GLOBAL_THIS_ee9704f328b6b291 = function() { + const ret = typeof globalThis === 'undefined' ? null : globalThis; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_static_accessor_SELF_78c9e3071b912620 = function() { + const ret = typeof self === 'undefined' ? null : self; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_static_accessor_WINDOW_a093d21393777366 = function() { + const ret = typeof window === 'undefined' ? null : window; + return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); + }; + imports.wbg.__wbg_then_db882932c0c714c6 = function(arg0, arg1) { + const ret = arg0.then(arg1); + return ret; + }; + imports.wbg.__wbg_unshift_9c69c2ab32acddfb = function(arg0, arg1) { + const ret = arg0.unshift(arg1); + return ret; + }; + imports.wbg.__wbg_value_f8fe3ce05407a213 = function(arg0) { + const ret = arg0.value; + return ret; + }; + imports.wbg.__wbg_waitAsync_c3398694eaa5aeab = function(arg0, arg1, arg2) { + const ret = Atomics.waitAsync(arg0, arg1 >>> 0, arg2); + return ret; + }; + imports.wbg.__wbg_waitAsync_e36f18e2e26c3b7d = function() { + const ret = Atomics.waitAsync; + return ret; + }; + imports.wbg.__wbindgen_cb_drop = function(arg0) { + const obj = arg0.original; + if (obj.cnt-- == 1) { + obj.a = 0; + return true; + } + const ret = false; + return ret; + }; + imports.wbg.__wbindgen_closure_wrapper1377 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 178, __wbg_adapter_36); + return ret; + }; + imports.wbg.__wbindgen_closure_wrapper1476 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 208, __wbg_adapter_39); + return ret; + }; + imports.wbg.__wbindgen_closure_wrapper1478 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 210, __wbg_adapter_42); + return ret; + }; + imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { + const ret = debugString(arg1); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbindgen_init_externref_table = function() { + const table = wasm.__wbindgen_export_2; + const offset = table.grow(4); + table.set(0, undefined); + table.set(offset + 0, undefined); + table.set(offset + 1, null); + table.set(offset + 2, true); + table.set(offset + 3, false); + ; + }; + imports.wbg.__wbindgen_is_falsy = function(arg0) { + const ret = !arg0; + return ret; + }; + imports.wbg.__wbindgen_is_function = function(arg0) { + const ret = typeof(arg0) === 'function'; + return ret; + }; + imports.wbg.__wbindgen_is_undefined = function(arg0) { + const ret = arg0 === undefined; + return ret; + }; + imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { + const ret = arg0 === arg1; + return ret; + }; + imports.wbg.__wbindgen_link_db87ac8434ca3f93 = function(arg0) { + const val = `onmessage = function (ev) { + let [ia, index, value] = ev.data; + ia = new Int32Array(ia.buffer); + let result = Atomics.wait(ia, index, value); + postMessage(result); + }; + `; + const ret = typeof URL.createObjectURL === 'undefined' ? "data:application/javascript," + encodeURIComponent(val) : URL.createObjectURL(new Blob([val], { type: "text/javascript" })); + const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbindgen_memory = function() { + const ret = wasm.memory; + return ret; + }; + imports.wbg.__wbindgen_module = function() { + const ret = __wbg_init.__wbindgen_wasm_module; + return ret; + }; + imports.wbg.__wbindgen_number_get = function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'number' ? obj : undefined; + getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); + }; + imports.wbg.__wbindgen_number_new = function(arg0) { + const ret = arg0; + return ret; + }; + imports.wbg.__wbindgen_rethrow = function(arg0) { + throw arg0; + }; + imports.wbg.__wbindgen_string_get = function(arg0, arg1) { + const obj = arg1; + const ret = typeof(obj) === 'string' ? obj : undefined; + var ptr1 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len1 = WASM_VECTOR_LEN; + getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); + getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + const ret = getStringFromWasm0(arg0, arg1); + return ret; + }; + imports.wbg.__wbindgen_throw = function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + }; + + return imports; + } + + function __wbg_init_memory(imports, memory) { + imports.wbg.memory = memory || new WebAssembly.Memory({initial:31,maximum:16384,shared:true}); + } + + function __wbg_finalize_init(instance, module, thread_stack_size) { + wasm = instance.exports; + __wbg_init.__wbindgen_wasm_module = module; + cachedDataViewMemory0 = null; + cachedUint8ArrayMemory0 = null; + + if (typeof thread_stack_size !== 'undefined' && (typeof thread_stack_size !== 'number' || thread_stack_size === 0 || thread_stack_size % 65536 !== 0)) { throw 'invalid stack size' } + wasm.__wbindgen_start(thread_stack_size); + return wasm; + } + + function initSync(module, memory) { + if (wasm !== undefined) return wasm; + + let thread_stack_size + if (typeof module !== 'undefined') { + if (Object.getPrototypeOf(module) === Object.prototype) { + ({module, memory, thread_stack_size} = module) + } else { + console.warn('using deprecated parameters for `initSync()`; pass a single object instead') + } + } + + const imports = __wbg_get_imports(); + + __wbg_init_memory(imports, memory); + + if (!(module instanceof WebAssembly.Module)) { + module = new WebAssembly.Module(module); + } + + const instance = new WebAssembly.Instance(module, imports); + + return __wbg_finalize_init(instance, module, thread_stack_size); + } + + async function __wbg_init(module_or_path, memory) { + if (wasm !== undefined) return wasm; + + let thread_stack_size + if (typeof module_or_path !== 'undefined') { + if (Object.getPrototypeOf(module_or_path) === Object.prototype) { + ({module_or_path, memory, thread_stack_size} = module_or_path) + } else { + console.warn('using deprecated parameters for the initialization function; pass a single object instead') + } + } + + if (typeof module_or_path === 'undefined' && typeof script_src !== 'undefined') { + module_or_path = script_src.replace(/\.js$/, '_bg.wasm'); + } + const imports = __wbg_get_imports(); + + if (typeof module_or_path === 'string' || (typeof Request === 'function' && module_or_path instanceof Request) || (typeof URL === 'function' && module_or_path instanceof URL)) { + module_or_path = fetch(module_or_path); + } + + __wbg_init_memory(imports, memory); + + const { instance, module } = await __wbg_load(await module_or_path, imports); + + return __wbg_finalize_init(instance, module, thread_stack_size); + } + + compression_wasm_bindgen = Object.assign(__wbg_init, { initSync }, __exports); + +})(); diff --git a/catalyst_voices/packages/libs/catalyst_compression/assets/js/catalyst_compression_bg.wasm b/catalyst_voices/packages/libs/catalyst_compression/assets/js/catalyst_compression_bg.wasm new file mode 100644 index 000000000000..5a148daecc15 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/assets/js/catalyst_compression_bg.wasm differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/assets/js/package.json b/catalyst_voices/packages/libs/catalyst_compression/assets/js/package.json new file mode 100644 index 000000000000..86f1133c4952 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/assets/js/package.json @@ -0,0 +1,15 @@ +{ + "name": "catalyst_compression", + "version": "0.1.0", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/input-output-hk/catalyst-voices" + }, + "files": [ + "catalyst_compression_bg.wasm", + "catalyst_compression.js" + ], + "browser": "catalyst_compression.js", + "homepage": "https://input-output-hk.github.io/catalyst-voices" +} \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/blueprint.cue b/catalyst_voices/packages/libs/catalyst_compression/blueprint.cue new file mode 100644 index 000000000000..bf545ba9481d --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/blueprint.cue @@ -0,0 +1 @@ +project: name: "catalyst-compression" diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/cargokit/.gitignore new file mode 100644 index 000000000000..cf7bb868c06c --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/.gitignore @@ -0,0 +1,4 @@ +target +.dart_tool +*.iml +!pubspec.lock diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/LICENSE b/catalyst_voices/packages/libs/catalyst_compression/cargokit/LICENSE new file mode 100644 index 000000000000..d33a5fea52e1 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/LICENSE @@ -0,0 +1,42 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +Copyright 2022 Matej Knopp + +================================================================================ + +MIT LICENSE + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR +IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +================================================================================ + +APACHE LICENSE, VERSION 2.0 + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/README b/catalyst_voices/packages/libs/catalyst_compression/cargokit/README new file mode 100644 index 000000000000..398474dbc8f4 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/README @@ -0,0 +1,11 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +Experimental repository to provide glue for seamlessly integrating cargo build +with flutter plugins and packages. + +See https://matejknopp.com/post/flutter_plugin_in_rust_with_no_prebuilt_binaries/ +for a tutorial on how to use Cargokit. + +Example plugin available at https://github.com/irondash/hello_rust_ffi_plugin. + diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_pod.sh b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_pod.sh new file mode 100755 index 000000000000..ed0e0d987d8c --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_pod.sh @@ -0,0 +1,58 @@ +#!/bin/sh +set -e + +BASEDIR=$(dirname "$0") + +# Workaround for https://github.com/dart-lang/pub/issues/4010 +BASEDIR=$(cd "$BASEDIR" ; pwd -P) + +# Remove XCode SDK from path. Otherwise this breaks tool compilation when building iOS project +NEW_PATH=`echo $PATH | tr ":" "\n" | grep -v "Contents/Developer/" | tr "\n" ":"` + +export PATH=${NEW_PATH%?} # remove trailing : + +env + +# Platform name (macosx, iphoneos, iphonesimulator) +export CARGOKIT_DARWIN_PLATFORM_NAME=$PLATFORM_NAME + +# Arctive architectures (arm64, armv7, x86_64), space separated. +export CARGOKIT_DARWIN_ARCHS=$ARCHS + +# Current build configuration (Debug, Release) +export CARGOKIT_CONFIGURATION=$CONFIGURATION + +# Path to directory containing Cargo.toml. +export CARGOKIT_MANIFEST_DIR=$PODS_TARGET_SRCROOT/$1 + +# Temporary directory for build artifacts. +export CARGOKIT_TARGET_TEMP_DIR=$TARGET_TEMP_DIR + +# Output directory for final artifacts. +export CARGOKIT_OUTPUT_DIR=$PODS_CONFIGURATION_BUILD_DIR/$PRODUCT_NAME + +# Directory to store built tool artifacts. +export CARGOKIT_TOOL_TEMP_DIR=$TARGET_TEMP_DIR/build_tool + +# Directory inside root project. Not necessarily the top level directory of root project. +export CARGOKIT_ROOT_PROJECT_DIR=$SRCROOT + +FLUTTER_EXPORT_BUILD_ENVIRONMENT=( + "$PODS_ROOT/../Flutter/ephemeral/flutter_export_environment.sh" # macOS + "$PODS_ROOT/../Flutter/flutter_export_environment.sh" # iOS +) + +for path in "${FLUTTER_EXPORT_BUILD_ENVIRONMENT[@]}" +do + if [[ -f "$path" ]]; then + source "$path" + fi +done + +sh "$BASEDIR/run_build_tool.sh" build-pod "$@" + +# Make a symlink from built framework to phony file, which will be used as input to +# build script. This should force rebuild (podspec currently doesn't support alwaysOutOfDate +# attribute on custom build phase) +ln -fs "$OBJROOT/XCBuildData/build.db" "${BUILT_PRODUCTS_DIR}/cargokit_phony" +ln -fs "${BUILT_PRODUCTS_DIR}/${EXECUTABLE_PATH}" "${BUILT_PRODUCTS_DIR}/cargokit_phony_out" diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/README.md b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/README.md new file mode 100644 index 000000000000..a878c27964c5 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/README.md @@ -0,0 +1,5 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +A sample command-line application with an entrypoint in `bin/`, library code +in `lib/`, and example unit test in `test/`. diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/analysis_options.yaml b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/analysis_options.yaml new file mode 100644 index 000000000000..0e16a8b0921b --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/analysis_options.yaml @@ -0,0 +1,34 @@ +# This is copied from Cargokit (which is the official way to use it currently) +# Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +# This file configures the static analysis results for your project (errors, +# warnings, and lints). +# +# This enables the 'recommended' set of lints from `package:lints`. +# This set helps identify many issues that may lead to problems when running +# or consuming Dart code, and enforces writing Dart using a single, idiomatic +# style and format. +# +# If you want a smaller set of lints you can change this to specify +# 'package:lints/core.yaml'. These are just the most critical lints +# (the recommended set includes the core lints). +# The core lints are also what is used by pub.dev for scoring packages. + +include: package:lints/recommended.yaml + +# Uncomment the following section to specify additional rules. + +linter: + rules: + - prefer_relative_imports + - directives_ordering + +# analyzer: +# exclude: +# - path/to/excluded/files/** + +# For more information about the core and recommended set of lints, see +# https://dart.dev/go/core-lints + +# For additional information about configuring this file, see +# https://dart.dev/guides/language/analysis-options diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/bin/build_tool.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/bin/build_tool.dart new file mode 100644 index 000000000000..268eb524dcce --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/bin/build_tool.dart @@ -0,0 +1,8 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'package:build_tool/build_tool.dart' as build_tool; + +void main(List arguments) { + build_tool.runMain(arguments); +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/build_tool.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/build_tool.dart new file mode 100644 index 000000000000..7c1bb750a4eb --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/build_tool.dart @@ -0,0 +1,8 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'src/build_tool.dart' as build_tool; + +Future runMain(List args) async { + return build_tool.runMain(args); +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/android_environment.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/android_environment.dart new file mode 100644 index 000000000000..15fc9eedacce --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/android_environment.dart @@ -0,0 +1,195 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; +import 'dart:isolate'; +import 'dart:math' as math; + +import 'package:collection/collection.dart'; +import 'package:path/path.dart' as path; +import 'package:version/version.dart'; + +import 'target.dart'; +import 'util.dart'; + +class AndroidEnvironment { + AndroidEnvironment({ + required this.sdkPath, + required this.ndkVersion, + required this.minSdkVersion, + required this.targetTempDir, + required this.target, + }); + + static void clangLinkerWrapper(List args) { + final clang = Platform.environment['_CARGOKIT_NDK_LINK_CLANG']; + if (clang == null) { + throw Exception( + "cargo-ndk rustc linker: didn't find _CARGOKIT_NDK_LINK_CLANG env var"); + } + final target = Platform.environment['_CARGOKIT_NDK_LINK_TARGET']; + if (target == null) { + throw Exception( + "cargo-ndk rustc linker: didn't find _CARGOKIT_NDK_LINK_TARGET env var"); + } + + runCommand(clang, [ + target, + ...args, + ]); + } + + /// Full path to Android SDK. + final String sdkPath; + + /// Full version of Android NDK. + final String ndkVersion; + + /// Minimum supported SDK version. + final int minSdkVersion; + + /// Target directory for build artifacts. + final String targetTempDir; + + /// Target being built. + final Target target; + + bool ndkIsInstalled() { + final ndkPath = path.join(sdkPath, 'ndk', ndkVersion); + final ndkPackageXml = File(path.join(ndkPath, 'package.xml')); + return ndkPackageXml.existsSync(); + } + + void installNdk({ + required String javaHome, + }) { + final sdkManagerExtension = Platform.isWindows ? '.bat' : ''; + final sdkManager = path.join( + sdkPath, + 'cmdline-tools', + 'latest', + 'bin', + 'sdkmanager$sdkManagerExtension', + ); + + log.info('Installing NDK $ndkVersion'); + runCommand(sdkManager, [ + '--install', + 'ndk;$ndkVersion', + ], environment: { + 'JAVA_HOME': javaHome, + }); + } + + Future> buildEnvironment() async { + final hostArch = Platform.isMacOS + ? "darwin-x86_64" + : (Platform.isLinux ? "linux-x86_64" : "windows-x86_64"); + + final ndkPath = path.join(sdkPath, 'ndk', ndkVersion); + final toolchainPath = path.join( + ndkPath, + 'toolchains', + 'llvm', + 'prebuilt', + hostArch, + 'bin', + ); + + final minSdkVersion = + math.max(target.androidMinSdkVersion!, this.minSdkVersion); + + final exe = Platform.isWindows ? '.exe' : ''; + + final arKey = 'AR_${target.rust}'; + final arValue = ['${target.rust}-ar', 'llvm-ar', 'llvm-ar.exe'] + .map((e) => path.join(toolchainPath, e)) + .firstWhereOrNull((element) => File(element).existsSync()); + if (arValue == null) { + throw Exception('Failed to find ar for $target in $toolchainPath'); + } + + final targetArg = '--target=${target.rust}$minSdkVersion'; + + final ccKey = 'CC_${target.rust}'; + final ccValue = path.join(toolchainPath, 'clang$exe'); + final cfFlagsKey = 'CFLAGS_${target.rust}'; + final cFlagsValue = targetArg; + + final cxxKey = 'CXX_${target.rust}'; + final cxxValue = path.join(toolchainPath, 'clang++$exe'); + final cxxFlagsKey = 'CXXFLAGS_${target.rust}'; + final cxxFlagsValue = targetArg; + + final linkerKey = + 'cargo_target_${target.rust.replaceAll('-', '_')}_linker'.toUpperCase(); + + final ranlibKey = 'RANLIB_${target.rust}'; + final ranlibValue = path.join(toolchainPath, 'llvm-ranlib$exe'); + + final ndkVersionParsed = Version.parse(ndkVersion); + final rustFlagsKey = 'CARGO_ENCODED_RUSTFLAGS'; + final rustFlagsValue = _libGccWorkaround(targetTempDir, ndkVersionParsed); + + final runRustTool = + Platform.isWindows ? 'run_build_tool.cmd' : 'run_build_tool.sh'; + + final packagePath = (await Isolate.resolvePackageUri( + Uri.parse('package:build_tool/buildtool.dart')))! + .toFilePath(); + final selfPath = path.canonicalize(path.join( + packagePath, + '..', + '..', + '..', + runRustTool, + )); + + // Make sure that run_build_tool is working properly even initially launched directly + // through dart run. + final toolTempDir = + Platform.environment['CARGOKIT_TOOL_TEMP_DIR'] ?? targetTempDir; + + return { + arKey: arValue, + ccKey: ccValue, + cfFlagsKey: cFlagsValue, + cxxKey: cxxValue, + cxxFlagsKey: cxxFlagsValue, + ranlibKey: ranlibValue, + rustFlagsKey: rustFlagsValue, + linkerKey: selfPath, + // Recognized by main() so we know when we're acting as a wrapper + '_CARGOKIT_NDK_LINK_TARGET': targetArg, + '_CARGOKIT_NDK_LINK_CLANG': ccValue, + 'CARGOKIT_TOOL_TEMP_DIR': toolTempDir, + }; + } + + // Workaround for libgcc missing in NDK23, inspired by cargo-ndk + String _libGccWorkaround(String buildDir, Version ndkVersion) { + final workaroundDir = path.join( + buildDir, + 'cargokit', + 'libgcc_workaround', + '${ndkVersion.major}', + ); + Directory(workaroundDir).createSync(recursive: true); + if (ndkVersion.major >= 23) { + File(path.join(workaroundDir, 'libgcc.a')) + .writeAsStringSync('INPUT(-lunwind)'); + } else { + // Other way around, untested, forward libgcc.a from libunwind once Rust + // gets updated for NDK23+. + File(path.join(workaroundDir, 'libunwind.a')) + .writeAsStringSync('INPUT(-lgcc)'); + } + + var rustFlags = Platform.environment['CARGO_ENCODED_RUSTFLAGS'] ?? ''; + if (rustFlags.isNotEmpty) { + rustFlags = '$rustFlags\x1f'; + } + rustFlags = '$rustFlags-L\x1f$workaroundDir'; + return rustFlags; + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/artifacts_provider.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/artifacts_provider.dart new file mode 100644 index 000000000000..e608cece734e --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/artifacts_provider.dart @@ -0,0 +1,266 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:ed25519_edwards/ed25519_edwards.dart'; +import 'package:http/http.dart'; +import 'package:logging/logging.dart'; +import 'package:path/path.dart' as path; + +import 'builder.dart'; +import 'crate_hash.dart'; +import 'options.dart'; +import 'precompile_binaries.dart'; +import 'rustup.dart'; +import 'target.dart'; + +class Artifact { + /// File system location of the artifact. + final String path; + + /// Actual file name that the artifact should have in destination folder. + final String finalFileName; + + AritifactType get type { + if (finalFileName.endsWith('.dll') || + finalFileName.endsWith('.dll.lib') || + finalFileName.endsWith('.pdb') || + finalFileName.endsWith('.so') || + finalFileName.endsWith('.dylib')) { + return AritifactType.dylib; + } else if (finalFileName.endsWith('.lib') || finalFileName.endsWith('.a')) { + return AritifactType.staticlib; + } else { + throw Exception('Unknown artifact type for $finalFileName'); + } + } + + Artifact({ + required this.path, + required this.finalFileName, + }); +} + +final _log = Logger('artifacts_provider'); + +class ArtifactProvider { + ArtifactProvider({ + required this.environment, + required this.userOptions, + }); + + final BuildEnvironment environment; + final CargokitUserOptions userOptions; + + Future>> getArtifacts(List targets) async { + final result = await _getPrecompiledArtifacts(targets); + + final pendingTargets = List.of(targets); + pendingTargets.removeWhere((element) => result.containsKey(element)); + + if (pendingTargets.isEmpty) { + return result; + } + + final rustup = Rustup(); + for (final target in targets) { + final builder = RustBuilder(target: target, environment: environment); + builder.prepare(rustup); + _log.info('Building ${environment.crateInfo.packageName} for $target'); + final targetDir = await builder.build(); + // For local build accept both static and dynamic libraries. + final artifactNames = { + ...getArtifactNames( + target: target, + libraryName: environment.crateInfo.packageName, + aritifactType: AritifactType.dylib, + remote: false, + ), + ...getArtifactNames( + target: target, + libraryName: environment.crateInfo.packageName, + aritifactType: AritifactType.staticlib, + remote: false, + ) + }; + final artifacts = artifactNames + .map((artifactName) => Artifact( + path: path.join(targetDir, artifactName), + finalFileName: artifactName, + )) + .where((element) => File(element.path).existsSync()) + .toList(); + result[target] = artifacts; + } + return result; + } + + Future>> _getPrecompiledArtifacts( + List targets) async { + if (userOptions.usePrecompiledBinaries == false) { + _log.info('Precompiled binaries are disabled'); + return {}; + } + if (environment.crateOptions.precompiledBinaries == null) { + _log.fine('Precompiled binaries not enabled for this crate'); + return {}; + } + + final start = Stopwatch()..start(); + final crateHash = CrateHash.compute(environment.manifestDir, + tempStorage: environment.targetTempDir); + _log.fine( + 'Computed crate hash $crateHash in ${start.elapsedMilliseconds}ms'); + + final downloadedArtifactsDir = + path.join(environment.targetTempDir, 'precompiled', crateHash); + Directory(downloadedArtifactsDir).createSync(recursive: true); + + final res = >{}; + + for (final target in targets) { + final requiredArtifacts = getArtifactNames( + target: target, + libraryName: environment.crateInfo.packageName, + remote: true, + ); + final artifactsForTarget = []; + + for (final artifact in requiredArtifacts) { + final fileName = PrecompileBinaries.fileName(target, artifact); + final downloadedPath = path.join(downloadedArtifactsDir, fileName); + if (!File(downloadedPath).existsSync()) { + final signatureFileName = + PrecompileBinaries.signatureFileName(target, artifact); + await _tryDownloadArtifacts( + crateHash: crateHash, + fileName: fileName, + signatureFileName: signatureFileName, + finalPath: downloadedPath, + ); + } + if (File(downloadedPath).existsSync()) { + artifactsForTarget.add(Artifact( + path: downloadedPath, + finalFileName: artifact, + )); + } else { + break; + } + } + + // Only provide complete set of artifacts. + if (artifactsForTarget.length == requiredArtifacts.length) { + _log.fine('Found precompiled artifacts for $target'); + res[target] = artifactsForTarget; + } + } + + return res; + } + + static Future _get(Uri url, {Map? headers}) async { + int attempt = 0; + const maxAttempts = 10; + while (true) { + try { + return await get(url, headers: headers); + } on SocketException catch (e) { + // Try to detect reset by peer error and retry. + if (attempt++ < maxAttempts && + (e.osError?.errorCode == 54 || e.osError?.errorCode == 10054)) { + _log.severe( + 'Failed to download $url: $e, attempt $attempt of $maxAttempts, will retry...'); + await Future.delayed(Duration(seconds: 1)); + continue; + } else { + rethrow; + } + } + } + } + + Future _tryDownloadArtifacts({ + required String crateHash, + required String fileName, + required String signatureFileName, + required String finalPath, + }) async { + final precompiledBinaries = environment.crateOptions.precompiledBinaries!; + final prefix = precompiledBinaries.uriPrefix; + final url = Uri.parse('$prefix$crateHash/$fileName'); + final signatureUrl = Uri.parse('$prefix$crateHash/$signatureFileName'); + _log.fine('Downloading signature from $signatureUrl'); + final signature = await _get(signatureUrl); + if (signature.statusCode == 404) { + _log.warning( + 'Precompiled binaries not available for crate hash $crateHash ($fileName)'); + return; + } + if (signature.statusCode != 200) { + _log.severe( + 'Failed to download signature $signatureUrl: status ${signature.statusCode}'); + return; + } + _log.fine('Downloading binary from $url'); + final res = await _get(url); + if (res.statusCode != 200) { + _log.severe('Failed to download binary $url: status ${res.statusCode}'); + return; + } + if (verify( + precompiledBinaries.publicKey, res.bodyBytes, signature.bodyBytes)) { + File(finalPath).writeAsBytesSync(res.bodyBytes); + } else { + _log.shout('Signature verification failed! Ignoring binary.'); + } + } +} + +enum AritifactType { + staticlib, + dylib, +} + +AritifactType artifactTypeForTarget(Target target) { + if (target.darwinPlatform != null) { + return AritifactType.staticlib; + } else { + return AritifactType.dylib; + } +} + +List getArtifactNames({ + required Target target, + required String libraryName, + required bool remote, + AritifactType? aritifactType, +}) { + aritifactType ??= artifactTypeForTarget(target); + if (target.darwinArch != null) { + if (aritifactType == AritifactType.staticlib) { + return ['lib$libraryName.a']; + } else { + return ['lib$libraryName.dylib']; + } + } else if (target.rust.contains('-windows-')) { + if (aritifactType == AritifactType.staticlib) { + return ['$libraryName.lib']; + } else { + return [ + '$libraryName.dll', + '$libraryName.dll.lib', + if (!remote) '$libraryName.pdb' + ]; + } + } else if (target.rust.contains('-linux-')) { + if (aritifactType == AritifactType.staticlib) { + return ['lib$libraryName.a']; + } else { + return ['lib$libraryName.so']; + } + } else { + throw Exception("Unsupported target: ${target.rust}"); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_cmake.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_cmake.dart new file mode 100644 index 000000000000..6f3b2a4ec118 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_cmake.dart @@ -0,0 +1,40 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:path/path.dart' as path; + +import 'artifacts_provider.dart'; +import 'builder.dart'; +import 'environment.dart'; +import 'options.dart'; +import 'target.dart'; + +class BuildCMake { + final CargokitUserOptions userOptions; + + BuildCMake({required this.userOptions}); + + Future build() async { + final targetPlatform = Environment.targetPlatform; + final target = Target.forFlutterName(Environment.targetPlatform); + if (target == null) { + throw Exception("Unknown target platform: $targetPlatform"); + } + + final environment = BuildEnvironment.fromEnvironment(isAndroid: false); + final provider = + ArtifactProvider(environment: environment, userOptions: userOptions); + final artifacts = await provider.getArtifacts([target]); + + final libs = artifacts[target]!; + + for (final lib in libs) { + if (lib.type == AritifactType.dylib) { + File(lib.path) + .copySync(path.join(Environment.outputDir, lib.finalFileName)); + } + } + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_gradle.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_gradle.dart new file mode 100644 index 000000000000..7e61fcbb7c53 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_gradle.dart @@ -0,0 +1,49 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:logging/logging.dart'; +import 'package:path/path.dart' as path; + +import 'artifacts_provider.dart'; +import 'builder.dart'; +import 'environment.dart'; +import 'options.dart'; +import 'target.dart'; + +final log = Logger('build_gradle'); + +class BuildGradle { + BuildGradle({required this.userOptions}); + + final CargokitUserOptions userOptions; + + Future build() async { + final targets = Environment.targetPlatforms.map((arch) { + final target = Target.forFlutterName(arch); + if (target == null) { + throw Exception( + "Unknown darwin target or platform: $arch, ${Environment.darwinPlatformName}"); + } + return target; + }).toList(); + + final environment = BuildEnvironment.fromEnvironment(isAndroid: true); + final provider = + ArtifactProvider(environment: environment, userOptions: userOptions); + final artifacts = await provider.getArtifacts(targets); + + for (final target in targets) { + final libs = artifacts[target]!; + final outputDir = path.join(Environment.outputDir, target.android!); + Directory(outputDir).createSync(recursive: true); + + for (final lib in libs) { + if (lib.type == AritifactType.dylib) { + File(lib.path).copySync(path.join(outputDir, lib.finalFileName)); + } + } + } + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_pod.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_pod.dart new file mode 100644 index 000000000000..8a9c0db5defa --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_pod.dart @@ -0,0 +1,89 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:path/path.dart' as path; + +import 'artifacts_provider.dart'; +import 'builder.dart'; +import 'environment.dart'; +import 'options.dart'; +import 'target.dart'; +import 'util.dart'; + +class BuildPod { + BuildPod({required this.userOptions}); + + final CargokitUserOptions userOptions; + + Future build() async { + final targets = Environment.darwinArchs.map((arch) { + final target = Target.forDarwin( + platformName: Environment.darwinPlatformName, darwinAarch: arch); + if (target == null) { + throw Exception( + "Unknown darwin target or platform: $arch, ${Environment.darwinPlatformName}"); + } + return target; + }).toList(); + + final environment = BuildEnvironment.fromEnvironment(isAndroid: false); + final provider = + ArtifactProvider(environment: environment, userOptions: userOptions); + final artifacts = await provider.getArtifacts(targets); + + void performLipo(String targetFile, Iterable sourceFiles) { + runCommand("lipo", [ + '-create', + ...sourceFiles, + '-output', + targetFile, + ]); + } + + final outputDir = Environment.outputDir; + + Directory(outputDir).createSync(recursive: true); + + final staticLibs = artifacts.values + .expand((element) => element) + .where((element) => element.type == AritifactType.staticlib) + .toList(); + final dynamicLibs = artifacts.values + .expand((element) => element) + .where((element) => element.type == AritifactType.dylib) + .toList(); + + final libName = environment.crateInfo.packageName; + + // If there is static lib, use it and link it with pod + if (staticLibs.isNotEmpty) { + final finalTargetFile = path.join(outputDir, "lib$libName.a"); + performLipo(finalTargetFile, staticLibs.map((e) => e.path)); + } else { + // Otherwise try to replace bundle dylib with our dylib + final bundlePaths = [ + '$libName.framework/Versions/A/$libName', + '$libName.framework/$libName', + ]; + + for (final bundlePath in bundlePaths) { + final targetFile = path.join(outputDir, bundlePath); + if (File(targetFile).existsSync()) { + performLipo(targetFile, dynamicLibs.map((e) => e.path)); + + // Replace absolute id with @rpath one so that it works properly + // when moved to Frameworks. + runCommand("install_name_tool", [ + '-id', + '@rpath/$bundlePath', + targetFile, + ]); + return; + } + } + throw Exception('Unable to find bundle for dynamic library'); + } + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_tool.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_tool.dart new file mode 100644 index 000000000000..c8f36981b51e --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/build_tool.dart @@ -0,0 +1,271 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:args/command_runner.dart'; +import 'package:ed25519_edwards/ed25519_edwards.dart'; +import 'package:github/github.dart'; +import 'package:hex/hex.dart'; +import 'package:logging/logging.dart'; + +import 'android_environment.dart'; +import 'build_cmake.dart'; +import 'build_gradle.dart'; +import 'build_pod.dart'; +import 'logging.dart'; +import 'options.dart'; +import 'precompile_binaries.dart'; +import 'target.dart'; +import 'util.dart'; +import 'verify_binaries.dart'; + +final log = Logger('build_tool'); + +abstract class BuildCommand extends Command { + Future runBuildCommand(CargokitUserOptions options); + + @override + Future run() async { + final options = CargokitUserOptions.load(); + + if (options.verboseLogging || + Platform.environment['CARGOKIT_VERBOSE'] == '1') { + enableVerboseLogging(); + } + + await runBuildCommand(options); + } +} + +class BuildPodCommand extends BuildCommand { + @override + final name = 'build-pod'; + + @override + final description = 'Build cocoa pod library'; + + @override + Future runBuildCommand(CargokitUserOptions options) async { + final build = BuildPod(userOptions: options); + await build.build(); + } +} + +class BuildGradleCommand extends BuildCommand { + @override + final name = 'build-gradle'; + + @override + final description = 'Build android library'; + + @override + Future runBuildCommand(CargokitUserOptions options) async { + final build = BuildGradle(userOptions: options); + await build.build(); + } +} + +class BuildCMakeCommand extends BuildCommand { + @override + final name = 'build-cmake'; + + @override + final description = 'Build CMake library'; + + @override + Future runBuildCommand(CargokitUserOptions options) async { + final build = BuildCMake(userOptions: options); + await build.build(); + } +} + +class GenKeyCommand extends Command { + @override + final name = 'gen-key'; + + @override + final description = 'Generate key pair for signing precompiled binaries'; + + @override + void run() { + final kp = generateKey(); + final private = HEX.encode(kp.privateKey.bytes); + final public = HEX.encode(kp.publicKey.bytes); + print("Private Key: $private"); + print("Public Key: $public"); + } +} + +class PrecompileBinariesCommand extends Command { + PrecompileBinariesCommand() { + argParser + ..addOption( + 'repository', + mandatory: true, + help: 'Github repository slug in format owner/name', + ) + ..addOption( + 'manifest-dir', + mandatory: true, + help: 'Directory containing Cargo.toml', + ) + ..addMultiOption('target', + help: 'Rust target triple of artifact to build.\n' + 'Can be specified multiple times or omitted in which case\n' + 'all targets for current platform will be built.') + ..addOption( + 'android-sdk-location', + help: 'Location of Android SDK (if available)', + ) + ..addOption( + 'android-ndk-version', + help: 'Android NDK version (if available)', + ) + ..addOption( + 'android-min-sdk-version', + help: 'Android minimum rquired version (if available)', + ) + ..addOption( + 'temp-dir', + help: 'Directory to store temporary build artifacts', + ) + ..addFlag( + "verbose", + abbr: "v", + defaultsTo: false, + help: "Enable verbose logging", + ); + } + + @override + final name = 'precompile-binaries'; + + @override + final description = 'Prebuild and upload binaries\n' + 'Private key must be passed through PRIVATE_KEY environment variable. ' + 'Use gen_key through generate priave key.\n' + 'Github token must be passed as GITHUB_TOKEN environment variable.\n'; + + @override + Future run() async { + final verbose = argResults!['verbose'] as bool; + if (verbose) { + enableVerboseLogging(); + } + + final privateKeyString = Platform.environment['PRIVATE_KEY']; + if (privateKeyString == null) { + throw ArgumentError('Missing PRIVATE_KEY environment variable'); + } + final githubToken = Platform.environment['GITHUB_TOKEN']; + if (githubToken == null) { + throw ArgumentError('Missing GITHUB_TOKEN environment variable'); + } + final privateKey = HEX.decode(privateKeyString); + if (privateKey.length != 64) { + throw ArgumentError('Private key must be 64 bytes long'); + } + final manifestDir = argResults!['manifest-dir'] as String; + if (!Directory(manifestDir).existsSync()) { + throw ArgumentError('Manifest directory does not exist: $manifestDir'); + } + String? androidMinSdkVersionString = + argResults!['android-min-sdk-version'] as String?; + int? androidMinSdkVersion; + if (androidMinSdkVersionString != null) { + androidMinSdkVersion = int.tryParse(androidMinSdkVersionString); + if (androidMinSdkVersion == null) { + throw ArgumentError( + 'Invalid android-min-sdk-version: $androidMinSdkVersionString'); + } + } + final targetStrigns = argResults!['target'] as List; + final targets = targetStrigns.map((target) { + final res = Target.forRustTriple(target); + if (res == null) { + throw ArgumentError('Invalid target: $target'); + } + return res; + }).toList(growable: false); + final precompileBinaries = PrecompileBinaries( + privateKey: PrivateKey(privateKey), + githubToken: githubToken, + manifestDir: manifestDir, + repositorySlug: RepositorySlug.full(argResults!['repository'] as String), + targets: targets, + androidSdkLocation: argResults!['android-sdk-location'] as String?, + androidNdkVersion: argResults!['android-ndk-version'] as String?, + androidMinSdkVersion: androidMinSdkVersion, + tempDir: argResults!['temp-dir'] as String?, + ); + + await precompileBinaries.run(); + } +} + +class VerifyBinariesCommand extends Command { + VerifyBinariesCommand() { + argParser.addOption( + 'manifest-dir', + mandatory: true, + help: 'Directory containing Cargo.toml', + ); + } + + @override + final name = "verify-binaries"; + + @override + final description = 'Verifies published binaries\n' + 'Checks whether there is a binary published for each targets\n' + 'and checks the signature.'; + + @override + Future run() async { + final manifestDir = argResults!['manifest-dir'] as String; + final verifyBinaries = VerifyBinaries( + manifestDir: manifestDir, + ); + await verifyBinaries.run(); + } +} + +Future runMain(List args) async { + try { + // Init logging before options are loaded + initLogging(); + + if (Platform.environment['_CARGOKIT_NDK_LINK_TARGET'] != null) { + return AndroidEnvironment.clangLinkerWrapper(args); + } + + final runner = CommandRunner('build_tool', 'Cargokit built_tool') + ..addCommand(BuildPodCommand()) + ..addCommand(BuildGradleCommand()) + ..addCommand(BuildCMakeCommand()) + ..addCommand(GenKeyCommand()) + ..addCommand(PrecompileBinariesCommand()) + ..addCommand(VerifyBinariesCommand()); + + await runner.run(args); + } on ArgumentError catch (e) { + stderr.writeln(e.toString()); + exit(1); + } catch (e, s) { + log.severe(kDoubleSeparator); + log.severe('Cargokit BuildTool failed with error:'); + log.severe(kSeparator); + log.severe(e); + // This tells user to install Rust, there's no need to pollute the log with + // stack trace. + if (e is! RustupNotFoundException) { + log.severe(kSeparator); + log.severe(s); + log.severe(kSeparator); + log.severe('BuildTool arguments: $args'); + } + log.severe(kDoubleSeparator); + exit(1); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/builder.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/builder.dart new file mode 100644 index 000000000000..84c46e4f54fc --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/builder.dart @@ -0,0 +1,198 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'package:collection/collection.dart'; +import 'package:logging/logging.dart'; +import 'package:path/path.dart' as path; + +import 'android_environment.dart'; +import 'cargo.dart'; +import 'environment.dart'; +import 'options.dart'; +import 'rustup.dart'; +import 'target.dart'; +import 'util.dart'; + +final _log = Logger('builder'); + +enum BuildConfiguration { + debug, + release, + profile, +} + +extension on BuildConfiguration { + bool get isDebug => this == BuildConfiguration.debug; + String get rustName => switch (this) { + BuildConfiguration.debug => 'debug', + BuildConfiguration.release => 'release', + BuildConfiguration.profile => 'release', + }; +} + +class BuildException implements Exception { + final String message; + + BuildException(this.message); + + @override + String toString() { + return 'BuildException: $message'; + } +} + +class BuildEnvironment { + final BuildConfiguration configuration; + final CargokitCrateOptions crateOptions; + final String targetTempDir; + final String manifestDir; + final CrateInfo crateInfo; + + final bool isAndroid; + final String? androidSdkPath; + final String? androidNdkVersion; + final int? androidMinSdkVersion; + final String? javaHome; + + BuildEnvironment({ + required this.configuration, + required this.crateOptions, + required this.targetTempDir, + required this.manifestDir, + required this.crateInfo, + required this.isAndroid, + this.androidSdkPath, + this.androidNdkVersion, + this.androidMinSdkVersion, + this.javaHome, + }); + + static BuildConfiguration parseBuildConfiguration(String value) { + // XCode configuration adds the flavor to configuration name. + final firstSegment = value.split('-').first; + final buildConfiguration = BuildConfiguration.values.firstWhereOrNull( + (e) => e.name == firstSegment, + ); + if (buildConfiguration == null) { + _log.warning('Unknown build configuraiton $value, will assume release'); + return BuildConfiguration.release; + } + return buildConfiguration; + } + + static BuildEnvironment fromEnvironment({ + required bool isAndroid, + }) { + final buildConfiguration = + parseBuildConfiguration(Environment.configuration); + final manifestDir = Environment.manifestDir; + final crateOptions = CargokitCrateOptions.load( + manifestDir: manifestDir, + ); + final crateInfo = CrateInfo.load(manifestDir); + return BuildEnvironment( + configuration: buildConfiguration, + crateOptions: crateOptions, + targetTempDir: Environment.targetTempDir, + manifestDir: manifestDir, + crateInfo: crateInfo, + isAndroid: isAndroid, + androidSdkPath: isAndroid ? Environment.sdkPath : null, + androidNdkVersion: isAndroid ? Environment.ndkVersion : null, + androidMinSdkVersion: + isAndroid ? int.parse(Environment.minSdkVersion) : null, + javaHome: isAndroid ? Environment.javaHome : null, + ); + } +} + +class RustBuilder { + final Target target; + final BuildEnvironment environment; + + RustBuilder({ + required this.target, + required this.environment, + }); + + void prepare( + Rustup rustup, + ) { + final toolchain = _toolchain; + if (rustup.installedTargets(toolchain) == null) { + rustup.installToolchain(toolchain); + } + if (toolchain == 'nightly') { + rustup.installRustSrcForNightly(); + } + if (!rustup.installedTargets(toolchain)!.contains(target.rust)) { + rustup.installTarget(target.rust, toolchain: toolchain); + } + } + + CargoBuildOptions? get _buildOptions => + environment.crateOptions.cargo[environment.configuration]; + + String get _toolchain => _buildOptions?.toolchain.name ?? 'stable'; + + /// Returns the path of directory containing build artifacts. + Future build() async { + final extraArgs = _buildOptions?.flags ?? []; + final manifestPath = path.join(environment.manifestDir, 'Cargo.toml'); + runCommand( + 'rustup', + [ + 'run', + _toolchain, + 'cargo', + 'build', + ...extraArgs, + '--manifest-path', + manifestPath, + '-p', + environment.crateInfo.packageName, + if (!environment.configuration.isDebug) '--release', + '--target', + target.rust, + '--target-dir', + environment.targetTempDir, + ], + environment: await _buildEnvironment(), + ); + return path.join( + environment.targetTempDir, + target.rust, + environment.configuration.rustName, + ); + } + + Future> _buildEnvironment() async { + if (target.android == null) { + return {}; + } else { + final sdkPath = environment.androidSdkPath; + final ndkVersion = environment.androidNdkVersion; + final minSdkVersion = environment.androidMinSdkVersion; + if (sdkPath == null) { + throw BuildException('androidSdkPath is not set'); + } + if (ndkVersion == null) { + throw BuildException('androidNdkVersion is not set'); + } + if (minSdkVersion == null) { + throw BuildException('androidMinSdkVersion is not set'); + } + final env = AndroidEnvironment( + sdkPath: sdkPath, + ndkVersion: ndkVersion, + minSdkVersion: minSdkVersion, + targetTempDir: environment.targetTempDir, + target: target, + ); + if (!env.ndkIsInstalled() && environment.javaHome != null) { + env.installNdk(javaHome: environment.javaHome!); + } + return env.buildEnvironment(); + } + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/cargo.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/cargo.dart new file mode 100644 index 000000000000..0d8958ff2e28 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/cargo.dart @@ -0,0 +1,48 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:path/path.dart' as path; +import 'package:toml/toml.dart'; + +class ManifestException { + ManifestException(this.message, {required this.fileName}); + + final String? fileName; + final String message; + + @override + String toString() { + if (fileName != null) { + return 'Failed to parse package manifest at $fileName: $message'; + } else { + return 'Failed to parse package manifest: $message'; + } + } +} + +class CrateInfo { + CrateInfo({required this.packageName}); + + final String packageName; + + static CrateInfo parseManifest(String manifest, {final String? fileName}) { + final toml = TomlDocument.parse(manifest); + final package = toml.toMap()['package']; + if (package == null) { + throw ManifestException('Missing package section', fileName: fileName); + } + final name = package['name']; + if (name == null) { + throw ManifestException('Missing package name', fileName: fileName); + } + return CrateInfo(packageName: name); + } + + static CrateInfo load(String manifestDir) { + final manifestFile = File(path.join(manifestDir, 'Cargo.toml')); + final manifest = manifestFile.readAsStringSync(); + return parseManifest(manifest, fileName: manifestFile.path); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/crate_hash.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/crate_hash.dart new file mode 100644 index 000000000000..0c4d88d16b78 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/crate_hash.dart @@ -0,0 +1,124 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:convert'; +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:collection/collection.dart'; +import 'package:convert/convert.dart'; +import 'package:crypto/crypto.dart'; +import 'package:path/path.dart' as path; + +class CrateHash { + /// Computes a hash uniquely identifying crate content. This takes into account + /// content all all .rs files inside the src directory, as well as Cargo.toml, + /// Cargo.lock, build.rs and cargokit.yaml. + /// + /// If [tempStorage] is provided, computed hash is stored in a file in that directory + /// and reused on subsequent calls if the crate content hasn't changed. + static String compute(String manifestDir, {String? tempStorage}) { + return CrateHash._( + manifestDir: manifestDir, + tempStorage: tempStorage, + )._compute(); + } + + CrateHash._({ + required this.manifestDir, + required this.tempStorage, + }); + + String _compute() { + final files = getFiles(); + final tempStorage = this.tempStorage; + if (tempStorage != null) { + final quickHash = _computeQuickHash(files); + final quickHashFolder = Directory(path.join(tempStorage, 'crate_hash')); + quickHashFolder.createSync(recursive: true); + final quickHashFile = File(path.join(quickHashFolder.path, quickHash)); + if (quickHashFile.existsSync()) { + return quickHashFile.readAsStringSync(); + } + final hash = _computeHash(files); + quickHashFile.writeAsStringSync(hash); + return hash; + } else { + return _computeHash(files); + } + } + + /// Computes a quick hash based on files stat (without reading contents). This + /// is used to cache the real hash, which is slower to compute since it involves + /// reading every single file. + String _computeQuickHash(List files) { + final output = AccumulatorSink(); + final input = sha256.startChunkedConversion(output); + + final data = ByteData(8); + for (final file in files) { + input.add(utf8.encode(file.path)); + final stat = file.statSync(); + data.setUint64(0, stat.size); + input.add(data.buffer.asUint8List()); + data.setUint64(0, stat.modified.millisecondsSinceEpoch); + input.add(data.buffer.asUint8List()); + } + + input.close(); + return base64Url.encode(output.events.single.bytes); + } + + String _computeHash(List files) { + final output = AccumulatorSink(); + final input = sha256.startChunkedConversion(output); + + void addTextFile(File file) { + // text Files are hashed by lines in case we're dealing with github checkout + // that auto-converts line endings. + final splitter = LineSplitter(); + if (file.existsSync()) { + final data = file.readAsStringSync(); + final lines = splitter.convert(data); + for (final line in lines) { + input.add(utf8.encode(line)); + } + } + } + + for (final file in files) { + addTextFile(file); + } + + input.close(); + final res = output.events.single; + + // Truncate to 128bits. + final hash = res.bytes.sublist(0, 16); + return hex.encode(hash); + } + + List getFiles() { + final src = Directory(path.join(manifestDir, 'src')); + final files = src + .listSync(recursive: true, followLinks: false) + .whereType() + .toList(); + files.sortBy((element) => element.path); + void addFile(String relative) { + final file = File(path.join(manifestDir, relative)); + if (file.existsSync()) { + files.add(file); + } + } + + addFile('Cargo.toml'); + addFile('Cargo.lock'); + addFile('build.rs'); + addFile('cargokit.yaml'); + return files; + } + + final String manifestDir; + final String? tempStorage; +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/environment.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/environment.dart new file mode 100644 index 000000000000..996483a180e8 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/environment.dart @@ -0,0 +1,68 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +extension on String { + String resolveSymlink() => File(this).resolveSymbolicLinksSync(); +} + +class Environment { + /// Current build configuration (debug or release). + static String get configuration => + _getEnv("CARGOKIT_CONFIGURATION").toLowerCase(); + + static bool get isDebug => configuration == 'debug'; + static bool get isRelease => configuration == 'release'; + + /// Temporary directory where Rust build artifacts are placed. + static String get targetTempDir => _getEnv("CARGOKIT_TARGET_TEMP_DIR"); + + /// Final output directory where the build artifacts are placed. + static String get outputDir => _getEnvPath('CARGOKIT_OUTPUT_DIR'); + + /// Path to the crate manifest (containing Cargo.toml). + static String get manifestDir => _getEnvPath('CARGOKIT_MANIFEST_DIR'); + + /// Directory inside root project. Not necessarily root folder. Symlinks are + /// not resolved on purpose. + static String get rootProjectDir => _getEnv('CARGOKIT_ROOT_PROJECT_DIR'); + + // Pod + + /// Platform name (macosx, iphoneos, iphonesimulator). + static String get darwinPlatformName => + _getEnv("CARGOKIT_DARWIN_PLATFORM_NAME"); + + /// List of architectures to build for (arm64, armv7, x86_64). + static List get darwinArchs => + _getEnv("CARGOKIT_DARWIN_ARCHS").split(' '); + + // Gradle + static String get minSdkVersion => _getEnv("CARGOKIT_MIN_SDK_VERSION"); + static String get ndkVersion => _getEnv("CARGOKIT_NDK_VERSION"); + static String get sdkPath => _getEnvPath("CARGOKIT_SDK_DIR"); + static String get javaHome => _getEnvPath("CARGOKIT_JAVA_HOME"); + static List get targetPlatforms => + _getEnv("CARGOKIT_TARGET_PLATFORMS").split(','); + + // CMAKE + static String get targetPlatform => _getEnv("CARGOKIT_TARGET_PLATFORM"); + + static String _getEnv(String key) { + final res = Platform.environment[key]; + if (res == null) { + throw Exception("Missing environment variable $key"); + } + return res; + } + + static String _getEnvPath(String key) { + final res = _getEnv(key); + if (Directory(res).existsSync()) { + return res.resolveSymlink(); + } else { + return res; + } + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/logging.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/logging.dart new file mode 100644 index 000000000000..5edd4fd1848e --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/logging.dart @@ -0,0 +1,52 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:logging/logging.dart'; + +const String kSeparator = "--"; +const String kDoubleSeparator = "=="; + +bool _lastMessageWasSeparator = false; + +void _log(LogRecord rec) { + final prefix = '${rec.level.name}: '; + final out = rec.level == Level.SEVERE ? stderr : stdout; + if (rec.message == kSeparator) { + if (!_lastMessageWasSeparator) { + out.write(prefix); + out.writeln('-' * 80); + _lastMessageWasSeparator = true; + } + return; + } else if (rec.message == kDoubleSeparator) { + out.write(prefix); + out.writeln('=' * 80); + _lastMessageWasSeparator = true; + return; + } + out.write(prefix); + out.writeln(rec.message); + _lastMessageWasSeparator = false; +} + +void initLogging() { + Logger.root.level = Level.INFO; + Logger.root.onRecord.listen((LogRecord rec) { + final lines = rec.message.split('\n'); + for (final line in lines) { + if (line.isNotEmpty || lines.length == 1 || line != lines.last) { + _log(LogRecord( + rec.level, + line, + rec.loggerName, + )); + } + } + }); +} + +void enableVerboseLogging() { + Logger.root.level = Level.ALL; +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/options.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/options.dart new file mode 100644 index 000000000000..22aef1d371c8 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/options.dart @@ -0,0 +1,309 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:collection/collection.dart'; +import 'package:ed25519_edwards/ed25519_edwards.dart'; +import 'package:hex/hex.dart'; +import 'package:logging/logging.dart'; +import 'package:path/path.dart' as path; +import 'package:source_span/source_span.dart'; +import 'package:yaml/yaml.dart'; + +import 'builder.dart'; +import 'environment.dart'; +import 'rustup.dart'; + +final _log = Logger('options'); + +/// A class for exceptions that have source span information attached. +class SourceSpanException implements Exception { + // This is a getter so that subclasses can override it. + /// A message describing the exception. + String get message => _message; + final String _message; + + // This is a getter so that subclasses can override it. + /// The span associated with this exception. + /// + /// This may be `null` if the source location can't be determined. + SourceSpan? get span => _span; + final SourceSpan? _span; + + SourceSpanException(this._message, this._span); + + /// Returns a string representation of `this`. + /// + /// [color] may either be a [String], a [bool], or `null`. If it's a string, + /// it indicates an ANSI terminal color escape that should be used to + /// highlight the span's text. If it's `true`, it indicates that the text + /// should be highlighted using the default color. If it's `false` or `null`, + /// it indicates that the text shouldn't be highlighted. + @override + String toString({Object? color}) { + if (span == null) return message; + return 'Error on ${span!.message(message, color: color)}'; + } +} + +enum Toolchain { + stable, + beta, + nightly, +} + +class CargoBuildOptions { + final Toolchain toolchain; + final List flags; + + CargoBuildOptions({ + required this.toolchain, + required this.flags, + }); + + static Toolchain _toolchainFromNode(YamlNode node) { + if (node case YamlScalar(value: String name)) { + final toolchain = + Toolchain.values.firstWhereOrNull((element) => element.name == name); + if (toolchain != null) { + return toolchain; + } + } + throw SourceSpanException( + 'Unknown toolchain. Must be one of ${Toolchain.values.map((e) => e.name)}.', + node.span); + } + + static CargoBuildOptions parse(YamlNode node) { + if (node is! YamlMap) { + throw SourceSpanException('Cargo options must be a map', node.span); + } + Toolchain toolchain = Toolchain.stable; + List flags = []; + for (final MapEntry(:key, :value) in node.nodes.entries) { + if (key case YamlScalar(value: 'toolchain')) { + toolchain = _toolchainFromNode(value); + } else if (key case YamlScalar(value: 'extra_flags')) { + if (value case YamlList(nodes: List list)) { + if (list.every((element) { + if (element case YamlScalar(value: String _)) { + return true; + } + return false; + })) { + flags = list.map((e) => e.value as String).toList(); + continue; + } + } + throw SourceSpanException( + 'Extra flags must be a list of strings', value.span); + } else { + throw SourceSpanException( + 'Unknown cargo option type. Must be "toolchain" or "extra_flags".', + key.span); + } + } + return CargoBuildOptions(toolchain: toolchain, flags: flags); + } +} + +extension on YamlMap { + /// Map that extracts keys so that we can do map case check on them. + Map get valueMap => + nodes.map((key, value) => MapEntry(key.value, value)); +} + +class PrecompiledBinaries { + final String uriPrefix; + final PublicKey publicKey; + + PrecompiledBinaries({ + required this.uriPrefix, + required this.publicKey, + }); + + static PublicKey _publicKeyFromHex(String key, SourceSpan? span) { + final bytes = HEX.decode(key); + if (bytes.length != 32) { + throw SourceSpanException( + 'Invalid public key. Must be 32 bytes long.', span); + } + return PublicKey(bytes); + } + + static PrecompiledBinaries parse(YamlNode node) { + if (node case YamlMap(valueMap: Map map)) { + if (map + case { + 'url_prefix': YamlNode urlPrefixNode, + 'public_key': YamlNode publicKeyNode, + }) { + final urlPrefix = switch (urlPrefixNode) { + YamlScalar(value: String urlPrefix) => urlPrefix, + _ => throw SourceSpanException( + 'Invalid URL prefix value.', urlPrefixNode.span), + }; + final publicKey = switch (publicKeyNode) { + YamlScalar(value: String publicKey) => + _publicKeyFromHex(publicKey, publicKeyNode.span), + _ => throw SourceSpanException( + 'Invalid public key value.', publicKeyNode.span), + }; + return PrecompiledBinaries( + uriPrefix: urlPrefix, + publicKey: publicKey, + ); + } + } + throw SourceSpanException( + 'Invalid precompiled binaries value. ' + 'Expected Map with "url_prefix" and "public_key".', + node.span); + } +} + +/// Cargokit options specified for Rust crate. +class CargokitCrateOptions { + CargokitCrateOptions({ + this.cargo = const {}, + this.precompiledBinaries, + }); + + final Map cargo; + final PrecompiledBinaries? precompiledBinaries; + + static CargokitCrateOptions parse(YamlNode node) { + if (node is! YamlMap) { + throw SourceSpanException('Cargokit options must be a map', node.span); + } + final options = {}; + PrecompiledBinaries? precompiledBinaries; + + for (final entry in node.nodes.entries) { + if (entry + case MapEntry( + key: YamlScalar(value: 'cargo'), + value: YamlNode node, + )) { + if (node is! YamlMap) { + throw SourceSpanException('Cargo options must be a map', node.span); + } + for (final MapEntry(:YamlNode key, :value) in node.nodes.entries) { + if (key case YamlScalar(value: String name)) { + final configuration = BuildConfiguration.values + .firstWhereOrNull((element) => element.name == name); + if (configuration != null) { + options[configuration] = CargoBuildOptions.parse(value); + continue; + } + } + throw SourceSpanException( + 'Unknown build configuration. Must be one of ${BuildConfiguration.values.map((e) => e.name)}.', + key.span); + } + } else if (entry.key case YamlScalar(value: 'precompiled_binaries')) { + precompiledBinaries = PrecompiledBinaries.parse(entry.value); + } else { + throw SourceSpanException( + 'Unknown cargokit option type. Must be "cargo" or "precompiled_binaries".', + entry.key.span); + } + } + return CargokitCrateOptions( + cargo: options, + precompiledBinaries: precompiledBinaries, + ); + } + + static CargokitCrateOptions load({ + required String manifestDir, + }) { + final uri = Uri.file(path.join(manifestDir, "cargokit.yaml")); + final file = File.fromUri(uri); + if (file.existsSync()) { + final contents = loadYamlNode(file.readAsStringSync(), sourceUrl: uri); + return parse(contents); + } else { + return CargokitCrateOptions(); + } + } +} + +class CargokitUserOptions { + // When Rustup is installed always build locally unless user opts into + // using precompiled binaries. + static bool defaultUsePrecompiledBinaries() { + return Rustup.executablePath() == null; + } + + CargokitUserOptions({ + required this.usePrecompiledBinaries, + required this.verboseLogging, + }); + + CargokitUserOptions._() + : usePrecompiledBinaries = defaultUsePrecompiledBinaries(), + verboseLogging = false; + + static CargokitUserOptions parse(YamlNode node) { + if (node is! YamlMap) { + throw SourceSpanException('Cargokit options must be a map', node.span); + } + bool usePrecompiledBinaries = defaultUsePrecompiledBinaries(); + bool verboseLogging = false; + + for (final entry in node.nodes.entries) { + if (entry.key case YamlScalar(value: 'use_precompiled_binaries')) { + if (entry.value case YamlScalar(value: bool value)) { + usePrecompiledBinaries = value; + continue; + } + throw SourceSpanException( + 'Invalid value for "use_precompiled_binaries". Must be a boolean.', + entry.value.span); + } else if (entry.key case YamlScalar(value: 'verbose_logging')) { + if (entry.value case YamlScalar(value: bool value)) { + verboseLogging = value; + continue; + } + throw SourceSpanException( + 'Invalid value for "verbose_logging". Must be a boolean.', + entry.value.span); + } else { + throw SourceSpanException( + 'Unknown cargokit option type. Must be "use_precompiled_binaries" or "verbose_logging".', + entry.key.span); + } + } + return CargokitUserOptions( + usePrecompiledBinaries: usePrecompiledBinaries, + verboseLogging: verboseLogging, + ); + } + + static CargokitUserOptions load() { + String fileName = "cargokit_options.yaml"; + var userProjectDir = Directory(Environment.rootProjectDir); + + while (userProjectDir.parent.path != userProjectDir.path) { + final configFile = File(path.join(userProjectDir.path, fileName)); + if (configFile.existsSync()) { + final contents = loadYamlNode( + configFile.readAsStringSync(), + sourceUrl: configFile.uri, + ); + final res = parse(contents); + if (res.verboseLogging) { + _log.info('Found user options file at ${configFile.path}'); + } + return res; + } + userProjectDir = userProjectDir.parent; + } + return CargokitUserOptions._(); + } + + final bool usePrecompiledBinaries; + final bool verboseLogging; +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/precompile_binaries.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/precompile_binaries.dart new file mode 100644 index 000000000000..c27f4195dd2b --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/precompile_binaries.dart @@ -0,0 +1,202 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:ed25519_edwards/ed25519_edwards.dart'; +import 'package:github/github.dart'; +import 'package:logging/logging.dart'; +import 'package:path/path.dart' as path; + +import 'artifacts_provider.dart'; +import 'builder.dart'; +import 'cargo.dart'; +import 'crate_hash.dart'; +import 'options.dart'; +import 'rustup.dart'; +import 'target.dart'; + +final _log = Logger('precompile_binaries'); + +class PrecompileBinaries { + PrecompileBinaries({ + required this.privateKey, + required this.githubToken, + required this.repositorySlug, + required this.manifestDir, + required this.targets, + this.androidSdkLocation, + this.androidNdkVersion, + this.androidMinSdkVersion, + this.tempDir, + }); + + final PrivateKey privateKey; + final String githubToken; + final RepositorySlug repositorySlug; + final String manifestDir; + final List targets; + final String? androidSdkLocation; + final String? androidNdkVersion; + final int? androidMinSdkVersion; + final String? tempDir; + + static String fileName(Target target, String name) { + return '${target.rust}_$name'; + } + + static String signatureFileName(Target target, String name) { + return '${target.rust}_$name.sig'; + } + + Future run() async { + final crateInfo = CrateInfo.load(manifestDir); + + final targets = List.of(this.targets); + if (targets.isEmpty) { + targets.addAll([ + ...Target.buildableTargets(), + if (androidSdkLocation != null) ...Target.androidTargets(), + ]); + } + + _log.info('Precompiling binaries for $targets'); + + final hash = CrateHash.compute(manifestDir); + _log.info('Computed crate hash: $hash'); + + final String tagName = 'precompiled_$hash'; + + final github = GitHub(auth: Authentication.withToken(githubToken)); + final repo = github.repositories; + final release = await _getOrCreateRelease( + repo: repo, + tagName: tagName, + packageName: crateInfo.packageName, + hash: hash, + ); + + final tempDir = this.tempDir != null + ? Directory(this.tempDir!) + : Directory.systemTemp.createTempSync('precompiled_'); + + tempDir.createSync(recursive: true); + + final crateOptions = CargokitCrateOptions.load( + manifestDir: manifestDir, + ); + + final buildEnvironment = BuildEnvironment( + configuration: BuildConfiguration.release, + crateOptions: crateOptions, + targetTempDir: tempDir.path, + manifestDir: manifestDir, + crateInfo: crateInfo, + isAndroid: androidSdkLocation != null, + androidSdkPath: androidSdkLocation, + androidNdkVersion: androidNdkVersion, + androidMinSdkVersion: androidMinSdkVersion, + ); + + final rustup = Rustup(); + + for (final target in targets) { + final artifactNames = getArtifactNames( + target: target, + libraryName: crateInfo.packageName, + remote: true, + ); + + if (artifactNames.every((name) { + final fileName = PrecompileBinaries.fileName(target, name); + return (release.assets ?? []).any((e) => e.name == fileName); + })) { + _log.info("All artifacts for $target already exist - skipping"); + continue; + } + + _log.info('Building for $target'); + + final builder = + RustBuilder(target: target, environment: buildEnvironment); + builder.prepare(rustup); + final res = await builder.build(); + + final assets = []; + for (final name in artifactNames) { + final file = File(path.join(res, name)); + if (!file.existsSync()) { + throw Exception('Missing artifact: ${file.path}'); + } + + final data = file.readAsBytesSync(); + final create = CreateReleaseAsset( + name: PrecompileBinaries.fileName(target, name), + contentType: "application/octet-stream", + assetData: data, + ); + final signature = sign(privateKey, data); + final signatureCreate = CreateReleaseAsset( + name: signatureFileName(target, name), + contentType: "application/octet-stream", + assetData: signature, + ); + bool verified = verify(public(privateKey), data, signature); + if (!verified) { + throw Exception('Signature verification failed'); + } + assets.add(create); + assets.add(signatureCreate); + } + _log.info('Uploading assets: ${assets.map((e) => e.name)}'); + for (final asset in assets) { + // This seems to be failing on CI so do it one by one + int retryCount = 0; + while (true) { + try { + await repo.uploadReleaseAssets(release, [asset]); + break; + } on Exception catch (e) { + if (retryCount == 10) { + rethrow; + } + ++retryCount; + _log.shout( + 'Upload failed (attempt $retryCount, will retry): ${e.toString()}'); + await Future.delayed(Duration(seconds: 2)); + } + } + } + } + + _log.info('Cleaning up'); + tempDir.deleteSync(recursive: true); + } + + Future _getOrCreateRelease({ + required RepositoriesService repo, + required String tagName, + required String packageName, + required String hash, + }) async { + Release release; + try { + _log.info('Fetching release $tagName'); + release = await repo.getReleaseByTagName(repositorySlug, tagName); + } on ReleaseNotFound { + _log.info('Release not found - creating release $tagName'); + release = await repo.createRelease( + repositorySlug, + CreateRelease.from( + tagName: tagName, + name: 'Precompiled binaries ${hash.substring(0, 8)}', + targetCommitish: null, + isDraft: false, + isPrerelease: false, + body: 'Precompiled binaries for crate $packageName, ' + 'crate hash $hash.', + )); + } + return release; + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/rustup.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/rustup.dart new file mode 100644 index 000000000000..0ac8d08616bc --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/rustup.dart @@ -0,0 +1,136 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:collection/collection.dart'; +import 'package:path/path.dart' as path; + +import 'util.dart'; + +class _Toolchain { + _Toolchain( + this.name, + this.targets, + ); + + final String name; + final List targets; +} + +class Rustup { + List? installedTargets(String toolchain) { + final targets = _installedTargets(toolchain); + return targets != null ? List.unmodifiable(targets) : null; + } + + void installToolchain(String toolchain) { + log.info("Installing Rust toolchain: $toolchain"); + runCommand("rustup", ['toolchain', 'install', toolchain]); + _installedToolchains + .add(_Toolchain(toolchain, _getInstalledTargets(toolchain))); + } + + void installTarget( + String target, { + required String toolchain, + }) { + log.info("Installing Rust target: $target"); + runCommand("rustup", [ + 'target', + 'add', + '--toolchain', + toolchain, + target, + ]); + _installedTargets(toolchain)?.add(target); + } + + final List<_Toolchain> _installedToolchains; + + Rustup() : _installedToolchains = _getInstalledToolchains(); + + List? _installedTargets(String toolchain) => _installedToolchains + .firstWhereOrNull( + (e) => e.name == toolchain || e.name.startsWith('$toolchain-')) + ?.targets; + + static List<_Toolchain> _getInstalledToolchains() { + String extractToolchainName(String line) { + // ignore (default) after toolchain name + final parts = line.split(' '); + return parts[0]; + } + + final res = runCommand("rustup", ['toolchain', 'list']); + + // To list all non-custom toolchains, we need to filter out lines that + // don't start with "stable", "beta", or "nightly". + Pattern nonCustom = RegExp(r"^(stable|beta|nightly)"); + final lines = res.stdout + .toString() + .split('\n') + .where((e) => e.isNotEmpty && e.startsWith(nonCustom)) + .map(extractToolchainName) + .toList(growable: true); + + return lines + .map( + (name) => _Toolchain( + name, + _getInstalledTargets(name), + ), + ) + .toList(growable: true); + } + + static List _getInstalledTargets(String toolchain) { + final res = runCommand("rustup", [ + 'target', + 'list', + '--toolchain', + toolchain, + '--installed', + ]); + final lines = res.stdout + .toString() + .split('\n') + .where((e) => e.isNotEmpty) + .toList(growable: true); + return lines; + } + + bool _didInstallRustSrcForNightly = false; + + void installRustSrcForNightly() { + if (_didInstallRustSrcForNightly) { + return; + } + // Useful for -Z build-std + runCommand( + "rustup", + ['component', 'add', 'rust-src', '--toolchain', 'nightly'], + ); + _didInstallRustSrcForNightly = true; + } + + static String? executablePath() { + final envPath = Platform.environment['PATH']; + final envPathSeparator = Platform.isWindows ? ';' : ':'; + final home = Platform.isWindows + ? Platform.environment['USERPROFILE'] + : Platform.environment['HOME']; + final paths = [ + if (home != null) path.join(home, '.cargo', 'bin'), + if (envPath != null) ...envPath.split(envPathSeparator), + ]; + for (final p in paths) { + final rustup = Platform.isWindows ? 'rustup.exe' : 'rustup'; + final rustupPath = path.join(p, rustup); + if (File(rustupPath).existsSync()) { + return rustupPath; + } + } + return null; + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/target.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/target.dart new file mode 100644 index 000000000000..6fbc58b64fb3 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/target.dart @@ -0,0 +1,140 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:collection/collection.dart'; + +import 'util.dart'; + +class Target { + Target({ + required this.rust, + this.flutter, + this.android, + this.androidMinSdkVersion, + this.darwinPlatform, + this.darwinArch, + }); + + static final all = [ + Target( + rust: 'armv7-linux-androideabi', + flutter: 'android-arm', + android: 'armeabi-v7a', + androidMinSdkVersion: 16, + ), + Target( + rust: 'aarch64-linux-android', + flutter: 'android-arm64', + android: 'arm64-v8a', + androidMinSdkVersion: 21, + ), + Target( + rust: 'i686-linux-android', + flutter: 'android-x86', + android: 'x86', + androidMinSdkVersion: 16, + ), + Target( + rust: 'x86_64-linux-android', + flutter: 'android-x64', + android: 'x86_64', + androidMinSdkVersion: 21, + ), + Target( + rust: 'x86_64-pc-windows-msvc', + flutter: 'windows-x64', + ), + Target( + rust: 'x86_64-unknown-linux-gnu', + flutter: 'linux-x64', + ), + Target( + rust: 'aarch64-unknown-linux-gnu', + flutter: 'linux-arm64', + ), + Target( + rust: 'x86_64-apple-darwin', + darwinPlatform: 'macosx', + darwinArch: 'x86_64', + ), + Target( + rust: 'aarch64-apple-darwin', + darwinPlatform: 'macosx', + darwinArch: 'arm64', + ), + Target( + rust: 'aarch64-apple-ios', + darwinPlatform: 'iphoneos', + darwinArch: 'arm64', + ), + Target( + rust: 'aarch64-apple-ios-sim', + darwinPlatform: 'iphonesimulator', + darwinArch: 'arm64', + ), + Target( + rust: 'x86_64-apple-ios', + darwinPlatform: 'iphonesimulator', + darwinArch: 'x86_64', + ), + ]; + + static Target? forFlutterName(String flutterName) { + return all.firstWhereOrNull((element) => element.flutter == flutterName); + } + + static Target? forDarwin({ + required String platformName, + required String darwinAarch, + }) { + return all.firstWhereOrNull((element) => // + element.darwinPlatform == platformName && + element.darwinArch == darwinAarch); + } + + static Target? forRustTriple(String triple) { + return all.firstWhereOrNull((element) => element.rust == triple); + } + + static List androidTargets() { + return all + .where((element) => element.android != null) + .toList(growable: false); + } + + /// Returns buildable targets on current host platform ignoring Android targets. + static List buildableTargets() { + if (Platform.isLinux) { + // Right now we don't support cross-compiling on Linux. So we just return + // the host target. + final arch = runCommand('arch', []).stdout as String; + if (arch.trim() == 'aarch64') { + return [Target.forRustTriple('aarch64-unknown-linux-gnu')!]; + } else { + return [Target.forRustTriple('x86_64-unknown-linux-gnu')!]; + } + } + return all.where((target) { + if (Platform.isWindows) { + return target.rust.contains('-windows-'); + } else if (Platform.isMacOS) { + return target.darwinPlatform != null; + } + return false; + }).toList(growable: false); + } + + @override + String toString() { + return rust; + } + + final String? flutter; + final String rust; + final String? android; + final int? androidMinSdkVersion; + final String? darwinPlatform; + final String? darwinArch; +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/util.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/util.dart new file mode 100644 index 000000000000..8bb6a8724fbf --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/util.dart @@ -0,0 +1,172 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:convert'; +import 'dart:io'; + +import 'package:logging/logging.dart'; +import 'package:path/path.dart' as path; + +import 'logging.dart'; +import 'rustup.dart'; + +final log = Logger("process"); + +class CommandFailedException implements Exception { + final String executable; + final List arguments; + final ProcessResult result; + + CommandFailedException({ + required this.executable, + required this.arguments, + required this.result, + }); + + @override + String toString() { + final stdout = result.stdout.toString().trim(); + final stderr = result.stderr.toString().trim(); + return [ + "External Command: $executable ${arguments.map((e) => '"$e"').join(' ')}", + "Returned Exit Code: ${result.exitCode}", + kSeparator, + "STDOUT:", + if (stdout.isNotEmpty) stdout, + kSeparator, + "STDERR:", + if (stderr.isNotEmpty) stderr, + ].join('\n'); + } +} + +class TestRunCommandArgs { + final String executable; + final List arguments; + final String? workingDirectory; + final Map? environment; + final bool includeParentEnvironment; + final bool runInShell; + final Encoding? stdoutEncoding; + final Encoding? stderrEncoding; + + TestRunCommandArgs({ + required this.executable, + required this.arguments, + this.workingDirectory, + this.environment, + this.includeParentEnvironment = true, + this.runInShell = false, + this.stdoutEncoding, + this.stderrEncoding, + }); +} + +class TestRunCommandResult { + TestRunCommandResult({ + this.pid = 1, + this.exitCode = 0, + this.stdout = '', + this.stderr = '', + }); + + final int pid; + final int exitCode; + final String stdout; + final String stderr; +} + +TestRunCommandResult Function(TestRunCommandArgs args)? testRunCommandOverride; + +ProcessResult runCommand( + String executable, + List arguments, { + String? workingDirectory, + Map? environment, + bool includeParentEnvironment = true, + bool runInShell = false, + Encoding? stdoutEncoding = systemEncoding, + Encoding? stderrEncoding = systemEncoding, +}) { + if (testRunCommandOverride != null) { + final result = testRunCommandOverride!(TestRunCommandArgs( + executable: executable, + arguments: arguments, + workingDirectory: workingDirectory, + environment: environment, + includeParentEnvironment: includeParentEnvironment, + runInShell: runInShell, + stdoutEncoding: stdoutEncoding, + stderrEncoding: stderrEncoding, + )); + return ProcessResult( + result.pid, + result.exitCode, + result.stdout, + result.stderr, + ); + } + log.finer('Running command $executable ${arguments.join(' ')}'); + final res = Process.runSync( + _resolveExecutable(executable), + arguments, + workingDirectory: workingDirectory, + environment: environment, + includeParentEnvironment: includeParentEnvironment, + runInShell: runInShell, + stderrEncoding: stderrEncoding, + stdoutEncoding: stdoutEncoding, + ); + if (res.exitCode != 0) { + throw CommandFailedException( + executable: executable, + arguments: arguments, + result: res, + ); + } else { + return res; + } +} + +class RustupNotFoundException implements Exception { + @override + String toString() { + return [ + ' ', + 'rustup not found in PATH.', + ' ', + 'Maybe you need to install Rust? It only takes a minute:', + ' ', + if (Platform.isWindows) 'https://www.rust-lang.org/tools/install', + if (hasHomebrewRustInPath()) ...[ + '\$ brew unlink rust # Unlink homebrew Rust from PATH', + ], + if (!Platform.isWindows) + "\$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh", + ' ', + ].join('\n'); + } + + static bool hasHomebrewRustInPath() { + if (!Platform.isMacOS) { + return false; + } + final envPath = Platform.environment['PATH'] ?? ''; + final paths = envPath.split(':'); + return paths.any((p) { + return p.contains('homebrew') && File(path.join(p, 'rustc')).existsSync(); + }); + } +} + +String _resolveExecutable(String executable) { + if (executable == 'rustup') { + final resolved = Rustup.executablePath(); + if (resolved != null) { + return resolved; + } + throw RustupNotFoundException(); + } else { + return executable; + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/verify_binaries.dart b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/verify_binaries.dart new file mode 100644 index 000000000000..2366b57bfd89 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/lib/src/verify_binaries.dart @@ -0,0 +1,84 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import 'dart:io'; + +import 'package:ed25519_edwards/ed25519_edwards.dart'; +import 'package:http/http.dart'; + +import 'artifacts_provider.dart'; +import 'cargo.dart'; +import 'crate_hash.dart'; +import 'options.dart'; +import 'precompile_binaries.dart'; +import 'target.dart'; + +class VerifyBinaries { + VerifyBinaries({ + required this.manifestDir, + }); + + final String manifestDir; + + Future run() async { + final crateInfo = CrateInfo.load(manifestDir); + + final config = CargokitCrateOptions.load(manifestDir: manifestDir); + final precompiledBinaries = config.precompiledBinaries; + if (precompiledBinaries == null) { + stdout.writeln('Crate does not support precompiled binaries.'); + } else { + final crateHash = CrateHash.compute(manifestDir); + stdout.writeln('Crate hash: $crateHash'); + + for (final target in Target.all) { + final message = 'Checking ${target.rust}...'; + stdout.write(message.padRight(40)); + stdout.flush(); + + final artifacts = getArtifactNames( + target: target, + libraryName: crateInfo.packageName, + remote: true, + ); + + final prefix = precompiledBinaries.uriPrefix; + + bool ok = true; + + for (final artifact in artifacts) { + final fileName = PrecompileBinaries.fileName(target, artifact); + final signatureFileName = + PrecompileBinaries.signatureFileName(target, artifact); + + final url = Uri.parse('$prefix$crateHash/$fileName'); + final signatureUrl = + Uri.parse('$prefix$crateHash/$signatureFileName'); + + final signature = await get(signatureUrl); + if (signature.statusCode != 200) { + stdout.writeln('MISSING'); + ok = false; + break; + } + final asset = await get(url); + if (asset.statusCode != 200) { + stdout.writeln('MISSING'); + ok = false; + break; + } + + if (!verify(precompiledBinaries.publicKey, asset.bodyBytes, + signature.bodyBytes)) { + stdout.writeln('INVALID SIGNATURE'); + ok = false; + } + } + + if (ok) { + stdout.writeln('OK'); + } + } + } + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/pubspec.lock b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/pubspec.lock new file mode 100644 index 000000000000..343bdd36949b --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/pubspec.lock @@ -0,0 +1,453 @@ +# Generated by pub +# See https://dart.dev/tools/pub/glossary#lockfile +packages: + _fe_analyzer_shared: + dependency: transitive + description: + name: _fe_analyzer_shared + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" + source: hosted + version: "64.0.0" + adaptive_number: + dependency: transitive + description: + name: adaptive_number + sha256: "3a567544e9b5c9c803006f51140ad544aedc79604fd4f3f2c1380003f97c1d77" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + analyzer: + dependency: transitive + description: + name: analyzer + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" + source: hosted + version: "6.2.0" + args: + dependency: "direct main" + description: + name: args + sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 + url: "https://pub.dev" + source: hosted + version: "2.4.2" + async: + dependency: transitive + description: + name: async + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" + source: hosted + version: "2.11.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + collection: + dependency: "direct main" + description: + name: collection + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" + source: hosted + version: "1.18.0" + convert: + dependency: "direct main" + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" + source: hosted + version: "3.1.1" + coverage: + dependency: transitive + description: + name: coverage + sha256: "2fb815080e44a09b85e0f2ca8a820b15053982b2e714b59267719e8a9ff17097" + url: "https://pub.dev" + source: hosted + version: "1.6.3" + crypto: + dependency: "direct main" + description: + name: crypto + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" + source: hosted + version: "3.0.3" + ed25519_edwards: + dependency: "direct main" + description: + name: ed25519_edwards + sha256: "6ce0112d131327ec6d42beede1e5dfd526069b18ad45dcf654f15074ad9276cd" + url: "https://pub.dev" + source: hosted + version: "0.3.1" + file: + dependency: transitive + description: + name: file + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" + source: hosted + version: "6.1.4" + fixnum: + dependency: transitive + description: + name: fixnum + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + frontend_server_client: + dependency: transitive + description: + name: frontend_server_client + sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" + url: "https://pub.dev" + source: hosted + version: "3.2.0" + github: + dependency: "direct main" + description: + name: github + sha256: "9966bc13bf612342e916b0a343e95e5f046c88f602a14476440e9b75d2295411" + url: "https://pub.dev" + source: hosted + version: "9.17.0" + glob: + dependency: transitive + description: + name: glob + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" + source: hosted + version: "2.1.2" + hex: + dependency: "direct main" + description: + name: hex + sha256: "4e7cd54e4b59ba026432a6be2dd9d96e4c5205725194997193bf871703b82c4a" + url: "https://pub.dev" + source: hosted + version: "0.2.0" + http: + dependency: "direct main" + description: + name: http + sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" + source: hosted + version: "3.2.1" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" + source: hosted + version: "4.0.2" + io: + dependency: transitive + description: + name: io + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + js: + dependency: transitive + description: + name: js + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" + source: hosted + version: "0.6.7" + json_annotation: + dependency: transitive + description: + name: json_annotation + sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 + url: "https://pub.dev" + source: hosted + version: "4.8.1" + lints: + dependency: "direct dev" + description: + name: lints + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + logging: + dependency: "direct main" + description: + name: logging + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + matcher: + dependency: transitive + description: + name: matcher + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" + source: hosted + version: "0.12.16" + meta: + dependency: transitive + description: + name: meta + sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + url: "https://pub.dev" + source: hosted + version: "1.9.1" + mime: + dependency: transitive + description: + name: mime + sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e + url: "https://pub.dev" + source: hosted + version: "1.0.4" + node_preamble: + dependency: transitive + description: + name: node_preamble + sha256: "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db" + url: "https://pub.dev" + source: hosted + version: "2.0.2" + package_config: + dependency: transitive + description: + name: package_config + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" + source: hosted + version: "2.1.0" + path: + dependency: "direct main" + description: + name: path + sha256: "2ad4cddff7f5cc0e2d13069f2a3f7a73ca18f66abd6f5ecf215219cdb3638edb" + url: "https://pub.dev" + source: hosted + version: "1.8.0" + petitparser: + dependency: transitive + description: + name: petitparser + sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 + url: "https://pub.dev" + source: hosted + version: "5.4.0" + pool: + dependency: transitive + description: + name: pool + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" + source: hosted + version: "1.5.1" + pub_semver: + dependency: transitive + description: + name: pub_semver + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" + source: hosted + version: "2.1.4" + shelf: + dependency: transitive + description: + name: shelf + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" + source: hosted + version: "1.4.1" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + sha256: "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e" + url: "https://pub.dev" + source: hosted + version: "3.0.2" + shelf_static: + dependency: transitive + description: + name: shelf_static + sha256: a41d3f53c4adf0f57480578c1d61d90342cd617de7fc8077b1304643c2d85c1e + url: "https://pub.dev" + source: hosted + version: "1.1.2" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" + source: hosted + version: "1.0.4" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + sha256: "84cf769ad83aa6bb61e0aa5a18e53aea683395f196a6f39c4c881fb90ed4f7ae" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + source_maps: + dependency: transitive + description: + name: source_maps + sha256: "708b3f6b97248e5781f493b765c3337db11c5d2c81c3094f10904bfa8004c703" + url: "https://pub.dev" + source: hosted + version: "0.10.12" + source_span: + dependency: "direct main" + description: + name: source_span + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" + source: hosted + version: "1.10.0" + stack_trace: + dependency: transitive + description: + name: stack_trace + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" + source: hosted + version: "1.11.1" + stream_channel: + dependency: transitive + description: + name: stream_channel + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" + source: hosted + version: "2.1.2" + string_scanner: + dependency: transitive + description: + name: string_scanner + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + term_glyph: + dependency: transitive + description: + name: term_glyph + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" + source: hosted + version: "1.2.1" + test: + dependency: "direct dev" + description: + name: test + sha256: "9b0dd8e36af4a5b1569029949d50a52cb2a2a2fdaa20cebb96e6603b9ae241f9" + url: "https://pub.dev" + source: hosted + version: "1.24.6" + test_api: + dependency: transitive + description: + name: test_api + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" + source: hosted + version: "0.6.1" + test_core: + dependency: transitive + description: + name: test_core + sha256: "4bef837e56375537055fdbbbf6dd458b1859881f4c7e6da936158f77d61ab265" + url: "https://pub.dev" + source: hosted + version: "0.5.6" + toml: + dependency: "direct main" + description: + name: toml + sha256: "157c5dca5160fced243f3ce984117f729c788bb5e475504f3dbcda881accee44" + url: "https://pub.dev" + source: hosted + version: "0.14.0" + typed_data: + dependency: transitive + description: + name: typed_data + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" + source: hosted + version: "1.3.2" + version: + dependency: "direct main" + description: + name: version + sha256: "2307e23a45b43f96469eeab946208ed63293e8afca9c28cd8b5241ff31c55f55" + url: "https://pub.dev" + source: hosted + version: "3.0.0" + vm_service: + dependency: transitive + description: + name: vm_service + sha256: "0fae432c85c4ea880b33b497d32824b97795b04cdaa74d270219572a1f50268d" + url: "https://pub.dev" + source: hosted + version: "11.9.0" + watcher: + dependency: transitive + description: + name: watcher + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" + source: hosted + version: "1.1.0" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" + source: hosted + version: "2.4.0" + webkit_inspection_protocol: + dependency: transitive + description: + name: webkit_inspection_protocol + sha256: "67d3a8b6c79e1987d19d848b0892e582dbb0c66c57cc1fef58a177dd2aa2823d" + url: "https://pub.dev" + source: hosted + version: "1.2.0" + yaml: + dependency: "direct main" + description: + name: yaml + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" + source: hosted + version: "3.1.2" +sdks: + dart: ">=3.0.0 <4.0.0" diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/pubspec.yaml new file mode 100644 index 000000000000..18c61e3386a6 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/build_tool/pubspec.yaml @@ -0,0 +1,33 @@ +# This is copied from Cargokit (which is the official way to use it currently) +# Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +name: build_tool +description: Cargokit build_tool. Facilitates the build of Rust crate during Flutter application build. +publish_to: none +version: 1.0.0 + +environment: + sdk: ">=3.0.0 <4.0.0" + +# Add regular dependencies here. +dependencies: + # these are pinned on purpose because the bundle_tool_runner doesn't have + # pubspec.lock. See run_build_tool.sh + logging: 1.2.0 + path: 1.8.0 + version: 3.0.0 + collection: 1.18.0 + ed25519_edwards: 0.3.1 + hex: 0.2.0 + yaml: 3.1.2 + source_span: 1.10.0 + github: 9.17.0 + args: 2.4.2 + crypto: 3.0.3 + convert: 3.1.1 + http: 1.1.0 + toml: 0.14.0 + +dev_dependencies: + lints: ^2.1.0 + test: ^1.24.0 diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/cmake/cargokit.cmake b/catalyst_voices/packages/libs/catalyst_compression/cargokit/cmake/cargokit.cmake new file mode 100644 index 000000000000..ddd05df9b4f4 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/cmake/cargokit.cmake @@ -0,0 +1,99 @@ +SET(cargokit_cmake_root "${CMAKE_CURRENT_LIST_DIR}/..") + +# Workaround for https://github.com/dart-lang/pub/issues/4010 +get_filename_component(cargokit_cmake_root "${cargokit_cmake_root}" REALPATH) + +if(WIN32) + # REALPATH does not properly resolve symlinks on windows :-/ + execute_process(COMMAND powershell -ExecutionPolicy Bypass -File "${CMAKE_CURRENT_LIST_DIR}/resolve_symlinks.ps1" "${cargokit_cmake_root}" OUTPUT_VARIABLE cargokit_cmake_root OUTPUT_STRIP_TRAILING_WHITESPACE) +endif() + +# Arguments +# - target: CMAKE target to which rust library is linked +# - manifest_dir: relative path from current folder to directory containing cargo manifest +# - lib_name: cargo package name +# - any_symbol_name: name of any exported symbol from the library. +# used on windows to force linking with library. +function(apply_cargokit target manifest_dir lib_name any_symbol_name) + + set(CARGOKIT_LIB_NAME "${lib_name}") + set(CARGOKIT_LIB_FULL_NAME "${CMAKE_SHARED_MODULE_PREFIX}${CARGOKIT_LIB_NAME}${CMAKE_SHARED_MODULE_SUFFIX}") + if (CMAKE_CONFIGURATION_TYPES) + set(CARGOKIT_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/$") + set(OUTPUT_LIB "${CMAKE_CURRENT_BINARY_DIR}/$/${CARGOKIT_LIB_FULL_NAME}") + else() + set(CARGOKIT_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}") + set(OUTPUT_LIB "${CMAKE_CURRENT_BINARY_DIR}/${CARGOKIT_LIB_FULL_NAME}") + endif() + set(CARGOKIT_TEMP_DIR "${CMAKE_CURRENT_BINARY_DIR}/cargokit_build") + + if (FLUTTER_TARGET_PLATFORM) + set(CARGOKIT_TARGET_PLATFORM "${FLUTTER_TARGET_PLATFORM}") + else() + set(CARGOKIT_TARGET_PLATFORM "windows-x64") + endif() + + set(CARGOKIT_ENV + "CARGOKIT_CMAKE=${CMAKE_COMMAND}" + "CARGOKIT_CONFIGURATION=$" + "CARGOKIT_MANIFEST_DIR=${CMAKE_CURRENT_SOURCE_DIR}/${manifest_dir}" + "CARGOKIT_TARGET_TEMP_DIR=${CARGOKIT_TEMP_DIR}" + "CARGOKIT_OUTPUT_DIR=${CARGOKIT_OUTPUT_DIR}" + "CARGOKIT_TARGET_PLATFORM=${CARGOKIT_TARGET_PLATFORM}" + "CARGOKIT_TOOL_TEMP_DIR=${CARGOKIT_TEMP_DIR}/tool" + "CARGOKIT_ROOT_PROJECT_DIR=${CMAKE_SOURCE_DIR}" + ) + + if (WIN32) + set(SCRIPT_EXTENSION ".cmd") + set(IMPORT_LIB_EXTENSION ".lib") + else() + set(SCRIPT_EXTENSION ".sh") + set(IMPORT_LIB_EXTENSION "") + execute_process(COMMAND chmod +x "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}") + endif() + + # Using generators in custom command is only supported in CMake 3.20+ + if (CMAKE_CONFIGURATION_TYPES AND ${CMAKE_VERSION} VERSION_LESS "3.20.0") + foreach(CONFIG IN LISTS CMAKE_CONFIGURATION_TYPES) + add_custom_command( + OUTPUT + "${CMAKE_CURRENT_BINARY_DIR}/${CONFIG}/${CARGOKIT_LIB_FULL_NAME}" + "${CMAKE_CURRENT_BINARY_DIR}/_phony_" + COMMAND ${CMAKE_COMMAND} -E env ${CARGOKIT_ENV} + "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}" build-cmake + VERBATIM + ) + endforeach() + else() + add_custom_command( + OUTPUT + ${OUTPUT_LIB} + "${CMAKE_CURRENT_BINARY_DIR}/_phony_" + COMMAND ${CMAKE_COMMAND} -E env ${CARGOKIT_ENV} + "${cargokit_cmake_root}/run_build_tool${SCRIPT_EXTENSION}" build-cmake + VERBATIM + ) + endif() + + + set_source_files_properties("${CMAKE_CURRENT_BINARY_DIR}/_phony_" PROPERTIES SYMBOLIC TRUE) + + if (TARGET ${target}) + # If we have actual cmake target provided create target and make existing + # target depend on it + add_custom_target("${target}_cargokit" DEPENDS ${OUTPUT_LIB}) + add_dependencies("${target}" "${target}_cargokit") + target_link_libraries("${target}" PRIVATE "${OUTPUT_LIB}${IMPORT_LIB_EXTENSION}") + if(WIN32) + target_link_options(${target} PRIVATE "/INCLUDE:${any_symbol_name}") + endif() + else() + # Otherwise (FFI) just use ALL to force building always + add_custom_target("${target}_cargokit" ALL DEPENDS ${OUTPUT_LIB}) + endif() + + # Allow adding the output library to plugin bundled libraries + set("${target}_cargokit_lib" ${OUTPUT_LIB} PARENT_SCOPE) + +endfunction() diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/cmake/resolve_symlinks.ps1 b/catalyst_voices/packages/libs/catalyst_compression/cargokit/cmake/resolve_symlinks.ps1 new file mode 100644 index 000000000000..2ac593a1ff0a --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/cmake/resolve_symlinks.ps1 @@ -0,0 +1,34 @@ +function Resolve-Symlinks { + [CmdletBinding()] + [OutputType([string])] + param( + [Parameter(Position = 0, Mandatory, ValueFromPipeline, ValueFromPipelineByPropertyName)] + [string] $Path + ) + + [string] $separator = '/' + [string[]] $parts = $Path.Split($separator) + + [string] $realPath = '' + foreach ($part in $parts) { + if ($realPath -and !$realPath.EndsWith($separator)) { + $realPath += $separator + } + + $realPath += $part.Replace('\', '/') + + # The slash is important when using Get-Item on Drive letters in pwsh. + if (-not($realPath.Contains($separator)) -and $realPath.EndsWith(':')) { + $realPath += '/' + } + + $item = Get-Item $realPath + if ($item.LinkTarget) { + $realPath = $item.LinkTarget.Replace('\', '/') + } + } + $realPath +} + +$path = Resolve-Symlinks -Path $args[0] +Write-Host $path diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/gradle/plugin.gradle b/catalyst_voices/packages/libs/catalyst_compression/cargokit/gradle/plugin.gradle new file mode 100644 index 000000000000..4af35ee052e7 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/gradle/plugin.gradle @@ -0,0 +1,179 @@ +/// This is copied from Cargokit (which is the official way to use it currently) +/// Details: https://fzyzcjy.github.io/flutter_rust_bridge/manual/integrate/builtin + +import java.nio.file.Paths +import org.apache.tools.ant.taskdefs.condition.Os + +CargoKitPlugin.file = buildscript.sourceFile + +apply plugin: CargoKitPlugin + +class CargoKitExtension { + String manifestDir; // Relative path to folder containing Cargo.toml + String libname; // Library name within Cargo.toml. Must be a cdylib +} + +abstract class CargoKitBuildTask extends DefaultTask { + + @Input + String buildMode + + @Input + String buildDir + + @Input + String outputDir + + @Input + String ndkVersion + + @Input + String sdkDirectory + + @Input + int compileSdkVersion; + + @Input + int minSdkVersion; + + @Input + String pluginFile + + @Input + List targetPlatforms + + @TaskAction + def build() { + if (project.cargokit.manifestDir == null) { + throw new GradleException("Property 'manifestDir' must be set on cargokit extension"); + } + + if (project.cargokit.libname == null) { + throw new GradleException("Property 'libname' must be set on cargokit extension"); + } + + def executableName = Os.isFamily(Os.FAMILY_WINDOWS) ? "run_build_tool.cmd" : "run_build_tool.sh" + def path = Paths.get(new File(pluginFile).parent, "..", executableName); + + def manifestDir = Paths.get(project.buildscript.sourceFile.parent, project.cargokit.manifestDir) + + def rootProjectDir = project.rootProject.projectDir + + if (!Os.isFamily(Os.FAMILY_WINDOWS)) { + project.exec { + commandLine 'chmod', '+x', path + } + } + + project.exec { + executable path + args "build-gradle" + environment "CARGOKIT_ROOT_PROJECT_DIR", rootProjectDir + environment "CARGOKIT_TOOL_TEMP_DIR", "${buildDir}/build_tool" + environment "CARGOKIT_MANIFEST_DIR", manifestDir + environment "CARGOKIT_CONFIGURATION", buildMode + environment "CARGOKIT_TARGET_TEMP_DIR", buildDir + environment "CARGOKIT_OUTPUT_DIR", outputDir + environment "CARGOKIT_NDK_VERSION", ndkVersion + environment "CARGOKIT_SDK_DIR", sdkDirectory + environment "CARGOKIT_COMPILE_SDK_VERSION", compileSdkVersion + environment "CARGOKIT_MIN_SDK_VERSION", minSdkVersion + environment "CARGOKIT_TARGET_PLATFORMS", targetPlatforms.join(",") + environment "CARGOKIT_JAVA_HOME", System.properties['java.home'] + } + } +} + +class CargoKitPlugin implements Plugin { + + static String file; + + private Plugin findFlutterPlugin(Project rootProject) { + _findFlutterPlugin(rootProject.childProjects) + } + + private Plugin _findFlutterPlugin(Map projects) { + for (project in projects) { + for (plugin in project.value.getPlugins()) { + if (plugin.class.name == "com.flutter.gradle.FlutterPlugin") { + return plugin; + } + } + def plugin = _findFlutterPlugin(project.value.childProjects); + if (plugin != null) { + return plugin; + } + } + return null; + } + + @Override + void apply(Project project) { + def plugin = findFlutterPlugin(project.rootProject); + + project.extensions.create("cargokit", CargoKitExtension) + + if (plugin == null) { + print("Flutter plugin not found, CargoKit plugin will not be applied.") + return; + } + + def cargoBuildDir = "${project.buildDir}/build" + + // Determine if the project is an application or library + def isApplication = plugin.project.plugins.hasPlugin('com.android.application') + def variants = isApplication ? plugin.project.android.applicationVariants : plugin.project.android.libraryVariants + + variants.all { variant -> + + final buildType = variant.buildType.name + + def cargoOutputDir = "${project.buildDir}/jniLibs/${buildType}"; + def jniLibs = project.android.sourceSets.maybeCreate(buildType).jniLibs; + jniLibs.srcDir(new File(cargoOutputDir)) + + def platforms = com.flutter.gradle.FlutterPluginUtils.getTargetPlatforms(project).collect() + + // Same thing addFlutterDependencies does in flutter.gradle + if (buildType == "debug") { + platforms.add("android-x86") + platforms.add("android-x64") + } + + // The task name depends on plugin properties, which are not available + // at this point + project.getGradle().afterProject { + def taskName = "cargokitCargoBuild${project.cargokit.libname.capitalize()}${buildType.capitalize()}"; + + if (project.tasks.findByName(taskName)) { + return + } + + if (plugin.project.android.ndkVersion == null) { + throw new GradleException("Please set 'android.ndkVersion' in 'app/build.gradle'.") + } + + def task = project.tasks.create(taskName, CargoKitBuildTask.class) { + buildMode = variant.buildType.name + buildDir = cargoBuildDir + outputDir = cargoOutputDir + ndkVersion = plugin.project.android.ndkVersion + sdkDirectory = plugin.project.android.sdkDirectory + minSdkVersion = plugin.project.android.defaultConfig.minSdkVersion.apiLevel as int + compileSdkVersion = plugin.project.android.compileSdkVersion.substring(8) as int + targetPlatforms = platforms + pluginFile = CargoKitPlugin.file + } + def onTask = { newTask -> + if (newTask.name == "merge${buildType.capitalize()}NativeLibs") { + newTask.dependsOn task + // Fix gradle 7.4.2 not picking up JNI library changes + newTask.outputs.upToDateWhen { false } + } + } + project.tasks.each onTask + project.tasks.whenTaskAdded onTask + } + } + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/run_build_tool.cmd b/catalyst_voices/packages/libs/catalyst_compression/cargokit/run_build_tool.cmd new file mode 100755 index 000000000000..c45d0aa8b531 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/run_build_tool.cmd @@ -0,0 +1,91 @@ +@echo off +setlocal + +setlocal ENABLEDELAYEDEXPANSION + +SET BASEDIR=%~dp0 + +if not exist "%CARGOKIT_TOOL_TEMP_DIR%" ( + mkdir "%CARGOKIT_TOOL_TEMP_DIR%" +) +cd /D "%CARGOKIT_TOOL_TEMP_DIR%" + +SET BUILD_TOOL_PKG_DIR=%BASEDIR%build_tool +SET DART=%FLUTTER_ROOT%\bin\cache\dart-sdk\bin\dart + +set BUILD_TOOL_PKG_DIR_POSIX=%BUILD_TOOL_PKG_DIR:\=/% + +( + echo name: build_tool_runner + echo version: 1.0.0 + echo publish_to: none + echo. + echo environment: + echo sdk: '^>=3.0.0 ^<4.0.0' + echo. + echo dependencies: + echo build_tool: + echo path: %BUILD_TOOL_PKG_DIR_POSIX% +) >pubspec.yaml + +if not exist bin ( + mkdir bin +) + +( + echo import 'package:build_tool/build_tool.dart' as build_tool; + echo void main^(List^ args^) ^{ + echo build_tool.runMain^(args^); + echo ^} +) >bin\build_tool_runner.dart + +SET PRECOMPILED=bin\build_tool_runner.dill + +REM To detect changes in package we compare output of DIR /s (recursive) +set PREV_PACKAGE_INFO=.dart_tool\package_info.prev +set CUR_PACKAGE_INFO=.dart_tool\package_info.cur + +DIR "%BUILD_TOOL_PKG_DIR%" /s > "%CUR_PACKAGE_INFO%_orig" + +REM Last line in dir output is free space on harddrive. That is bound to +REM change between invocation so we need to remove it +( + Set "Line=" + For /F "UseBackQ Delims=" %%A In ("%CUR_PACKAGE_INFO%_orig") Do ( + SetLocal EnableDelayedExpansion + If Defined Line Echo !Line! + EndLocal + Set "Line=%%A") +) >"%CUR_PACKAGE_INFO%" +DEL "%CUR_PACKAGE_INFO%_orig" + +REM Compare current directory listing with previous +FC /B "%CUR_PACKAGE_INFO%" "%PREV_PACKAGE_INFO%" > nul 2>&1 + +If %ERRORLEVEL% neq 0 ( + REM Changed - copy current to previous and remove precompiled kernel + if exist "%PREV_PACKAGE_INFO%" ( + DEL "%PREV_PACKAGE_INFO%" + ) + MOVE /Y "%CUR_PACKAGE_INFO%" "%PREV_PACKAGE_INFO%" + if exist "%PRECOMPILED%" ( + DEL "%PRECOMPILED%" + ) +) + +REM There is no CUR_PACKAGE_INFO it was renamed in previous step to %PREV_PACKAGE_INFO% +REM which means we need to do pub get and precompile +if not exist "%PRECOMPILED%" ( + echo Running pub get in "%cd%" + "%DART%" pub get --no-precompile + "%DART%" compile kernel bin/build_tool_runner.dart +) + +"%DART%" "%PRECOMPILED%" %* + +REM 253 means invalid snapshot version. +If %ERRORLEVEL% equ 253 ( + "%DART%" pub get --no-precompile + "%DART%" compile kernel bin/build_tool_runner.dart + "%DART%" "%PRECOMPILED%" %* +) diff --git a/catalyst_voices/packages/libs/catalyst_compression/cargokit/run_build_tool.sh b/catalyst_voices/packages/libs/catalyst_compression/cargokit/run_build_tool.sh new file mode 100755 index 000000000000..24b0ed89da4d --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/cargokit/run_build_tool.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +set -e + +BASEDIR=$(dirname "$0") + +mkdir -p "$CARGOKIT_TOOL_TEMP_DIR" + +cd "$CARGOKIT_TOOL_TEMP_DIR" + +# Write a very simple bin package in temp folder that depends on build_tool package +# from Cargokit. This is done to ensure that we don't pollute Cargokit folder +# with .dart_tool contents. + +BUILD_TOOL_PKG_DIR="$BASEDIR/build_tool" + +if [[ -z $FLUTTER_ROOT ]]; then # not defined + DART=dart +else + DART="$FLUTTER_ROOT/bin/cache/dart-sdk/bin/dart" +fi + +cat << EOF > "pubspec.yaml" +name: build_tool_runner +version: 1.0.0 +publish_to: none + +environment: + sdk: '>=3.0.0 <4.0.0' + +dependencies: + build_tool: + path: "$BUILD_TOOL_PKG_DIR" +EOF + +mkdir -p "bin" + +cat << EOF > "bin/build_tool_runner.dart" +import 'package:build_tool/build_tool.dart' as build_tool; +void main(List args) { + build_tool.runMain(args); +} +EOF + +# Create alias for `shasum` if it does not exist and `sha1sum` exists +if ! [ -x "$(command -v shasum)" ] && [ -x "$(command -v sha1sum)" ]; then + shopt -s expand_aliases + alias shasum="sha1sum" +fi + +# Dart run will not cache any package that has a path dependency, which +# is the case for our build_tool_runner. So instead we precompile the package +# ourselves. +# To invalidate the cached kernel we use the hash of ls -LR of the build_tool +# package directory. This should be good enough, as the build_tool package +# itself is not meant to have any path dependencies. + +if [[ "$OSTYPE" == "darwin"* ]]; then + PACKAGE_HASH=$(ls -lTR "$BUILD_TOOL_PKG_DIR" | shasum) +else + PACKAGE_HASH=$(ls -lR --full-time "$BUILD_TOOL_PKG_DIR" | shasum) +fi + +PACKAGE_HASH_FILE=".package_hash" + +if [ -f "$PACKAGE_HASH_FILE" ]; then + EXISTING_HASH=$(cat "$PACKAGE_HASH_FILE") + if [ "$PACKAGE_HASH" != "$EXISTING_HASH" ]; then + rm "$PACKAGE_HASH_FILE" + fi +fi + +# Run pub get if needed. +if [ ! -f "$PACKAGE_HASH_FILE" ]; then + "$DART" pub get --no-precompile + "$DART" compile kernel bin/build_tool_runner.dart + echo "$PACKAGE_HASH" > "$PACKAGE_HASH_FILE" +fi + +# Rebuild the tool if it was deleted by Android Studio +if [ ! -f "bin/build_tool_runner.dill" ]; then + "$DART" compile kernel bin/build_tool_runner.dart +fi + +set +e + +"$DART" bin/build_tool_runner.dill "$@" + +exit_code=$? + +# 253 means invalid snapshot version. +if [ $exit_code == 253 ]; then + "$DART" pub get --no-precompile + "$DART" compile kernel bin/build_tool_runner.dart + "$DART" bin/build_tool_runner.dill "$@" + exit_code=$? +fi + +exit $exit_code diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/analysis_options.yaml b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/analysis_options.yaml deleted file mode 100644 index a2316514a4b3..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: package:catalyst_analysis/analysis_options.yaml - -analyzer: - exclude: [build/**, lib/*.g.dart, lib/generated/**] diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/lib/catalyst_compression.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/lib/catalyst_compression.dart deleted file mode 100644 index 8ff2d0243da5..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/lib/catalyst_compression.dart +++ /dev/null @@ -1,3 +0,0 @@ -export 'package:catalyst_compression_platform_interface/catalyst_compression_platform_interface.dart'; - -export 'src/catalyst_compression.dart'; diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/lib/src/catalyst_compression.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/lib/src/catalyst_compression.dart deleted file mode 100644 index de08f685d27f..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/lib/src/catalyst_compression.dart +++ /dev/null @@ -1,27 +0,0 @@ -import 'package:catalyst_compression/catalyst_compression.dart'; -import 'package:catalyst_compression_platform_interface/catalyst_compression_platform_interface.dart'; - -/// A Flutter plugin exposing brotli and zstd compression/decompression algorithms. -final class CatalystCompression { - /// The default instance of [CatalystCompression] to use. - static final CatalystCompression instance = CatalystCompression._(); - - CatalystCompression._(); - - /// Returns the brotli compressor. - CatalystCompressor get brotli { - return CatalystCompressionPlatform.instance.brotli; - } - - /// Returns the zstd compressor. - /// - /// Compressing more than 100 bytes is recommended, - /// otherwise the algorithm might provide larger results - /// than before the compression. - /// - /// [CompressionNotSupportedException] is thrown when trying to compress - /// less than 101 bytes. - CatalystCompressor get zstd { - return CatalystCompressionPlatform.instance.zstd; - } -} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/CHANGELOG.md deleted file mode 100644 index 2651a2df790b..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/CHANGELOG.md +++ /dev/null @@ -1,22 +0,0 @@ -## 1.0.0 - - - Upgrade flutter version to 3.27.3 - -## 0.4.0 - - - **REFACTOR**(cat-voices): self contained frontend dir ([#1082](https://github.com/input-output-hk/catalyst-voices/issues/1082)). ([62e5f437](https://github.com/input-output-hk/catalyst-voices/commit/62e5f43778fab323d7c1e4ebab4b5e89c1ba0cb5)) - - **FIX**(cat-voices): equatable lint issue fix ([#1280](https://github.com/input-output-hk/catalyst-voices/issues/1280)). ([e551c617](https://github.com/input-output-hk/catalyst-voices/commit/e551c61702ab4a229c88119a43611a42516b2665)) - -## 0.2.0 - -> Note: This release has breaking changes. - - - **BREAKING** **CHORE**: upgrade flutter to 3.24.1 and dart to 3.5.0 ([#725](https://github.com/input-output-hk/catalyst-voices/issues/725)). ([eb8a516e](https://github.com/input-output-hk/catalyst-voices/commit/eb8a516edbd25386c0fbe41501285870abf82543)) - -## 0.1.1 - - - **FEAT**: catalyst compression - brotli/zstd ([#626](https://github.com/input-output-hk/catalyst-voices/issues/626)). ([2b8e7d72](https://github.com/input-output-hk/catalyst-voices/commit/2b8e7d7239f9982aa7144a676a86d21b97f912fb)) - -## 0.1.0 - -* Initial release. diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/LICENSE b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/LICENSE deleted file mode 100644 index a55761ab50c6..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright (c) 2023 Input Output (IOG). - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/README.md b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/README.md deleted file mode 100644 index a1810e3294bd..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/README.md +++ /dev/null @@ -1 +0,0 @@ -# catalyst_compression_platform_interface diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/example/main.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/example/main.dart deleted file mode 100644 index 07c7bbac2b2b..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/example/main.dart +++ /dev/null @@ -1,4 +0,0 @@ -void main() { - // ignore: avoid_print - print('Example is located in catalyst_compression/example directory.'); -} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/catalyst_compression_platform_interface.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/catalyst_compression_platform_interface.dart deleted file mode 100644 index f8488d684668..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/catalyst_compression_platform_interface.dart +++ /dev/null @@ -1,2 +0,0 @@ -export 'src/catalyst_compression_platform.dart'; -export 'src/catalyst_compressor.dart'; diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/src/catalyst_compression_platform.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/src/catalyst_compression_platform.dart deleted file mode 100644 index f7b2ba2fbf79..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/src/catalyst_compression_platform.dart +++ /dev/null @@ -1,50 +0,0 @@ -import 'package:catalyst_compression_platform_interface/src/catalyst_compressor.dart'; -import 'package:plugin_platform_interface/plugin_platform_interface.dart'; - -/// The interface that implementations of catalyst_compression must -/// implement. -/// -/// Platform implementations should extend this class rather than implement -/// it as `catalyst_compression` does not consider newly added methods to -/// be breaking changes. Extending this class (using `extends`) ensures that the -/// subclass will get the default implementation, while platform implementations -/// that `implements` this interface will be broken by newly added -/// [CatalystCompressionPlatform] methods. -abstract class CatalystCompressionPlatform extends PlatformInterface { - static final Object _token = Object(); - - static CatalystCompressionPlatform? _instance; - - /// The default instance of [CatalystCompressionPlatform] to use. - /// - /// Must be set with [instance] setter before it can be used. - static CatalystCompressionPlatform get instance { - assert( - _instance != null, - 'Make sure to register the instance via ' - 'instance setter before it is used.', - ); - return _instance!; - } - - /// Platform-specific plugins should set this with their own platform-specific - /// class that extends [CatalystCompressionPlatform] when they register - /// themselves. - static set instance(CatalystCompressionPlatform instance) { - PlatformInterface.verify(instance, _token); - _instance = instance; - } - - /// Constructs a [CatalystCompressionPlatform]. - CatalystCompressionPlatform() : super(token: _token); - - /// Returns the brotli compressor. - CatalystCompressor get brotli { - throw UnimplementedError('brotli has not been implemented.'); - } - - /// Returns the zstd compressor. - CatalystCompressor get zstd { - throw UnimplementedError('zstd has not been implemented.'); - } -} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/pubspec.yaml deleted file mode 100644 index 41e7dae91ba7..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/pubspec.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: catalyst_compression_platform_interface -description: A common platform interface for the catalyst_compression plugin. -repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface -issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues -topics: [compression, codec] -version: 1.0.0 - -environment: - sdk: ">=3.9.0 <4.0.0" - flutter: ">=3.35.1" - -dependencies: - equatable: ^2.0.7 - flutter: - sdk: flutter - plugin_platform_interface: ^2.1.8 - -dev_dependencies: - catalyst_analysis: ^3.0.0 - flutter_test: - sdk: flutter diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/CHANGELOG.md b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/CHANGELOG.md deleted file mode 100644 index b0345cf4be4f..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/CHANGELOG.md +++ /dev/null @@ -1,28 +0,0 @@ -## 1.0.0 - - - Upgrade flutter version to 3.27.3 - -## 0.4.0 - - - **REFACTOR**(cat-voices): self contained frontend dir ([#1082](https://github.com/input-output-hk/catalyst-voices/issues/1082)). ([62e5f437](https://github.com/input-output-hk/catalyst-voices/commit/62e5f43778fab323d7c1e4ebab4b5e89c1ba0cb5)) - -## 0.3.0 - -> Note: This release has breaking changes. - - - **BREAKING** **CHORE**: upgrade flutter to 3.24.1 and dart to 3.5.0 ([#725](https://github.com/input-output-hk/catalyst-voices/issues/725)). ([eb8a516e](https://github.com/input-output-hk/catalyst-voices/commit/eb8a516edbd25386c0fbe41501285870abf82543)) - -## 0.2.0 - -> Note: This release has breaking changes. - - - **FEAT**: cose flutter package structure ([#649](https://github.com/input-output-hk/catalyst-voices/issues/649)). ([1875849c](https://github.com/input-output-hk/catalyst-voices/commit/1875849c530babbd69dce3882423cc7d9ffdbfa4)) - - **BREAKING** **FEAT**: COSE_SIGN1 signatures and verification ([#669](https://github.com/input-output-hk/catalyst-voices/issues/669)). ([f5a910ef](https://github.com/input-output-hk/catalyst-voices/commit/f5a910efe36442171521b9ec429aed4a46e05b83)) - -## 0.1.1 - - - **FEAT**: catalyst compression - brotli/zstd ([#626](https://github.com/input-output-hk/catalyst-voices/issues/626)). ([2b8e7d72](https://github.com/input-output-hk/catalyst-voices/commit/2b8e7d7239f9982aa7144a676a86d21b97f912fb)) - -## 0.1.0 - -* Initial release. diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/LICENSE b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/LICENSE deleted file mode 100644 index a55761ab50c6..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - -TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - -1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - -2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - -3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - -4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - -5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - -6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - -7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - -8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - -9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - -END OF TERMS AND CONDITIONS - -APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - -Copyright (c) 2023 Input Output (IOG). - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/README.md b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/README.md deleted file mode 100644 index eaec9501ed7c..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/README.md +++ /dev/null @@ -1 +0,0 @@ -# catalyst_compression_web diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/analysis_options.yaml b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/analysis_options.yaml deleted file mode 100644 index a2316514a4b3..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/analysis_options.yaml +++ /dev/null @@ -1,4 +0,0 @@ -include: package:catalyst_analysis/analysis_options.yaml - -analyzer: - exclude: [build/**, lib/*.g.dart, lib/generated/**] diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/brotli_wasm.js b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/brotli_wasm.js deleted file mode 100644 index 0364da43424b..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/brotli_wasm.js +++ /dev/null @@ -1,498 +0,0 @@ - -let wasm; - -const heap = new Array(32).fill(undefined); - -heap.push(undefined, null, true, false); - -function getObject(idx) {return heap[idx];} - -const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -let cachegetUint8Memory0 = null; -function getUint8Memory0() { - if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { - cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); - } - return cachegetUint8Memory0; -} - -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} - -let heap_next = heap.length; - -function addHeapObject(obj) { - if (heap_next === heap.length) heap.push(heap.length + 1); - const idx = heap_next; - heap_next = heap[idx]; - - heap[idx] = obj; - return idx; -} - -let WASM_VECTOR_LEN = 0; - -const cachedTextEncoder = new TextEncoder('utf-8'); - -const encodeString = typeof cachedTextEncoder.encodeInto === 'function' ? -function (arg, view) { - return cachedTextEncoder.encodeInto(arg, view); -} : -function (arg, view) { - const buf = cachedTextEncoder.encode(arg); - view.set(buf); - return { - read: arg.length, - written: buf.length }; - -}; - -function passStringToWasm0(arg, malloc, realloc) { - - if (realloc === undefined) { - const buf = cachedTextEncoder.encode(arg); - const ptr = malloc(buf.length); - getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); - WASM_VECTOR_LEN = buf.length; - return ptr; - } - - let len = arg.length; - let ptr = malloc(len); - - const mem = getUint8Memory0(); - - let offset = 0; - - for (; offset < len; offset++) { - const code = arg.charCodeAt(offset); - if (code > 0x7F) break; - mem[ptr + offset] = code; - } - - if (offset !== len) { - if (offset !== 0) { - arg = arg.slice(offset); - } - ptr = realloc(ptr, len, len = offset + arg.length * 3); - const view = getUint8Memory0().subarray(ptr + offset, ptr + len); - const ret = encodeString(arg, view); - - offset += ret.written; - } - - WASM_VECTOR_LEN = offset; - return ptr; -} - -let cachegetInt32Memory0 = null; -function getInt32Memory0() { - if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { - cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); - } - return cachegetInt32Memory0; -} - -function dropObject(idx) { - if (idx < 36) return; - heap[idx] = heap_next; - heap_next = idx; -} - -function takeObject(idx) { - const ret = getObject(idx); - dropObject(idx); - return ret; -} - -function passArray8ToWasm0(arg, malloc) { - const ptr = malloc(arg.length * 1); - getUint8Memory0().set(arg, ptr / 1); - WASM_VECTOR_LEN = arg.length; - return ptr; -} - -let stack_pointer = 32; - -function addBorrowedObject(obj) { - if (stack_pointer == 1) throw new Error('out of js stack'); - heap[--stack_pointer] = obj; - return stack_pointer; -} - -function getArrayU8FromWasm0(ptr, len) { - return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); -} -/** - * @param {Uint8Array} buf - * @param {any} raw_options - * @returns {Uint8Array} - */ -export function compress(buf, raw_options) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buf, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.compress(retptr, ptr0, len0, addBorrowedObject(raw_options)); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - heap[stack_pointer++] = undefined; - } -} - -/** - * @param {Uint8Array} buf - * @returns {Uint8Array} - */ -export function decompress(buf) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(buf, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.decompress(retptr, ptr0, len0); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - var r3 = getInt32Memory0()[retptr / 4 + 3]; - if (r3) { - throw takeObject(r2); - } - var v1 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v1; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } -} - -function isLikeNone(x) { - return x === undefined || x === null; -} -/** - * Same as [`brotli::BrotliResult`] except [`brotli::BrotliResult::ResultFailure`]. - * - * Always `> 0`. - * - * `ResultFailure` is removed - * because we will convert the failure to an actual negative error code (if available) and pass it elsewhere. - */ -export const BrotliStreamResultCode = Object.freeze({ ResultSuccess: 1, "1": "ResultSuccess", NeedsMoreInput: 2, "2": "NeedsMoreInput", NeedsMoreOutput: 3, "3": "NeedsMoreOutput" }); -/** - * Returned by every successful (de)compression. - */ -export class BrotliStreamResult { - - static __wrap(ptr) { - const obj = Object.create(BrotliStreamResult.prototype); - obj.ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.ptr; - this.ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_brotlistreamresult_free(ptr); - } - /** - * Result code. - * - * See [`BrotliStreamResultCode`] for available values. - * - * When error, the error code is not passed here but rather goes to `Err`. - */ - get code() { - const ret = wasm.__wbg_get_brotlistreamresult_code(this.ptr); - return ret >>> 0; - } - /** - * Result code. - * - * See [`BrotliStreamResultCode`] for available values. - * - * When error, the error code is not passed here but rather goes to `Err`. - * @param {number} arg0 - */ - set code(arg0) { - wasm.__wbg_set_brotlistreamresult_code(this.ptr, arg0); - } - /** - * Output buffer - */ - get buf() { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - wasm.__wbg_get_brotlistreamresult_buf(retptr, this.ptr); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var v0 = getArrayU8FromWasm0(r0, r1).slice(); - wasm.__wbindgen_free(r0, r1 * 1); - return v0; - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * Output buffer - * @param {Uint8Array} arg0 - */ - set buf(arg0) { - const ptr0 = passArray8ToWasm0(arg0, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.__wbg_set_brotlistreamresult_buf(this.ptr, ptr0, len0); - } - /** - * Consumed bytes of the input buffer - */ - get input_offset() { - const ret = wasm.__wbg_get_brotlistreamresult_input_offset(this.ptr); - return ret >>> 0; - } - /** - * Consumed bytes of the input buffer - * @param {number} arg0 - */ - set input_offset(arg0) { - wasm.__wbg_set_brotlistreamresult_input_offset(this.ptr, arg0); - }} - -/** - */ -export class CompressStream { - - static __wrap(ptr) { - const obj = Object.create(CompressStream.prototype); - obj.ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.ptr; - this.ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_compressstream_free(ptr); - } - /** - * @param {number | undefined} quality - */ - constructor(quality) { - const ret = wasm.compressstream_new(!isLikeNone(quality), isLikeNone(quality) ? 0 : quality); - return CompressStream.__wrap(ret); - } - /** - * @param {Uint8Array | undefined} input_opt - * @param {number} output_size - * @returns {BrotliStreamResult} - */ - compress(input_opt, output_size) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - var ptr0 = isLikeNone(input_opt) ? 0 : passArray8ToWasm0(input_opt, wasm.__wbindgen_malloc); - var len0 = WASM_VECTOR_LEN; - wasm.compressstream_compress(retptr, this.ptr, ptr0, len0, output_size); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BrotliStreamResult.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {number} - */ - total_out() { - const ret = wasm.compressstream_total_out(this.ptr); - return ret >>> 0; - }} - -/** - */ -export class DecompressStream { - - static __wrap(ptr) { - const obj = Object.create(DecompressStream.prototype); - obj.ptr = ptr; - - return obj; - } - - __destroy_into_raw() { - const ptr = this.ptr; - this.ptr = 0; - - return ptr; - } - - free() { - const ptr = this.__destroy_into_raw(); - wasm.__wbg_decompressstream_free(ptr); - } - /** - */ - constructor() { - const ret = wasm.decompressstream_new(); - return DecompressStream.__wrap(ret); - } - /** - * @param {Uint8Array} input - * @param {number} output_size - * @returns {BrotliStreamResult} - */ - decompress(input, output_size) { - try { - const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); - const ptr0 = passArray8ToWasm0(input, wasm.__wbindgen_malloc); - const len0 = WASM_VECTOR_LEN; - wasm.decompressstream_decompress(retptr, this.ptr, ptr0, len0, output_size); - var r0 = getInt32Memory0()[retptr / 4 + 0]; - var r1 = getInt32Memory0()[retptr / 4 + 1]; - var r2 = getInt32Memory0()[retptr / 4 + 2]; - if (r2) { - throw takeObject(r1); - } - return BrotliStreamResult.__wrap(r0); - } finally { - wasm.__wbindgen_add_to_stack_pointer(16); - } - } - /** - * @returns {number} - */ - total_out() { - const ret = wasm.decompressstream_total_out(this.ptr); - return ret >>> 0; - }} - - -async function load(module, imports) { - if (typeof Response === 'function' && module instanceof Response) { - if (typeof WebAssembly.instantiateStreaming === 'function') { - try { - return await WebAssembly.instantiateStreaming(module, imports); - - } catch (e) { - if (module.headers.get('Content-Type') != 'application/wasm') { - console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); - - } else { - throw e; - } - } - } - - const bytes = await module.arrayBuffer(); - return await WebAssembly.instantiate(bytes, imports); - - } else { - const instance = await WebAssembly.instantiate(module, imports); - - if (instance instanceof WebAssembly.Instance) { - return { instance, module }; - - } else { - return instance; - } - } -} - -async function init(input) { - if (typeof input === 'undefined') { - input = new URL('brotli_wasm_bg.wasm', import.meta.url); - } - const imports = {}; - imports.wbg = {}; - imports.wbg.__wbindgen_is_undefined = function (arg0) { - const ret = getObject(arg0) === undefined; - return ret; - }; - imports.wbg.__wbindgen_is_object = function (arg0) { - const val = getObject(arg0); - const ret = typeof val === 'object' && val !== null; - return ret; - }; - imports.wbg.__wbindgen_string_new = function (arg0, arg1) { - const ret = getStringFromWasm0(arg0, arg1); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_error_new = function (arg0, arg1) { - const ret = new Error(getStringFromWasm0(arg0, arg1)); - return addHeapObject(ret); - }; - imports.wbg.__wbindgen_json_serialize = function (arg0, arg1) { - const obj = getObject(arg1); - const ret = JSON.stringify(obj === undefined ? null : obj); - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_new_693216e109162396 = function () { - const ret = new Error(); - return addHeapObject(ret); - }; - imports.wbg.__wbg_stack_0ddaca5d1abfb52f = function (arg0, arg1) { - const ret = getObject(arg1).stack; - const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - getInt32Memory0()[arg0 / 4 + 1] = len0; - getInt32Memory0()[arg0 / 4 + 0] = ptr0; - }; - imports.wbg.__wbg_error_09919627ac0992f5 = function (arg0, arg1) { - try { - console.error(getStringFromWasm0(arg0, arg1)); - } finally { - wasm.__wbindgen_free(arg0, arg1); - } - }; - imports.wbg.__wbindgen_object_drop_ref = function (arg0) { - takeObject(arg0); - }; - imports.wbg.__wbindgen_throw = function (arg0, arg1) { - throw new Error(getStringFromWasm0(arg0, arg1)); - }; - - if (typeof input === 'string' || typeof Request === 'function' && input instanceof Request || typeof URL === 'function' && input instanceof URL) { - input = fetch(input); - } - - - - const { instance, module } = await load((await input), imports); - - wasm = instance.exports; - init.__wbindgen_wasm_module = module; - - return wasm; -} - -export default init; \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/brotli_wasm_bg.wasm b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/brotli_wasm_bg.wasm deleted file mode 100644 index c4ba12b52efb..000000000000 Binary files a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/brotli_wasm_bg.wasm and /dev/null differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/index.js b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/index.js deleted file mode 100644 index ce4a24c786ab..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/brotli/index.js +++ /dev/null @@ -1,5 +0,0 @@ -// In pure ESM web bundles, you must call init() and wait for the promised result before you can -// call any module methods. To make that as easy as possible, this module directly exposes the -// init() promise result, and returns the methods at the end of the promise. -import init, * as brotliWasm from "./brotli_wasm.js"; -export default init().then(() => brotliWasm); \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/catalyst_compression.js b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/catalyst_compression.js deleted file mode 100644 index 31ab13a426ae..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/catalyst_compression.js +++ /dev/null @@ -1,85 +0,0 @@ -// Initialize a web worker for compression works. -// This is a persistent worker, will last for life of the app. -const compressionWorker = new Worker(new URL('./catalyst_compression_worker.js', import.meta.url)); - -let idCounter = 0; - -// A simple id generator function. -function generateId() { - const thisId = idCounter; - const nextId = idCounter + 1; - - idCounter = nextId >= Number.MAX_SAFE_INTEGER ? 0 : nextId; - - return thisId; -} - -// Installs a service worker handler. -function registerWorkerEventHandler(worker, handleMessage, handleError) { - const wrappedHandleMessage = (event) => handleMessage(event, complete); - const wrappedHandleError = (error) => handleError(error, complete); - - function complete() { - worker.removeEventListener("message", wrappedHandleMessage); - worker.removeEventListener("error", wrappedHandleError); - } - - worker.addEventListener("message", wrappedHandleMessage); - worker.addEventListener("error", wrappedHandleError); -} - -// A function to create a compression function according to its name. -function runCompressionInWorker(fnName) { - return (data) => { - return new Promise((resolve, reject) => { - const id = generateId(); - - registerWorkerEventHandler( - compressionWorker, - (event, complete) => { - const { - id: responseId, - result, - error, - initialized - } = event.data; - - // skip the initializing completion event, - // and the id that is not itself. - if (initialized || responseId !== id) { - return; - } - - if (result) { - resolve(result); - } else { - reject(error || 'Unexpected error'); - } - - complete(); - }, - (error, complete) => { - reject(error); - - complete(); - } - ); - - compressionWorker.postMessage({ id, action: fnName, bytesHex: data }); - }); - } -} - -// A namespace containing the JS functions that -// can be executed from dart side -const catalyst_compression = { - brotliCompress: runCompressionInWorker("brotliCompress"), - brotliDecompress: runCompressionInWorker("brotliDecompress"), - zstdCompress: runCompressionInWorker("zstdCompress"), - zstdDecompress: runCompressionInWorker("zstdDecompress"), -}; - -// Expose catalyst compression as globally accessible -// so that we can call it via catalyst_compression.function_name() from -// other scripts or dart without needing to care about module imports -window.catalyst_compression = catalyst_compression; diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/catalyst_compression_worker.js b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/catalyst_compression_worker.js deleted file mode 100644 index 1684d079cff8..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/catalyst_compression_worker.js +++ /dev/null @@ -1,93 +0,0 @@ -// initial message handler from the main thread. -self.onmessage = (event) => { - const { id } = event.data; - self.postMessage({ id, error: 'Worker is not ready' }); -}; - -Promise.all([ - import('./brotli/index.js').then(m => m.default), - import('./zstd/index.js') -]).then(async ([brotli, zstd]) => { - // Initializes the zstd module, must be called before it can be used. - await zstd.ZstdInit(); - - /// Compresses hex bytes using brotli compression algorithm and returns compressed hex bytes. - function _brotliCompress(bytesHex) { - const bytes = _hexStringToUint8Array(bytesHex); - const compressedBytes = brotli.compress(bytes); - return _uint8ArrayToHexString(compressedBytes); - } - - /// Decompresses hex bytes using brotli compression algorithm and returns decompressed hex bytes. - function _brotliDecompress(bytesHex) { - const bytes = _hexStringToUint8Array(bytesHex); - const decompressedBytes = brotli.decompress(bytes); - return _uint8ArrayToHexString(decompressedBytes); - } - - /// Compresses hex bytes using zstd compression algorithm and returns compressed hex bytes. - function _zstdCompress(bytesHex) { - const bytes = _hexStringToUint8Array(bytesHex); - const compressedBytes = zstd.ZstdSimple.compress(bytes); - return _uint8ArrayToHexString(compressedBytes); - } - - /// Decompresses hex bytes using zstd compression algorithm and returns decompressed hex bytes. - function _zstdDecompress(bytesHex) { - const bytes = _hexStringToUint8Array(bytesHex); - const decompressedBytes = zstd.ZstdSimple.decompress(bytes); - return _uint8ArrayToHexString(decompressedBytes); - } - - // Converts a hex string into a byte array. - function _hexStringToUint8Array(hexString) { - // Ensure the hex string length is even - if (hexString.length % 2 !== 0) { - throw new Error('Invalid hex string'); - } - - // Create a Uint8Array - const byteArray = new Uint8Array(hexString.length / 2); - - // Parse the hex string into byte values - for (let i = 0; i < hexString.length; i += 2) { - byteArray[i / 2] = parseInt(hexString.substr(i, 2), 16); - } - - return byteArray; - } - - // Converts a byte array into a hex string. - function _uint8ArrayToHexString(uint8Array) { - return Array.from(uint8Array) - .map(byte => byte.toString(16).padStart(2, '0')) - .join(''); - } - - const catalyst_compression = { - brotliCompress: _brotliCompress, - brotliDecompress: _brotliDecompress, - zstdCompress: _zstdCompress, - zstdDecompress: _zstdDecompress, - }; - - // replace the initial handler with the actual handler. - self.onmessage = (event) => { - const { id, action, bytesHex } = event.data; - if (catalyst_compression[action]) { - try { - const result = catalyst_compression[action](bytesHex); - self.postMessage({ id, result }); - } catch (error) { - self.postMessage({ id, error: error.message }); - } - } else { - self.postMessage({ id, error: 'Unknown action' }); - } - }; - - // send an event to notify the main thread that the worker is ready. - self.postMessage({ initialized: true }); -}).catch(error => { - self.postMessage({ error: `Failed to load modules: ${error.message}` }); -}) \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/zstd/index.js b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/zstd/index.js deleted file mode 100644 index 12cba8be2357..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/assets/js/zstd/index.js +++ /dev/null @@ -1,15 +0,0 @@ -/*! ***************************************************************************** -Copyright (c) Microsoft Corporation. - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH -REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY -AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, -INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM -LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR -OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR -PERFORMANCE OF THIS SOFTWARE. -***************************************************************************** */ -var A=function(I,g){return(A=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(A,I){A.__proto__=I;}||function(A,I){for(var g in I)Object.prototype.hasOwnProperty.call(I,g)&&(A[g]=I[g]);})(I,g);};function I(I,g){if("function"!=typeof g&&null!==g)throw new TypeError("Class extends value "+String(g)+" is not a constructor or null");function B(){this.constructor=I;}A(I,g),I.prototype=null===g?Object.create(g):(B.prototype=g.prototype,new B());}function g(A,I,g,B){return new(g||(g=Promise))(function(C,Q){function E(A){try{o(B.next(A));}catch(A){Q(A);}}function i(A){try{o(B.throw(A));}catch(A){Q(A);}}function o(A){var I;A.done?C(A.value):(I=A.value,I instanceof g?I:new g(function(A){A(I);})).then(E,i);}o((B=B.apply(A,I||[])).next());});}function B(A,I){var g,B,C,Q,E={label:0,sent:function(){if(1&C[0])throw C[1];return C[1];},trys:[],ops:[]};return Q={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(Q[Symbol.iterator]=function(){return this;}),Q;function i(Q){return function(i){return function(Q){if(g)throw new TypeError("Generator is already executing.");for(;E;)try{if(g=1,B&&(C=2&Q[0]?B.return:Q[0]?B.throw||((C=B.return)&&C.call(B),0):B.next)&&!(C=C.call(B,Q[1])).done)return C;switch(B=0,C&&(Q=[2&Q[0],C.value]),Q[0]){case 0:case 1:C=Q;break;case 4:return E.label++,{value:Q[1],done:!1};case 5:E.label++,B=Q[1],Q=[0];continue;case 7:Q=E.ops.pop(),E.trys.pop();continue;default:if(!(C=E.trys,(C=C.length>0&&C[C.length-1])||6!==Q[0]&&2!==Q[0])){E=0;continue;}if(3===Q[0]&&(!C||Q[1]>C[0]&&Q[1]1&&process.argv[1].replace(/\\/g,"/"),process.argv.slice(2),process.on("uncaughtException",function(A){if(!(A instanceof tA))throw A;}),process.on("unhandledRejection",z),I.inspect=function(){return"[Emscripten Module object]";};else if(D)"undefined"!=typeof read&&(G=function(A){var I=yA(A);return I?GA(I):read(A);}),y=function(A){var I;return(I=yA(A))?I:"function"==typeof readbuffer?new Uint8Array(readbuffer(A)):(k("object"==typeof(I=read(A,"binary"))),I);},"undefined"!=typeof scriptArgs&&scriptArgs,"undefined"!=typeof print&&("undefined"==typeof console&&(console={}),console.log=print,console.warn=console.error="undefined"!=typeof printErr?printErr:print);else{if(!E&&!i)throw new Error("environment detection error");i?R=self.location.href:"undefined"!=typeof document&&document.currentScript&&(R=document.currentScript.src),g&&(R=g),R=0!==R.indexOf("blob:")?R.substr(0,R.lastIndexOf("/")+1):"",G=function(A){try{var I=new XMLHttpRequest();return I.open("GET",A,!1),I.send(null),I.responseText;}catch(I){var g=yA(A);if(g)return GA(g);throw I;}},i&&(y=function(A){try{var I=new XMLHttpRequest();return I.open("GET",A,!1),I.responseType="arraybuffer",I.send(null),new Uint8Array(I.response);}catch(I){var g=yA(A);if(g)return g;throw I;}}),F=function(A,I,g){var B=new XMLHttpRequest();B.open("GET",A,!0),B.responseType="arraybuffer",B.onload=function(){if(200==B.status||0==B.status&&B.response)I(B.response);else{var C=yA(A);C?I(C.buffer):g();}},B.onerror=g,B.send(null);};}I.print||console.log.bind(console);var S,N,h=I.printErr||console.warn.bind(console);for(Q in a)a.hasOwnProperty(Q)&&(I[Q]=a[Q]);function U(A){U.shown||(U.shown={}),U.shown[A]||(U.shown[A]=1,h(A));}a=null,I.arguments&&I.arguments,Object.getOwnPropertyDescriptor(I,"arguments")||Object.defineProperty(I,"arguments",{configurable:!0,get:function(){z("Module.arguments has been replaced with plain arguments_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),I.thisProgram&&I.thisProgram,Object.getOwnPropertyDescriptor(I,"thisProgram")||Object.defineProperty(I,"thisProgram",{configurable:!0,get:function(){z("Module.thisProgram has been replaced with plain thisProgram (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),I.quit&&I.quit,Object.getOwnPropertyDescriptor(I,"quit")||Object.defineProperty(I,"quit",{configurable:!0,get:function(){z("Module.quit has been replaced with plain quit_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),k(void 0===I.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===I.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),k(void 0===I.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),k(void 0===I.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),k(void 0===I.read,"Module.read option was removed (modify read_ in JS)"),k(void 0===I.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),k(void 0===I.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),k(void 0===I.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),k(void 0===I.TOTAL_MEMORY,"Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),Object.getOwnPropertyDescriptor(I,"read")||Object.defineProperty(I,"read",{configurable:!0,get:function(){z("Module.read has been replaced with plain read_ (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),Object.getOwnPropertyDescriptor(I,"readAsync")||Object.defineProperty(I,"readAsync",{configurable:!0,get:function(){z("Module.readAsync has been replaced with plain readAsync (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),Object.getOwnPropertyDescriptor(I,"readBinary")||Object.defineProperty(I,"readBinary",{configurable:!0,get:function(){z("Module.readBinary has been replaced with plain readBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),Object.getOwnPropertyDescriptor(I,"setWindowTitle")||Object.defineProperty(I,"setWindowTitle",{configurable:!0,get:function(){z("Module.setWindowTitle has been replaced with plain setWindowTitle (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),I.wasmBinary&&(S=I.wasmBinary),Object.getOwnPropertyDescriptor(I,"wasmBinary")||Object.defineProperty(I,"wasmBinary",{configurable:!0,get:function(){z("Module.wasmBinary has been replaced with plain wasmBinary (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),I.noExitRuntime,Object.getOwnPropertyDescriptor(I,"noExitRuntime")||Object.defineProperty(I,"noExitRuntime",{configurable:!0,get:function(){z("Module.noExitRuntime has been replaced with plain noExitRuntime (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),"object"!=typeof WebAssembly&&z("no native wasm support detected");var L=!1;function k(A,I){A||z("Assertion failed: "+I);}function t(A,g,B,C,Q){var E={string:function(A){var I=0;if(null!=A&&0!==A){var g=1+(A.length<<2);n(A,I=hA(g),g);}return I;},array:function(A){var I=hA(A.length);return function(A,I){k(A.length>=0,"writeArrayToMemory array must have a length (should be an array or typed array)"),c.set(A,I);}(A,I),I;}},i=function(A){var g=I["_"+A];return k(g,"Cannot call unknown function "+A+", make sure it is exported"),g;}(A),o=[],D=0;if(k("array"!==g,'Return type should not be "array".'),C)for(var a=0;a=B);)++C;if(C-I>16&&A.subarray&&e)return e.decode(A.subarray(I,C));for(var Q="";I>10,56320|1023&D);}}else Q+=String.fromCharCode((31&E)<<6|i);}else Q+=String.fromCharCode(E);}return Q;}(Y,A,I):"";}function n(A,I,g){return k("number"==typeof g,"stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),function(A,I,g,B){if(!(B>0))return 0;for(var C=g,Q=g+B-1,E=0;E=55296&&i<=57343&&(i=65536+((1023&i)<<10)|1023&A.charCodeAt(++E)),i<=127){if(g>=Q)break;I[g++]=i;}else if(i<=2047){if(g+1>=Q)break;I[g++]=192|i>>6,I[g++]=128|63&i;}else if(i<=65535){if(g+2>=Q)break;I[g++]=224|i>>12,I[g++]=128|i>>6&63,I[g++]=128|63&i;}else{if(g+3>=Q)break;i>=2097152&&U("Invalid Unicode code point 0x"+i.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),I[g++]=240|i>>18,I[g++]=128|i>>12&63,I[g++]=128|i>>6&63,I[g++]=128|63&i;}}return I[g]=0,g-C;}(A,Y,I,g);}function T(A){J=A,I.HEAP8=c=new Int8Array(A),I.HEAP16=M=new Int16Array(A),I.HEAP32=K=new Int32Array(A),I.HEAPU8=Y=new Uint8Array(A),I.HEAPU16=new Uint16Array(A),I.HEAPU32=H=new Uint32Array(A),I.HEAPF32=q=new Float32Array(A),I.HEAPF64=r=new Float64Array(A);}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var W=5242880;I.TOTAL_STACK&&k(W===I.TOTAL_STACK,"the stack size can no longer be determined at runtime");var p,m=I.INITIAL_MEMORY||16777216;function f(){var A=kA();k(0==(3&A)),H[1+(A>>2)]=34821223,H[2+(A>>2)]=2310721022,K[0]=1668509029;}function Z(){if(!L){var A=kA(),I=H[1+(A>>2)],g=H[2+(A>>2)];34821223==I&&2310721022==g||z("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x2135467, but received 0x"+g.toString(16)+" "+I.toString(16)),1668509029!==K[0]&&z("Runtime error: The application has corrupted its heap memory area (address zero)!");}}Object.getOwnPropertyDescriptor(I,"INITIAL_MEMORY")||Object.defineProperty(I,"INITIAL_MEMORY",{configurable:!0,get:function(){z("Module.INITIAL_MEMORY has been replaced with plain INITIAL_MEMORY (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)");}}),k(m>=W,"INITIAL_MEMORY should be larger than TOTAL_STACK, was "+m+"! (TOTAL_STACK=5242880)"),k("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),k(!I.wasmMemory,"Use of `wasmMemory` detected. Use -s IMPORTED_MEMORY to define wasmMemory externally"),k(16777216==m,"Detected runtime INITIAL_MEMORY setting. Use -s IMPORTED_MEMORY to define wasmMemory dynamically"),function(){var A=new Int16Array(1),I=new Int8Array(A.buffer);if(A[0]=25459,115!==I[0]||99!==I[1])throw"Runtime error: expected the system to be little-endian!";}();var P=[],b=[],l=[],O=[],x=!1;b.push({func:function(){wA();}}),k(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),k(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var V=0,j=null,X=null,u={};function z(A){var g,B;I.onAbort&&I.onAbort(A),h(A+=""),L=!0,A="abort("+A+") at "+(B=function(){var A=new Error();if(!A.stack){try{throw new Error();}catch(I){A=I;}if(!A.stack)return"(no stack trace available)";}return A.stack.toString();}(),I.extraStackTrace&&(B+="\n"+I.extraStackTrace()),g=/\b_Z[\w\d_]+/g,B.replace(g,function(A){var I=DA(A);return A===I?A:I+" ["+A+"]";}));var Q=new WebAssembly.RuntimeError(A);throw C(Q),Q;}I.preloadedImages={},I.preloadedAudios={};var v={error:function(){z("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1");},init:function(){v.error();},createDataFile:function(){v.error();},createPreloadedFile:function(){v.error();},createLazyFile:function(){v.error();},open:function(){v.error();},mkdev:function(){v.error();},registerDevice:function(){v.error();},analyzePath:function(){v.error();},loadFilesFromDB:function(){v.error();},ErrnoError:function(){v.error();}};function _(A,I){return String.prototype.startsWith?A.startsWith(I):0===A.indexOf(I);}I.FS_createDataFile=v.createDataFile,I.FS_createPreloadedFile=v.createPreloadedFile;var $="data:application/octet-stream;base64,";function AA(A){return _(A,$);}function IA(A){return _(A,"file://");}function gA(A,g){return function(){var B=A,C=g;return g||(C=I.asm),k(x,"native function `"+B+"` called before runtime initialization"),k(!0,"native function `"+B+"` called after runtime exit (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),C[A]||k(C[A],"exported native function `"+B+"` not found"),C[A].apply(null,arguments);};}var BA,CA,QA,EA="data:application/octet-stream;base64,AGFzbQEAAAABqwIkYAJ/fwBgAn9/AX9gA39/fwF/YAF/AX9gBX9/f39/AX9gBH9/f38Bf2AGf39/f39/AX9gA39/fwBgAX8AYAABf2AFf39/f38AYAAAYAR/f39/AGAHf39/f39/fwF/YAZ/f39/f38AYAl/f39/f39/f38Bf2AHf39/f39/fwBgBH9+fn8AYAh/f39/f39/fwF/YAt/f39/f39/f39/fwF/YA9/f39/f39/f39/f39/f38Bf2AGf3x/f39/AX9gAn5/AX9gBX9/fn9/AGACf34AYAp/f39/f39/f39/AX9gB39/f39/f34Bf2AFf39/fn8Bf2AFf39+f38Bf2ADfn9/AX9gAX8BfmACf38BfmADf35/AX5gB39+f39/f38BfmACfn4BfGACfH8BfAJMAwNlbnYWZW1zY3JpcHRlbl9yZXNpemVfaGVhcAADA2VudhVlbXNjcmlwdGVuX21lbWNweV9iaWcAAgNlbnYLc2V0VGVtcFJldDAACAOXBJUECwMEDQUGAwMGBgYGBAQEBgQEDw8TFBMGCAMIAwICAxccBAQEBAQEBgQHCgQECgQGBAYEBAQEBAQEBAQEBAQEBAQEBAUGGwoEBwIBBRoZEAQeBgYEBAQGCQMJCQECEg8HBwAAIQQGAAcFBAQEBAQNAgMFHwcGAgQEBQQCBRIQCQMJAwINFAcIAwMJAgEBIwIEBwMHHRYWChUACBERIgMIAQEAAwICAgMHCQkDCwUCBQMBCAICAwcMDAwKCg4OBQMCAAgHAQEDAQcCAwAICAMDCAEDAQEDAwAHDQICAQABAwMBAwMDAwMBAgIDAwICAwEBAQEDAwABDA0BAgEIAQEAAAAACAIAAwECAQEBAgEBAAABAQIFAQMBAQACAAADAQECAQEBAAAHAwMBAQMFAwUDAgMBAQUBAQMDAwEFAgIDAwIDAQUFAgIGAQECAQECAQEDCAECAgIABwEAAQAAAAABAAEAAAEBBQABAgECABgAAAACAAACAAAAAAUAAAACAAEABAQACAEAAQUFAAECAgAFAAIAAgIABQADAQIBAQABAQAAAQAABQACAAUABQACAAIGBgAFAAUAAAAAAQABAAAFAAICAAEAAgEAAAEBAQEBAQEBAQEAAAACAAEAAQANAQAAAgACAQIBAQYAAAYAAAICAgACAAIBAQEAAAABAAIAAgAAAgAAAgIAAQADAAIABwACAAkIAwEEBwFwAfUB9QEFBwEBgAKAgAIGDgJ/AUGAq8ECC38BQQALB50FIQZtZW1vcnkCABFfX3dhc21fY2FsbF9jdG9ycwADBm1hbGxvYwCgAQRmcmVlAKEBDFpTVERfaXNFcnJvcgAJEVpTVERfZ2V0RXJyb3JOYW1lAAoSWlNURF9jb21wcmVzc0JvdW5kABwWWlNURF9DQ3R4X3NldFBhcmFtZXRlcgAfDVpTVERfY29tcHJlc3MAVhJaU1REX2NyZWF0ZUNTdHJlYW0AWhBaU1REX2ZyZWVDU3RyZWFtAFsSWlNURF9DU3RyZWFtSW5TaXplAFwTWlNURF9DU3RyZWFtT3V0U2l6ZQBdEFpTVERfaW5pdENTdHJlYW0AXh9aU1REX2NvbXByZXNzU3RyZWFtMl9zaW1wbGVBcmdzAGAYWlNURF9nZXRGcmFtZUNvbnRlbnRTaXplAJcED1pTVERfZGVjb21wcmVzcwB7ElpTVERfY3JlYXRlRFN0cmVhbQCBARBaU1REX2ZyZWVEU3RyZWFtAIIBElpTVERfRFN0cmVhbUluU2l6ZQCDARNaU1REX0RTdHJlYW1PdXRTaXplAFwQWlNURF9pbml0RFN0cmVhbQCEASBaU1REX2RlY29tcHJlc3NTdHJlYW1fc2ltcGxlQXJncwCGAQZmZmx1c2gAigEZX19pbmRpcmVjdF9mdW5jdGlvbl90YWJsZQEAEF9fZXJybm9fbG9jYXRpb24AjAEJc3RhY2tTYXZlAJQEDHN0YWNrUmVzdG9yZQCVBApzdGFja0FsbG9jAJYEFWVtc2NyaXB0ZW5fc3RhY2tfaW5pdAADGWVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2ZyZWUAqwEYZW1zY3JpcHRlbl9zdGFja19nZXRfZW5kAKwBDl9fY3hhX2RlbWFuZ2xlAMABCdMDAQBBAQv0ASQlJicoKSsuLzEzNTY3ODk6Ozw9Pj9AQUJDREWaAZsBrgGwAbIBtAGcAZwBtgG/Ab0BuQG0Ab4BvAG6Af8B/wH/AYACgQKDAoQCsgG0Aa4BhQKHArQBmwKSArQBnQKeArQBoQKjAqQCpQKmAqcCtAHYArQB2wK0Ad0CtAHiArQB5AK0AeUCtAHpArQB7gK0AfEC8gK0AfQC9QK0AfcC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QcMAIAJnawUgAkGQMWotAAALOgAAIAFBAWoiASAJRw0ACwsgACgCJCIBQQFGBH8gBCAAKAIoakEjOgAAIAAoAiQFIAELQQJGBEAgAyAAKAIoakE0OgAACwsfACAAQQh2IABqQYCACCAAa0ELdkEAIABBgIAISRtqC58CAQV/An9BRCAAKAKwBg0AGgJAIAAoAsgGIgFFDQAgACgAzAMiAgRAIAAoANADIAEgAhEAAAwBCyABEKEBCwJAIAAoAtgGIgFFDQAgASABKAIQIgNPBEAgASgCFCABTyEECyABQcglaigCACEFIAFBxCVqKAIAIQIgAUIANwIQIAFCADcCMCABQgA3AiggAUIANwIgIAFCADcCGAJAAkAgAwRAIAJFDQEgBSADIAIRAAALIAQNAiACRQ0BIAUgASACEQAADAILIAMQoQEgBA0BCyABEKEBCyAAQgA3A8gGIABBADYC6AYgAEIANwPgBiAAQgA3A9gGIABCADcD0AYgAEEMakEAQYwBEKcBGiAAQQE2AiwgAEEDNgI4QQALGguzAwEJfyAARQRAQQAPC0FAIQMCQCAAKALYAw0AIAAgACgCqAJPBEAgACgCrAIgAE8hBwsCQCAAKALIBiIBRQ0AIAAoAMwDIgQEQCAAKADQAyABIAQRAAAMAQsgARChAQsgAEGoAmohBCAAQcgGaiECAkAgACgC2AYiAUUNACABIAEoAhAiCE8EQCABKAIUIAFPIQYLIAFByCVqKAIAIQkgAUHEJWooAgAhAyABQRBqIgVCADcCACAFQgA3AiAgBUIANwIYIAVCADcCECAFQgA3AggCQAJAIAgEQCADRQ0BIAkgCCADEQAACyAGDQIgA0UNASAJIAEgAxEAAAwCCyAIEKEBIAYNAQsgARChAQsgAkIANwMAQQAhAyACQQA2AiAgAkIANwMYIAJCADcDECACQgA3AwggACgC0AMhBSAAKALMAyECIAAoAqgCIQEgBEIANwIgIARCADcCGCAEQgA3AhAgBEIANwIIIARCADcCAAJAIAFFDQAgAgRAIAUgASACEQAADAELIAEQoQELIAcNACAAKADMAyIBBEAgACgA0AMgACABEQAAQQAPCyAAEKEBCyADC/4BAQF/AkAgACgCsAYEQCABQeYAa0EGTwRAQUQhAyABQeQARw0CCyAAQQE2AgQLQVghAwJA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ByAKIQkMAgsCQCAAIBJPDQAgBC8AACAALwAARw0AIARBAmohBCAAQQJqIQALIAAgDkkEfyAAQQFqIAAgBC0AACAALQAARhsFIAALIAprCyIKQQFqIREgBiADayENIAEoAgwhAAJAAkAgBiAITQRAIAAgAykAADcAACAAIAMpAAg3AAggASgCDCEAIA1BEE0EQCABIAAgDWo2AgwMAwsgACADKQAQNwAQIAAgAykAGDcAGCANQSFIDQEgACANaiEEIANBEGohAyAAQSBqIQUDQCAFIAMpABA3AAAgBSADKQAYNwAIIAUgAykAIDcAECAFIAMpACg3ABggA0EgaiEDIAVBIGoiBSAESQ0ACwwBCyADIAhNBEAgACADKQAANwAAIAAgAykACDcACCAAIAggA2siGWohBCAZQRFOBEAgAEEQaiEAA0AgACADKQAQNwAAIAAgAykAGDcACCAAIAMpACA3ABAgACADKQAoNwAYIANBIGohAyAAQSBqIgAgBEkNAAsLIAghAyAEIQALIAMgBk8NAANAIAAgAy0AADoAACAAQQFqIQAgAyAFRyEEIANBAWohAyAEDQALCyABIAEoAgwgDWo2AgwgDUGAgARJDQAgAUEBNgIkIAEgASgCBCABKAIAa0EDdTYCKAsgCkEEaiEAIAEoAgQiA0EBNgIAIAMgDTsBBCARQYCABEkNACABQQI2AiQgASADIAEoAgBrQQN1NgIoCyADIBE7AQYgASADQQhqIgQ2AgQgFiAAIAZqIgNJBEAgAyEFDAELIAsgDCAXQQJqIgBqIgUpAABC48iVvcub741PfiAbiKdBAnRqIAA2AgAgCyADQQJrIgYpAABC48iVvcub741PfiAbiKdBAnRqIAYgDGs2AgAgEyAFKAAAQbHz3fF5bCAUdkECdGogADYCACATIANBAWsiACgAAEGx893xeWwgFHZBAnRqIAAgDGs2AgAgCSEAIAchBgNAAkAgBiEJIAAhBiAJRQ0AIAMoAAAiCiADIAlrKAAARw0AIANBBGoiByAJayEAAn8CQCAHIA9PBEAgByEFDAELIAciBSgAACAAKAAAcyINBEAgDWhBA3YMAgsDQCAAQQRqIQAgBUEEaiIFIA9PDQEgBSgAACAAKAAAcyINRQ0ACyAFIA1oQQN2aiAHawwBCwJAIAUgEk8NACAALwAAIAUvAABH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NwAAIAUgAykACDcACCABKAIMIQQgB0EQTQRAIAEgBCAHajYCDAwDCyAEIAMpABA3ABAgBCADKQAYNwAYIAdBIUgNASAEIAdqIQsgA0EQaiEDIARBIGohBQNAIAUgAykAEDcAACAFIAMpABg3AAggBSADKQAgNwAQIAUgAykAKDcAGCADQSBqIQMgBUEgaiIFIAtJDQALDAELIAMgCk0EQCAFIAMpAAA3AAAgBSADKQAINwAIIAUgCiADayILaiEEIAtBEU4EQCAFQRBqIQUDQCAFIAMpABA3AAAgBSADKQAYNwAIIAUgAykAIDcAECAFIAMpACg3ABggA0EgaiEDIAVBIGoiBSAESQ0ACwsgBCEFIAohAwsgAyAGTw0AA0AgBSADLQAAOgAAIAVBAWohBSADQQFqIgMgBkcNAAsLIAEgASgCDCAHajYCDCAHQYCABEkNACABQQE2AiQgASABKAIEIAEoAgBrQQN1NgIoCyABKAIEIgMgCEEDajYCACADIAc7AQQgDEGAgARPBEAgAUECNgIkIAEgAyABKAIAa0EDdTYCKAsgCSEHIAghCQwCCwJAIAAgE08NACAELwAAIAAvAABHDQAgBEECaiEEIABBAmohAAsgACAOSQR/IABBAWogACAELQAAIAAtAABGGwUgAAsgCGsLIghBAWohDCAGIANrIQsgASgCDCEAAkACQCAGIApNBEAgACADKQAANwAAIAAgAykACDcACCABKAIMIQAgC0EQTQRAIAEgACALajYCDAwDCyAAIAMpABA3ABAgACADKQAYNwAYIAtBIUgNASAAIAtqIQQgA0EQaiEDIABBIGohBQNAIAUgAykAEDcAACAFIAMpABg3AAggBSADKQAgNwAQIAUgAykAKDcAGCADQSBqIQMgBUEgaiIFIARJDQALDAELIAMgCk0EQCAAIAMpAAA3AAAgACADKQAINwAIIAAgCiADayIYaiEEIBhBEU4EQCAAQRBqIQADQCAAIAMpABA3AAAgACADKQAYNwAIIAAgAykAIDcAECAAIAMpACg3ABggA0EgaiEDIABBIGoiACAESQ0ACwsgCiEDIAQhAAsgAyAGTw0AA0AgACADLQAAOgAAIABBAWohACADIAVHIQQgA0EBaiEDIAQNAAsLIAEgASgCDCALajYCDCALQYCABEkNACABQQE2AiQgASAB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IAovAAAgBi8AAEcNACAKQQJqIQogBkECaiEGCyAGIAxJBH8gBkEBaiAGIAotAAAgBi0AAEYbBSAGCyAFawshCiAAIARrIQYgCkEIaiEFIAAgA00EQCAAIQoMAQsgCSARTARAIAAhCgwBCwNAIABBAWsiCi0AACAEQQFrIgQtAABHBEAgACEKDAILIAVBAWohBSADIApPDQEgCiEAIAQgGksNAAsLIAVBA2shEyAKIANrIQcgASgCDCEAAkACQCAKIA5NBEAgACADKQAANwAAIAAgAykACDcACCABKAIMIQAgB0EQTQRAIAEgACAHajYCDAwDCyAAIAMpABA3ABAgACADKQAYNwAYIAdBIUgNASAAIAdqIQQgA0EQaiEDIABBIGohAANAIAAgAykAEDcAACAAIAMpABg3AAggACADKQAgNwAQIAAgAykAKDcAGCADQSBqIQMgAEEgaiIAIARJDQALDAELIAMgDk0EQCAAIAMpAAA3AAAgACADKQAINwAIIAAgDiADayIJaiEEIAlBEU4EQCAAQRBqIQADQCAAIAMpABA3AAAgACADKQAYNwAIIAAgAykAIDcAECAAIAMpACg3ABggA0EgaiEDIABBIGoiACAESQ0ACwsgDiEDIAQhAAsgAyAKTw0AA0AgACADLQAAOgAAIABBAWohACADQQFqIgMgCkcNAAsLIAEgASgCDCAHajYCDCAHQYCABEkNACABQQE2AiQgASABKAIEIAEoAgBrQQN1NgIoCyABKAIEIgMgBkEDajYCACADIAc7AQQgE0GAgARPBEAgAUECNgIkIAEgAyABKAIAa0EDdTYCKAsgCAwCCwJAIAYgFE8NACAELwAAIAYvAABHDQAgBEECaiEEIAZBAmohBgsgBiAMSQR/IAZBAWogBiAELQAAIAYtAABGGwUgBgsgBWsLIgVBAWohEyAKIANrIQkgASgCDCEGAkACQCAKIA5NBEAgBiADKQAANwAAIAYgAykACDcACCABKAIMIQAgCUEQTQRAIAEgACAJajYCDAwDCyAAIAMpABA3ABAgACADKQAYNwAYIAlBIUgNASAAIAlqIQQgA0EQaiEDIABBIGohAANAIAAgAykAEDcAACAAIAMpABg3AAggACADKQAgNwAQIAAgAykAKDcAGCADQSBqIQMgAEEgaiIAIARJDQALDAELIAMgDk0E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IAyIp0ECdGogATYCACAEIAtC48iVvcub741PfiAKiKdBAnRqIAE2AgAgAkUNAiAEIAApAAFC48iVvcub741PfiAKiKdBAnRqIgMoAgBFBEAgAyABQQFqNgIACyAEIAApAAJC48iVvcub741PfiAKiKdBAnRqIgMoAgANAiADIAFBAmo2AgAMAgsgBSAAKQAAQuPIlb3Lm++NT34iCyAMiKdBAnRqIAE2AgAgBCALIAqIp0ECdGogATYCACACRQ0BIAQgACkAAULjyJW9y5vvjU9+IAqIp0ECdGoiAygCAEUEQCADIAFBAWo2AgALIAQgACkAAkLjyJW9y5vvjU9+IAqIp0ECdGoiAygCAA0BIAMgAUECajYCAAwBCyAEIAApAAFC48iVvcub741PfiAKiKdBAnRqIgMoAgBFBEAgAyABQQFqNgIACyAEIAApAAJC48iVvcub741PfiAKiKdBAnRqIgMoAgANACADIAFBAmo2AgALIABBA2ohASAAQQVqIAZNDQALCwuhBQIIfwF+IAAoAgQiCSAAKAIYaiIFQQNqIgMgAUEGayIKSQRAIAAoAiAhBEEgIAAoAoABIgFrIQZBwAAgAWutIQsgACgCiAEiAEEFayEHIABBBmshCANAIAUhACADIQUgACAJayEDIAQCfwJAAkACQAJAAkAgBw4EAQIDBAALIAAoAABBsfPd8XlsIAZ2DAQLIAApAABCgICA2Mub741PfiALiKcMAwsgACkAAEKAgOz8y5vvjU9+IAuIpwwCCyAAKQAAQoDGlf3Lm++NT34gC4inDAELIAApAABC48iVvcub741PfiALiKcLQQJ0aiADNgIAAkAgAkUNACAEAn8CQAJAAkACQCAEAn8CQAJAAkACQAJAAkAgBw4EAgAAAQALIAgOAgMEAgsgBCAAKQABQuPIlb3Lm++NT34gC4inQQJ0aiIBKAIARQRAIAEgA0EBajYCAAsgBCAAKQACQuPIlb3Lm++NT34gC4inQQJ0aiIAKAIADQogACADQQJqNgIADAoLIAQgACkAAUKAgIDYy5vvjU9+IAuIp0ECdGoiASgCAEUEQCABIANBAWo2AgALIAQgACkAAkKAgIDYy5vvjU9+IAuIp0ECdGoiACgCAEUNBAwJCyAAKAABQbHz3fF5bCAGdgwCCyAAKQABQoCA7PzLm++NT34gC4in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BEEHcSEEDAELIAAgBSgCRCIHRg0AIAUgACAAIAdrIARBA3YiBiAAIAZrIAdJGyIAayIGNgJAIAUgBigAACIGNgI4IAQgAEEDdGshBAsgBSAEICanIgBBGHYiB2oiBDYCPCAFIAdBAnRB0C1qKAIAIAZBACAEa3ZxIABB//8DcWo2AlQgBSAFQYABaiACQQNxQQR0aiIPKQMIIiQ3A9gBIAUgDykDACIlNwPQAQJAAkACQCAFKALMASIAICWnIgdqIhogGEsNACADIAUoAtQBIg0gB2oiCWogEEsNACAJQSBqIBcgA2tNDQELIAUgBSkD2AE3AyggBSAFKQPQATcDICADIBcgBUEgaiAFQcwBaiAYIBIgGyAVEH8hCQwBCyADIAdqIQQgJKchBiADIAApAAA3AAAgAyAAKQAINwAIAkAgB0ERSQ0AIAMgACkAEDcAECADIAApABg3ABggB0EQa0ERSA0AIABBEGohACADQSBqIQcDQCAHIAApABA3AAAgByAAKQAYNwAIIAcgACkAIDcAECAHIAApACg3ABggAEEgaiEAIAdBIGoiByAESQ0ACwsgBCAGayEAIAUgGjYCzAEgBCASayAGSQRAIAYgBCAba0sNByAVIBUgACASayIAaiIHIA1qTwRAIAQgByANEKgBGgwCCyAEIAdBACAAaxCoASEEIAUgACANaiINNgLUASAEIABrIQQgEiEACyAGQRBPBEAgBCAAKQAANwAAIAQgACkACDcACCANQRFIDQEgBCANaiEGIARBEGohBANAIAQgACkAEDcAACAEIAApABg3AAggBCAAKQAgNwAQIAQgACkAKDcAGCAAQSBqIQAgBEEgaiIEIAZJDQALDAELAkAgBkEHTQRAIAQgAC0AADoAACAEIAAtAAE6AAEgBCAALQACOgACIAQgAC0AAzoAAyAEIAAgBkECdCIGQfDGAGooAgBqIgAoAAA2AAQgACAGQZDHAGooAgBrIQAMAQsgBCAAKQAANwAACyANQQlJDQAgBCANaiEHIARBCGoiBiAAQQhqIgBrQQ9MBEADQCAGIAApAAA3AAAgAEEIaiEAIAZBCGoiBiAHSQ0ADAILAAsgBiAAKQAANwAAIAYgACkACDcACCANQRlIDQAgBEEYaiEEA0AgBCAAKQAQNwAAIAQgACkAGDcACCAEIAApACA3ABAgBCAAKQAoNwAYIABBIGohACAEQSBqIgQgB0kNAAsLIAlBiH9NBEAgDyAONgIAIA8gCiARaiAMazYCDCAPIAw2AgggDyAINgIEIAJBAWohAiADIAlqIQMgBSgCPCEGDAELCyAJIQsMBAsgEyACIBxrIgdKBEAgF0EgayENA0AgBSAFQYABaiAHQQNxQQR0aiIAKQMIIiQ3A9gBIAUgACkDACIlNwPQAQJAAkACQCAFKALMASIAICWnIglqIg4gGEsNACADIAUoAtQBIgIgCWoiCGogDUsNACAIQSBqIBcgA2tNDQELIAUgBSkD2AE3AxggBSAFKQPQATcDECADIBcgBUEQaiAFQcwBaiAYIBIgGyAVEH8hCAwBCyADIAlqIQQgJKchBiADIAApAAA3AAAgAyAAKQAINwAIAkAgCUERSQ0AIAMgACkAEDcAECADIAApABg3ABggCUEQa0ERSA0AIABBEGohACADQSBqIQwDQCAMIAApABA3AAAgDCAAKQAYNwAIIAwgACkAIDcAECAMIAApACg3ABggAEEgaiEAIAxBIGoiDCAESQ0ACwsgBCAGayEAIAUgDjYCzAEgBCASayAGSQRAIAYgBCAba0sNByAVIBUgACASayIAaiIJIAJqTwRAIAQgCSACEKgBGgwCCyAEIAlBACAAaxCoASEEIAUgACACaiICNgLUASAEIABrIQQgEiEACyAGQRBPBEAgBCAAKQAANwAAIAQgACkACDcACCACQRFIDQEgAiAEaiECIARBEGohBANAIAQgACkAEDcAACAEIAApABg3AAggBCAAKQAgNwAQIAQgACkAKDcAGCAAQSBqIQAgBEEgaiIEIAJJDQALDAELAkAgBkEHTQRAIAQgAC0AADoAACAEIAAtAAE6AAEgBCAALQACOgACIAQgAC0AAzoAAyAEIAAgBkECdCIGQfDGAGooAgBqIgAoAAA2AAQgACAGQZDHAGooAgBrIQAMAQsgBCAAKQAANwAACyACQQlJDQAgAiAEaiEJIARBCGoiBiAAQQhqIgBrQQ9MBEADQCAGIAApAAA3AAAgAEEIaiEAIAZBCGoiBiAJSQ0ADAILAAsgBiAAKQAANwAAIAYgACkACDcACCACQRlIDQAgBEEYaiEEA0AgBCAAKQAQNwAAIAQgACkAGDcACCAEIAApACA3ABAgBCAAKQAoNwAYIABBIGohACAEQSBqIgQgCUkNAAsLIAhBiH9LBEAgCCELDAYLIAMgCGohAyAHQQFqIgcgE0cNAAsLICAgBSkCZDcCACAgIAUoAmw2AgggBSgCzAEhBAtBun8hCyAYIARrIgAgFyADa0sNAiADRQRAQQAgAWshCwwDCyADIAQgABCmASAAaiABayELDAILIABBADYClOcBCyAFIAAoAujmASIENgLQASABIAJqIQ0gBCAAKAL45gFqIRICQCATRQRAIAEhAwwBCyAAKAK45QEhDyAAKAK05QEhECAAKAKw5QEhCCAAQQE2AvzlASAFIABBtNABaigCADYCbCAFIABBrNABaiIVKQIANwJkIAdFBEBBbCELDAILIAUgCjYCRCAFIApBBGo2AkgCfwJAIAdBBE8EQCAFIAogB0EEayIGaiICNgJAIAUgAigAACILNgI4IAcgCmpBAWstAAAiAg0BQWwhCwwECyAFIAo2AkAgBSAKLQAAIgs2AjgCQAJAAkAgB0ECaw4CAQACCyAKLQACQRB0IAtyIQsLIAUgCi0AAUEIdCALaiILNgI4CyAHIApqQQFrLQAAIgJFBEBBbCELDAQLQQAhBiACZyAHQQN0a0EJagwBCyAHQYh/SwRAQWwhCwwDCyACZ0EXawshAiAFIAtBACACIAAoAgAiAygCBCIEaiICa3YgBEECdEHQLWooAgBxIgQ2AkwCQCACQSBLBEAgAiEODAELIAZBBE4EQCAFIAJBB3EiDjYCPCAFIAogBiACQQN2ayIGaiICNgJAIAUgAigAACILNgI4DAELIAZFBEBBACEGIAIhDgwBCyAFIAogBiAGIAJBA3YiByAGIApqIAdrIApJGyIHayIGaiILNgJAIAUgCygAACILNgI4IAIgB0EDdGshDgsgBSADQQhqIgI2AlAgBSALQQAgACgCCCIHKAIEIgkgDmoiA2t2IAlBAnRB0C1qKAIAcSIMNgJUAkAgA0EgSw0AIAZBBE4EQCAFIAogBiADQQN2ayIGaiILNgJAIAUgCygAACILNgI4IANBB3EhAwwBCyAGRQRAQQAhBgwBCyAFIAogBiAGIANBA3YiCyAGIApqIAtrIApJGyIJayIGaiILNgJAIAUgCygAACILNgI4IAMgCUEDdGshAwsgBSAHQQhqIg42AlggBSAAKAIEIgkoAgQiACADaiIDNgI8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ACIIQQFqOwEAIAkgBSAIZ0Fgc2oiADoAAyAJIAggAHQgD2s7AQAgCSAEIAJBAnQiAGooAgA6AAIgCSAAIANqKAIANgIEIAFBAWoiASAMRw0ACwuuAQEBf0Gg6AkQoAEiAEUEQEEADwsgAEEANgL05gEgAEIANwLs5gEgAEEANgKc6AkgAEIANwLE5wEgAEEANgK05wEgAEEANgK45QEgAEIANwOA5wEgAEEANgLc5gEgAEIANwKU5wEgAEIANwLU5wEgAEGBgIDAADYCrOcBIABCgICAgBA3A+DmASAAQYjnAWpCADcDACAAQZznAWpCADcCACAAQaTnAWpBADYCACAACwYAIAAQcwsGAEGDgAgLngEBBH8gAEEANgLU5wEgAEEANgKc5wECQCAAKAKI5wEiAUUNACABQbjVAWooAgAhAyABQbTVAWooAgAhAgJAAkAgASgCACIEBEAgAkUNASADIAQgAhEAACADIAEgAhEAAAwDCyACRQ0BIAMgASACEQAADAILIAQQoQELIAEQoQELIABBADYCmOcBIABCADcDiOcBQQFBBSAAKALc5gEbC/wZAh1/An4jAEEQayITJAACQCACKAIIIgggAigCBCIKSwRAQbh/IQMMAQsgASgCCCIFIAEoAgQiBksEQEG6fyEDDAELIAEoAgAhBCACKAIAIQsCQCAAKALY5wFBAUcNACAAKAKc5wFFDQBBmH8hAyAAQeDnAWooAgAgBkcNASAAKALc5wEgBEcNASAAQeTnAWooAgAgBUcNAQsgBCAGaiEMIABBmCBqIRogAEGgMGohGyAAQRBqIRwgAEGs0AFqIRUgAEGo0ABqIR0gAEGs5QFqIRYgCiALaiIKIAggC2oiC2shFyAAQYjoCWohFCAAQcDlAWohDiAAQdznAWohECAAQfTlAWohDyAAQaTnAWohESAAQbTnAWohDSAAQZzoCWohGCAAQajmAWoiEiEeIAshBiAEIAVqIhkhCANAAkBBfyEDAn8CQAJ/AkACQAJAIA4gFAJ/AkACQAJAIAAoApznAQ4FAgEEAAUMCyAPKAIAIQcgACgCvOUBIQUMBwsgACgCwOcBDAELIABBATYCnOcBIABCADcDuOcBIABCADcCzOcBIABBADYCwOcBIABBADYCqOcBIBAgASkCADcCACAQIAEoAgg2AghBAAsgACgC3OYB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AwAgASkDCBCfATkDAAsDAAELUAEBfgJAIANBwABxBEAgASADQUBqrYYhAkIAIQEMAQsgA0UNACACIAOtIgSGIAFBwAAgA2utiIQhAiABIASGIQELIAAgATcDACAAIAI3AwgLUAEBfgJAIANBwABxBEAgAiADQUBqrYghAUIAIQIMAQsgA0UNACACQcAAIANrrYYgASADrSIEiIQhASACIASIIQILIAAgATcDACAAIAI3AwgL2QMCAn8CfiMAQSBrIgIkAAJAIAFC////////////AIMiBUKAgICAgIDAgDx9IAVCgICAgICAwP/DAH1UBEAgAUIEhiAAQjyIhCEFIABC//////////8PgyIAQoGAgICAgICACFoEQCAFQoGAgICAgICAwAB8IQQMAgsgBUKAgICAgICAgEB9IQQgAEKAgICAgICAgAiFQgBSDQEgBCAFQgGDfCEEDAELIABQIAVCgICAgICAwP//AFQgBUKAgICAgIDA//8AURtFBEAgAUIEhiAAQjyIhEL/////////A4NCgICAgICAgPz/AIQhBAwBC0KAgICAgICA+P8AIQQgBUL///////+//8MAVg0AQgAhBCAFQjCIpyIDQZH3AEkNACACQRBqIAAgAUL///////8/g0KAgICAgIDAAIQiBCADQYH3AGsQnQEgAiAAIARBgfgAIANrEJ4BIAIpAwhCBIYgAikDACIAQjyIhCEEIAIpAxAgAikDGIRCAFKtIABC//////////8Pg4QiAEKBgICAgICAgAhaBEAgBEIBfCEEDAELIABCgICAgICAgIAIhUIAUg0AIARCAYMgBHwhBAsgAkEgaiQAIAQgAUKAgICAgICAgIB/g4S/C9cuAQx/IwBBEGsiDCQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB9AFNBEBBkKcBKAIAIgVBECAAQQtqQXhxIABBC0kbIghBA3YiAnYiAUEDcQRAIAFBf3NBAXEgAmoiA0EDdCIBQcCnAWooAgAiBEEIaiEAAkAgBCgCCCICIAFBuKcBaiIBRgRAQZCnASAFQX4gA3dxNgIADAELQaCnASgCABogAiABNgIMIAEgAjYCCAsgBCADQQN0IgFBA3I2AgQgASAEaiIBIAEoAgRBAXI2AgQMDQsgCEGYpwEoAgAiCk0NASABBEACQEECIAJ0IgBB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AANAIAMgACgCACIBTwRAIAEgACgCBGogA0sNAwsgACgCCCIADQALC0EAEKUBIgFBf0YNBiACIQVB7KoBKAIAIgNBAWsiACABcQRAIAIgAWsgACABakEAIANrcWohBQsgBSAITQ0GIAVB/v///wdLDQZByKoBKAIAIgQEQEHAqgEoAgAiAyAFaiIAIANNDQcgACAESw0HCyAFEKUBIgAgAUcNAQwICyAFIAZrIAdxIgVB/v///wdLDQUgBRClASIBIAAoAgAgACgCBGpGDQQgASEACwJAIAhBMGogBU0NACAAQX9GDQBB8KoBKAIAIgEgCSAFa2pBACABa3EiAUH+////B0sEQCAAIQEMCAsgARClAUF/RwRAIAEgBWohBSAAIQEMCAtBACAFaxClARoMBQsgACIBQX9HDQYMBAsAC0EAIQMMBwtBACEBDAULIAFBf0cNAgtBzKoBQcyqASgCAEEEcjYCAAsgAkH+////B0sNASACEKUBIgFBABClASIATw0BIAFBf0YNASAAQX9GDQEgACABayIFIAhBKGpNDQELQcCqAUHAqgEoAgAgBWoiADYCAEHEqgEoAgAgAEkEQEHEqgEgADYCAAsCQAJAAkBBqKcBKAIAIgcEQEHQqgEhAANAIAEgACgCACIDIAAoAgQiAmpGDQIgACgCCCIADQALDAILQaCnASgCACIAQQAgACABTRtFBEBBoKcBIAE2AgALQQAhAEHUqgEgBTYCAEHQqgEgATYCAEGwpwFBfzYCAEG0pwFB6KoBKAIANgIAQdyqAUEANgIAA0AgAEEDdCIDQcCnAWogA0G4pwFqIgI2AgAgA0HEpwFqIAI2AgAgAEEBaiIAQSBHDQALQZynASAFQShrIgNBeCABa0EHcUEAIAFBCGpBB3EbIgBrIgI2AgBBqKcBIAAgAWoiADYCACAAIAJBAXI2AgQgASADakEoNgIEQaynAUH4qgEoAgA2AgAMAgsgASAHTQ0AIAMgB0sNACAAKAIMQQhxDQAgACACIAVqNgIEQainASAHQXggB2tBB3FBACAHQQhqQQdxGyIAaiICNgIAQZynAUGcpwEoAgAgBWoiASAAayIANgIAIAIgAEEBcjYCBCABIAdqQSg2AgRBrKcBQfiqASgCADYCAAwBC0GgpwEoAgAiAyABSwRAQaCnASABNgIAIAEhAwsgASAF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gYKECGwiATYCACADIAIgBGtBfHEiBGoiAkEEayABNgIAIARBCUkNACADIAE2AgggAyABNgIEIAJBCGsgATYCACACQQxrIAE2AgAgBEEZSQ0AIAMgATYCGCADIAE2AhQgAyABNgIQIAMgATYCDCACQRBrIAE2AgAgAkEUayABNgIAIAJBGGsgATYCACACQRxrIAE2AgAgBCADQQRxQRhyIgRrIgJBIEkNACABrUKBgICAEH4hBSADIARqIQEDQCABIAU3AxggASAFNwMQIAEgBTcDCCABIAU3AwAgAUEgaiEBIAJBIGsiAkEfSw0ACwsgAAvqAgEBfwJAIAAgAUYNACABIABrIAJrQQAgAkEBdGtNBEAgACABIAIQpgEPCyAAIAFzQQNxIQMCQAJAIAAgAUkEQCADBEAgACEDDAMLIABBA3FFBEAgACEDDAILIAAhAwNAIAJFDQQgAyABLQAAOgAAIAFBAWohASACQQFrIQIgA0EBaiIDQQNxDQALDAELAkAgAw0AIAAgAmpBA3EEQANAIAJFDQUgACACQQFrIgJqIgMgASACai0AADoAACADQQNxDQALCyACQQNNDQADQCAAIAJBBGsiAmogASACaigCADYCACACQQNLDQALCyACRQ0CA0AgACACQQFrIgJqIAEgAmotAAA6AAAgAg0ACwwCCyACQQNNDQADQCADIAEoAgA2AgAgAUEEaiEBIANBBGohAyACQQRrIgJBA0sNAAsLIAJFDQADQCADIAEtAAA6AAAgA0EBaiEDIAFBAWohASACQQFrIgINAAsLIAALWQEBfyAAIAAtAEoiAUEBayABcjoASiAAKAIAIgFBCHEEQCAAIAFBIHI2AgBBfw8LIABCADcCBCAAIAAoAiwiATYCHCAAIAE2AhQgACABIAAoAjBqNgIQQQALqgEBA38CQCABIAIoAhAiBAR/IAQFIAIQqQENASACKAIQCyACKAIUIgVrSwRAIAIgACABIAIoAiQRAgAaDwsCQCACLABLQQBIDQAgASEEA0AgBCIDRQ0BIAAgA0EBayIEai0AAEEKRw0ACyACIAAgAyACKAIkEQIAIANJDQEgACADaiEAIAEgA2shASACKAIUIQULIAUgACABEKYBGiACIAIoAhQgAWo2AhQLCwcAIwAjAWsLBAAjAQuQAQEDfyAAIQECQAJAIABBA3FFDQAgAC0AAEUEQEEADwsDQCABQQFqIgFBA3FFDQEgAS0AAA0ACwwBCwNAIAEiAkEEaiEBIAIoAgAiA0F/cyADQYGChAhrcUGAgYKEeHFFDQALIANB/wFxRQRAIAIgAGsPCwNAIAItAAEhAyACQQFqIgEhAiADDQALCyABIABrCwMAAAu7AQECfyMAQaABayIEJAAgBEEIakGQzABBkAEQpgEaAkACQCABQQFrQf////8HTwRAIAENAUEBIQEgBEGfAWohAAsgBCAANgI0IAQgADYCHCAEQX4gAGsiBSABIAEgBUsbIgE2AjggBCAAIAFqIgA2AiQgBCAANgIYIARBCGogAiADEJEBIQAgAUUNASAEKAIcIgEgASAEKAIYRmtBADoAAAwBC0HApgFBPTYCAEF/IQALIARBoAFqJAAgAAs0AQF/IAAoAhQiAyABIAIgACgCECADayIBIAEgAksbIgEQpgEaIAAgACgCFCABajYCFCACCyoBAX8jAEEQayIEJAAgBCADNgIMIAAgASACIAMQrwEhACAEQRBqJAAgAAsEACAAC00BAn8gAS0AACECAkAgAC0AACIDRQ0AIAIgA0cNAANAIAEtAAEhAiAALQABIgNFDQEgAUEBaiEBIABBAWohACACIANGDQALCyADIAJrCwcAIAAQoQELLQAgAkUEQCAAKAIEIAEoAgRGDwsgACABRgRAQQEPCyAAKAIEIAEoAgQQswFFC58BAQF/IwBBQGoiAyQAAn9BASAAIAFBABC1AQ0AGkEAIAFFDQAaQQAgARC3ASIBRQ0AGiADQQhqQQRyQQBBNBCnARogA0EBNgI4IANBfzYCFCADIAA2AhAgAyABNgIIIAEgA0EIaiACKAIAQQEgASgCACgCHBEMACADKAIgIgBBAUYEQCACIAMoAhg2AgALIABBAUYLIQAgA0FAayQAIAALqQIBBH8jAEFAaiIBJAAgACgCACICQQRrKAIAIQMgAkEIaygCACEEIAFBADYCFCABQfjNADYCECABIAA2AgwgAUGozgA2AghBACECIAFBGGpBAEEnEKcBGiAAIARqIQACQCADQajOAEEAELUBBEAgAUEBNgI4IAMgAUEIaiAAIABBAUEAIAMoAgAoAhQRDgAgAEEAIAEoAiBBAUYbIQIMAQsgAyABQQhqIABBAUEAIAMoAgAoAhgRCgACQAJAIAEoAiwOAgABAgsgASgCHEEAIAEoAihBAUYbQQAgASgCJEEBRhtBACABKAIwQQFGGyECDAELIAEoAiBBAUcEQCABKAIwDQEgASgCJEEBRw0BIAEoAihBAUcNAQsgASgCGCECCyABQUBrJAAgAgtdAQF/IAAoAhAiA0UEQCAAQQE2AiQgACACNgIYIAAgATYCEA8LAkAgASADRgRAIAAoAhhBAkcNASAAIAI2AhgPCyAAQQE6ADYgAEECNgIYIAAgACgCJEEBajYCJAsLGgAgACABKAIIQQAQtQEEQCABIAIgAxC4AQsLMwAgACABKAIIQQAQtQEEQCABIAIgAxC4AQ8LIAAoAggiACABIAIgAyAAKAIAKAIcEQwAC6MBACAAQQE6ADUCQCAAKAIEIAJHDQAgAEEBOgA0IAAoAhAiAkUEQCAAQQE2AiQgACADNgIYIAAgATYCECADQQFHDQEgACgCMEEBRw0BIABBAToANg8LIAEgAkYEQCAAKAIYIgJBAkYEQCAAIAM2AhggAyECCyAAKAIwQQFHDQEgAkEBRw0BIABBAToANg8LIABBAToANiAAIAAoAiRBAWo2AiQLC4oCACAAIAEoAgggBBC1AQRAAkAgASgCBCACRw0AIAEoAhxBAUYNACABIAM2AhwLDwsCQCAAIAEoAgAgBBC1AQRAAkAgAiABKAIQRwRAIAEoAhQgAkcNAQsgA0EBRw0CIAFBATYCIA8LIAEgAzYCIAJAIAEoAixBBEYNACABQQA7ATQgACgCCCIAIAEgAiACQQEgBCAAKAIAKAIUEQ4AIAEtADUEQCABQQM2AiwgAS0ANEUNAQwDCyABQQQ2AiwLIAEgAjYCFCABIAEoAihBAWo2AiggASgCJEEBRw0BIAEoAhhBAkcNASABQQE6ADYPCyAAKAIIIgAgASACIAMgBCAAKAIAKAIYEQoACwupAQAgACABKAIIIAQQtQEEQAJAIAEoAgQgAkcNACABKAIcQQFGDQAgASADNgIcCw8LAkAgACABKAIAIAQQtQFFDQACQCACIAEoAhBHBEAgASgCFCACRw0BCyADQQFHDQEgAUEBNgIgDwsgASACNgIUIAEgAzYCICABIAEoAihBAWo2AigCQCABKAIkQQFHDQAgASgCGEECRw0AIAFBAToANgsgAUEENgIsCws5ACAAIAEoAgggBRC1AQRAIAEgAiADIAQQuwEPCyAAKAIIIgAgASACIAMgBCAFIAAoAgAoAhQRDgALHAAgACABKAIIIAUQtQEEQCABIAIgAyAEELsBCwv4AQEFfyMAQdAjayIFJAACQAJAIAAEQCABRQ0BIAINAQtBACEAIANFDQEgA0F9NgIADAELIAVBIGoiByAAIAAQrQEgAGoQxQFBACEAIAVBCGoiBEEANgIIIARCADcCACAEQX82AgwgBEF/NgIQAkAgBxDBASIIRQRAQX4hBgwBC0F/IQYgASACIAQQwgFFDQAgCCIAIAQgACgCACgCEBEAACAALQAFQQFHBEAgACAEIAAoAgAoAhQRAAALQQAhBiAEQQAQwwEgAgRAIAIgBCgCBDYCAAsgBCgCACEACyADBEAgAyAGNgIACyAHEMQBCyAFQdAjaiQAIAAL9gMBA38jAEHgAGsiASQAIAEgAUHYAGpBuM8AEMYBKQIANwMgAkACQCAAIAFBIGoQxwFFBEAgASABQdAAakG7zwAQxgEpAgA3AxggACABQRhqEMcBRQ0BCyABIAAQyAEiAjYCTCACRQRAQQAhAgwCCyAAKAIAIgMgACgCBEcEfyADLAAABUEAC0H/AXFBLkYEQCABIABBoANqIAFBzABqAn8gACgCACEDIAFBQGsiAiAAKAIENgIEIAIgAzYCACACCxDcASICNgJMIAAgACgCBDYCAAtBACACIAAoAgQgACgCAGsbIQIMAQsgASABQThqQb/PABDGASkCADcDEAJAIAAgAUEQahDHAUUEQCABIAFBMGpBxM8AEMYBKQIANwMIIAAgAUEIahDHAUUNAQsgASAAEMgBIgM2AkwgA0UNASABIAFBKGpBys8AEMYBKQIANwMAIAAgARDHAUUNASAAQd8AEMkBIQMgAUFAayAAQQAQygEgA0EAIAFBQGsiAygCACADKAIERhsNASAAKAIAIgMgACgCBEcEfyADLAAABUEAC0H/AXFBLkYEQCAAIAAoAgQ2AgALIAAoAgQgACgCAGsNASAAQdjPACABQcwAahDLASECDAELQQAgABDMASAAKAIEIAAoAgBrGyECCyABQeAAaiQAIAILNgAgAgJ/IABFBEBBgAhBgAgQoAEiAA0BGkEADwsgASgCAAs2AgggAiAANgIAIAJBADYCBEEBCycBAX8gAEEBEM0BIAAgACgCBCICQQFqNgIEIAIgACgCAGogAToAAAs3ACAAQaADahDSASAAQegCahDOASAAQcwCahDOASAAQaACahDOASAAQZQBahDOASAAQQhqEM4BC3UAIAAgAjYCBCAAIAE2AgAgAEEIahDPASAAQZQBahDPASAAQaACahDQARogAEHMAmoQ0QEaIABB6AJqENEBGiAAQgA3AowDIABBfzYCiAMgAEEBOwGEAyAAQQA2ApQDIABCADcDoAMgAEGgA2oiACAANgKAIAsYACAAIAE2AgAgACABEK0BIAFqNgIEIAALbQIDfwF+IwBBIGsiAyQAIAAoAgAhBCADQRhqIgIgACgCBDYCBCACIAQ2AgAgAyABKQIAIgU3AwggAyAFNwMQIAIgA0EIahDTASICBEAgACAAKAIAIAEoAgQgASgCAGtqNgIACyADQSBqJAAgAgurBAEFfyMAQUBqIgEkAAJAIAAoAgAiAiAAKAIERwR/IAIsAAAFQQALQRh0QRh1IgJB1ABHQQAgAkH/AXFBxwBHG0UEQCAAENQBIQAMAQsgASAANgI4IAEgACICAn8gAUEoaiIAQQA6AAggAEEANgIEIABBADsBACAAIAIoAuwCIAIoAugCa0ECdTYCDCAAIgQLENUBIgM2AiRBACEAIANFDQAgAiAEENYBDQAgAyEAIAFBOGoQ1wENACABQQA2AiAgASABQRhqQfrPABDGASkCADcDAAJAIAIgARDHAQRAIAJBCGoiACIDKAIEIAMoAgBrQQJ1IQMDQCACQcUAEMkBRQRAIAEgAhDYASIFNgIQIAVFDQMgACABQRBqENkBDAELCyABQRBqIAIgAxDaASABIAJBoANqIAFBEGoQ+AE2AiALIAFBADYCDAJAIAEtACgNACAELQABRQ0AIAEgAhDMASIANgIMIABFDQELIAJB9gAQyQEEQCACIAFBDGogAUEkagJ/IAFBEGoiAEIANwIAIAALIAFBIGogBEEEaiAEQQhqENsBIQAMAgsgAkEIaiIAIgMoAgQgAygCAGtBAnUhAwNAIAEgAhDMASIFNgIQIAVFDQEgACABQRBqENkBIAFBOGoQ1wFFDQALIAFBEGogAiADENoBIAIgAUEMaiABQSRqIAFBEGogAUEgaiAEQQRqIARBCGoQ2wEhAAwBC0EAIQALIAFBQGskACAACzQBAn8CQCAAKAIAIgMgACgCBEYNACADLAAAIAFB/wFxRw0AQQEhAiAAIANBAWo2AgALIAILfwEBfyABKAIAIQMgAgRAIAFB7gAQyQEaCwJAIAEoAgQgASgCAEYNACABKAIAIgIsAABBMGtBCk8NAANAAkAgASgCBCABKAIARg0AIAIsAABBMGtBCUsNACABIAJBAWoiAjYCAAwBCwsgACACNgIEIAAgAzYCAA8LIABCADcCAAsPACAAQaADaiABIAIQ3QELshEBBX8jAEEgayICJAAgAkEANgIcAkACQCACAn8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCACIDIAAoAgRHBH8gAywAAAVBAAtBGHRBGHUiA0HBAGsOOhkiHxciGCAiIiIAIhoiHhwiHSEbJQAiIiIiIiIiIiIiBQMEEhMRFAYJCiILDA8QIiIABwgWAQINDhUiCwJAQQJBASADQfIARiIDGyADIAMgACgCBCAAKAIAIgRrSQR/IAMgBGosAAAFQQALQf8BcUHWAEYbIgMiBCAAKAIEIAAoAgAiBWtJBH8gBCAFaiwAAAVBAAtB/wFxQcsARiADaiIDIgQgACgCBCAAKAIAIgVrSQR/IAQgBWosAAAFQQALQRh0QRh1Qf8BcUHEAGsOAwAlJiULIANBAWoiAyAAKAIEIAAoAgAiBGtJBH8gAyAEaiwAAAVBAAtBGHRBGHVB/wFxIgNB7wBrIgRBCUsNI0EBIAR0QYEGcUUNIwwlCyAAIAAoAgBBAWo2AgAgAEG4lQEQ3gEhAQwnCyAAIAAoAgBBAWo2AgAgAEGj2QAQ3gEhAQwmCyAAIAAoAgBBAWo2AgAgAEG9lQEQ3gEhAQwlCyAAIAAoAgBBAWo2AgAgAEGz2QAQ3gEhAQwkCyAAIAAoAgBBAWo2AgAgAEG42QAQ3gEhAQwjCyAAIAAoAgBBAWo2AgAgAEHE2QAQ3gEhAQwiCyAAIAAoAgBBAWo2AgAgAEHS2QAQ3gEhAQwhCyAAIAAoAgBBAWo2AgAgAEHY2QAQ3gEhAQwgCyAAIAAoAgBBAWo2AgAgAEHClQEQ3gEhAQwfCyAAIAAoAgBBAWo2AgAgAEHGlQEQ3gEhAQweCyAAIAAoAgBBAWo2AgAgAEHTlQEQ3gEhAQwdCyAAIAAoAgBBAWo2AgAgAEHYlQEQ3gEhAQwcCyAAIAAoAgBBAWo2AgAgAEHmlQEQ3gEhAQwbCyAAIAAoAgBBAWo2AgAgAEGgA2pB8JUBEJMCIQEMGgsgACAAKAIAQQFqNgIAIABB9tkAEN4BIQEMGQsgACAAKAIAQQFqNgIAIABB/9kAEN4BIQEMGAsgACAAKAIAQQFqNgIAIABBg5YBEN4BIQEMFwsgACAAKAIAQQFqNgIAIABBoANqQYmWARCTAiEBDBYLIAAgACgCAEEBajYCACAAQZCWARDeASEBDBULIAAgACgCAEEBajYCACAAQZyWARDeASEBDBQLIAAgACgCAEEBajYCACAAQYTmABDeASEBDBMLIAAgACgCAEEBajYCACACQRBqIAAQ3wEgAigCECACKAIURg0MIAIgACACQRBqEOABNgIcDBELAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIEIAAoAgAiA2tBAUsEfyADLAABBUEAC0EYdEEYdUHPAGsOKg0fHx8fCh8fHx8fHx8fHx8fHwcfCAABAh8DBB8fHx8JDQwfHwUKBgsNDR8LIAAgACgCAEECajYCACAAQaeWARDeASEBDB4LIAAgACgCAEECajYCACAAQbGWARDeASEBDB0LIAAgACgCAEECajYCACAAQbyWARDeASEBDBwLIAAgACgCAEECajYCACAAQcaWARDeASEBDBsLIAAgACgCAEECajYCACAAQdCWARDeASEBDBoLIAAgACgCAEECajYCACAAQdmWARDeASEBDBkLIAAgACgCAEECajYCACAAQeKWARDeASEBDBgLIAAgACgCAEECajYCACAAQavWABDeASEBDBcLIAAgACgCAEECajYCACAAQeqWARDeASEBDBYLIAAgACgCAEECajYCACAAQfmWARDeASEBDBULIAAQ4QEMEgsgABDiAQwRCyAAIAAoAgBBAmo2AgAgAiAAEMwBIgM2AhAgA0UNEiACIAAgAkEQahDjATYCHAwRCyAAEOQBDA8LIAAQ5AEMDgsgABDlAQwNCyAAEOYBDAwLAkACQAJAIAAoAgQgACgCACIDa0EBSwR/IAMsAAEFQQALQRh0QRh1Qf8BcSIDQfMAaw4DAQIBAAsgA0HlAEcNAQsgABDnAQwMCyAC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ACABQdAAahCrAiECDBELIARB1gBHDRAgACADQQJqNgIAIAEgAUHQBGpB8NcAEMYBKQIANwNYIAAgAUHYAGoQqwIhAgwQCwJAAkACQCADLAABIgRB7wBrDgMAEgIBCyAAIANBAmo2AgAgASABQcgEakHz1wAQxgEpAgA3A2AgACABQeAAahCrAiECDBELIARBzwBHDRAgACADQQJqNgIAIAEgAUHABGpB9dcAEMYBKQIANwNoIAAgAUHoAGoQqwIhAgwQCyAAIANBAmo2AgAgASABQbgEakH41wAQxgEpAgA3A3AgACABQfAAahCrAiECDA8LIAMsAAEiBEH0AEcEQCAEQeUARw0PIAAgA0ECajYCACABIAFBsARqQfvXABDGASkCADcDeCAAIAFB+ABqEKsCIQIMDwsgACADQQJqNgIAIAEgAUGoBGpB/tcAEMYBKQIANwOAASAAIAFBgAFqEKsCIQIMDgsgAywAASIEQewARwRAIARB+ABHDQ4gACADQQJqNgIAIAEgABD1ASICNgL4BCACRQ0NIAEgABD1ASICNgKEBSACRQ0NIABBoANqQRAQ+wEgASgC+AQgASgChAUQqQMhAgwOCyAAIANBAmo2AgAgAEEIaiIDIgQoAgQgBCgCAGtBAnUhBANAIABBxQAQyQFFBEAgASAAELECIgU2AvgEIAVFDQ8gAyABQfgEahDZAQwBCwsgAUEANgKEBSABQfgEaiAAIAQQ2gEgAEGgA2ogAUGEBWogAUH4BGoQxwIhAgwNCwJAAkACQAJAIAMsAAEiBEHzAGsOAgEDAAsgBEHTAEYNASAEQeUARw0PIAAgA0ECajYCACABIAFBoARqQYDYABDGASkCADcDiAEgACABQYgBahCrAiECDA8LIAAgA0ECajYCACABIAFBmARqQYPYABDGASkCADcDkAEgACABQZABahCrAiECDA4LIAAgA0ECajYCACABIAFBkARqQYbYABDGASkCADcDmAEgACABQZgBahCrAiECDA0LIAAgA0ECajYCACABIAFBiARqQYrYABDGASkCADcDoAEgACABQaABahCrAiECDAwLAkACQAJAAkACQAJAIAMsAAEiBEHpAGsOBQEREQMFAAsgBEHJAGsOBAEQEAMQCyAAIANBAmo2AgAgASABQYAEakGM2AAQxgEpAgA3A6gBIAAgAUGoAWoQqwIhAgwPCyAAIANBAmo2AgAgASABQfgDakGO2AAQxgEpAgA3A7ABIAAgAUGwAWoQqwIhAgwOCyAAIANBAmo2AgAgASABQfADakHn1wAQxgEpAgA3A7gBIAAgAUG4AWoQqwIhAgwNCyAAIANBAmo2AgAgASABQegDakGR2AAQxgEpAgA3A8ABIAAgAUHAAWoQqwIhAgwMCyAAIANBAmo2AgAgAEHfABDJAQRAIAEgAUHgA2pBlNgAEMYBKQIANwPIASAAIAFByAFqEKwCIQIMDAsgASAAEPUBIgI2AvgEIAJFDQogACABQfgEakGU2AAQsgIhAgwLCwJAAkACQAJAAkACQCADLAABIgRB4QBrDgcBEBAQAhADAAsgBEH0AGsOBQMPDwAEDwsgABCzAiECDA4LIAAgA0ECajYCACABIAFB2ANqQZfYABDGASkCADcD0AEgACABQdABahCrAiECDA0LIAAgA0ECajYCACABIAFB0ANqQYzYABDGASkCADcD2AEgACABQdgBahCsAiECDAwLIAAgA0ECajYCACABIAFByANqQZrYABDGASkCADcD4AEgACABQeABahCsAiECDAsLIAAgA0ECajYCACABIAAQ9QEiAjYC+AQgAkUNCSAAQaADakGc2AAgAUH4BGpBstcAELYCIQIMCgsCQAJAAkACQCADLAABIgRB7gBrDgUAAQ0NAgMLIAAQrwIhAgwMCyAAIANBAmo2AgAgASABQcADakGn2AAQxgEpAgA3A+gBIAAgAUHoAWoQqwIhAgwLCyAAIANBAmo2AgAgASABQbgDakGq2AAQxgEpAgA3A/ABIAAgAUHwAWoQqwIhAgwKCyAEQdIARw0JIAAgA0ECajYCACABIAFBsANqQazYABDGASkCADcD+AEgACABQfgBahCrAiECDAkLAkACQAJAAkACQAJAIAMsAAEiBEHsAGsOCQEADg4DDg4EBQILIAAgA0ECajYCACABIAFBqANqQa/YABDGASkCADcDgAIgACABQYACahCrAiECDA0LIAAgA0ECajYCACABIAFBoANqQbPYABDGASkCADcDiAIgACABQYgCahCrAiECDAwLIARBzABHDQsgACADQQJqNgIAIAEgAUGYA2pBtdgAEMYBKQIANwOQAiAAIAFBkAJqEKsCIQIMCwsgACADQQJqNgIAIABB3wAQyQEEQCABIAFBkANqQbjYABDGASkCADcDmAIgACABQZgCahCsAiECDAsLIAEgABD1ASICNgL4BCACRQ0JIAAgAUH4BGpBuNgAELICIQIMCgsgACADQQJqNgIAIAEgAUGIA2pBs9gAEMYBKQIANwOgAiAAIAFBoAJqEKwCIQIMCQsgACADQQJqNgIAIAEgABD1ASICNgL4BCACRQ0HIAEgABD1ASICNgKEBSACRQ0HIAAgAUH4BGpBu9gAIAFBhAVqELACIQIMCAsgAy0AAUH1AEcNByAAIANBAmo2AgAgASAAEPUBIgI2AvgEIAJFDQYgASAAEPUBIgI2AoQFIAJFDQYgASAAEPUBIgI2AoQDIAJFDQYgAEGgA2pBFBD7ASABKAL4BCABKAKEBSABKAKEAxC3AyECDAcLAkACQCADLAABIgRBzQBHBEAgBEHTAEYNAiAEQfMARg0BIARB7QBHBEAgBEHjAEcNCiAAIANBAmo2AgAgASAAEMwBIgI2AvgEIAJFDQkgASAAEPUBIgI2AoQFIAJFDQkgAEGgA2pBvtgAIAFB+ARqIAFBhAVqEL0CIQIMCgsgACADQQJqNgIAIAEgAUH4AmpBz9gAEMYBKQIANwOoAiAAIAFBqAJqEKsCIQIMCQsgACADQQJqNgIAIAEgAUHwAmpB0dgAEMYBKQIANwOwAiAAIAFBsAJqEKsCIQIMCAsgACADQQJqNgIAIAEgAUHoAmpB1NgAEMYBKQIANwO4AiAAIAFBuAJqEKsCIQIMBwsgACADQQJqNgIAIAEgAUHgAmpB19gAEMYBKQIANwPAAiAAIAFBwAJqEKsCIQIMBgsCQAJAAkACQAJAAkACQCADLAABIgRB8ABrDgUBDAIMAwALIARB0ABGDQUgBEHaAEYNBCAEQfoARg0DIARB4wBHDQsgACADQQJqNgIAIAEgABDMASICNgL4BCACRQ0KIAEgABD1ASICNgKEBSACRQ0KIABBoANqQdvYACABQfgEaiABQYQFahC9AiECDAsLIAAgA0ECajYCACABIAAQ9QEiAjYC+AQgAkUNCSAAIAFB+ARqEOMBIQIMCgsgABCvAiECDAkLIAAgA0ECajYCACABIAAQzAEiAjYC+AQgAkUNByAAQefYACABQfgEahCVAiECDAgLIAAgA0ECajYCACABIAAQ9QEiAjYC+AQgAkUNBiAAQefYACABQfgEahCVAiECDAcLIAAgA0ECajYCACAAKAIAIgMgACgCBEcEfyADLAAABUEAC0EYdEEYdSIDQeYARwRAIANB/wFxQdQARw0HIAEgABDoASICNgL4BCACRQ0GIABBoANqIAFB+ARqEMoCIQIMBwsgASAAEKkCIgI2AvgEIAJFDQUgACABQfgEahC0AiECDAYLIAAgA0ECajYCACAAQQhqIgMiBCgCBCAEKAIAa0ECdSEEA0AgAEHFABDJAUUEQCABIAAQ2AEiBTYC+AQgBUUNByADIAFB+ARqENkBDAELCyABQfgEaiAAIAQQ2gEgASAAQaADaiABQfgEahDLAjYChAUgACABQYQFahC0AiECDAULAkACQAJAAkACQCADLAABIgRB6QBrDgQBCQkCAAsgBEH3AEYNAyAEQfIARg0CIARB5QBHDQggACADQQJqNgIAIAEgABD1ASICNgL4BCACRQ0HIABB/NgAIAFB+ARqEJUCIQIMCAsgACADQQJqNgIAIAEgABDMASICNgL4BCACRQ0GIABB/NgAIAFB+ARqEJUCIQIMBwsgACADQQJqNgIAIAEgABDMASICNgKEBSACRQ0FIABBCGoiAiIDKAIEIAMoAgBrQQJ1IQMDQCAAQcUAEMkBRQRAIAEgABCxAiIENgL4BCAERQ0HIAIgAUH4BGoQ2QEMAQsLIAFB+ARqIAAgAxDaASAAQaADaiABQYQFaiABQfgEahDMAiECDAYLIAAgA0ECajYCACAAQYXZABDeASECDAULIAAgA0ECajYCACABIAAQ9QEiAjYC+AQgAkUNAyAAQaADaiABQfgEahDNAiECDAQLIARBMWtBCUkNAQsgASABQdgCakGL2QAQxgEpAgA3AwggACABQQhqEMcBBEAgASAAEMwBIgI2AvgEIAJFDQIgACABQfgEahC1AiECDAMLIAEgAUHQAmpBl9kAEMYBKQIANwMAIAAgARDHAUUNAiABIAAQ9QEiAjYC+AQgAkUNASAAIAFB+ARqELUCIQIMAgsgABCvAiECDAELQQAhAgsgAUHABWokACACC+oKAQN/IwBBsAJrIgEkAAJAIABBzAAQyQFFDQACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAoAgAiAyAAKAIERwR/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AX4gAEEBOgAHIABBAToABiAAQQE6AAUgAEEUOgAEIABBnNMANgIAIABBhNIANgIAIAEpAgAhAyAAIAI2AhAgACADNwIIIAALRAEBfyABQQhqEKABIgFFBEBBuKYBKAIAEQsAAAsgACgCgCAiACgCACECIAFBADYCBCABIAI2AgAgACABNgIAIAFBCGoLOQECf0GAIBCgASIBRQRAQbimASgCABELAAALIAAoAoAgIQIgAUEANgIEIAEgAjYCACAAIAE2AoAgCwQAQQALBAAgAAteAgF/AX4jAEEQayICJAAgAiAAKQIIIgM3AwAgAiADNwMIIAEgAhCCAiAAKAIQIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsgAkEQaiQACz4BAX8gASgCBCABKAIAayICBEAgACACEM0BIAAoAgAgACgCBGogASgCACACEKgBGiAAIAAoAgQgAmo2AgQLCwMAAQsJACAAQgA3AgALAwAAC0AAIABBAToAByAAQQE6AAYgAEEBOgAFIABBFToABCAAQZzTADYCACAAIAI2AgwgACABNgIIIABByNMANgIAIAALqQEBAn8jAEEgayICJAAgAiACQRhqQbTUABDGASkCADcDCCABIAJBCGoQggIgACgCCCIDIAEgAygCACgCEBEAACADLQAFQQFHBEAgAyABIAMoAgAoAhQRAAALIAIgAkEQakHN1AAQxgEpAgA3AwAgASACEIICIAAoAgwiACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACyACQSBqJAALbAEBfyMAQRBrIgEkACABQQA2AgwgAEHyABDJAQRAIAEgASgCDEEEcjYCDAsgAEHWABDJAQRAIAEgASgCDEECcjYCDAsgAEHLABDJAQRAIAEgASgCDEEBcjYCDAsgASgCDCEAIAFBEGokACAAC4YBAQJ/IwBBEGsiAiQAIAIgATYCDCABBH8CQCAAKAIAIgMoAgAEQCAAKAIEQaADakEQEPsBIAMoAgAgAigCDBCcAiEBIAAoAgAgATYCAAwBCyADIAE2AgALIAAoAggoAgAiAQRAIAFBADoAAQsgACgCACgCAEEARwVBAAshACACQRBqJAAgAAu9AwEEfyMAQSBrIgMkAAJAIAEoAgAiBC0ABEEpRw0AIAMgBCgCCCIENgIcIARBAmtBA0sNACABIABBoANqIANBHGoQvgM2AgALAkAgAEHDABDJAQRAQQAhBCAAQckAEMkBIQUgACgCACIGIAAoAgRHBH8gBiwAAAVBAAtBGHRBGHVBMWtB/wFxQQRLDQEgAyAAKAIAIgYgACgCBEcEfyAGLAAABUEAC0EYdEEYdUEwazYCGCAAIAAoAgBBAWo2AgAgAgRAIAJBAToAAAsCQCAFRQ0AIAAgAhDVAQ0ADAILIANBADoAFyAAIAEgA0EXaiADQRhqEJYCIQQMAQtBACEEIAAoAgAiBSAAKAIERwR/IAUsAAAFQQALQf8BcUHEAEcNACAAKAIEIAAoAgAiBWtBAUsEfyAFLAABBUEAC0EYdEEYdUH/AXFBMGsiBUEFSw0AIAVBA0YNACADIAAoAgQgACgCACIEa0EBSwR/IAQsAAEFQQALQRh0QRh1QTBrNgIQIAAgACgCAEECajYCACACBEAgAkEBOgAACyADQQE6AA8gACABIANBD2ogA0EQahCWAiEECyADQSBqJAAgBAtoAQF/IwBBEGsiAiQAIAIgATYCDAJ/AkADQCAAQcIAEMkBRQ0BIAIgABDfASACKAIAIAIoAgRHBEAgAiAAQaADaiACQQxqIAIQwwM2AgwMAQsLQQAMAQsgAigCDAshACACQRBqJAAgAAv/AQEDfyMAQSBrIgIkAAJ/AkACQAJ/IAAoAgAiAyAAKAIERwR/IAMsAAAFQQALQRh0QRh1IgNB1QBGBEAgACABEJcCDAELIANBMWtB/wFxQQhNBEAgABCYAgwBCyACIAJBGGpBzooBEMYBKQIANwMIIAAgAkEIahDHAQRAIABBCGoiASIDKAIEIAMoAgBrQQJ1IQMDQCACIAAQmAIiBDYCECAERQ0DIAEgAkEQahDZASAAQcUAEMkBRQ0ACyACQRBqIAAgAxDaASAAQaADaiACQRBqEMYDIQEMAwsgACABEJkCCyIBDQELQQAMAQsgACABEIsCCyEAIAJBIGokACAAC60BAQJ/AkAgACABRg0AIAAsAAAiAkHfAEYEQCAAQQFqIAFGDQEgACwAASICQTBrQQlNBEAgAEECag8LIAJB3wBHDQEgAEECaiECA0AgASACRg0CIAIsAAAiA0Ewa0EJTQRAIAJBAWohAgwBCwsgAkEBaiAAIANB3wBGGw8LIAJBMGtBCUsNACAAIQIDQCABIAJBAWoiAkYEQCABDwsgAiwAAEEwa0EKSQ0ACwsgAAsaACAAQaADakEQEPsBIAEoAgAgAigCABDIAwsVACAAQaADakEMEPsBIAEoAgAQyQMLkQEBAX8gABDRASEAIAEoAgAgAUEMakYEQCABKAIAIAEoAgQgACgCABCoAiAAIAAoAgAgASgCBCABKAIAa0ECdUECdGo2AgQgASABKAIANgIEIAAPCyAAIAEoAgA2AgAgACABKAIENgIEIAAgASgCCDYCCCABIAFBHGo2AgggASABQQxqIgI2AgQgASACNgIAIAALkAIBAX8gACgCACAAQQxqRiECAkAgASgCACABQQxqRgRAIAJFBEAgACgCABChASAAIABBHGo2AgggACAAQQxqIgI2AgQgACACNgIACyABKAIAIAEoAgQgACgCABCoAiAAIAAoAgAgASgCBCABKAIAa0ECdUECdGo2AgQMAQsgAgRAIAAgASgCADYCACAAIAEoAgQ2AgQgACABKAIINgIIIAEgAUEcajYCCCABIAFBDGoiADYCBCABIAA2AgAPCyAAKAIAIQIgACABKAIANgIAIAEgAjYCACAAKAIEIQIgACABKAIENgIEIAEgAjYCBCAAKAIIIQIgACABKAIINgIIIAEgAjYCCAsgASABKAIANgIECwwAIAAgASkCCDcCAAs6AQF/IwBBEGsiAiQAIABBEBD7ASEAIAIgAkEIaiABEMYBKQIANwMAIAAgAhCaAiEAIAJBEGokACAAC4sBAQN/IAFBADYCAAJAIAAoAgAiAiAAKAIERwR/IAIsAAAFQQALQRh0QRh1QTBrQf8BcUEJSyICDQADQCAAKAIAIgMgACgCBEcEfyADLAAABUEAC0EYdEEYdUEwa0H/AXFBCUsNASABIARBCmw2AgAgASAAEJ8CIAEoAgBqQTBrIgQ2AgAMAAsACyACCxMAIABBoANqIAEgAkGy1wAQtgILHwAgAEGgA2pBFBD7ASABKAIAIAItAAAgAygCABDBAwv7BAEFfyMAQaABayICJAAgAQRAIAAgACgCzAI2AtACCyACIAJBmAFqQdLfABDGASkCADcDGAJAIAAgAkEYahDHAQRAQQAhASACQcgAaiAAQQAQygEgAEHfABDJAUUNASAAQaADaiACQcgAahDmAiEBDAEL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xgEpAgA3AwggACABQQhqEMcBRQ0AIAFBIGogAEEAEMoBIAEoAiAgASgCJEYNACAAQfAAEMkBRQ0AIAAQiAIaIAFBIGogAEEAEMoBIABB3wAQyQFFDQAgACABQSBqELwCIQILIAFBMGokACACC+gOAQV/IwBBkARrIgEkAAJAIABB5gAQyQFFDQAgAQJ/QQEgACgCACIDIAAoAgRHBH8gAywAAAVBAAtBGHRBGHUiA0HMAEYNABogA0H/AXEiBEHyAEcEQEEBIARB7ABGDQEaIARB0gBHDQILQQALOgCPBCAAIAAoAgBBAWo2AgAgAUGABGoiBEIANwIAIAEgAUH4A2pB0OkAEMYBKQIANwPwAQJAIAAgAUHwAWoQxwEEQCABQfADakG31wAQxgEaDAELIAEgAUHoA2pB0+kAEMYBKQIANwPoASAAIAFB6AFqEMcBBEAgAUHwA2pButcAEMYBGgwBCyABIAFB4ANqQdbpABDGASkCADcD4AEgACABQeABahDHAQRAIAFB8ANqQbzXABDGARoMAQsgASABQdgDakHZ6QAQxgEpAgA3A9gBIAAgAUHYAWoQxwEEQCABQfADakG/1wAQxgEaDAELIAEgAUHQA2pB3OkAEMYBKQIANwPQASAAIAFB0AFqEMcBBEAgAUHwA2pB1tcAEMYBGgwBCyABIAFByANqQd/pABDGASkCADcDyAEgACABQcgBahDHAQRAIAFB8ANqQenXABDGARoMAQsgASABQcADakHi6QAQxgEpAgA3A8ABIAAgAUHAAWoQxwEEQCABQfADakHu1wAQxgEaDAELIAEgAUG4A2pB5ekAEMYBKQIANwO4ASAAIAFBuAFqEMcBBEAgAUHwA2pB8NcAEMYBGgwBCyABIAFBsANqQejpABDGASkCADcDsAEgACABQbABahDHAQRAIAFB8ANqQfPXABDGARoMAQsgASABQagDakHr6QAQxgEpAgA3A6gBIAAgAUGoAWoQxwEEQCABQfADakH11wAQxgEaDAELIAEgAUGgA2pB7ukAEMYBKQIANwOgASAAIAFBoAFqEMcBBEAgAUHwA2pB+NcAEMYBGgwBCyABIAFBmANqQfHpABDGASkCADcDmAEgACABQZgBahDHAQRAIAFB8ANqQfvXABDGARoMAQsgASABQZADakH06QAQxgEpAgA3A5ABIAAgAUGQAWoQxwEEQCABQfADakH+1wAQxgEaDAELIAEgAUGIA2pB9+kAEMYBKQIANwOIASAAIAFBiAFqEMcBBEAgAUHwA2pBgNgAEMYBGgwBCyABIAFBgANqQfrpABDGASkCADcDgAEgACABQYABahDHAQRAIAFB8ANqQYPYABDGARoMAQsgASABQfgCakH96QAQxgEpAgA3A3ggACABQfgAahDHAQRAIAFB8ANqQYbYABDGARoMAQsgASABQfACakGA6gAQxgEpAgA3A3AgACABQfAAahDHAQRAIAFB8ANqQYrYABDGARoMAQsgASABQegCakGD6gAQxgEpAgA3A2ggACABQegAahDHAQRAIAFB8ANqQYzYABDGARoMAQsgASABQeACakGG6gAQxgEpAgA3A2AgACABQeAAahDHAQRAIAFB8ANqQY7YABDGARoMAQsgASABQdgCakGJ6gAQxgEpAgA3A1ggACABQdgAahDHAQRAIAFB8ANqQefXABDGARoMAQsgASABQdACakGM6gAQxgEpAgA3A1AgACABQdAAahDHAQRAIAFB8ANqQZHYABDGARoMAQsgASABQcgCakGP6gAQxgEpAgA3A0ggACABQcgAahDHAQRAIAFB8ANqQZfYABDGARoMAQsgASABQcACakGS6gAQxgEpAgA3A0AgACABQUBrEMcBBEAgAUHwA2pBp9gAEMYBGgwBCyABIAFBuAJqQZXqABDGASkCADcDOCAAIAFBOGoQxwEEQCABQfADakGq2AAQxgEaDAELIAEgAUGwAmpBmOoAEMYBKQIANwMwIAAgAUEwahDHAQRAIAFB8ANqQazYABDGARoMAQsgASABQagCakGb6gAQxgEpAgA3AyggACABQShqEMcBBEAgAUHwA2pBs9gAEMYBGgwBCyABIAFBoAJqQZ7qABDGASkCADcDICAAIAFBIGoQxwEEQCABQfADakG12AAQxgEaDAELIAEgAUGYAmpBoeoAEMYBKQIANwMYIAAgAUEYahDHAQRAIAFB8ANqQc/YABDGARoMAQsgASABQZACakGk6gAQxgEpAgA3AxAgACABQRBqEMcBBEAgAUHwA2pB0dgAEMYBGgwBCyABIAFBiAJqQafqABDGASkCADcDCCAAIAFBCGoQxwEEQCABQfADakHU2AAQxgEaDAELIAEgAUGAAmpBquoA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KQIANwMIIAAgAUEIahDHARogASAAQQAQmQIiAjYCHEEAIAJFDQAaIAIgACgCACICIAAoAgRHBH8gAiwAAAVBAAtB/wFxQckARw0AGiABIABBABDpASICNgIYIAIEfyAAIAFBHGogAUEYahDqAQVBAAsLIQAgAUEwaiQAIAALFQAgAEGgA2pBDBD7ASABKAIAEKQDC1ABAX8jAEEQayIEJAAgAEEYEPsBIQAgASgCACEBIARBCGogAhDGASECIAMoAgAhAyAEIAIpAgA3AwAgACABIAQgAxCnAyEAIARBEGokACAACx8AIABBoANqQRQQ+wEgASgCACACKAIAIAMtAAAQqwMLPQEBfiMAQRBrIgEkACAAQRQQ+wEhACABIAIpAgAiAzcDACABIAM3AwggAEEAIAEQrwMhACABQRBqJAAgAAtDAQF/IwBBEGsiAyQAIABBFBD7ASEAIAEoAgAhASADIANBCGogAhDGASkCADcDACAAIAEgAxCxAyEAIANBEGokACAACxUAIABBoANqIAEgAiADIAQgBRCyAwtJACAAQQwQ+wEhACABKAIAIQEgAEEBOgAHIABBAToABiAAQQE6AAUgAEE2OgAEIABBnNMANgIAIAAgATYCCCAAQfSBATYCACAAC2wCAX8BfiMAQRBrIgIkACAAQRAQ+wEhACACIAEpAgAiAzcDACACIAM3AwggAEEBOgAHIABBAToABiAAQQE6AAUgAEEAOgAEIABBnNMANgIAIABB8IIBNgIAIAAgAikCADcCCCACQRBqJAAgAAtGAgF/AX4jAEEQayIDJAAgAEEUEPsBIQAgASgCACEBIAMgAikCACIENwMAIAMgBDcDCCAAIAEgAxCvAyEAIANBEGokACAAC0kAIABBDBD7ASEAIAEoAgAhASAAQQE6AAcgAEEBOgAGIABBAToABSAAQT86AAQgAEGc0wA2AgAgACABNgIIIABB3IMBNgIAIAALSgAgAEEMEPsBIQAgASgCACEBIABBAToAByAAQQE6AAYgAEEBOgAFIABBwgA6AAQgAEGc0wA2AgAgACABNgIIIABB6N4ANgIAIAALSQEBfyMAQRBrIgMkACADIAI2AgwgACABNgIAIAEoAgAhASAAQQE6AAggACABNgIEIAAoAgAgA0EMaigCADYCACADQRBqJAAgAAtPAQJ/IwBBEGsi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ADcDKCACQgA3AyAgAiACKgI4uzkDECACQRhqIgAgAkEgakEYQfDcACACQRBqELEBIAJBIGpqNgIEIAAgAkEgajYCACACIAApAgA3AwggASACQQhqEIICCyACQUBrJAALCQAgACABEN8CCywAAkAgACABRg0AA0AgACABQQFrIgFPDQEgACABEOACIABBAWohAAwACwALCzUBAX8jAEEQayICJAAgAiAALQAAOgAPIAAgAS0AADoAACABIAJBD2otAAA6AAAgAkEQaiQAC20CAX8BfiMAQRBrIgIkACAAQRAQ+wEhACACIAEpAgAiAzcDACACIAM3AwggAEEBOgAHIABBAToABiAAQQE6AAUgAEHHADoABCAAQZzTADYCACAAQfzcADYCACAAIAIpAgA3AgggAkEQaiQAIAALiQIBBH8jAEHQAGsiAiQAIABBCGoiACgCACEEIAAoAgQgBGtBAWpBEU8EQCACQcgAaiEDQQAhAANAIABBEEcEQCADQVBBqX8gBCAAQQFyaiwAACIFQTBrQQpJGyAFakEAQQkgACAEaiwAACIFQTBrQQpJGyAFakEEdGo6AAAgA0EBaiEDIABBAmohAAwBCwsgAkHIAGogAxDeAiACQgA3AzggAkIANwMwIAJCADcDKCACQgA3AyAgAiACKwNIOQMQIAJBGGoiACACQSBqQSBB5N0AIAJBEGoQsQEgAkEgamo2AgQgACACQSBqNgIAIAIgACkCADcDCCABIAJBCGoQggILIAJB0ABqJAALbQIBfwF+IwBBEGsiAiQAIABBEBD7ASEAIAIgASkCACIDNwMAIAIgAzcDCCAAQQE6AAcgAEEBOgAGIABBAToABSAAQcgAOgAEIABBnNMANgIAIABB8N0ANgIAIAAgAikCADcCCCACQRBqJAAgAAuEAgEEfyMAQfAAayICJAAgAEEIaiIAKAIAIQQgACgCBCAEa0EBakEhTwRAIAJB4ABqIQNBACEAA0AgAEEgRwRAIANBUEGpfyAEIABBAXJqLAAAIgVBMGtBCkkbIAVqQQBBCSAAIARqLAAAIgVBMGtBCkkbIAVqQQR0ajoAACADQQFqIQMgAEECaiEADAELCyACQeAAaiADEN4CIAJBMGpBAEEoEKcBGiACIAIpA2A3AxAgAiACKQNoNwMYIAJBKGoiACACQTBqQShB2N4AIAJBEGoQsQEgAkEwamo2AgQgACACQTBqNgIAIAIgACkCADcDCCABIAJBCGoQggILIAJB8ABqJAALewEBfyMAQSBrIgIkACACIAJBGGpBzN8AEMYBKQIANwMIIAEgAkEIahCCAiAAKAIIIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsgAiACQRBqQc/fABDGASkCADcDACABIAIQggIgAkEgaiQAC2wCAX8BfiMAQRBrIgIkACAAQRAQ+wEhACACIAEpAgAiAzcDACACIAM3AwggAEEBOgAHIABBAToABiAAQQE6AAUgAEEsOgAEIABBnNMANgIAIABB/N8ANgIAIAAgAikCADcCCCACQRBqJAAgAAt4AQF/IwBBEGsiAiQAIAIgATYCDCAAKAIAIgAgAUECdGoiASABKAKMAyIBQQFqNgKMAyACIAE2AgggAiAAQaADakEQEPsBIAIoAgwgAkEIaigCABDtAiIBNgIEIAAoAtACQQRrKAIAIAJBBGoQ2QEgAkEQaiQAIAELbQIBfwN+IwBBMGsiBCQAIABBIBD7ASEAIAQgASkCACIFNwMoIAQgAikCACIGNwMgIAQgAykCACIHNwMYIAQgBTcDECAEIAY3AwggBCAHNwMAIAAgBEEQaiAEQQhqIAQQ+wIhACAEQTBqJAAgAAtsAgF/AX4jAEEwayICJAAgAiACQShqQeDgABDGASkCADcDECABIAJBEGoQggIgAiAAKQIIIgM3AwggAiADNwMgIAEgAkEIahCCAiACIAJBGGpB6eAAEMYBKQIANwMAIAEgAhCCAiACQTBqJAALSQAgAEEMEPsBIQAgASgCACEBIABBAToAByAAQQE6AAYgAEEAOgAFIABBHDoABCAAQZzTADYCACAAIAE2AgggAEGI4gA2AgAgAAtGAgF/AX4jAEEQayIDJAAgAEEUEPsBIQAgASgCACEBIAMgAikCACIENwMAIAMgBDcDCCAAIAEgAxD2AiEAIANBEGokACAAC0kAIABBDBD7ASEAIAEoAgAhASAAQQE6AAcgAEEBOgAGIABBADoABSAAQR86AAQgAEGc0wA2AgAgACABNgIIIABBmOUANgIAIAALQAAgAEEBOgAHIABBAToABiAAQQE6AAUgAEEbOgAEIABBnNMANgIAIAAgAjYCDCAAIAE2AgggAEGE4QA2AgAgAAt6AQF/IwBBIGsiAiQAAkAgAgJ/AkACQAJAIAAoAggOAwABAgQLIAJBGGpB9OEAEMYBDAILIAJBEGpB9+EAEMYBDAELIAJBCGpB+uEAEMYBCykCADcDACABIAIQggILIAAoAgwiAARAIAEgAEEBa60Q7wILIAJBIGokAAt7AQN/IwBBMGsiAiQAAkAgAVAEQCAAQTAQwwEMAQsgAkElaiEDA0AgAVBFBEAgA0EBayIDIAEgAUIKgCIBQgp+fadBMHI6AAAMAQsLIAJBCGoiBCACQSVqNgIEIAQgAzYCACACIAQpAgA3AwAgACACEPACCyACQTBqJAALMAIBfwF+IwBBEGsiAiQAIAIgASkCACIDNwMAIAIgAzcDCCAAIAIQggIgAkEQaiQACy0AIwBBEGsiACQAIAAgAEEIakH04gAQxgEpAgA3AwAgASAAEIICIABBEGokAAswACAAKAIIIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsLQAAgAEEBOgAHIABBAToABiAAQQA6AAUgAEEdOgAEIABBnNMANgIAIAAgAjYCDCAAIAE2AgggAEGI4wA2AgAgAAtwAQJ/IwBBEGsiAiQAIAAoAgwiAyABIAMoAgAoAhARAAACfyAAKAIMIgAtAAUiA0ECRwRAIANFDAELIAAgASAAKAIAKAIAEQEAC0UEQCACIAJBCGpB+OMAEMYBKQIANwMAIAEgAhCCAgsgAkEQaiQAC0YBAX8gACgCCCICIAEgAigCACgCEBEAACACLQAFQQFHBEAgAiABIAIoAgAoAhQRAAALIAAoAgwiACABIAAoAgAoAhQRAAALQwAgAEEBOgAHIABBAToABiAAQQA6AAUgAEEeOgAEIABBnNMANgIAIAAgATYCCCAAQYTkADYCACAAIAIpAgA3AgwgAAtXAQF/IwBBIGsiAiQAIAIgAkEYakH05AAQxgEpAgA3AwggASACQQhqEIICIABBDGogARD4AiACIAJBEGpB/uQAEMYBKQIANwMAIAEgAhCCAiACQSBqJAALsQEBBn8jAEEQayICJABBASEEA0AgACgCBCAFRwRAIAEoAgQhBiAEQQFxRQRAIAIgAkEIakGK5QAQxgEpAgA3AwAgASACEIICCyABKAIEIQcgACgCACAFQQJ0aigCACIDIAEgAygCACgCEBEAACADLQAFQQFHBEAgAyABIAMoAgAoAhQRAAALIAVBAWohBSAHIAEoAgRGBH8gASAGNgIEIAQFQQALIQQMAQsLIAJBEGokAAtDAQF/IwBBEGsiAiQAIAAoAggiACABIAAoAgAoAhARAAAgAiACQQhqQYTmABDGASkCADcDACABIAIQggIgAkEQaiQACxYAIAAoAggiACABIAAoAgAoAhQRAAALUAAgAEEBOgAHIABBAToABiAAQQE6AAUgAEEtOgAEIABBnNMANgIAIABBkOYANgIAIAAgASkCADcCCCAAIAIpAgA3AhAgACADKQIANwIYIAALcwIBfwF+IwBBMGsiAiQAIAIgAkEoakH05gAQxgEpAgA3AxAgASACQRBqEIICIAIgACkCGCIDNwMIIAIgAzcDICABIAJBCGoQggIgAiACQRhqQengABDGASkCADcDACABIAIQggIgACABEP0CIAJBMGokAAunAQECfyMAQUBqIgIkACAAQQhqIgMoAgQEQCACIAJBOGpBitgAEMYBKQIANwMYIAEgAkEYahCCAiADIAEQ+AIgAiACQTBqQf7XABDGASkCADcDECABIAJBEGoQggILIAIgAkEoakGM2wAQxgEpAgA3AwggASACQQhqEIICIABBEGogARD4AiACIAJBIGpBstcAEMYBKQIANwMAIAEgAhCCAiACQUBrJAALZAEBfyMAQSBrIgIkACACIAJBGGpB5OcAEMYBKQIANwMIIAEgAkEIahCCAiAAKAIIIgAtAARBLUYEQCAAIAEQ/QILIAIgAkEQakHn5wAQxgEpAgA3AwAgASACEIICIAJBIGokAAtEACAAQQE6AAcgAEEBOgAGIABBAToABSAAQcQAOgAEIABBnNMANgIAIAAgATYCCCAAQfjnADYCACAAIAIpAgA3AgwgAAuaAQICfwF+IwBBMGsiAiQAIAIgAkEoakGM2wAQxgEpAgA3AxAgASACQRBqEIICIAAoAggiAyABIAMoAgAoAhARAAAgAy0ABUEBRwRAIAMgASADKAIAKAIUEQAACyACIAJBIGpBstcAEMYBKQIANwMIIAEgAkEIahCCAiACIAApAgwiBDcDACACIAQ3AxggASACEIICIAJBMGokAAtsAgF/AX4jAEEQayICJAAgAEEQEPsBIQAgAiABKQIA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EMYBEI0DBEAgAiACQUBrQbLXABDGASkCADcDCCABIAJBCGoQggILIAJBgAFqJAALMQAgACgCBCAAKAIAayABKAIEIAEoAgBrRgR/IAAoAgAgACgCBCABKAIAEO4BBUEACwtGAgF/AX4jAEEQayIDJAAgAEEUEPsBIQAgAyABKQIAIgQ3AwggAigCACEBIAMgBDcDACAAIAMgARCPAyEAIANBEGokACAAC0kBAX4gAEEBOgAHIABBAToABiAAQQE6AAUgAEE6OgAEIABBnNMANgIAIABBjO0ANgIAIAEpAgAhAyAAIAI2AhAgACADNwIIIAALmgECAX8BfiMAQTBrIgIkACACIAApAggiAzcDECACIAM3AyggASACQRBqEIICIAIgAkEgakGM2wAQxgEpAgA3AwggASACQQhqEIICIAAoAhAiACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACyACIAJBGGpBstcAEMYBKQIANwMAIAEgAhCCAiACQTBqJAALUAEBfiAAQQE6AAcgAEEBOgAGIABBAToABSAAQTU6AAQgAEGc0wA2AgAgAEH07QA2AgAgASkCACEEIAAgAzYCFCAAIAI2AhAgACAENwIIIAALsgECAn8BfiMAQUBqIgIkACACIAApAggiBDcDGCACIAQ3AzggASACQRhqEIICIAIgAkEwakGK2AAQxgEpAgA3AxAgASACQRBqEIICIAAoAhAiAyABIAMoAgAoAhARAAAgAiACQShqQdDuABDGASkCADcDCCABIAJBCGoQggIgACgCFCIAIAEgACgCACgCEBEAACACIAJBIGpBstcAEMYBKQIANwMAIAEgAhCCAiACQUBrJAALQwAgAEEBOgAHIABBAToABiAAQQE6AAUgAEE3OgAEIABBnNMANgIAIAAgATYCCCAAQdzuADYCACAAIAIpAgA3AgwgAAuFAQECfyMAQSBrIgIkACAAKAIIIgMgASADKAIAKAIQEQAAIAMtAAVBAUcEQCADIAEgAygCACgCFBEAAAsgAiACQRhqQYzbABDGASkCADcDCCABIAJBCGoQggIgAEEMaiABEPgCIAIgAkEQakGy1wAQxgEpAgA3AwAgASACEIICIAJBIGokAAtGAgF/AX4jAEEQayIDJAAgAEEUEPsBIQAgASgCACEBIAMgAikCACIENwMAIAMgBDcDCCAAIAEgAxCWAyEAIANBEGokACAAC0MAIABBAToAByAAQQE6AAYgAEEBOgAFIABBPDoABCAAQZzTADYCACAAIAE2AgggAEHE7wA2AgAgACACKQIANwIMIAALowEBAn8jAEEwayICJAAgAiACQShqQYzbABDGASkCADcDECABIAJBEGoQggIgACgCCCIDIAEgAygCACgCEBEAACADLQAFQQFHBEAgAyABIAMoAgAoAhQRAAALIAIgAkEgakGo8AAQxgEpAgA3AwggASACQQhqEIICIABBDGogARD4AiACIAJBGGpBstcAEMYBKQIANwMAIAEgAhCCAiACQTBqJAALRwAgAEEBOgAHIABBAToABiAAQQE6AAUgAEE5OgAEIABBnNMANgIAIAAgAzoADSAAIAI6AAwgACABNgIIIABBtPAANgIAIAALqQEBAX8jAEEwayICJAAgAC0ADARAIAIgAkEoakGo1gAQxgEpAgA3AxAgASACQRBqEIICCyACIAJBIGpBlPEAEMYBKQIANwMIIAEgAkEIahCCAiAALQANBEAgAiACQRhqQZvxABDGASkCADcDACABIAIQggILIAAoAggiACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACyACQTBqJAALawECfyMAQRBrIgEkACABAn8gACgCACICIAAoAgRHBH8gAiwAAAVBAAtBGHRBGHVBMGtBCU0EQCAAEMECDAELIAAQwAILIgI2AgwgAgR/IABBoANqIAFBDGoQngMFQQALIQAgAUEQaiQAIAALPQIBfwF+IwBBEGsiAiQAIABBEBD7ASEAIAIgASkCACIDNwMAIAIgAzcDCCAAIAIQmgIhACACQRBqJAAgAAtAACAAQQE6AAcgAEEBOgAGIABBAToABSAAQRY6AAQgAEGc0wA2AgAgACACNgIMIAAgATYCCCAAQdDxADYCACAACxUAIABBoANqQQwQ+wEgASgCABChAwtJACAAQQwQ+wEhACABKAIAIQEgAEEBOgAHIABBAToABiAAQQE6AAUgAEErOgAEIABBnNMANgIAIAAgATYCCCAAQcTyADYCACAAC0MBAX8jAEEQayICJAAgAiACQQhqQdjXABDGASkCADcDACABIAIQggIgACgCCCIAIAEgACgCACgCEBEAACACQRBqJAALSQAgAEEMEPsBIQAgASgCACEBIABBAToAByAAQQE6AAYgAEEBOgAFIABBEzoABCAAQZzTADYCACAAIAE2AgggAEGU+AA2AgAgAAs5ACAAQQE6AAcgAEEBOgAGIABBAToABSAAQQQ6AAQgAEGc0wA2AgAgACABNgIIIABBlPcANgIAIAALXQEBfyMAQRBrIgIkACACIAJBCGpBgPgAEMYBKQIANwMAIAEgAhCCAiAAKAIIIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsgAkEQaiQAC10BAX8jAEEQayICJAAgAiACQQhqQfj4ABDGASkCADcDACABIAIQggIgACgCCCIAIAEgACgCACgCEBEAACAALQAFQQFHBEAgACABIAAoAgAoAhQRAAALIAJBEGokAAs5ACAAQQE6AAcgAEEBOgAGIABBAToABSAAQSY6AAQgAEGc0wA2AgAgACABNgIIIABBjPkANgIAIAALXQEBfyMAQRBrIgIkACACIAJBCGpBqNYAEMYBKQIANwMAIAEgAhCCAiAAKAIIIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsgAkEQaiQACxYAIAAgASgCCCIAIAAoAgAoAhgRAAALUAEBfiAAQQE6AAcgAEEBOgAGIABBAToABSAAQTM6AAQgAEGc0wA2AgAgACABNgIIIABB/PkANgIAIAIpAgAhBCAAIAM2AhQgACAENwIMIAALjAECAn8BfiMAQRBrIgIkACAAKAIIIgMgASADKAIAKAIQEQAAIAMtAAVBAUcEQCADIAEgAygCACgCFBEAAAsgAiAAKQIMIgQ3AwAgAiAENwMIIAEgAhCCAiAAKAIUIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsgAkEQaiQAC0AAIABBAToAByAAQQE6AAYgAEEBOgAFIABBMDoABCAAQZzTADYCACAAIAI2AgwgACABNgIIIABB5PoANgIAIAALxwEBAn8jAEEwayICJAAgAiACQShqQYzbABDGASkCADcDECABIAJBEGoQggIgACgCCCIDIAEgAygCACgCEBEAACADLQAFQQFHBEAgAyABIAMoAgAoAhQRAAALIAIgAkEgakHM+wAQxgEpAgA3AwggASACQQhqEIICIAAoAgwiACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACyACIAJBGGpBz/sAEMYBKQIANwMAIAEgAhCCAiACQTBqJAALSAAgAEEBOgAHIABBAToABiAAQQE6AAUgAEHJADoABCAAQZzTADYCACAAIAM6ABAgACACNgIMIAAgATYCCCAAQdz7ADYCACAAC/oBAQJ/IwBBEGsiAyQAAkAgAC0AEARAIAFB2wAQwwEgACgCCCICIAEgAigCACgCEBEAACACLQAFQQFHBEAgAiABIAIoAgAoAhQRAAALIAFB3QAQwwEMAQsgAUEuEMMBIAAoAggiAiABIAIoAgAoAhARAAAgAi0ABUEBRwRAIAIgASACKAIAKAIUEQAACwsCfyAAKAIMIgItAARByQBrQf8BcUECTwRAIAMgA0EIakG8/AAQxgEpAgA3AwAgASADEIICIAAoAgwhAgsgAgsgASACKAIAKAIQEQAAIAItAAVBAUcEQCACIAEgAigCACgCFBEAAAsgA0EQaiQAC0gAIABBAToAByAAQQE6AAYgAEEBOgAFIABBygA6AAQgAEGc0wA2AgAgACADNgIQIAAgAjYCDCAAIAE2AgggAEHI/AA2AgAgAAuEAgECfyMAQSBrIgMkACABQdsAEMMBIAAoAggiAiABIAIoAgAoAhARAAAgAi0ABUEBRwRAIAIgASACKAIAKAIUEQAACyADIANBGGpBrP0AEMYBKQIANwMIIAEgA0EIahCCAiAAKAIMIgIgASACKAIAKAIQEQAAIAItAAVBAUcEQCACIAEgAigCACgCFBEAAAsgAUHdABDDAQJ/IAAoAhAiAi0ABEHJAGtB/wFxQQJPBEAgAyADQRBqQbz8ABDGASkCADcDACABIAMQggIgACgCECECCyACCyABIAIoAgAoAhARAAAgAi0ABUEBRwRAIAIgASACKAIAKAIUEQAACyADQSBqJAALQwAgAEEBOgAHIABBAToABiAAQQE6AAUgAEE9OgAEIABBnNMANgIAIAAgATYCCCAAQbz9ADYCACAAIAIpAgA3AgwgAAtRAQF/IAAoAggiAgRAIAIgASACKAIAKAIQEQAAIAItAAVBAUcEQCACIAEgAigCACgCFBEAAAsLIAFB+wAQwwEgAEEMaiABEPgCIAFB/QAQwwELQwAgAEEBOgAHIABBAToABiAAQQE6AAUgAEExOgAEIABBnNMANgIAIAAgATYCCCAAQaj+ADYCACAAIAIpAgA3AgwgAAtwAQF/IwBBIGsiBiQAIABBIBD7ASEAIAYgASkCADcDGCACKAIAIQEgBiADKQIANwMQIAQtAAAhAiAFLQAAIQMgBiAGKQMYNwMIIAYgBikDEDcDACAAIAZBCGogASAGIAIgAxCzAyEAIAZBIGokACAAC2UBAX4gAEEBOgAHIABBAToABiAAQQE6AAUgAEE4OgAEIABBnNMANgIAIABBnP8ANgIAIAEpAgAhBiAAIAI2AhAgACAGNwIIIAMpAgAhBiAAIAU6AB0gACAEOgAcIAAgBjcCFCAAC9cCAQJ/IwBB8ABrIgIkACAALQAcBEAgAiACQegAakH4/wAQxgEpAgA3AzAgASACQTBqEIICCyACIAJB4ABqQYSAARDGASkCADcDKCABIAJBKGoQggIgAC0AHQRAIAIgAkHYAGpB5OcAEMYBKQIANwMgIAEgAkEgahCCAgsgAUEgEMMBIABBCGoiAygCBARAIAIgAkHQAGpBjNsAEMYBKQIANwMYIAEgAkEYahCCAiADIAEQ+AIgAiACQcgAakGy1wAQxgEpAgA3AxAgASACQRBqEIICCyAAKAIQIgMgASADKAIAKAIQEQAAIAMtAAVBAUcEQCADIAEgAygCACgCFBEAAAsgAEEUaiIAKAIEBEAgAiACQUBrQYzbABDGASkCADcDCCABIAJBCGoQggIgACABEPgCIAIgAkE4akGy1wAQxgEpAgA3AwAgASACEIICCyACQfAAaiQAC1MBAX4gAEEBOgAHIABBAToABiAAQQE6AAUgAEE0OgAEIABBnNMANgIAIABBkIABNgIAIAEpAgAhBCAAIAI2AhAgACAENwIIIAAgAykCADcCFCAAC3sCAn8BfiMAQSBrIgIkACACIAApAggiBDcDCCACIAQ3AxggASACQQhqEIICIAAoAhAiAyABIAMoAgAoAhARAAAgAy0ABUEBRwRAIAMgASADKAIAKAIUEQAACyACIAApAhQiBDcDACACIAQ3AxAgASACEIICIAJBIGokAAtHACAAQQE6AAcgAEEBOgAGIABBAToABSAAQTI6AAQgAEGc0wA2AgAgACADNgIQIAAgAjYCDCAAIAE2AgggAEH8gAE2AgAgAAuTAgECfyMAQUBqIgIkACACIAJBOGpBjNsAEMYBKQIANwMYIAEgAkEYahCCAiAAKAIIIgMgASADKAIAKAIQEQAAIAMtAAVBAUcEQCADIAEgAygCACgCFBEAAAsgAiACQTBqQeCBARDGASkCADcDECABIAJBEGoQggIgACgCDCIDIAEgAygCACgCEBEAACADLQAFQQFHBEAgAyABIAMoAgAoAhQRAAALIAIgAkEoakHmgQEQxgEpAgA3AwggASACQQhqEIICIAAoAhAiACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACyACIAJBIGpBstcAEMYBKQIANwMAIAEgAhCCAiACQUBrJAALXwEBfyMAQTBrIgIkACACIAJBKGpB3IIBEMYBKQIANwMIIAEgAkEIahCCAiACQRhqIAAoAggQhwMgARCIAyACIAJBEGpBstcAEMYBKQIANwMAIAEgAhCCAiACQTBqJAALDAAgAEEIaiABEPgCC10BAX8jAEEQayICJAAgAiACQQhqQbyEARDGASkCADcDACABIAIQggIgACgCCCIAIAEgACgCACgCEBEAACAALQAFQQFHBEAgACABIAAoAgAoAhQRAAALIAJBEGokAAs6ACAAQQE6AAcgAEEBOgAGIABBAToABSAAQcAAOgAEIABBnNMANgIAIAAgATYCCCAAQcyEATYCACAAC3sBAX8jAEEgayICJAAgAiACQRhqQayFARDGASkCADcDCCABIAJBCGoQ8AIgACgCCCIAIAEgACgCACgCEBEAACAALQAFQQFHBEAgACABIAAoAgAoAhQRAAALIAIgAkEQakGy1wAQxgEpAgA3AwAgASACEPACIAJBIGokAAtJACAAQQwQ+wEhACABKAIAIQEgAEEBOgAHIABBAToABiAAQQE6AAUgAEEoOgAEIABBnNMANgIAIAAgATYCCCAAQcCFATYCACAAC54BAQF/IwBBQGoiAiQAAkAgAgJ/AkACQAJAAkACQAJAIAAoAggOBgABAgMEBQcLIAJBOGpBsIYBEMYBDAULIAJBMGpBv4YBEMYBDAQLIAJBKGpB0YYBEMYBDAMLIAJBIGpBmIcBEMYBDAILIAJBGGpByocBEMYBDAELIAJBEGpB/IcBEMYBCykCADcDCCABIAJBCGoQggILIAJBQGskAAsYACAAIAEoAghBAnRBoKQBaigCABDGARoLRwAgAEEBOgAHIABBAToABiAAQQE6AAUgAEEqOgAEIABBnNMANgIAIAAgAzYCECAAIAI6AAwgACABNgIIIABB/IgBNgIAIAALYgEBfyMAQSBrIgIkACAALQAMBEAgAiACQRhqQdjXABDGASkCADcDCCABIAJBCGoQggILIAJBEGogACgCCCIAIAAoAgAoAhgRAAAgAiACKQMQNwMAIAEgAhCCAiACQSBqJAALRgIBfwF+IwBBEGsiAyQAIABBFBD7ASEAIAEoAgAhASADIAIpAgAiBDcDACADIAQ3AwggACABIAMQxAMhACADQRBqJAAgAAtWAQJ/IAEtAAUhAyABLQAGIQQgACABLQAHOgAHIAAgBDoABiAAIAM6AAUgAEEIOgAEIABBnNMANgIAIAAgATYCCCAAQeiJATYCACAAIAIpAgA3AgwgAAuAAQICfwF+IwBBMGsiAiQAIAAoAggiAyABIAMoAgAoAhARAAAgAiACQShqQciKARDGASkCADcDECABIAJBEGoQggIgAiAAKQIMIgQ3AwggAiAENwMgIAEgAkEIahCCAiACIAJBGGpBz/sAEMYBKQIANwMAIAEgAhCCAiACQTBqJAALbAIBfwF+IwBBEGsiAiQAIABBEBD7ASEAIAIgASkCACIDNwMAIAIgAzcDCCAAQQE6AAcgAEEBOgAGIABBAToABSAAQS46AAQgAEGc0wA2AgAgAEHcigE2AgAgACACKQIANwIIIAJBEGokACAACxwAIAFB2wAQwwEgAEEIaiABEPgCIAFB3QAQwwELQAAgAEEBOgAHIABBAToABiAAQQE6AAUgAEEYOgAEIABBnNMANgIAIAAgAjYCDCAAIAE2AgggAEHgiwE2AgAgAAs5ACAAQQE6AAcgAEEBOgAGIABBAToABSAAQSk6AAQgAEGc0wA2AgAgACABNgIIIABByIwBNgIAIAALngEBAX8jAEFAaiICJAACQCACAn8CQAJAAkACQAJAAkAgACgCCA4GAAECAwQFBwsgAkE4akGwhgEQxgEMBQsgAkEwakG/hgEQxgEMBAsgAkEoakGwjQEQxgEMAwsgAkEgakG8jQEQxgEMAgsgAkEYakHJjQEQxgEMAQsgAkEQakHWjQEQxgELKQIANwMIIAEgAkEIahCCAgsgAkFAayQACxgAIAAgASgCCEECdEG4pAFqKAIAEMYBGgs9AgF/AX4jAEEQayICJAAgAEEQEPsBIQAgAiABKQIAIgM3AwAgAiADNwMIIAAgAhDOAyEAIAJBEGokACAAC2wCAX8BfiMAQRBrIgIkACAAQRAQ+wEhACACIAEpAgAiAzcDACACIAM3AwggAEEBOgAHIABBAToABiAAQQE6AAUgAEEjOgAEIABBnNMANgIAIABB+I4BNgIAIAAgAikCADcCCCACQRBqJAAgAAu2AQEBfiAAQQE6AAcgAEEBOgAGIABBAToABSAAQSA6AAQgAEGc0wA2AgAgAEGMjgE2AgAgASkCACECIABBAjoAByAAIAI3AgggAEGCBDsABSAAQQFBAiAAQQhqIgEoAgAgASgCACABKAIEQQJ0ahDPAxs6AAYgASgCACABKAIAIAEoAgRBAnRqENADBEAgAEEBOgAHCyABKAIAIAEoAgAgASgCBEECdGoQ0QMEQCAAQQE6AAULIAALLAECfwNAIAAgAUYiAkUEQCAAKAIAIQMgAEEEaiEAIAMtAAZBAUYNAQsLIAILLAECfwNAIAAgAUYiAkUEQCAAKAIAIQMgAEEEaiEAIAMtAAdBAUYNAQsLIAILLAECfwNAIAAgAUYiAkUEQCAAKAIAIQMgAEEEaiEAIAMtAAVBAUYNAQsLIAILaQEBfyABKAIQQX9GBEAgACgCDCECIAFBADYCDCABIAI2AhALIAEoAgwiAiAAKAIMSQR/An8gACgCCCACQQJ0aigCACIALQAFIgJBAkcEQCACRQwBCyAAIAEgACgCACgCABEBAAsFQQALC2kBAX8gASgCEEF/RgRAIAAoAgwhAiABQQA2AgwgASACNgIQCyABKAIMIgIgACgCDEkEfwJ/IAAoAgggAkECdGooAgAiAC0ABiICQQJHBEAgAkUMAQsgACABIAAoAgAoAgQRAQALBUEACwtpAQF/IAEoAhBBf0YEQCAAKAIMIQIgAUEANgIMIAEgAjYCEAsgASgCDCICIAAoAgxJBH8CfyAAKAIIIAJBAnRqKAIAIgAtAAciAkECRwRAIAJFDAELIAAgASAAKAIAKAIIEQEACwVBAAsLVAEBfyABKAIQQX9GBEAgACgCDCECIAFBADYCDCABIAI2AhALIAEoAgwiAiAAKAIMSQR/IAAoAgggAkECdGooAgAiACABIAAoAgAoAgwRAQAFIAALC1EBAX8gASgCEEF/RgRAIAAoAgwhAiABQQA2AgwgASACNgIQCyABKAIMIgIgACgCDEkEQCAAKAIIIAJBAnRqKAIAIgAgASAAKAIAKAIQEQAACwtRAQF/IAEoAhBBf0YEQCAAKAIMIQIgAUEANgIMIAEgAjYCEAsgASgCDCICIAAoAgxJBEAgACgCCCACQQJ0aigCACIAIAEgACgCACgCFBEAAAsLnQEBAX8jAEEwayICJAAgAiACQShqQYrYABDGASkCADcDECABIAJBEGoQggIgAEEIaiABEPgCAn9BACABKAIEIgBFDQAaIAAgASgCAGpBAWstAAALQf8BcUE+RgRAIAIgAkEgakH44wAQxgEpAgA3AwggASACQQhqEIICCyACIAJBGGpB/tcAEMYBKQIANwMAIAEgAhCCAiACQTBqJAALQAAgAEEBOgAHIABBAToABiAAQQE6AAUgAEElOgAEIABBnNMANgIAIAAgAjYCDCAAIAE2AgggAEHkjwE2AgAgAAtgAQF/IAAoAggiAiABIAIoAgAoAhARAAAgAi0ABUEBRwRAIAIgASACKAIAKAIUEQAACyAAKAIMIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsLSQAgAEEMEPsBIQAgASgCACEBIABBAToAByAAQQE6AAYgAEEBOgAFIABBJzoABCAAQZzTADYCACAAIAE2AgggAEHckAE2AgAgAAtdAQF/IwBBEGsiAiQAIAIgAkEIakHEkQEQxgEpAgA3AwAgASACEIICIAAoAggiACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACyACQRBqJAALbAIBfwF+IwBBEGsiAiQAIABBEBD7ASEAIAIgASkCACIDNwMAIAIgAzcDCCAAQQE6AAcgAEEBOgAGIABBAToABSAAQSE6AAQgAEGc0wA2AgAgAEHUkQE2AgAgACACKQIANwIIIAJBEGokACAAC0EBAX8jAEEQayICJAAgAiACQQhqQayTARDGASkCADcDACABIAIQggIgAEEIaiABEPgCIAFB3QAQwwEgAkEQaiQAC2UBAX4gAEEAOgAHIABBAToABiAAQQA6AAUgAEESOgAEIABBnNMANgIAIAAgAjYCDCAAIAE2AgggAEHEkwE2AgAgAykCACEHIAAgBjoAICAAIAU2AhwgACAENgIYIAAgBzcCECAACwQAQQELpAEBA38jAEEQayIDJAACQCAAKAIIIgJFDQAgAiABIAIoAgAoAhARAAACfyAAKAIIIgItAAUiBEECRwRAIARFDAELIAIgASACKAIAKAIAEQEACw0AIAMgA0EIakH44wAQxgEpAgA3AwAgASADEIICCyAAKAIMIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsgA0EQaiQAC/kCAQJ/IwBB8ABrIgIkACACIAJB6ABqQYzbABDGASkCADcDMCABIAJBMGoQggIgAEEQaiABEPgCIAIgAkHgAGpBstcAEMYBKQIANwMoIAEgAkEoahCCAiAAKAIIIgMEQCADIAEgAygCACgCFBEAAAsCfyAAKAIcIgNBAXEEQCACIAJB2ABqQayUARDGASkCADcDICABIAJBIGoQggIgACgCHCEDCyADQQJxCwR/IAIgAkHQAGpBs5QBEMYBKQIANwMYIAEgAkEYahCCAiAAKAIcBSADC0EEcQRAIAIgAkHIAGpBvZQBEMYBKQIANwMQIAEgAkEQahCCAgsCQCACAn8CQAJAIAAtACBBAWsOAgABAwsgAkFAa0HHlAEQxgEMAQsgAkE4akHKlAEQxgELKQIANwMIIAEgAkEIahCCAgsgACgCGCIABEAgACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACwsgAkHwAGokAAtDACAAQQE6AAcgAEEBOgAGIABBAToABSAAQQE6AAQgAEGc0wA2AgAgACABNgIIIABB2JQBNgIAIAAgAikCADcCDCAAC5oBAgJ/AX4jAEEwayICJAAgACgCCCIDIAEgAygCACgCEBEAACADLQAFQQFHBEAgAyABIAMoAgAoAhQRAAALIAIgAkEoakH/7AAQxgEpAgA3AxAgASACQRBqEIICIAIgACkCDCIENwMIIAIgBDcDICABIAJBCGoQggIgAiACQRhqQbLXABDGASkCADcDACABIAIQggIgAkEwaiQACxoAIABBoANqQRAQ+wEgASgCACACKAIAEP8DC1IBAn8gAEEMEPsBIgIhACABKAIAIgEtAAUhAyAAQQE6AAcgAEEBOgAGIAAgAzoABSAAQQs6AAQgAEGc0wA2AgAgAiABNgIIIAJB0KEBNgIAIAILQwEBfyMAQRBrIgMkACAAQRQQ+wEhACABKAIAIQEgAyADQQhqIAIQxgEpAgA3AwAgACABIAMQkgQhACADQRBqJAAgAAtJACAAQQwQ+wEhACABKAIAIQEgAEEBOgAHIABBAToABiAAQQE6AAUgAEEQOgAEIABBnNMANgIAIAAgATYCCCAAQcCXATYCACAAC2wCAX8BfiMAQRBrIgIkACAAQRAQ+wEhACACIAEpAgAiAzcDACACIAM3AwggAEEBOgAHIABBAToABiAAQQE6AAUgAEEROgAEIABBnNMANgIAIABBuJgBNgIAIAAgAikCADcCCCACQRBqJAAgAAthAgF/AX4jAEEQayIGJAAgAEEgEPsBIQAgASgCACEBIAYgAikCACIHNwMIIAUoAgAhAiAELQAAIQQgAygCACEDIAYgBzcDACAAIAEgBiADIAQgAhDtAyEAIAZBEGokACAAC3sBAX8jAEEgayICJAAgAiACQRhqQaSYARDGASkCADcDCCABIAJBCGoQggIgACgCCCIAIAEgACgCACgCEBEAACAALQAFQQFHBEAgACABIAAoAgAoAhQRAAALIAIgAkEQakGy1wAQxgEpAgA3AwAgASACEIICIAJBIGokAAtAAQF/IwBBEGsiAiQAIAIgAkEIakGkmQEQxgEpAgA3AwAgASACEIICIABBCGogARD4AiABQSkQwwEgAkEQaiQAC14BAX4gAEEAOgAHIABBAToABiAAQQA6AAUgAEEPOgAEIABBnNMANgIAIAAgATYCCCAAQbSZATYCACACKQIAIQYgACAFNgIcIAAgBDoAGCAAIAM2AhQgACAGNwIMIAALQwEBfyMAQRBrIgIkACAAKAIIIgAgASAAKAIAKAIQEQAAIAIgAkEIakH44wAQxgEpAgA3AwAgASACEIICIAJBEGokAAv+AgECfyMAQfAAayICJAAgAiACQegAakGM2wAQxgEpAgA3AzAgASACQTBqEIICIABBDGogARD4AiACIAJB4ABqQbLXABDGASkCADcDKCABIAJBKGoQggIgACgCCCIDIAEgAygCACgCFBEAAAJ/IAAoAhQiA0EBcQRAIAIgAkHYAGpBrJQBEMYBKQIANwMgIAEgAkEgahCCAiAAKAIUIQMLIANBAnELBH8gAiACQdAAakGzlAEQxgEpAgA3AxggASACQRhqEIICIAAoAhQFIAMLQQRxBEAgAiACQcgAakG9lAEQxgEpAgA3AxAgASACQRBqEIICCwJAIAICfwJAAkAgAC0AGEEBaw4CAAEDCyACQUBrQceUARDGAQwBCyACQThqQcqUARDGAQspAgA3AwggASACQQhqEIICCyAAKAIcBEAgAUEgEMMBIAAoAhwiACABIAAoAgAoAhARAAAgAC0ABUEBRwRAIAAgASAAKAIAKAIUEQAACwsgAkHwAGokAAtGAgF/AX4jAEEQayIDJAAgAEEUEPsBIQAgASgCACEBIAMgAikCACIENwMAIAMgBDcDCCAAIAEgAxDyAyEAIANBEGokACAAC0YCAX8BfiMAQRBrIgMkACAAQRQQ+wEhACABKAIAIQEgAyACKQIAIgQ3AwAgAyAENwMIIAAgASADEPQDIQAgA0EQaiQAIAALQwAgAEEBOgAHIABBAToABiAAQQE6AAUgAEEKOgAEIABBnNMANgIAIAAgATYCCCAAQayaATYCACAAIAIpAgA3AgwgAAuaAQICfwF+IwBBMGsiAiQAIAAoAggiAyABIAMoAgAoAhARAAAgAy0ABUEBRwRAIAMgASADKAIAKAIUEQAACyACIAJBKGpBitgAEMYBKQIANwMQIAEgAkEQahCCAiACIAApAgwiBDcDCCACIAQ3AyAgASACQQhqEIICIAIgAkEYakH+1wAQxgEpAgA3AwAgASACEIICIAJBMGokAAtDACAAQQE6AAcgAEEBOgAGIABBAToABSAAQQI6AAQgAEGc0wA2AgAgACABNgIIIABBmJsBNgIAIAAgAikCADcCDCAAC3wCAn8BfiMAQSBrIgIkACAAKAIIIgMgASADKAIAKAIQEQAAIAMtAAVBAUcEQCADIAEgAygCACgCFBEAAAsgAiACQRhqQfjjABDGASkCADcDCCABIAJBCGoQggIgAiAAKQIMIgQ3AwAgAiAENwMQIAEgAhCCAiACQSBqJAALUwECfyABLQAFIQMgAS0ABiEEIAAgAS0ABzoAByAAIAQ6AAYgACADOgAFIABBAzoABCAAQZzTADYCACAAIAE2AgwgACACNgIIIABBiJwBNgIAIAALLQEBfwJ/IAAoAgwiAC0ABSICQQJHBEAgAkUMAQsgACABIAAoAgAoAgARAQALCy0BAX8CfyAAKAIMIgAtAAYiAkECRwRAIAJFDAELIAAgASAAKAIAKAIEEQEACwstAQF/An8gACgCDCIALQAHIgJBAkcEQCACRQwBCyAAIAEgACgCACgCCBEBAAsLHwEBfyAAKAIMIgIgASACKAIAKAIQEQAAIAAgARD7AwuYAQECfyMAQTBrIgIkAAJ/IAAoAggiA0EBcQRAIAIgAkEoakGslAEQxgEpAgA3AxAgASACQRBqEIICIAAoAgghAwsgA0ECcQsEfyACIAJBIGpBs5QBEMYBKQIANwMIIAEgAkEIahCCAiAAKAIIBSADC0EEcQRAIAIgAkEYakG9lAEQxgEpAgA3AwAgASACEIICCyACQTBqJAALFgAgACgCDCIAIAEgACgCACgCFBEAAAtJACAAQQwQ+wEhACABKAIAIQEgAEEBOgAHIABBAToABiAAQQE6AAUgAEEaOgAEIABBnNMANgIAIAAgATYCCCAAQfCcATYCACAAC3sBAX8jAEEgayICJAAgAiACQRhqQdSdARDGASkCADcDCCABIAJBCGoQggIgACgCCCIAIAEgACgCACgCEBEAACAALQAFQQFHBEAgACABIAAoAgAoAhQRAAALIAIgAkEQakHP+wAQxgEpAgA3AwAgASACEIICIAJBIGokAAtAACAAQQE6AAcgAEEBOgAGIABBAToABSAAQRk6AAQgAEGc0wA2AgAgACACNgIMIAAgATYCCCAAQeydATYCACAAC64BAQJ/IwBBIGsiAiQAIAAoAggiAyABIAMoAgAoAhARAAAgAy0ABUEBRwRAIAMgASADKAIAKAIUEQAACyACIAJBGGpBzJ4BEMYBKQIANwMIIAEgAkEIahCCAiAAKAIMIgAEQCAAIAEgACgCACgCEBEAACAALQAFQQFHBEAgACABIAAoAgAoAhQRAAALCyACIAJBEGpBz/sAEMYBKQIANwMAIAEgAhCCAiACQSBqJAALQAAgAEEBOgAHIABBADoABiAAQQA6AAUgAEEOOgAEIABBnNMANgIAIAAgAjYCDCAAIAE2AgggAEHgngE2AgAgAAsWACAAKAIIIgAgASAAKAIAKAIQEQAAC9sBAQJ/IwBBMGsiAiQAAn9BACABKAIEIgNFDQAaIAMgASgCAGpBAWstAAALQf8BcUHdAEcEQCACIAJBKGpB+OMAEMYBKQIANwMQIAEgAkEQahCCAgsgAiACQSBqQcCfARDGASkCADcDCCABIAJBCGoQggIgACgCDCIDBEAgAyABIAMoAgAoAhARAAAgAy0ABUEBRwRAIAMgASADKAIAKAIUEQAACwsgAiACQRhqQc/7ABDGASkCADcDACABIAIQggIgACgCCCIAIAEgACgCACgCFBEAACACQTBqJAALSQEBfyACLQAFIQMgAEEBOgAHIABBAToABiAAIAM6AAUgAEENOgAEIABBnNMANgIAIAAgAjYCDCAAIAE2AgggAEHMnwE2AgAgAAv/AQEDfyMAQTBrIgIkACAAKAIMIgMgASADKAIAKAIQEQAAIAICfwJAAn8gACgCDCIDLQAGIgRBAkcEQCAERQwBCyADIAEgAygCACgCBBEBAAtFBEACfyAAKAIMIgMtAAciBEECRwRAIARFDAELIAMgASADKAIAKAIIEQEAC0UNAQsgAkEoakGM2wAQxgEMAQsgAkEgakH44wAQxgELKQIANwMQIAEgAkEQahCCAiAAKAIIIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsgAiACQRhqQbSgARDGASkCADcDCCABIAJBCGoQggIgAkEwaiQAC58BAQN/IwBBEGsiAyQAAkACfyAAKAIMIgItAAYiBEECRwRAIARFDAELIAIgASACKAIAKAIEEQEAC0UEQAJ/IAAoAgwiAi0AByIEQQJHBEAgBEUMAQsgAiABIAIoAgAoAggRAQALRQ0BCyADIANBCGpBstcAEMYBKQIANwMAIAEgAxCCAgsgACgCDCIAIAEgACgCACgCFBEAACADQRBqJAALRgIBfwF+IwBBEGsiAyQAIABBFBD7ASEAIAMgASkCACIENwMIIAIoAgAhASADIAQ3AwAgACADIAEQiAQhACADQRBqJAAgAAtJAQF+IABBAToAByAAQQE6AAYgAEEBOgAFIABBBjoABCAAQZzTADYCACAAQdygATYCACABKQIAIQMgACACNgIQIAAgAzcCCCAAC2UCAX8BfiMAQRBrIgIkACACIAApAggiAzcDACACIAM3AwggASACEIICIAFBIBDDASAAKAIQIgAgASAAKAIAKAIQEQAAIAAtAAVBAUcEQCAAIAEgACgCACgCFBEAAAsg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IG1lbW9yeSBmb3IgZGVjb2RpbmcAQ29ycnVwdGVkIGJsb2NrIGRldGVjdGVkAFJlc3RvcmVkIGRhdGEgZG9lc24ndCBtYXRjaCBjaGVja3N1bQBVbnN1cHBvcnRlZCBwYXJhbWV0ZXIAUGFyYW1ldGVyIGlzIG91dCBvZiBib3VuZABDb250ZXh0IHNob3VsZCBiZSBpbml0IGZpcnN0AEFsbG9jYXRpb24gZXJyb3IgOiBub3QgZW5vdWdoIG1lbW9yeQB3b3JrU3BhY2UgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2gAT3BlcmF0aW9uIG5vdCBhdXRob3JpemVkIGF0IGN1cnJlbnQgcHJvY2Vzc2luZyBzdGFnZQB0YWJsZUxvZyByZXF1aXJlcyB0b28gbXVjaCBtZW1vcnkgOiB1bnN1cHBvcnRlZABVbnN1cHBvcnRlZCBtYXggU3ltYm9sIFZhbHVlIDogdG9vIGxhcmdlAFNwZWNpZmllZCBtYXhTeW1ib2xWYWx1ZSBpcyB0b28gc21hbGwARGljdGlvbmFyeSBpcyBjb3JydXB0ZWQARGljdGlvbmFyeSBtaXNtYXRjaABDYW5ub3QgY3JlYXRlIERpY3Rpb25hcnkgZnJvbSBwcm92aWRlZCBzYW1wbGVzAERlc3RpbmF0aW9uIGJ1ZmZlciBpcyB0b28gc21hbGwAU3JjIHNpemUgaXMgaW5jb3JyZWN0AE9wZXJhdGlvbiBvbiBOVUxMIGRlc3RpbmF0aW9uIGJ1ZmZlcgBGcmFtZSBpbmRleCBpcyB0b28gbGFyZ2UAQW4gSS9PIGVycm9yIG9jY3VycmVkIHdoZW4gcmVhZGluZy9zZWVraW5nAERlc3RpbmF0aW9uIGJ1ZmZlciBpcyB3cm9uZwBTb3VyY2UgYnVmZmVyIGlzIHdyb25nAEH0DguhCWs4BwANsgcAnPIHAHBkCABgrgoAsHELADCqDAAAAAAAAAgAAAAHAABqBgAAAAYAAK0FAABqBQAAMQUAAAAFAADUBAAArQQAAIoEAABqBAAATAQAADEEAAAXBAAAAAQAAOkDAADUAwAAwAMAAK0DAACbAwAAigMAAHkDAABqAwAAWwMAAEwDAAA+AwAAMQMAACQDAAAXAwAACwMAAAADAAD0AgAA6QIAAN4CAADUAgAAygIA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AAAALwAAADMAAAA7AAAAQwAAAFMAAABjAAAAgwAAAAMBAAADAgAAAwQAAAMIAAADEAAAAyAAAANAAAADgAAAAwABAEGgIAtRAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAwAAAAMAAAAEAAAABAAAAAUAAAAHAAAACAAAAAkAAAAKAAAACwAAAAwAAAANAAAADgAAAA8AAAAQAEGEIQuLAQEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAASAAAAFAAAABYAAAAYAAAAHAAAACAAAAAoAAAAMAAAAEAAAACAAAAAAAEAAAACAAAABAAAAAgAAAAQAAAAIAAAAEAAAACAAAAAAAEAQdAiC9YEAQAAAAEAAAABAAAAAQAAAAIAAAACAAAAAwAAAAMAAAAEAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAABAAAAABAAEBBgAAAAAAAAQAAAAAEAAABAAAAAAgAAAFAQAAAAAAAAUDAAAAAAAABQQAAAAAAAAFBgAAAAAAAAUHAAAAAAAABQkAAAAAAAAFCgAAAAAAAAUMAAAAAAAABg4AAAAAAAEFEAAAAAAAAQUUAAAAAAABBRYAAAAAAAIFHAAAAAAAAwUgAAAAAAAEBTAAAAAgAAYFQAAAAAAABwWAAAAAAAAIBgABAAAAAAoGAAQAAAAADAYAEAAAIAAABAAAAAAAAAAEAQAAAAAAAAUCAAAAIAAABQQAAAAAAAAFBQAAACAAAAUHAAAAAAAABQgAAAAgAAAFCgAAAAAAAAULAAAAAAAABg0AAAAgAAEFEAAAAAAAAQUSAAAAIAABBRYAAAAAAAIFGAAAACAAAwUgAAAAAAADBSgAAAAAAAYEQAAAABAABgRAAAAAIAAHBYAAAAAAAAkGAAIAAAAACwYACAAAMAAABAAAAAAQAAAEAQAAACAAAAUCAAAAIAAABQMAAAAgAAAFBQAAACAAAAUGAAAAIAAABQgAAAAgAAAFCQAAACAAAAULAAAAIAAABQwAAAAAAAAGDwAAACAAAQUSAAAAIAABBRQAAAAgAAIFGAAAACAAAgUcAAAAIAADBSgAAAAgAAQFMAAAAAAAEAYAAAEAAAAPBgCAAAAAAA4GAEAAAAAADQYAIABBsCcLhwIBAAEBBQAAAAAAAAUAAAAAAAAGBD0AAAAAAAkF/QEAAAAADwX9fwAAAAAVBf3/HwAAAAMFBQAAAAAABwR9AAAAAAAMBf0PAAAAABIF/f8DAAAAFwX9/38AAAAFBR0AAAAAAAgE/QAAAAAADgX9PwAAAAAUBf3/DwAAAAIFAQAAABAABwR9AAAAAAALBf0HAAAAABEF/f8BAAAAFgX9/z8AAAAEBQ0AAAAQAAgE/QAAAAAADQX9HwAAAAATBf3/BwAAAAEFAQAAABAABgQ9AAAAAAAKBf0DAAAAABAF/f8AAAAAHAX9//8PAAAbBf3//wcAABoF/f//AwAAGQX9//8BAAAYBf3//wBBwCkLhgQBAAEBBgAAAAAAAAYDAAAAAAAABAQAAAAgAAAFBQAAAAAAAAUGAAAAAAAABQgAAAAAAAAFCQAAAAAAAAULAAAAAAAABg0AAAAAAAAGEAAAAAAAAAYTAAAAAAAABhYAAAAAAAAGGQAAAAAAAAYcAAAAAAAABh8AAAAAAAAGIgAAAAAAAQYlAAAAAAABBikAAAAAAAIGLwAAAAAAAwY7AAAAAAAEBlMAAAAAAAcGgwAAAAAACQYDAgAAEAAABAQAAAAAAAAEBQAAACAAAAUGAAAAAAAABQcAAAAgAAAFCQAAAAAAAAUKAAAAAAAABgwAAAAAAAAGDwAAAAAAAAYSAAAAAAAABhUAAAAAAAAGGAAAAAAAAAYbAAAAAAAABh4AAAAAAAAGIQAAAAAAAQYjAAAAAAABBicAAAAAAAIGKwAAAAAAAwYzAAAAAAAEBkMAAAAAAAUGYwAAAAAACAYDAQAAIAAABAQAAAAwAAAEBAAAABAAAAQFAAAAIAAABQcAAAAgAAAFCAAAACAAAAUKAAAAIAAABQsAAAAAAAAGDgAAAAAAAAYRAAAAAAAABhQAAAAAAAAGFwAAAAAAAAYaAAAAAAAABh0AAAAAAAAGIAAAAAAAEAYDAAEAAAAPBgOAAAAAAA4GA0AAAAAADQYDIAAAAAAMBgMQAAAAAAsGAwgAAAAACgYDBABB1C0L4gQBAAAAAwAAAAcAAAAPAAAAHwAAAD8AAAB/AAAA/wAAAP8BAAD/AwAA/wcAAP8PAAD/HwAA/z8AAP9/AAD//wAA//8BAP//AwD//wcA//8PAP//HwD//z8A//9/AP///wD///8B////A////wf///8P////H////z////9/BAADAAIAAgACAAIAAgACAAIAAgACAAIAAgABAAEAAQACAAIAAgACAAIAAgACAAIAAgADAAIAAQABAAEAAQABAP//////////AAAAAAAAAAABAAEAAQABAAEAAQACAAIAAgABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD/////////////AAAAAAAAAQAEAAMAAgACAAIAAgACAAIAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQD//////////////////wAAAAAAAAABAgMEBQYHCAkKCwwNDg8QEBEREhITExQUFBQVFRUVFhYWFhYWFhYXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAgISEiIiMjJCQkJCUlJSUmJiYmJiYmJicnJycnJycnKCgoKCgoKCgoKCgoKCgoKCkpKSkpKSkpKSkpKSkpKSkqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgAgAAAAIAAAAEAAAACAAAAAgAAAAIAAAACAAAAAgAAAACAAAAAgAEHAMguAFRMAAAAMAAAADQAAAAEAAAAGAAAAAQAAAAEAAAATAAAADQAAAA4AAAABAAAABwAAAAAAAAABAAAAFAAAAA8AAAAQAAAAAQAAAAYAAAAAAAAAAQAAABUAAAAQAAAAEQAAAAEAAAAFAAAAAAAAAAIAAAAVAAAAEgAAABIAAAABAAAABQAAAAAAAAACAAAAFQAAABIAAAATAAAAAgAAAAUAAAACAAAAAwAAABUAAAATAAAAEwAAAAMAAAAFAAAABAAAAAMAAAAVAAAAEwAAABMAAAADAAAABQAAAAgAAAAEAAAAFQAAABMAAAATAAAAAwAAAAUAAAAQAAAABQAAABUAAAATAAAAFAAAAAQAAAAFAAAAEAAAAAUAAAAWAAAAFAAAABUAAAAEAAAABQAAABAAAAAFAAAAFgAAABUAAAAWAAAABAAAAAUAAAAQAAAABQAAABYAAAAVAAAAFgAAAAUAAAAFAAAAEAAAAAUAAAAWAAAAFQAAABYAAAAFAAAABQAAACAAAAAGAAAAFgAAABYAAAAXAAAABQAAAAUAAAAgAAAABgAAABYAAAAXAAAAFwAAAAYAAAAFAAAAIAAAAAYAAAAWAAAAFgAAABYAAAAFAAAABQAAADAAAAAHAAAAFwAAABcAAAAWAAAABQAAAAQAAABAAAAABwAAABcAAAAXAAAAFgAAAAYAAAADAAAAQAAAAAgAAAAXAAAAGAAAABYAAAAHAAAAAwAAAAABAAAJAAAAGQAAABkAAAAXAAAABwAAAAMAAAAAAQAACQAAABoAAAAaAAAAGAAAAAcAAAADAAAAAAIAAAkAAAAbAAAAGwAAABkAAAAJAAAAAwAAAOcDAAAJAAAAEgAAAAwAAAANAAAAAQAAAAUAAAABAAAAAQAAABIAAAANAAAADgAAAAEAAAAGAAAAAAAAAAEAAAASAAAADgAAAA4AAAABAAAABQAAAAAAAAACAAAAEgAAABAAAAAQAAAAAQAAAAQAAAAAAAAAAgAAABIAAAAQAAAAEQAAAAIAAAAFAAAAAgAAAAMAAAASAAAAEgAAABIAAAADAAAABQAAAAIAAAADAAAAEgAAABIAAAATAAAAAwAAAAUAAAAEAAAABAAAABIAAAASAAAAEwAAAAQAAAAEAAAABAAAAAQAAAASAAAAEgAAABMAAAAEAAAABAAAAAgAAAAFAAAAEgAAABIAAAATAAAABQAAAAQAAAAIAAAABQAAABIAAAASAAAAEwAAAAYAAAAEAAAACAAAAAUAAAASAAAAEgAAABMAAAAFAAAABAAAAAwAAAAGAAAAEgAAABMAAAATAAAABwAAAAQAAAAMAAAABgAAABIAAAASAAAAEwAAAAQAAAAEAAAAEAAAAAcAAAASAAAAEgAAABMAAAAEAAAAAwAAACAAAAAHAAAAEgAAABIAAAATAAAABgAAAAMAAACAAAAABwAAABIAAAATAAAAEwAAAAYAAAADAAAAgAAAAAgAAAASAAAAEwAAABMAAAAIAAAAAwAAAAABAAAIAAAAEgAAABMAAAATAAAABgAAAAMAAACAAAAACQAAABIAAAATAAAAEwAAAAgAAAADAAAAAAEAAAkAAAASAAAAEwAAABMAAAAKAAAAAwAAAAACAAAJAAAAEgAAABMAAAATAAAADAAAAAMAAAAAAgAACQAAABIAAAATAAAAEwAAAA0AAAADAAAA5wMAAAkAAAARAAAADAAAAAwAAAABAAAABQAAAAEAAAABAAAAEQAAAAwAAAANAAAAAQAAAAYAAAAAAAAAAQAAABEAAAANAAAADwAAAAEAAAAFAAAAAAAAAAEAAAARAAAADwAAABAAAAACAAAABQAAAAAAAAACAAAAEQAAABEAAAARAAAAAgAAAAQAAAAAAAAAAgAAABEAAAAQAAAAEQAAAAMAAAAEAAAAAgAAAAMAAAARAAAAEQAAABEAAAADAAAABAAAAAQAAAAEAAAAEQAAABEAAAARAAAAAwAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAQAAAAEAAAACAAAAAUAAAARAAAAEQAAABEAAAAFAAAABAAAAAgAAAAFAAAAEQAAABEAAAARAAAABgAAAAQAAAAIAAAABQAAABEAAAARAAAAEQAAAAUAAAAEAAAACAAAAAYAAAARAAAAEgAAABEAAAAHAAAABAAAAAwAAAAGAAAAEQAAABIAAAARAAAAAwAAAAQAAAAMAAAABwAAABEAAAASAAAAEQAAAAQAAAADAAAAIAAAAAcAAAARAAAAEgAAABEAAAAGAAAAAwAAAAABAAAHAAAAEQAAABIAAAARAAAABgAAAAMAAACAAAAACAAAABEAAAASAAAAEQAAAAgAAAADAAAAAAEAAAgAAAARAAAAEgAAABEAAAAKAAAAAwAAAAACAAAIAAAAEQAAABIAAAARAAAABQAAAAMAAAAAAQAACQAAABEAAAASAAAAEQAAAAcAAAADAAAAAAIAAAkAAAARAAAAEgAAABEAAAAJAAAAAwAAAAACAAAJAAAAEQAAABIAAAARAAAACwAAAAMAAADnAwAACQAAAA4AAAAMAAAADQAAAAEAAAAFAAAAAQAAAAEAAAAOAAAADgAAAA8AAAABAAAABQAAAAAAAAABAAAADgAAAA4AAAAPAAAAAQAAAAQAAAAAAAAAAQAAAA4AAAAOAAAADwAAAAIAAAAEAAAAAAAAAAIAAAAOAAAADgAAAA4AAAAEAAAABAAAAAIAAAADAAAADgAAAA4AAAAOAAAAAwAAAAQAAAAEAAAABAAAAA4AAAAOAAAADgAAAAQAAAAEAAAACAAAAAUAAAAOAAAADgAAAA4AAAAGAAAABAAAAAgAAAAFAAAADgAAAA4AAAAOAAAACAAAAAQAAAAIAAAABQAAAA4AAAAPAAAADgAAAAUAAAAEAAAACAAAAAYAAAAOAAAADwAAAA4AAAAJAAAABAAAAAgAAAAGAAAADgAAAA8AAAAOAAAAAwAAAAQAAAAMAAAABwAAAA4AAAAPAAAADgAAAAQAAAADAAAAGAAAAAcAAAAOAAAADwAAAA4AAAAFAAAAAwAAACAAAAAIAAAADgAAAA8AAAAPAAAABgAAAAMAAABAAAAACAAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAgAAAAOAAAADwAAAA8AAAAFAAAAAwAAADAAAAAJAAAADgAAAA8AAAAPAAAABgAAAAMAAACAAAAACQAAAA4AAAAPAAAADwAAAAcAAAADAAAAAAEAAAkAAAAOAAAADwAAAA8AAAAIAAAAAwAAAAABAAAJAAAADgAAAA8AAAAPAAAACAAAAAMAAAAAAgAACQAAAA4AAAAPAAAADwAAAAkAAAADAAAAAAIAAAkAAAAOAAAADwAAAA8AAAAKAAAAAwAAAOcDAAAJAAAAAAAAAAEAAAACAAAABAAAAAAAAAACAAAABAAAAAgAAAAAAAAAAQAAAAIAAAABAAAABAAAAAQAAAAEAAAABAAAAAgAAAAIAAAACAAAAAcAAAAIAAAACQAAAAoAAAALAAAALSsgICAwWDB4AChudWxsKQBB0McAC0ERAAoAERERAAAAAAUAAAAAAAAJAAAAAAsAAAAAAAAAABEADwoREREDCgcAAQAJCwsAAAkGCwAACwAGEQAAABEREQBBocgACyELAAAAAAAAAAARAAoKERERAAoAAAIACQsAAAAJAAsAAAsAQdvIAAsBDABB58gACxUMAAAAAAwAAAAACQwAAAAAAAwAAAwAQZXJAAsBDgBBockACxUNAAAABA0AAAAACQ4AAAAAAA4AAA4AQc/JAAsBEABB28kACx4PAAAAAA8AAAAACRAAAAAAABAAABAAABIAAAASEhIAQZLKAAsOEgAAABISEgAAAAAAAAkAQcPKAAsBCwBBz8oACxUKAAAAAAoAAAAACQsAAAAAAAsAAAsAQf3KAAsBDABBicsAC38MAAAAAAwAAAAACQwAAAAAAAwAAAwAADAxMjM0NTY3ODlBQkNERUYtMFgrMFggMFgtMHgrMHggMHgAaW5mAElORgBuYW4ATkFOAC4AdGVybWluYXRpbmcAdGVybWluYXRlX2hhbmRsZXIgdW5leHBlY3RlZGx5IHJldHVybmVkAEG0zAALASAAQdvMAAsF//////8AQaDNAAuuV1N0OXR5cGVfaW5mbwAAAAA8JwAAoCYAAFB1cmUgdmlydHVhbCBmdW5jdGlvbiBjYWxsZWQhAE4xMF9fY3h4YWJpdjExNl9fc2hpbV90eXBlX2luZm9FAABkJwAA1iYAALAmAABOMTBfX2N4eGFiaXYxMTdfX2NsYXNzX3R5cGVfaW5mb0UAAABkJwAABCcAAPgmAAAAAAAAKCcAACEAAAAiAAAAIwAAACQAAAAlAAAAJgAAACcAAAAoAAAAAAAAAKwnAAAhAAAAKQAAACMAAAAkAAAAJQAAACoAAAArAAAALAAAAE4xMF9fY3h4YWJpdjEyMF9fc2lfY2xhc3NfdHlwZV9pbmZvRQAAAABkJwAAhCcAACgnAABfWgBfX1oAX19fWgBfX19fWgBfYmxvY2tfaW52b2tlAGludm9jYXRpb24gZnVuY3Rpb24gZm9yIGJsb2NrIGluIABVYTllbmFibGVfaWZJAHZ0YWJsZSBmb3IgAFZUVCBmb3IgAHR5cGVpbmZvIGZvciAAdHlwZWluZm8gbmFtZSBmb3IgAGNvdmFyaWFudCByZXR1cm4gdGh1bmsgdG8gAHRocmVhZC1sb2NhbCB3cmFwcGVyIHJvdXRpbmUgZm9yIAB0aHJlYWQtbG9jYWwgaW5pdGlhbGl6YXRpb24gcm91dGluZSBmb3IgAHZpcnR1YWwgdGh1bmsgdG8gAG5vbi12aXJ0dWFsIHRodW5rIHRvIABndWFyZCB2YXJpYWJsZSBmb3IgAHJlZmVyZW5jZSB0ZW1wb3JhcnkgZm9yIAAAAAAAAAAAiCkAAC0AAAAuAAAALwAAADAAAAAxAAAAMgAAADMAAAA0AAAANQAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTExU3BlY2lhbE5hbWVFAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTROb2RlRQA8JwAAWCkAAGQnAAAoKQAAgCkAAAAAAACAKQAALQAAAC4AAAAvAAAAMAAAADYAAAAyAAAAMwAAADQAAAA3AAAAAAAAACgqAAAtAAAALgAAAC8AAAAwAAAAOAAAADIAAAAzAAAANAAAADkAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyMUN0b3JWdGFibGVTcGVjaWFsTmFtZUUAAABkJwAA7CkAAIApAABjb25zdHJ1Y3Rpb24gdnRhYmxlIGZvciAALWluLQBTdABzdGQAAAAAAAAAALQqAAAtAAAALgAAAC8AAAAwAAAAOgAAADIAAAA7AAAANAAAADwAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU4TmFtZVR5cGVFAGQnAACIKgAAgCkAAAAAAAAcKwAALQAAAC4AAAAvAAAAMAAAAD0AAAAyAAAAPgAAADQAAAA/AAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBOZXN0ZWROYW1lRQAAZCcAAOwqAACAKQAAOjoAYXV0bwAAAAAAnCsAAEAAAABBAAAAQgAAAEMAAABEAAAARQAAADMAAAA0AAAARgAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTI0Rm9yd2FyZFRlbXBsYXRlUmVmZXJlbmNlRQAAAABkJwAAXCsAAIApAABkZWNsdHlwZSgAKQBncwAmJgAmACY9AD0AYWxpZ25vZiAoAGNvbnN0X2Nhc3QALAB+AGR5bmFtaWNfY2FzdAAqAC4qAC4ALwAvPQBeAF49AD09AD49AD4APD0APDwAPDw9ADwALQAtPQAqPQAtLQAhPQAhAG5vZXhjZXB0ICgAfHwAfAB8PQAtPioAKwArPQArKwAtPgByZWludGVycHJldF9jYXN0ACUAJT0APj4APj49AHN0YXRpY19jYXN0AHNpemVvZiAoAHNpemVvZi4uLiAoAHR5cGVpZCAoAHRocm93AHU4X191dWlkb2Z0AHU4X191dWlkb2Z6AHdjaGFyX3QAYjBFAGIxRQBjaGFyAHNpZ25lZCBjaGFyAHVuc2lnbmVkIGNoYXIAc2hvcnQAdW5zaWduZWQgc2hvcnQAAHUAbAB1bABsbAB1bGwAX19pbnQxMjgAdW5zaWduZWQgX19pbnQxMjgARG5FAG51bGxwdHIAAAAAAAAAAIAtAAAtAAAALgAAAC8AAAAwAAAARwAAADIAAAAzAAAANAAAAEgAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1f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TF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTRDb252ZXJzaW9uRXhwckUAAGQnAADoNwAAgCkAACkoAAAAAAAAiDgAAC0AAAAuAAAALwAAADAAAAB5AAAAMgAAADMAAAA0AAAAegAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEwRGVsZXRlRXhwckUAAGQnAABYOAAAgCkAAGRlbGV0ZQBbXSAAc3JOAHNyAF9HTE9CQUxfX04AKGFub255bW91cyBuYW1lc3BhY2UpAAAAAAAAKDkAAC0AAAAuAAAALwAAADAAAAB7AAAAMgAAAHwAAAA0AAAAfQAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzUXVhbGlmaWVkTmFtZUUAAABkJwAA9DgAAIApAABkbgBvbgAAAAAAAACUOQAALQAAAC4AAAAvAAAAMAAAAH4AAAAyAAAAMwAAADQAAAB/AAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlOER0b3JOYW1lRQBkJwAAaDkAAIApAABvcGVyYXRvciYmAG9wZXJhdG9yJgBvcGVyYXRvciY9AG9wZXJhdG9yPQBvcGVyYXRvcigpAG9wZXJhdG9yLABvcGVyYXRvcn4Ab3BlcmF0b3IgZGVsZXRlW10Ab3BlcmF0b3IqAG9wZXJhdG9yIGRlbGV0ZQBvcGVyYXRvci8Ab3BlcmF0b3IvPQBvcGVyYXRvcl4Ab3BlcmF0b3JePQBvcGVyYXRvcj09AG9wZXJhdG9yPj0Ab3BlcmF0b3I+AG9wZXJhdG9yW10Ab3BlcmF0b3I8PQBvcGVyYXRvcjw8AG9wZXJhdG9yPDw9AG9wZXJhdG9yPABvcGVyYXRvci0Ab3BlcmF0b3ItPQBvcGVyYXRvcio9AG9wZXJhdG9yLS0Ab3BlcmF0b3IgbmV3W10Ab3BlcmF0b3IhPQBvcGVyYXRvciEAb3BlcmF0b3IgbmV3AG9wZXJhdG9yfHwAb3BlcmF0b3J8AG9wZXJhdG9yfD0Ab3BlcmF0b3ItPioAb3BlcmF0b3IrAG9wZXJhdG9yKz0Ab3BlcmF0b3IrKwBvcGVyYXRvci0+AG9wZXJhdG9yPwBvcGVyYXRvciUAb3BlcmF0b3IlPQBvcGVyYXRvcj4+AG9wZXJhdG9yPj49AG9wZXJhdG9yPD0+AAAAAAAA9DsAAC0AAAAuAAAALwAAADAAAACAAAAAMgAAADMAAAA0AAAAgQAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTIyQ29udmVyc2lvbk9wZXJhdG9yVHlwZUUAAGQnAAC4OwAAgCkAAG9wZXJhdG9yIAAAAAAAAABsPAAALQAAAC4AAAAvAAAAMAAAAIIAAAAyAAAAMwAAADQAAACDAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTVMaXRlcmFsT3BlcmF0b3JFAGQnAAA4PAAAgCkAAG9wZXJhdG9yIiIgAAAAAADoPAAALQAAAC4AAAAvAAAAMAAAAIQAAAAyAAAAhQAAADQAAACGAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTlHbG9iYWxRdWFsaWZpZWROYW1lRQBkJwAAsDwAAIApAAAAAAAAUD0AAC0AAAAuAAAALwAAADAAAACHAAAAMgAAADMAAAA0AAAAiAAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEwTWVtYmVyRXhwckUAAGQnAAAgPQAAgCkAAAAAAADAPQAALQAAAC4AAAAvAAAAMAAAAIkAAAAyAAAAMwAAADQAAACKAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMThBcnJheVN1YnNjcmlwdEV4cHJFAABkJwAAiD0AAIApAAApWwBdAAAAAAAAAAAwPgAALQAAAC4AAAAvAAAAMAAAAIsAAAAyAAAAMwAAADQAAACMAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBCcmFjZWRFeHByRQAAZCcAAAA+AACAKQAAID0gAAAAAACgPgAALQAAAC4AAAAvAAAAMAAAAI0AAAAyAAAAMwAAADQAAACOAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTVCcmFjZWRSYW5nZUV4cHJFAGQnAABsPgAAgCkAACAuLi4gAAAAAAAAABQ/AAAtAAAALgAAAC8AAAAwAAAAjwAAADIAAAAzAAAANAAAAJAAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMkluaXRMaXN0RXhwckUAAAAAZCcAAOA+AACAKQAAAAAAAHw/AAAtAAAALgAAAC8AAAAwAAAAkQAAADIAAAAzAAAANAAAAJIAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMVBvc3RmaXhFeHByRQBkJwAATD8AAIApAABudwBuYQBwaQAAAAAAAAAA7D8AAC0AAAAuAAAALwAAADAAAACTAAAAMgAAADMAAAA0AAAAlAAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTdOZXdFeHByRQAAZCcAAMA/AACAKQAAOjpvcGVyYXRvciAAbmV3AAAAAABoQAAALQAAAC4AAAAvAAAAMAAAAJUAAAAyAAAAMwAAADQAAACWAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTNFbmNsb3NpbmdFeHByRQAAAGQnAAA0QAAAgCkAAAAAAADUQAAALQAAAC4AAAAvAAAAMAAAAJcAAAAyAAAAMwAAADQAAACYAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTVDb25kaXRpb25hbEV4cHJFAGQnAACgQAAAgCkAACkgPyAoACkgOiAoAAAAAABQQQAALQAAAC4AAAAvAAAAMAAAAJkAAAAyAAAAMwAAADQAAACaAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTlTaXplb2ZQYXJhbVBhY2tFeHByRQBkJwAAGEEAAIApAABzaXplb2YuLi4oAAAAAAAAyEEAAC0AAAAuAAAALwAAADAAAACbAAAAMgAAADMAAAA0AAAAnAAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzTm9kZUFycmF5Tm9kZUUAAABkJwAAlEEAAIApAAAAAAAAMEIAAC0AAAAuAAAALwAAADAAAACdAAAAMgAAADMAAAA0AAAAngAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTlUaHJvd0V4cHJFAAAAAGQnAAAAQgAAgCkAAHRocm93IAAAAAAAAKBCAAAtAAAALgAAAC8AAAAwAAAAnwAAADIAAAAzAAAANAAAAKAAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMFVVSURPZkV4cHJFAABkJwAAcEIAAIApAABfX3V1aWRvZigAAAAAAAAAJEMAAC0AAAAuAAAALwAAADAAAAChAAAAMgAAAKIAAAA0AAAAowAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTI3RXhwYW5kZWRTcGVjaWFsU3Vic3RpdHV0aW9uRQBkJwAA5EIAAIApAABzdGQ6OmFsbG9jYXRvcgBzdGQ6OmJhc2ljX3N0cmluZwBzdGQ6OmJhc2ljX3N0cmluZzxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+LCBzdGQ6OmFsbG9jYXRvcjxjaGFyPiA+AHN0ZDo6YmFzaWNfaXN0cmVhbTxjaGFyLCBzdGQ6OmNoYXJfdHJhaXRzPGNoYXI+ID4Ac3RkOjpiYXNpY19vc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBzdGQ6OmJhc2ljX2lvc3RyZWFtPGNoYXIsIHN0ZDo6Y2hhcl90cmFpdHM8Y2hhcj4gPgBhbGxvY2F0b3IAYmFzaWNfc3RyaW5nAGJhc2ljX2lzdHJlYW0AYmFzaWNfb3N0cmVhbQBiYXNpY19pb3N0cmVhbQAAAAAAAAAA1EQAAC0AAAAuAAAALwAAADAAAACkAAAAMgAAADMAAAA0AAAApQAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEyQ3RvckR0b3JOYW1lRQAAAABkJwAAoEQAAIApAAAAAAAAPEUAAC0AAAAuAAAALwAAADAAAACmAAAAMgAAADMAAAA0AAAApwAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEwQWJpVGFnQXR0ckUAAGQnAAAMRQAAgCkAAFthYmk6AERDAAAAAAAAAAC8RQAALQAAAC4AAAAvAAAAMAAAAKgAAAAyAAAAMwAAADQAAACpAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjFTdHJ1Y3R1cmVkQmluZGluZ05hbWVFAAAAZCcAAIBFAACAKQAAc3RyaW5nIGxpdGVyYWwAAAAAAAA0RgAALQAAAC4AAAAvAAAAMAAAAKoAAAAyAAAAMwAAADQAAACrAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlOUxvY2FsTmFtZUUAAAAAZCcAAARGAACAKQAAAAAAAKRGAAAtAAAALgAAAC8AAAAwAAAArAAAADIAAACtAAAANAAAAK4AAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxOVNwZWNpYWxTdWJzdGl0dXRpb25FAGQnAABsRgAAgCkAAHN0ZDo6c3RyaW5nAHN0ZDo6aXN0cmVhbQBzdGQ6Om9zdHJlYW0Ac3RkOjppb3N0cmVhbQBzdHJpbmcAaXN0cmVhbQBvc3RyZWFtAGlvc3RyZWFtAAAAAABkRwAArwAAALAAAACxAAAAsgAAALMAAAC0AAAAMwAAADQAAAC1AAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTNQYXJhbWV0ZXJQYWNrRQAAAGQnAAAwRwAAgCkAAAAAAADQRwAALQAAAC4AAAAvAAAAMAAAALYAAAAyAAAAMwAAADQAAAC3AAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTJUZW1wbGF0ZUFyZ3NFAAAAAGQnAACcRwAAgCkAAAAAAABESAAALQAAAC4AAAAvAAAAMAAAALgAAAAyAAAAuQAAADQAAAC6AAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjBOYW1lV2l0aFRlbXBsYXRlQXJnc0UAAAAAZCcAAAhIAACAKQAAU3RMAAAAAAC4SAAALQAAAC4AAAAvAAAAMAAAALsAAAAyAAAAvAAAADQAAAC9AAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTZTdGRRdWFsaWZpZWROYW1lRQAAAABkJwAAgEgAAIApAABzdGQ6OgAAAAAAAAA0SQAALQAAAC4AAAAvAAAAMAAAAL4AAAAyAAAAMwAAADQAAAC/AAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMjBUZW1wbGF0ZUFyZ3VtZW50UGFja0UAAAAAZCcAAPhIAACAKQAAAAAAAKBJAAAtAAAALgAAAC8AAAAwAAAAwAAAADIAAAAzAAAANAAAAMEAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMkVuYWJsZUlmQXR0ckUAAAAAZCcAAGxJAACAKQAAIFtlbmFibGVfaWY6AAAAAAAAAAAgSgAAwgAAAC4AAADDAAAAMAAAAMQAAADFAAAAMwAAADQAAADGAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTZGdW5jdGlvbkVuY29kaW5nRQAAAABkJwAA6EkAAIApAAAgY29uc3QAIHZvbGF0aWxlACByZXN0cmljdAAgJgAgJiYAAAAAAAAArEoAAC0AAAAuAAAALwAAADAAAADHAAAAMgAAADMAAAA0AAAAyAAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTlEb3RTdWZmaXhFAAAAAGQnAAB8SgAAgCkAAHZvaWQAYm9vbABpbnQAdW5zaWduZWQgaW50AGxvbmcAdW5zaWduZWQgbG9uZwBsb25nIGxvbmcAdW5zaWduZWQgbG9uZyBsb25nAGZsb2F0AGRvdWJsZQBsb25nIGRvdWJsZQBfX2Zsb2F0MTI4AGRlY2ltYWw2NABkZWNpbWFsMTI4AGRlY2ltYWwzMgBkZWNpbWFsMTYAY2hhcjMyX3QAY2hhcjE2X3QAY2hhcjhfdABkZWNsdHlwZShhdXRvKQBzdGQ6Om51bGxwdHJfdAAgY29tcGxleAAgaW1hZ2luYXJ5AERvAG5vZXhjZXB0AERPAER3AER4AFJFAE9FAAAAAAAAGEwAAC0AAAAuAAAALwAAADAAAADJAAAAMgAAADMAAAA0AAAAygAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEyTm9leGNlcHRTcGVjRQAAAABkJwAA5EsAAIApAABub2V4Y2VwdCgAAAAAAAAAmEwAAC0AAAAuAAAALwAAADAAAADLAAAAMgAAADMAAAA0AAAAzAAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTIwRHluYW1pY0V4Y2VwdGlvblNwZWNFAAAAAGQnAABcTAAAgCkAAHRocm93KAAAAAAAAAxNAADNAAAALgAAAM4AAAAwAAAAzwAAANAAAAAzAAAANAAAANEAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxMkZ1bmN0aW9uVHlwZUUAAAAAZCcAANhMAACAKQAAb2JqY3Byb3RvAAAAAAAAAIRNAAAtAAAALgAAAC8AAAAwAAAA0gAAADIAAAAzAAAANAAAANMAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxM09iakNQcm90b05hbWVFAAAAZCcAAFBNAACAKQAAAAAAAPRNAAAtAAAALgAAAC8AAAAwAAAA1AAAADIAAAAzAAAANAAAANUAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxN1ZlbmRvckV4dFF1YWxUeXBlRQAAAGQnAAC8TQAAgCkAAAAAAABYTgAA1gAAANcAAADYAAAAMAAAANkAAADaAAAAMwAAADQAAADbAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlOFF1YWxUeXBlRQBkJwAALE4AAIApAABEdgAAAAAAAMhOAAAtAAAALgAAAC8AAAAwAAAA3AAAADIAAAAzAAAANAAAAN0AAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxNVBpeGVsVmVjdG9yVHlwZUUAZCcAAJROAACAKQAAcGl4ZWwgdmVjdG9yWwAAAAAAAABATwAALQAAAC4AAAAvAAAAMAAAAN4AAAAyAAAAMwAAADQAAADfAAAATjEyX0dMT0JBTF9fTl8xMTZpdGFuaXVtX2RlbWFuZ2xlMTBWZWN0b3JUeXBlRQAAZCcAABBPAACAKQAAIHZlY3RvclsAAAAAAAAAALRPAADgAAAA4QAAAC8AAAAwAAAA4gAAAOMAAAAzAAAANAAAAOQAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGU5QXJyYXlUeXBlRQAAAABkJwAAhE8AAIApAABbAAAAAAAAAChQAADlAAAALgAAAC8AAAAwAAAA5gAAAOcAAAAzAAAANAAAAOgAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUxOVBvaW50ZXJUb01lbWJlclR5cGVFAGQnAADwTwAAgCkAADo6KgBUcwBzdHJ1Y3QAVHUAdW5pb24AVGUAZW51bQAAAAAAALxQAAAtAAAALgAAAC8AAAAwAAAA6QAAADIAAAAzAAAANAAAAOoAAABOMTJfR0xPQkFMX19OXzExNml0YW5pdW1fZGVtYW5nbGUyMkVsYWJvcmF0ZWRUeXBlU3BlZlR5cGVFAABkJwAAgFAAAIApAAAAAAAAJFEAAOsAAAAuAAAALwAAADAAAADsAAAA7QAAADMAAAA0AAAA7gAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTExUG9pbnRlclR5cGVFAGQnAAD0UAAAgCkAAGlkPABvYmpjX29iamVjdAAAAAAAoFEAAO8AAAAuAAAALwAAADAAAADwAAAA8QAAADMAAAA0AAAA8gAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTEzUmVmZXJlbmNlVHlwZUUAAABkJwAAbFEAAIApAAAAAAAAFFIAAC0AAAAuAAAALwAAADAAAADzAAAAMgAAADMAAAA0AAAA9AAAAE4xMl9HTE9CQUxfX05fMTE2aXRhbml1bV9kZW1hbmdsZTIwUG9zdGZpeFF1YWxpZmllZFR5cGVFAAAAAGQnAADYUQAAgCkAAC9EAAA5RAAAOUQAAEZEAABURAAAYkQAAC9EAAA5RAAA5EYAAOtGAADzRgAA+0YAQfylAQsCeFMAQbSmAQsFgFVQAB8=";function iA(A){try{if(A==EA&&S)return new Uint8Array(S);var I=yA(A);if(I)return I;if(y)return y(A);throw"both async and sync fetching of the wasm failed";}catch(A){z(A);}}function oA(A){for(;A.length>0;){var g=A.shift();if("function"!=typeof g){var B=g.func;"number"==typeof B?void 0===g.arg?p.get(B)():p.get(B)(g.arg):B(void 0===g.arg?null:g.arg);}else g(I);}}function DA(A){if(DA.recursionGuard=1+(0|DA.recursionGuard),DA.recursionGuard>1)return A;var g=I.___cxa_demangle||I.__cxa_demangle;k(g);var B=SA();try{var C=A;C.startsWith("__Z")&&(C=C.substr(1));var Q=function(A){for(var I=0,g=0;g=55296&&B<=57343&&(B=65536+((1023&B)<<10)|1023&A.charCodeAt(++g)),B<=127?++I:I+=B<=2047?2:B<=65535?3:4;}return I;}(C)+1,E=hA(Q);n(C,E,Q);var i=hA(4),o=g(E,0,0,i);if(0===K[i>>2]&&o)return d(o);}catch(A){}finally{RA(o),NA(B),DA.recursionGuard<2&&--DA.recursionGuard;}return A;}function aA(A){try{return N.grow(A-J.byteLength+65535>>>16),T(N.buffer),1;}catch(I){console.error("emscripten_realloc_buffer: Attempted to grow heap from "+J.byteLength+" bytes to "+A+" bytes, but got error: "+I);}}function GA(A){for(var I=[],g=0;g255&&(k(!1,"Character code "+B+" ("+String.fromCharCode(B)+") at offset "+g+" not in 0x00-0xFF."),B&=255),I.push(String.fromCharCode(B));}return I.join("");}AA(EA)||(BA=EA,EA=I.locateFile?I.locateFile(BA,R):R+BA);var FA="function"==typeof atob?atob:function(A){var I,g,B,C,Q,E,i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",o="",D=0;A=A.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{I=i.indexOf(A.charAt(D++))<<2|(C=i.indexOf(A.charAt(D++)))>>4,g=(15&C)<<4|(Q=i.indexOf(A.charAt(D++)))>>2,B=(3&Q)<<6|(E=i.indexOf(A.charAt(D++))),o+=String.fromCharCode(I),64!==Q&&(o+=String.fromCharCode(g)),64!==E&&(o+=String.fromCharCode(B));}while(DI);var g,B,C=2147483648;if(A>C)return h("Cannot enlarge memory, asked to go up to "+A+" bytes, but the limit is 2147483648 bytes!"),!1;for(var Q=1;Q<=4;Q*=2){var E=I*(1+.2/Q);E=Math.min(E,A+100663296);var i=Math.min(C,((g=Math.max(A,E))%(B=65536)>0&&(g+=B-g%B),g));if(aA(i))return!0;}return h("Failed to grow the heap from "+I+" bytes to "+i+" bytes, not enough memory!"),!1;},setTempRet0:function(A){}};!function(){var A,g={env:sA,wasi_snapshot_preview1:sA};function B(A,g){var B=A.exports;I.asm=B,k(N=I.asm.memory,"memory not found in wasm exports"),T(N.buffer),k(p=I.asm.__indirect_function_table,"table not found in wasm exports"),function(A){if(V--,I.monitorRunDependencies&&I.monitorRunDependencies(V),A?(k(u[A]),delete u[A]):h("warning: run dependency removed without ID"),0==V&&(null!==j&&(clearInterval(j),j=null),X)){var g=X;X=null,g();}}("wasm-instantiate");}A="wasm-instantiate",V++,I.monitorRunDependencies&&I.monitorRunDependencies(V),A?(k(!u[A]),u[A]=1,null===j&&"undefined"!=typeof setInterval&&(j=setInterval(function(){if(L)return clearInterval(j),void(j=null);var A=!1;for(var I in u)A||(A=!0,h("still waiting on run dependencies:")),h("dependency: "+I);A&&h("(end of list)");},1e4))):h("warning: run dependency added without ID");var Q=I;function o(A){k(I===Q,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),Q=null,B(A.instance);}function D(A){return function(){if(!S&&(E||i)){if("function"==typeof fetch&&!IA(EA))return fetch(EA,{credentials:"same-origin"}).then(function(A){if(!A.ok)throw"failed to load wasm binary file at '"+EA+"'";return A.arrayBuffer();}).catch(function(){return iA(EA);});if(F)return new Promise(function(A,I){F(EA,function(I){A(new Uint8Array(I));},I);});}return Promise.resolve().then(function(){return iA(EA);});}().then(function(A){return WebAssembly.instantiate(A,g);}).then(A,function(A){h("failed to asynchronously prepare wasm: "+A),IA(EA)&&h("warning: Loading from a file URI ("+EA+") is not supported in most browsers. See https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-run-a-local-webserver-for-testing-why-does-my-program-stall-in-downloading-or-preparing"),z(A);});}if(I.instantiateWasm)try{return I.instantiateWasm(g,B);}catch(A){return h("Module.instantiateWasm callback failed with error: "+A),!1;}(S||"function"!=typeof WebAssembly.instantiateStreaming||AA(EA)||IA(EA)||"function"!=typeof fetch?D(o):fetch(EA,{credentials:"same-origin"}).then(function(A){return WebAssembly.instantiateStreaming(A,g).then(o,function(A){return h("wasm streaming compile failed: "+A),h("falling back to ArrayBuffer instantiation"),D(o);});})).catch(C);}();var wA=I.___wasm_call_ctors=gA("__wasm_call_ctors");I._malloc=gA("malloc");var RA=I._free=gA("free");I._ZSTD_isError=gA("ZSTD_isError"),I._ZSTD_getErrorName=gA("ZSTD_getErrorName"),I._ZSTD_compressBound=gA("ZSTD_compressBound"),I._ZSTD_CCtx_setParameter=gA("ZSTD_CCtx_setParameter"),I._ZSTD_compress=gA("ZSTD_compress"),I._ZSTD_createCStream=gA("ZSTD_createCStream"),I._ZSTD_freeCStream=gA("ZSTD_freeCStream"),I._ZSTD_CStreamInSize=gA("ZSTD_CStreamInSize"),I._ZSTD_CStreamOutSize=gA("ZSTD_CStreamOutSize"),I._ZSTD_initCStream=gA("ZSTD_initCStream"),I._ZSTD_compressStream2_simpleArgs=gA("ZSTD_compressStream2_simpleArgs"),I._ZSTD_getFrameContentSize=gA("ZSTD_getFrameContentSize"),I._ZSTD_decompress=gA("ZSTD_decompress"),I._ZSTD_createDStream=gA("ZSTD_createDStream"),I._ZSTD_freeDStream=gA("ZSTD_freeDStream"),I._ZSTD_DStreamInSize=gA("ZSTD_DStreamInSize"),I._ZSTD_DStreamOutSize=gA("ZSTD_DStreamOutSize"),I._ZSTD_initDStream=gA("ZSTD_initDStream"),I._ZSTD_decompressStream_simpleArgs=gA("ZSTD_decompressStream_simpleArgs"),I._fflush=gA("fflush"),I.___errno_location=gA("__errno_location");var SA=I.stackSave=gA("stackSave"),NA=I.stackRestore=gA("stackRestore"),hA=I.stackAlloc=gA("stackAlloc"),UA=I._emscripten_stack_init=function(){return(UA=I._emscripten_stack_init=I.asm.emscripten_stack_init).apply(null,arguments);};I._emscripten_stack_get_free=function(){return(I._emscripten_stack_get_free=I.asm.emscripten_stack_get_free).apply(null,arguments);};var LA,kA=I._emscripten_stack_get_end=function(){return(kA=I._emscripten_stack_get_end=I.asm.emscripten_stack_get_end).apply(null,arguments);};function tA(A){this.name="ExitStatus",this.message="Program terminated with exit("+A+")",this.status=A;}function JA(A){function g(){LA||(LA=!0,I.calledRun=!0,L||(Z(),k(!x),x=!0,oA(b),Z(),oA(l),B(I),I.onRuntimeInitialized&&I.onRuntimeInitialized(),k(!I._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(Z(),I.postRun)for("function"==typeof I.postRun&&(I.postRun=[I.postRun]);I.postRun.length;)A=I.postRun.shift(),O.unshift(A);var A;oA(O);}()));}V>0||(UA(),f(),function(){if(I.preRun)for("function"==typeof I.preRun&&(I.preRun=[I.preRun]);I.preRun.length;)A=I.preRun.shift(),P.unshift(A);var A;oA(P);}(),V>0||(I.setStatus?(I.setStatus("Running..."),setTimeout(function(){setTimeout(function(){I.setStatus("");},1),g();},1)):g(),Z()));}if(I.___cxa_demangle=gA("__cxa_demangle"),Object.getOwnPropertyDescriptor(I,"intArrayFromString")||(I.intArrayFromString=function(){z("'intArrayFromString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"intArrayToString")||(I.intArrayToString=function(){z("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"ccall")||(I.ccall=function(){z("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),I.cwrap=function(A,I,g,B){return function(){return t(A,I,g,arguments);};},I.setValue=function(A,I,g,B){switch("*"===(g=g||"i8").charAt(g.length-1)&&(g="i32"),g){case"i1":case"i8":c[A>>0]=I;break;case"i16":M[A>>1]=I;break;case"i32":K[A>>2]=I;break;case"i64":QA=[I>>>0,(CA=I,+Math.abs(CA)>=1?CA>0?(0|Math.min(+Math.floor(CA/4294967296),4294967295))>>>0:~~+Math.ceil((CA-+(~~CA>>>0))/4294967296)>>>0:0)],K[A>>2]=QA[0],K[A+4>>2]=QA[1];break;case"float":q[A>>2]=I;break;case"double":r[A>>3]=I;break;default:z("invalid type for setValue: "+g);}},I.getValue=function(A,I,g){switch("*"===(I=I||"i8").charAt(I.length-1)&&(I="i32"),I){case"i1":case"i8":return c[A>>0];case"i16":return M[A>>1];case"i32":case"i64":return K[A>>2];case"float":return q[A>>2];case"double":return r[A>>3];default:z("invalid type for getValue: "+I);}return null;},Object.getOwnPropertyDescriptor(I,"allocate")||(I.allocate=function(){z("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"UTF8ArrayToString")||(I.UTF8ArrayToString=function(){z("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"UTF8ToString")||(I.UTF8ToString=function(){z("'UTF8ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stringToUTF8Array")||(I.stringToUTF8Array=function(){z("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stringToUTF8")||(I.stringToUTF8=function(){z("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"lengthBytesUTF8")||(I.lengthBytesUTF8=function(){z("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stackTrace")||(I.stackTrace=function(){z("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"addOnPreRun")||(I.addOnPreRun=function(){z("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),I.addOnInit=function(A){b.unshift(A);},Object.getOwnPropertyDescriptor(I,"addOnPreMain")||(I.addOnPreMain=function(){z("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"addOnExit")||(I.addOnExit=function(){z("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"addOnPostRun")||(I.addOnPostRun=function(){z("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeStringToMemory")||(I.writeStringToMemory=function(){z("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeArrayToMemory")||(I.writeArrayToMemory=function(){z("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeAsciiToMemory")||(I.writeAsciiToMemory=function(){z("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"addRunDependency")||(I.addRunDependency=function(){z("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"removeRunDependency")||(I.removeRunDependency=function(){z("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"FS_createFolder")||(I.FS_createFolder=function(){z("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"FS_createPath")||(I.FS_createPath=function(){z("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"FS_createDataFile")||(I.FS_createDataFile=function(){z("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"FS_createPreloadedFile")||(I.FS_createPreloadedFile=function(){z("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"FS_createLazyFile")||(I.FS_createLazyFile=function(){z("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"FS_createLink")||(I.FS_createLink=function(){z("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"FS_createDevice")||(I.FS_createDevice=function(){z("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"FS_unlink")||(I.FS_unlink=function(){z("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you");}),Object.getOwnPropertyDescriptor(I,"getLEB")||(I.getLEB=function(){z("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getFunctionTables")||(I.getFunctionTables=function(){z("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"alignFunctionTables")||(I.alignFunctionTables=function(){z("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerFunctions")||(I.registerFunctions=function(){z("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"addFunction")||(I.addFunction=function(){z("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"removeFunction")||(I.removeFunction=function(){z("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getFuncWrapper")||(I.getFuncWrapper=function(){z("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"prettyPrint")||(I.prettyPrint=function(){z("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"makeBigInt")||(I.makeBigInt=function(){z("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"dynCall")||(I.dynCall=function(){z("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getCompilerSetting")||(I.getCompilerSetting=function(){z("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"print")||(I.print=function(){z("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"printErr")||(I.printErr=function(){z("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getTempRet0")||(I.getTempRet0=function(){z("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"setTempRet0")||(I.setTempRet0=function(){z("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"callMain")||(I.callMain=function(){z("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"abort")||(I.abort=function(){z("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stringToNewUTF8")||(I.stringToNewUTF8=function(){z("'stringToNewUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"setFileTime")||(I.setFileTime=function(){z("'setFileTime' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"emscripten_realloc_buffer")||(I.emscripten_realloc_buffer=function(){z("'emscripten_realloc_buffer' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"ENV")||(I.ENV=function(){z("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"ERRNO_CODES")||(I.ERRNO_CODES=function(){z("'ERRNO_CODES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"ERRNO_MESSAGES")||(I.ERRNO_MESSAGES=function(){z("'ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"setErrNo")||(I.setErrNo=function(){z("'setErrNo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"readSockaddr")||(I.readSockaddr=function(){z("'readSockaddr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeSockaddr")||(I.writeSockaddr=function(){z("'writeSockaddr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"DNS")||(I.DNS=function(){z("'DNS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getHostByName")||(I.getHostByName=function(){z("'getHostByName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"GAI_ERRNO_MESSAGES")||(I.GAI_ERRNO_MESSAGES=function(){z("'GAI_ERRNO_MESSAGES' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"Protocols")||(I.Protocols=function(){z("'Protocols' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"Sockets")||(I.Sockets=function(){z("'Sockets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getRandomDevice")||(I.getRandomDevice=function(){z("'getRandomDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"traverseStack")||(I.traverseStack=function(){z("'traverseStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"UNWIND_CACHE")||(I.UNWIND_CACHE=function(){z("'UNWIND_CACHE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"withBuiltinMalloc")||(I.withBuiltinMalloc=function(){z("'withBuiltinMalloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"readAsmConstArgsArray")||(I.readAsmConstArgsArray=function(){z("'readAsmConstArgsArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"readAsmConstArgs")||(I.readAsmConstArgs=function(){z("'readAsmConstArgs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"mainThreadEM_ASM")||(I.mainThreadEM_ASM=function(){z("'mainThreadEM_ASM' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"jstoi_q")||(I.jstoi_q=function(){z("'jstoi_q' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"jstoi_s")||(I.jstoi_s=function(){z("'jstoi_s' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getExecutableName")||(I.getExecutableName=function(){z("'getExecutableName' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"listenOnce")||(I.listenOnce=function(){z("'listenOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"autoResumeAudioContext")||(I.autoResumeAudioContext=function(){z("'autoResumeAudioContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"dynCallLegacy")||(I.dynCallLegacy=function(){z("'dynCallLegacy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getDynCaller")||(I.getDynCaller=function(){z("'getDynCaller' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"dynCall")||(I.dynCall=function(){z("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"callRuntimeCallbacks")||(I.callRuntimeCallbacks=function(){z("'callRuntimeCallbacks' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"abortStackOverflow")||(I.abortStackOverflow=function(){z("'abortStackOverflow' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"reallyNegative")||(I.reallyNegative=function(){z("'reallyNegative' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"unSign")||(I.unSign=function(){z("'unSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"reSign")||(I.reSign=function(){z("'reSign' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"formatString")||(I.formatString=function(){z("'formatString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"PATH")||(I.PATH=function(){z("'PATH' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"PATH_FS")||(I.PATH_FS=function(){z("'PATH_FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"SYSCALLS")||(I.SYSCALLS=function(){z("'SYSCALLS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"syscallMmap2")||(I.syscallMmap2=function(){z("'syscallMmap2' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"syscallMunmap")||(I.syscallMunmap=function(){z("'syscallMunmap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getSocketFromFD")||(I.getSocketFromFD=function(){z("'getSocketFromFD' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getSocketAddress")||(I.getSocketAddress=function(){z("'getSocketAddress' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"JSEvents")||(I.JSEvents=function(){z("'JSEvents' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerKeyEventCallback")||(I.registerKeyEventCallback=function(){z("'registerKeyEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"specialHTMLTargets")||(I.specialHTMLTargets=function(){z("'specialHTMLTargets' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"maybeCStringToJsString")||(I.maybeCStringToJsString=function(){z("'maybeCStringToJsString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"findEventTarget")||(I.findEventTarget=function(){z("'findEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"findCanvasEventTarget")||(I.findCanvasEventTarget=function(){z("'findCanvasEventTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getBoundingClientRect")||(I.getBoundingClientRect=function(){z("'getBoundingClientRect' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillMouseEventData")||(I.fillMouseEventData=function(){z("'fillMouseEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerMouseEventCallback")||(I.registerMouseEventCallback=function(){z("'registerMouseEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerWheelEventCallback")||(I.registerWheelEventCallback=function(){z("'registerWheelEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerUiEventCallback")||(I.registerUiEventCallback=function(){z("'registerUiEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerFocusEventCallback")||(I.registerFocusEventCallback=function(){z("'registerFocusEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillDeviceOrientationEventData")||(I.fillDeviceOrientationEventData=function(){z("'fillDeviceOrientationEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerDeviceOrientationEventCallback")||(I.registerDeviceOrientationEventCallback=function(){z("'registerDeviceOrientationEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillDeviceMotionEventData")||(I.fillDeviceMotionEventData=function(){z("'fillDeviceMotionEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerDeviceMotionEventCallback")||(I.registerDeviceMotionEventCallback=function(){z("'registerDeviceMotionEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"screenOrientation")||(I.screenOrientation=function(){z("'screenOrientation' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillOrientationChangeEventData")||(I.fillOrientationChangeEventData=function(){z("'fillOrientationChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerOrientationChangeEventCallback")||(I.registerOrientationChangeEventCallback=function(){z("'registerOrientationChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillFullscreenChangeEventData")||(I.fillFullscreenChangeEventData=function(){z("'fillFullscreenChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerFullscreenChangeEventCallback")||(I.registerFullscreenChangeEventCallback=function(){z("'registerFullscreenChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerRestoreOldStyle")||(I.registerRestoreOldStyle=function(){z("'registerRestoreOldStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"hideEverythingExceptGivenElement")||(I.hideEverythingExceptGivenElement=function(){z("'hideEverythingExceptGivenElement' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"restoreHiddenElements")||(I.restoreHiddenElements=function(){z("'restoreHiddenElements' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"setLetterbox")||(I.setLetterbox=function(){z("'setLetterbox' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"currentFullscreenStrategy")||(I.currentFullscreenStrategy=function(){z("'currentFullscreenStrategy' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"restoreOldWindowedStyle")||(I.restoreOldWindowedStyle=function(){z("'restoreOldWindowedStyle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"softFullscreenResizeWebGLRenderTarget")||(I.softFullscreenResizeWebGLRenderTarget=function(){z("'softFullscreenResizeWebGLRenderTarget' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"doRequestFullscreen")||(I.doRequestFullscreen=function(){z("'doRequestFullscreen' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillPointerlockChangeEventData")||(I.fillPointerlockChangeEventData=function(){z("'fillPointerlockChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerPointerlockChangeEventCallback")||(I.registerPointerlockChangeEventCallback=function(){z("'registerPointerlockChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerPointerlockErrorEventCallback")||(I.registerPointerlockErrorEventCallback=function(){z("'registerPointerlockErrorEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"requestPointerLock")||(I.requestPointerLock=function(){z("'requestPointerLock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillVisibilityChangeEventData")||(I.fillVisibilityChangeEventData=function(){z("'fillVisibilityChangeEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerVisibilityChangeEventCallback")||(I.registerVisibilityChangeEventCallback=function(){z("'registerVisibilityChangeEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerTouchEventCallback")||(I.registerTouchEventCallback=function(){z("'registerTouchEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillGamepadEventData")||(I.fillGamepadEventData=function(){z("'fillGamepadEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerGamepadEventCallback")||(I.registerGamepadEventCallback=function(){z("'registerGamepadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerBeforeUnloadEventCallback")||(I.registerBeforeUnloadEventCallback=function(){z("'registerBeforeUnloadEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"fillBatteryEventData")||(I.fillBatteryEventData=function(){z("'fillBatteryEventData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"battery")||(I.battery=function(){z("'battery' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"registerBatteryEventCallback")||(I.registerBatteryEventCallback=function(){z("'registerBatteryEventCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"setCanvasElementSize")||(I.setCanvasElementSize=function(){z("'setCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getCanvasElementSize")||(I.getCanvasElementSize=function(){z("'getCanvasElementSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"polyfillSetImmediate")||(I.polyfillSetImmediate=function(){z("'polyfillSetImmediate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"demangle")||(I.demangle=function(){z("'demangle' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"demangleAll")||(I.demangleAll=function(){z("'demangleAll' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"jsStackTrace")||(I.jsStackTrace=function(){z("'jsStackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stackTrace")||(I.stackTrace=function(){z("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getEnvStrings")||(I.getEnvStrings=function(){z("'getEnvStrings' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"checkWasiClock")||(I.checkWasiClock=function(){z("'checkWasiClock' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"flush_NO_FILESYSTEM")||(I.flush_NO_FILESYSTEM=function(){z("'flush_NO_FILESYSTEM' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeI53ToI64")||(I.writeI53ToI64=function(){z("'writeI53ToI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeI53ToI64Clamped")||(I.writeI53ToI64Clamped=function(){z("'writeI53ToI64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeI53ToI64Signaling")||(I.writeI53ToI64Signaling=function(){z("'writeI53ToI64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeI53ToU64Clamped")||(I.writeI53ToU64Clamped=function(){z("'writeI53ToU64Clamped' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeI53ToU64Signaling")||(I.writeI53ToU64Signaling=function(){z("'writeI53ToU64Signaling' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"readI53FromI64")||(I.readI53FromI64=function(){z("'readI53FromI64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"readI53FromU64")||(I.readI53FromU64=function(){z("'readI53FromU64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"convertI32PairToI53")||(I.convertI32PairToI53=function(){z("'convertI32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"convertU32PairToI53")||(I.convertU32PairToI53=function(){z("'convertU32PairToI53' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"uncaughtExceptionCount")||(I.uncaughtExceptionCount=function(){z("'uncaughtExceptionCount' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"exceptionLast")||(I.exceptionLast=function(){z("'exceptionLast' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"exceptionCaught")||(I.exceptionCaught=function(){z("'exceptionCaught' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"ExceptionInfoAttrs")||(I.ExceptionInfoAttrs=function(){z("'ExceptionInfoAttrs' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"ExceptionInfo")||(I.ExceptionInfo=function(){z("'ExceptionInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"CatchInfo")||(I.CatchInfo=function(){z("'CatchInfo' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"exception_addRef")||(I.exception_addRef=function(){z("'exception_addRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"exception_decRef")||(I.exception_decRef=function(){z("'exception_decRef' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"Browser")||(I.Browser=function(){z("'Browser' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"funcWrappers")||(I.funcWrappers=function(){z("'funcWrappers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"getFuncWrapper")||(I.getFuncWrapper=function(){z("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"setMainLoop")||(I.setMainLoop=function(){z("'setMainLoop' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"FS")||(I.FS=function(){z("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"mmapAlloc")||(I.mmapAlloc=function(){z("'mmapAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"MEMFS")||(I.MEMFS=function(){z("'MEMFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"TTY")||(I.TTY=function(){z("'TTY' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"PIPEFS")||(I.PIPEFS=function(){z("'PIPEFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"SOCKFS")||(I.SOCKFS=function(){z("'SOCKFS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"_setNetworkCallback")||(I._setNetworkCallback=function(){z("'_setNetworkCallback' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"tempFixedLengthArray")||(I.tempFixedLengthArray=function(){z("'tempFixedLengthArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"miniTempWebGLFloatBuffers")||(I.miniTempWebGLFloatBuffers=function(){z("'miniTempWebGLFloatBuffers' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"heapObjectForWebGLType")||(I.heapObjectForWebGLType=function(){z("'heapObjectForWebGLType' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"heapAccessShiftForWebGLHeap")||(I.heapAccessShiftForWebGLHeap=function(){z("'heapAccessShiftForWebGLHeap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"GL")||(I.GL=function(){z("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"emscriptenWebGLGet")||(I.emscriptenWebGLGet=function(){z("'emscriptenWebGLGet' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"computeUnpackAlignedImageSize")||(I.computeUnpackAlignedImageSize=function(){z("'computeUnpackAlignedImageSize' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"emscriptenWebGLGetTexPixelData")||(I.emscriptenWebGLGetTexPixelData=function(){z("'emscriptenWebGLGetTexPixelData' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"emscriptenWebGLGetUniform")||(I.emscriptenWebGLGetUniform=function(){z("'emscriptenWebGLGetUniform' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"emscriptenWebGLGetVertexAttrib")||(I.emscriptenWebGLGetVertexAttrib=function(){z("'emscriptenWebGLGetVertexAttrib' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"writeGLArray")||(I.writeGLArray=function(){z("'writeGLArray' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"AL")||(I.AL=function(){z("'AL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"SDL_unicode")||(I.SDL_unicode=function(){z("'SDL_unicode' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"SDL_ttfContext")||(I.SDL_ttfContext=function(){z("'SDL_ttfContext' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"SDL_audio")||(I.SDL_audio=function(){z("'SDL_audio' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"SDL")||(I.SDL=function(){z("'SDL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"SDL_gfx")||(I.SDL_gfx=function(){z("'SDL_gfx' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"GLUT")||(I.GLUT=function(){z("'GLUT' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"EGL")||(I.EGL=function(){z("'EGL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"GLFW_Window")||(I.GLFW_Window=function(){z("'GLFW_Window' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"GLFW")||(I.GLFW=function(){z("'GLFW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"GLEW")||(I.GLEW=function(){z("'GLEW' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"IDBStore")||(I.IDBStore=function(){z("'IDBStore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"runAndAbortIfError")||(I.runAndAbortIfError=function(){z("'runAndAbortIfError' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"warnOnce")||(I.warnOnce=function(){z("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stackSave")||(I.stackSave=function(){z("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stackRestore")||(I.stackRestore=function(){z("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stackAlloc")||(I.stackAlloc=function(){z("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"AsciiToString")||(I.AsciiToString=function(){z("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stringToAscii")||(I.stringToAscii=function(){z("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"UTF16ToString")||(I.UTF16ToString=function(){z("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stringToUTF16")||(I.stringToUTF16=function(){z("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"lengthBytesUTF16")||(I.lengthBytesUTF16=function(){z("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"UTF32ToString")||(I.UTF32ToString=function(){z("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"stringToUTF32")||(I.stringToUTF32=function(){z("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"lengthBytesUTF32")||(I.lengthBytesUTF32=function(){z("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"allocateUTF8")||(I.allocateUTF8=function(){z("'allocateUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"allocateUTF8OnStack")||(I.allocateUTF8OnStack=function(){z("'allocateUTF8OnStack' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),I.writeStackCookie=f,I.checkStackCookie=Z,Object.getOwnPropertyDescriptor(I,"intArrayFromBase64")||(I.intArrayFromBase64=function(){z("'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),Object.getOwnPropertyDescriptor(I,"tryParseAsDataURI")||(I.tryParseAsDataURI=function(){z("'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)");}),I.ALLOC_NORMAL=0,I.ALLOC_STACK=1,X=function A(){LA||JA(),LA||(X=A);},I.run=JA,I.preInit)for("function"==typeof I.preInit&&(I.preInit=[I.preInit]);I.preInit.length>0;)I.preInit.pop()();return JA(),A.ready;});A.exports=B;}(C={exports:{}},C.exports),C.exports),E=Object.freeze(Object.assign(Object.create(null),Q,{default:Q})),i=function(A,I,g){this.positionPtr=A,this.size=I,this.dataPtr=g;},o=function(){function A(A){this.zstdGetErrorName=A.cwrap("ZSTD_getErrorName","string",["number"]),this.zstdIsError=A.cwrap("ZSTD_isError","number",["number"]);}return A.prototype.checkError=function(A){if(A<0)throw new Error("ZSTD_ERROR: "+this.zstdGetErrorName(A)+", error code: "+A);},A;}(),D=null,a=null;var G=function(){return!!D&&!!a;},F=function(A){function g(){return null!==A&&A.apply(this,arguments)||this;}return I(g,A),g.compress=function(A,I,B){if(void 0===I&&(I=3),void 0===B&&(B=!1),!G())throw new Error("Error: Zstd library not initialized. Please call the ZstdInit before usages");g.isCompressInit||(g.initCompressFunctions(),g.isCompressInit=!0);var C,Q=D._malloc(g.inputSizeCo),E=D._malloc(g.outputSizeCo);try{C=g.initCompressStream();}catch(A){throw D._free(Q),D._free(E),new Error(A);}g.setCompressionLevel(C,I,B);var o=D._malloc(g.positionSize),F=D._malloc(g.positionSize),y=new Uint8Array([]),s=g.inputSizeCo,w=0;try{for(;w100)");var B=A.byteLength+g.zstdFrameHeaderSizeMax,C=g.createArrayPointer(A,B),Q=D._malloc(g.zstdCompressBound(A.length));try{var E=g.zstdCompress(Q,g.zstdCompressBound(A.length),C,B,I);return a.checkError(E),new Uint8Array(D.HEAPU8.subarray(Q,Q+E));}finally{D._free(C),D._free(Q);}},g.initCompressFunctions=function(){g.zstdCompress=D.cwrap("ZSTD_compress","number",["number","number","number","number","number"]),g.zstdCompressBound=D.cwrap("ZSTD_compressBound","number",["number"]);},g.isCompressInit=!1,g;}(function(){function A(){}return A.decompress=function(I){if(!G())throw new Error("Error: Zstd library not initialized. Please call the ZstdInit before usages");A.isDecompressInit||(A.initDecompressFunctions(),A.isDecompressInit=!0);var g=I.length,B=A.createArrayPointer(I,g),C=A.zstdGetFrameContentSize(B,g),Q=D._malloc(C);a.checkError(C);try{var E=A.zstdDecompress(Q,C,B,g);return a.checkError(E),new Uint8Array(D.HEAPU8.subarray(Q,Q+E-A.zstdFrameHeaderSizeMax));}finally{D._free(B),D._free(Q);}},A.initDecompressFunctions=function(){A.zstdDecompress=D.cwrap("ZSTD_decompress","number",["number","number","number","number"]),A.zstdGetFrameContentSize=D.cwrap("ZSTD_getFrameContentSize","number",["number","number"]);},A.createArrayPointer=function(A,I){var g=D._malloc(I);return D.HEAPU8.set(A,g),g;},A.zstdFrameHeaderSizeMax=18,A.isDecompressInit=!1,A;}());function s(){return g(this,void 0,void 0,function(){return B(this,function(A){return[2,(I=E,g={ZstdSimple:y,ZstdStream:F},new Promise(function(A,B){D&&A({ZstdSimple:g.ZstdSimple,ZstdStream:g.ZstdStream}),("function"==typeof I?I:I.default)().then(function(I){a=new o(D=I),A({ZstdSimple:g.ZstdSimple,ZstdStream:g.ZstdStream});}).catch(function(A){B(A);});}))];var I,g;});});}export{s as ZstdInit,y as ZstdSimple,F as ZstdStream}; \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/example/main.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/example/main.dart deleted file mode 100644 index 07c7bbac2b2b..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/example/main.dart +++ /dev/null @@ -1,4 +0,0 @@ -void main() { - // ignore: avoid_print - print('Example is located in catalyst_compression/example directory.'); -} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/lib/catalyst_compression_web.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/lib/catalyst_compression_web.dart deleted file mode 100644 index c6964add45eb..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/lib/catalyst_compression_web.dart +++ /dev/null @@ -1,25 +0,0 @@ -import 'package:catalyst_compression_platform_interface/catalyst_compression_platform_interface.dart'; -import 'package:catalyst_compression_web/src/interop/catalyst_compression_interop.dart'; -import 'package:flutter_web_plugins/flutter_web_plugins.dart' show Registrar; - -/// The web implementation of [CatalystCompressionPlatform]. -/// -/// This class implements the `package:catalyst_compression` functionality -/// for the web. -final class CatalystCompressionWeb extends CatalystCompressionPlatform { - /// A constructor that allows tests to override the window object used by the - /// plugin. - CatalystCompressionWeb(); - - @override - CatalystCompressor get brotli => const JSBrotliCompressor(); - - @override - CatalystCompressor get zstd => const JSZstdCompressor(); - - /// Registers this class as the default instance of - /// [CatalystCompressionPlatform]. - static void registerWith(Registrar registrar) { - CatalystCompressionPlatform.instance = CatalystCompressionWeb(); - } -} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/lib/src/interop/catalyst_compression_interop.dart b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/lib/src/interop/catalyst_compression_interop.dart deleted file mode 100644 index c912e7796888..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/lib/src/interop/catalyst_compression_interop.dart +++ /dev/null @@ -1,84 +0,0 @@ -@JS('catalyst_compression') -library catalyst_compression_interop; - -import 'dart:js_interop'; - -import 'package:catalyst_compression_platform_interface/catalyst_compression_platform_interface.dart'; -import 'package:convert/convert.dart'; - -/// Compresses the [bytes] using brotli algorithm. -/// -/// The bytes are transferred as hex string due to -/// raw bytes not being supported by the js_interop. -@JS() -external JSPromise brotliCompress(JSString bytes); - -/// Decompresses the [bytes] using brotli algorithm. -/// -/// The bytes are transferred as hex string due to -/// raw bytes not being supported by the js_interop. -@JS() -external JSPromise brotliDecompress(JSString bytes); - -/// Compresses the [bytes] using zstd algorithm. -/// -/// The bytes are transferred as hex string due to -/// raw bytes not being supported by the js_interop. -@JS() -external JSPromise zstdCompress(JSString bytes); - -/// Decompresses the [bytes] using zstd algorithm. -/// -/// The bytes are transferred as hex string due to -/// raw bytes not being supported by the js_interop. -@JS() -external JSPromise zstdDecompress(JSString bytes); - -/// The JS implementation of brotli compressor. -class JSBrotliCompressor implements CatalystCompressor { - /// The default constructor for [JSBrotliCompressor]. - const JSBrotliCompressor(); - - @override - Future> compress(List bytes) async { - final data = await brotliCompress(hex.encode(bytes).toJS).toDart; - return hex.decode(data.toDart); - } - - @override - Future> decompress(List bytes) async { - final data = await brotliDecompress(hex.encode(bytes).toJS).toDart; - return hex.decode(data.toDart); - } -} - -/// The JS implementation of zstd compressor. -class JSZstdCompressor implements CatalystCompressor { - /// The minimum length of bytes for which the compression - /// algorithm works correctly. - /// - /// Trying to compress bytes fewer than this might yield bigger - /// results than before the compression. - static const int _minLength = 101; - - /// The default constructor for [JSZstdCompressor]. - const JSZstdCompressor(); - - @override - Future> compress(List bytes) async { - if (bytes.length < _minLength) { - throw CompressionNotSupportedException( - 'Bytes too short, actual: ${bytes.length}, required: $_minLength', - ); - } - - final data = await zstdCompress(hex.encode(bytes).toJS).toDart; - return hex.decode(data.toDart); - } - - @override - Future> decompress(List bytes) async { - final data = await zstdDecompress(hex.encode(bytes).toJS).toDart; - return hex.decode(data.toDart); - } -} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/pubspec.yaml deleted file mode 100644 index 40c944df8561..000000000000 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web/pubspec.yaml +++ /dev/null @@ -1,37 +0,0 @@ -name: catalyst_compression_web -description: Web platform implementation of catalyst_compression. Exposes a JS wrapper around Brotli and zstd compression algorithms. -repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_web -issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues -topics: [compression, codec] -version: 1.0.0 - -environment: - sdk: ">=3.9.0 <4.0.0" - flutter: ">=3.35.1" - -flutter: - plugin: - implements: catalyst_compression - platforms: - web: - pluginClass: CatalystCompressionWeb - fileName: catalyst_compression_web.dart - - assets: - - assets/js/ - - assets/js/brotli/ - - assets/js/zstd/ - -dependencies: - catalyst_compression_platform_interface: ^1.0.0 - convert: ^3.1.2 - flutter: - sdk: flutter - flutter_web_plugins: - sdk: flutter - web: ^1.1.1 - -dev_dependencies: - catalyst_analysis: ^3.0.0 - flutter_test: - sdk: flutter diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/example/.gitignore new file mode 100644 index 000000000000..1dc8ccf2f95a --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/.gitignore @@ -0,0 +1,46 @@ +# Miscellaneous +*.class +*.log +*.pyc +*.swp +.DS_Store +.atom/ +.build/ +.buildlog/ +.history +.svn/ +.swiftpm/ +migrate_working_dir/ + +# IntelliJ related +*.iml +*.ipr +*.iws +.idea/ + +# The .vscode folder contains launch configuration and tasks you configure in +# VS Code which you may wish to be included in version control, so this line +# is commented out by default. +#.vscode/ + +# Flutter/Dart/Pub related +**/doc/api/ +**/ios/Flutter/.last_build_id +.dart_tool/ +.flutter-plugins +.flutter-plugins-dependencies +.pub-cache/ +.pub/ +/build/ +/web/pkg/ + +# Symbolication related +app.*.symbols + +# Obfuscation related +app.*.map.json + +# Android Studio will place build artifacts here +/android/app/debug +/android/app/profile +/android/app/release diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/README.md b/catalyst_voices/packages/libs/catalyst_compression/example/README.md new file mode 100644 index 000000000000..875c605c1d55 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/README.md @@ -0,0 +1,16 @@ +# catalyst_compression_example + +Demonstrates how to use the catalyst_compression plugin. + +## Getting Started + +This project is a starting point for a Flutter application. + +A few resources to get you started if this is your first Flutter project: + +* [Lab: Write your first Flutter app](https://docs.flutter.dev/get-started/codelab) +* [Cookbook: Useful Flutter samples](https://docs.flutter.dev/cookbook) + +For help getting started with Flutter development, view the +[online documentation](https://docs.flutter.dev/), which offers tutorials, +samples, guidance on mobile development, and a full API reference. diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/analysis_options.yaml b/catalyst_voices/packages/libs/catalyst_compression/example/analysis_options.yaml similarity index 73% rename from catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/analysis_options.yaml rename to catalyst_voices/packages/libs/catalyst_compression/example/analysis_options.yaml index a2316514a4b3..376b1c3947e8 100644 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/analysis_options.yaml +++ b/catalyst_voices/packages/libs/catalyst_compression/example/analysis_options.yaml @@ -2,3 +2,5 @@ include: package:catalyst_analysis/analysis_options.yaml analyzer: exclude: [build/**, lib/*.g.dart, lib/generated/**] + errors: + public_member_api_docs: ignore diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/example/android/.gitignore new file mode 100644 index 000000000000..be3943c96d8e --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/.gitignore @@ -0,0 +1,14 @@ +gradle-wrapper.jar +/.gradle +/captures/ +/gradlew +/gradlew.bat +/local.properties +GeneratedPluginRegistrant.java +.cxx/ + +# Remember to never publicly share your keystore. +# See https://flutter.dev/to/reference-keystore +key.properties +**/*.keystore +**/*.jks diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/build.gradle.kts b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/build.gradle.kts new file mode 100644 index 000000000000..fe461ce583e7 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/build.gradle.kts @@ -0,0 +1,70 @@ +import java.util.Properties + +plugins { + id("com.android.application") + id("kotlin-android") + // The Flutter Gradle Plugin must be applied after the Android and Kotlin Gradle plugins. + id("dev.flutter.flutter-gradle-plugin") +} + +val localProperties = Properties() +val localPropertiesFile = rootProject.file("local.properties") +if (localPropertiesFile.exists()) { + localPropertiesFile.reader().use { reader -> + localProperties.load(reader) + } +} + +val flutterVersionCode = localProperties.getProperty("flutter.versionCode")?.toIntOrNull() ?: 1 +val flutterVersionName = localProperties.getProperty("flutter.versionName") ?: "1.0" + +android { + namespace = "com.example.catalyst_compression_example" + compileSdk = flutter.compileSdkVersion + ndkVersion = flutter.ndkVersion + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_11 + targetCompatibility = JavaVersion.VERSION_11 + } + + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + + sourceSets { + getByName("main") { + java.srcDirs("src/main/kotlin") + } + } + + defaultConfig { + // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). + applicationId = "com.example.catalyst_compression_example" + // You can update the following values to match your application needs. + // For more information, see: https://flutter.dev/to/review-gradle-config. + minSdk = 24 + targetSdk = 36 + versionCode = flutterVersionCode + versionName = flutterVersionName + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + buildTypes { + release { + // TODO: Add your own signing config for the release build. + // Signing with the debug keys for now, so `flutter run --release` works. + signingConfig = signingConfigs.getByName("debug") + } + } +} + +flutter { + source = "../.." +} + +dependencies { + testImplementation("junit:junit:4.12") + androidTestImplementation("androidx.test:runner:1.2.0") + androidTestImplementation("androidx.test.espresso:espresso-core:3.2.3") +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/debug/AndroidManifest.xml b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/debug/AndroidManifest.xml new file mode 100644 index 000000000000..399f6981d5d3 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/debug/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/AndroidManifest.xml b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/AndroidManifest.xml new file mode 100644 index 000000000000..480442acc06b --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/kotlin/com/example/catalyst_compression_example/MainActivity.kt b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/kotlin/com/example/catalyst_compression_example/MainActivity.kt new file mode 100644 index 000000000000..6fa4e50864e3 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/kotlin/com/example/catalyst_compression_example/MainActivity.kt @@ -0,0 +1,5 @@ +package com.example.catalyst_compression_example + +import io.flutter.embedding.android.FlutterActivity + +class MainActivity : FlutterActivity() diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/drawable-v21/launch_background.xml b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/drawable-v21/launch_background.xml new file mode 100644 index 000000000000..f74085f3f6a2 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/drawable-v21/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/drawable/launch_background.xml b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/drawable/launch_background.xml new file mode 100644 index 000000000000..304732f88420 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/drawable/launch_background.xml @@ -0,0 +1,12 @@ + + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 000000000000..db77bb4b7b09 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 000000000000..17987b79bb8a Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 000000000000..09d4391482be Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 000000000000..d5f1c8d34e7a Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 000000000000..4d6372eebdb2 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/values-night/styles.xml b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/values-night/styles.xml new file mode 100644 index 000000000000..06952be745f9 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/values-night/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/values/styles.xml b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/values/styles.xml new file mode 100644 index 000000000000..cb1ef88056ed --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/profile/AndroidManifest.xml b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/profile/AndroidManifest.xml new file mode 100644 index 000000000000..399f6981d5d3 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/app/src/profile/AndroidManifest.xml @@ -0,0 +1,7 @@ + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/build.gradle.kts b/catalyst_voices/packages/libs/catalyst_compression/example/android/build.gradle.kts new file mode 100644 index 000000000000..1de07369c39d --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/build.gradle.kts @@ -0,0 +1,18 @@ +allprojects { + repositories { + google() + mavenCentral() + } +} + +rootProject.buildDir = file("../build") + +subprojects { + project.buildDir = file("${rootProject.buildDir}/${project.name}") + project.evaluationDependsOn(":app") +} + +tasks.register("clean") { + delete(rootProject.buildDir) +} + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/gradle.properties b/catalyst_voices/packages/libs/catalyst_compression/example/android/gradle.properties new file mode 100644 index 000000000000..259717082164 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/gradle.properties @@ -0,0 +1,3 @@ +org.gradle.jvmargs=-Xmx4G -XX:MaxMetaspaceSize=2G -XX:+HeapDumpOnOutOfMemoryError +android.useAndroidX=true +android.enableJetifier=true diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/gradle/wrapper/gradle-wrapper.properties b/catalyst_voices/packages/libs/catalyst_compression/example/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 000000000000..afa1e8eb0a83 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,5 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-all.zip diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/android/settings.gradle.kts b/catalyst_voices/packages/libs/catalyst_compression/example/android/settings.gradle.kts new file mode 100644 index 000000000000..9b0563ef804b --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/android/settings.gradle.kts @@ -0,0 +1,26 @@ +pluginManagement { + val flutterSdkPath = + run { + val properties = java.util.Properties() + file("local.properties").inputStream().use { properties.load(it) } + val flutterSdkPath = properties.getProperty("flutter.sdk") + require( flutterSdkPath != null) { "flutter.sdk not set in local.properties" } + flutterSdkPath + } + + includeBuild("$flutterSdkPath/packages/flutter_tools/gradle") + + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +plugins { + id("dev.flutter.flutter-plugin-loader") version "1.0.0" + id("com.android.application") version "8.8.0" apply false + id("org.jetbrains.kotlin.android") version "2.1.0" apply false +} + +include(":app") diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/integration_test/catalyst_brotli_compressor_test.dart b/catalyst_voices/packages/libs/catalyst_compression/example/integration_test/catalyst_brotli_compressor_test.dart new file mode 100644 index 000000000000..0837d7582118 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/integration_test/catalyst_brotli_compressor_test.dart @@ -0,0 +1,21 @@ +import 'package:catalyst_compression/catalyst_compression.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + group(CatalystBrotliCompressor, () { + const compressor = CatalystBrotliCompressor(); + final rawData = List.generate(1024, (i) => i % 255); + + test('compress and decompress', () async { + final compressed = await compressor.compress(rawData); + final decompressed = await compressor.decompress(compressed); + + expect(compressed, isNot(equals(rawData))); + expect(compressed.length, lessThan(rawData.length)); + expect(decompressed, equals(rawData)); + }); + }); +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/integration_test/catalyst_zstd_compressor_test.dart b/catalyst_voices/packages/libs/catalyst_compression/example/integration_test/catalyst_zstd_compressor_test.dart new file mode 100644 index 000000000000..85b229890922 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/integration_test/catalyst_zstd_compressor_test.dart @@ -0,0 +1,21 @@ +import 'package:catalyst_compression/catalyst_compression.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:integration_test/integration_test.dart'; + +void main() { + IntegrationTestWidgetsFlutterBinding.ensureInitialized(); + + group(CatalystZstdCompressor, () { + const compressor = CatalystZstdCompressor(); + final rawData = List.generate(1024, (i) => i % 255); + + test('compress and decompress', () async { + final compressed = await compressor.compress(rawData); + final decompressed = await compressor.decompress(compressed); + + expect(compressed, isNot(equals(rawData))); + expect(compressed.length, lessThan(rawData.length)); + expect(decompressed, equals(rawData)); + }); + }); +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/example/ios/.gitignore new file mode 100644 index 000000000000..7a7f9873ad7d --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/.gitignore @@ -0,0 +1,34 @@ +**/dgph +*.mode1v3 +*.mode2v3 +*.moved-aside +*.pbxuser +*.perspectivev3 +**/*sync/ +.sconsign.dblite +.tags* +**/.vagrant/ +**/DerivedData/ +Icon? +**/Pods/ +**/.symlinks/ +profile +xcuserdata +**/.generated/ +Flutter/App.framework +Flutter/Flutter.framework +Flutter/Flutter.podspec +Flutter/Generated.xcconfig +Flutter/ephemeral/ +Flutter/app.flx +Flutter/app.zip +Flutter/flutter_assets/ +Flutter/flutter_export_environment.sh +ServiceDefinitions.json +Runner/GeneratedPluginRegistrant.* + +# Exceptions to above rules. +!default.mode1v3 +!default.mode2v3 +!default.pbxuser +!default.perspectivev3 diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/AppFrameworkInfo.plist b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/AppFrameworkInfo.plist new file mode 100644 index 000000000000..1dc6cf7652ba --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/AppFrameworkInfo.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + App + CFBundleIdentifier + io.flutter.flutter.app + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + App + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + MinimumOSVersion + 13.0 + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/Debug.xcconfig b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/Debug.xcconfig new file mode 100644 index 000000000000..ec97fc6f3021 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/Debug.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig" +#include "Generated.xcconfig" diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/Release.xcconfig b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/Release.xcconfig new file mode 100644 index 000000000000..c4855bfe2000 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Flutter/Release.xcconfig @@ -0,0 +1,2 @@ +#include? "Pods/Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig" +#include "Generated.xcconfig" diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Podfile b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Podfile new file mode 100644 index 000000000000..620e46eba607 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Podfile @@ -0,0 +1,43 @@ +# Uncomment this line to define a global platform for your project +# platform :ios, '13.0' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def flutter_root + generated_xcode_build_settings_path = File.expand_path(File.join('..', 'Flutter', 'Generated.xcconfig'), __FILE__) + unless File.exist?(generated_xcode_build_settings_path) + raise "#{generated_xcode_build_settings_path} must exist. If you're running pod install manually, make sure flutter pub get is executed first" + end + + File.foreach(generated_xcode_build_settings_path) do |line| + matches = line.match(/FLUTTER_ROOT\=(.*)/) + return matches[1].strip if matches + end + raise "FLUTTER_ROOT not found in #{generated_xcode_build_settings_path}. Try deleting Generated.xcconfig, then run flutter pub get" +end + +require File.expand_path(File.join('packages', 'flutter_tools', 'bin', 'podhelper'), flutter_root) + +flutter_ios_podfile_setup + +target 'Runner' do + use_frameworks! + + flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) + target 'RunnerTests' do + inherit! :search_paths + end +end + +post_install do |installer| + installer.pods_project.targets.each do |target| + flutter_additional_ios_build_settings(target) + end +end diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.pbxproj b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.pbxproj new file mode 100644 index 000000000000..1512ceef5ed8 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,619 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 54; + objects = { + +/* Begin PBXBuildFile section */ + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 331C8085294A63A400263BE5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 97C146E61CF9000F007C117D /* Project object */; + proxyType = 1; + remoteGlobalIDString = 97C146ED1CF9000F007C117D; + remoteInfo = Runner; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 9705A1C41CF9048500538489 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; + 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; + 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; + 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; + 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 97C146FB1CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; + 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; + 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 97C146EB1CF9000F007C117D /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 331C8082294A63A400263BE5 /* RunnerTests */ = { + isa = PBXGroup; + children = ( + 331C807B294A618700263BE5 /* RunnerTests.swift */, + ); + path = RunnerTests; + sourceTree = ""; + }; + 9740EEB11CF90186004384FC /* Flutter */ = { + isa = PBXGroup; + children = ( + 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */, + 9740EEB21CF90195004384FC /* Debug.xcconfig */, + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */, + 9740EEB31CF90195004384FC /* Generated.xcconfig */, + ); + name = Flutter; + sourceTree = ""; + }; + 97C146E51CF9000F007C117D = { + isa = PBXGroup; + children = ( + 9740EEB11CF90186004384FC /* Flutter */, + 97C146F01CF9000F007C117D /* Runner */, + 97C146EF1CF9000F007C117D /* Products */, + 331C8082294A63A400263BE5 /* RunnerTests */, + ); + sourceTree = ""; + }; + 97C146EF1CF9000F007C117D /* Products */ = { + isa = PBXGroup; + children = ( + 97C146EE1CF9000F007C117D /* Runner.app */, + 331C8081294A63A400263BE5 /* RunnerTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + 97C146F01CF9000F007C117D /* Runner */ = { + isa = PBXGroup; + children = ( + 97C146FA1CF9000F007C117D /* Main.storyboard */, + 97C146FD1CF9000F007C117D /* Assets.xcassets */, + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */, + 97C147021CF9000F007C117D /* Info.plist */, + 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */, + 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */, + 74858FAE1ED2DC5600515810 /* AppDelegate.swift */, + 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */, + ); + path = Runner; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 331C8080294A63A400263BE5 /* RunnerTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */; + buildPhases = ( + 331C807D294A63A400263BE5 /* Sources */, + 331C807F294A63A400263BE5 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 331C8086294A63A400263BE5 /* PBXTargetDependency */, + ); + name = RunnerTests; + productName = RunnerTests; + productReference = 331C8081294A63A400263BE5 /* RunnerTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 97C146ED1CF9000F007C117D /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + 9740EEB61CF901F6004384FC /* Run Script */, + 97C146EA1CF9000F007C117D /* Sources */, + 97C146EB1CF9000F007C117D /* Frameworks */, + 97C146EC1CF9000F007C117D /* Resources */, + 9705A1C41CF9048500538489 /* Embed Frameworks */, + 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = Runner; + productName = Runner; + productReference = 97C146EE1CF9000F007C117D /* Runner.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 97C146E61CF9000F007C117D /* Project object */ = { + isa = PBXProject; + attributes = { + BuildIndependentTargetsInParallel = YES; + LastUpgradeCheck = 1510; + ORGANIZATIONNAME = ""; + TargetAttributes = { + 331C8080294A63A400263BE5 = { + CreatedOnToolsVersion = 14.0; + TestTargetID = 97C146ED1CF9000F007C117D; + }; + 97C146ED1CF9000F007C117D = { + CreatedOnToolsVersion = 7.3.1; + LastSwiftMigration = 1100; + }; + }; + }; + buildConfigurationList = 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 9.3"; + developmentRegion = en; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 97C146E51CF9000F007C117D; + productRefGroup = 97C146EF1CF9000F007C117D /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 97C146ED1CF9000F007C117D /* Runner */, + 331C8080294A63A400263BE5 /* RunnerTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 331C807F294A63A400263BE5 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EC1CF9000F007C117D /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, + 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, + 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */, + 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 3B06AD1E1E4923F5004D2608 /* Thin Binary */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}", + ); + name = "Thin Binary"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; + }; + 9740EEB61CF901F6004384FC /* Run Script */ = { + isa = PBXShellScriptBuildPhase; + alwaysOutOfDate = 1; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Run Script"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 331C807D294A63A400263BE5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 97C146EA1CF9000F007C117D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */, + 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 331C8086294A63A400263BE5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 97C146ED1CF9000F007C117D /* Runner */; + targetProxy = 331C8085294A63A400263BE5 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 97C146FA1CF9000F007C117D /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C146FB1CF9000F007C117D /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 97C147001CF9000F007C117D /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 249021D3217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Profile; + }; + 249021D4217E4FDB00AE95B9 /* Profile */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = MU8X7F2XQD; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.catalystCompressionNativeExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Profile; + }; + 331C8088294A63A400263BE5 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.catalystCompressionNativeExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Debug; + }; + 331C8089294A63A400263BE5 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.catalystCompressionNativeExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Release; + }; + 331C808A294A63A400263BE5 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + GENERATE_INFOPLIST_FILE = YES; + MARKETING_VERSION = 1.0; + PRODUCT_BUNDLE_IDENTIFIER = com.example.catalystCompressionNativeExample.RunnerTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner"; + }; + name = Profile; + }; + 97C147031CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 97C147041CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 13.0; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + SUPPORTED_PLATFORMS = iphoneos; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_OPTIMIZATION_LEVEL = "-O"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 97C147061CF9000F007C117D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = MU8X7F2XQD; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.catalystCompressionNativeExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Debug; + }; + 97C147071CF9000F007C117D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = MU8X7F2XQD; + ENABLE_BITCODE = NO; + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = com.example.catalystCompressionNativeExample; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 331C8087294A63A400263BE5 /* Build configuration list for PBXNativeTarget "RunnerTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 331C8088294A63A400263BE5 /* Debug */, + 331C8089294A63A400263BE5 /* Release */, + 331C808A294A63A400263BE5 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C146E91CF9000F007C117D /* Build configuration list for PBXProject "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147031CF9000F007C117D /* Debug */, + 97C147041CF9000F007C117D /* Release */, + 249021D3217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 97C147061CF9000F007C117D /* Debug */, + 97C147071CF9000F007C117D /* Release */, + 249021D4217E4FDB00AE95B9 /* Profile */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 97C146E61CF9000F007C117D /* Project object */; +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000000..919434a6254f --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000000..18d981003d68 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000000..f9b0d7c5ea15 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme new file mode 100644 index 000000000000..e3773d42e24c --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/contents.xcworkspacedata b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/contents.xcworkspacedata new file mode 100644 index 000000000000..1d526a16ed0f --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 000000000000..18d981003d68 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings new file mode 100644 index 000000000000..f9b0d7c5ea15 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings @@ -0,0 +1,8 @@ + + + + + PreviewsEnabled + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/AppDelegate.swift b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/AppDelegate.swift new file mode 100644 index 000000000000..626664468b89 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/AppDelegate.swift @@ -0,0 +1,13 @@ +import Flutter +import UIKit + +@main +@objc class AppDelegate: FlutterAppDelegate { + override func application( + _ application: UIApplication, + didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? + ) -> Bool { + GeneratedPluginRegistrant.register(with: self) + return super.application(application, didFinishLaunchingWithOptions: launchOptions) + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 000000000000..d36b1fab2d9d --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,122 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-App-20x20@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-App-29x29@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-App-40x40@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-App-60x60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@1x.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-App-20x20@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@1x.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-App-29x29@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@1x.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-App-40x40@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-App-76x76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-App-83.5x83.5@2x.png", + "scale" : "2x" + }, + { + "size" : "1024x1024", + "idiom" : "ios-marketing", + "filename" : "Icon-App-1024x1024@1x.png", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png new file mode 100644 index 000000000000..dc9ada4725e9 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-1024x1024@1x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png new file mode 100644 index 000000000000..7353c41ecf9c Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@1x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png new file mode 100644 index 000000000000..797d452e4589 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@2x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png new file mode 100644 index 000000000000..6ed2d933e112 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-20x20@3x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png new file mode 100644 index 000000000000..4cd7b0099ca8 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@1x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png new file mode 100644 index 000000000000..fe730945a01f Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@2x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png new file mode 100644 index 000000000000..321773cd857a Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-29x29@3x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png new file mode 100644 index 000000000000..797d452e4589 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@1x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png new file mode 100644 index 000000000000..502f463a9bc8 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@2x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png new file mode 100644 index 000000000000..0ec303439225 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-40x40@3x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png new file mode 100644 index 000000000000..0ec303439225 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@2x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png new file mode 100644 index 000000000000..e9f5fea27c70 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-60x60@3x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png new file mode 100644 index 000000000000..84ac32ae7d98 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@1x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png new file mode 100644 index 000000000000..8953cba09064 Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-76x76@2x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png new file mode 100644 index 000000000000..0467bf12aa4d Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/AppIcon.appiconset/Icon-App-83.5x83.5@2x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json new file mode 100644 index 000000000000..0bedcf2fd467 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "LaunchImage.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@2x.png", + "scale" : "2x" + }, + { + "idiom" : "universal", + "filename" : "LaunchImage@3x.png", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png new file mode 100644 index 000000000000..9da19eacad3b Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png new file mode 100644 index 000000000000..9da19eacad3b Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@2x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png new file mode 100644 index 000000000000..9da19eacad3b Binary files /dev/null and b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/LaunchImage@3x.png differ diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md new file mode 100644 index 000000000000..455340ec4094 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Assets.xcassets/LaunchImage.imageset/README.md @@ -0,0 +1,6 @@ +# Launch Screen Assets + +You can customize the launch screen with your own desired assets by replacing the image files in this directory. + +You can also do it by opening your Flutter project's Xcode project with `open ios/Runner.xcworkspace`, +selecting `Runner/Assets.xcassets` in the Project Navigator and dropping in the desired images. diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Base.lproj/LaunchScreen.storyboard b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 000000000000..f2e259c7c939 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Base.lproj/Main.storyboard b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Base.lproj/Main.storyboard new file mode 100644 index 000000000000..f3c28516fb38 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Base.lproj/Main.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Info.plist b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Info.plist new file mode 100644 index 000000000000..e56bb73e56d9 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + $(DEVELOPMENT_LANGUAGE) + CFBundleDisplayName + Catalyst Compression + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + catalyst_compression_example + CFBundlePackageType + APPL + CFBundleShortVersionString + $(FLUTTER_BUILD_NAME) + CFBundleSignature + ???? + CFBundleVersion + $(FLUTTER_BUILD_NUMBER) + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + + diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Runner-Bridging-Header.h b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Runner-Bridging-Header.h new file mode 100644 index 000000000000..308a2a560b42 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/Runner/Runner-Bridging-Header.h @@ -0,0 +1 @@ +#import "GeneratedPluginRegistrant.h" diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/ios/RunnerTests/RunnerTests.swift b/catalyst_voices/packages/libs/catalyst_compression/example/ios/RunnerTests/RunnerTests.swift new file mode 100644 index 000000000000..86a7c3b1b611 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/ios/RunnerTests/RunnerTests.swift @@ -0,0 +1,12 @@ +import Flutter +import UIKit +import XCTest + +class RunnerTests: XCTestCase { + + func testExample() { + // If you add code to the Runner application, consider adding tests here. + // See https://developer.apple.com/documentation/xctest for more information about using XCTest. + } + +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/example/main.dart b/catalyst_voices/packages/libs/catalyst_compression/example/lib/main.dart similarity index 55% rename from catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/example/main.dart rename to catalyst_voices/packages/libs/catalyst_compression/example/lib/main.dart index a903cd1b90b1..a12bd891741e 100644 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/example/main.dart +++ b/catalyst_voices/packages/libs/catalyst_compression/example/lib/main.dart @@ -1,29 +1,22 @@ import 'package:catalyst_compression/catalyst_compression.dart'; import 'package:convert/convert.dart'; import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +/// Run only via `flutter run`: +/// +/// ```shell +/// flutter run \ +/// --web-header Cross-Origin-Opener-Policy=same-origin \ +/// --web-header Cross-Origin-Embedder-Policy=require-corp \ +/// --target lib/main.dart \ +/// -d chrome +/// ``` +/// +/// Explanation: +/// - flutter_rust_bridge: https://cjycode.com/flutter_rust_bridge/manual/miscellaneous/web-cross-origin#when-flutter-run Future main() async { - final rawBytes = hex.decode(derCertHex); - - // brotli - final brotli = CatalystCompression.instance.brotli; - final brotliCompressed = await brotli.compress(rawBytes); - final brotliDecompressed = await brotli.decompress(brotliCompressed); - - assert( - listEquals(rawBytes, brotliDecompressed), - 'Original and decompressed bytes must be the same!', - ); - - // zstd - final zstd = CatalystCompression.instance.zstd; - final zstdCompressed = await zstd.compress(rawBytes); - final zstdDecompressed = await zstd.decompress(zstdCompressed); - - assert( - listEquals(rawBytes, zstdDecompressed), - 'Original and decompressed bytes must be the same!', - ); + runApp(const MyApp()); } final derCertHex = @@ -66,3 +59,73 @@ E61E8EE7D77E9F7F9804E03EBC31B458 1313C955A667658B ''' .replaceAll('\n', ''); + +Future _performTest() async { + final rawBytes = hex.decode(derCertHex); + + // brotli + final brotli = CatalystCompression.brotli; + final brotliCompressed = await brotli.compress(rawBytes); + final brotliDecompressed = await brotli.decompress(brotliCompressed); + + assert( + listEquals(rawBytes, brotliDecompressed), + 'Original and decompressed bytes must be the same!', + ); + + // zstd + final zstd = CatalystCompression.zstd; + final zstdCompressed = await zstd.compress(rawBytes); + final zstdDecompressed = await zstd.decompress(zstdCompressed); + + assert( + listEquals(rawBytes, zstdDecompressed), + 'Original and decompressed bytes must be the same!', + ); + + return true; +} + +class MyApp extends StatefulWidget { + const MyApp({super.key}); + + @override + State createState() => _MyAppState(); +} + +class _MyAppState extends State { + late Future _testFuture; + + @override + Widget build(BuildContext context) { + return MaterialApp( + home: Scaffold( + appBar: AppBar(title: const Text('flutter_rust_bridge quickstart')), + body: Center( + child: FutureBuilder( + future: _testFuture, + builder: (context, snapshot) { + String message; + if (snapshot.error case final error?) { + message = error.toString(); + } else if (snapshot.data case final data?) { + message = 'Test successful: $data'; + } else { + message = 'In progress...'; + } + + return Text(message); + }, + ), + ), + ), + ); + } + + @override + void initState() { + super.initState(); + + _testFuture = _performTest(); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/example/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_compression/example/pubspec.yaml new file mode 100644 index 000000000000..0d7422386d62 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/example/pubspec.yaml @@ -0,0 +1,24 @@ +name: catalyst_compression_example +description: "Demonstrates how to use the catalyst_compression plugin." +publish_to: "none" +version: 1.0.0+1 + +environment: + sdk: ">=3.9.0 <4.0.0" + +dependencies: + catalyst_compression: + path: ../ + convert: ^3.1.2 + flutter: + sdk: flutter + +dev_dependencies: + catalyst_analysis: ^3.0.0 + flutter_test: + sdk: flutter + integration_test: + sdk: flutter + +flutter: + uses-material-design: true diff --git a/catalyst_voices/packages/libs/catalyst_compression/flutter_rust_bridge.yaml b/catalyst_voices/packages/libs/catalyst_compression/flutter_rust_bridge.yaml new file mode 100644 index 000000000000..638e87d92b0d --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/flutter_rust_bridge.yaml @@ -0,0 +1,7 @@ +rust_input: crate::compression +rust_root: rust/ +dart_output: lib/src/rust +default_external_library_loader_web_prefix: /assets/packages/catalyst_compression/assets/js/ +wasm_bindgen_name: compression_wasm_bindgen +# TODO(dt-iohk): allow to auto-upgrade when we're no longer using the forked flutter_rust_bridge +auto_upgrade_dependency: false diff --git a/catalyst_voices/packages/libs/catalyst_compression/ios/Classes/dummy_file.c b/catalyst_voices/packages/libs/catalyst_compression/ios/Classes/dummy_file.c new file mode 100644 index 000000000000..e06dab99684a --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/ios/Classes/dummy_file.c @@ -0,0 +1 @@ +// This is an empty file to force CocoaPods to create a framework. diff --git a/catalyst_voices/packages/libs/catalyst_compression/ios/catalyst_compression.podspec b/catalyst_voices/packages/libs/catalyst_compression/ios/catalyst_compression.podspec new file mode 100644 index 000000000000..9775338f4d64 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/ios/catalyst_compression.podspec @@ -0,0 +1,45 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint catalyst_compression.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'catalyst_compression' + s.version = '0.0.1' + s.summary = 'A new Flutter FFI plugin project.' + s.description = <<-DESC +A new Flutter FFI plugin project. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + + # This will ensure the source files in Classes/ are included in the native + # builds of apps using this FFI plugin. Podspec does not support relative + # paths, so Classes contains a forwarder C file that relatively imports + # `../src/*` so that the C sources can be shared among all target platforms. + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'Flutter' + s.platform = :ios, '11.0' + + # Flutter.framework does not contain a i386 slice. + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } + s.swift_version = '5.0' + + s.script_phase = { + :name => 'Build Rust library', + # First argument is relative path to the `rust` folder, second is name of rust library + :script => 'sh "$PODS_TARGET_SRCROOT/../cargokit/build_pod.sh" ../rust catalyst_compression', + :execution_position => :before_compile, + :input_files => ['${BUILT_PRODUCTS_DIR}/cargokit_phony'], + # Let XCode know that the static library referenced in -force_load below is + # created by this build step. + :output_files => ["${BUILT_PRODUCTS_DIR}/libcatalyst_compression.a"], + } + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + # Flutter.framework does not contain a i386 slice. + 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', + 'OTHER_LDFLAGS' => '-force_load ${BUILT_PRODUCTS_DIR}/libcatalyst_compression.a', + } +end \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/catalyst_compression.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/catalyst_compression.dart new file mode 100644 index 000000000000..ec5b3f3504ac --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/catalyst_compression.dart @@ -0,0 +1,4 @@ +export 'src/catalyst_brotli_compressor.dart'; +export 'src/catalyst_compression.dart'; +export 'src/catalyst_compressor.dart'; +export 'src/catalyst_zstd_compressor.dart'; diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_brotli_compressor.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_brotli_compressor.dart new file mode 100644 index 000000000000..fccb16003a18 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_brotli_compressor.dart @@ -0,0 +1,28 @@ +import 'package:catalyst_compression/src/catalyst_compressor.dart'; +import 'package:catalyst_compression/src/rust/compression.dart' as rust; +import 'package:catalyst_compression/src/rust_initializer.dart'; + +/// Brotli compressor backed by Rust via `flutter_rust_bridge`. +/// +/// Usage: +/// ```dart +/// final c = CatalystBrotliCompressor(); +/// final out = await c.compress(data); +/// final restored = await c.decompress(out); +/// ``` +class CatalystBrotliCompressor implements CatalystCompressor { + /// The default constructor for [CatalystBrotliCompressor]. + const CatalystBrotliCompressor(); + + @override + Future> compress(List bytes) async { + await RustInitializer.ensureInitialized(); + return rust.brotliCompress(bytes: bytes); + } + + @override + Future> decompress(List bytes) async { + await RustInitializer.ensureInitialized(); + return rust.brotliDecompress(bytes: bytes); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_compression.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_compression.dart new file mode 100644 index 000000000000..e8233310d588 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_compression.dart @@ -0,0 +1,21 @@ +import 'package:catalyst_compression/catalyst_compression.dart'; + +final class CatalystCompression { + static CatalystCompressor _brotli = const CatalystBrotliCompressor(); + + static CatalystCompressor _zstd = const CatalystZstdCompressor(); + + static CatalystCompressor get brotli => _brotli; + + static CatalystCompressor get zstd => _zstd; + + // ignore: use_setters_to_change_properties + static void overrideBrotli(CatalystCompressor compressor) { + _brotli = compressor; + } + + // ignore: use_setters_to_change_properties + static void overrideZstd(CatalystCompressor compressor) { + _zstd = compressor; + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/src/catalyst_compressor.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_compressor.dart similarity index 100% rename from catalyst_voices/packages/libs/catalyst_compression/catalyst_compression_platform_interface/lib/src/catalyst_compressor.dart rename to catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_compressor.dart diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_zstd_compressor.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_zstd_compressor.dart new file mode 100644 index 000000000000..62edec2739cd --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/catalyst_zstd_compressor.dart @@ -0,0 +1,28 @@ +import 'package:catalyst_compression/src/catalyst_compressor.dart'; +import 'package:catalyst_compression/src/rust/compression.dart' as rust; +import 'package:catalyst_compression/src/rust_initializer.dart'; + +/// Zstd compressor backed by Rust via `flutter_rust_bridge`. +/// +/// Usage: +/// ```dart +/// final c = CatalystZstdCompressor(); +/// final out = await c.compress(data); +/// final restored = await c.decompress(out); +/// ``` +class CatalystZstdCompressor implements CatalystCompressor { + /// The default constructor for [CatalystZstdCompressor]. + const CatalystZstdCompressor(); + + @override + Future> compress(List bytes) async { + await RustInitializer.ensureInitialized(); + return rust.zstdCompress(bytes: bytes); + } + + @override + Future> decompress(List bytes) async { + await RustInitializer.ensureInitialized(); + return rust.zstdDecompress(bytes: bytes); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/compression.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/compression.dart new file mode 100644 index 000000000000..ab43d204a294 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/compression.dart @@ -0,0 +1,77 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import + +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +// These functions are ignored because they are not marked as `pub`: `brotli_compress_helper`, `brotli_decompress_helper`, `zstd_compress_helper`, `zstd_decompress_helper` + +/// Compress the bytes with brotli compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: uncompressed bytes. +/// +/// # Returns +/// +/// Returns compressed bytes as a `Result`. +/// +/// # Errors +/// +/// Returns an error if the compression fails. +Future brotliCompress({required List bytes}) => + RustLib.instance.api.crateCompressionBrotliCompress(bytes: bytes); + +/// Decompress the bytes with brotli compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: brotli compressed bytes. +/// +/// # Returns +/// +/// Returns uncompressed bytes as `Result`. +/// +/// # Errors +/// +/// Returns an error if the decompression fails. +Future brotliDecompress({required List bytes}) => + RustLib.instance.api.crateCompressionBrotliDecompress(bytes: bytes); + +/// Compress the bytes with zstd compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: uncompressed bytes. +/// +/// # Returns +/// +/// Returns compressed bytes as a `Result`. +/// +/// # Errors +/// +/// Returns an error if the compression fails. +Future zstdCompress({required List bytes}) => + RustLib.instance.api.crateCompressionZstdCompress(bytes: bytes); + +/// Decompress the bytes with zstd compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: zstd compressed bytes. +/// +/// # Returns +/// +/// Returns uncompressed bytes as `Result`. +/// +/// # Errors +/// +/// Returns an error if the decompression fails. +Future zstdDecompress({required List bytes}) => + RustLib.instance.api.crateCompressionZstdDecompress(bytes: bytes); diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.dart new file mode 100644 index 000000000000..916d633ad353 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.dart @@ -0,0 +1,338 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field + +import 'compression.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'frb_generated.dart'; +import 'frb_generated.io.dart' if (dart.library.js_interop) 'frb_generated.web.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; + +/// Main entrypoint of the Rust API +class RustLib extends BaseEntrypoint { + @internal + static final instance = RustLib._(); + + RustLib._(); + + /// Initialize flutter_rust_bridge + static Future init({ + RustLibApi? api, + BaseHandler? handler, + ExternalLibrary? externalLibrary, + bool forceSameCodegenVersion = true, + }) async { + await instance.initImpl( + api: api, + handler: handler, + externalLibrary: externalLibrary, + forceSameCodegenVersion: forceSameCodegenVersion, + ); + } + + /// Initialize flutter_rust_bridge in mock mode. + /// No libraries for FFI are loaded. + static void initMock({required RustLibApi api}) { + instance.initMockImpl(api: api); + } + + /// Dispose flutter_rust_bridge + /// + /// The call to this function is optional, since flutter_rust_bridge (and everything else) + /// is automatically disposed when the app stops. + static void dispose() => instance.disposeImpl(); + + @override + ApiImplConstructor get apiImplConstructor => RustLibApiImpl.new; + + @override + WireConstructor get wireConstructor => RustLibWire.fromExternalLibrary; + + @override + Future executeRustInitializers() async {} + + @override + ExternalLibraryLoaderConfig get defaultExternalLibraryLoaderConfig => + kDefaultExternalLibraryLoaderConfig; + + @override + String get codegenVersion => '2.11.1'; + + @override + int get rustContentHash => 1685125612; + + static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( + stem: 'catalyst_compression', + ioDirectory: 'rust/target/release/', + webPrefix: '/assets/packages/catalyst_compression/assets/js/', + wasmBindGenName: 'compression_wasm_bindgen', + ); +} + +abstract class RustLibApi extends BaseApi { + Future crateCompressionBrotliCompress({required List bytes}); + + Future crateCompressionBrotliDecompress({ + required List bytes, + }); + + Future crateCompressionZstdCompress({required List bytes}); + + Future crateCompressionZstdDecompress({required List bytes}); +} + +class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { + RustLibApiImpl({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @override + Future crateCompressionBrotliCompress({required List bytes}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_list_prim_u_8_loose(bytes, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 1, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCompressionBrotliCompressConstMeta, + argValues: [bytes], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCompressionBrotliCompressConstMeta => + const TaskConstMeta(debugName: "brotli_compress", argNames: ["bytes"]); + + @override + Future crateCompressionBrotliDecompress({ + required List bytes, + }) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_list_prim_u_8_loose(bytes, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 2, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCompressionBrotliDecompressConstMeta, + argValues: [bytes], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCompressionBrotliDecompressConstMeta => + const TaskConstMeta(debugName: "brotli_decompress", argNames: ["bytes"]); + + @override + Future crateCompressionZstdCompress({required List bytes}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_list_prim_u_8_loose(bytes, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 3, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCompressionZstdCompressConstMeta, + argValues: [bytes], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCompressionZstdCompressConstMeta => + const TaskConstMeta(debugName: "zstd_compress", argNames: ["bytes"]); + + @override + Future crateCompressionZstdDecompress({required List bytes}) { + return handler.executeNormal( + NormalTask( + callFfi: (port_) { + final serializer = SseSerializer(generalizedFrbRustBinding); + sse_encode_list_prim_u_8_loose(bytes, serializer); + pdeCallFfi( + generalizedFrbRustBinding, + serializer, + funcId: 4, + port: port_, + ); + }, + codec: SseCodec( + decodeSuccessData: sse_decode_list_prim_u_8_strict, + decodeErrorData: sse_decode_AnyhowException, + ), + constMeta: kCrateCompressionZstdDecompressConstMeta, + argValues: [bytes], + apiImpl: this, + ), + ); + } + + TaskConstMeta get kCrateCompressionZstdDecompressConstMeta => + const TaskConstMeta(debugName: "zstd_decompress", argNames: ["bytes"]); + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return AnyhowException(raw as String); + } + + @protected + String dco_decode_String(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as String; + } + + @protected + List dco_decode_list_prim_u_8_loose(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as List; + } + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as Uint8List; + } + + @protected + int dco_decode_u_8(dynamic raw) { + // Codec=Dco (DartCObject based), see doc to use other codecs + return raw as int; + } + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_String(deserializer); + return AnyhowException(inner); + } + + @protected + String sse_decode_String(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var inner = sse_decode_list_prim_u_8_strict(deserializer); + return utf8.decoder.convert(inner); + } + + @protected + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var len_ = sse_decode_i_32(deserializer); + return deserializer.buffer.getUint8List(len_); + } + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + var len_ = sse_decode_i_32(deserializer); + return deserializer.buffer.getUint8List(len_); + } + + @protected + int sse_decode_u_8(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8(); + } + + @protected + int sse_decode_i_32(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getInt32(); + } + + @protected + bool sse_decode_bool(SseDeserializer deserializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + return deserializer.buffer.getUint8() != 0; + } + + @protected + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_String(self.message, serializer); + } + + @protected + void sse_encode_String(String self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_list_prim_u_8_strict(utf8.encoder.convert(self), serializer); + } + + @protected + void sse_encode_list_prim_u_8_loose( + List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + serializer.buffer.putUint8List( + self is Uint8List ? self : Uint8List.fromList(self), + ); + } + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, + SseSerializer serializer, + ) { + // Codec=Sse (Serialization based), see doc to use other codecs + sse_encode_i_32(self.length, serializer); + serializer.buffer.putUint8List(self); + } + + @protected + void sse_encode_u_8(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint8(self); + } + + @protected + void sse_encode_i_32(int self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putInt32(self); + } + + @protected + void sse_encode_bool(bool self, SseSerializer serializer) { + // Codec=Sse (Serialization based), see doc to use other codecs + serializer.buffer.putUint8(self ? 1 : 0); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.io.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.io.dart new file mode 100644 index 000000000000..10622ccf6992 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.io.dart @@ -0,0 +1,96 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field + +import 'compression.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'dart:ffi' as ffi; +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; + +abstract class RustLibApiImplPlatform extends BaseApiImpl { + RustLibApiImplPlatform({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + String dco_decode_String(dynamic raw); + + @protected + List dco_decode_list_prim_u_8_loose(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + String sse_decode_String(SseDeserializer deserializer); + + @protected + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ); + + @protected + void sse_encode_String(String self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_u_8(int self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); +} + +// Section: wire_class + +class RustLibWire implements BaseWire { + factory RustLibWire.fromExternalLibrary(ExternalLibrary lib) => + RustLibWire(lib.ffiDynamicLibrary); + + /// Holds the symbol lookup function. + final ffi.Pointer Function(String symbolName) _lookup; + + /// The symbols are looked up in [dynamicLibrary]. + RustLibWire(ffi.DynamicLibrary dynamicLibrary) : _lookup = dynamicLibrary.lookup; +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.web.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.web.dart new file mode 100644 index 000000000000..243bc7bde4a5 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust/frb_generated.web.dart @@ -0,0 +1,98 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +// ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field + +// Static analysis wrongly picks the IO variant, thus ignore this +// ignore_for_file: argument_type_not_assignable + +import 'compression.dart'; +import 'dart:async'; +import 'dart:convert'; +import 'frb_generated.dart'; +import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; + +abstract class RustLibApiImplPlatform extends BaseApiImpl { + RustLibApiImplPlatform({ + required super.handler, + required super.wire, + required super.generalizedFrbRustBinding, + required super.portManager, + }); + + @protected + AnyhowException dco_decode_AnyhowException(dynamic raw); + + @protected + String dco_decode_String(dynamic raw); + + @protected + List dco_decode_list_prim_u_8_loose(dynamic raw); + + @protected + Uint8List dco_decode_list_prim_u_8_strict(dynamic raw); + + @protected + int dco_decode_u_8(dynamic raw); + + @protected + AnyhowException sse_decode_AnyhowException(SseDeserializer deserializer); + + @protected + String sse_decode_String(SseDeserializer deserializer); + + @protected + List sse_decode_list_prim_u_8_loose(SseDeserializer deserializer); + + @protected + Uint8List sse_decode_list_prim_u_8_strict(SseDeserializer deserializer); + + @protected + int sse_decode_u_8(SseDeserializer deserializer); + + @protected + int sse_decode_i_32(SseDeserializer deserializer); + + @protected + bool sse_decode_bool(SseDeserializer deserializer); + + @protected + void sse_encode_AnyhowException( + AnyhowException self, + SseSerializer serializer, + ); + + @protected + void sse_encode_String(String self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_loose(List self, SseSerializer serializer); + + @protected + void sse_encode_list_prim_u_8_strict( + Uint8List self, + SseSerializer serializer, + ); + + @protected + void sse_encode_u_8(int self, SseSerializer serializer); + + @protected + void sse_encode_i_32(int self, SseSerializer serializer); + + @protected + void sse_encode_bool(bool self, SseSerializer serializer); +} + +// Section: wire_class + +class RustLibWire implements BaseWire { + RustLibWire.fromExternalLibrary(ExternalLibrary lib); +} + +@JS('compression_wasm_bindgen') +external RustLibWasmModule get wasmModule; + +@JS() +@anonymous +extension type RustLibWasmModule._(JSObject _) implements JSObject {} diff --git a/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust_initializer.dart b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust_initializer.dart new file mode 100644 index 000000000000..a0dde05fb713 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/lib/src/rust_initializer.dart @@ -0,0 +1,16 @@ +import 'package:catalyst_compression/src/rust/frb_generated.dart' as rust; + +/// An initializer to make sure the rust lib is initialized only once. +class RustInitializer { + static Future? _initFuture; + + const RustInitializer._(); + + /// Initializes the rust lib if not initialized before. + /// + /// Rust init is not expected to fail but if it fails, calling it again will not make it + /// succeed thus the [_initFuture] is cached regardless of its outcome. + static Future ensureInitialized() async { + return _initFuture ??= rust.RustLib.init(); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/linux/CMakeLists.txt b/catalyst_voices/packages/libs/catalyst_compression/linux/CMakeLists.txt new file mode 100644 index 000000000000..7032fb502828 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/linux/CMakeLists.txt @@ -0,0 +1,19 @@ +# The Flutter tooling requires that developers have CMake 3.10 or later +# installed. You should not increase this version, as doing so will cause +# the plugin to fail to compile for some customers of the plugin. +cmake_minimum_required(VERSION 3.10) + +# Project-level configuration. +set(PROJECT_NAME "catalyst_compression") +project(${PROJECT_NAME} LANGUAGES CXX) + +include("../cargokit/cmake/cargokit.cmake") +apply_cargokit(${PROJECT_NAME} ../rust catalyst_compression "") + +# List of absolute paths to libraries that should be bundled with the plugin. +# This list could contain prebuilt libraries, or libraries created by an +# external build triggered from this build file. +set(catalyst_compression_bundled_libraries + "${${PROJECT_NAME}_cargokit_lib}" + PARENT_SCOPE +) diff --git a/catalyst_voices/packages/libs/catalyst_compression/macos/Classes/dummy_file.c b/catalyst_voices/packages/libs/catalyst_compression/macos/Classes/dummy_file.c new file mode 100644 index 000000000000..e06dab99684a --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/macos/Classes/dummy_file.c @@ -0,0 +1 @@ +// This is an empty file to force CocoaPods to create a framework. diff --git a/catalyst_voices/packages/libs/catalyst_compression/macos/catalyst_compression.podspec b/catalyst_voices/packages/libs/catalyst_compression/macos/catalyst_compression.podspec new file mode 100644 index 000000000000..277b0f6e7705 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/macos/catalyst_compression.podspec @@ -0,0 +1,44 @@ +# +# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html. +# Run `pod lib lint catalyst_compression.podspec` to validate before publishing. +# +Pod::Spec.new do |s| + s.name = 'catalyst_compression' + s.version = '0.0.1' + s.summary = 'A new Flutter FFI plugin project.' + s.description = <<-DESC +A new Flutter FFI plugin project. + DESC + s.homepage = 'http://example.com' + s.license = { :file => '../LICENSE' } + s.author = { 'Your Company' => 'email@example.com' } + + # This will ensure the source files in Classes/ are included in the native + # builds of apps using this FFI plugin. Podspec does not support relative + # paths, so Classes contains a forwarder C file that relatively imports + # `../src/*` so that the C sources can be shared among all target platforms. + s.source = { :path => '.' } + s.source_files = 'Classes/**/*' + s.dependency 'FlutterMacOS' + + s.platform = :osx, '10.11' + s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES' } + s.swift_version = '5.0' + + s.script_phase = { + :name => 'Build Rust library', + # First argument is relative path to the `rust` folder, second is name of rust library + :script => 'sh "$PODS_TARGET_SRCROOT/../cargokit/build_pod.sh" ../rust catalyst_compression', + :execution_position => :before_compile, + :input_files => ['${BUILT_PRODUCTS_DIR}/cargokit_phony'], + # Let XCode know that the static library referenced in -force_load below is + # created by this build step. + :output_files => ["${BUILT_PRODUCTS_DIR}/libcatalyst_compression.a"], + } + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + # Flutter.framework does not contain a i386 slice. + 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386', + 'OTHER_LDFLAGS' => '-force_load ${BUILT_PRODUCTS_DIR}/libcatalyst_compression.a', + } +end \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_compression/pubspec.yaml similarity index 50% rename from catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/pubspec.yaml rename to catalyst_voices/packages/libs/catalyst_compression/pubspec.yaml index 992b38b5b55c..ba57ba5baed5 100644 --- a/catalyst_voices/packages/libs/catalyst_compression/catalyst_compression/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_compression/pubspec.yaml @@ -4,26 +4,43 @@ repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalys issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues topics: [compression, codec] version: 1.0.0 +# TODO(dt-iohk): enable publishing once flutter_rust_bridge is reverted to official version +publish_to: none environment: sdk: ">=3.9.0 <4.0.0" flutter: ">=3.35.1" -flutter: - plugin: - platforms: - web: - default_package: catalyst_compression_web - dependencies: - catalyst_compression_platform_interface: ^1.0.0 - catalyst_compression_web: ^1.0.0 - convert: ^3.1.2 flutter: sdk: flutter + flutter_rust_bridge: + git: + url: https://github.com/dt-iohk/flutter_rust_bridge + ref: 64678315e8f5a877fc7b78524d9441cd05f42d65 + path: frb_dart/ + plugin_platform_interface: ^2.1.8 dev_dependencies: catalyst_analysis: ^3.0.0 + ffi: ^2.1.3 + ffigen: ^13.0.0 flutter_test: sdk: flutter - plugin_platform_interface: ^2.1.7 + test: ^1.25.15 + +flutter: + plugin: + platforms: + android: + ffiPlugin: true + ios: + ffiPlugin: true + linux: + ffiPlugin: true + macos: + ffiPlugin: true + windows: + ffiPlugin: true + assets: + - assets/js/ \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/.cargo/config.toml b/catalyst_voices/packages/libs/catalyst_compression/rust/.cargo/config.toml new file mode 100644 index 000000000000..317a7a8456d0 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/.cargo/config.toml @@ -0,0 +1,89 @@ +# Use MOLD linker where possible, but ONLY in CI applicable targets. + +# Configure how Docker container targets build. + +# If you want to customize these targets for a local build, then customize them in your: +# $CARGO_HOME/config.toml +# NOT in the project itself. +# These targets are ONLY the targets used by CI and inside docker builds. + +# DO NOT remove `"-C", "target-feature=+crt-static"` from the rustflags for these targets. + +# Should be the default to have fully static rust programs in CI +[target.x86_64-unknown-linux-musl] +linker = "clang" +rustflags = [ + "-C", "link-arg=-fuse-ld=/usr/bin/mold", + "-C", "target-feature=+crt-static" +] + +# Should be the default to have fully static rust programs in CI +[target.aarch64-unknown-linux-musl] +linker = "clang" +rustflags = [ + "-C", "link-arg=-fuse-ld=/usr/bin/mold", + "-C", "target-feature=+crt-static" +] + +[build] +rustflags = [] +rustdocflags = [] + +[profile.dev] +opt-level = 1 +debug = true +debug-assertions = true +overflow-checks = true +lto = false +panic = "unwind" +incremental = true +codegen-units = 256 + +[profile.release] +opt-level = 3 +debug = false +debug-assertions = false +overflow-checks = false +lto = "thin" +panic = "unwind" +incremental = false +codegen-units = 16 + +[profile.test] +opt-level = 3 +debug = true +lto = false +debug-assertions = true +incremental = true +codegen-units = 256 + +[profile.bench] +opt-level = 3 +debug = false +debug-assertions = false +overflow-checks = false +lto = "thin" +incremental = false +codegen-units = 16 + +[alias] +lint = "clippy --all-targets" +lintfix = "clippy --all-targets --fix --allow-dirty" +lint-vscode = "clippy --message-format=json-diagnostic-rendered-ansi --all-targets" + +docs = "doc --release --no-deps --document-private-items --bins --lib --examples" +# nightly docs build broken... when they are'nt we can enable these docs... --unit-graph --timings=html,json -Z unstable-options" +testunit = "nextest run --release --bins --lib --tests --no-fail-fast -P ci" +testcov = "llvm-cov nextest --release --bins --lib --tests --no-fail-fast -P ci" +testdocs = "test --doc --release" + +# Rust formatting, MUST be run with +nightly +fmtchk = "fmt -- --check -v --color=always" +fmtfix = "fmt -- -v" + +[term] +quiet = false # whether cargo output is quiet +verbose = false # whether cargo provides verbose output +color = "auto" # whether cargo colorizes output use `CARGO_TERM_COLOR="off"` to disable. +progress.when = "never" # whether cargo shows progress bar +progress.width = 80 # width of progress bar diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/.config/nextest.toml b/catalyst_voices/packages/libs/catalyst_compression/rust/.config/nextest.toml new file mode 100644 index 000000000000..c8cccf508139 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/.config/nextest.toml @@ -0,0 +1,60 @@ +# cspell: words scrollability testcase +[store] +# The directory under the workspace root at which nextest-related files are +# written. Profile-specific storage is currently written to dir/. +# dir = "target/nextest" + +[profile.default] +# Print out output for failing tests as soon as they fail, and also at the end +# of the run (for easy scrollability). +failure-output = "immediate-final" + +# Do not cancel the test run on the first failure. +fail-fast = true + +status-level = "all" +final-status-level = "all" + +[profile.ci] +# Print out output for failing tests as soon as they fail, and also at the end +# of the run (for easy scrollability). +failure-output = "immediate-final" +# Do not cancel the test run on the first failure. +fail-fast = false + +status-level = "all" +final-status-level = "all" + + +[profile.ci.junit] +# Output a JUnit report into the given file inside 'store.dir/'. +# If unspecified, JUnit is not written out. + +path = "junit.xml" + +# The name of the top-level "report" element in JUnit report. If aggregating +# reports across different test runs, it may be useful to provide separate names +# for each report. +report-name = "nextest" + +# Whether standard output and standard error for passing tests should be stored in the JUnit report. +# Output is stored in the and elements of the element. +store-success-output = true + +# Whether standard output and standard error for failing tests should be stored in the JUnit report. +# Output is stored in the and elements of the element. +# +# Note that if a description can be extracted from the output, it is always stored in the +# element. +store-failure-output = true + +[test-groups] +serial-integration = { max-threads = 1 } + +[[profile.default.overrides]] +filter = 'test(/^serial::/)' +test-group = 'serial-integration' + +[[profile.ci.overrides]] +filter = 'test(/^serial::/)' +test-group = "serial-integration" diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/rust/.gitignore new file mode 100644 index 000000000000..ea8c4bf7f35f --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/.gitignore @@ -0,0 +1 @@ +/target diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/Cargo.toml b/catalyst_voices/packages/libs/catalyst_compression/rust/Cargo.toml new file mode 100644 index 000000000000..bc88f3d951cc --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/Cargo.toml @@ -0,0 +1,54 @@ +[package] +name = "catalyst_compression" +version = "0.1.0" +edition = "2021" +homepage = "https://input-output-hk.github.io/catalyst-voices" +repository = "https://github.com/input-output-hk/catalyst-voices" +license = "Apache-2.0" + +[lib] +crate-type = ["cdylib", "staticlib", "rlib"] + +[dependencies] +flutter_rust_bridge = { version = "2.11.1", git = "https://github.com/dt-iohk/flutter_rust_bridge.git", rev = "64678315e8f5a877fc7b78524d9441cd05f42d65", package = "flutter_rust_bridge" } +anyhow = "1.0.91" +brotli = "7.0.0" +zstd = "0.13.2" + +[lints.rust] +warnings = "deny" +missing_docs = "deny" +let_underscore_drop = "deny" +non_ascii_idents = "deny" +single_use_lifetimes = "deny" +trivial_casts = "deny" +trivial_numeric_casts = "deny" +# TODO(bkioshn): Revisit the errors https://github.com/input-output-hk/catalyst-voices/issues/1319 +unexpected_cfgs = { level = "warn", check-cfg = ['cfg(frb_expand)'] } + +[lints.rustdoc] +broken_intra_doc_links = "deny" +invalid_codeblock_attributes = "deny" +invalid_html_tags = "deny" +invalid_rust_codeblocks = "deny" +bare_urls = "deny" +unescaped_backticks = "deny" + +[lints.clippy] +pedantic = { level = "deny", priority = -1 } +unwrap_used = "deny" +expect_used = "deny" +todo = "deny" +unimplemented = "deny" +exit = "deny" +get_unwrap = "deny" +index_refutable_slice = "deny" +indexing_slicing = "deny" +match_wild_err_arm = "deny" +missing_panics_doc = "deny" +panic = "deny" +string_slice = "deny" +unchecked_duration_subtraction = "deny" +unreachable = "deny" +missing_docs_in_private_items = "deny" +arithmetic_side_effects = "deny" diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/Earthfile b/catalyst_voices/packages/libs/catalyst_compression/rust/Earthfile new file mode 100644 index 000000000000..8e4824e3ee57 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/Earthfile @@ -0,0 +1,31 @@ +VERSION 0.8 + +IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:feat/catalyst-compression-setup AS rust-ci +IMPORT ../ AS flutter-rust-bridge + +# builder : Setup the builder +builder: + DO rust-ci+SETUP + COPY --dir .cargo .config src Cargo.toml clippy.toml deny.toml rustfmt.toml . + +# check : Run check using the most efficient host tooling +check: + FROM +builder + # Create a dummy file just to past the CI format check + # Add another blank line to satisfy the cargo fmt check + RUN printf "\n" > ./src/frb_generated.rs + DO rust-ci+EXECUTE --cmd="/scripts/std_checks.py" + +# build : Run build using the most efficient host tooling +build: + FROM +builder + + COPY flutter-rust-bridge+code-generator/frb_generated.rs ./src/frb_generated.rs + DO rust-ci+EXECUTE \ + --cmd="/scripts/std_build.py" + +# sync-cfg: Synchronize local config with CI version. +# Must be run by the developer manually. +sync-cfg: + FROM +builder + DO rust-ci+SYNC_STD_CFG diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/Justfile b/catalyst_voices/packages/libs/catalyst_compression/rust/Justfile new file mode 100644 index 000000000000..c51adb4fc609 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/Justfile @@ -0,0 +1,42 @@ +# use with https://github.com/casey/just +# +# Developer convenience functions + +# cspell: words prereqs, commitlog, rustls, nocapture + +default: + @just --list --unsorted + +# Show the dependency tree and all enabled feature flags of every crate. +cargo-tree: + cargo tree -e features,normal,build -f "{p}[{f}]" --workspace --frozen + +# Generate code using flutter_rust_bridge +generate-code: + just ../code-gen-web + +# Check Dependency licenses and CVE's +license-check: + cargo deny check --exclude-dev || true + +# Format the rust code +code-format: + cargo +nightly fmtfix + cargo +nightly fmtchk + +# Lint the rust code +code-lint: + cargo lintfix -r + cargo lint -r + +# Synchronize Rust Configs +sync-cfg: + cd ../../../../.. && \ + earthly ./catalyst_voices/packages/libs/catalyst_compression/rust+sync-cfg + +# Pre Push Checks +pre-push: sync-cfg generate-code code-format code-lint license-check + # Make sure we can actually build inside Earthly which needs to happen in CI. + cd ../../../../.. && \ + earthly ./catalyst_voices/packages/libs/catalyst_compression/rust+check && \ + earthly ./catalyst_voices/packages/libs/catalyst_compression/rust+build diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/blueprint.cue b/catalyst_voices/packages/libs/catalyst_compression/rust/blueprint.cue new file mode 100644 index 000000000000..43e787050263 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/blueprint.cue @@ -0,0 +1 @@ +project: name: "catalyst-compression-native-rust" diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/clippy.toml b/catalyst_voices/packages/libs/catalyst_compression/rust/clippy.toml new file mode 100644 index 000000000000..caa289b27b2d --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/clippy.toml @@ -0,0 +1,4 @@ +allow-unwrap-in-tests = true +allow-expect-in-tests = true +allow-panic-in-tests = true +arithmetic-side-effects-allowed = ["num_bigint::BigInt"] diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/deny.toml b/catalyst_voices/packages/libs/catalyst_compression/rust/deny.toml new file mode 100644 index 000000000000..0976bbb2a00a --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/deny.toml @@ -0,0 +1,130 @@ +# cspell: words msvc, wasip, RUSTSEC, rustls, libssh, reqwest, tinyvec, Leay, webpki + +[graph] +# cargo-deny is really only ever intended to run on the "normal" tier-1 targets +targets = [ + "x86_64-unknown-linux-gnu", + "aarch64-unknown-linux-gnu", + "x86_64-unknown-linux-musl", + "aarch64-apple-darwin", + "x86_64-apple-darwin", + "x86_64-pc-windows-msvc", + "wasm32-unknown-unknown", + "wasm32-wasip1", + "wasm32-wasip2", +] + +[advisories] +version = 2 +ignore = [] + +[bans] +multiple-versions = "warn" +wildcards = 'deny' +deny = [ + # Scylla DB Drivers currently require OpenSSL. Its unavoidable. + # However, there is movement to enable support for Rustls. + # So, for now, allow open-ssl but it needs to be disabled as soon as Scylla DB enables Rustls. + #{ crate = "openssl", use-instead = "rustls" }, + #{ crate = "openssl-sys", use-instead = "rustls" }, + "libssh2-sys", + # { crate = "git2", use-instead = "gix" }, + # { crate = "cmake", use-instead = "cc" }, + # { crate = "windows", reason = "bloated and unnecessary", use-instead = "ideally inline bindings, practically, windows-sys" }, +] +skip = [ + # { crate = "bitflags@1.3.2", reason = "https://github.com/seanmonstar/reqwest/pull/2130 should be in the next version" }, + # { crate = "winnow@0.5.40", reason = "gix 0.59 was yanked, see https://github.com/Byron/gitoxide/issues/1309" }, + # { crate = "heck@0.4.1", reason = "strum_macros uses this old version" }, + # { crate = "base64@0.21.7", reason = "gix-transport pulls in this old version, as well as a newer version via reqwest" }, + # { crate = "byte-array-literalsase64@0.21.7", reason = "gix-transport pulls in this old version, as well as a newer version via reqwest" }, +] +skip-tree = [ + { crate = "windows-sys@0.48.0", reason = "a foundational crate for many that bumps far too frequently to ever have a shared version" }, +] + +[sources] +unknown-registry = "deny" +unknown-git = "deny" + +# List of URLs for allowed Git repositories +allow-git = [ + "https://github.com/input-output-hk/catalyst-libs.git", + "https://github.com/input-output-hk/catalyst-pallas.git", + "https://github.com/input-output-hk/catalyst-mithril.git", + "https://github.com/bytecodealliance/wasmtime", + "https://github.com/aldanor/hdf5-rust", + "https://github.com/txpipe/vrf", + "https://github.com/txpipe/kes", + "https://github.com/txpipe/curve25519-dalek", + "https://github.com/input-output-hk/mithril", + # Maintained fork of an archived crates-io version. + "https://github.com/dariusc93/rust-ipfs", + # TODO(dt-iohk): remove this when forked flutter_rust_bridge is no longer needed + "https://github.com/dt-iohk/flutter_rust_bridge", +] + +[licenses] +version = 2 +# Don't warn if a listed license isn't found +unused-allowed-license="allow" +# We want really high confidence when inferring licenses from text +confidence-threshold = 0.93 +allow = [ + "MIT", + "Apache-2.0", + "Unicode-DFS-2016", + "BSD-3-Clause", + "BSD-2-Clause", + "BlueOak-1.0.0", + "Apache-2.0 WITH LLVM-exception", + "CC0-1.0", + "ISC", + "Unicode-3.0", + "MPL-2.0", + "Zlib", + "MIT-0", + "CDLA-Permissive-2.0", + "OpenSSL", +] +exceptions = [ + #{ allow = ["Zlib"], crate = "tinyvec" }, + #{ allow = ["Unicode-DFS-2016"], crate = "unicode-ident" }, + #{ allow = ["OpenSSL"], crate = "ring" }, +] + +[[licenses.clarify]] +crate = "byte-array-literals" +expression = "Apache-2.0 WITH LLVM-exception" +license-files = [{ path = "../../../LICENSE", hash = 0x001c7e6c }] + +[[licenses.clarify]] +crate = "hdf5-metno-src" +expression = "MIT" +license-files = [{ path = "ext/hdf5/COPYING", hash = 0xf13e3591 }] + +[[licenses.clarify]] +crate = "ring" +expression = "MIT" +license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] + +# SPDX considers OpenSSL to encompass both the OpenSSL and SSLeay licenses +# https://spdx.org/licenses/OpenSSL.html +# ISC - Both BoringSSL and ring use this for their new files +# MIT - "Files in third_party/ have their own licenses, as described therein. The MIT +# license, for third_party/fiat, which, unlike other third_party directories, is +# compiled into non-test libraries, is included below." +# OpenSSL - Obviously +#expression = "ISC AND MIT AND OpenSSL" +#license-files = [{ path = "LICENSE", hash = 0xbd0eed23 }] + +#[[licenses.clarify]] +#crate = "webpki" +#expression = "ISC" +#license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] + +# Actually "ISC-style" +#[[licenses.clarify]] +#crate = "rustls-webpki" +#expression = "ISC" +#license-files = [{ path = "LICENSE", hash = 0x001c7e6c }] diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/rust-toolchain.toml b/catalyst_voices/packages/libs/catalyst_compression/rust/rust-toolchain.toml new file mode 100644 index 000000000000..e9026cc826dd --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/rust-toolchain.toml @@ -0,0 +1,3 @@ +[toolchain] +channel = "1.89" +profile = "default" \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/rustfmt.toml b/catalyst_voices/packages/libs/catalyst_compression/rust/rustfmt.toml new file mode 100644 index 000000000000..8f2417eeb6cf --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/rustfmt.toml @@ -0,0 +1,68 @@ +# Enable unstable features: +# * imports_indent +# * imports_layout +# * imports_granularity +# * group_imports +# * reorder_impl_items +# * trailing_comma +# * where_single_line +# * wrap_comments +# * comment_width +# * blank_lines_upper_bound +# * condense_wildcard_suffixes +# * force_multiline_blocks +# * format_code_in_doc_comments +# * format_generated_files +# * hex_literal_case +# * inline_attribute_width +# * normalize_comments +# * normalize_doc_attributes +# * overflow_delimited_expr +unstable_features = true + +# Compatibility: +edition = "2021" + +# Tabs & spaces - Defaults, listed for clarity +tab_spaces = 4 +hard_tabs = false + +# Commas. +trailing_comma = "Vertical" +match_block_trailing_comma = true + +# General width constraints. +max_width = 100 + +# Comments: +normalize_comments = false +normalize_doc_attributes = false +wrap_comments = true +comment_width = 90 # small excess is okay but prefer 80 +format_code_in_doc_comments = true +format_generated_files = false + +# Imports. +imports_indent = "Block" +imports_layout = "Mixed" +group_imports = "StdExternalCrate" +reorder_imports = true +imports_granularity = "Crate" + +# Arguments: +use_small_heuristics = "Default" +fn_params_layout = "Vertical" +overflow_delimited_expr = true +where_single_line = true + +# Misc: +inline_attribute_width = 0 +blank_lines_upper_bound = 1 +reorder_impl_items = true +use_field_init_shorthand = true +force_multiline_blocks = true +condense_wildcard_suffixes = true +hex_literal_case = "Upper" + +# Ignored files: +ignore = [] diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/src/compression/mod.rs b/catalyst_voices/packages/libs/catalyst_compression/rust/src/compression/mod.rs new file mode 100644 index 000000000000..da1ce71d9e3e --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/src/compression/mod.rs @@ -0,0 +1,201 @@ +//! Rust implementation Catalyst Compression exposing brotli and zstd codecs. + +use std::sync::LazyLock; + +use flutter_rust_bridge::{spawn_blocking_with, DefaultHandler, SimpleThreadPool}; + +/// Compress the bytes with brotli compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: uncompressed bytes. +/// +/// # Returns +/// +/// Returns compressed bytes as a `Result`. +/// +/// # Errors +/// +/// Returns an error if the compression fails. +pub async fn brotli_compress(bytes: Vec) -> anyhow::Result> { + let result = spawn_blocking_with( + move || brotli_compress_helper(&bytes), + CUSTOM_HANDLER.thread_pool(), + ) + .await??; + + Ok(result) +} + +/// Helper function for `brotli_compress_helper`. +fn brotli_compress_helper(mut bytes: &[u8]) -> anyhow::Result> { + let brotli_params = brotli::enc::BrotliEncoderParams::default(); + let mut buffer = Vec::new(); + brotli::BrotliCompress(&mut bytes, &mut buffer, &brotli_params)?; + Ok(buffer) +} + +/// Decompress the bytes with brotli compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: brotli compressed bytes. +/// +/// # Returns +/// +/// Returns uncompressed bytes as `Result`. +/// +/// # Errors +/// +/// Returns an error if the decompression fails. +pub async fn brotli_decompress(bytes: Vec) -> anyhow::Result> { + let result = spawn_blocking_with( + move || brotli_decompress_helper(&bytes), + CUSTOM_HANDLER.thread_pool(), + ) + .await??; + + Ok(result) +} + +/// Helper function for `brotli_decompress`. +fn brotli_decompress_helper(mut bytes: &[u8]) -> anyhow::Result> { + let mut buffer = Vec::new(); + brotli::BrotliDecompress(&mut bytes, &mut buffer)?; + Ok(buffer) +} + +/// Compress the bytes with zstd compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: uncompressed bytes. +/// +/// # Returns +/// +/// Returns compressed bytes as a `Result`. +/// +/// # Errors +/// +/// Returns an error if the compression fails. +pub async fn zstd_compress(bytes: Vec) -> anyhow::Result> { + let result = spawn_blocking_with( + move || zstd_compress_helper(&bytes), + CUSTOM_HANDLER.thread_pool(), + ) + .await??; + + Ok(result) +} + +/// Helper function for `zstd_compress`. +fn zstd_compress_helper(bytes: &[u8]) -> anyhow::Result> { + let compressed = zstd::bulk::compress(bytes, 0)?; + Ok(compressed) +} + +/// Decompress the bytes with zstd compression algorithm. +/// Runs the computation by a shared thread pool to avoid blocking the main thread. +/// +/// # Arguments +/// +/// - `bytes`: zstd compressed bytes. +/// +/// # Returns +/// +/// Returns uncompressed bytes as `Result`. +/// +/// # Errors +/// +/// Returns an error if the decompression fails. +pub async fn zstd_decompress(bytes: Vec) -> anyhow::Result> { + let result = spawn_blocking_with( + move || zstd_decompress_helper(&bytes), + CUSTOM_HANDLER.thread_pool(), + ) + .await??; + + Ok(result) +} + +/// Helper function for `zstd_decompress`. +fn zstd_decompress_helper(bytes: &[u8]) -> anyhow::Result> { + let mut buffer = vec![]; + zstd::stream::copy_decode(bytes, &mut buffer)?; + Ok(buffer) +} + +/// A custom handler capable of creating a thread pool with customized `wasm_bindgen` +/// module name. +#[cfg(not(target_family = "wasm"))] +static CUSTOM_HANDLER: LazyLock> = + LazyLock::new(|| DefaultHandler::new_simple(SimpleThreadPool::default())); + +#[cfg(target_family = "wasm")] +thread_local! { + /// A custom thread pool with customized wasm_bindgen module name. + static THREAD_POOL: SimpleThreadPool = SimpleThreadPool::new(None, None, Some("compression_wasm_bindgen".to_string()).into(), None) + .expect("failed to create ThreadPool"); +} + +/// A custom handler capable of creating a thread pool with customized wasm_bindgen module +/// name. +#[cfg(target_family = "wasm")] +static CUSTOM_HANDLER: LazyLock>> = + LazyLock::new(|| DefaultHandler::new_simple(&THREAD_POOL)); + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_brotli_roundtrip() { + let input = b"hello catalyst compression with brotli".to_vec(); + let compressed = brotli_compress_helper(&input.clone()).expect("brotli compress failed"); + assert!( + !compressed.is_empty(), + "compressed output should not be empty" + ); + + let decompressed = brotli_decompress_helper(&compressed).expect("brotli decompress failed"); + assert_eq!( + decompressed, input, + "decompressed output should match original" + ); + } + + #[test] + fn test_zstd_roundtrip() { + let input = b"hello catalyst compression with zstd".to_vec(); + let compressed = zstd_compress_helper(&input.clone()).expect("zstd compress failed"); + assert!( + !compressed.is_empty(), + "compressed output should not be empty" + ); + + let decompressed = zstd_decompress_helper(&compressed).expect("zstd decompress failed"); + assert_eq!( + decompressed, input, + "decompressed output should match original" + ); + } + + #[test] + fn test_brotli_invalid_input() { + // Brotli should fail to decompress invalid data + let invalid = b"not valid brotli data".to_vec(); + let result = brotli_decompress_helper(&invalid); + assert!(result.is_err(), "brotli should fail on invalid input"); + } + + #[test] + fn test_zstd_invalid_input() { + // Zstd should fail to decompress invalid data + let invalid = b"not valid zstd data".to_vec(); + let result = zstd_decompress_helper(&invalid); + assert!(result.is_err(), "zstd should fail on invalid input"); + } +} diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/src/frb_generated.rs b/catalyst_voices/packages/libs/catalyst_compression/rust/src/frb_generated.rs new file mode 100644 index 000000000000..4f1cef2cc45b --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/src/frb_generated.rs @@ -0,0 +1,241 @@ +// This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + +#![allow( +non_camel_case_types, +unused, +non_snake_case, +clippy::needless_return, +clippy::redundant_closure_call, +clippy::redundant_closure, +clippy::useless_conversion, +clippy::unit_arg, +clippy::unused_unit, +clippy::double_parens, +clippy::let_and_return, +clippy::too_many_arguments, +clippy::match_single_binding, +clippy::clone_on_copy, +clippy::let_unit_value, +clippy::deref_addrof, +clippy::explicit_auto_deref, +clippy::borrow_deref_ref, +clippy::needless_borrow +)] + +// Section: imports + +use flutter_rust_bridge::{Handler, IntoIntoDart}; +use flutter_rust_bridge::for_generated::{Lockable, transform_result_dco, Lifetimeable}; +use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, WriteBytesExt, ReadBytesExt}; + +// Section: boilerplate + +flutter_rust_bridge::frb_generated_boilerplate!( + default_stream_sink_codec = SseCodec, + default_rust_opaque = RustOpaqueMoi, + default_rust_auto_opaque = RustAutoOpaqueMoi, + ); + pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.11.1"; + pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1685125612; + + +// Section: executor + +flutter_rust_bridge::frb_generated_default_handler!(); + +// Section: wire_funcs + +fn wire__crate__compression__brotli_compress_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "brotli_compress", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_bytes = >::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { + let output_ok = crate::compression::brotli_compress(api_bytes).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__compression__brotli_decompress_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "brotli_decompress", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_bytes = >::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { + let output_ok = crate::compression::brotli_decompress(api_bytes).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__compression__zstd_compress_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "zstd_compress", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_bytes = >::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { + let output_ok = crate::compression::zstd_compress(api_bytes).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__compression__zstd_decompress_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "zstd_decompress", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_bytes = >::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { + let output_ok = crate::compression::zstd_decompress(api_bytes).await?; Ok(output_ok) + })().await) + } }) + } + +// Section: dart2rust + + + impl SseDecode for flutter_rust_bridge::for_generated::anyhow::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = ::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::anyhow::anyhow!("{}", inner);} + } + + impl SseDecode for String { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >::sse_decode(deserializer); + return String::from_utf8(inner).unwrap();} + } + + impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut len_ = ::sse_decode(deserializer); + let mut ans_ = vec![]; + for idx_ in 0..len_ { ans_.push(::sse_decode(deserializer)); } + return ans_;} + } + + impl SseDecode for u8 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {deserializer.cursor.read_u8().unwrap()} + } + + impl SseDecode for i32 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {deserializer.cursor.read_i32::().unwrap()} + } + + impl SseDecode for bool { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {deserializer.cursor.read_u8().unwrap() != 0} + } + + fn pde_ffi_dispatcher_primary_impl( + func_id: i32,port: flutter_rust_bridge::for_generated::MessagePort, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, + ) { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 1 => wire__crate__compression__brotli_compress_impl(port, ptr, rust_vec_len, data_len), +2 => wire__crate__compression__brotli_decompress_impl(port, ptr, rust_vec_len, data_len), +3 => wire__crate__compression__zstd_compress_impl(port, ptr, rust_vec_len, data_len), +4 => wire__crate__compression__zstd_decompress_impl(port, ptr, rust_vec_len, data_len), + _ => unreachable!(), + } + } + + fn pde_ffi_dispatcher_sync_impl( + func_id: i32, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, + ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + + _ => unreachable!(), + } + } + + +// Section: rust2dart + + + impl SseEncode for flutter_rust_bridge::for_generated::anyhow::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {::sse_encode(format!("{:?}", self), serializer);} + } + + impl SseEncode for String { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>::sse_encode(self.into_bytes(), serializer);} + } + + impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {::sse_encode(self.len() as _, serializer); + for item in self { ::sse_encode(item, serializer); }} + } + + impl SseEncode for u8 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {serializer.cursor.write_u8(self).unwrap();} + } + + impl SseEncode for i32 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {serializer.cursor.write_i32::(self).unwrap();} + } + + impl SseEncode for bool { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {serializer.cursor.write_u8(self as _).unwrap();} + } + + + + + + #[cfg(not(target_family = "wasm"))] + mod io { + // This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + + + +// Section: imports + +use flutter_rust_bridge::{Handler, IntoIntoDart}; +use flutter_rust_bridge::for_generated::{Lockable, transform_result_dco, Lifetimeable}; +use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, WriteBytesExt, ReadBytesExt};use super::*; + +// Section: boilerplate + +flutter_rust_bridge::frb_generated_boilerplate_io!(); + + + } + #[cfg(not(target_family = "wasm"))] + pub use io::*; + + + /// cbindgen:ignore + #[cfg(target_family = "wasm")] + mod web { + // This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. + + + +// Section: imports + +use flutter_rust_bridge::{Handler, IntoIntoDart}; +use flutter_rust_bridge::for_generated::{Lockable, transform_result_dco, Lifetimeable}; +use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, WriteBytesExt, ReadBytesExt};use super::*; + use flutter_rust_bridge::for_generated::wasm_bindgen; + use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; + + +// Section: boilerplate + +flutter_rust_bridge::frb_generated_boilerplate_web!(); + + + } + #[cfg(target_family = "wasm")] + pub use web::*; + \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_compression/rust/src/lib.rs b/catalyst_voices/packages/libs/catalyst_compression/rust/src/lib.rs new file mode 100644 index 000000000000..65a0cb0cb31f --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/rust/src/lib.rs @@ -0,0 +1,20 @@ +//! Catalyst Compression + +// cspell: words uninlined + +pub mod compression; +#[allow( + clippy::missing_docs_in_private_items, + clippy::unwrap_used, + clippy::unreachable, + clippy::semicolon_if_nothing_returned, + clippy::cast_possible_truncation, + clippy::cast_possible_wrap, + clippy::cast_lossless, + clippy::wildcard_imports, + clippy::uninlined_format_args, + clippy::redundant_else, + clippy::unreadable_literal +)] +#[doc(hidden)] +mod frb_generated; diff --git a/catalyst_voices/packages/libs/catalyst_compression/windows/.gitignore b/catalyst_voices/packages/libs/catalyst_compression/windows/.gitignore new file mode 100644 index 000000000000..b3eb2be169a5 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/windows/.gitignore @@ -0,0 +1,17 @@ +flutter/ + +# Visual Studio user-specific files. +*.suo +*.user +*.userosscache +*.sln.docstates + +# Visual Studio build-related files. +x64/ +x86/ + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!*.[Cc]ache/ diff --git a/catalyst_voices/packages/libs/catalyst_compression/windows/CMakeLists.txt b/catalyst_voices/packages/libs/catalyst_compression/windows/CMakeLists.txt new file mode 100644 index 000000000000..5afa00868788 --- /dev/null +++ b/catalyst_voices/packages/libs/catalyst_compression/windows/CMakeLists.txt @@ -0,0 +1,20 @@ +# The Flutter tooling requires that developers have a version of Visual Studio +# installed that includes CMake 3.14 or later. You should not increase this +# version, as doing so will cause the plugin to fail to compile for some +# customers of the plugin. +cmake_minimum_required(VERSION 3.14) + +# Project-level configuration. +set(PROJECT_NAME "catalyst_compression") +project(${PROJECT_NAME} LANGUAGES CXX) + +include("../cargokit/cmake/cargokit.cmake") +apply_cargokit(${PROJECT_NAME} ../rust catalyst_compression "") + +# List of absolute paths to libraries that should be bundled with the plugin. +# This list could contain prebuilt libraries, or libraries created by an +# external build triggered from this build file. +set(catalyst_compression_bundled_libraries + "${${PROJECT_NAME}_cargokit_lib}" + PARENT_SCOPE +) diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/Earthfile b/catalyst_voices/packages/libs/catalyst_key_derivation/Earthfile index 01aa26e34f9c..5396478b804a 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/Earthfile +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/Earthfile @@ -1,7 +1,7 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:v3.5.15 AS flutter-ci -IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter_rust_bridge:v3.5.15 AS flutter_rust_bridge +IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:feat/catalyst-compression-setup AS flutter-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter_rust_bridge:feat/catalyst-compression-setup AS flutter_rust_bridge builder: FROM flutter_rust_bridge+builder @@ -11,7 +11,7 @@ builder: code-generator: ARG local = false FROM +builder - DO flutter_rust_bridge+CODE_GENERATOR_WEB + DO flutter_rust_bridge+CODE_GENERATOR_WEB --WASM_MODULE_NAME="key_derivation_wasm_bindgen" IF [ $local = true ] SAVE ARTIFACT ./assets/js AS LOCAL ./assets/js @@ -21,55 +21,4 @@ code-generator: SAVE ARTIFACT ./assets/js assets_js SAVE ARTIFACT ./rust/src/frb_generated.rs frb_generated.rs SAVE ARTIFACT ./lib/src src - END - -builder-example: - FROM scratch - DO flutter-ci+SETUP - COPY . . - WORKDIR example - -integration-test-web: - FROM +builder-example - ARG browser - LET driver_port = 4444 - - IF [ $browser = "chrome" ] - LET driver = "chromedriver" - END - - IF [ $browser = "firefox" ] - LET driver = "geckodriver" - END - - RUN ($driver --port=$driver_port > $driver.log &) && \ - sleep 5 && \ - flutter drive --driver=test_driver/integration_tests.dart \ - --target=integration_test/catalyst_key_derivation_test.dart \ - -d web-server --browser-name=$browser --driver-port=$driver_port \ - # https://github.com/flutter/flutter/issues/154727 - --web-browser-flag=--disable-web-security \ - --web-browser-flag=--disable-gpu \ - --web-browser-flag=--headless=old \ - --web-browser-flag=--disable-search-engine-choice-screen \ - # flutter_rust_bridge: https://cjycode.com/flutter_rust_bridge/manual/miscellaneous/web-cross-origin#when-flutter-run - # drift: https://drift.simonbinder.eu/platforms/web/#additional-headers - --web-header Cross-Origin-Opener-Policy=same-origin \ - --web-header Cross-Origin-Embedder-Policy=require-corp \ - --profile || echo fail > fail - WAIT - SAVE ARTIFACT $driver.log AS LOCAL $driver.log - END - - IF [ -f fail ] - RUN --no-cache echo ""$browser" integration test failed" && \ - echo "Printing "$driver" logs..." && \ - cat $driver.log && \ - exit 1 - END - -# TODO(oldgreg): investigate failures in ci -disabled-test-web-all: - BUILD +integration-test-web \ - --browser=chrome \ - --browser=firefox + END \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/Justfile b/catalyst_voices/packages/libs/catalyst_key_derivation/Justfile index 565c19b03ff8..eef6135edae1 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/Justfile +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/Justfile @@ -4,7 +4,7 @@ # Generated necessary files using Earthly for running Flutter web locally. code-gen-web: - earthly +code-generator + earthly +code-generator --local=true # Run local Flutter web. run-web: code-gen-web diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/analysis_options.yaml b/catalyst_voices/packages/libs/catalyst_key_derivation/analysis_options.yaml index be7f853df49f..40778efe1068 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/analysis_options.yaml +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/analysis_options.yaml @@ -1,6 +1,6 @@ include: package:catalyst_analysis/analysis_options.yaml analyzer: - exclude: [build/**, lib/*.g.dart, lib/generated/**, lib/src/rust/**] + exclude: [build/**, lib/*.g.dart, lib/generated/**, lib/src/rust/**, cargokit/**] errors: public_member_api_docs: ignore diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js b/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js index 112028f4d38b..1fb49e5aad62 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation.js @@ -1,4 +1,4 @@ -let wasm_bindgen; +let key_derivation_wasm_bindgen; (function() { const __exports = {}; let script_src; @@ -7,28 +7,6 @@ let wasm_bindgen; } let wasm = undefined; - function _assertBoolean(n) { - if (typeof(n) !== 'boolean') { - throw new Error(`expected a boolean argument, found ${typeof(n)}`); - } - } - - function logError(f, args) { - try { - return f.apply(this, args); - } catch (e) { - let error = (function () { - try { - return e instanceof Error ? `${e.message}\n\nStack:\n${e.stack}` : e.toString(); - } catch(_) { - return ""; - } - }()); - console.error("wasm-bindgen: imported JS function that was not marked as `catch` threw an error:", error); - throw e; - } - } - function addToExternrefTable0(obj) { const idx = wasm.__externref_table_alloc(); wasm.__wbindgen_export_2.set(idx, obj); @@ -68,8 +46,6 @@ let wasm_bindgen; function passStringToWasm0(arg, malloc, realloc) { - if (typeof(arg) !== 'string') throw new Error(`expected a string argument, found ${typeof(arg)}`); - if (realloc === undefined) { const buf = cachedTextEncoder.encode(arg); const ptr = malloc(buf.length, 1) >>> 0; @@ -98,7 +74,7 @@ let wasm_bindgen; ptr = realloc(ptr, len, len = offset + arg.length * 3, 1) >>> 0; const view = getUint8ArrayMemory0().subarray(ptr + offset, ptr + len); const ret = encodeString(arg, view); - if (ret.read !== arg.length) throw new Error('failed to pass whole string'); + offset += ret.written; ptr = realloc(ptr, len, offset, 1) >>> 0; } @@ -116,17 +92,22 @@ let wasm_bindgen; return cachedDataViewMemory0; } - const cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); + let cachedTextDecoder = (typeof TextDecoder !== 'undefined' ? new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }) : { decode: () => { throw Error('TextDecoder not available') } } ); if (typeof TextDecoder !== 'undefined') { cachedTextDecoder.decode(); }; + function decodeText(ptr, len) { + return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); + } + function getStringFromWasm0(ptr, len) { ptr = ptr >>> 0; - return cachedTextDecoder.decode(getUint8ArrayMemory0().slice(ptr, ptr + len)); + return decodeText(ptr, len); } - function _assertNum(n) { - if (typeof(n) !== 'number') throw new Error(`expected a number argument, found ${typeof(n)}`); + function getArrayU8FromWasm0(ptr, len) { + ptr = ptr >>> 0; + return getUint8ArrayMemory0().subarray(ptr / 1, ptr / 1 + len); } function isLikeNone(x) { @@ -228,6 +209,27 @@ let wasm_bindgen; // TODO we could test for more things here, like `Set`s and `Map`s. return className; } + /** + * @param {number} ptr + */ + __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { + wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); + }; + + /** + * @param {number} ptr + */ + __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { + wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); + }; + + /** + * @param {number} ptr + */ + __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { + wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); + }; + /** * @returns {number} */ @@ -237,17 +239,10 @@ let wasm_bindgen; }; /** - * @param {number} func_id - * @param {any} port_ - * @param {any} ptr_ - * @param {number} rust_vec_len_ - * @param {number} data_len_ + * @param {number} ptr */ - __exports.frb_pde_ffi_dispatcher_primary = function(func_id, port_, ptr_, rust_vec_len_, data_len_) { - _assertNum(func_id); - _assertNum(rust_vec_len_); - _assertNum(data_len_); - wasm.frb_pde_ffi_dispatcher_primary(func_id, port_, ptr_, rust_vec_len_, data_len_); + __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey = function(ptr) { + wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr); }; /** @@ -258,74 +253,45 @@ let wasm_bindgen; * @returns {any} */ __exports.frb_pde_ffi_dispatcher_sync = function(func_id, ptr_, rust_vec_len_, data_len_) { - _assertNum(func_id); - _assertNum(rust_vec_len_); - _assertNum(data_len_); const ret = wasm.frb_pde_ffi_dispatcher_sync(func_id, ptr_, rust_vec_len_, data_len_); return ret; }; /** - * @param {number} call_id + * @param {number} func_id + * @param {any} port_ * @param {any} ptr_ * @param {number} rust_vec_len_ * @param {number} data_len_ */ - __exports.frb_dart_fn_deliver_output = function(call_id, ptr_, rust_vec_len_, data_len_) { - _assertNum(call_id); - _assertNum(rust_vec_len_); - _assertNum(data_len_); - wasm.frb_dart_fn_deliver_output(call_id, ptr_, rust_vec_len_, data_len_); - }; - - /** - * @param {number} ptr - */ - __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); + __exports.frb_pde_ffi_dispatcher_primary = function(func_id, port_, ptr_, rust_vec_len_, data_len_) { + wasm.frb_pde_ffi_dispatcher_primary(func_id, port_, ptr_, rust_vec_len_, data_len_); }; /** * @param {number} ptr */ - __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr); + __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { + wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); }; /** - * @param {number} ptr + * @param {number} call_id + * @param {any} ptr_ + * @param {number} rust_vec_len_ + * @param {number} data_len_ */ - __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr); + __exports.frb_dart_fn_deliver_output = function(call_id, ptr_, rust_vec_len_, data_len_) { + wasm.frb_dart_fn_deliver_output(call_id, ptr_, rust_vec_len_, data_len_); }; /** * @param {number} ptr */ __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey = function(ptr) { - _assertNum(ptr); wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr); }; - /** - * @param {number} ptr - */ - __exports.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); - }; - - /** - * @param {number} ptr - */ - __exports.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey = function(ptr) { - _assertNum(ptr); - wasm.rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr); - }; - function takeFromExternrefTable0(idx) { const value = wasm.__wbindgen_export_2.get(idx); wasm.__externref_table_dealloc(idx); @@ -351,7 +317,6 @@ let wasm_bindgen; * @param {any[]} transfer */ __exports.receive_transfer_closure = function(payload, transfer) { - _assertNum(payload); const ptr0 = passArrayJsValueToWasm0(transfer, wasm.__wbindgen_malloc); const len0 = WASM_VECTOR_LEN; const ret = wasm.receive_transfer_closure(payload, ptr0, len0); @@ -364,7 +329,6 @@ let wasm_bindgen; * @param {number} ptr */ __exports.frb_dart_opaque_drop_thread_box_persistent_handle = function(ptr) { - _assertNum(ptr); wasm.frb_dart_opaque_drop_thread_box_persistent_handle(ptr); }; @@ -386,7 +350,6 @@ let wasm_bindgen; * @returns {any} */ __exports.frb_dart_opaque_rust2dart_decode = function(ptr) { - _assertNum(ptr); const ret = wasm.frb_dart_opaque_rust2dart_decode(ptr); return ret; }; @@ -396,27 +359,19 @@ let wasm_bindgen; }; function __wbg_adapter_36(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure129_externref_shim(arg0, arg1, arg2); + wasm.closure146_externref_shim(arg0, arg1, arg2); } function __wbg_adapter_39(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure167_externref_shim(arg0, arg1, arg2); + wasm.closure177_externref_shim(arg0, arg1, arg2); } function __wbg_adapter_42(arg0, arg1, arg2) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure164_externref_shim(arg0, arg1, arg2); + wasm.closure179_externref_shim(arg0, arg1, arg2); } - function __wbg_adapter_125(arg0, arg1, arg2, arg3) { - _assertNum(arg0); - _assertNum(arg1); - wasm.closure264_externref_shim(arg0, arg1, arg2, arg3); + function __wbg_adapter_107(arg0, arg1, arg2, arg3) { + wasm.closure276_externref_shim(arg0, arg1, arg2, arg3); } const WorkerPoolFinalization = (typeof FinalizationRegistry === 'undefined') @@ -447,18 +402,18 @@ let wasm_bindgen; /** * @param {number | null} [initial] * @param {string | null} [script_src] + * @param {string | null} [wasm_bindgen_name] * @param {string | null} [worker_js_preamble] * @returns {WorkerPool} */ - static new(initial, script_src, worker_js_preamble) { - if (!isLikeNone(initial)) { - _assertNum(initial); - } + static new(initial, script_src, wasm_bindgen_name, worker_js_preamble) { var ptr0 = isLikeNone(script_src) ? 0 : passStringToWasm0(script_src, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len0 = WASM_VECTOR_LEN; - var ptr1 = isLikeNone(worker_js_preamble) ? 0 : passStringToWasm0(worker_js_preamble, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var ptr1 = isLikeNone(wasm_bindgen_name) ? 0 : passStringToWasm0(wasm_bindgen_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); var len1 = WASM_VECTOR_LEN; - const ret = wasm.workerpool_new(isLikeNone(initial) ? 0x100000001 : (initial) >>> 0, ptr0, len0, ptr1, len1); + var ptr2 = isLikeNone(worker_js_preamble) ? 0 : passStringToWasm0(worker_js_preamble, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + var len2 = WASM_VECTOR_LEN; + const ret = wasm.workerpool_new(isLikeNone(initial) ? 0x100000001 : (initial) >>> 0, ptr0, len0, ptr1, len1, ptr2, len2); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } @@ -477,15 +432,17 @@ let wasm_bindgen; * message is sent to it. * @param {number} initial * @param {string} script_src + * @param {string} wasm_bindgen_name * @param {string} worker_js_preamble */ - constructor(initial, script_src, worker_js_preamble) { - _assertNum(initial); + constructor(initial, script_src, wasm_bindgen_name, worker_js_preamble) { const ptr0 = passStringToWasm0(script_src, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len0 = WASM_VECTOR_LEN; - const ptr1 = passStringToWasm0(worker_js_preamble, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const ptr1 = passStringToWasm0(wasm_bindgen_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; - const ret = wasm.workerpool_new_raw(initial, ptr0, len0, ptr1, len1); + const ptr2 = passStringToWasm0(worker_js_preamble, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len2 = WASM_VECTOR_LEN; + const ret = wasm.workerpool_new_raw(initial, ptr0, len0, ptr1, len1, ptr2, len2); if (ret[2]) { throw takeFromExternrefTable0(ret[1]); } @@ -496,6 +453,8 @@ let wasm_bindgen; } __exports.WorkerPool = WorkerPool; + const EXPECTED_RESPONSE_TYPES = new Set(['basic', 'cors', 'default']); + async function __wbg_load(module, imports) { if (typeof Response === 'function' && module instanceof Response) { if (typeof WebAssembly.instantiateStreaming === 'function') { @@ -503,7 +462,9 @@ let wasm_bindgen; return await WebAssembly.instantiateStreaming(module, imports); } catch (e) { - if (module.headers.get('Content-Type') != 'application/wasm') { + const validResponse = module.ok && EXPECTED_RESPONSE_TYPES.has(module.type); + + if (validResponse && module.headers.get('Content-Type') !== 'application/wasm') { console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve Wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); } else { @@ -530,38 +491,37 @@ let wasm_bindgen; function __wbg_get_imports() { const imports = {}; imports.wbg = {}; - imports.wbg.__wbg_async_9ff6d9e405f13772 = function() { return logError(function (arg0) { + imports.wbg.__wbg_async_89f8ca583cefeb81 = function(arg0) { const ret = arg0.async; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_buffer_609cc3eee51ed158 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_buffer_a1a27a0dfa70165d = function(arg0) { const ret = arg0.buffer; return ret; - }, arguments) }; - imports.wbg.__wbg_call_672a4d21634d4a24 = function() { return handleError(function (arg0, arg1) { - const ret = arg0.call(arg1); + }; + imports.wbg.__wbg_call_f2db6205e5c51dc8 = function() { return handleError(function (arg0, arg1, arg2) { + const ret = arg0.call(arg1, arg2); return ret; }, arguments) }; - imports.wbg.__wbg_call_7cccdd69e0791ae2 = function() { return handleError(function (arg0, arg1, arg2) { - const ret = arg0.call(arg1, arg2); + imports.wbg.__wbg_call_fbe8be8bf6436ce5 = function() { return handleError(function (arg0, arg1) { + const ret = arg0.call(arg1); return ret; }, arguments) }; - imports.wbg.__wbg_createObjectURL_6e98d2f9c7bd9764 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_createObjectURL_1acd82bf8749f5a9 = function() { return handleError(function (arg0, arg1) { const ret = URL.createObjectURL(arg1); const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); }, arguments) }; - imports.wbg.__wbg_data_432d9c3df2630942 = function() { return logError(function (arg0) { + imports.wbg.__wbg_data_fffd43bf0ca75fff = function(arg0) { const ret = arg0.data; return ret; - }, arguments) }; - imports.wbg.__wbg_error_076d4beefd7cfd14 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_error_076d4beefd7cfd14 = function(arg0, arg1) { console.error(getStringFromWasm0(arg0, arg1)); - }, arguments) }; - imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_error_7534b8e9a36f1ab4 = function(arg0, arg1) { let deferred0_0; let deferred0_1; try { @@ -571,16 +531,16 @@ let wasm_bindgen; } finally { wasm.__wbindgen_free(deferred0_0, deferred0_1, 1); } - }, arguments) }; - imports.wbg.__wbg_eval_e10dc02e9547f640 = function() { return handleError(function (arg0, arg1) { + }; + imports.wbg.__wbg_eval_17f2fea482576acf = function() { return handleError(function (arg0, arg1) { const ret = eval(getStringFromWasm0(arg0, arg1)); return ret; }, arguments) }; - imports.wbg.__wbg_get_67b2ba62fc30de12 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_get_92470be87867c2e5 = function() { return handleError(function (arg0, arg1) { const ret = Reflect.get(arg0, arg1); return ret; }, arguments) }; - imports.wbg.__wbg_instanceof_BroadcastChannel_102292ddffa430f7 = function() { return logError(function (arg0) { + imports.wbg.__wbg_instanceof_BroadcastChannel_fcd921b3f5a54294 = function(arg0) { let result; try { result = arg0 instanceof BroadcastChannel; @@ -588,10 +548,9 @@ let wasm_bindgen; result = false; } const ret = result; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_instanceof_ErrorEvent_24a579ed4d838fe9 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_instanceof_ErrorEvent_9071844b9191577f = function(arg0) { let result; try { result = arg0 instanceof ErrorEvent; @@ -599,10 +558,9 @@ let wasm_bindgen; result = false; } const ret = result; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_instanceof_MessageEvent_2e467ced55f682c9 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_instanceof_MessageEvent_5a42550b0b1aaf8b = function(arg0) { let result; try { result = arg0 instanceof MessageEvent; @@ -610,36 +568,58 @@ let wasm_bindgen; result = false; } const ret = result; - _assertBoolean(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_length_a446193dc22c12f8 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_length_ab6d22b5ead75c72 = function(arg0) { const ret = arg0.length; - _assertNum(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_message_d1685a448ba00178 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_message_44ef9b801b7d8bc3 = function(arg0, arg1) { const ret = arg1.message; const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; - imports.wbg.__wbg_name_235b92ab39fceaf8 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_name_c21500d3f06b9806 = function(arg0, arg1) { const ret = arg1.name; const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); + }; + imports.wbg.__wbg_new_07b483f72211fd66 = function() { + const ret = new Object(); + return ret; + }; + imports.wbg.__wbg_new_181343b7eb238d99 = function(arg0) { + const ret = new Int32Array(arg0); + return ret; + }; + imports.wbg.__wbg_new_39fae4e38868373c = function() { return handleError(function (arg0, arg1) { + const ret = new Worker(getStringFromWasm0(arg0, arg1)); + return ret; }, arguments) }; - imports.wbg.__wbg_new_23a2665fac83c611 = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbg_new_58353953ad2097cc = function() { + const ret = new Array(); + return ret; + }; + imports.wbg.__wbg_new_8a6f238a6ece86ea = function() { + const ret = new Error(); + return ret; + }; + imports.wbg.__wbg_new_a842e76509e6e542 = function() { return handleError(function (arg0, arg1) { + const ret = new BroadcastChannel(getStringFromWasm0(arg0, arg1)); + return ret; + }, arguments) }; + imports.wbg.__wbg_new_e30c39c06edaabf2 = function(arg0, arg1) { try { var state0 = {a: arg0, b: arg1}; var cb0 = (arg0, arg1) => { const a = state0.a; state0.a = 0; try { - return __wbg_adapter_125(a, state0.b, arg0, arg1); + return __wbg_adapter_107(a, state0.b, arg0, arg1); } finally { state0.a = a; } @@ -649,140 +629,113 @@ let wasm_bindgen; } finally { state0.a = state0.b = 0; } - }, arguments) }; - imports.wbg.__wbg_new_405e22f390576ce2 = function() { return logError(function () { - const ret = new Object(); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_78feb108b6472713 = function() { return logError(function () { - const ret = new Array(); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_7f19378ebfdc87d5 = function() { return handleError(function (arg0, arg1) { - const ret = new BroadcastChannel(getStringFromWasm0(arg0, arg1)); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_8a6f238a6ece86ea = function() { return logError(function () { - const ret = new Error(); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_a12002a7f91c75be = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_new_e52b3efaaa774f96 = function(arg0) { const ret = new Uint8Array(arg0); return ret; - }, arguments) }; - imports.wbg.__wbg_new_b1a33e5095abf678 = function() { return handleError(function (arg0, arg1) { - const ret = new Worker(getStringFromWasm0(arg0, arg1)); - return ret; - }, arguments) }; - imports.wbg.__wbg_new_e9a4a67dbababe57 = function() { return logError(function (arg0) { - const ret = new Int32Array(arg0); + }; + imports.wbg.__wbg_newfromslice_7c05ab1297cb2d88 = function(arg0, arg1) { + const ret = new Uint8Array(getArrayU8FromWasm0(arg0, arg1)); return ret; - }, arguments) }; - imports.wbg.__wbg_newnoargs_105ed471475aaf50 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_newnoargs_ff528e72d35de39a = function(arg0, arg1) { const ret = new Function(getStringFromWasm0(arg0, arg1)); return ret; - }, arguments) }; - imports.wbg.__wbg_newwithblobsequenceandoptions_1db4479a1a2d4229 = function() { return handleError(function (arg0, arg1) { + }; + imports.wbg.__wbg_newwithblobsequenceandoptions_ad0af943e7672432 = function() { return handleError(function (arg0, arg1) { const ret = new Blob(arg0, arg1); return ret; }, arguments) }; - imports.wbg.__wbg_newwithbyteoffsetandlength_d97e637ebe145a9a = function() { return logError(function (arg0, arg1, arg2) { - const ret = new Uint8Array(arg0, arg1 >>> 0, arg2 >>> 0); - return ret; - }, arguments) }; - imports.wbg.__wbg_of_4a05197bfc89556f = function() { return logError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_of_995ab9c48c3965f1 = function(arg0, arg1, arg2) { const ret = Array.of(arg0, arg1, arg2); return ret; - }, arguments) }; + }; imports.wbg.__wbg_postMessage_33814d4dc32c2dcf = function() { return handleError(function (arg0, arg1) { arg0.postMessage(arg1); }, arguments) }; - imports.wbg.__wbg_postMessage_6edafa8f7b9c2f52 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_postMessage_54ce7f4b41ac732e = function() { return handleError(function (arg0, arg1) { arg0.postMessage(arg1); }, arguments) }; - imports.wbg.__wbg_postMessage_83a8d58d3fcb6c13 = function() { return handleError(function (arg0, arg1) { + imports.wbg.__wbg_postMessage_95ef4554c6b7ca0c = function() { return handleError(function (arg0, arg1) { arg0.postMessage(arg1); }, arguments) }; - imports.wbg.__wbg_postMessage_f961e53b9731ca83 = function() { return handleError(function (arg0, arg1, arg2) { + imports.wbg.__wbg_postMessage_acaa82cfcb43d6a6 = function() { return handleError(function (arg0, arg1, arg2) { arg0.postMessage(arg1, arg2); }, arguments) }; - imports.wbg.__wbg_push_737cfc8c1432c2c6 = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbg_push_73fd7b5550ebf707 = function(arg0, arg1) { const ret = arg0.push(arg1); - _assertNum(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_queueMicrotask_97d92b4fcc8a61c5 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_queueMicrotask_46c1df247678729f = function(arg0) { queueMicrotask(arg0); - }, arguments) }; - imports.wbg.__wbg_queueMicrotask_d3219def82552485 = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_queueMicrotask_8acf3ccb75ed8d11 = function(arg0) { const ret = arg0.queueMicrotask; return ret; - }, arguments) }; - imports.wbg.__wbg_resolve_4851785c9c5f573d = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_resolve_0dac8c580ffd4678 = function(arg0) { const ret = Promise.resolve(arg0); return ret; - }, arguments) }; - imports.wbg.__wbg_set_65595bdd868b3009 = function() { return logError(function (arg0, arg1, arg2) { - arg0.set(arg1, arg2 >>> 0); - }, arguments) }; - imports.wbg.__wbg_set_bb8cecf6a62b9f46 = function() { return handleError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_set_c43293f93a35998a = function() { return handleError(function (arg0, arg1, arg2) { const ret = Reflect.set(arg0, arg1, arg2); - _assertBoolean(ret); return ret; }, arguments) }; - imports.wbg.__wbg_setonerror_57eeef5feb01fe7a = function() { return logError(function (arg0, arg1) { + imports.wbg.__wbg_set_fe4e79d1ed3b0e9b = function(arg0, arg1, arg2) { + arg0.set(arg1, arg2 >>> 0); + }; + imports.wbg.__wbg_setonerror_890bfd1ff86e9c78 = function(arg0, arg1) { arg0.onerror = arg1; - }, arguments) }; - imports.wbg.__wbg_setonmessage_5a885b16bdc6dca6 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_setonmessage_f6cf46183c427754 = function(arg0, arg1) { arg0.onmessage = arg1; - }, arguments) }; - imports.wbg.__wbg_settype_39ed370d3edd403c = function() { return logError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_settype_acc38e64fddb9e3f = function(arg0, arg1, arg2) { arg0.type = getStringFromWasm0(arg1, arg2); - }, arguments) }; - imports.wbg.__wbg_stack_0ed75d68575b0f3c = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_stack_0ed75d68575b0f3c = function(arg0, arg1) { const ret = arg1.stack; const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); const len1 = WASM_VECTOR_LEN; getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; - imports.wbg.__wbg_static_accessor_GLOBAL_88a902d13a557d07 = function() { return logError(function () { + }; + imports.wbg.__wbg_static_accessor_GLOBAL_487c52c58d65314d = function() { const ret = typeof global === 'undefined' ? null : global; return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, arguments) }; - imports.wbg.__wbg_static_accessor_GLOBAL_THIS_56578be7e9f832b0 = function() { return logError(function () { + }; + imports.wbg.__wbg_static_accessor_GLOBAL_THIS_ee9704f328b6b291 = function() { const ret = typeof globalThis === 'undefined' ? null : globalThis; return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, arguments) }; - imports.wbg.__wbg_static_accessor_SELF_37c5d418e4bf5819 = function() { return logError(function () { + }; + imports.wbg.__wbg_static_accessor_SELF_78c9e3071b912620 = function() { const ret = typeof self === 'undefined' ? null : self; return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, arguments) }; - imports.wbg.__wbg_static_accessor_WINDOW_5de37043a91a9c40 = function() { return logError(function () { + }; + imports.wbg.__wbg_static_accessor_WINDOW_a093d21393777366 = function() { const ret = typeof window === 'undefined' ? null : window; return isLikeNone(ret) ? 0 : addToExternrefTable0(ret); - }, arguments) }; - imports.wbg.__wbg_then_44b73946d2fb3e7d = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_then_db882932c0c714c6 = function(arg0, arg1) { const ret = arg0.then(arg1); return ret; - }, arguments) }; - imports.wbg.__wbg_unshift_c290010f73f04fb1 = function() { return logError(function (arg0, arg1) { + }; + imports.wbg.__wbg_unshift_9c69c2ab32acddfb = function(arg0, arg1) { const ret = arg0.unshift(arg1); - _assertNum(ret); return ret; - }, arguments) }; - imports.wbg.__wbg_value_dab73d3d5d4abaaf = function() { return logError(function (arg0) { + }; + imports.wbg.__wbg_value_f8fe3ce05407a213 = function(arg0) { const ret = arg0.value; return ret; - }, arguments) }; - imports.wbg.__wbg_waitAsync_61f0a081053dd3c2 = function() { return logError(function (arg0, arg1, arg2) { + }; + imports.wbg.__wbg_waitAsync_c3398694eaa5aeab = function(arg0, arg1, arg2) { const ret = Atomics.waitAsync(arg0, arg1 >>> 0, arg2); return ret; - }, arguments) }; - imports.wbg.__wbg_waitAsync_7ce6c8a047c752c3 = function() { return logError(function () { + }; + imports.wbg.__wbg_waitAsync_e36f18e2e26c3b7d = function() { const ret = Atomics.waitAsync; return ret; - }, arguments) }; + }; imports.wbg.__wbindgen_cb_drop = function(arg0) { const obj = arg0.original; if (obj.cnt-- == 1) { @@ -790,21 +743,20 @@ let wasm_bindgen; return true; } const ret = false; - _assertBoolean(ret); return ret; }; - imports.wbg.__wbindgen_closure_wrapper492 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 130, __wbg_adapter_36); + imports.wbg.__wbindgen_closure_wrapper657 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 145, __wbg_adapter_36); return ret; - }, arguments) }; - imports.wbg.__wbindgen_closure_wrapper625 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 168, __wbg_adapter_39); + }; + imports.wbg.__wbindgen_closure_wrapper788 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 176, __wbg_adapter_39); return ret; - }, arguments) }; - imports.wbg.__wbindgen_closure_wrapper628 = function() { return logError(function (arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 165, __wbg_adapter_42); + }; + imports.wbg.__wbindgen_closure_wrapper790 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 178, __wbg_adapter_42); return ret; - }, arguments) }; + }; imports.wbg.__wbindgen_debug_string = function(arg0, arg1) { const ret = debugString(arg1); const ptr1 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); @@ -824,25 +776,21 @@ let wasm_bindgen; }; imports.wbg.__wbindgen_is_falsy = function(arg0) { const ret = !arg0; - _assertBoolean(ret); return ret; }; imports.wbg.__wbindgen_is_function = function(arg0) { const ret = typeof(arg0) === 'function'; - _assertBoolean(ret); return ret; }; imports.wbg.__wbindgen_is_undefined = function(arg0) { const ret = arg0 === undefined; - _assertBoolean(ret); return ret; }; imports.wbg.__wbindgen_jsval_eq = function(arg0, arg1) { const ret = arg0 === arg1; - _assertBoolean(ret); return ret; }; - imports.wbg.__wbindgen_link_9579f016b4522a24 = function() { return logError(function (arg0) { + imports.wbg.__wbindgen_link_db87ac8434ca3f93 = function(arg0) { const val = `onmessage = function (ev) { let [ia, index, value] = ev.data; ia = new Int32Array(ia.buffer); @@ -855,7 +803,7 @@ let wasm_bindgen; const len1 = WASM_VECTOR_LEN; getDataViewMemory0().setInt32(arg0 + 4 * 1, len1, true); getDataViewMemory0().setInt32(arg0 + 4 * 0, ptr1, true); - }, arguments) }; + }; imports.wbg.__wbindgen_memory = function() { const ret = wasm.memory; return ret; @@ -867,9 +815,6 @@ let wasm_bindgen; imports.wbg.__wbindgen_number_get = function(arg0, arg1) { const obj = arg1; const ret = typeof(obj) === 'number' ? obj : undefined; - if (!isLikeNone(ret)) { - _assertNum(ret); - } getDataViewMemory0().setFloat64(arg0 + 8 * 1, isLikeNone(ret) ? 0 : ret, true); getDataViewMemory0().setInt32(arg0 + 4 * 0, !isLikeNone(ret), true); }; @@ -967,6 +912,6 @@ let wasm_bindgen; return __wbg_finalize_init(instance, module, thread_stack_size); } - wasm_bindgen = Object.assign(__wbg_init, { initSync }, __exports); + key_derivation_wasm_bindgen = Object.assign(__wbg_init, { initSync }, __exports); })(); diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation_bg.wasm b/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation_bg.wasm index 66d501a8b96a..6e83db398e6c 100644 Binary files a/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation_bg.wasm and b/catalyst_voices/packages/libs/catalyst_key_derivation/assets/js/catalyst_key_derivation_bg.wasm differ diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/flutter_rust_bridge.yaml b/catalyst_voices/packages/libs/catalyst_key_derivation/flutter_rust_bridge.yaml index e15ed9167d9a..ce78a3f68b62 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/flutter_rust_bridge.yaml +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/flutter_rust_bridge.yaml @@ -1,3 +1,7 @@ -rust_input: crate::api +rust_input: crate::key_derivation rust_root: rust/ -dart_output: lib/src/rust \ No newline at end of file +dart_output: lib/src/rust +default_external_library_loader_web_prefix: /assets/packages/catalyst_key_derivation/assets/js/ +wasm_bindgen_name: key_derivation_wasm_bindgen +# TODO(dt-iohk): allow to auto-upgrade when we're no longer using the forked flutter_rust_bridge +auto_upgrade_dependency: false diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key.dart index b903837db3fe..72784f49124a 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key.dart @@ -2,7 +2,7 @@ import 'dart:typed_data'; import 'package:catalyst_key_derivation/src/bip32_ed25519/bip32_ed25519_public_key.dart'; import 'package:catalyst_key_derivation/src/bip32_ed25519/bip32_ed25519_signature.dart'; -import 'package:catalyst_key_derivation/src/rust/api/key_derivation.dart' as rust; +import 'package:catalyst_key_derivation/src/rust/key_derivation.dart' as rust; import 'package:cbor/cbor.dart'; import 'package:convert/convert.dart'; import 'package:equatable/equatable.dart'; @@ -96,9 +96,7 @@ class Bip32Ed25519XPrivateKey extends Equatable { return _bytes.verifySignature( data: message, signature: rust.Bip32Ed25519Signature( - sigBytes: rust.U8Array64( - Uint8List.fromList(signature.bytes), - ), + sigBytes: rust.U8Array64(Uint8List.fromList(signature.bytes)), ), ); } diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key_factory.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key_factory.dart index ab043924b769..607f0e147a9c 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key_factory.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_private_key_factory.dart @@ -1,6 +1,6 @@ import 'package:catalyst_cardano_serialization/catalyst_cardano_serialization.dart'; import 'package:catalyst_key_derivation/src/bip32_ed25519/bip32_ed25519_private_key.dart'; -import 'package:catalyst_key_derivation/src/rust/api/key_derivation.dart' as rust; +import 'package:catalyst_key_derivation/src/rust/key_derivation.dart' as rust; import 'package:cbor/cbor.dart'; /// A factory that builds instances of [Bip32Ed25519XPrivateKey]. diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key.dart index a303742005c0..c208bf166957 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key.dart @@ -2,7 +2,7 @@ import 'dart:typed_data'; import 'package:catalyst_key_derivation/src/bip32_ed25519/bip32_ed25519_signature.dart'; import 'package:catalyst_key_derivation/src/ed25519/ed25519_public_key.dart'; -import 'package:catalyst_key_derivation/src/rust/api/key_derivation.dart' as rust; +import 'package:catalyst_key_derivation/src/rust/key_derivation.dart' as rust; import 'package:cbor/cbor.dart'; import 'package:convert/convert.dart'; import 'package:equatable/equatable.dart'; @@ -49,9 +49,7 @@ class Bip32Ed25519XPublicKey extends Equatable { return _bytes.verifySignature( data: message, signature: rust.Bip32Ed25519Signature( - sigBytes: rust.U8Array64( - Uint8List.fromList(signature.bytes), - ), + sigBytes: rust.U8Array64(Uint8List.fromList(signature.bytes)), ), ); } diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key_factory.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key_factory.dart index 87053c1f106a..c93ccddb6fe0 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key_factory.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_public_key_factory.dart @@ -1,6 +1,6 @@ import 'package:catalyst_cardano_serialization/catalyst_cardano_serialization.dart'; import 'package:catalyst_key_derivation/src/bip32_ed25519/bip32_ed25519_public_key.dart'; -import 'package:catalyst_key_derivation/src/rust/api/key_derivation.dart' as rust; +import 'package:catalyst_key_derivation/src/rust/key_derivation.dart' as rust; import 'package:cbor/cbor.dart'; /// A factory that builds instances of [Bip32Ed25519XPublicKey]. diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature.dart index f983d2e3db85..92d0eb6b69dd 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature.dart @@ -1,6 +1,6 @@ import 'dart:typed_data'; -import 'package:catalyst_key_derivation/src/rust/api/key_derivation.dart' as rust; +import 'package:catalyst_key_derivation/src/rust/key_derivation.dart' as rust; import 'package:cbor/cbor.dart'; import 'package:convert/convert.dart'; import 'package:equatable/equatable.dart'; diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature_factory.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature_factory.dart index 86dac8f895b4..7e2499386cef 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature_factory.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/bip32_ed25519/bip32_ed25519_signature_factory.dart @@ -1,6 +1,6 @@ import 'package:catalyst_cardano_serialization/catalyst_cardano_serialization.dart'; import 'package:catalyst_key_derivation/src/bip32_ed25519/bip32_ed25519_signature.dart'; -import 'package:catalyst_key_derivation/src/rust/api/key_derivation.dart' as rust; +import 'package:catalyst_key_derivation/src/rust/key_derivation.dart' as rust; import 'package:cbor/cbor.dart'; /// A factory that builds instances of [Bip32Ed25519XSignature]. diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/catalyst_key_derivation.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/catalyst_key_derivation.dart index 830dfc672aa6..15d1c149ab74 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/catalyst_key_derivation.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/catalyst_key_derivation.dart @@ -1,6 +1,6 @@ import 'package:catalyst_key_derivation/src/bip32_ed25519/bip32_ed25519_private_key.dart'; -import 'package:catalyst_key_derivation/src/rust/api/key_derivation.dart' as rust; import 'package:catalyst_key_derivation/src/rust/frb_generated.dart' show RustLib; +import 'package:catalyst_key_derivation/src/rust/key_derivation.dart' as rust; /// A Flutter plugin for Cardano's SLIP-0023 hierarchical deterministic /// key derivation. diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/ed25519/ed25519_key_pair.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/ed25519/ed25519_key_pair.dart index 720c0c1770ca..85bfc494f7a2 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/ed25519/ed25519_key_pair.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/ed25519/ed25519_key_pair.dart @@ -12,10 +12,7 @@ final class Ed25519KeyPair extends Equatable { final Ed25519PrivateKey privateKey; /// The default constructor for [Ed25519KeyPair]. - const Ed25519KeyPair({ - required this.publicKey, - required this.privateKey, - }); + const Ed25519KeyPair({required this.publicKey, required this.privateKey}); @override List get props => [publicKey, privateKey]; diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.dart index b5e4f290da1d..24c22d53e0f9 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.dart @@ -3,11 +3,11 @@ // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field -import 'api/key_derivation.dart'; import 'dart:async'; import 'dart:convert'; import 'frb_generated.dart'; import 'frb_generated.io.dart' if (dart.library.js_interop) 'frb_generated.web.dart'; +import 'key_derivation.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; /// Main entrypoint of the Rust API @@ -61,99 +61,100 @@ class RustLib extends BaseEntrypoint { String get codegenVersion => '2.11.1'; @override - int get rustContentHash => -1976079523; + int get rustContentHash => -1596077969; static const kDefaultExternalLibraryLoaderConfig = ExternalLibraryLoaderConfig( stem: 'catalyst_key_derivation', ioDirectory: 'rust/target/release/', webPrefix: '/assets/packages/catalyst_key_derivation/assets/js/', + wasmBindGenName: 'key_derivation_wasm_bindgen', ); } abstract class RustLibApi extends BaseApi { - U8Array64 crateApiKeyDerivationBip32Ed25519SignatureGetInner({ + U8Array64 crateKeyDerivationBip32Ed25519SignatureGetInner({ required Bip32Ed25519Signature that, }); - Bip32Ed25519Signature crateApiKeyDerivationBip32Ed25519SignatureNew({ + Bip32Ed25519Signature crateKeyDerivationBip32Ed25519SignatureNew({ required U8Array64 sigBytes, }); - String crateApiKeyDerivationBip32Ed25519SignatureToHex({ + String crateKeyDerivationBip32Ed25519SignatureToHex({ required Bip32Ed25519Signature that, }); - Future crateApiKeyDerivationBip32Ed25519XPrivateKeyDeriveXprv({ + Future crateKeyDerivationBip32Ed25519XPrivateKeyDeriveXprv({ required Bip32Ed25519XPrivateKey that, required String path, }); - void crateApiKeyDerivationBip32Ed25519XPrivateKeyDrop({ + void crateKeyDerivationBip32Ed25519XPrivateKeyDrop({ required Bip32Ed25519XPrivateKey that, }); - U8Array32 crateApiKeyDerivationBip32Ed25519XPrivateKeyGetChainCode({ + U8Array32 crateKeyDerivationBip32Ed25519XPrivateKeyGetChainCode({ required Bip32Ed25519XPrivateKey that, }); - U8Array64 crateApiKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKey({ + U8Array64 crateKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKey({ required Bip32Ed25519XPrivateKey that, }); - U8Array96 crateApiKeyDerivationBip32Ed25519XPrivateKeyGetInner({ + U8Array96 crateKeyDerivationBip32Ed25519XPrivateKeyGetInner({ required Bip32Ed25519XPrivateKey that, }); - Bip32Ed25519XPrivateKey crateApiKeyDerivationBip32Ed25519XPrivateKeyNew({ + Bip32Ed25519XPrivateKey crateKeyDerivationBip32Ed25519XPrivateKeyNew({ required U8Array96 xprvBytes, }); - Future crateApiKeyDerivationBip32Ed25519XPrivateKeySignData({ + Future crateKeyDerivationBip32Ed25519XPrivateKeySignData({ required Bip32Ed25519XPrivateKey that, required List data, }); - String crateApiKeyDerivationBip32Ed25519XPrivateKeyToHex({ + String crateKeyDerivationBip32Ed25519XPrivateKeyToHex({ required Bip32Ed25519XPrivateKey that, }); - Future crateApiKeyDerivationBip32Ed25519XPrivateKeyVerifySignature({ + Future crateKeyDerivationBip32Ed25519XPrivateKeyVerifySignature({ required Bip32Ed25519XPrivateKey that, required List data, required Bip32Ed25519Signature signature, }); - Future crateApiKeyDerivationBip32Ed25519XPrivateKeyXpublicKey({ + Future crateKeyDerivationBip32Ed25519XPrivateKeyXpublicKey({ required Bip32Ed25519XPrivateKey that, }); - U8Array32 crateApiKeyDerivationBip32Ed25519XPublicKeyGetChainCode({ + U8Array32 crateKeyDerivationBip32Ed25519XPublicKeyGetChainCode({ required Bip32Ed25519XPublicKey that, }); - U8Array64 crateApiKeyDerivationBip32Ed25519XPublicKeyGetInner({ + U8Array64 crateKeyDerivationBip32Ed25519XPublicKeyGetInner({ required Bip32Ed25519XPublicKey that, }); - U8Array32 crateApiKeyDerivationBip32Ed25519XPublicKeyGetPublicKey({ + U8Array32 crateKeyDerivationBip32Ed25519XPublicKeyGetPublicKey({ required Bip32Ed25519XPublicKey that, }); - Bip32Ed25519XPublicKey crateApiKeyDerivationBip32Ed25519XPublicKeyNew({ + Bip32Ed25519XPublicKey crateKeyDerivationBip32Ed25519XPublicKeyNew({ required U8Array64 xpubBytes, }); - String crateApiKeyDerivationBip32Ed25519XPublicKeyToHex({ + String crateKeyDerivationBip32Ed25519XPublicKeyToHex({ required Bip32Ed25519XPublicKey that, }); - Future crateApiKeyDerivationBip32Ed25519XPublicKeyVerifySignature({ + Future crateKeyDerivationBip32Ed25519XPublicKeyVerifySignature({ required Bip32Ed25519XPublicKey that, required List data, required Bip32Ed25519Signature signature, }); - Future crateApiKeyDerivationMnemonicToXprv({ + Future crateKeyDerivationMnemonicToXprv({ required String mnemonic, String? passphrase, }); @@ -186,7 +187,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { }); @override - U8Array64 crateApiKeyDerivationBip32Ed25519SignatureGetInner({ + U8Array64 crateKeyDerivationBip32Ed25519SignatureGetInner({ required Bip32Ed25519Signature that, }) { return handler.executeSync( @@ -203,21 +204,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_u_8_array_64, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519SignatureGetInnerConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519SignatureGetInnerConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519SignatureGetInnerConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519SignatureGetInnerConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519Signature_get_inner(dart_style=inner)", argNames: ["that"], ); @override - Bip32Ed25519Signature crateApiKeyDerivationBip32Ed25519SignatureNew({ + Bip32Ed25519Signature crateKeyDerivationBip32Ed25519SignatureNew({ required U8Array64 sigBytes, }) { return handler.executeSync( @@ -232,20 +233,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519SignatureNewConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519SignatureNewConstMeta, argValues: [sigBytes], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519SignatureNewConstMeta => const TaskConstMeta( + TaskConstMeta get kCrateKeyDerivationBip32Ed25519SignatureNewConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519Signature_new", argNames: ["sigBytes"], ); @override - String crateApiKeyDerivationBip32Ed25519SignatureToHex({ + String crateKeyDerivationBip32Ed25519SignatureToHex({ required Bip32Ed25519Signature that, }) { return handler.executeSync( @@ -262,21 +263,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_String, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519SignatureToHexConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519SignatureToHexConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519SignatureToHexConstMeta => - const TaskConstMeta( - debugName: "Bip32Ed25519Signature_to_hex", - argNames: ["that"], - ); + TaskConstMeta get kCrateKeyDerivationBip32Ed25519SignatureToHexConstMeta => const TaskConstMeta( + debugName: "Bip32Ed25519Signature_to_hex", + argNames: ["that"], + ); @override - Future crateApiKeyDerivationBip32Ed25519XPrivateKeyDeriveXprv({ + Future crateKeyDerivationBip32Ed25519XPrivateKeyDeriveXprv({ required Bip32Ed25519XPrivateKey that, required String path, }) { @@ -301,21 +301,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyDeriveXprvConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyDeriveXprvConstMeta, argValues: [that, path], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyDeriveXprvConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyDeriveXprvConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPrivateKey_derive_xprv", argNames: ["that", "path"], ); @override - void crateApiKeyDerivationBip32Ed25519XPrivateKeyDrop({ + void crateKeyDerivationBip32Ed25519XPrivateKeyDrop({ required Bip32Ed25519XPrivateKey that, }) { return handler.executeSync( @@ -332,21 +332,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_unit, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyDropConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyDropConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyDropConstMeta => - const TaskConstMeta( - debugName: "Bip32Ed25519XPrivateKey_drop", - argNames: ["that"], - ); + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyDropConstMeta => const TaskConstMeta( + debugName: "Bip32Ed25519XPrivateKey_drop", + argNames: ["that"], + ); @override - U8Array32 crateApiKeyDerivationBip32Ed25519XPrivateKeyGetChainCode({ + U8Array32 crateKeyDerivationBip32Ed25519XPrivateKeyGetChainCode({ required Bip32Ed25519XPrivateKey that, }) { return handler.executeSync( @@ -363,21 +362,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_u_8_array_32, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyGetChainCodeConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyGetChainCodeConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyGetChainCodeConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyGetChainCodeConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPrivateKey_get_chain_code(dart_style=chain_code)", argNames: ["that"], ); @override - U8Array64 crateApiKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKey({ + U8Array64 crateKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKey({ required Bip32Ed25519XPrivateKey that, }) { return handler.executeSync( @@ -394,14 +393,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_u_8_array_64, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKeyConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKeyConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKeyConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKeyConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPrivateKey_get_extended_secret_key(dart_style=extended_secret_key)", @@ -409,7 +408,7 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { ); @override - U8Array96 crateApiKeyDerivationBip32Ed25519XPrivateKeyGetInner({ + U8Array96 crateKeyDerivationBip32Ed25519XPrivateKeyGetInner({ required Bip32Ed25519XPrivateKey that, }) { return handler.executeSync( @@ -426,21 +425,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_u_8_array_96, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyGetInnerConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyGetInnerConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyGetInnerConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyGetInnerConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPrivateKey_get_inner(dart_style=inner)", argNames: ["that"], ); @override - Bip32Ed25519XPrivateKey crateApiKeyDerivationBip32Ed25519XPrivateKeyNew({ + Bip32Ed25519XPrivateKey crateKeyDerivationBip32Ed25519XPrivateKeyNew({ required U8Array96 xprvBytes, }) { return handler.executeSync( @@ -455,21 +454,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyNewConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyNewConstMeta, argValues: [xprvBytes], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyNewConstMeta => - const TaskConstMeta( - debugName: "Bip32Ed25519XPrivateKey_new", - argNames: ["xprvBytes"], - ); + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyNewConstMeta => const TaskConstMeta( + debugName: "Bip32Ed25519XPrivateKey_new", + argNames: ["xprvBytes"], + ); @override - Future crateApiKeyDerivationBip32Ed25519XPrivateKeySignData({ + Future crateKeyDerivationBip32Ed25519XPrivateKeySignData({ required Bip32Ed25519XPrivateKey that, required List data, }) { @@ -494,21 +492,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeySignDataConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeySignDataConstMeta, argValues: [that, data], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeySignDataConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeySignDataConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPrivateKey_sign_data", argNames: ["that", "data"], ); @override - String crateApiKeyDerivationBip32Ed25519XPrivateKeyToHex({ + String crateKeyDerivationBip32Ed25519XPrivateKeyToHex({ required Bip32Ed25519XPrivateKey that, }) { return handler.executeSync( @@ -525,21 +523,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_String, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyToHexConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyToHexConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyToHexConstMeta => - const TaskConstMeta( - debugName: "Bip32Ed25519XPrivateKey_to_hex", - argNames: ["that"], - ); + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyToHexConstMeta => const TaskConstMeta( + debugName: "Bip32Ed25519XPrivateKey_to_hex", + argNames: ["that"], + ); @override - Future crateApiKeyDerivationBip32Ed25519XPrivateKeyVerifySignature({ + Future crateKeyDerivationBip32Ed25519XPrivateKeyVerifySignature({ required Bip32Ed25519XPrivateKey that, required List data, required Bip32Ed25519Signature signature, @@ -568,21 +565,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_bool, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyVerifySignatureConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyVerifySignatureConstMeta, argValues: [that, data, signature], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyVerifySignatureConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyVerifySignatureConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPrivateKey_verify_signature", argNames: ["that", "data", "signature"], ); @override - Future crateApiKeyDerivationBip32Ed25519XPrivateKeyXpublicKey({ + Future crateKeyDerivationBip32Ed25519XPrivateKeyXpublicKey({ required Bip32Ed25519XPrivateKey that, }) { return handler.executeNormal( @@ -605,21 +602,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPrivateKeyXpublicKeyConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPrivateKeyXpublicKeyConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPrivateKeyXpublicKeyConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPrivateKeyXpublicKeyConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPrivateKey_xpublic_key", argNames: ["that"], ); @override - U8Array32 crateApiKeyDerivationBip32Ed25519XPublicKeyGetChainCode({ + U8Array32 crateKeyDerivationBip32Ed25519XPublicKeyGetChainCode({ required Bip32Ed25519XPublicKey that, }) { return handler.executeSync( @@ -636,21 +633,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_u_8_array_32, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPublicKeyGetChainCodeConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPublicKeyGetChainCodeConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPublicKeyGetChainCodeConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPublicKeyGetChainCodeConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPublicKey_get_chain_code(dart_style=chain_code)", argNames: ["that"], ); @override - U8Array64 crateApiKeyDerivationBip32Ed25519XPublicKeyGetInner({ + U8Array64 crateKeyDerivationBip32Ed25519XPublicKeyGetInner({ required Bip32Ed25519XPublicKey that, }) { return handler.executeSync( @@ -667,21 +664,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_u_8_array_64, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPublicKeyGetInnerConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPublicKeyGetInnerConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPublicKeyGetInnerConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPublicKeyGetInnerConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPublicKey_get_inner(dart_style=inner)", argNames: ["that"], ); @override - U8Array32 crateApiKeyDerivationBip32Ed25519XPublicKeyGetPublicKey({ + U8Array32 crateKeyDerivationBip32Ed25519XPublicKeyGetPublicKey({ required Bip32Ed25519XPublicKey that, }) { return handler.executeSync( @@ -698,21 +695,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_u_8_array_32, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPublicKeyGetPublicKeyConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPublicKeyGetPublicKeyConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPublicKeyGetPublicKeyConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPublicKeyGetPublicKeyConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPublicKey_get_public_key(dart_style=public_key)", argNames: ["that"], ); @override - Bip32Ed25519XPublicKey crateApiKeyDerivationBip32Ed25519XPublicKeyNew({ + Bip32Ed25519XPublicKey crateKeyDerivationBip32Ed25519XPublicKeyNew({ required U8Array64 xpubBytes, }) { return handler.executeSync( @@ -727,20 +724,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPublicKeyNewConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPublicKeyNewConstMeta, argValues: [xpubBytes], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPublicKeyNewConstMeta => const TaskConstMeta( + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPublicKeyNewConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPublicKey_new", argNames: ["xpubBytes"], ); @override - String crateApiKeyDerivationBip32Ed25519XPublicKeyToHex({ + String crateKeyDerivationBip32Ed25519XPublicKeyToHex({ required Bip32Ed25519XPublicKey that, }) { return handler.executeSync( @@ -757,21 +754,20 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_String, decodeErrorData: null, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPublicKeyToHexConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPublicKeyToHexConstMeta, argValues: [that], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPublicKeyToHexConstMeta => - const TaskConstMeta( - debugName: "Bip32Ed25519XPublicKey_to_hex", - argNames: ["that"], - ); + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPublicKeyToHexConstMeta => const TaskConstMeta( + debugName: "Bip32Ed25519XPublicKey_to_hex", + argNames: ["that"], + ); @override - Future crateApiKeyDerivationBip32Ed25519XPublicKeyVerifySignature({ + Future crateKeyDerivationBip32Ed25519XPublicKeyVerifySignature({ required Bip32Ed25519XPublicKey that, required List data, required Bip32Ed25519Signature signature, @@ -800,21 +796,21 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { decodeSuccessData: sse_decode_bool, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateApiKeyDerivationBip32Ed25519XPublicKeyVerifySignatureConstMeta, + constMeta: kCrateKeyDerivationBip32Ed25519XPublicKeyVerifySignatureConstMeta, argValues: [that, data, signature], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationBip32Ed25519XPublicKeyVerifySignatureConstMeta => + TaskConstMeta get kCrateKeyDerivationBip32Ed25519XPublicKeyVerifySignatureConstMeta => const TaskConstMeta( debugName: "Bip32Ed25519XPublicKey_verify_signature", argNames: ["that", "data", "signature"], ); @override - Future crateApiKeyDerivationMnemonicToXprv({ + Future crateKeyDerivationMnemonicToXprv({ required String mnemonic, String? passphrase, }) { @@ -836,14 +832,14 @@ class RustLibApiImpl extends RustLibApiImplPlatform implements RustLibApi { sse_decode_Auto_Owned_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey, decodeErrorData: sse_decode_AnyhowException, ), - constMeta: kCrateApiKeyDerivationMnemonicToXprvConstMeta, + constMeta: kCrateKeyDerivationMnemonicToXprvConstMeta, argValues: [mnemonic, passphrase], apiImpl: this, ), ); } - TaskConstMeta get kCrateApiKeyDerivationMnemonicToXprvConstMeta => const TaskConstMeta( + TaskConstMeta get kCrateKeyDerivationMnemonicToXprvConstMeta => const TaskConstMeta( debugName: "mnemonic_to_xprv", argNames: ["mnemonic", "passphrase"], ); @@ -1505,11 +1501,10 @@ class Bip32Ed25519SignatureImpl extends RustOpaque implements Bip32Ed25519Signat /// Get the inner bytes. U8Array64 get inner => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519SignatureGetInner(that: this); + RustLib.instance.api.crateKeyDerivationBip32Ed25519SignatureGetInner(that: this); /// Convert to a hex string. - String toHex() => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519SignatureToHex(that: this); + String toHex() => RustLib.instance.api.crateKeyDerivationBip32Ed25519SignatureToHex(that: this); } @sealed @@ -1550,13 +1545,13 @@ class Bip32Ed25519XPrivateKeyImpl extends RustOpaque implements Bip32Ed25519XPri /// /// Returns an error if the derivation path is invalid. Future deriveXprv({required String path}) => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyDeriveXprv( + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyDeriveXprv( that: this, path: path, ); /// Drop the extended private key. - void drop() => RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyDrop(that: this); + void drop() => RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyDrop(that: this); /// Extract the chain code from the extended private key. /// The chain code is the last 32 bytes of the extended private key. @@ -1565,7 +1560,7 @@ class Bip32Ed25519XPrivateKeyImpl extends RustOpaque implements Bip32Ed25519XPri /// /// Returns a 32 length bytes representing the chain code. U8Array32 get chainCode => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyGetChainCode(that: this); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyGetChainCode(that: this); /// Extract the extended secret key from the extended private key. /// The extended secret key is the first 64 bytes of the extended private key. @@ -1574,13 +1569,13 @@ class Bip32Ed25519XPrivateKeyImpl extends RustOpaque implements Bip32Ed25519XPri /// /// Returns a 64 length bytes representing the extended secret key. U8Array64 get extendedSecretKey => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKey( + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyGetExtendedSecretKey( that: this, ); /// Get the inner bytes. U8Array96 get inner => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyGetInner(that: this); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyGetInner(that: this); /// Sign the given data with the given extended private key. /// @@ -1595,14 +1590,13 @@ class Bip32Ed25519XPrivateKeyImpl extends RustOpaque implements Bip32Ed25519XPri /// /// Returns an error if the extended private key is invalid. Future signData({required List data}) => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeySignData( + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeySignData( that: this, data: data, ); /// Convert to a hex string. - String toHex() => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyToHex(that: this); + String toHex() => RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyToHex(that: this); /// Verify the signature on the given data using extended private key. /// @@ -1621,7 +1615,7 @@ class Bip32Ed25519XPrivateKeyImpl extends RustOpaque implements Bip32Ed25519XPri Future verifySignature({ required List data, required Bip32Ed25519Signature signature, - }) => RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyVerifySignature( + }) => RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyVerifySignature( that: this, data: data, signature: signature, @@ -1638,7 +1632,7 @@ class Bip32Ed25519XPrivateKeyImpl extends RustOpaque implements Bip32Ed25519XPri /// /// Returns an error if the extended private key is invalid. Future xpublicKey() => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyXpublicKey(that: this); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyXpublicKey(that: this); } @sealed @@ -1669,11 +1663,11 @@ class Bip32Ed25519XPublicKeyImpl extends RustOpaque implements Bip32Ed25519XPubl /// /// Returns a 32 length bytes representing the chain code. U8Array32 get chainCode => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPublicKeyGetChainCode(that: this); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPublicKeyGetChainCode(that: this); /// Get the inner bytes. U8Array64 get inner => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPublicKeyGetInner(that: this); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPublicKeyGetInner(that: this); /// Extract the public key from the extended public key. /// The public key is the first 32 bytes of the extended public key. @@ -1682,11 +1676,10 @@ class Bip32Ed25519XPublicKeyImpl extends RustOpaque implements Bip32Ed25519XPubl /// /// Returns a 32 length bytes representing the public key. U8Array32 get publicKey => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPublicKeyGetPublicKey(that: this); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPublicKeyGetPublicKey(that: this); /// Convert to a hex string. - String toHex() => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPublicKeyToHex(that: this); + String toHex() => RustLib.instance.api.crateKeyDerivationBip32Ed25519XPublicKeyToHex(that: this); /// Verify the signature on the given data using extended public key. /// @@ -1705,7 +1698,7 @@ class Bip32Ed25519XPublicKeyImpl extends RustOpaque implements Bip32Ed25519XPubl Future verifySignature({ required List data, required Bip32Ed25519Signature signature, - }) => RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPublicKeyVerifySignature( + }) => RustLib.instance.api.crateKeyDerivationBip32Ed25519XPublicKeyVerifySignature( that: this, data: data, signature: signature, diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.io.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.io.dart index aa22280c7b5e..fd196892b92f 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.io.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.io.dart @@ -3,11 +3,11 @@ // ignore_for_file: unused_import, unused_element, unnecessary_import, duplicate_ignore, invalid_use_of_internal_member, annotate_overrides, non_constant_identifier_names, curly_braces_in_flow_control_structures, prefer_const_literals_to_create_immutables, unused_field -import 'api/key_derivation.dart'; import 'dart:async'; import 'dart:convert'; import 'dart:ffi' as ffi; import 'frb_generated.dart'; +import 'key_derivation.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_io.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.web.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.web.dart index a108d27ff9f5..553527169961 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.web.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/frb_generated.web.dart @@ -6,10 +6,10 @@ // Static analysis wrongly picks the IO variant, thus ignore this // ignore_for_file: argument_type_not_assignable -import 'api/key_derivation.dart'; import 'dart:async'; import 'dart:convert'; import 'frb_generated.dart'; +import 'key_derivation.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated_web.dart'; abstract class RustLibApiImplPlatform extends BaseApiImpl { @@ -394,7 +394,7 @@ class RustLibWire implements BaseWire { ); } -@JS('wasm_bindgen') +@JS('key_derivation_wasm_bindgen') external RustLibWasmModule get wasmModule; @JS() diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/api/key_derivation.dart b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/key_derivation.dart similarity index 95% rename from catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/api/key_derivation.dart rename to catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/key_derivation.dart index c0b3b0377368..be2509a91f54 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/api/key_derivation.dart +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/key_derivation.dart @@ -3,7 +3,7 @@ // ignore_for_file: invalid_use_of_internal_member, unused_import, unnecessary_import -import '../frb_generated.dart'; +import 'frb_generated.dart'; import 'package:collection/collection.dart'; import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; @@ -30,7 +30,7 @@ import 'package:flutter_rust_bridge/flutter_rust_bridge_for_generated.dart'; Future mnemonicToXprv({ required String mnemonic, String? passphrase, -}) => RustLib.instance.api.crateApiKeyDerivationMnemonicToXprv( +}) => RustLib.instance.api.crateKeyDerivationMnemonicToXprv( mnemonic: mnemonic, passphrase: passphrase, ); @@ -42,7 +42,7 @@ abstract class Bip32Ed25519Signature implements RustOpaqueInterface { /// Create a new `Bip32Ed25519Signature` from the given bytes. factory Bip32Ed25519Signature({required U8Array64 sigBytes}) => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519SignatureNew(sigBytes: sigBytes); + RustLib.instance.api.crateKeyDerivationBip32Ed25519SignatureNew(sigBytes: sigBytes); /// Convert to a hex string. String toHex(); @@ -92,7 +92,7 @@ abstract class Bip32Ed25519XPrivateKey implements RustOpaqueInterface { /// Create a new `Bip32Ed25519XPrivateKey` from the given bytes. factory Bip32Ed25519XPrivateKey({required U8Array96 xprvBytes}) => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPrivateKeyNew(xprvBytes: xprvBytes); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPrivateKeyNew(xprvBytes: xprvBytes); /// Sign the given data with the given extended private key. /// @@ -166,7 +166,7 @@ abstract class Bip32Ed25519XPublicKey implements RustOpaqueInterface { /// Create a new `Bip32Ed25519XPublicKey` from the given bytes. factory Bip32Ed25519XPublicKey({required U8Array64 xpubBytes}) => - RustLib.instance.api.crateApiKeyDerivationBip32Ed25519XPublicKeyNew(xpubBytes: xpubBytes); + RustLib.instance.api.crateKeyDerivationBip32Ed25519XPublicKeyNew(xpubBytes: xpubBytes); /// Convert to a hex string. String toHex(); diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml b/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml index 7c387aed3872..37138fb24e2b 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/pubspec.yaml @@ -4,6 +4,8 @@ repository: https://github.com/input-output-hk/catalyst-voices/tree/main/catalys issue_tracker: https://github.com/input-output-hk/catalyst-voices/issues topics: [cryptography, encryption] version: 1.0.0 +# TODO(dt-iohk): enable publishing once flutter_rust_bridge is reverted to official version +publish_to: none environment: sdk: ">=3.9.0 <4.0.0" @@ -18,7 +20,11 @@ dependencies: equatable: ^2.0.7 flutter: sdk: flutter - flutter_rust_bridge: 2.11.1 + flutter_rust_bridge: + git: + url: https://github.com/dt-iohk/flutter_rust_bridge + ref: 64678315e8f5a877fc7b78524d9441cd05f42d65 + path: frb_dart/ plugin_platform_interface: ^2.1.8 dev_dependencies: diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/.config/nextest.toml b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/.config/nextest.toml index be3673830bb0..c8cccf508139 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/.config/nextest.toml +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/.config/nextest.toml @@ -47,3 +47,14 @@ store-success-output = true # Note that if a description can be extracted from the output, it is always stored in the # element. store-failure-output = true + +[test-groups] +serial-integration = { max-threads = 1 } + +[[profile.default.overrides]] +filter = 'test(/^serial::/)' +test-group = 'serial-integration' + +[[profile.ci.overrides]] +filter = 'test(/^serial::/)' +test-group = "serial-integration" diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Cargo.toml b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Cargo.toml index 39eabdec7152..8f454f61decf 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Cargo.toml +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Cargo.toml @@ -10,7 +10,7 @@ license = "Apache-2.0" crate-type = ["cdylib", "staticlib", "rlib"] [dependencies] -flutter_rust_bridge = "=2.11.1" +flutter_rust_bridge = { version = "2.11.1", git = "https://github.com/dt-iohk/flutter_rust_bridge.git", rev = "64678315e8f5a877fc7b78524d9441cd05f42d65", package = "flutter_rust_bridge" } ed25519-bip32 = "0.4.1" hmac = "0.12.1" pbkdf2 = "0.12.2" diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Earthfile b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Earthfile index 5e74d25ce21d..8e4824e3ee57 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Earthfile +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Earthfile @@ -1,6 +1,6 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:v3.5.13 AS rust-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/rust:feat/catalyst-compression-setup AS rust-ci IMPORT ../ AS flutter-rust-bridge # builder : Setup the builder diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Justfile b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Justfile index a2602035d8cc..723667c23b20 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Justfile +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/Justfile @@ -11,23 +11,23 @@ default: cargo-tree: cargo tree -e features,normal,build -f "{p}[{f}]" --workspace --frozen +# Generate code using flutter_rust_bridge +generate-code: + just ../code-gen-web + # Check Dependency licenses and CVE's license-check: cargo deny check --exclude-dev || true # Format the rust code code-format: - # Create a dummy file just to past the CI format check - # Add another blank line to satisfy the cargo fmt check - #printf "\n" > ./src/frb_generated.rs - - #cargo +nightly fmtfix - #cargo +nightly fmtchk + cargo +nightly fmtfix + cargo +nightly fmtchk # Lint the rust code code-lint: - #cargo lintfix -r - #cargo lint -r + cargo lintfix -r + cargo lint -r # Synchronize Rust Configs sync-cfg: @@ -35,7 +35,7 @@ sync-cfg: earthly ./catalyst_voices/packages/libs/catalyst_key_derivation/rust+sync-cfg # Pre Push Checks -pre-push: sync-cfg code-format code-lint license-check +pre-push: sync-cfg generate-code code-format code-lint license-check # Make sure we can actually build inside Earthly which needs to happen in CI. cd ../../../../.. && \ earthly ./catalyst_voices/packages/libs/catalyst_key_derivation/rust+check && \ diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/deny.toml b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/deny.toml index e6e3ed2ecee0..0976bbb2a00a 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/deny.toml +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/deny.toml @@ -60,6 +60,8 @@ allow-git = [ "https://github.com/input-output-hk/mithril", # Maintained fork of an archived crates-io version. "https://github.com/dariusc93/rust-ipfs", + # TODO(dt-iohk): remove this when forked flutter_rust_bridge is no longer needed + "https://github.com/dt-iohk/flutter_rust_bridge", ] [licenses] diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/api/mod.rs b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/api/mod.rs deleted file mode 100644 index 13a92cfbee7e..000000000000 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/api/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -//! Module for the Catalyst key derivation library. - -pub mod key_derivation; diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/frb_generated.rs b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/frb_generated.rs index 0e54300617a4..6c538c86027d 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/frb_generated.rs +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/frb_generated.rs @@ -2,43 +2,43 @@ // @generated by `flutter_rust_bridge`@ 2.11.1. #![allow( - non_camel_case_types, - unused, - non_snake_case, - clippy::needless_return, - clippy::redundant_closure_call, - clippy::redundant_closure, - clippy::useless_conversion, - clippy::unit_arg, - clippy::unused_unit, - clippy::double_parens, - clippy::let_and_return, - clippy::too_many_arguments, - clippy::match_single_binding, - clippy::clone_on_copy, - clippy::let_unit_value, - clippy::deref_addrof, - clippy::explicit_auto_deref, - clippy::borrow_deref_ref, - clippy::needless_borrow +non_camel_case_types, +unused, +non_snake_case, +clippy::needless_return, +clippy::redundant_closure_call, +clippy::redundant_closure, +clippy::useless_conversion, +clippy::unit_arg, +clippy::unused_unit, +clippy::double_parens, +clippy::let_and_return, +clippy::too_many_arguments, +clippy::match_single_binding, +clippy::clone_on_copy, +clippy::let_unit_value, +clippy::deref_addrof, +clippy::explicit_auto_deref, +clippy::borrow_deref_ref, +clippy::needless_borrow )] // Section: imports -use crate::api::key_derivation::*; -use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, ReadBytesExt, WriteBytesExt}; -use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; -use flutter_rust_bridge::{Handler, IntoIntoDart}; +use crate::key_derivation::*;use flutter_rust_bridge::{Handler, IntoIntoDart}; +use flutter_rust_bridge::for_generated::{Lockable, transform_result_dco, Lifetimeable}; +use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, WriteBytesExt, ReadBytesExt}; // Section: boilerplate flutter_rust_bridge::frb_generated_boilerplate!( - default_stream_sink_codec = SseCodec, - default_rust_opaque = RustOpaqueMoi, - default_rust_auto_opaque = RustAutoOpaqueMoi, -); -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.11.1"; -pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -1976079523; + default_stream_sink_codec = SseCodec, + default_rust_opaque = RustOpaqueMoi, + default_rust_auto_opaque = RustAutoOpaqueMoi, + ); + pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.11.1"; + pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -1596077969; + // Section: executor @@ -46,1678 +46,762 @@ flutter_rust_bridge::frb_generated_default_handler!(); // Section: wire_funcs -fn wire__crate__api__key_derivation__Bip32Ed25519Signature_get_inner_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519Signature_get_inner(dart_style=inner)", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519Signature::get_inner(&*api_that_guard), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519Signature_new_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519Signature_new", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_sig_bytes = <[u8; 64]>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519Signature::new(api_sig_bytes), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519Signature_to_hex_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519Signature_to_hex", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519Signature::to_hex(&*api_that_guard), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_derive_xprv_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_derive_xprv", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_path = ::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { +fn wire__crate__key_derivation__Bip32Ed25519Signature_get_inner_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519Signature_get_inner(dart_style=inner)", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519Signature::get_inner(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519Signature_new_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519Signature_new", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_sig_bytes = <[u8; 64]>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519Signature::new(api_sig_bytes))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519Signature_to_hex_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519Signature_to_hex", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519Signature::to_hex(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_derive_xprv_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_derive_xprv", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer); +let api_path = ::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - }, - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = - crate::api::key_derivation::Bip32Ed25519XPrivateKey::derive_xprv( - &*api_that_guard, - api_path, - ) - .await?; - Ok(output_ok) - })() - .await, - ) +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_async_ref().await), + _ => unreachable!(), } - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_drop_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_drop", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, true, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), - _ => unreachable!(), - } - } - let mut api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok({ - crate::api::key_derivation::Bip32Ed25519XPrivateKey::drop(&mut *api_that_guard); - })?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_chain_code_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_get_chain_code(dart_style=chain_code)", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPrivateKey::get_chain_code( - &*api_that_guard, - ), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_extended_secret_key_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: - "Bip32Ed25519XPrivateKey_get_extended_secret_key(dart_style=extended_secret_key)", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPrivateKey::get_extended_secret_key( - &*api_that_guard, - ), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_inner_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_get_inner(dart_style=inner)", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPrivateKey::get_inner( - &*api_that_guard, - ), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_new_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_new", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_xprv_bytes = <[u8; 96]>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPrivateKey::new(api_xprv_bytes), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_sign_data_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_sign_data", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_data = >::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::key_derivation::Bip32Ed25519XPrivateKey::derive_xprv(&*api_that_guard, api_path).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_drop_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_drop", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, true)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref_mut()), + _ => unreachable!(), + } + } + let mut api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok({ crate::key_derivation::Bip32Ed25519XPrivateKey::drop(&mut *api_that_guard); })?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_get_chain_code_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_get_chain_code(dart_style=chain_code)", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPrivateKey::get_chain_code(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_get_extended_secret_key_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_get_extended_secret_key(dart_style=extended_secret_key)", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPrivateKey::get_extended_secret_key(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_get_inner_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_get_inner(dart_style=inner)", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPrivateKey::get_inner(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_new_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_new", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_xprv_bytes = <[u8; 96]>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPrivateKey::new(api_xprv_bytes))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_sign_data_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_sign_data", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer); +let api_data = >::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - }, - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = - crate::api::key_derivation::Bip32Ed25519XPrivateKey::sign_data( - &*api_that_guard, - api_data, - ) - .await?; - Ok(output_ok) - })() - .await, - ) +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_async_ref().await), + _ => unreachable!(), } - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_to_hex_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_to_hex", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPrivateKey::to_hex(&*api_that_guard), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_verify_signature_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_verify_signature", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_data = >::sse_decode(&mut deserializer); - let api_signature = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::key_derivation::Bip32Ed25519XPrivateKey::sign_data(&*api_that_guard, api_data).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_to_hex_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_to_hex", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPrivateKey::to_hex(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_verify_signature_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_verify_signature", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer); +let api_data = >::sse_decode(&mut deserializer); +let api_signature = >>::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { let mut api_that_guard = None; - let mut api_signature_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_signature, - 1, - false, - ), - ], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - }, - 1 => { - api_signature_guard = - Some(api_signature.lockable_decode_async_ref().await) - }, - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let api_signature_guard = api_signature_guard.unwrap(); - let output_ok = - crate::api::key_derivation::Bip32Ed25519XPrivateKey::verify_signature( - &*api_that_guard, - api_data, - &*api_signature_guard, - ) - .await?; - Ok(output_ok) - })() - .await, - ) +let mut api_signature_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false), flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_signature, 1, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_async_ref().await), +1 => api_signature_guard = Some(api_signature.lockable_decode_async_ref().await), + _ => unreachable!(), } - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_xpublic_key_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPrivateKey_xpublic_key", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { + } + let api_that_guard = api_that_guard.unwrap(); +let api_signature_guard = api_signature_guard.unwrap(); + let output_ok = crate::key_derivation::Bip32Ed25519XPrivateKey::verify_signature(&*api_that_guard, api_data, &*api_signature_guard).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__key_derivation__Bip32Ed25519XPrivateKey_xpublic_key_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPrivateKey_xpublic_key", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - )], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - }, - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = - crate::api::key_derivation::Bip32Ed25519XPrivateKey::xpublic_key( - &*api_that_guard, - ) - .await?; - Ok(output_ok) - })() - .await, - ) +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_async_ref().await), + _ => unreachable!(), } - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_chain_code_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPublicKey_get_chain_code(dart_style=chain_code)", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPublicKey::get_chain_code( - &*api_that_guard, - ), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_inner_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPublicKey_get_inner(dart_style=inner)", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPublicKey::get_inner(&*api_that_guard), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_public_key_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPublicKey_get_public_key(dart_style=public_key)", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPublicKey::get_public_key( - &*api_that_guard, - ), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_new_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPublicKey_new", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_xpub_bytes = <[u8; 64]>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPublicKey::new(api_xpub_bytes), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_to_hex_impl( - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPublicKey_to_hex", - port: None, - mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - transform_result_sse::<_, ()>((move || { - let mut api_that_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - ]); - for i in decode_indices_ { - match i { - 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let output_ok = Result::<_, ()>::Ok( - crate::api::key_derivation::Bip32Ed25519XPublicKey::to_hex(&*api_that_guard), - )?; - Ok(output_ok) - })()) - }, - ) -} -fn wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_verify_signature_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "Bip32Ed25519XPublicKey_verify_signature", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); - let api_that = , - >>::sse_decode(&mut deserializer); - let api_data = >::sse_decode(&mut deserializer); - let api_signature = , - >>::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = crate::key_derivation::Bip32Ed25519XPrivateKey::xpublic_key(&*api_that_guard).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__key_derivation__Bip32Ed25519XPublicKey_get_chain_code_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPublicKey_get_chain_code(dart_style=chain_code)", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPublicKey::get_chain_code(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPublicKey_get_inner_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPublicKey_get_inner(dart_style=inner)", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPublicKey::get_inner(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPublicKey_get_public_key_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPublicKey_get_public_key(dart_style=public_key)", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPublicKey::get_public_key(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPublicKey_new_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPublicKey_new", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_xpub_bytes = <[u8; 64]>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPublicKey::new(api_xpub_bytes))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPublicKey_to_hex_impl(ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPublicKey_to_hex", port: None, mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer);deserializer.end(); + transform_result_sse::<_, ()>((move || { + let mut api_that_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_sync_ref()), + _ => unreachable!(), + } + } + let api_that_guard = api_that_guard.unwrap(); + let output_ok = Result::<_,()>::Ok(crate::key_derivation::Bip32Ed25519XPublicKey::to_hex(&*api_that_guard))?; Ok(output_ok) + })()) }) + }fn wire__crate__key_derivation__Bip32Ed25519XPublicKey_verify_signature_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "Bip32Ed25519XPublicKey_verify_signature", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); + let api_that = >>::sse_decode(&mut deserializer); +let api_data = >::sse_decode(&mut deserializer); +let api_signature = >>::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { let mut api_that_guard = None; - let mut api_signature_guard = None; - let decode_indices_ = - flutter_rust_bridge::for_generated::lockable_compute_decode_order( - vec![ - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_that, 0, false, - ), - flutter_rust_bridge::for_generated::LockableOrderInfo::new( - &api_signature, - 1, - false, - ), - ], - ); - for i in decode_indices_ { - match i { - 0 => { - api_that_guard = - Some(api_that.lockable_decode_async_ref().await) - }, - 1 => { - api_signature_guard = - Some(api_signature.lockable_decode_async_ref().await) - }, - _ => unreachable!(), - } - } - let api_that_guard = api_that_guard.unwrap(); - let api_signature_guard = api_signature_guard.unwrap(); - let output_ok = - crate::api::key_derivation::Bip32Ed25519XPublicKey::verify_signature( - &*api_that_guard, - api_data, - &*api_signature_guard, - ) - .await?; - Ok(output_ok) - })() - .await, - ) +let mut api_signature_guard = None; +let decode_indices_ = flutter_rust_bridge::for_generated::lockable_compute_decode_order(vec![flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_that, 0, false), flutter_rust_bridge::for_generated::LockableOrderInfo::new(&api_signature, 1, false)]); + for i in decode_indices_ { + match i { + 0 => api_that_guard = Some(api_that.lockable_decode_async_ref().await), +1 => api_signature_guard = Some(api_signature.lockable_decode_async_ref().await), + _ => unreachable!(), } - }, - ) -} -fn wire__crate__api__key_derivation__mnemonic_to_xprv_impl( - port_: flutter_rust_bridge::for_generated::MessagePort, - ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len_: i32, - data_len_: i32, -) { - FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::( - flutter_rust_bridge::for_generated::TaskInfo { - debug_name: "mnemonic_to_xprv", - port: Some(port_), - mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal, - }, - move || { - let message = unsafe { - flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire( - ptr_, - rust_vec_len_, - data_len_, - ) - }; - let mut deserializer = - flutter_rust_bridge::for_generated::SseDeserializer::new(message); + } + let api_that_guard = api_that_guard.unwrap(); +let api_signature_guard = api_signature_guard.unwrap(); + let output_ok = crate::key_derivation::Bip32Ed25519XPublicKey::verify_signature(&*api_that_guard, api_data, &*api_signature_guard).await?; Ok(output_ok) + })().await) + } }) + }fn wire__crate__key_derivation__mnemonic_to_xprv_impl(port_: flutter_rust_bridge::for_generated::MessagePort,ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,rust_vec_len_: i32,data_len_: i32) { + FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::(flutter_rust_bridge::for_generated::TaskInfo{ debug_name: "mnemonic_to_xprv", port: Some(port_), mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal }, move || { + let message = unsafe { flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(ptr_, rust_vec_len_, data_len_) }; + let mut deserializer = flutter_rust_bridge::for_generated::SseDeserializer::new(message); let api_mnemonic = ::sse_decode(&mut deserializer); - let api_passphrase = >::sse_decode(&mut deserializer); - deserializer.end(); - move |context| async move { - transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>( - (move || async move { - let output_ok = crate::api::key_derivation::mnemonic_to_xprv( - api_mnemonic, - api_passphrase, - ) - .await?; - Ok(output_ok) - })() - .await, - ) +let api_passphrase = >::sse_decode(&mut deserializer);deserializer.end(); move |context| async move { + transform_result_sse::<_, flutter_rust_bridge::for_generated::anyhow::Error>((move || async move { + let output_ok = crate::key_derivation::mnemonic_to_xprv(api_mnemonic, api_passphrase).await?; Ok(output_ok) + })().await) + } }) } - }, - ) -} // Section: related_funcs -flutter_rust_bridge::frb_generated_moi_arc_impl_value!( - flutter_rust_bridge::for_generated::RustAutoOpaqueInner -); -flutter_rust_bridge::frb_generated_moi_arc_impl_value!( - flutter_rust_bridge::for_generated::RustAutoOpaqueInner -); -flutter_rust_bridge::frb_generated_moi_arc_impl_value!( - flutter_rust_bridge::for_generated::RustAutoOpaqueInner -); - -// Section: dart2rust +flutter_rust_bridge::frb_generated_moi_arc_impl_value!(flutter_rust_bridge::for_generated::RustAutoOpaqueInner); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!(flutter_rust_bridge::for_generated::RustAutoOpaqueInner); +flutter_rust_bridge::frb_generated_moi_arc_impl_value!(flutter_rust_bridge::for_generated::RustAutoOpaqueInner); -impl SseDecode for flutter_rust_bridge::for_generated::anyhow::Error { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = ::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::anyhow::anyhow!("{}", inner); - } -} -impl SseDecode for Bip32Ed25519Signature { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = , - >>::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); - } -} - -impl SseDecode for Bip32Ed25519XPrivateKey { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = , - >>::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); - } -} - -impl SseDecode for Bip32Ed25519XPublicKey { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = , - >>::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner); - } -} - -impl SseDecode - for RustOpaqueMoi< - flutter_rust_bridge::for_generated::RustAutoOpaqueInner, - > -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = ::sse_decode(deserializer); - return decode_rust_opaque_moi(inner); - } -} - -impl SseDecode - for RustOpaqueMoi< - flutter_rust_bridge::for_generated::RustAutoOpaqueInner, - > -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = ::sse_decode(deserializer); - return decode_rust_opaque_moi(inner); - } -} - -impl SseDecode - for RustOpaqueMoi< - flutter_rust_bridge::for_generated::RustAutoOpaqueInner, - > -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = ::sse_decode(deserializer); - return decode_rust_opaque_moi(inner); - } -} - -impl SseDecode for String { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = >::sse_decode(deserializer); - return String::from_utf8(inner).unwrap(); - } -} +// Section: dart2rust -impl SseDecode for bool { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_u8().unwrap() != 0 - } -} -impl SseDecode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut len_ = ::sse_decode(deserializer); + impl SseDecode for flutter_rust_bridge::for_generated::anyhow::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = ::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::anyhow::anyhow!("{}", inner);} + } + + impl SseDecode for Bip32Ed25519Signature { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >>::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner);} + } + + impl SseDecode for Bip32Ed25519XPrivateKey { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >>::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner);} + } + + impl SseDecode for Bip32Ed25519XPublicKey { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >>::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::rust_auto_opaque_decode_owned(inner);} + } + + impl SseDecode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = ::sse_decode(deserializer); + return decode_rust_opaque_moi(inner);} + } + + impl SseDecode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = ::sse_decode(deserializer); + return decode_rust_opaque_moi(inner);} + } + + impl SseDecode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = ::sse_decode(deserializer); + return decode_rust_opaque_moi(inner);} + } + + impl SseDecode for String { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >::sse_decode(deserializer); + return String::from_utf8(inner).unwrap();} + } + + impl SseDecode for bool { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {deserializer.cursor.read_u8().unwrap() != 0} + } + + impl SseDecode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut len_ = ::sse_decode(deserializer); let mut ans_ = vec![]; - for idx_ in 0..len_ { - ans_.push(::sse_decode(deserializer)); - } - return ans_; - } -} - -impl SseDecode for Option { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - if (::sse_decode(deserializer)) { - return Some(::sse_decode(deserializer)); - } else { - return None; - } - } -} - -impl SseDecode for u8 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_u8().unwrap() - } -} - -impl SseDecode for [u8; 32] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = >::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::from_vec_to_array(inner); - } -} - -impl SseDecode for [u8; 64] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = >::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::from_vec_to_array(inner); - } -} - -impl SseDecode for [u8; 96] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - let mut inner = >::sse_decode(deserializer); - return flutter_rust_bridge::for_generated::from_vec_to_array(inner); - } -} - -impl SseDecode for () { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} -} - -impl SseDecode for usize { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_u64::().unwrap() as _ - } -} - -impl SseDecode for i32 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self { - deserializer.cursor.read_i32::().unwrap() - } -} - -fn pde_ffi_dispatcher_primary_impl( - func_id: i32, port: flutter_rust_bridge::for_generated::MessagePort, - ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, rust_vec_len: i32, - data_len: i32, -) { - // Codec=Pde (Serialization + dispatch), see doc to use other codecs - match func_id { - 4 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_derive_xprv_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 10 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_sign_data_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 12 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_verify_signature_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 13 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_xpublic_key_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 19 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_verify_signature_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - 20 => wire__crate__api__key_derivation__mnemonic_to_xprv_impl( - port, - ptr, - rust_vec_len, - data_len, - ), - _ => unreachable!(), - } -} - -fn pde_ffi_dispatcher_sync_impl( - func_id: i32, ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, - rust_vec_len: i32, data_len: i32, -) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { - // Codec=Pde (Serialization + dispatch), see doc to use other codecs - match func_id { - 1 => wire__crate__api__key_derivation__Bip32Ed25519Signature_get_inner_impl( - ptr, - rust_vec_len, - data_len, - ), - 2 => wire__crate__api__key_derivation__Bip32Ed25519Signature_new_impl( - ptr, - rust_vec_len, - data_len, - ), - 3 => wire__crate__api__key_derivation__Bip32Ed25519Signature_to_hex_impl( - ptr, - rust_vec_len, - data_len, - ), - 5 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_drop_impl( - ptr, - rust_vec_len, - data_len, - ), - 6 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_chain_code_impl( - ptr, - rust_vec_len, - data_len, - ), - 7 => { - wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_extended_secret_key_impl( - ptr, - rust_vec_len, - data_len, - ) - }, - 8 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_get_inner_impl( - ptr, - rust_vec_len, - data_len, - ), - 9 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_new_impl( - ptr, - rust_vec_len, - data_len, - ), - 11 => wire__crate__api__key_derivation__Bip32Ed25519XPrivateKey_to_hex_impl( - ptr, - rust_vec_len, - data_len, - ), - 14 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_chain_code_impl( - ptr, - rust_vec_len, - data_len, - ), - 15 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_inner_impl( - ptr, - rust_vec_len, - data_len, - ), - 16 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_get_public_key_impl( - ptr, - rust_vec_len, - data_len, - ), - 17 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_new_impl( - ptr, - rust_vec_len, - data_len, - ), - 18 => wire__crate__api__key_derivation__Bip32Ed25519XPublicKey_to_hex_impl( - ptr, - rust_vec_len, - data_len, - ), - _ => unreachable!(), - } -} + for idx_ in 0..len_ { ans_.push(::sse_decode(deserializer)); } + return ans_;} + } + + impl SseDecode for Option { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {if (::sse_decode(deserializer)) { + return Some(::sse_decode(deserializer)); + } else { + return None; + }} + } + + impl SseDecode for u8 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {deserializer.cursor.read_u8().unwrap()} + } + + impl SseDecode for [u8; 32] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::from_vec_to_array(inner);} + } + + impl SseDecode for [u8; 64] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::from_vec_to_array(inner);} + } + + impl SseDecode for [u8; 96] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {let mut inner = >::sse_decode(deserializer); + return flutter_rust_bridge::for_generated::from_vec_to_array(inner);} + } + + impl SseDecode for () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {} + } + + impl SseDecode for usize { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {deserializer.cursor.read_u64::().unwrap() as _} + } + + impl SseDecode for i32 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {deserializer.cursor.read_i32::().unwrap()} + } + + fn pde_ffi_dispatcher_primary_impl( + func_id: i32,port: flutter_rust_bridge::for_generated::MessagePort, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, + ) { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 4 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_derive_xprv_impl(port, ptr, rust_vec_len, data_len), +10 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_sign_data_impl(port, ptr, rust_vec_len, data_len), +12 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_verify_signature_impl(port, ptr, rust_vec_len, data_len), +13 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_xpublic_key_impl(port, ptr, rust_vec_len, data_len), +19 => wire__crate__key_derivation__Bip32Ed25519XPublicKey_verify_signature_impl(port, ptr, rust_vec_len, data_len), +20 => wire__crate__key_derivation__mnemonic_to_xprv_impl(port, ptr, rust_vec_len, data_len), + _ => unreachable!(), + } + } + + fn pde_ffi_dispatcher_sync_impl( + func_id: i32, + ptr: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr, + rust_vec_len: i32, + data_len: i32, + ) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse { + // Codec=Pde (Serialization + dispatch), see doc to use other codecs + match func_id { + 1 => wire__crate__key_derivation__Bip32Ed25519Signature_get_inner_impl(ptr, rust_vec_len, data_len), +2 => wire__crate__key_derivation__Bip32Ed25519Signature_new_impl(ptr, rust_vec_len, data_len), +3 => wire__crate__key_derivation__Bip32Ed25519Signature_to_hex_impl(ptr, rust_vec_len, data_len), +5 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_drop_impl(ptr, rust_vec_len, data_len), +6 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_get_chain_code_impl(ptr, rust_vec_len, data_len), +7 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_get_extended_secret_key_impl(ptr, rust_vec_len, data_len), +8 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_get_inner_impl(ptr, rust_vec_len, data_len), +9 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_new_impl(ptr, rust_vec_len, data_len), +11 => wire__crate__key_derivation__Bip32Ed25519XPrivateKey_to_hex_impl(ptr, rust_vec_len, data_len), +14 => wire__crate__key_derivation__Bip32Ed25519XPublicKey_get_chain_code_impl(ptr, rust_vec_len, data_len), +15 => wire__crate__key_derivation__Bip32Ed25519XPublicKey_get_inner_impl(ptr, rust_vec_len, data_len), +16 => wire__crate__key_derivation__Bip32Ed25519XPublicKey_get_public_key_impl(ptr, rust_vec_len, data_len), +17 => wire__crate__key_derivation__Bip32Ed25519XPublicKey_new_impl(ptr, rust_vec_len, data_len), +18 => wire__crate__key_derivation__Bip32Ed25519XPublicKey_to_hex_impl(ptr, rust_vec_len, data_len), + _ => unreachable!(), + } + } + // Section: rust2dart -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for FrbWrapper { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for FrbWrapper -{ -} - -impl flutter_rust_bridge::IntoIntoDart> - for Bip32Ed25519Signature -{ - fn into_into_dart(self) -> FrbWrapper { - self.into() - } -} - -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for FrbWrapper { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for FrbWrapper -{ -} - -impl flutter_rust_bridge::IntoIntoDart> - for Bip32Ed25519XPrivateKey -{ - fn into_into_dart(self) -> FrbWrapper { - self.into() - } -} - -// Codec=Dco (DartCObject based), see doc to use other codecs -impl flutter_rust_bridge::IntoDart for FrbWrapper { - fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0) - .into_dart() - } -} -impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive - for FrbWrapper -{ -} - -impl flutter_rust_bridge::IntoIntoDart> - for Bip32Ed25519XPublicKey -{ - fn into_into_dart(self) -> FrbWrapper { - self.into() - } -} - -impl SseEncode for flutter_rust_bridge::for_generated::anyhow::Error { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(format!("{:?}", self), serializer); - } -} - -impl SseEncode for Bip32Ed25519Signature { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - , - >>::sse_encode( - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), - serializer, - ); - } -} - -impl SseEncode for Bip32Ed25519XPrivateKey { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - , - >>::sse_encode( - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), - serializer, - ); - } -} -impl SseEncode for Bip32Ed25519XPublicKey { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - , - >>::sse_encode( - flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), - serializer, - ); - } -} - -impl SseEncode - for RustOpaqueMoi< - flutter_rust_bridge::for_generated::RustAutoOpaqueInner, - > -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - let (ptr, size) = self.sse_encode_raw(); - ::sse_encode(ptr, serializer); - ::sse_encode(size, serializer); - } -} + // Codec=Dco (DartCObject based), see doc to use other codecs + impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0).into_dart() + } + } + impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} -impl SseEncode - for RustOpaqueMoi< - flutter_rust_bridge::for_generated::RustAutoOpaqueInner, - > -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - let (ptr, size) = self.sse_encode_raw(); - ::sse_encode(ptr, serializer); - ::sse_encode(size, serializer); - } -} + impl flutter_rust_bridge::IntoIntoDart> for Bip32Ed25519Signature { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } + } -impl SseEncode - for RustOpaqueMoi< - flutter_rust_bridge::for_generated::RustAutoOpaqueInner, - > -{ - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - let (ptr, size) = self.sse_encode_raw(); - ::sse_encode(ptr, serializer); - ::sse_encode(size, serializer); - } -} + + // Codec=Dco (DartCObject based), see doc to use other codecs + impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0).into_dart() + } + } + impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} -impl SseEncode for String { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode(self.into_bytes(), serializer); - } -} + impl flutter_rust_bridge::IntoIntoDart> for Bip32Ed25519XPrivateKey { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } + } -impl SseEncode for bool { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_u8(self as _).unwrap(); - } -} + + // Codec=Dco (DartCObject based), see doc to use other codecs + impl flutter_rust_bridge::IntoDart for FrbWrapper { + fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi { + flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self.0).into_dart() + } + } + impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for FrbWrapper {} -impl SseEncode for Vec { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.len() as _, serializer); - for item in self { - ::sse_encode(item, serializer); + impl flutter_rust_bridge::IntoIntoDart> for Bip32Ed25519XPublicKey { + fn into_into_dart(self) -> FrbWrapper { + self.into() + } } - } -} -impl SseEncode for Option { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - ::sse_encode(self.is_some(), serializer); - if let Some(value) = self { - ::sse_encode(value, serializer); - } - } -} + + impl SseEncode for flutter_rust_bridge::for_generated::anyhow::Error { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {::sse_encode(format!("{:?}", self), serializer);} + } + + impl SseEncode for Bip32Ed25519Signature { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer);} + } + + impl SseEncode for Bip32Ed25519XPrivateKey { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer);} + } + + impl SseEncode for Bip32Ed25519XPublicKey { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>>::sse_encode(flutter_rust_bridge::for_generated::rust_auto_opaque_encode::<_, MoiArc<_>>(self), serializer);} + } + + impl SseEncode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {let (ptr, size) = self.sse_encode_raw(); + ::sse_encode(ptr, serializer); + ::sse_encode(size, serializer);} + } + + impl SseEncode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {let (ptr, size) = self.sse_encode_raw(); + ::sse_encode(ptr, serializer); + ::sse_encode(size, serializer);} + } + + impl SseEncode for RustOpaqueMoi> { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {let (ptr, size) = self.sse_encode_raw(); + ::sse_encode(ptr, serializer); + ::sse_encode(size, serializer);} + } + + impl SseEncode for String { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>::sse_encode(self.into_bytes(), serializer);} + } + + impl SseEncode for bool { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {serializer.cursor.write_u8(self as _).unwrap();} + } + + impl SseEncode for Vec { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {::sse_encode(self.len() as _, serializer); + for item in self { ::sse_encode(item, serializer); }} + } + + impl SseEncode for Option { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {::sse_encode(self.is_some(), serializer); + if let Some(value) = self { + ::sse_encode(value, serializer); + }} + } + + impl SseEncode for u8 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {serializer.cursor.write_u8(self).unwrap();} + } + + impl SseEncode for [u8; 32] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>::sse_encode({ let boxed: Box<[_]> = Box::new(self); boxed.into_vec() }, serializer);} + } + + impl SseEncode for [u8; 64] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>::sse_encode({ let boxed: Box<[_]> = Box::new(self); boxed.into_vec() }, serializer);} + } + + impl SseEncode for [u8; 96] { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {>::sse_encode({ let boxed: Box<[_]> = Box::new(self); boxed.into_vec() }, serializer);} + } + + impl SseEncode for () { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} + } + + impl SseEncode for usize { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {serializer.cursor.write_u64::(self as _).unwrap();} + } + + impl SseEncode for i32 { + // Codec=Sse (Serialization based), see doc to use other codecs + fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {serializer.cursor.write_i32::(self).unwrap();} + } + -impl SseEncode for u8 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_u8(self).unwrap(); - } -} -impl SseEncode for [u8; 32] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode( - { - let boxed: Box<[_]> = Box::new(self); - boxed.into_vec() - }, - serializer, - ); - } -} + + + #[cfg(not(target_family = "wasm"))] + mod io { + // This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. -impl SseEncode for [u8; 64] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode( - { - let boxed: Box<[_]> = Box::new(self); - boxed.into_vec() - }, - serializer, - ); - } -} -impl SseEncode for [u8; 96] { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - >::sse_encode( - { - let boxed: Box<[_]> = Box::new(self); - boxed.into_vec() - }, - serializer, - ); - } -} -impl SseEncode for () { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {} -} +// Section: imports -impl SseEncode for usize { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer - .cursor - .write_u64::(self as _) - .unwrap(); - } -} +use crate::key_derivation::*;use flutter_rust_bridge::{Handler, IntoIntoDart}; +use flutter_rust_bridge::for_generated::{Lockable, transform_result_dco, Lifetimeable}; +use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, WriteBytesExt, ReadBytesExt};use super::*; -impl SseEncode for i32 { - // Codec=Sse (Serialization based), see doc to use other codecs - fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) { - serializer.cursor.write_i32::(self).unwrap(); - } -} +// Section: boilerplate -#[cfg(not(target_family = "wasm"))] -mod io { - // This file is automatically generated, so please do not edit it. - // @generated by `flutter_rust_bridge`@ 2.11.1. +flutter_rust_bridge::frb_generated_boilerplate_io!(); - // Section: imports + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr: *const std::ffi::c_void) { + MoiArc::>::increment_strong_count(ptr as _); + } + - use super::*; - use crate::api::key_derivation::*; - use flutter_rust_bridge::for_generated::byteorder::{ - NativeEndian, ReadBytesExt, WriteBytesExt, - }; - use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; - use flutter_rust_bridge::{Handler, IntoIntoDart}; + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr: *const std::ffi::c_void) { + MoiArc::>::decrement_strong_count(ptr as _); + } + - // Section: boilerplate + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr: *const std::ffi::c_void) { + MoiArc::>::increment_strong_count(ptr as _); + } + - flutter_rust_bridge::frb_generated_boilerplate_io!(); + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr: *const std::ffi::c_void) { + MoiArc::>::decrement_strong_count(ptr as _); + } + - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr: *const std::ffi::c_void) { + MoiArc::>::increment_strong_count(ptr as _); + } + - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } + #[unsafe(no_mangle)] + pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr: *const std::ffi::c_void) { + MoiArc::>::decrement_strong_count(ptr as _); + } + - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } + } + #[cfg(not(target_family = "wasm"))] + pub use io::*; + + + /// cbindgen:ignore + #[cfg(target_family = "wasm")] + mod web { + // This file is automatically generated, so please do not edit it. +// @generated by `flutter_rust_bridge`@ 2.11.1. - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } - #[unsafe(no_mangle)] - pub extern "C" fn frbgen_catalyst_key_derivation_rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } -} -#[cfg(not(target_family = "wasm"))] -pub use io::*; +// Section: imports -/// cbindgen:ignore -#[cfg(target_family = "wasm")] -mod web { - // This file is automatically generated, so please do not edit it. - // @generated by `flutter_rust_bridge`@ 2.11.1. +use crate::key_derivation::*;use flutter_rust_bridge::{Handler, IntoIntoDart}; +use flutter_rust_bridge::for_generated::{Lockable, transform_result_dco, Lifetimeable}; +use flutter_rust_bridge::for_generated::byteorder::{NativeEndian, WriteBytesExt, ReadBytesExt};use super::*; + use flutter_rust_bridge::for_generated::wasm_bindgen; + use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; - // Section: imports - use super::*; - use crate::api::key_derivation::*; - use flutter_rust_bridge::for_generated::byteorder::{ - NativeEndian, ReadBytesExt, WriteBytesExt, - }; - use flutter_rust_bridge::for_generated::wasm_bindgen; - use flutter_rust_bridge::for_generated::wasm_bindgen::prelude::*; - use flutter_rust_bridge::for_generated::{transform_result_dco, Lifetimeable, Lockable}; - use flutter_rust_bridge::{Handler, IntoIntoDart}; +// Section: boilerplate - // Section: boilerplate +flutter_rust_bridge::frb_generated_boilerplate_web!(); - flutter_rust_bridge::frb_generated_boilerplate_web!(); + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr: *const std::ffi::c_void) { + MoiArc::>::increment_strong_count(ptr as _); + } + - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } + #[wasm_bindgen] + pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature(ptr: *const std::ffi::c_void) { + MoiArc::>::decrement_strong_count(ptr as _); + } + - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519Signature( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr: *const std::ffi::c_void) { + MoiArc::>::increment_strong_count(ptr as _); + } + - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } + #[wasm_bindgen] + pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey(ptr: *const std::ffi::c_void) { + MoiArc::>::decrement_strong_count(ptr as _); + } + - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPrivateKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } + #[wasm_bindgen] + pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr: *const std::ffi::c_void) { + MoiArc::>::increment_strong_count(ptr as _); + } + - #[wasm_bindgen] - pub fn rust_arc_increment_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::increment_strong_count(ptr as _); - } + #[wasm_bindgen] + pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey(ptr: *const std::ffi::c_void) { + MoiArc::>::decrement_strong_count(ptr as _); + } + - #[wasm_bindgen] - pub fn rust_arc_decrement_strong_count_RustOpaque_flutter_rust_bridgefor_generatedRustAutoOpaqueInnerBip32Ed25519XPublicKey( - ptr: *const std::ffi::c_void, - ) { - MoiArc::>::decrement_strong_count(ptr as _); - } -} -#[cfg(target_family = "wasm")] -pub use web::*; + } + #[cfg(target_family = "wasm")] + pub use web::*; + \ No newline at end of file diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/api/key_derivation/mod.rs b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/key_derivation/mod.rs similarity index 91% rename from catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/api/key_derivation/mod.rs rename to catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/key_derivation/mod.rs index dca308eaad5c..58a4b2447c43 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/api/key_derivation/mod.rs +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/key_derivation/mod.rs @@ -3,16 +3,16 @@ //! This module provides functions necessary to handle deterministic key derivation //! using BIP-0039 mnemonics. +use std::sync::LazyLock; + use bip32::DerivationPath; use bip39::Mnemonic; pub use ed25519_bip32::{DerivationIndex, DerivationScheme, Signature, XPrv, XPub}; -use flutter_rust_bridge::{frb, spawn_blocking_with}; +use flutter_rust_bridge::{frb, spawn_blocking_with, DefaultHandler, SimpleThreadPool}; use hmac::Hmac; use pbkdf2::pbkdf2; use sha2::Sha512; -use crate::frb_generated::FLUTTER_RUST_BRIDGE_HANDLER; - /// BIP32-Ed25519 extended private key bytes type. /// Compose of: /// - 64 Bytes: extended Ed25519 secret key @@ -98,7 +98,7 @@ impl Bip32Ed25519XPrivateKey { let derive_xprv = spawn_blocking_with( move || derive_xprv_helper(xprv, &path), - FLUTTER_RUST_BRIDGE_HANDLER.thread_pool(), + CUSTOM_HANDLER.thread_pool(), ) .await??; @@ -120,7 +120,7 @@ impl Bip32Ed25519XPrivateKey { let xpub = spawn_blocking_with( move || xpublic_key_helper(&xprv), - FLUTTER_RUST_BRIDGE_HANDLER.thread_pool(), + CUSTOM_HANDLER.thread_pool(), ) .await?; @@ -147,7 +147,7 @@ impl Bip32Ed25519XPrivateKey { let signature = spawn_blocking_with( move || sign_data_helper(&xprv, &data), - FLUTTER_RUST_BRIDGE_HANDLER.thread_pool(), + CUSTOM_HANDLER.thread_pool(), ) .await?; @@ -179,7 +179,7 @@ impl Bip32Ed25519XPrivateKey { let result = spawn_blocking_with( move || verify_signature_xprv_helper(&xprv, &data, &verified_sig), - FLUTTER_RUST_BRIDGE_HANDLER.thread_pool(), + CUSTOM_HANDLER.thread_pool(), ) .await?; @@ -278,7 +278,7 @@ impl Bip32Ed25519XPublicKey { let result = spawn_blocking_with( move || verify_signature_xpub_helper(&xpub, &data, &verified_sig), - FLUTTER_RUST_BRIDGE_HANDLER.thread_pool(), + CUSTOM_HANDLER.thread_pool(), ) .await?; @@ -334,7 +334,7 @@ pub async fn mnemonic_to_xprv( ) -> anyhow::Result { let xprv = spawn_blocking_with( move || mnemonic_to_xprv_helper(mnemonic, passphrase), - FLUTTER_RUST_BRIDGE_HANDLER.thread_pool(), + CUSTOM_HANDLER.thread_pool(), ) .await??; @@ -437,6 +437,25 @@ fn verify_signature_xpub_helper( xpub.verify(data, signature) } +/// A custom handler capable of creating a thread pool with customized `wasm_bindgen` +/// module name. +#[cfg(not(target_family = "wasm"))] +static CUSTOM_HANDLER: LazyLock> = + LazyLock::new(|| DefaultHandler::new_simple(SimpleThreadPool::default())); + +#[cfg(target_family = "wasm")] +thread_local! { + /// A custom thread pool with customized wasm_bindgen module name. + static THREAD_POOL: SimpleThreadPool = SimpleThreadPool::new(None, None, Some("key_derivation_wasm_bindgen".to_string()).into(), None) + .expect("failed to create ThreadPool"); +} + +/// A custom handler capable of creating a thread pool with customized wasm_bindgen module +/// name. +#[cfg(target_family = "wasm")] +static CUSTOM_HANDLER: LazyLock>> = + LazyLock::new(|| DefaultHandler::new_simple(&THREAD_POOL)); + #[cfg(test)] mod test { diff --git a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/lib.rs b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/lib.rs index 6af52ba41f00..88e99116dcc0 100644 --- a/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/lib.rs +++ b/catalyst_voices/packages/libs/catalyst_key_derivation/rust/src/lib.rs @@ -2,7 +2,6 @@ // cspell: words uninlined -pub mod api; #[allow( clippy::missing_docs_in_private_items, clippy::unwrap_used, @@ -18,3 +17,4 @@ pub mod api; )] #[doc(hidden)] mod frb_generated; +pub mod key_derivation; diff --git a/catalyst_voices/utilities/uikit_example/Earthfile b/catalyst_voices/utilities/uikit_example/Earthfile index 3cb8235c79cc..44c233eba7a3 100644 --- a/catalyst_voices/utilities/uikit_example/Earthfile +++ b/catalyst_voices/utilities/uikit_example/Earthfile @@ -1,7 +1,7 @@ VERSION 0.8 IMPORT ../../ AS catalyst-voices -IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:v3.5.15 AS flutter-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/flutter:feat/catalyst-compression-setup AS flutter-ci # local-build-web - build web version of UIKit example. # Prefixed by "local" to make sure it's not auto triggered, the target was diff --git a/cspell.json b/cspell.json index 89f6cf36e2b7..5a041ded2db8 100644 --- a/cspell.json +++ b/cspell.json @@ -177,12 +177,12 @@ "**/generated/**", "**/openapi/**", "**/GeneratedPluginRegistrant.swift", - "catalyst_voices/packages/libs/catalyst_key_derivation/cargokit/**", + "catalyst_voices/packages/libs/**/cargokit/**", + "catalyst_voices/packages/libs/**/lib/src/rust/**", + "catalyst_voices/packages/internal/catalyst_voices_driver/lib/src/browser_extensions/**", "catalyst_voices/utilities/remote_widgets/example/**/**", "catalyst_voices/utilities/poc_local_storage/**/**", "**/*.svg", - "catalyst_voices/packages/libs/catalyst_key_derivation/lib/src/rust/**", - "catalyst_voices/packages/internal/catalyst_voices_driver/lib/src/browser_extensions/**", "catalyst_voices/docs/licenses/**", "catalyst_voices/docs/dependency_graph.dot", "catalyst-gateway/tests/api_tests/test_data/**", @@ -191,4 +191,4 @@ "earthfile", "github-actions-workflow" ] -} +} \ No newline at end of file diff --git a/docs/Earthfile b/docs/Earthfile index 2d33b9380695..7a333d6ac74f 100644 --- a/docs/Earthfile +++ b/docs/Earthfile @@ -1,6 +1,6 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/docs:v3.5.15 AS docs-ci +IMPORT github.com/input-output-hk/catalyst-ci/earthly/docs:feat/catalyst-compression-setup AS docs-ci IMPORT .. AS repo IMPORT ../catalyst-gateway AS catalyst-gateway diff --git a/justfile b/justfile index a0cde7b41b99..6c3461a28402 100644 --- a/justfile +++ b/justfile @@ -19,16 +19,16 @@ check-spelling: # Pre Push Checks - intended to be run by a git pre-push hook. pre-push: check-markdown check-spelling just catalyst-gateway/pre-push - # just catalyst_voices/pre-push just catalyst_voices/packages/libs/catalyst_key_derivation/rust/pre-push - earthly ./catalyst_voices+code-generator --platform=linux/amd64 --save_locally=true + just catalyst_voices/packages/libs/catalyst_compression/rust/pre-push + just catalyst_voices/pre-push # Run cat-gateway natively on preprod -run-cat-gateway: +run-cat-gateway: just catalyst-gateway/run-cat-gateway # Run cat-gateway natively on mainnet -run-cat-gateway-mainnet: +run-cat-gateway-mainnet: just catalyst-gateway/run-cat-gateway-mainnet # Live rebuilds and deploys the documentation locally. diff --git a/utilities/docs-preview/Earthfile b/utilities/docs-preview/Earthfile index b88012097be8..76cd001309f1 100644 --- a/utilities/docs-preview/Earthfile +++ b/utilities/docs-preview/Earthfile @@ -1,7 +1,6 @@ VERSION 0.8 -IMPORT github.com/input-output-hk/catalyst-ci/earthly/docs:v3.5.15 AS docs-ci - +IMPORT github.com/input-output-hk/catalyst-ci/earthly/docs:feat/catalyst-compression-setup AS docs-ci # update-docs-dev-script: get the latest docs dev script from CI. update-docs-dev-script: