diff --git a/FRW.xcodeproj/project.pbxproj b/FRW.xcodeproj/project.pbxproj index 3291df74..803eb5b9 100644 --- a/FRW.xcodeproj/project.pbxproj +++ b/FRW.xcodeproj/project.pbxproj @@ -28,8 +28,6 @@ 152EEC7328E4F61600C37A67 /* config.plist in Resources */ = {isa = PBXBuildFile; fileRef = 152EEC7228E4F61200C37A67 /* config.plist */; }; 152EEC7528E4F68100C37A67 /* Env.swift in Sources */ = {isa = PBXBuildFile; fileRef = 152EEC7428E4F68100C37A67 /* Env.swift */; }; 152EEC7628E4F68100C37A67 /* Env.swift in Sources */ = {isa = PBXBuildFile; fileRef = 152EEC7428E4F68100C37A67 /* Env.swift */; }; - 153839362CC2A5F9000E703C /* FlowWalletCore in Frameworks */ = {isa = PBXBuildFile; productRef = 153839352CC2A5F9000E703C /* FlowWalletCore */; }; - 153839382CC2A603000E703C /* FlowWalletCore in Frameworks */ = {isa = PBXBuildFile; productRef = 153839372CC2A603000E703C /* FlowWalletCore */; }; 1544C62828C812E700B6BA52 /* GoogleOAuth2.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1544C62728C812E500B6BA52 /* GoogleOAuth2.plist */; }; 1545705029461AB7004A278E /* MJRefresh in Frameworks */ = {isa = PBXBuildFile; productRef = 1545704F29461AB7004A278E /* MJRefresh */; }; 1545705229461ABD004A278E /* FMDB in Frameworks */ = {isa = PBXBuildFile; productRef = 1545705129461ABD004A278E /* FMDB */; }; @@ -918,6 +916,16 @@ 15F2444D28CB370D00C1090E /* LowerCapsuleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 15F2444028CB370D00C1090E /* LowerCapsuleView.swift */; }; 15F517FB28C6574C00504FDC /* Atlantis in Frameworks */ = {isa = PBXBuildFile; productRef = 15F517FA28C6574C00504FDC /* Atlantis */; }; 15F517FD28C6577000504FDC /* Atlantis in Frameworks */ = {isa = PBXBuildFile; productRef = 15F517FC28C6577000504FDC /* Atlantis */; }; + 4E03BE162C731E2300EF04DC /* KeyStoreLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE152C731E2300EF04DC /* KeyStoreLoginView.swift */; }; + 4E03BE172C731E2300EF04DC /* KeyStoreLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE152C731E2300EF04DC /* KeyStoreLoginView.swift */; }; + 4E03BE192C731F3500EF04DC /* ViewsInLoginModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE182C731F3500EF04DC /* ViewsInLoginModule.swift */; }; + 4E03BE1A2C731F3500EF04DC /* ViewsInLoginModule.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE182C731F3500EF04DC /* ViewsInLoginModule.swift */; }; + 4E03BE1C2C73222A00EF04DC /* KeyStoreLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE1B2C73222A00EF04DC /* KeyStoreLoginViewModel.swift */; }; + 4E03BE1D2C73222A00EF04DC /* KeyStoreLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE1B2C73222A00EF04DC /* KeyStoreLoginViewModel.swift */; }; + 4E03BE1F2C7334EC00EF04DC /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE1E2C7334EC00EF04DC /* TextView.swift */; }; + 4E03BE202C7334EC00EF04DC /* TextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE1E2C7334EC00EF04DC /* TextView.swift */; }; + 4E03BE222C7349E300EF04DC /* ImportAccountsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE212C7349E300EF04DC /* ImportAccountsView.swift */; }; + 4E03BE232C7349E300EF04DC /* ImportAccountsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E03BE212C7349E300EF04DC /* ImportAccountsView.swift */; }; 4E09A1EA2CC793FE0099606E /* EventTrack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E09A1E92CC793FE0099606E /* EventTrack.swift */; }; 4E09A1EB2CC793FE0099606E /* EventTrack.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E09A1E92CC793FE0099606E /* EventTrack.swift */; }; 4E09A1EE2CC794900099606E /* Mixpanel in Frameworks */ = {isa = PBXBuildFile; productRef = 4E09A1ED2CC794900099606E /* Mixpanel */; }; @@ -1043,6 +1051,11 @@ 4E3670072B2A8BB6000F2693 /* BackupUploadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3670062B2A8BB6000F2693 /* BackupUploadViewModel.swift */; }; 4E3670082B2A8BB6000F2693 /* BackupUploadViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3670062B2A8BB6000F2693 /* BackupUploadViewModel.swift */; }; 4E3682C72BB6A59100B24785 /* web3swift in Frameworks */ = {isa = PBXBuildFile; productRef = 4E3682C62BB6A59100B24785 /* web3swift */; }; + 4E3BFD592C93D28A00517FAB /* ImportUserNameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3BFD582C93D28A00517FAB /* ImportUserNameView.swift */; }; + 4E3BFD5A2C93D28A00517FAB /* ImportUserNameView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3BFD582C93D28A00517FAB /* ImportUserNameView.swift */; }; + 4E3BFD5C2C93D4EA00517FAB /* ImportUserNameViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3BFD5B2C93D4EA00517FAB /* ImportUserNameViewModel.swift */; }; + 4E3BFD5D2C93D4EA00517FAB /* ImportUserNameViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3BFD5B2C93D4EA00517FAB /* ImportUserNameViewModel.swift */; }; + 4E3BFD6A2C93F7EA00517FAB /* FlowWalletKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4E3BFD692C93F7EA00517FAB /* FlowWalletKit */; }; 4E3E5BE32875DC2000A5FA65 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3E5BE22875DC2000A5FA65 /* SearchBar.swift */; }; 4E3E5BE42875DC2000A5FA65 /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E3E5BE22875DC2000A5FA65 /* SearchBar.swift */; }; 4E411D7D2CB56AB3005AD540 /* BrowserSignTypedMessageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E411D7C2CB56AB3005AD540 /* BrowserSignTypedMessageView.swift */; }; @@ -1055,9 +1068,17 @@ 4E411DC02CB91C3A005AD540 /* MoveComponentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E411DBE2CB91C3A005AD540 /* MoveComponentView.swift */; }; 4E42DC5F2B22AEB700EF0A75 /* BackupListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E42DC5E2B22AEB700EF0A75 /* BackupListView.swift */; }; 4E42DC602B22AEB700EF0A75 /* BackupListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E42DC5E2B22AEB700EF0A75 /* BackupListView.swift */; }; - 4E4409232CBFB59A0041AC06 /* FlowWalletCore in Frameworks */ = {isa = PBXBuildFile; productRef = 4E4409222CBFB59A0041AC06 /* FlowWalletCore */; }; + 4E4409232CBFB59A0041AC06 /* (null) in Frameworks */ = {isa = PBXBuildFile; }; 4E4409272CC132480041AC06 /* BetterAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4409262CC132480041AC06 /* BetterAlertController.swift */; }; 4E4409282CC132480041AC06 /* BetterAlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4409262CC132480041AC06 /* BetterAlertController.swift */; }; + 4E4A6B642CA68D7100231A85 /* SeedPhraseLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B632CA68D6500231A85 /* SeedPhraseLoginView.swift */; }; + 4E4A6B652CA68D7100231A85 /* SeedPhraseLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B632CA68D6500231A85 /* SeedPhraseLoginView.swift */; }; + 4E4A6B672CA68E8100231A85 /* SeedPhraseLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B662CA68E8100231A85 /* SeedPhraseLoginViewModel.swift */; }; + 4E4A6B682CA68E8100231A85 /* SeedPhraseLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B662CA68E8100231A85 /* SeedPhraseLoginViewModel.swift */; }; + 4E4A6B6A2CA6E20300231A85 /* SeedPhrase+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B692CA6E1F000231A85 /* SeedPhrase+Add.swift */; }; + 4E4A6B6B2CA6E20300231A85 /* SeedPhrase+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B692CA6E1F000231A85 /* SeedPhrase+Add.swift */; }; + 4E4A6B6D2CA6ECEF00231A85 /* KeyProtocol+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B6C2CA6ECEF00231A85 /* KeyProtocol+Add.swift */; }; + 4E4A6B6E2CA6ECEF00231A85 /* KeyProtocol+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4A6B6C2CA6ECEF00231A85 /* KeyProtocol+Add.swift */; }; 4E4EC7B42C09AA3C00325BF5 /* BalanceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4EC7B32C09AA3C00325BF5 /* BalanceProvider.swift */; }; 4E4EC7B52C09AA3C00325BF5 /* BalanceProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4EC7B32C09AA3C00325BF5 /* BalanceProvider.swift */; }; 4E4F794C2831FCB700ED027C /* ImageName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E4F794A2831FCB700ED027C /* ImageName.swift */; }; @@ -1191,9 +1212,15 @@ 4EA0D0A72A7A5AED004C6A19 /* FRWAPI+ChildAccount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA0D0A52A7A5AED004C6A19 /* FRWAPI+ChildAccount.swift */; }; 4EA0D0AC2A7A61B5004C6A19 /* AppPlaceholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA0D0AB2A7A61B5004C6A19 /* AppPlaceholder.swift */; }; 4EA0D0AD2A7A61B5004C6A19 /* AppPlaceholder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA0D0AB2A7A61B5004C6A19 /* AppPlaceholder.swift */; }; + 4EA106732C738BB300555350 /* PrivateKeyLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA106722C738BB300555350 /* PrivateKeyLoginView.swift */; }; + 4EA106742C738BB300555350 /* PrivateKeyLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA106722C738BB300555350 /* PrivateKeyLoginView.swift */; }; + 4EA106762C738BEC00555350 /* PrivateKeyLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA106752C738BEC00555350 /* PrivateKeyLoginViewModel.swift */; }; + 4EA106772C738BEC00555350 /* PrivateKeyLoginViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EA106752C738BEC00555350 /* PrivateKeyLoginViewModel.swift */; }; 4EA820C7286354E200DF36A8 /* remote_config_defaults.plist in Resources */ = {isa = PBXBuildFile; fileRef = 4EA820C5286354E200DF36A8 /* remote_config_defaults.plist */; }; 4EAD14162B61DD940076B318 /* MultiBackupPasskeyTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EAD14152B61DD940076B318 /* MultiBackupPasskeyTarget.swift */; }; 4EAD14172B61DD940076B318 /* MultiBackupPasskeyTarget.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EAD14152B61DD940076B318 /* MultiBackupPasskeyTarget.swift */; }; + 4EAD6A212CF6012200F1D9CF /* FlowWalletKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4EAD6A202CF6012200F1D9CF /* FlowWalletKit */; }; + 4EAD6A232CF6013200F1D9CF /* FlowWalletKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4EAD6A222CF6013200F1D9CF /* FlowWalletKit */; }; 4EAF31BA2845E501002AF489 /* NFTSegmentControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EAF31B82845E501002AF489 /* NFTSegmentControl.swift */; }; 4EAF31BF28464ACE002AF489 /* BackAppBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EAF31BD28464ACE002AF489 /* BackAppBar.swift */; }; 4EAFBD452C0FF72B0031EA20 /* CreateProfileWaitingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EAFBD442C0FF72B0031EA20 /* CreateProfileWaitingView.swift */; }; @@ -1301,18 +1328,6 @@ 4ECF45352BB4F20E00F5B3B7 /* WalletHomeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ECF45332BB4F20E00F5B3B7 /* WalletHomeView.swift */; }; 4ED041F72C7C25DF0016848A /* WalletNewsHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED041F62C7C25DF0016848A /* WalletNewsHandler.swift */; }; 4ED041F82C7C25DF0016848A /* WalletNewsHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED041F62C7C25DF0016848A /* WalletNewsHandler.swift */; }; - 4ED06E372ABABABA00F49A1A /* SwiftProtobuf.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */; }; - 4ED06E382ABABABA00F49A1A /* SwiftProtobuf.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */; }; - 4ED06E3B2ABABABA00F49A1A /* WalletCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */; }; - 4ED06E3C2ABABABA00F49A1A /* WalletCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */; }; - 4ED06E3F2ABABB9400F49A1A /* SwiftProtobuf.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */; }; - 4ED06E402ABABB9400F49A1A /* SwiftProtobuf.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4ED06E422ABABB9500F49A1A /* WalletCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */; }; - 4ED06E432ABABB9500F49A1A /* WalletCore.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4ED06E442ABABB9900F49A1A /* WalletCore.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */; }; - 4ED06E452ABABB9900F49A1A /* WalletCore.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 4ED06E462ABABB9D00F49A1A /* SwiftProtobuf.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */; }; - 4ED06E472ABABB9D00F49A1A /* SwiftProtobuf.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 4ED21F38284E2E6E00320AD0 /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED21F36284E2E6E00320AD0 /* ShareSheet.swift */; }; 4ED21F42284E4C0A00320AD0 /* NFTShareView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED21F40284E4C0A00320AD0 /* NFTShareView.swift */; }; 4ED21F45284E5A6700320AD0 /* DashLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED21F43284E5A6700320AD0 /* DashLine.swift */; }; @@ -1331,6 +1346,15 @@ 4ED9C5C42C05CE12004276D1 /* WalletListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED9C5C32C05CE12004276D1 /* WalletListView.swift */; }; 4ED9C5C52C05CE12004276D1 /* WalletListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ED9C5C32C05CE12004276D1 /* WalletListView.swift */; }; 4EDDAA24285F5DC600EB8AF9 /* NFTAddCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDDAA22285F5DC600EB8AF9 /* NFTAddCollectionView.swift */; }; + 4EDE41EB2CF5944500A6EAB3 /* FlowWalletKit in Frameworks */ = {isa = PBXBuildFile; productRef = 4EDE41EA2CF5944500A6EAB3 /* FlowWalletKit */; }; + 4EDEA7622C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA7612C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift */; }; + 4EDEA7632C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA7612C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift */; }; + 4EDEA7652C90305B00DE76B6 /* SecureEnclaveMigration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA7642C90305B00DE76B6 /* SecureEnclaveMigration.swift */; }; + 4EDEA7662C90305B00DE76B6 /* SecureEnclaveMigration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA7642C90305B00DE76B6 /* SecureEnclaveMigration.swift */; }; + 4EDEA7682C9044E800DE76B6 /* PKWallet+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA7672C9044E800DE76B6 /* PKWallet+Add.swift */; }; + 4EDEA7692C9044E800DE76B6 /* PKWallet+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA7672C9044E800DE76B6 /* PKWallet+Add.swift */; }; + 4EDEA76B2C904F0300DE76B6 /* ErrorStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA76A2C904F0300DE76B6 /* ErrorStatus.swift */; }; + 4EDEA76C2C904F0300DE76B6 /* ErrorStatus.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EDEA76A2C904F0300DE76B6 /* ErrorStatus.swift */; }; 4EE6FA892B19677B006A827B /* SyncConfirmViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE6FA882B19677B006A827B /* SyncConfirmViewModel.swift */; }; 4EE6FA8A2B19677B006A827B /* SyncConfirmViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE6FA882B19677B006A827B /* SyncConfirmViewModel.swift */; }; 4EE6FA8C2B196B16006A827B /* Dictionary+Add.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EE6FA8B2B196B16006A827B /* Dictionary+Add.swift */; }; @@ -1341,6 +1365,8 @@ 4EEDA38D2B4D788A0000D382 /* MultiBackupDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEDA38C2B4D788A0000D382 /* MultiBackupDetailViewModel.swift */; }; 4EEDA38E2B4D788A0000D382 /* MultiBackupDetailViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEDA38C2B4D788A0000D382 /* MultiBackupDetailViewModel.swift */; }; 4EEE9DC72BD243DB00685AAA /* FirebaseAnalytics in Frameworks */ = {isa = PBXBuildFile; productRef = 4EEE9DC62BD243DB00685AAA /* FirebaseAnalytics */; }; + 4EEEF0722D05FE66008393E9 /* EventTrack+Dev.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEEF0712D05FE66008393E9 /* EventTrack+Dev.swift */; }; + 4EEEF0732D05FE66008393E9 /* EventTrack+Dev.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EEEF0712D05FE66008393E9 /* EventTrack+Dev.swift */; }; 4EF0B8DC2C2CF914003BFDD6 /* WalletNotificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF0B8DB2C2CF914003BFDD6 /* WalletNotificationView.swift */; }; 4EF0B8DD2C2CF914003BFDD6 /* WalletNotificationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF0B8DB2C2CF914003BFDD6 /* WalletNotificationView.swift */; }; 4EF0B8E62C2E4C83003BFDD6 /* WallpaperView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4EF0B8E52C2E4C83003BFDD6 /* WallpaperView.swift */; }; @@ -1937,8 +1963,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 4ED06E472ABABB9D00F49A1A /* SwiftProtobuf.xcframework in Embed Frameworks */, - 4ED06E452ABABB9900F49A1A /* WalletCore.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -1949,8 +1973,6 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 4ED06E402ABABB9400F49A1A /* SwiftProtobuf.xcframework in Embed Frameworks */, - 4ED06E432ABABB9500F49A1A /* WalletCore.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -2357,6 +2379,11 @@ 15F2443F28CB370D00C1090E /* CapusuleGroupView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CapusuleGroupView.swift; sourceTree = ""; }; 15F2444028CB370D00C1090E /* LowerCapsuleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LowerCapsuleView.swift; sourceTree = ""; }; 15F43D112753B4F6004F6F49 /* PageIndictor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PageIndictor.swift; sourceTree = ""; }; + 4E03BE152C731E2300EF04DC /* KeyStoreLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyStoreLoginView.swift; sourceTree = ""; }; + 4E03BE182C731F3500EF04DC /* ViewsInLoginModule.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewsInLoginModule.swift; sourceTree = ""; }; + 4E03BE1B2C73222A00EF04DC /* KeyStoreLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyStoreLoginViewModel.swift; sourceTree = ""; }; + 4E03BE1E2C7334EC00EF04DC /* TextView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextView.swift; sourceTree = ""; }; + 4E03BE212C7349E300EF04DC /* ImportAccountsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportAccountsView.swift; sourceTree = ""; }; 4E0860492AB8AF9B0037F582 /* FRWWidgetsExtension.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = FRWWidgetsExtension.entitlements; sourceTree = ""; }; 4E08604A2AB8AF9B0037F582 /* FRWDevWidgetsExtension.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = FRWDevWidgetsExtension.entitlements; sourceTree = ""; }; 4E0860512AB8BB1D0037F582 /* FRW.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = FRW.entitlements; sourceTree = ""; }; @@ -2410,6 +2437,8 @@ 4E34447E282EC1C40040E5A4 /* NFTCollectionCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTCollectionCard.swift; sourceTree = ""; }; 4E3670032B2A8B32000F2693 /* BackupUploadView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupUploadView.swift; sourceTree = ""; }; 4E3670062B2A8BB6000F2693 /* BackupUploadViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupUploadViewModel.swift; sourceTree = ""; }; + 4E3BFD582C93D28A00517FAB /* ImportUserNameView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportUserNameView.swift; sourceTree = ""; }; + 4E3BFD5B2C93D4EA00517FAB /* ImportUserNameViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportUserNameViewModel.swift; sourceTree = ""; }; 4E3E5BE22875DC2000A5FA65 /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = ""; }; 4E411D7C2CB56AB3005AD540 /* BrowserSignTypedMessageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserSignTypedMessageView.swift; sourceTree = ""; }; 4E411D7F2CB56AD0005AD540 /* BrowserSignTypedMessageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BrowserSignTypedMessageViewModel.swift; sourceTree = ""; }; @@ -2417,6 +2446,10 @@ 4E411DBE2CB91C3A005AD540 /* MoveComponentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoveComponentView.swift; sourceTree = ""; }; 4E42DC5E2B22AEB700EF0A75 /* BackupListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BackupListView.swift; sourceTree = ""; }; 4E4409262CC132480041AC06 /* BetterAlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BetterAlertController.swift; sourceTree = ""; }; + 4E4A6B632CA68D6500231A85 /* SeedPhraseLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedPhraseLoginView.swift; sourceTree = ""; }; + 4E4A6B662CA68E8100231A85 /* SeedPhraseLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SeedPhraseLoginViewModel.swift; sourceTree = ""; }; + 4E4A6B692CA6E1F000231A85 /* SeedPhrase+Add.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SeedPhrase+Add.swift"; sourceTree = ""; }; + 4E4A6B6C2CA6ECEF00231A85 /* KeyProtocol+Add.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "KeyProtocol+Add.swift"; sourceTree = ""; }; 4E4EC7B32C09AA3C00325BF5 /* BalanceProvider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BalanceProvider.swift; sourceTree = ""; }; 4E4F794A2831FCB700ED027C /* ImageName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageName.swift; sourceTree = ""; }; 4E4F794D2831FF0F00ED027C /* NFTSquareCard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTSquareCard.swift; sourceTree = ""; }; @@ -2487,6 +2520,8 @@ 4EA0D0A22A7A357E004C6A19 /* LLSegmenControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LLSegmenControl.swift; sourceTree = ""; }; 4EA0D0A52A7A5AED004C6A19 /* FRWAPI+ChildAccount.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FRWAPI+ChildAccount.swift"; sourceTree = ""; }; 4EA0D0AB2A7A61B5004C6A19 /* AppPlaceholder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppPlaceholder.swift; sourceTree = ""; }; + 4EA106722C738BB300555350 /* PrivateKeyLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivateKeyLoginView.swift; sourceTree = ""; }; + 4EA106752C738BEC00555350 /* PrivateKeyLoginViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PrivateKeyLoginViewModel.swift; sourceTree = ""; }; 4EA820C5286354E200DF36A8 /* remote_config_defaults.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = remote_config_defaults.plist; sourceTree = ""; }; 4EAD14152B61DD940076B318 /* MultiBackupPasskeyTarget.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiBackupPasskeyTarget.swift; sourceTree = ""; }; 4EAF31B82845E501002AF489 /* NFTSegmentControl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTSegmentControl.swift; sourceTree = ""; }; @@ -2550,8 +2585,6 @@ 4ECE28C62AE20DBF0035787D /* AccountKeyViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountKeyViewModel.swift; sourceTree = ""; }; 4ECF45332BB4F20E00F5B3B7 /* WalletHomeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletHomeView.swift; sourceTree = ""; }; 4ED041F62C7C25DF0016848A /* WalletNewsHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletNewsHandler.swift; sourceTree = ""; }; - 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = SwiftProtobuf.xcframework; path = FRW/Library/SwiftProtobuf.xcframework; sourceTree = ""; }; - 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = WalletCore.xcframework; path = FRW/Library/WalletCore.xcframework; sourceTree = ""; }; 4ED21F36284E2E6E00320AD0 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheet.swift; sourceTree = ""; }; 4ED21F40284E4C0A00320AD0 /* NFTShareView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTShareView.swift; sourceTree = ""; }; 4ED21F43284E5A6700320AD0 /* DashLine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashLine.swift; sourceTree = ""; }; @@ -2563,12 +2596,17 @@ 4ED9C5BD2C0487D1004276D1 /* Utils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Utils.swift; sourceTree = ""; }; 4ED9C5C32C05CE12004276D1 /* WalletListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletListView.swift; sourceTree = ""; }; 4EDDAA22285F5DC600EB8AF9 /* NFTAddCollectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTAddCollectionView.swift; sourceTree = ""; }; + 4EDEA7612C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SecureEnclaveKey+Add.swift"; sourceTree = ""; }; + 4EDEA7642C90305B00DE76B6 /* SecureEnclaveMigration.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SecureEnclaveMigration.swift; sourceTree = ""; }; + 4EDEA7672C9044E800DE76B6 /* PKWallet+Add.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PKWallet+Add.swift"; sourceTree = ""; }; + 4EDEA76A2C904F0300DE76B6 /* ErrorStatus.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ErrorStatus.swift; sourceTree = ""; }; 4EE6FA882B19677B006A827B /* SyncConfirmViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncConfirmViewModel.swift; sourceTree = ""; }; 4EE6FA8B2B196B16006A827B /* Dictionary+Add.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "Dictionary+Add.swift"; sourceTree = ""; }; 4EE8E4942834DC7100DFEF59 /* NFTModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTModel.swift; sourceTree = ""; }; 4EE8E4972835EAF100DFEF59 /* NFTFavoriteView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTFavoriteView.swift; sourceTree = ""; }; 4EE8E49A283626D000DFEF59 /* NFTLoading.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NFTLoading.swift; sourceTree = ""; }; 4EEDA38C2B4D788A0000D382 /* MultiBackupDetailViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiBackupDetailViewModel.swift; sourceTree = ""; }; + 4EEEF0712D05FE66008393E9 /* EventTrack+Dev.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EventTrack+Dev.swift"; sourceTree = ""; }; 4EF0B8DB2C2CF914003BFDD6 /* WalletNotificationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WalletNotificationView.swift; sourceTree = ""; }; 4EF0B8E52C2E4C83003BFDD6 /* WallpaperView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperView.swift; sourceTree = ""; }; 4EF3FADF2A7B8D8400D7B09B /* FlowModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FlowModel.swift; sourceTree = ""; }; @@ -2897,7 +2935,6 @@ buildActionMask = 2147483647; files = ( 150D3E392A58719A00F7F2DC /* QRCode in Frameworks */, - 4ED06E442ABABB9900F49A1A /* WalletCore.xcframework in Frameworks */, 4E2FA6B62CF4177C00D46EA7 /* WalletConnectPush in Frameworks */, 156AC7AB27802F9D00ED5E3E /* GoogleAPIClientForREST_Drive in Frameworks */, 154B891A276A1EEB00780E93 /* Flow in Frameworks */, @@ -2914,6 +2951,7 @@ 6AE1D48E287690E7000FA0B7 /* SwiftUIPager in Frameworks */, 6AADFB54293CB7F800E5D6B2 /* FirebaseAnalyticsWithoutAdIdSupport in Frameworks */, 4E3682C72BB6A59100B24785 /* web3swift in Frameworks */, + 4EAD6A232CF6013200F1D9CF /* FlowWalletKit in Frameworks */, 15D6D8F628CBAEE000CBA152 /* FancyScrollView in Frameworks */, 152BB09628AE900C00B2A2AA /* Lottie in Frameworks */, 6AEA375A28A51792004545D4 /* MJRefresh in Frameworks */, @@ -2933,7 +2971,6 @@ 15DC1D53278165DB000B187A /* Haneke in Frameworks */, 4E5D4FAE2AEF9A7400DC419B /* DeviceGuru in Frameworks */, 156AC7AD27802FAC00ED5E3E /* GoogleAPIClientForRESTCore in Frameworks */, - 153839382CC2A603000E703C /* FlowWalletCore in Frameworks */, 4ED6DD10285A22A800105133 /* IrregularGradient in Frameworks */, 154B891D276A1EEB00780E93 /* FirebaseCrashlytics in Frameworks */, 6A46754828F2D46500F705A8 /* FMDB in Frameworks */, @@ -2941,7 +2978,6 @@ 4EC56B2D281D3ED000246878 /* FirebaseRemoteConfig in Frameworks */, 15D57759277C23BF00045E79 /* CombineMoya in Frameworks */, 154B891F276A1EEB00780E93 /* FirebaseDynamicLinks in Frameworks */, - 4ED06E462ABABB9D00F49A1A /* SwiftProtobuf.xcframework in Frameworks */, 4E2FA6B02CF4177C00D46EA7 /* WalletConnectNetworking in Frameworks */, 157046752793241A00D1747B /* Kingfisher in Frameworks */, 6A204C6C2860784B00D0D3A4 /* FirebaseStorage in Frameworks */, @@ -2977,6 +3013,7 @@ 6A46754628F2D44800F705A8 /* FMDB in Frameworks */, 4E2FA6982CF40FE700D46EA7 /* WalletConnectPairing in Frameworks */, 15D3BA6B28C3B1EE009AEA6E /* ColorKit in Frameworks */, + 4E3BFD6A2C93F7EA00517FAB /* FlowWalletKit in Frameworks */, 15F517FB28C6574C00504FDC /* Atlantis in Frameworks */, 4E2FA6902CF40FE700D46EA7 /* WalletConnect in Frameworks */, 15C58C402868A4EE00BD4FC6 /* FirebaseAuth in Frameworks */, @@ -2990,8 +3027,7 @@ 4E1DD8C72B1622030055E510 /* Instabug in Frameworks */, 15C58C422868A4EE00BD4FC6 /* UIKit.framework in Frameworks */, 6A0454CD28768E9E00A9131C /* SwiftUIPager in Frameworks */, - 4ED06E422ABABB9500F49A1A /* WalletCore.xcframework in Frameworks */, - 4E4409232CBFB59A0041AC06 /* FlowWalletCore in Frameworks */, + 4E4409232CBFB59A0041AC06 /* (null) in Frameworks */, 152BB09428AE8FD100B2A2AA /* Lottie in Frameworks */, 6AEA374028A49DBE004545D4 /* MJRefresh in Frameworks */, 4E131A9C2CA1739A002B258D /* PocketSVG in Frameworks */, @@ -3008,7 +3044,6 @@ 15C58C492868A4EE00BD4FC6 /* KeychainAccess in Frameworks */, 15C58C4A2868A4EE00BD4FC6 /* Haneke in Frameworks */, 4E947C922BBEB2E300E87A85 /* web3swift in Frameworks */, - 153839362CC2A5F9000E703C /* FlowWalletCore in Frameworks */, 15CC8A6128C4E0FD001D2696 /* RiveRuntime in Frameworks */, 15C58C4B2868A4EE00BD4FC6 /* GoogleAPIClientForRESTCore in Frameworks */, 155E372E28D3AD4700834C30 /* Highlightr in Frameworks */, @@ -3019,7 +3054,6 @@ 4E2FA6942CF40FE700D46EA7 /* WalletConnectNetworking in Frameworks */, 15C58C502868A4EE00BD4FC6 /* FirebaseRemoteConfig in Frameworks */, 15C58C512868A4EE00BD4FC6 /* CombineMoya in Frameworks */, - 4ED06E3F2ABABB9400F49A1A /* SwiftProtobuf.xcframework in Frameworks */, 15C58C522868A4EE00BD4FC6 /* FirebaseDynamicLinks in Frameworks */, 15C58C532868A4EE00BD4FC6 /* Kingfisher in Frameworks */, 15C58C542868A4EE00BD4FC6 /* FirebaseStorage in Frameworks */, @@ -3028,7 +3062,9 @@ 15C58C562868A4EE00BD4FC6 /* SkeletonUI in Frameworks */, 15C58C572868A4EE00BD4FC6 /* Introspect in Frameworks */, 15D6D8F428CBAEBD00CBA152 /* FancyScrollView in Frameworks */, + 4EDE41EB2CF5944500A6EAB3 /* FlowWalletKit in Frameworks */, 4E5F2F112C12B1C2008589C4 /* CrowdinSDK in Frameworks */, + 4EAD6A212CF6012200F1D9CF /* FlowWalletKit in Frameworks */, 4E660F1C2C80B42F00E5239E /* CollectionViewPagingLayout in Frameworks */, 15C58C582868A4EE00BD4FC6 /* SwiftUIX in Frameworks */, 6AC1AE69289BACDF00F76C7A /* SnapKit in Frameworks */, @@ -3064,9 +3100,7 @@ buildActionMask = 2147483647; files = ( 6A0C6E3229542EC9005F0EF6 /* Kingfisher in Frameworks */, - 4ED06E3C2ABABABA00F49A1A /* WalletCore.xcframework in Frameworks */, 6A0C6E1D29542DFC005F0EF6 /* SwiftUI.framework in Frameworks */, - 4ED06E382ABABABA00F49A1A /* SwiftProtobuf.xcframework in Frameworks */, 6A0C6E1C29542DFC005F0EF6 /* WidgetKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3076,9 +3110,7 @@ buildActionMask = 2147483647; files = ( 6A9DFBDA2951A1F900E10EAC /* Kingfisher in Frameworks */, - 4ED06E3B2ABABABA00F49A1A /* WalletCore.xcframework in Frameworks */, 6A9DFBC729519D9800E10EAC /* SwiftUI.framework in Frameworks */, - 4ED06E372ABABABA00F49A1A /* SwiftProtobuf.xcframework in Frameworks */, 6A9DFBC529519D9800E10EAC /* WidgetKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -3120,6 +3152,7 @@ 1507C7EA2755FCB100890C5D /* Wallet */ = { isa = PBXGroup; children = ( + 4EDEA7602C8FE39300DE76B6 /* FlowWalletKit */, 4E95322C2CD2080900AAECD1 /* CustomToken */, 4ED041F52C7C25C10016848A /* Message */, 4EAFBD432C0FF7020031EA20 /* CreateAccount */, @@ -3567,6 +3600,12 @@ 4E1DD8D02B162F9B0055E510 /* SyncConfirmView.swift */, 4E90592E2B1792F10029FC66 /* SyncAddDeviceView.swift */, 4ED40ADA2B1A0B4700C25EBF /* SyncStatusView.swift */, + 4E4A6B632CA68D6500231A85 /* SeedPhraseLoginView.swift */, + 4E03BE152C731E2300EF04DC /* KeyStoreLoginView.swift */, + 4EA106722C738BB300555350 /* PrivateKeyLoginView.swift */, + 4E03BE212C7349E300EF04DC /* ImportAccountsView.swift */, + 4E03BE182C731F3500EF04DC /* ViewsInLoginModule.swift */, + 4E3BFD582C93D28A00517FAB /* ImportUserNameView.swift */, ); path = Login; sourceTree = ""; @@ -3600,6 +3639,7 @@ 1570467D2793EBA100D1747B /* GithubEndpoint.swift */, 15DC1D5727816660000B187A /* Network.swift */, 156E84A8281CDE7500415896 /* FlowNetwork.swift */, + 4EDEA76A2C904F0300DE76B6 /* ErrorStatus.swift */, ); path = Network; sourceTree = ""; @@ -3632,8 +3672,6 @@ 15B1A67A276A2D670006B621 /* Frameworks */ = { isa = PBXGroup; children = ( - 4ED06E332ABABABA00F49A1A /* SwiftProtobuf.xcframework */, - 4ED06E342ABABABA00F49A1A /* WalletCore.xcframework */, 4E9BFF5C2867631300601339 /* UIKit.framework */, 15C6F4B9278A8965003CADF2 /* AuthenticationServices.framework */, 6A9DFBC429519D9800E10EAC /* WidgetKit.framework */, @@ -4590,6 +4628,7 @@ 6ADA4C0028F180C400C7B341 /* UIImageView.swift */, 6A46754C28F2D70400F705A8 /* FileManager.swift */, 6A9CFE472A6931F900AEA847 /* UIDevice.swift */, + 4E03BE1E2C7334EC00EF04DC /* TextView.swift */, ); path = Extension; sourceTree = ""; @@ -4681,6 +4720,10 @@ 4EC4EF3A2B103A2B00217618 /* SyncAccountViewModel.swift */, 4E2381032B18707D00756874 /* SyncAddDeviceViewModel.swift */, 4EE6FA882B19677B006A827B /* SyncConfirmViewModel.swift */, + 4E03BE1B2C73222A00EF04DC /* KeyStoreLoginViewModel.swift */, + 4E4A6B662CA68E8100231A85 /* SeedPhraseLoginViewModel.swift */, + 4EA106752C738BEC00555350 /* PrivateKeyLoginViewModel.swift */, + 4E3BFD5B2C93D4EA00517FAB /* ImportUserNameViewModel.swift */, ); path = ViewModel; sourceTree = ""; @@ -4803,6 +4846,7 @@ 4E09A1F72CC7A12B0099606E /* EventTrack+Backup.swift */, 4E09A1FA2CC7A1FD0099606E /* EventTrack+Transaction.swift */, 4E09A1FD2CC7A5800099606E /* EventTrack+Account.swift */, + 4EEEF0712D05FE66008393E9 /* EventTrack+Dev.swift */, ); path = Track; sourceTree = ""; @@ -5186,6 +5230,18 @@ path = FloatingButton; sourceTree = ""; }; + 4EDEA7602C8FE39300DE76B6 /* FlowWalletKit */ = { + isa = PBXGroup; + children = ( + 4E4A6B692CA6E1F000231A85 /* SeedPhrase+Add.swift */, + 4EDEA7612C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift */, + 4EDEA7642C90305B00DE76B6 /* SecureEnclaveMigration.swift */, + 4EDEA7672C9044E800DE76B6 /* PKWallet+Add.swift */, + 4E4A6B6C2CA6ECEF00231A85 /* KeyProtocol+Add.swift */, + ); + path = FlowWalletKit; + sourceTree = ""; + }; 4EE8E4932834DC5C00DFEF59 /* NFTModel */ = { isa = PBXGroup; children = ( @@ -6206,7 +6262,6 @@ 4E2E8CBC2C61B9A800095D5B /* LogView */, 4E660F1D2C80B43E00E5239E /* CollectionViewPagingLayout */, 4E131A992CA17389002B258D /* PocketSVG */, - 153839372CC2A603000E703C /* FlowWalletCore */, 4E09A1EF2CC7949E0099606E /* Mixpanel */, 4E2FA6A72CF410BF00D46EA7 /* ReownRouter */, 4E2FA6A92CF4177C00D46EA7 /* ReownWalletKit */, @@ -6217,6 +6272,7 @@ 4E2FA6B32CF4177C00D46EA7 /* WalletConnectPairing */, 4E2FA6B52CF4177C00D46EA7 /* WalletConnectPush */, 4E2FA6B72CF4177C00D46EA7 /* WalletConnectVerify */, + 4EAD6A222CF6013200F1D9CF /* FlowWalletKit */, ); productName = "FlowReferenceWallet-lite"; productReference = 154B8928276A1EEB00780E93 /* FRW-dev.app */; @@ -6294,9 +6350,9 @@ 4E2E8CBE2C61BB2300095D5B /* LogView */, 4E660F1B2C80B42F00E5239E /* CollectionViewPagingLayout */, 4E131A9B2CA1739A002B258D /* PocketSVG */, - 4E4409222CBFB59A0041AC06 /* FlowWalletCore */, - 153839352CC2A5F9000E703C /* FlowWalletCore */, + 4E3BFD692C93F7EA00517FAB /* FlowWalletKit */, 4E09A1ED2CC794900099606E /* Mixpanel */, + 4EDE41EA2CF5944500A6EAB3 /* FlowWalletKit */, 4E2FA68D2CF40FE700D46EA7 /* ReownWalletKit */, 4E2FA68F2CF40FE700D46EA7 /* WalletConnect */, 4E2FA6912CF40FE700D46EA7 /* WalletConnectIdentity */, @@ -6306,6 +6362,7 @@ 4E2FA6992CF40FE700D46EA7 /* WalletConnectPush */, 4E2FA69B2CF40FE700D46EA7 /* WalletConnectVerify */, 4E2FA6A52CF410B700D46EA7 /* ReownRouter */, + 4EAD6A202CF6012200F1D9CF /* FlowWalletKit */, ); productName = "FlowReferenceWallet-lite"; productReference = 15C58C6D2868A4EE00BD4FC6 /* FRW.app */; @@ -6478,9 +6535,9 @@ 4E2E8CBB2C61B9A800095D5B /* XCRemoteSwiftPackageReference "LogView" */, 4E660F1A2C80B42F00E5239E /* XCRemoteSwiftPackageReference "CollectionViewPagingLayout" */, 4E131A982CA17389002B258D /* XCRemoteSwiftPackageReference "PocketSVG" */, - 153839342CC2A5F9000E703C /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */, 4E09A1EC2CC794900099606E /* XCRemoteSwiftPackageReference "mixpanel-swift" */, 4E2FA68C2CF40EAB00D46EA7 /* XCRemoteSwiftPackageReference "reown-swift" */, + 4EAD6A1F2CF6012200F1D9CF /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */, ); productRefGroup = 15EC9DEF274FD1FC00F70CD9 /* Products */; projectDirPath = ""; @@ -6834,6 +6891,7 @@ 6A35EADA2859BD36005A85B8 /* EditAvatarView.swift in Sources */, 15DC20C727819C56000B187A /* VCloseButtonState.swift in Sources */, 15DC214927819C56000B187A /* VTabNavigationViewModel.swift in Sources */, + 4EA106742C738BB300555350 /* PrivateKeyLoginView.swift in Sources */, 4E1B2FE42BA038C000F30379 /* DevicesInfoViewModel.swift in Sources */, 15DC20FF27819C56000B187A /* VStepperModel.swift in Sources */, 6AA78E0428A0BF2C00FF6CF9 /* ScanHandler.swift in Sources */, @@ -6911,12 +6969,14 @@ 4EB2C6BA2B49D1A500EB899C /* MultiBackupDetailView.swift in Sources */, 6A62122D28ACC592002046CA /* UIImage.swift in Sources */, 6AF1F35E2869977B0084DF3D /* AddTokenView.swift in Sources */, + 4E4A6B6D2CA6ECEF00231A85 /* KeyProtocol+Add.swift in Sources */, 4EF0B8DD2C2CF914003BFDD6 /* WalletNotificationView.swift in Sources */, 6A4A235128365B31001F1FDE /* Image.swift in Sources */, 6AE1818028C5D69A009ADDDB /* FCLAuthzResponse.swift in Sources */, 4EFBB2B52BDB723600359FAA /* Migration.swift in Sources */, 1570467F2793EBA100D1747B /* GithubEndpoint.swift in Sources */, 6A65690C289128EE007D9BDA /* RouterNavigationController.swift in Sources */, + 4E03BE172C731E2300EF04DC /* KeyStoreLoginView.swift in Sources */, 1588331B28943D1D00142B35 /* Texts.swift in Sources */, 15DC20B727819C56000B187A /* VChevronButton.swift in Sources */, 4E30D80F2B161F3F00A49DAF /* ServiceConfig.swift in Sources */, @@ -6949,6 +7009,7 @@ 4EBDF2C62BFB9E9400E56968 /* SelectCollectionView.swift in Sources */, 15DC212327819C56000B187A /* VSpinnerDashed.swift in Sources */, 6A29114728CB377A003295BD /* TransactionListHandler.swift in Sources */, + 4E03BE1D2C73222A00EF04DC /* KeyStoreLoginViewModel.swift in Sources */, 4EB398002B4C073B00704F8A /* RestoreMultiInputMnemonicViewModel.swift in Sources */, 6A95CFB528B7747F00267F86 /* TransactionManager.swift in Sources */, 6A5F15F52A3182530035AC38 /* MultiAccountStorage.swift in Sources */, @@ -7019,6 +7080,7 @@ 4E1A8B732B71AADE00485EDE /* MultiBackupVerifyPinView.swift in Sources */, 4EB398032B4CDF5B00704F8A /* DangerousTipSheetView.swift in Sources */, 152EEC6E28E4F2AB00C37A67 /* TxTemplateRequest.swift in Sources */, + 4E3BFD5A2C93D28A00517FAB /* ImportUserNameView.swift in Sources */, 15DC208527819C56000B187A /* VLazyScrollViewHorizontal.swift in Sources */, 6ACFAB982939DD0E004DE47F /* SelectProviderViewModel.swift in Sources */, 15DC211327819C56000B187A /* VPageIndicatorInfinite.swift in Sources */, @@ -7050,6 +7112,8 @@ 15DC20BB27819C56000B187A /* VChevronButtonState.swift in Sources */, 6AD0B27228AE121200D03822 /* NFTUIKitFavItemCell.swift in Sources */, 6A7F6515289A85B2007188DC /* VerifyPinViewModel.swift in Sources */, + 4EEEF0722D05FE66008393E9 /* EventTrack+Dev.swift in Sources */, + 4E4A6B6B2CA6E20300231A85 /* SeedPhrase+Add.swift in Sources */, 154B8907276A1EEB00780E93 /* View.swift in Sources */, 6AE69E9728C085F0004D4709 /* BrowserActionBarView.swift in Sources */, 6AFED02A2906794000221F95 /* WalletSettingViewModel.swift in Sources */, @@ -7124,6 +7188,7 @@ 6A5006D328A7892D007FE3F5 /* NFTUIKitCollectionRegularItemCell.swift in Sources */, 15B1F6332786B1BB00847BB5 /* CheckboxStyle.swift in Sources */, 6A164F762845F1CB0026B31E /* IndexedScrollView.swift in Sources */, + 4E03BE202C7334EC00EF04DC /* TextView.swift in Sources */, 57EB45712CFFC36400393FF2 /* TokenType.swift in Sources */, 154B8909276A1EEB00780E93 /* Color.swift in Sources */, 6A41005D28E2F4DC002946CE /* SwapConfirmView.swift in Sources */, @@ -7165,10 +7230,12 @@ 6AEA375128A4FA52004545D4 /* NFTUIKitCollectionPinnedSectionView.swift in Sources */, 15DC213127819C56000B187A /* VWheelPickerModel.swift in Sources */, 4EA0D0A72A7A5AED004C6A19 /* FRWAPI+ChildAccount.swift in Sources */, + 4E03BE1A2C731F3500EF04DC /* ViewsInLoginModule.swift in Sources */, 4E9D8F142BF730E500E11CC7 /* MoveAssetsView.swift in Sources */, 15BA24B628C785B300755CBF /* GradientButton.swift in Sources */, 15DC20B127819C56000B187A /* VBaseButtonState.swift in Sources */, 15D9282D2783395F00382226 /* HUDManager.swift in Sources */, + 4E03BE232C7349E300EF04DC /* ImportAccountsView.swift in Sources */, 4E63A57F2B8D75F200BBD15F /* MoveTokenViewModel.swift in Sources */, 4E4F794C2831FCB700ED027C /* ImageName.swift in Sources */, 15B1F6302786AC9E00847BB5 /* BackupPasswordViewModel.swift in Sources */, @@ -7213,6 +7280,7 @@ 4E2677632C9BF613008729EB /* RecoveryPhraseBackupResultView.swift in Sources */, 15DC208F27819C56000B187A /* VSheetModel.swift in Sources */, 6A382E1F289BC93400163564 /* Shake.swift in Sources */, + 4EDEA7662C90305B00DE76B6 /* SecureEnclaveMigration.swift in Sources */, 15DC212927819C56000B187A /* VProgressBar.swift in Sources */, 15DC209B27819C56000B187A /* VBaseHeaderFooterView.swift in Sources */, 15DC213327819C56000B187A /* VSegmentedPickerModel.swift in Sources */, @@ -7291,6 +7359,7 @@ 15DC214F27819C56000B187A /* VNavigationViewNavigationBar.swift in Sources */, 6A164F602845F1CB0026B31E /* IndexBarBackground.swift in Sources */, 6AE1817A28C5A457009ADDDB /* FCLScripts.swift in Sources */, + 4EDEA7632C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift in Sources */, 1552DC652787063100EAA7D5 /* PinStackView.swift in Sources */, 15DC212D27819C56000B187A /* VWheelPicker.swift in Sources */, 15DC20EB27819C56000B187A /* VAccordionLayoutType.swift in Sources */, @@ -7361,6 +7430,7 @@ 6A8C8E7C2897B4A900335DCA /* Animation.swift in Sources */, 6AD6D7C82907D82D0037E206 /* WalletResetConfirmView.swift in Sources */, 6A12173929659F5E00BA0C3B /* SideMenuView.swift in Sources */, + 4E4A6B652CA68D7100231A85 /* SeedPhraseLoginView.swift in Sources */, 6ADA4BFF28F17CEA00C7B341 /* BrowserSearchDAppItemCell.swift in Sources */, 6AC965D92A6A312500E0AD1C /* NetworkSwitchPopView.swift in Sources */, 6AD6D7CB2907DDA00037E206 /* WalletResetConfirmViewModel.swift in Sources */, @@ -7432,6 +7502,7 @@ 15DC217127819C56000B187A /* VDialogButtons.swift in Sources */, 6A66AAAD2923F36E00FA766A /* StakeGuideView.swift in Sources */, 15DE22E0277DF37D00B5EE03 /* RestoreWalletView.swift in Sources */, + 4E4A6B682CA68E8100231A85 /* SeedPhraseLoginViewModel.swift in Sources */, 6A8D2A3B283C7C880041100E /* AddressBookViewModel.swift in Sources */, 4EB2C6CF2B4A7D5A00EB899C /* RestoreMultiAccountView.swift in Sources */, 15DC21BB27819C56000B187A /* View.CornerRadius.swift in Sources */, @@ -7456,6 +7527,7 @@ 15DC216B27819C56000B187A /* VHalfModalModel.swift in Sources */, 4EC56B2B281D385D00246878 /* FirebaseConfig.swift in Sources */, 15DC216127819C56000B187A /* VSideBar.swift in Sources */, + 4E3BFD5D2C93D4EA00517FAB /* ImportUserNameViewModel.swift in Sources */, 4EC56B31281FC57900246878 /* FlowQuery.swift in Sources */, 6AFE1D092A38540300824D5C /* AccountSwitchViewModel.swift in Sources */, 15DC21DD27819C56000B187A /* StateOpacities_PD.swift in Sources */, @@ -7541,6 +7613,7 @@ 15DC217327819C56000B187A /* VDialogModel.swift in Sources */, 15DC219327819C56000B187A /* VCheckBoxModel.swift in Sources */, 4EC26FCB2BFCB312001330DF /* EVMAssetProvider.swift in Sources */, + 4EA106772C738BEC00555350 /* PrivateKeyLoginViewModel.swift in Sources */, 6A9CFE492A6931F900AEA847 /* UIDevice.swift in Sources */, 156E84B2281CF01000415896 /* EventLoop+Future.swift in Sources */, 4EC26FD42BFE31C0001330DF /* MoveSingleNFTViewModel.swift in Sources */, @@ -7557,8 +7630,10 @@ 6AB5FBA328926C9100FA2261 /* iCloudAPI.swift in Sources */, 4EE6FA8D2B196B16006A827B /* Dictionary+Add.swift in Sources */, 4EC31183284508F200F711F5 /* NFTListView.swift in Sources */, + 4EDEA76C2C904F0300DE76B6 /* ErrorStatus.swift in Sources */, 154866F128D0EEF000D012B8 /* FlowTransactionTemplate.swift in Sources */, 4E6ED48C2BA9258D009906A5 /* EVMAccountManager.swift in Sources */, + 4EDEA7692C9044E800DE76B6 /* PKWallet+Add.swift in Sources */, 6A6C410528D849A000074DE9 /* InboxView.swift in Sources */, 154866ED28D0ECE400D012B8 /* FlixAuditEndpoint.swift in Sources */, ); @@ -7638,6 +7713,7 @@ 15C58ACA2868A4EE00BD4FC6 /* EditAvatarView.swift in Sources */, 15C58ACB2868A4EE00BD4FC6 /* VCloseButtonState.swift in Sources */, 15C58ACC2868A4EE00BD4FC6 /* VTabNavigationViewModel.swift in Sources */, + 4EA106732C738BB300555350 /* PrivateKeyLoginView.swift in Sources */, 4E1B2FE32BA038C000F30379 /* DevicesInfoViewModel.swift in Sources */, 15C58ACD2868A4EE00BD4FC6 /* VStepperModel.swift in Sources */, 6AA78E0328A0BF2C00FF6CF9 /* ScanHandler.swift in Sources */, @@ -7715,12 +7791,14 @@ 4EB2C6B92B49D1A500EB899C /* MultiBackupDetailView.swift in Sources */, 6A62122C28ACC592002046CA /* UIImage.swift in Sources */, 6AF1F35D2869977B0084DF3D /* AddTokenView.swift in Sources */, + 4E4A6B6E2CA6ECEF00231A85 /* KeyProtocol+Add.swift in Sources */, 4EF0B8DC2C2CF914003BFDD6 /* WalletNotificationView.swift in Sources */, 15C58AF42868A4EE00BD4FC6 /* Image.swift in Sources */, 6AE1817F28C5D69A009ADDDB /* FCLAuthzResponse.swift in Sources */, 4EFBB2B42BDB723600359FAA /* Migration.swift in Sources */, 15C58AF52868A4EE00BD4FC6 /* GithubEndpoint.swift in Sources */, 6A65690B289128EE007D9BDA /* RouterNavigationController.swift in Sources */, + 4E03BE162C731E2300EF04DC /* KeyStoreLoginView.swift in Sources */, 1588331A28943D1D00142B35 /* Texts.swift in Sources */, 15C58AF62868A4EE00BD4FC6 /* VChevronButton.swift in Sources */, 4E30D80E2B161F3F00A49DAF /* ServiceConfig.swift in Sources */, @@ -7753,6 +7831,7 @@ 4EBDF2C52BFB9E9400E56968 /* SelectCollectionView.swift in Sources */, 6A29114628CB377A003295BD /* TransactionListHandler.swift in Sources */, 6A95CFB428B7747F00267F86 /* TransactionManager.swift in Sources */, + 4E03BE1C2C73222A00EF04DC /* KeyStoreLoginViewModel.swift in Sources */, 4EB397FF2B4C073B00704F8A /* RestoreMultiInputMnemonicViewModel.swift in Sources */, 15D3BA6428C393CB009AEA6E /* MatrixRainView.swift in Sources */, 6A5F15F42A3182530035AC38 /* MultiAccountStorage.swift in Sources */, @@ -7823,6 +7902,7 @@ 4E1A8B722B71AADE00485EDE /* MultiBackupVerifyPinView.swift in Sources */, 4EB398022B4CDB7D00704F8A /* DangerousTipSheetView.swift in Sources */, 152EEC6D28E4F2AB00C37A67 /* TxTemplateRequest.swift in Sources */, + 4E3BFD592C93D28A00517FAB /* ImportUserNameView.swift in Sources */, 15C58B2D2868A4EE00BD4FC6 /* VPageIndicatorInfinite.swift in Sources */, 6ACFAB972939DD0E004DE47F /* SelectProviderViewModel.swift in Sources */, 6A6BD9DF287D5467009FA262 /* PlaceholderStyle.swift in Sources */, @@ -7854,6 +7934,8 @@ 6A7F6514289A85B2007188DC /* VerifyPinViewModel.swift in Sources */, 15C58B3E2868A4EE00BD4FC6 /* View.swift in Sources */, 6AE69E9628C085F0004D4709 /* BrowserActionBarView.swift in Sources */, + 4EEEF0732D05FE66008393E9 /* EventTrack+Dev.swift in Sources */, + 4E4A6B6A2CA6E20300231A85 /* SeedPhrase+Add.swift in Sources */, 15C58B3F2868A4EE00BD4FC6 /* SnapAlignment.swift in Sources */, 6AFED0292906794000221F95 /* WalletSettingViewModel.swift in Sources */, 15C58B402868A4EE00BD4FC6 /* CGPoint+Distance.swift in Sources */, @@ -7928,6 +8010,7 @@ 15C58B5A2868A4EE00BD4FC6 /* IndexedScrollView.swift in Sources */, 15C58B5B2868A4EE00BD4FC6 /* Color.swift in Sources */, 6A99343028C89FFF00E4EF59 /* BrowserSignMessageViewModel.swift in Sources */, + 4E03BE1F2C7334EC00EF04DC /* TextView.swift in Sources */, 57EB45722CFFC36400393FF2 /* TokenType.swift in Sources */, 6A41005C28E2F4DC002946CE /* SwapConfirmView.swift in Sources */, 15C58B5C2868A4EE00BD4FC6 /* VPageIndicatorFinite.swift in Sources */, @@ -7969,10 +8052,12 @@ 15BA24B528C785B300755CBF /* GradientButton.swift in Sources */, 4EA0D0A62A7A5AED004C6A19 /* FRWAPI+ChildAccount.swift in Sources */, 15C58B6F2868A4EE00BD4FC6 /* VBaseButtonState.swift in Sources */, + 4E03BE192C731F3500EF04DC /* ViewsInLoginModule.swift in Sources */, 4E9D8F132BF730E500E11CC7 /* MoveAssetsView.swift in Sources */, 15C58B702868A4EE00BD4FC6 /* HUDManager.swift in Sources */, 15C58B712868A4EE00BD4FC6 /* ImageName.swift in Sources */, 15C58B722868A4EE00BD4FC6 /* BackupPasswordViewModel.swift in Sources */, + 4E03BE222C7349E300EF04DC /* ImportAccountsView.swift in Sources */, 4E63A57E2B8D75F200BBD15F /* MoveTokenViewModel.swift in Sources */, 15C58B732868A4EE00BD4FC6 /* ScrollAccessory.swift in Sources */, 4EA0D0A32A7A357E004C6A19 /* LLSegmenControl.swift in Sources */, @@ -8017,6 +8102,7 @@ 4E2677622C9BF613008729EB /* RecoveryPhraseBackupResultView.swift in Sources */, 15C58B912868A4EE00BD4FC6 /* VProgressBar.swift in Sources */, 15C58B922868A4EE00BD4FC6 /* VBaseHeaderFooterView.swift in Sources */, + 4EDEA7652C90305B00DE76B6 /* SecureEnclaveMigration.swift in Sources */, 15C58B932868A4EE00BD4FC6 /* VSegmentedPickerModel.swift in Sources */, 15C58B942868A4EE00BD4FC6 /* StateColors_EFD.swift in Sources */, 4EBE49262AA1B732000FFFFE /* AppUpdateManager.swift in Sources */, @@ -8095,6 +8181,7 @@ 6AE1817928C5A457009ADDDB /* FCLScripts.swift in Sources */, 15C58BB02868A4EE00BD4FC6 /* PinStackView.swift in Sources */, 15C58BB12868A4EE00BD4FC6 /* VWheelPicker.swift in Sources */, + 4EDEA7622C8FE3DB00DE76B6 /* SecureEnclaveKey+Add.swift in Sources */, 15C58BB22868A4EE00BD4FC6 /* VAccordionLayoutType.swift in Sources */, 15C58BB32868A4EE00BD4FC6 /* VToggleModel.swift in Sources */, 15C58BB42868A4EE00BD4FC6 /* Indexable.swift in Sources */, @@ -8165,6 +8252,7 @@ 6AD6D7C72907D82D0037E206 /* WalletResetConfirmView.swift in Sources */, 6A12173829659F5E00BA0C3B /* SideMenuView.swift in Sources */, 6ADA4BFE28F17CEA00C7B341 /* BrowserSearchDAppItemCell.swift in Sources */, + 4E4A6B642CA68D7100231A85 /* SeedPhraseLoginView.swift in Sources */, 6AC965D82A6A312500E0AD1C /* NetworkSwitchPopView.swift in Sources */, 6AD6D7CA2907DDA00037E206 /* WalletResetConfirmViewModel.swift in Sources */, 15C58BDC2868A4EE00BD4FC6 /* ViewModel.swift in Sources */, @@ -8236,6 +8324,7 @@ 6A66AAAC2923F36E00FA766A /* StakeGuideView.swift in Sources */, 15C58C012868A4EE00BD4FC6 /* RestoreWalletView.swift in Sources */, 15C58C032868A4EE00BD4FC6 /* AddressBookViewModel.swift in Sources */, + 4E4A6B672CA68E8100231A85 /* SeedPhraseLoginViewModel.swift in Sources */, 4EB2C6CE2B4A7D5A00EB899C /* RestoreMultiAccountView.swift in Sources */, 15C58C042868A4EE00BD4FC6 /* View.CornerRadius.swift in Sources */, 4E8394442A7153EB00DFC422 /* CalloutView.swift in Sources */, @@ -8260,6 +8349,7 @@ 15C58C112868A4EE00BD4FC6 /* VHalfModalModel.swift in Sources */, 15C58C122868A4EE00BD4FC6 /* FirebaseConfig.swift in Sources */, 15C58C132868A4EE00BD4FC6 /* VSideBar.swift in Sources */, + 4E3BFD5C2C93D4EA00517FAB /* ImportUserNameViewModel.swift in Sources */, 15C58C142868A4EE00BD4FC6 /* FlowQuery.swift in Sources */, 6AFE1D082A38540300824D5C /* AccountSwitchViewModel.swift in Sources */, 15C58C152868A4EE00BD4FC6 /* StateOpacities_PD.swift in Sources */, @@ -8345,6 +8435,7 @@ 15C58C332868A4EE00BD4FC6 /* VDialogModel.swift in Sources */, 15C58C342868A4EE00BD4FC6 /* VCheckBoxModel.swift in Sources */, 4EC26FCA2BFCAF5C001330DF /* EVMAssetProvider.swift in Sources */, + 4EA106762C738BEC00555350 /* PrivateKeyLoginViewModel.swift in Sources */, 6A9CFE482A6931F900AEA847 /* UIDevice.swift in Sources */, 15C58C352868A4EE00BD4FC6 /* EventLoop+Future.swift in Sources */, 4EC26FD32BFE31C0001330DF /* MoveSingleNFTViewModel.swift in Sources */, @@ -8361,8 +8452,10 @@ 6AB5FBA228926C9100FA2261 /* iCloudAPI.swift in Sources */, 4EE6FA8C2B196B16006A827B /* Dictionary+Add.swift in Sources */, 15C58C3B2868A4EE00BD4FC6 /* NFTListView.swift in Sources */, + 4EDEA76B2C904F0300DE76B6 /* ErrorStatus.swift in Sources */, 154866F028D0EEF000D012B8 /* FlowTransactionTemplate.swift in Sources */, 4E6ED48B2BA9258D009906A5 /* EVMAccountManager.swift in Sources */, + 4EDEA7682C9044E800DE76B6 /* PKWallet+Add.swift in Sources */, 6A6C410428D849A000074DE9 /* InboxView.swift in Sources */, 154866EC28D0ECE400D012B8 /* FlixAuditEndpoint.swift in Sources */, ); @@ -9136,14 +9229,6 @@ minimumVersion = 3.0.0; }; }; - 153839342CC2A5F9000E703C /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/Outblock/Flow-Wallet-Kit"; - requirement = { - kind = revision; - revision = d1f877f15bf1574bf64d75631f0187197a665b53; - }; - }; 1549CF01299A10C2002B37A5 /* XCRemoteSwiftPackageReference "GzipSwift" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/1024jp/GzipSwift"; @@ -9500,8 +9585,8 @@ isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/outblock/flow-swift"; requirement = { - kind = exactVersion; - version = 0.3.9; + kind = upToNextMajorVersion; + minimumVersion = 0.3.9; }; }; 15F517F928C6574C00504FDC /* XCRemoteSwiftPackageReference "atlantis" */ = { @@ -9593,6 +9678,14 @@ revision = 828bce9b79deb0b7c02ebdce3e30f63a1f142fd3; }; }; + 4EAD6A1F2CF6012200F1D9CF /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */ = { + isa = XCRemoteSwiftPackageReference; + repositoryURL = "https://github.com/Outblock/Flow-Wallet-Kit"; + requirement = { + branch = master; + kind = branch; + }; + }; 4ED6DD0E285A22A800105133 /* XCRemoteSwiftPackageReference "IrregularGradient" */ = { isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/joogps/IrregularGradient"; @@ -9690,16 +9783,6 @@ package = 152BB09228AE8FD100B2A2AA /* XCRemoteSwiftPackageReference "lottie-ios" */; productName = Lottie; }; - 153839352CC2A5F9000E703C /* FlowWalletCore */ = { - isa = XCSwiftPackageProductDependency; - package = 153839342CC2A5F9000E703C /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */; - productName = FlowWalletCore; - }; - 153839372CC2A603000E703C /* FlowWalletCore */ = { - isa = XCSwiftPackageProductDependency; - package = 153839342CC2A5F9000E703C /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */; - productName = FlowWalletCore; - }; 1545704F29461AB7004A278E /* MJRefresh */ = { isa = XCSwiftPackageProductDependency; package = 6AEA373E28A49DBD004545D4 /* XCRemoteSwiftPackageReference "MJRefresh" */; @@ -10160,9 +10243,9 @@ package = 4E3682C52BB6A59100B24785 /* XCRemoteSwiftPackageReference "web3swift" */; productName = web3swift; }; - 4E4409222CBFB59A0041AC06 /* FlowWalletCore */ = { + 4E3BFD692C93F7EA00517FAB /* FlowWalletKit */ = { isa = XCSwiftPackageProductDependency; - productName = FlowWalletCore; + productName = FlowWalletKit; }; 4E5D4FAB2AEF9A5A00DC419B /* DeviceGuru */ = { isa = XCSwiftPackageProductDependency; @@ -10209,6 +10292,16 @@ package = 4E9D98DB2B9DE4E800A70879 /* XCRemoteSwiftPackageReference "trust-web3-provider" */; productName = TrustWeb3Provider; }; + 4EAD6A202CF6012200F1D9CF /* FlowWalletKit */ = { + isa = XCSwiftPackageProductDependency; + package = 4EAD6A1F2CF6012200F1D9CF /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */; + productName = FlowWalletKit; + }; + 4EAD6A222CF6013200F1D9CF /* FlowWalletKit */ = { + isa = XCSwiftPackageProductDependency; + package = 4EAD6A1F2CF6012200F1D9CF /* XCRemoteSwiftPackageReference "Flow-Wallet-Kit" */; + productName = FlowWalletKit; + }; 4EC56B2C281D3ED000246878 /* FirebaseRemoteConfig */ = { isa = XCSwiftPackageProductDependency; package = 154B887C2765EBA700780E93 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; @@ -10219,6 +10312,10 @@ package = 4ED6DD0E285A22A800105133 /* XCRemoteSwiftPackageReference "IrregularGradient" */; productName = IrregularGradient; }; + 4EDE41EA2CF5944500A6EAB3 /* FlowWalletKit */ = { + isa = XCSwiftPackageProductDependency; + productName = FlowWalletKit; + }; 4EEE9DC62BD243DB00685AAA /* FirebaseAnalytics */ = { isa = XCSwiftPackageProductDependency; package = 154B887C2765EBA700780E93 /* XCRemoteSwiftPackageReference "firebase-ios-sdk" */; diff --git a/FRW.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/FRW.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 0bbd8c3b..000dabd8 100644 --- a/FRW.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/FRW.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -130,7 +130,7 @@ { "identity" : "flow-swift", "kind" : "remoteSourceControl", - "location" : "https://github.com/outblock/flow-swift", + "location" : "https://github.com/outblock/flow-swift.git", "state" : { "revision" : "50b60826c4ce18adaa151946d11d468ac1fc98dd", "version" : "0.3.9" @@ -141,7 +141,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/Outblock/Flow-Wallet-Kit", "state" : { - "revision" : "d1f877f15bf1574bf64d75631f0187197a665b53" + "branch" : "master", + "revision" : "ff1688af156e51ef4257a818ab906301a241508d" } }, { @@ -654,6 +655,15 @@ "version" : "3.1.0" } }, + { + "identity" : "wallet-core", + "kind" : "remoteSourceControl", + "location" : "https://github.com/Outblock/wallet-core", + "state" : { + "branch" : "master", + "revision" : "24497b1e6f34f171ad421dae8699758bda09e78d" + } + }, { "identity" : "wallet-mobile-sdk", "kind" : "remoteSourceControl", diff --git a/FRW/App/AppDelegate.swift b/FRW/App/AppDelegate.swift index ef7e9617..7cd320be 100644 --- a/FRW/App/AppDelegate.swift +++ b/FRW/App/AppDelegate.swift @@ -45,7 +45,7 @@ class AppDelegate: NSObject, UIApplicationDelegate { didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]? = nil ) -> Bool { _ = LocalEnvManager.shared - + SecureEnclaveMigration.start() FirebaseApp.configure() Analytics.setAnalyticsCollectionEnabled(true) diff --git a/FRW/App/Env/Dev/EnvDefine.swift b/FRW/App/Env/Dev/EnvDefine.swift index c2ef8415..2acda22b 100644 --- a/FRW/App/Env/Dev/EnvDefine.swift +++ b/FRW/App/Env/Dev/EnvDefine.swift @@ -8,8 +8,8 @@ import Foundation let AppGroupName = "group.com.flowfoundation.wallet.dev" +let AppBundleName = "com.flowfoundation.wallet.dev" let isDevModel = true - let FirstFavNFTImageURL = "FirstFavNFTImageURL" func groupUserDefaults() -> UserDefaults? { diff --git a/FRW/App/Env/Prod/EnvDefine.swift b/FRW/App/Env/Prod/EnvDefine.swift index f890c256..4284e19a 100644 --- a/FRW/App/Env/Prod/EnvDefine.swift +++ b/FRW/App/Env/Prod/EnvDefine.swift @@ -8,6 +8,7 @@ import Foundation let AppGroupName = "group.com.flowfoundation.wallet" +let AppBundleName = "com.flowfoundation.wallet" let isDevModel = false let FirstFavNFTImageURL = "FirstFavNFTImageURL" diff --git a/FRW/App/Env/Prod/Info.plist b/FRW/App/Env/Prod/Info.plist index ab9e0229..b92a879f 100644 --- a/FRW/App/Env/Prod/Info.plist +++ b/FRW/App/Env/Prod/Info.plist @@ -21,7 +21,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 2.2.11 + 2.3.0 CFBundleURLTypes diff --git a/FRW/Foundation/Base/FlowLog.swift b/FRW/Foundation/Base/FlowLog.swift index ffed2173..4a0a24b4 100644 --- a/FRW/Foundation/Base/FlowLog.swift +++ b/FRW/Foundation/Base/FlowLog.swift @@ -63,6 +63,21 @@ extension FlowLog { } } +// MARK: - FlowLog.Prefix + +extension FlowLog { + enum Prefix { + case cadence + case netword + case ui + case walletconnect + + case main + case evm + case linked + } +} + // MARK: Levels extension FlowLog { diff --git a/FRW/Foundation/Model/AddressBookInfoModel.swift b/FRW/Foundation/Model/AddressBookInfoModel.swift index 4b0b77a9..9391b2fc 100644 --- a/FRW/Foundation/Model/AddressBookInfoModel.swift +++ b/FRW/Foundation/Model/AddressBookInfoModel.swift @@ -47,6 +47,17 @@ struct Contact: Codable, Identifiable { case flow case evm case link + + var trackName: String { + switch self { + case .flow: + "flow" + case .evm: + "coa" + case .link: + "child" + } + } } let address, avatar, contactName: String? diff --git a/FRW/Modules/Browser/Handler/JSMessageHandler.swift b/FRW/Modules/Browser/Handler/JSMessageHandler.swift index 6624b034..1fd74fe6 100644 --- a/FRW/Modules/Browser/Handler/JSMessageHandler.swift +++ b/FRW/Modules/Browser/Handler/JSMessageHandler.swift @@ -89,7 +89,8 @@ extension JSMessageHandler { } guard let processingAuthzTransaction = processingAuthzTransaction, - let data = try? JSONEncoder().encode(processingAuthzTransaction) else { + let data = try? JSONEncoder().encode(processingAuthzTransaction) + else { log.error("no processingAuthzTransaction") return } @@ -103,24 +104,6 @@ extension JSMessageHandler { data: data ) TransactionManager.shared.newTransaction(holder: holder) - Task { - do { - let result = try await id.onceSealed() - let voucher = authzResponse?.body.voucher - EventTrack.Transaction - .flowSigned( - cadence: hashCadence( - cadence: voucher?.cadence? - .toHexEncodedString() ?? "" - ), - txId: tid, - authorizers: voucher?.authorizers ?? [], - proposer: voucher?.proposalKey.address ?? "", - payer: voucher?.payer ?? "", - success: !result.isFailed - ) - } catch {} - } if let linkAccountVM = processingLinkAccountViewModel { linkAccountVM.onTxID(id) @@ -129,16 +112,6 @@ extension JSMessageHandler { log.error("invalid message", context: error) } } - - private func hashCadence(cadence: String) -> String { - guard !cadence.isEmpty else { - return "" - } - let data = Data(cadence.utf8) - let hash = SHA256.hash(data: data) - let hashString = hash.compactMap { String(format: "%02x", $0) }.joined() - return hashString - } } extension JSMessageHandler { diff --git a/FRW/Modules/Login/ChooseAccountView.swift b/FRW/Modules/Login/ChooseAccountView.swift index 7c71fe25..365c8f0c 100644 --- a/FRW/Modules/Login/ChooseAccountView.swift +++ b/FRW/Modules/Login/ChooseAccountView.swift @@ -71,7 +71,8 @@ struct ChooseAccountView: RouteableView { var listView: some View { ScrollView(.vertical, showsIndicators: false) { LazyVStack(spacing: 12) { - ForEach(vm.items, id: \.username) { item in + ForEach(0 ..< vm.items.count, id: \.self) { index in + let item = vm.items[index] Button { vm.restoreAccountAction(item: item) } label: { diff --git a/FRW/Modules/Login/ImportAccountsView.swift b/FRW/Modules/Login/ImportAccountsView.swift new file mode 100644 index 00000000..1afa7c5a --- /dev/null +++ b/FRW/Modules/Login/ImportAccountsView.swift @@ -0,0 +1,193 @@ +// +// ImportAccountsView.swift +// FRW +// +// Created by cat on 2024/8/19. +// + +import Flow +import SwiftUI +import SwiftUIX + +// MARK: - ImportAccountsViewModel + +class ImportAccountsViewModel: ObservableObject { + // MARK: Lifecycle + + init(list: [Flow.Account], onSelectAddress: @escaping (Flow.Account) -> Void) { + self.list = list + self.onSelectAddress = onSelectAddress + } + + // MARK: Internal + + var list: [Flow.Account] = [] + var onSelectAddress: (Flow.Account) -> Void +} + +// MARK: - ImportAccountsView + +struct ImportAccountsView: RouteableView, PresentActionDelegate { + // MARK: Lifecycle + + init(viewModel: ImportAccountsViewModel) { + _viewModel = StateObject(wrappedValue: viewModel) + } + + // MARK: Internal + + var changeHeight: (() -> Void)? + + @StateObject + var viewModel: ImportAccountsViewModel + + var title: String { + "" + } + + var body: some View { + VStack(spacing: 0) { + ZStack(alignment: .topTrailing) { + HStack(alignment: .center) { + Spacer() + Text(headerTitle) + .font(.inter(size: 24, weight: .bold)) + .foregroundStyle( + viewModel.list.isEmpty ? Color.Theme.Accent.orange : Color + .Theme.Accent.green + ) + Spacer() + } + + Button { + onClose() + } label: { + Image("icon_close_circle_gray") + .resizable() + .frame(width: 24, height: 24) + .padding(4) + .offset(y: -6) + } + } + .frame(height: 40) + .padding(.top, 18) + + Text("choose_account_import".localized) + .font(.inter(size: 14)) + .multilineTextAlignment(.center) + .foregroundStyle(Color.Theme.Text.black3) + .padding(.top, 20) + .visibility(viewModel.list.isEmpty ? .gone : .visible) + + ScrollView(showsIndicators: false) { + VStack { + ForEach(viewModel.list.indices, id: \.self) { index in + let account = viewModel.list[index] + let isSelected = (account.address.hex == selectedAccount?.address.hex) + ImportAccountsView + .Item(account: account, isSelected: isSelected) { itemAccount in + self.selectedAccount = itemAccount + } + } + } + } + .padding(.top, 28) + .visibility(viewModel.list.isEmpty ? .gone : .visible) + + Spacer() + Text("import_no_account_found".localized) + .font(.inter(size: 14)) + .multilineTextAlignment(.center) + .foregroundStyle(Color.Theme.Text.black) + .padding(.horizontal, 27) + .visibility(viewModel.list.isEmpty ? .visible : .gone) + + Spacer() + + Button { + if let account = selectedAccount { + onClose() + viewModel.onSelectAddress(account) + } + } label: { + Text(buttonTitle()) + .font(.inter(size: 16, weight: .semibold)) + .frame(maxWidth: .infinity) + .frame(height: 54) + .foregroundColor(Color.LL.frontColor) + .background(selectedAccount == nil ? Color.LL.disable : Color.LL.rebackground) + .cornerRadius(16) + } + .disabled(selectedAccount == nil) + .padding(.bottom, 42) + } + .padding(.horizontal, 18) + .backgroundFill(.Theme.Background.bg2) + .cornerRadius([.topLeading, .topTrailing], 16) + .applyRouteable(self) + .ignoresSafeArea() + } + + var headerTitle: String { + if viewModel.list.isEmpty { + return "no_account_found".localized + } + return "x_account_found_title".localized("\(viewModel.list.count)") + } + + func onClose() { + Router.dismiss() + } + + // MARK: Private + + @State + private var selectedAccount: Flow.Account? + + private func buttonTitle() -> String { + if selectedAccount == nil { + return "import_btn_text".localized.uppercasedFirstLetter() + } + return "import_x_wallet".localized("1") + } +} + +// MARK: ImportAccountsView.Item + +extension ImportAccountsView { + struct Item: View { + let account: Flow.Account + var isSelected: Bool = false + var onClick: (Flow.Account) -> Void + + var body: some View { + HStack { + Text(account.address.hex) + .font(.inter(size: 14, weight: isSelected ? .semibold : .regular)) + .truncationMode(.middle) + .lineLimit(1) + .foregroundStyle(Color.Theme.Text.black) + + Spacer() + + Image(isSelected ? "icon_check_rounde_1" : "icon_check_rounde_0") + .resizable() + .frame(width: 16, height: 16) + } + .padding(.horizontal, 24) + .frame(height: 56) + .contentShape(Rectangle()) + .background(isSelected ? Color.Theme.Background.pureWhite : .clear) + .onTapGesture { + onClick(account) + } + .cornerRadius(16) + } + } +} + +#Preview { + ImportAccountsView(viewModel: ImportAccountsViewModel(list: [], onSelectAddress: { _ in + + })) +} diff --git a/FRW/Modules/Login/ImportUserNameView.swift b/FRW/Modules/Login/ImportUserNameView.swift new file mode 100644 index 00000000..7272ff63 --- /dev/null +++ b/FRW/Modules/Login/ImportUserNameView.swift @@ -0,0 +1,123 @@ +// +// ImportUserNameView.swift +// FRW +// +// Created by cat on 2024/9/13. +// + +import SwiftUI + +struct ImportUserNameView: RouteableView { + // MARK: Lifecycle + + init(viewModel: ImportUserNameViewModel) { + _viewModel = StateObject(wrappedValue: viewModel) + } + + // MARK: Internal + + @State + var status: LL.TextField.Status = .normal + @StateObject + var viewModel: ImportUserNameViewModel + + var title: String { + "" + } + + var body: some View { + VStack { + Spacer() + VStack(alignment: .leading) { + Text("pick_your".localized) + .font(.LL.largeTitle) + .bold() + .foregroundColor(Color.LL.rebackground) + Text("username".localized) + .font(.largeTitle) + .bold() + .foregroundColor(Color.Theme.Accent.green) + Text("username_desc".localized) + .font(.LL.body) + .foregroundColor(.LL.note) + .padding(.top, 1) + } + .frame(maxWidth: .infinity, alignment: .leading) + Spacer() + + VTextField( + model: TextFieldStyle.primary, + type: .userName, + highlight: highlight, + placeholder: "username".localized, + footerTitle: footerText, + text: $viewModel.userName, + onChange: { + viewModel.onEditingChanged(viewModel.userName) + }, + onReturn: .returnAndCustom { + viewModel.onEditingChanged(viewModel.userName) + }, + onClear: .clearAndCustom { + viewModel.onEditingChanged(viewModel.userName) + } + ) + .padding(.bottom, 10) + + VPrimaryButton( + model: ButtonStyle.primary, + state: buttonState, + action: { + viewModel.onConfirm() + }, + title: "next".localized + ) + .padding(.bottom) + } + .dismissKeyboardOnDrag() + .padding(.horizontal, 28) + .background(Color.LL.background, ignoresSafeAreaEdges: .all) + .applyRouteable(self) + } + + var highlight: VTextFieldHighlight { + switch status { + case .success: + return .success + case .error: + return .error + case .normal: + return .none + case .loading: + return .loading + } + } + + var footerText: String { + switch status { + case .success: + return "nice_one".localized + case let .error(message): + return message + case .normal: + return " " + case .loading: + return "checking".localized + } + } + + var buttonState: VPrimaryButtonState { + viewModel.userName.isEmpty ? .disabled : .enabled + } + + func backButtonAction() { + UIApplication.shared.endEditing() + Router.pop() + } +} + +#Preview { + ImportUserNameView(viewModel: ImportUserNameViewModel(callback: { _ in + + })) +} diff --git a/FRW/Modules/Login/KeyStoreLoginView.swift b/FRW/Modules/Login/KeyStoreLoginView.swift new file mode 100644 index 00000000..68490ded --- /dev/null +++ b/FRW/Modules/Login/KeyStoreLoginView.swift @@ -0,0 +1,93 @@ +// +// KeyStoreLoginView.swift +// FRW +// +// Created by cat on 2024/8/19. +// + +import SwiftUI +import SwiftUIX + +struct KeyStoreLoginView: RouteableView { + var title: String { + "import_wallet".localized + } + + private let backupType: RestoreWalletViewModel.ImportType = .keyStore + + @StateObject + var viewModel = KeyStoreLoginViewModel() + + var body: some View { + VStack { + ScrollView(showsIndicators: false) { + VStack(spacing: 16) { + ImportTitleHeader(backupType: .keyStore) + .padding(.top, 48) + + Section { + VStack(spacing: 0) { + ImportTextView( + content: $viewModel.json, + placeholder: "keystore_json".localized + ) { value in + viewModel.update(json: value) + } + .frame(height: 120) + + } + + } header: { + ImportSectionTitleView(title: "JSON", isStar: true) + } + + Section { + AnimatedSecureTextField( + placeholder: "keystore_password".localized, + text: $viewModel.password + ) { value in + viewModel.update(password: value) + } + .frame(height: 64) + + } header: { + ImportSectionTitleView(title: "password", isStar: true) + } + + Section { + AnimatedSecureTextField( + placeholder: "keystore_address".localized, + text: $viewModel.wantedAddress + ) { text in + viewModel.update(address: text) + } + .frame(height: 64) + + } header: { + ImportSectionTitleView(title: "address", isStar: false) + } + } + } + .padding(.bottom, 24) + + VPrimaryButton( + model: ButtonStyle.primary, + state: viewModel.buttonState, + action: { + viewModel.onSumbit() + }, + title: "import_btn_text".localized.lowercased().uppercasedFirstLetter() + ) + .padding(.bottom) + } + .padding(.horizontal, 24) + .backgroundColor(Color.Theme.Background.grey) + .hideKeyboardWhenTappedAround() + .applyRouteable(self) + } +} + +#Preview { + KeyStoreLoginView() + .background(.yellow) +} diff --git a/FRW/Modules/Login/PrivateKeyLoginView.swift b/FRW/Modules/Login/PrivateKeyLoginView.swift new file mode 100644 index 00000000..6c22380f --- /dev/null +++ b/FRW/Modules/Login/PrivateKeyLoginView.swift @@ -0,0 +1,76 @@ +// +// PrivateKeyLoginView.swift +// FRW +// +// Created by cat on 2024/8/19. +// + +import SwiftUI +import SwiftUIX + +struct PrivateKeyLoginView: RouteableView { + var title: String { + "import_wallet".localized + } + + private let backupType: RestoreWalletViewModel.ImportType = .privateKey + + @StateObject + var viewModel = PrivateKeyLoginViewModel() + + var body: some View { + VStack { + ScrollView(showsIndicators: false) { + VStack(spacing: 16) { + ImportTitleHeader(backupType: .privateKey) + .padding(.top, 48) + + Section { + ImportTextView( + content: $viewModel.key, + placeholder: "private_key_placeholder".localized + ) { value in + viewModel.update(key: value) + } + .frame(height: 120) + + } header: { + ImportSectionTitleView(title: "private_key".localized, isStar: true) + } + + Section { + AnimatedSecureTextField( + placeholder: "keystore_address".localized, + text: $viewModel.wantedAddress + ) { text in + viewModel.update(address: text) + } + .frame(height: 64) + + } header: { + ImportSectionTitleView(title: "address".localized, isStar: false) + } + } + } + .padding(.bottom, 24) + + VPrimaryButton( + model: ButtonStyle.primary, + state: viewModel.buttonState, + action: { + viewModel.onSumbit() + }, + title: "import_btn_text".localized.lowercased() + .uppercasedFirstLetter() + ) + .padding(.bottom) + } + .padding(.horizontal, 24) + .backgroundFill(Color.Theme.Background.grey) + .applyRouteable(self) + } +} + +#Preview { + PrivateKeyLoginView() +} diff --git a/FRW/Modules/Login/RestoreWalletView.swift b/FRW/Modules/Login/RestoreWalletView.swift index 1c103364..bdcbb29a 100644 --- a/FRW/Modules/Login/RestoreWalletView.swift +++ b/FRW/Modules/Login/RestoreWalletView.swift @@ -16,7 +16,7 @@ struct RestoreWalletView: RouteableView { VStack(spacing: 10) { VStack(alignment: .leading, spacing: 20) { HStack { - Text("restore".localized) + Text("import_btn_text".localized) .foregroundColor(Color.LL.orange) .bold() Text("wallet".localized) @@ -25,40 +25,42 @@ struct RestoreWalletView: RouteableView { } .font(.LL.largeTitle) - Text("restore_with_words_desc".localized) + Text("import_desc".localized) .font(.LL.body) .foregroundColor(.LL.note) } .frame(maxWidth: .infinity, alignment: .leading) - Spacer() - - VPrimaryButton( - model: ButtonStyle.primary, - action: { - viewModel.restoreWithCloudAction(type: .icloud) - }, - title: "restore_with_icloud".localized - ) - VPrimaryButton( - model: ButtonStyle.primary, - action: { - viewModel.restoreWithCloudAction(type: .googleDrive) - }, - title: "restore_with_gd".localized - ) - - VPrimaryButton( - model: ButtonStyle.border, - action: { - viewModel.restoreWithManualAction() - }, - title: "restore_with_recovery_phrase".localized - ) + Color.clear + .frame(width: 1, height: 32) + + ScrollView(showsIndicators: false) { + RestoreWalletView.Item(backupType: .google) + .onTapGesture { + viewModel.restoreWithCloudAction(type: .googleDrive) + } + + RestoreWalletView.Item(backupType: .phrase) + .onTapGesture { + viewModel.restoreWithManualAction() + } + RestoreWalletView.Item(backupType: .keyStore) + .onTapGesture { + viewModel.restoreWithKeyStore() + } + RestoreWalletView.Item(backupType: .privateKey) + .onTapGesture { + viewModel.resteroWithPrivateKey() + } + Spacer() + } + .sn_introspectScrollView { scrollView in + scrollView.alwaysBounceVertical = false + } } .frame(maxWidth: .infinity, maxHeight: .infinity) .padding(.horizontal, 28) - .backgroundFill(Color.LL.background) + .backgroundFill(Color.Theme.Background.grey) .applyRouteable(self) } @@ -73,6 +75,104 @@ extension RestoreWalletView { } } +// MARK: RestoreWalletView.Item + +extension RestoreWalletView { + struct Item: View { + let backupType: RestoreWalletViewModel.ImportType + + var body: some View { + HStack(spacing: 16) { + Image(backupType.icon40) + .resizable() + .frame(width: 40, height: 40) + + VStack(alignment: .leading) { + Text(backupType.title) + .font(.inter(size: 16, weight: .semibold)) + .lineLimit(1) + .foregroundStyle(Color.Theme.Text.black) + + Text(backupType.importDesc) + .font(.inter(size: 12)) + .foregroundStyle(Color.Theme.Text.black3) + } + Spacer() + } + .padding(24) + .frame(maxWidth: .infinity) + .background(.Theme.Background.bg2) + .cornerRadius(16) + } + } +} + +// MARK: - RestoreWalletViewModel.ImportType + +extension RestoreWalletViewModel { + enum ImportType { + case google + case iCloud + case phrase + case keyStore + case privateKey + case seedPhrase + + // MARK: Internal + + var title: String { + switch self { + case .google: + return "google_drive".localized + case .iCloud: + return "iCloud" + case .phrase: + return "Seed Phrase" + case .keyStore: + return "Key Store" + case .privateKey: + return "Private Key" + case .seedPhrase: + return "Seed Phrase" + } + } + + var icon40: String { + switch self { + case .google: + return "icon_import_google_40" + case .iCloud: + return "icon_import_icloud_40" + case .phrase: + return "icon_import_phrase_40" + case .keyStore: + return "icon_import_keystore_40" + case .privateKey: + return "icon_import_privatekey_40" + case .seedPhrase: + return "icon_import_phrase_40" + } + } + + var importDesc: String { + switch self { + case .google: + return "import_google_desc".localized + case .iCloud: + return "import_icloud_desc".localized + case .phrase: + return "import_phrase_desc".localized + case .keyStore: + return "import_keystore_desc".localized + case .privateKey: + return "import_privatekey_desc".localized + case .seedPhrase: + return "import_phrase_desc".localized + } + } + } +} + // MARK: - RestoreWalletView_Previews struct RestoreWalletView_Previews: PreviewProvider { diff --git a/FRW/Modules/Login/SeedPhraseLoginView.swift b/FRW/Modules/Login/SeedPhraseLoginView.swift new file mode 100644 index 00000000..31339460 --- /dev/null +++ b/FRW/Modules/Login/SeedPhraseLoginView.swift @@ -0,0 +1,127 @@ +// +// SeedPhraseLoginView.swift +// FRW +// +// Created by cat on 2024/9/27. +// + +import SwiftUI + +struct SeedPhraseLoginView: RouteableView { + var title: String { + "import_wallet".localized + } + + private let backupType: RestoreWalletViewModel.ImportType = .seedPhrase + + @StateObject + var viewModel = SeedPhraseLoginViewModel() + + var body: some View { + VStack { + ScrollView(showsIndicators: false) { + VStack(spacing: 16) { + ImportTitleHeader(backupType: .seedPhrase) + .padding(.top, 48) + + Section { + ImportTextView( + content: $viewModel.words, + placeholder: "seedphrase_hint".localized + ) { _ in + viewModel.updateState() + } + .frame(height: 120) + + } header: { + ImportSectionTitleView(title: "Seed Phrase".localized, isStar: true) + } + + Section { + AnimatedSecureTextField( + placeholder: "keystore_address".localized, + text: $viewModel.wantedAddress + ) { _ in + viewModel.updateState() + } + .frame(height: 64) + + } header: { + ImportSectionTitleView(title: "address".localized, isStar: false) + } + + HStack { + HStack { + Image(systemName: viewModel.isAdvanced ? "minus.circle" : "plus.circle") + .font(.inter(size: 20)) + .foregroundStyle(Color.Theme.Text.black) + + Text("advanced".localized) + .font(.inter(size: 14, weight: .semibold)) + .foregroundStyle(Color.Theme.Text.black) + } + .onTapGesture { + withAnimation(.easeInOut) { + viewModel.isAdvanced.toggle() + } + } + + Spacer() + } + + VStack(spacing: 16) { + Section { + AnimatedSecureTextField( + placeholder: "Derivation Path".localized + " (m/44'/539'/0'/0/0)", + text: $viewModel.derivationPath + ) { _ in + viewModel.updateState() + } + .frame(height: 64) + + } header: { + ImportSectionTitleView(title: "Derivation Path".localized, isStar: true) + } + + Section { + AnimatedSecureTextField( + placeholder: "Passphrase".localized + " " + "Optional".localized, + text: $viewModel.passphrase + ) { _ in + viewModel.updateState() + } + .frame(height: 64) + + } header: { + ImportSectionTitleView(title: "Passphrase".localized, isStar: false) + } + } + .visibility(viewModel.isAdvanced ? .visible : .gone) + .animation(.smooth, value: viewModel.isAdvanced) + } + } + .padding(.bottom, 24) + + Spacer() + + VPrimaryButton( + model: ButtonStyle.primary, + state: viewModel.buttonState, + action: { + viewModel.onSubmit() + }, + title: "import_btn_text".localized.lowercased() + .uppercasedFirstLetter() + ) + .padding(.bottom) + } + .padding(.horizontal, 24) + .backgroundFill(Color.Theme.Background.grey) + .hideKeyboardWhenTappedAround() + .applyRouteable(self) + } +} + +#Preview(body: { + SeedPhraseLoginView() +}) diff --git a/FRW/Modules/Login/SyncAddDeviceView.swift b/FRW/Modules/Login/SyncAddDeviceView.swift index dde9c4d3..04264303 100644 --- a/FRW/Modules/Login/SyncAddDeviceView.swift +++ b/FRW/Modules/Login/SyncAddDeviceView.swift @@ -116,7 +116,8 @@ struct SyncAddDeviceView: View { func coordinate() -> CLLocationCoordinate2D { guard let latitude = viewModel.model.deviceInfo.lat, - let longitude = viewModel.model.deviceInfo.lon else { + let longitude = viewModel.model.deviceInfo.lon + else { return CLLocationCoordinate2D(latitude: 0.0, longitude: 0.0) } return CLLocationCoordinate2D(latitude: latitude, longitude: longitude) diff --git a/FRW/Modules/Login/SyncConfirmView.swift b/FRW/Modules/Login/SyncConfirmView.swift index 606eec28..c224edd9 100644 --- a/FRW/Modules/Login/SyncConfirmView.swift +++ b/FRW/Modules/Login/SyncConfirmView.swift @@ -16,7 +16,7 @@ struct SyncConfirmView: RouteableView { init(user: SyncInfo.User) { self.user = user - _viewModel = StateObject(wrappedValue: SyncConfirmViewModel(userId: user.userId ?? "")) + _viewModel = StateObject(wrappedValue: SyncConfirmViewModel(userId: user.userId ?? "", address: user.walletAddress)) } // MARK: Internal diff --git a/FRW/Modules/Login/ViewModel/ImportUserNameViewModel.swift b/FRW/Modules/Login/ViewModel/ImportUserNameViewModel.swift new file mode 100644 index 00000000..2698c9cf --- /dev/null +++ b/FRW/Modules/Login/ViewModel/ImportUserNameViewModel.swift @@ -0,0 +1,30 @@ +// +// ImportUserNameViewModel.swift +// FRW +// +// Created by cat on 2024/9/13. +// + +import Foundation + +final class ImportUserNameViewModel: ObservableObject { + // MARK: Lifecycle + + init(callback: @escaping (String) -> Void) { + self.callback = callback + } + + // MARK: Internal + + @Published + var userName: String = "" + + var callback: (String) -> Void + + func onEditingChanged(_: String) {} + + func onConfirm() { + callback(userName) + Router.pop() + } +} diff --git a/FRW/Modules/Login/ViewModel/KeyStoreLoginViewModel.swift b/FRW/Modules/Login/ViewModel/KeyStoreLoginViewModel.swift new file mode 100644 index 00000000..cdfd1d19 --- /dev/null +++ b/FRW/Modules/Login/ViewModel/KeyStoreLoginViewModel.swift @@ -0,0 +1,242 @@ +// +// KeyStoreLoginViewModel.swift +// FRW +// +// Created by cat on 2024/8/19. +// + +import Foundation +import WalletCore +import Web3Core + +import Flow +import FlowWalletKit +import SwiftUI + +// MARK: - KeyStoreLoginViewModel + +final class KeyStoreLoginViewModel: ObservableObject { + // MARK: Internal + + @Published + var json: String = "" + @Published + var password: String = "" + @Published + var wantedAddress: String = "" + + @Published + var buttonState: VPrimaryButtonState = .disabled + + var userName: String = "" + + @Published + var wallet: FlowWalletKit.Wallet? = nil + + + @MainActor + func update(json _: String) { + update() + } + + @MainActor + func update(password _: String) { + update() + } + + func update(address _: String) {} + + func onSumbit() { + + UIApplication.shared.endEditing() + HUD.loading() + Task { + do { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + privateKey = try PrivateKey.restore( + json: json, + password: password, + storage: FlowWalletKit.PrivateKey.PKStorage + ) + guard let privateKey else { + HUD.error(title: "invalid_data".localized) + return + } + wallet = FlowWalletKit.Wallet(type: .key(privateKey), networks: [chainId]) + + try await fetchAllAddresses() + HUD.dismissLoading() + + if wantedAddress.isEmpty { + await self.showAllAccounts() + } else { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + guard let keys = wallet?.flowAccounts?[chainId] else { + HUD.error(title: "not_find_address".localized) + return + } + guard let account = keys.filter({ $0.address.hex == wantedAddress }).first + else { + HUD.error(title: "not_find_address".localized) + return + } + selectedAccount(by: account) + } + + } catch let error as FlowWalletKit.WalletError { + if error == FlowWalletKit.WalletError.invaildKeyStorePassword { + HUD.error(title: "invalid_password".localized) + } else if error == FlowWalletKit.WalletError.invaildKeyStoreJSON { + HUD.error(title: "invalid_json".localized) + }else { + HUD.error(title: "invalid_data".localized) + } + HUD.dismissLoading() + } catch { + HUD.error(title: "invalid_data".localized) + HUD.dismissLoading() + } + } + } + + // fetch all addresses of Public Key + func fetchAllAddresses() async throws { + do { + _ = try await wallet?.fetchAllNetworkAccounts() + } catch { + log.error("\(error.localizedDescription)") + } + } + + func selectedAccount(by account: Flow.Account) { + self.account = account + checkPublicKey() + } + + func createUserName(callback: @escaping (String) -> Void) { + let viewModel = ImportUserNameViewModel { name in + if !name.isEmpty { + callback(name) + } + } + Router.route(to: RouteMap.RestoreLogin.importUserName(viewModel)) + } + + func checkPublicKey() { + let keys = account?.keys.filter { + $0.publicKey.description == p256PublicKey || $0.publicKey + .description == secp256PublicKey + } + guard let selectedKey = keys?.first, + let address = account?.address.hex, let privateKey = privateKey + else { + log.error("[Import] keys of account not match the public:\(String(describing: p256PublicKey)) or \(String(describing: secp256PublicKey)) ") + return + } + Task { + HUD.loading() + do { + let publicKey = selectedKey.publicKey.description + let response: Network.EmptyResponse = try await Network + .requestWithRawModel(FRWAPI.User.checkimport(publicKey)) + if response.httpCode == 409 { + try await UserManager.shared.importLogin( + by: address, + userName: "", + flowKey: selectedKey, + privateKey: privateKey + ) + } else if response.httpCode == 200 { + createUserName { name in + Task { + try await UserManager.shared.importLogin( + by: address, + userName: name, + flowKey: selectedKey, + privateKey: privateKey, + isImport: true + ) + Router.popToRoot() + } + } + } + HUD.dismissLoading() + } catch { + if let code = error.moyaCode() { + if code == 409 { + do { + try await UserManager.shared.importLogin( + by: address, + userName: "", + flowKey: selectedKey, + privateKey: privateKey + ) + Router.popToRoot() + } catch { + log.error("[Import] login 409 :\(error)") + } + } + } + log.error("[Import] check public key own error:\(error)") + HUD.dismissLoading() + } + } + } + + // MARK: Private + + private var privateKey: FlowWalletKit.PrivateKey? + private var account: Flow.Account? = nil + + @MainActor + private func update() { + updateButtonState() + } + + private func updateButtonState() { + buttonState = (json.isEmpty || password.isEmpty) ? .disabled : .enabled + } + + // select one address + @MainActor + private func showAllAccounts() { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + let list = wallet?.flowAccounts?[chainId] ?? [] + + let viewModel = ImportAccountsViewModel(list: list) { [weak self] account in + log.info("[Import] selected address: \(account.address.hex)") + self?.selectedAccount(by: account) + } + Router.route(to: RouteMap.RestoreLogin.importAddress(viewModel)) + } +} + +extension KeyStoreLoginViewModel { + private var p256PublicKey: String? { + (try? privateKey?.publicKey(signAlgo: .ECDSA_P256))?.hexValue.dropPrefix("04") + } + + private var secp256PublicKey: String? { + (try? privateKey?.publicKey(signAlgo: .ECDSA_SECP256k1))?.hexValue.dropPrefix("04") + } +} + +// MARK: - Keystore + +struct Keystore: Codable { + var address: String? + var crypto: CryptoParamsV3 + var id: String? + var version: Int +} + +// MARK: - ImportAccountInfo + +struct ImportAccountInfo { + let address: String? + let weight: Int? + let keyId: Int? + let publicKey: String? + let signAlgo: Flow.SignatureAlgorithm + let hashAlgo: Flow.HashAlgorithm = .SHA2_256 +} diff --git a/FRW/Modules/Login/ViewModel/PrivateKeyLoginViewModel.swift b/FRW/Modules/Login/ViewModel/PrivateKeyLoginViewModel.swift new file mode 100644 index 00000000..81200ad2 --- /dev/null +++ b/FRW/Modules/Login/ViewModel/PrivateKeyLoginViewModel.swift @@ -0,0 +1,209 @@ +// +// PrivateKeyLoginViewModel.swift +// FRW +// +// Created by cat on 2024/8/19. +// + +import CryptoKit +import Flow +import FlowWalletKit +import Foundation +import UIKit +import WalletCore + +// MARK: - PrivateKeyLoginViewModel + +final class PrivateKeyLoginViewModel: ObservableObject { + // MARK: Internal + + @Published + var key: String = "" + @Published + var wantedAddress: String = "" + @Published + var buttonState: VPrimaryButtonState = .disabled + + var userName: String = "" + + var wallet: FlowWalletKit.Wallet? = nil + + @MainActor + func update(key _: String) { + update() + } + + @MainActor + func update(address _: String) { + update() + } + + func onSumbit() { + UIApplication.shared.endEditing() + HUD.loading() + Task { + do { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + guard let data = Data(hexString: key.stripHexPrefix()) else { + HUD.dismissLoading() + HUD.error(title: "invalid_data".localized) + return + } + + privateKey = try PrivateKey.restore( + secret: data, + storage: FlowWalletKit.PrivateKey.PKStorage + ) + guard let privateKey = privateKey else { + HUD.dismissLoading() + HUD.error(title: "invalid_data".localized) + return + } + wallet = FlowWalletKit.Wallet(type: .key(privateKey), networks: [chainId]) + + try await fetchAllAddresses() + HUD.dismissLoading() + if wantedAddress.isEmpty { + await self.showAllAccounts() + } else { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + guard let keys = wallet?.flowAccounts?[chainId] else { + return + } + guard let account = keys.filter({ $0.address.hex == wantedAddress }).first + else { + HUD.error(title: "not_find_address".localized) + return + } + selectedAccount(by: account) + } + } catch { + HUD.dismissLoading() + } + } + } + + func fetchAllAddresses() async throws { + do { + _ = try await wallet?.fetchAllNetworkAccounts() + } catch { + log.error("\(error.localizedDescription)") + } + } + + func selectedAccount(by account: Flow.Account) { + self.account = account + checkPublicKey() + } + + func createUserName(callback: @escaping (String) -> Void) { + let viewModel = ImportUserNameViewModel { name in + if !name.isEmpty { + callback(name) + } + } + Router.route(to: RouteMap.RestoreLogin.importUserName(viewModel)) + } + + func checkPublicKey() { + let keys = account?.keys + .filter { + $0.publicKey.description == p256PublicKey || $0.publicKey + .description == secp256PublicKey + } + guard let selectedKey = keys?.first, + let address = account?.address.hex, let privateKey = privateKey + else { + log + .error( + "[Import] keys of account not match the public:\(String(describing: p256PublicKey)) or \(String(describing: secp256PublicKey)) " + ) + return + } + Task { + HUD.loading() + do { + let publicKey = selectedKey.publicKey.description + let response: Network.EmptyResponse = try await Network + .requestWithRawModel(FRWAPI.User.checkimport(publicKey)) + if response.httpCode == 409 { + try await UserManager.shared.importLogin( + by: address, + userName: "", + flowKey: selectedKey, + privateKey: privateKey + ) + } else if response.httpCode == 200 { + createUserName { _ in + Task { + try await UserManager.shared.importLogin( + by: address, + userName: self.userName, + flowKey: selectedKey, + privateKey: privateKey, + isImport: true + ) + Router.popToRoot() + } + } + } + HUD.dismissLoading() + } catch { + if let code = error.moyaCode() { + if code == 409 { + do { + try await UserManager.shared.importLogin( + by: address, + userName: "", + flowKey: selectedKey, + privateKey: privateKey + ) + Router.popToRoot() + } catch { + log.error("[Import] login 409 :\(error)") + } + } + } + log.error("[Import] check public key own error:\(error)") + HUD.dismissLoading() + } + } + } + + // MARK: Private + + private var privateKey: FlowWalletKit.PrivateKey? + private var account: Flow.Account? = nil + + @MainActor + private func update() { + updateButtonState() + } + + private func updateButtonState() { + buttonState = (key.isEmpty) ? .disabled : .enabled + } + + // select one address + @MainActor + private func showAllAccounts() { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + let list = wallet?.flowAccounts?[chainId] ?? [] + + let viewModel = ImportAccountsViewModel(list: list) { [weak self] account in + log.info("[Import] selected address: \(account.address.hex)") + self?.selectedAccount(by: account) + } + Router.route(to: RouteMap.RestoreLogin.importAddress(viewModel)) + } +} + +extension PrivateKeyLoginViewModel { + private var p256PublicKey: String? { + (try? privateKey?.publicKey(signAlgo: .ECDSA_P256))?.hexValue.dropPrefix("04") + } + + private var secp256PublicKey: String? { + (try? privateKey?.publicKey(signAlgo: .ECDSA_SECP256k1))?.hexValue.dropPrefix("04") + } +} diff --git a/FRW/Modules/Login/ViewModel/RestoreWalletViewModel.swift b/FRW/Modules/Login/ViewModel/RestoreWalletViewModel.swift index 0b4e01b8..8140faa5 100644 --- a/FRW/Modules/Login/ViewModel/RestoreWalletViewModel.swift +++ b/FRW/Modules/Login/ViewModel/RestoreWalletViewModel.swift @@ -15,7 +15,8 @@ class RestoreWalletViewModel {} extension RestoreWalletViewModel { func restoreWithManualAction() { - Router.route(to: RouteMap.RestoreLogin.restoreManual) + Router.route(to: RouteMap.RestoreLogin.seedPhrase) +// Router.route(to: RouteMap.RestoreLogin.restoreManual) } func restoreWithCloudAction(type: BackupManager.BackupType) { @@ -41,4 +42,12 @@ extension RestoreWalletViewModel { } } } + + func restoreWithKeyStore() { + Router.route(to: RouteMap.RestoreLogin.keystore) + } + + func resteroWithPrivateKey() { + Router.route(to: RouteMap.RestoreLogin.privateKey) + } } diff --git a/FRW/Modules/Login/ViewModel/SeedPhraseLoginViewModel.swift b/FRW/Modules/Login/ViewModel/SeedPhraseLoginViewModel.swift new file mode 100644 index 00000000..bd0ba4da --- /dev/null +++ b/FRW/Modules/Login/ViewModel/SeedPhraseLoginViewModel.swift @@ -0,0 +1,211 @@ +// +// SeedPhraseLoginViewModel.swift +// FRW +// +// Created by cat on 2024/9/27. +// + +import Flow +import FlowWalletKit +import Foundation +import UIKit +import WalletCore + +// MARK: - SeedPhraseLoginViewModel + +final class SeedPhraseLoginViewModel: ObservableObject { + // MARK: Internal + + @Published + var words: String = "" + @Published + var wantedAddress: String = "" + @Published + var derivationPath: String = "" + @Published + var passphrase: String = "" + + @Published + var buttonState: VPrimaryButtonState = .disabled + @Published + var isAdvanced: Bool = false + + func updateState() { + if isAdvanced { + buttonState = words.isEmpty || derivationPath.isEmpty ? .disabled : .enabled + } else { + buttonState = words.isEmpty ? .disabled : .enabled + } + } + + func onSubmit() { + UIApplication.shared.endEditing() + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + let rawMnemonic = words.condenseWhitespace() + Task { + guard let hdWallet = HDWallet(mnemonic: rawMnemonic, passphrase: passphrase) else { + HUD.error(title: "invalid_data".localized) + return + } + if isAdvanced && derivationPath.isEmpty { + HUD.error(title: "required_info_not".localized) + return + } + if isAdvanced && !derivationPath.isEmpty { + providerKey = FlowWalletKit.SeedPhraseKey( + hdWallet: hdWallet, + storage: FlowWalletKit.SeedPhraseKey.seedPhraseStorage, + derivationPath: derivationPath, + passphrase: passphrase + ) + } else { + providerKey = FlowWalletKit.SeedPhraseKey( + hdWallet: hdWallet, + storage: FlowWalletKit.SeedPhraseKey.seedPhraseStorage + ) + } + guard let providerKey = providerKey else { + return + } + wallet = FlowWalletKit.Wallet(type: .key(providerKey), networks: [chainId]) + HUD.loading() + try await fetchAllAddresses() + HUD.dismissLoading() + if wantedAddress.isEmpty { + await self.showAllAccounts() + } else { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + guard let keys = wallet?.flowAccounts?[chainId] else { + return + } + guard let account = keys.filter({ $0.address.hex == wantedAddress }).first else { + HUD.error(title: "not_find_address".localized) + return + } + selectedAccount(by: account) + } + } + } + + // fetch all addresses of Public Key + func fetchAllAddresses() async throws { + do { + _ = try await wallet?.fetchAllNetworkAccounts() + } catch { + log.error("\(error.localizedDescription)") + } + } + + func selectedAccount(by account: Flow.Account) { + self.account = account + checkPublicKey() + } + + func createUserName(callback: @escaping (String) -> Void) { + let viewModel = ImportUserNameViewModel { name in + if !name.isEmpty { + callback(name) + } + } + Router.route(to: RouteMap.RestoreLogin.importUserName(viewModel)) + } + + func checkPublicKey() { + let keys = account?.keys.filter { + $0.publicKey.description == p256PublicKey || $0.publicKey + .description == secp256PublicKey + } + guard let selectedKey = keys?.first, + let address = account?.address.hex, let privateKey = providerKey + else { + log.error("[Import] keys of account not match the public:\(String(describing: p256PublicKey)) or \(String(describing: secp256PublicKey))") + return + } + Task { + HUD.loading() + do { + let publicKey = selectedKey.publicKey.description + let response: Network.EmptyResponse = try await Network + .requestWithRawModel(FRWAPI.User.checkimport(publicKey)) + if response.httpCode == 409 { + try await UserManager.shared.importLogin( + by: address, + userName: "", + flowKey: selectedKey, + privateKey: privateKey + ) + HUD.dismissLoading() + Router.popToRoot() + } else if response.httpCode == 200 { + HUD.dismissLoading() + createUserName { name in + Task { + HUD.loading() + try await UserManager.shared.importLogin( + by: address, + userName: name, + flowKey: selectedKey, + privateKey: privateKey, + isImport: true + ) + HUD.dismissLoading() + Router.popToRoot() + } + } + } + } catch { + if let code = error.moyaCode() { + if code == 409 { + do { + HUD.loading() + try await UserManager.shared.importLogin( + by: address, + userName: "", + flowKey: selectedKey, + privateKey: privateKey + ) + HUD.dismissLoading() + Router.popToRoot() + } catch { + log.error("[Import] login 409 :\(error)") + } + } + } + log.error("[Import] check public key own error:\(error)") + } + } + } + + func onAdvance() { + isAdvanced.toggle() + } + + // MARK: Private + + private var providerKey: FlowWalletKit.SeedPhraseKey? + private var wallet: FlowWalletKit.Wallet? = nil + private var account: Flow.Account? = nil + + // select one address + @MainActor + private func showAllAccounts() { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + let list = wallet?.flowAccounts?[chainId] ?? [] + + let viewModel = ImportAccountsViewModel(list: list) { [weak self] account in + log.info("[Import] selected address: \(account.address.hex)") + self?.selectedAccount(by: account) + } + Router.route(to: RouteMap.RestoreLogin.importAddress(viewModel)) + } +} + +extension SeedPhraseLoginViewModel { + private var p256PublicKey: String? { + (try? providerKey?.publicKey(signAlgo: .ECDSA_P256))?.hexValue.dropPrefix("04") + } + + private var secp256PublicKey: String? { + (try? providerKey?.publicKey(signAlgo: .ECDSA_SECP256k1))?.hexValue.dropPrefix("04") + } +} diff --git a/FRW/Modules/Login/ViewModel/SyncAddDeviceViewModel.swift b/FRW/Modules/Login/ViewModel/SyncAddDeviceViewModel.swift index 79bc85fb..08a81f6b 100644 --- a/FRW/Modules/Login/ViewModel/SyncAddDeviceViewModel.swift +++ b/FRW/Modules/Login/ViewModel/SyncAddDeviceViewModel.swift @@ -90,10 +90,7 @@ class SyncAddDeviceViewModel: ObservableObject { let response: Network.EmptyResponse = try await Network .requestWithRawModel(FRWAPI.User.syncDevice(self.model)) if response.httpCode != 200 { - log - .info( - "[Sync Device] add device failed. publicKey: \(self.model.accountKey.publicKey)" - ) + log.info("[Sync Device] add device failed. publicKey: \(self.model.accountKey.publicKey)") DispatchQueue.main.async { self.result = "add device failed." } diff --git a/FRW/Modules/Login/ViewModel/SyncConfirmViewModel.swift b/FRW/Modules/Login/ViewModel/SyncConfirmViewModel.swift index 70d836e1..31b2fe58 100644 --- a/FRW/Modules/Login/ViewModel/SyncConfirmViewModel.swift +++ b/FRW/Modules/Login/ViewModel/SyncConfirmViewModel.swift @@ -6,7 +6,7 @@ // import Flow -import FlowWalletCore +import FlowWalletKit import Foundation import WalletConnectSign import WalletConnectUtils @@ -22,8 +22,9 @@ enum SyncAccountStatus { class SyncConfirmViewModel: ObservableObject { // MARK: Lifecycle - init(userId: String) { + init(userId: String, address: String?) { self.userId = userId + self.address = address NotificationCenter.default.addObserver( self, selector: #selector(onSyncStatusChanged), @@ -40,6 +41,7 @@ class SyncConfirmViewModel: ObservableObject { var isPresented: Bool = false var userId: String + var address: String? func onAddDevice() { isPresented = true @@ -54,7 +56,7 @@ class SyncConfirmViewModel: ObservableObject { let blockchain = Sign.FlowWallet.blockchain let params = try await WalletConnectSyncDevice - .packageDeviceInfo(userId: self.userId) + .packageDeviceInfo(userId: self.userId, address: address) let request = try Request( topic: currentSession.topic, method: methods, diff --git a/FRW/Modules/Login/ViewsInLoginModule.swift b/FRW/Modules/Login/ViewsInLoginModule.swift new file mode 100644 index 00000000..68300e91 --- /dev/null +++ b/FRW/Modules/Login/ViewsInLoginModule.swift @@ -0,0 +1,232 @@ +// +// ViewsInLoginModule.swift +// FRW +// +// Created by cat on 2024/8/19. +// + +import SwiftUI + +// MARK: - ImportTitleHeader + +struct ImportTitleHeader: View { + var backupType: RestoreWalletViewModel.ImportType + + var body: some View { + VStack(spacing: 16) { + Image(backupType.icon40) + .resizable() + .frame(width: 64, height: 64) + Text(backupType.title) + .font(.inter(size: 20, weight: .bold)) + .foregroundStyle(Color.Theme.Text.black) + .frame(height: 32) + } + } +} + +// MARK: - ImportSectionTitleView + +struct ImportSectionTitleView: View { + let title: String + let isStar: Bool + + var body: some View { + HStack(spacing: 0) { + Text(title) + .font(.inter(size: 14, weight: .bold)) + .foregroundStyle(Color.Theme.Text.black) + if isStar { + Text(" *") + .font(.inter(size: 14, weight: .bold)) + .foregroundStyle(Color.Theme.Accent.red) + } + Spacer() + } + } +} + +// MARK: - ImportTextView + +struct ImportTextView: View { + @Binding + var content: String + var placeholder: String? = "" + var isFirstResponder: Bool = false + var textDidChange: (String) -> Void + + var body: some View { + ZStack(alignment: .topLeading) { + if content.isEmpty { + Text(placeholder ?? "") + .font(.inter(size: 14)) + .foregroundColor(.LL.note) + .padding(.top, 8) + } + TextEditor(text: $content) + .introspectTextView { view in + if isFirstResponder { + DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { + view.becomeFirstResponder() + } + } + view.tintColor = Color.LL.orange.toUIColor() + view.backgroundColor = .clear + } + .keyboardType(.alphabet) + .autocapitalization(.none) + .disableAutocorrection(true) + .onChange(of: content, perform: { value in + textDidChange(value) + }) + .textEditorBackground(.clear) + .font(.inter(size: 14)) + } + .padding(20) + .background { + RoundedRectangle(cornerRadius: 16) + .foregroundColor(.Theme.Background.bg2) + } + } +} + +// MARK: - AnimatedSecureTextField + +public struct AnimatedSecureTextField: View { + // MARK: Lifecycle + + public init( + placeholder: String, + text: Binding, + textDidChange: @escaping (String) -> Void + ) { + self.placeholder = placeholder + _text = text + self.textDidChange = textDidChange + self.field = .password + } + + // MARK: Public + + public let placeholder: String + + public var body: some View { + ZStack(alignment: .leading) { + if text.isEmpty { + HStack { + Text(placeholder) + .font(.inter(size: 14)) + .foregroundStyle(Color.Theme.Text.black3) + Spacer() + } + // .padding(.horizontal, 16.0) + .frame(maxWidth: .infinity) + .layoutPriority(1) + .onTapGesture { + withAnimation(.easeInOut(duration: 0.3)) { + field = .password + } + } + } + + if isSecure { + SecureField("", text: $text) + .disableAutocorrection(true) + .foregroundStyle(Color.Theme.Text.black) + .autocapitalization(.none) + .frame(maxWidth: .infinity) + .focused($field, equals: .password) + .font(.inter(size: 14)) + .contentShape(Rectangle()) + .onChange(of: text) { text in + textDidChange(text) + } + + } else { + TextField("", text: $text) + .disableAutocorrection(true) + .foregroundStyle(Color.Theme.Text.black) + .autocapitalization(.none) + .frame(maxWidth: .infinity) + .focused($field, equals: .password) + .font(.inter(size: 14)) + .contentShape(Rectangle()) + .onChange(of: text) { text in + textDidChange(text) + } + } + + HStack { + Spacer() + + if !text.isEmpty { + Button { + isSecure.toggle() + } label: { + if isSecure { + Image(systemName: "eye") + .resizable() + .foregroundStyle(Color.Theme.Text.black) + .frame(width: 20, height: 12) + } else { + Image(systemName: "eye.slash") + .resizable() + .foregroundStyle(Color.Theme.Text.black) + .frame(width: 20, height: 12) + } + } + } + } + } + .padding(.horizontal, 20) + .frame(height: 64) + .background { + RoundedRectangle(cornerRadius: 16.0) + .foregroundColor(.Theme.Background.bg2) + } + } + + // MARK: Internal + + @State + var isSecure = false + @Binding + var text: String + + var textDidChange: (String) -> Void + + // MARK: Private + + private enum FocusedField: Int, Hashable { + case password + } + + @FocusState + private var field: FocusedField? +} + +#Preview("1") { + ImportTitleHeader(backupType: .keyStore) +} + +#Preview("2") { + ImportSectionTitleView(title: "JSON", isStar: true) +} + +#Preview("3") { + ImportTextView(content: .constant(""), placeholder: "abc") { _ in + } +} + +#Preview("4") { + struct AnimatedSecureTextFieldPreview: View { + @State + private var text = "" + var body: some View { + AnimatedSecureTextField(placeholder: "abc", text: $text) { _ in + } + } + } + + return AnimatedSecureTextFieldPreview() +} diff --git a/FRW/Modules/Migration/Migration.swift b/FRW/Modules/Migration/Migration.swift index 63fb5604..f9bcdf58 100644 --- a/FRW/Modules/Migration/Migration.swift +++ b/FRW/Modules/Migration/Migration.swift @@ -5,7 +5,7 @@ // Created by cat on 2024/4/26. // -import FlowWalletCore +import FlowWalletKit import Foundation import KeychainAccess @@ -30,8 +30,8 @@ struct Migration { func start() { fetchiCloudRemoteList() - WallectSecureEnclave.Store.migrationFromLilicoTag() - try? WallectSecureEnclave.Store.twoBackupIfNeed() +// WallectSecureEnclave.Store.migrationFromLilicoTag() +// try? WallectSecureEnclave.Store.twoBackupIfNeed() } // MARK: Private diff --git a/FRW/Modules/MultiBackup/Manager/MultiBackupManager.swift b/FRW/Modules/MultiBackup/Manager/MultiBackupManager.swift index dca6300a..88124a7e 100644 --- a/FRW/Modules/MultiBackup/Manager/MultiBackupManager.swift +++ b/FRW/Modules/MultiBackup/Manager/MultiBackupManager.swift @@ -8,7 +8,7 @@ import CryptoKit import FirebaseAuth import Flow -import FlowWalletCore +import FlowWalletKit import Foundation import GoogleAPIClientForREST_Drive import GoogleAPIClientForRESTCore @@ -122,7 +122,8 @@ extension MultiBackupManager { } guard let hdWallet = WalletManager.shared.createHDWallet(), - let mnemonicData = hdWallet.mnemonic.data(using: .utf8) else { + let mnemonicData = hdWallet.mnemonic.data(using: .utf8) + else { HUD.error(title: "empty_wallet_key".localized) throw BackupError.missingMnemonic } @@ -509,8 +510,9 @@ extension MultiBackupManager { let address = Flow.Address(hex: addressDes) - let sec = try WallectSecureEnclave() - let key = try sec.accountKey() + let secureKey = try SecureEnclaveKey.create() + let key = try secureKey.flowAccountKey() + do { HUD.loading() let tx = try await FlowNetwork.addKeyWithMulti( @@ -547,8 +549,7 @@ extension MultiBackupManager { let request = SignedRequest( accountKey: AccountKey( hashAlgo: key.hashAlgo.index, - publicKey: key.publicKey - .description, + publicKey: key.publicKey.description, signAlgo: key.signAlgo.index, weight: key.weight ), @@ -557,17 +558,12 @@ extension MultiBackupManager { let response: Network.EmptyResponse = try await Network .requestWithRawModel(FRWAPI.User.addSigned(request)) if response.httpCode != 200 { - log.info("[Multi-backup] sync failed") + log.error("[Multi-backup] sync failed") } else { - print("") - if let privateKey = sec.key.privateKey { - try WallectSecureEnclave.Store.store( - key: firstItem.userId, - value: privateKey.dataRepresentation - ) - } - - try await UserManager.shared.restoreLogin(userId: firstItem.userId) + try secureKey.store(id: firstItem.userId) + let storeUser = UserManager.StoreUser(publicKey: key.publicKey.description, address: firstItem.address, userId: firstItem.userId, keyType: .secureEnclave, account: nil) + LocalUserDefaults.shared.addUser(user: storeUser) + try await UserManager.shared.restoreLogin(with: firstItem.userId) Router.popToRoot() } } else { diff --git a/FRW/Modules/MultiBackup/ViewModel/BackupUploadViewModel.swift b/FRW/Modules/MultiBackup/ViewModel/BackupUploadViewModel.swift index 84ca54f5..4340f684 100644 --- a/FRW/Modules/MultiBackup/ViewModel/BackupUploadViewModel.swift +++ b/FRW/Modules/MultiBackup/ViewModel/BackupUploadViewModel.swift @@ -168,11 +168,16 @@ class BackupUploadViewModel: ObservableObject { toggleProcess(process: .upload) onClickButton() } else { - buttonState = .enabled + DispatchQueue.main.async { + self.buttonState = .enabled + } + HUD.error(title: "create error on chain") } } catch { - buttonState = .enabled + DispatchQueue.main.async { + self.buttonState = .enabled + } trackCreatFailed(message: "idle:" + error.localizedDescription) } } diff --git a/FRW/Modules/MultiBackup/ViewModel/ThingsNeedKnowViewModel.swift b/FRW/Modules/MultiBackup/ViewModel/ThingsNeedKnowViewModel.swift index bcdd7fc5..22dff58a 100644 --- a/FRW/Modules/MultiBackup/ViewModel/ThingsNeedKnowViewModel.swift +++ b/FRW/Modules/MultiBackup/ViewModel/ThingsNeedKnowViewModel.swift @@ -10,34 +10,39 @@ import Foundation import KeychainAccess import UIKit import WalletCore +import FlowWalletKit class ThingsNeedKnowViewModel: ObservableObject { // MARK: Lifecycle - + init() { - self.hdWallet = HDWallet(strength: mnemonicStrength, passphrase: "") + self.keyProvider = try? SeedPhraseKey.createBackup() } // MARK: Internal func onCreate() { - guard let hdWallet = hdWallet else { + guard let keyProvider = keyProvider else { + HUD.error(title: "init keyProvider failed.") + return + } + guard let publicKey = try? keyProvider.publicKey(signAlgo: signAlgo)?.hexString else { HUD.error(title: "fetch public key failed.") return } HUD.loading() Task { do { - let addStatus = try await addKeyToFlow(hdWallet: hdWallet) + let addStatus = try await addKeyToFlow(publicKey: publicKey) if !addStatus { HUD.error(title: "add key failed.") return } - try await addKeyToService(hdWallet: hdWallet) - try addKeyToLocal(hdWallet: hdWallet) + try await addKeyToService(publicKey: publicKey) + try addKeyToLocal() DispatchQueue.main.async { HUD.dismissLoading() - Router.route(to: RouteMap.Backup.showRecoveryPhraseBackup(hdWallet.mnemonic)) + Router.route(to: RouteMap.Backup.showRecoveryPhraseBackup(keyProvider.hdWallet.mnemonic)) } } catch { HUD.error(title: "\(error.localizedDescription)") @@ -50,12 +55,11 @@ class ThingsNeedKnowViewModel: ObservableObject { // MARK: Private - private var hdWallet: HDWallet? - private let mnemonicStrength: Int32 = 128 - private let store = PhraseKeyStore() + private var keyProvider: SeedPhraseKey? + private var signAlgo: Flow.SignatureAlgorithm = .ECDSA_SECP256k1 + + private func addKeyToFlow(publicKey: String) async throws -> Bool { - private func addKeyToFlow(hdWallet: HDWallet) async throws -> Bool { - let publicKey = hdWallet.getPublicKey() let address = WalletManager.shared.address let flowKey = flowKey(with: publicKey) @@ -76,11 +80,10 @@ class ThingsNeedKnowViewModel: ObservableObject { return true } - private func addKeyToService(hdWallet: HDWallet) async throws { - let publicKey = hdWallet.getPublicKey() + private func addKeyToService(publicKey: String) async throws { + let type = BackupType.fullWeightSeedPhrase let backupName = type.title - let flowKey = flowKey(with: publicKey) let deviceInfo = SyncInfo.DeviceInfo( accountKey: flowKey.toCodableModel(), @@ -103,7 +106,7 @@ class ThingsNeedKnowViewModel: ObservableObject { let flowPublicKey = Flow.PublicKey(hex: publicKey) let flowKey = Flow.AccountKey( publicKey: flowPublicKey, - signAlgo: .ECDSA_SECP256k1, + signAlgo: signAlgo, hashAlgo: .SHA2_256, weight: 1000 ) @@ -120,10 +123,15 @@ class ThingsNeedKnowViewModel: ObservableObject { return accountModel.index } - private func addKeyToLocal(hdWallet: HDWallet) throws { + private func addKeyToLocal() throws { guard let uid = UserManager.shared.activatedUID else { throw BackupError.missingUid } - try? store.addMnemonic(mnemonic: hdWallet.mnemonic, userId: uid) + do { + try keyProvider?.storeBackup(id: uid) + } catch { + log.error("[Back] create 12 Phrase backup failed.\(error.localizedDescription)") + } + } } diff --git a/FRW/Modules/MultiRestore/ViewModel/RestoreMultiAccountViewModel.swift b/FRW/Modules/MultiRestore/ViewModel/RestoreMultiAccountViewModel.swift index 20c30755..b4d95750 100644 --- a/FRW/Modules/MultiRestore/ViewModel/RestoreMultiAccountViewModel.swift +++ b/FRW/Modules/MultiRestore/ViewModel/RestoreMultiAccountViewModel.swift @@ -5,7 +5,7 @@ // Created by cat on 2024/1/7. // -import FlowWalletCore +import FlowWalletKit import Foundation class RestoreMultiAccountViewModel: ObservableObject { @@ -38,43 +38,25 @@ class RestoreMultiAccountViewModel: ObservableObject { // If it is the current user, do nothing and return directly. if let userId = UserManager.shared.activatedUID, userId == selectedUserId { - if (try? WallectSecureEnclave.Store.fetchModel(by: selectedUserId)) != nil { - Router.popToRoot() - return - } - if let mnemonic = WalletManager.shared.getMnemonicFromKeychain(uid: selectedUserId), - !mnemonic.isEmpty { - Router.popToRoot() - return - } + Router.popToRoot() + return } // If it is in the login list, switch user if UserManager.shared.loginUIDList.contains(selectedUserId) { - var isValidKey = false - if (try? WallectSecureEnclave.Store.fetchModel(by: selectedUserId)) != nil { - isValidKey = true - } - if let mnemonic = WalletManager.shared.getMnemonicFromKeychain(uid: selectedUserId), - !mnemonic.isEmpty { - isValidKey = true - } - - if isValidKey { - Task { - do { - HUD.loading() - try await UserManager.shared.switchAccount(withUID: selectedUserId) - MultiAccountStorage.shared.setBackupType(.multi, uid: selectedUserId) - HUD.dismissLoading() - } catch { - log.error("switch account failed", context: error) - HUD.dismissLoading() - HUD.error(title: error.localizedDescription) - } + Task { + do { + HUD.loading() + try await UserManager.shared.switchAccount(withUID: selectedUserId) + MultiAccountStorage.shared.setBackupType(.multi, uid: selectedUserId) + HUD.dismissLoading() + } catch { + log.error("switch account failed", context: error) + HUD.dismissLoading() + HUD.error(title: error.localizedDescription) } - return } + return } guard selectedUser.count > 1 else { diff --git a/FRW/Modules/MultiRestore/ViewModel/RestoreMultiConnectViewModel.swift b/FRW/Modules/MultiRestore/ViewModel/RestoreMultiConnectViewModel.swift index 6ce72598..d31dda9d 100644 --- a/FRW/Modules/MultiRestore/ViewModel/RestoreMultiConnectViewModel.swift +++ b/FRW/Modules/MultiRestore/ViewModel/RestoreMultiConnectViewModel.swift @@ -143,7 +143,8 @@ extension RestoreMultiConnectViewModel { private func createStoreItem(with mnemonic: String) { guard let hdWallet = WalletManager.shared.createHDWallet(mnemonic: mnemonic), - let mnemonicData = hdWallet.mnemonic.data(using: .utf8) else { + let mnemonicData = hdWallet.mnemonic.data(using: .utf8) + else { HUD.error(title: "empty_wallet_key".localized) return } diff --git a/FRW/Modules/MultiRestore/Views/RestoreListView.swift b/FRW/Modules/MultiRestore/Views/RestoreListView.swift index 699e1c3a..58e98966 100644 --- a/FRW/Modules/MultiRestore/Views/RestoreListView.swift +++ b/FRW/Modules/MultiRestore/Views/RestoreListView.swift @@ -20,7 +20,7 @@ struct RestoreListView: RouteableView { VStack(alignment: .leading, spacing: 0) { VStack(alignment: .leading, spacing: 16) { HStack { - Text("restore".localized) + Text("import_btn_text".localized) .foregroundColor(Color.Theme.Accent.green) .bold() Text("wallet".localized) @@ -39,7 +39,7 @@ struct RestoreListView: RouteableView { RestoreListView.CardView( icon: "restore.icon.device", title: "restore_device_title".localized, - des: "restore_device_desc".localized + des: "restore_device_desc_2".localized ) { if LocalUserDefaults.shared.flowNetwork != .mainnet { showSwitchUserAlert = true @@ -62,8 +62,8 @@ struct RestoreListView: RouteableView { RestoreListView.CardView( icon: "restore.icon.phrase", - title: "restore_phrase_title".localized, - des: "restore_phrase_desc".localized + title: "restore_phrase_title_2".localized, + des: "restore_phrase_desc_2".localized ) { if LocalUserDefaults.shared.flowNetwork != .mainnet { showSwitchUserAlert = true diff --git a/FRW/Modules/NFT/NFTModel/NFTModel.swift b/FRW/Modules/NFT/NFTModel/NFTModel.swift index 3b26c6b8..8833a14d 100644 --- a/FRW/Modules/NFT/NFTModel/NFTModel.swift +++ b/FRW/Modules/NFT/NFTModel/NFTModel.swift @@ -259,7 +259,8 @@ struct NFTModel: Codable, Hashable, Identifiable { var publicIdentifier: String { guard let path = collection?.path?.privatePath, - let identifier = path.split(separator: "/").last else { + let identifier = path.split(separator: "/").last + else { return "" } return String(identifier) diff --git a/FRW/Modules/NFT/NFTTransferView.swift b/FRW/Modules/NFT/NFTTransferView.swift index 99cab86e..39f6e684 100644 --- a/FRW/Modules/NFT/NFTTransferView.swift +++ b/FRW/Modules/NFT/NFTTransferView.swift @@ -149,7 +149,8 @@ class NFTTransferViewModel: ObservableObject { guard let toAddress = targetContact.address, let primaryAddress = WalletManager.shared.getPrimaryWalletAddress(), let currentAddress = WalletManager.shared - .getWatchAddressOrChildAccountAddressOrPrimaryAddress() else { + .getWatchAddressOrChildAccountAddressOrPrimaryAddress() + else { return } @@ -226,7 +227,8 @@ class NFTTransferViewModel: ObservableObject { case (.coa, .flow): let nftId = nft.response.id guard let identifier = nft.collection?.flowIdentifier ?? nft.response - .flowIdentifier else { + .flowIdentifier + else { throw NFTError.noCollectionInfo } if primaryAddress.lowercased() == toAddress.lowercased() { @@ -321,7 +323,8 @@ class NFTTransferViewModel: ObservableObject { ) case (.linked, .coa): guard let nftIdentifier = nft.response.flowIdentifier, - let nftId = UInt64(nft.response.id) else { + let nftId = UInt64(nft.response.id) + else { return } let childAddr = fromChildAccount?.addr ?? currentAddress diff --git a/FRW/Modules/Profile/AccountSetting/ChildAccountDetailView.swift b/FRW/Modules/Profile/AccountSetting/ChildAccountDetailView.swift index af3fb372..569ad20a 100644 --- a/FRW/Modules/Profile/AccountSetting/ChildAccountDetailView.swift +++ b/FRW/Modules/Profile/AccountSetting/ChildAccountDetailView.swift @@ -71,7 +71,7 @@ class ChildAccountDetailViewModel: ObservableObject { if index == 0 { if var list = collections { if !showEmptyCollection { - list = list.filter { $0.count > 0 } + list = list.filter { $0.count > 0 } } accessibleItems = list } else { @@ -164,7 +164,8 @@ class ChildAccountDetailViewModel: ObservableObject { Task { guard let parent = WalletManager.shared.getPrimaryWalletAddress(), - let child = self.childAccount.addr else { + let child = self.childAccount.addr + else { DispatchQueue.main.async { self.collections = [] self.accessibleItems = [] @@ -238,7 +239,8 @@ class ChildAccountDetailViewModel: ObservableObject { Task { guard let parent = WalletManager.shared.getPrimaryWalletAddress(), - let child = childAccount.addr else { + let child = childAccount.addr + else { DispatchQueue.main.async { self.coins = [] self.accessibleItems = [] diff --git a/FRW/Modules/Profile/DeveloperMode/DeveloperModeView.swift b/FRW/Modules/Profile/DeveloperMode/DeveloperModeView.swift index a296609d..9aa1f35c 100644 --- a/FRW/Modules/Profile/DeveloperMode/DeveloperModeView.swift +++ b/FRW/Modules/Profile/DeveloperMode/DeveloperModeView.swift @@ -224,10 +224,11 @@ struct DeveloperModeView: RouteableView { .font(.inter(size: 17, weight: .medium)) .foregroundStyle(Color.Theme.Text.black8) Spacer() - - Text("\(CadenceManager.shared.current.version ?? "")") - .font(.inter(size: 17)) - .foregroundStyle(Color.Theme.Text.black8) + Text( + "\(String(describing: CadenceManager.shared.current.version ?? ""))" + ) + .font(.inter(size: 17)) + .foregroundStyle(Color.Theme.Text.black8) } .frame(height: 64) .padding(.horizontal, 16) @@ -308,6 +309,34 @@ struct DeveloperModeView: RouteableView { } .frame(height: 64) .padding(.horizontal, 16) + + HStack { + Button { + LocalUserDefaults.shared.migrationFinished = false + } label: { + Text("reset migration flag") + .font(.inter(size: 14, weight: .medium)) + .foregroundStyle(Color.Theme.Text.black8) + } + Spacer() + } + .frame(height: 64) + .padding(.horizontal, 16) + + HStack { + Button { + let list = LocalUserDefaults.shared.userList + log.debug("[User] \(list)") + + } label: { + Text("copy all user") + .font(.inter(size: 14, weight: .medium)) + .foregroundStyle(Color.Theme.Text.black8) + } + Spacer() + } + .frame(height: 64) + .padding(.horizontal, 16) } .background(.LL.bgForIcon) .cornerRadius(16) diff --git a/FRW/Modules/Profile/DeveloperMode/KeychainListView.swift b/FRW/Modules/Profile/DeveloperMode/KeychainListView.swift index c758117a..14892216 100644 --- a/FRW/Modules/Profile/DeveloperMode/KeychainListView.swift +++ b/FRW/Modules/Profile/DeveloperMode/KeychainListView.swift @@ -19,10 +19,11 @@ struct KeychainListView: RouteableView { Section { ForEach(0.. some View { - HStack { - VStack(alignment: .leading) { - Text("userId:\(key)") - .font(.inter(size: 16)) - .foregroundStyle(Color.Theme.Accent.red) - .lineLimit(2) - Text("publickKey: \(value)") - .font(.inter(size: 16)) - .foregroundStyle( - isCurrentKey(key: key) ? Color.Theme.Text.black8 : Color.Theme - .evm - ) - .lineLimit(2) - } - Spacer() - Button { - UIPasteboard.general.string = - key + "\n" + value - } label: { - Image(systemName: "doc.on.doc.fill") - .frame(width: 24, height: 24) - } - } - .padding(.horizontal, 16) - .frame(height: 80) - .background(Color.Theme.Background.silver) - } - func isCurrentKey(key: String) -> Bool { - UserManager.shared.activatedUID == key + func isCurrentKey(info: [String: String]) -> Bool { + let key = info["userId"] + return UserManager.shared.activatedUID == key } // MARK: Private @@ -144,6 +178,82 @@ struct KeychainListView: RouteableView { private var viewModel = KeychainListViewModel() } +extension KeychainListView { + struct Item: View { + var info: [String: String] + var isCurrent: Bool + var onClick:(([String: String]) -> Void) + var onDelete:((String) -> Void) + var body: some View { + VStack(alignment: .leading, spacing: 0) { + HStack { + Text(info["userId"] ?? "") + .font(.inter(size: 16)) + .foregroundStyle(isCurrent ? Color.Theme.Accent.orange : Color.Theme.Text.black8) + .lineLimit(1) + .truncationMode(.middle) + Spacer() + } + .frame(maxWidth: .infinity) + .padding(16) + .background(Color.Theme.Background.grey) + + VStack { + ForEach(sorting: info,id: \.self) { key,value in + if key != "userId" { + HStack { + Text(key.uppercasedFirstLetter()) + .font(.inter(size: 14)) + .foregroundStyle(Color.Theme.Text.black8) + .lineLimit(1) + .truncationMode(.middle) + Spacer() + Text(value) + .font(.inter(size: 14, weight: .bold)) + .foregroundStyle(Color.Theme.Text.black3) + .lineLimit(1) + .truncationMode(.middle) + } + .padding(.vertical, 2) + } + } + } + .padding(16) + .background(Color.Theme.Background.grey.opacity(0.6)) + + HStack(spacing: 12){ +// Button { +// onDelete(info["userId"] ?? "") +// } label: { +// Text("Delete") +// .font(.inter(size: 12)) +// .padding(4) +// } + + Button { + UIPasteboard.general.string = info.toJSONString() + HUD.success(title: "Copy Success") + } label: { + Text("Copy") + .font(.inter(size: 12)) + } + Spacer() + } + .padding(.horizontal,16) + .background(Color.Theme.Background.grey.opacity(0.6)) + .frame(maxWidth: .infinity) + + } + .cornerRadius(16) + .onTapGesture { + onClick(info) + } + } + } +} + #Preview { - KeychainListView() + KeychainListView.Item(info: ["userId": "ac12312312", "public Key": "123123","index": "2"], isCurrent: false){ item in + } onDelete: { userId in + } } diff --git a/FRW/Modules/Profile/DeveloperMode/KeychainListViewModel.swift b/FRW/Modules/Profile/DeveloperMode/KeychainListViewModel.swift index a4c5de16..00bbdf58 100644 --- a/FRW/Modules/Profile/DeveloperMode/KeychainListViewModel.swift +++ b/FRW/Modules/Profile/DeveloperMode/KeychainListViewModel.swift @@ -5,7 +5,7 @@ // Created by cat on 2024/4/26. // -import FlowWalletCore +import FlowWalletKit import Foundation import KeychainAccess import SwiftUI @@ -23,7 +23,7 @@ class KeychainListViewModel: ObservableObject { .label("Flow Wallet Backup") self.seKeychain = Keychain(service: "com.flowfoundation.wallet.securekey") - + fecth() } @@ -48,21 +48,22 @@ class KeychainListViewModel: ObservableObject { } } - func radomUpdatePrivateKey(index: Int) { + func radomUpdatePrivateKey(index _: Int) { if isDevModel { - let model = seList[index] - if let key = model.keys.first, - let model = try? WallectSecureEnclave.Store.fetchModel(by: key) { - do { - let toValue = model.publicKey + ("999".data(using: .utf8) ?? Data()) - try WallectSecureEnclave.Store.dangerUpdate( - key: model.uniq, - fromValue: model.publicKey, - toValue: toValue - ) - HUD.success(title: "修改成功") - } catch {} + // Modifying private key for test + } + } + + func deleteSeedPhrase(_ index: Int) { + do { + let keychain = SeedPhraseKey.seedPhraseStorage + guard let key = spItem[safe:index]?["userId"] else { + return } + try keychain.remove(key) + HUD.success(title: "remove Seed Phrase key") + }catch { + HUD.error(title: error.localizedDescription) } } @@ -100,30 +101,77 @@ class KeychainListViewModel: ObservableObject { private let seKeychain: Keychain private let mnemonicPrefix = "lilico.mnemonic." + var seItem: [[String: String]] = [] + var spItem: [[String: String]] = [] + var pkItem: [[String: String]] = [] + var ksItem: [[String: String]] = [] + private func fecth() { - remoteList = remoteKeychain.allItems() - loadiCloudBackup() - if let item = remoteList.last { - log.info(item) - } - localList = localKeychain.allItems() - do { - guard let data = try seKeychain.getData("user.keystore") else { - return + fetchSecureEnclave() + fetchSeedphrase() + fetchPrivateKey() + } + + private func fetchSecureEnclave() { + let keychain = SecureEnclaveKey.KeychainStorage + let keys = keychain.allKeys + for key in keys { + let wallet = try? SecureEnclaveKey.wallet(id: key) + if let wallet { + let publicKey = (try? wallet.publicKey()?.hexString) ?? "" + seItem.append(["userId": key, "public key": publicKey]) + }else { + seItem.append(["userId": key, "public key": "error"]) } - let users = try? JSONDecoder().decode([WallectSecureEnclave.StoreInfo].self, from: data) - seList = users?.map { info in - - if let sec = try? WallectSecureEnclave(privateKey: info.publicKey), - let publicKey = sec.key.publickeyValue { - return [info.uniq: publicKey] - } else { - return [info.uniq: "undefined"] + } + } + + private func fetchSeedphrase() { + let keychain = SeedPhraseKey.seedPhraseStorage + let keys = keychain.allKeys + for key in keys { + let wallet = try? SeedPhraseKey.wallet(id: key) + if let wallet { + let mnemonic = wallet.hdWallet.mnemonic + var result = ["userId": key, + "mnemonic": mnemonic, + "length": String(describing:wallet.seedPhraseLength.rawValue)] + if !wallet.passphrase.isEmpty { + result["passphrase"] = wallet.passphrase } + if !wallet.derivationPath.isEmpty { + result["derivationPath"] = wallet.derivationPath + } + spItem.append(result) + }else { + spItem.append(["userId": key,"mnemonic": "error"]) + } + } + } - } ?? [] - } catch { - log.error("[kc] fetch failed. \(error)") + private func fetchPrivateKey() { + let keychain = PrivateKey.PKStorage + let keys = keychain.allKeys + for key in keys { + let wallet = try? PrivateKey.wallet(id: key) + if let wallet { + let P256publicKey = (try? wallet.publicKey(signAlgo: .ECDSA_P256)?.hexString) ?? "" + let SECPpublicKey = (try? wallet.publicKey(signAlgo: .ECDSA_SECP256k1)?.hexString) ?? "" + pkItem.append(["userId": key,"P256": P256publicKey, "SECP256k1": SECPpublicKey]) + }else { + pkItem.append(["userId": key,"public key": "error"]) + } } } + + + func clearAllKey() { + let seKeychain = SecureEnclaveKey.KeychainStorage + try? seKeychain.removeAll() + let spKeychain = SeedPhraseKey.seedPhraseStorage + try? spKeychain.removeAll() + let pKeychain = PrivateKey.PKStorage + try? pKeychain.removeAll() + LocalUserDefaults.shared.migrationFinished = false + } } diff --git a/FRW/Modules/Register/ViewModel/UsernameViewModel.swift b/FRW/Modules/Register/ViewModel/UsernameViewModel.swift index 5836c20c..09067f16 100644 --- a/FRW/Modules/Register/ViewModel/UsernameViewModel.swift +++ b/FRW/Modules/Register/ViewModel/UsernameViewModel.swift @@ -98,7 +98,7 @@ class UsernameViewModel: ViewModel { Task { do { - let txid = try await UserManager.shared.register(currentText, mnemonic: nil) + let txid = try await UserManager.shared.register(currentText) let viewModel = CreateProfileWaitingViewModel(txId: txid ?? "") { _ in DispatchQueue.main.async { diff --git a/FRW/Modules/Staking/StakeAmount/StakeAmountViewModel.swift b/FRW/Modules/Staking/StakeAmount/StakeAmountViewModel.swift index 12035336..6e076847 100644 --- a/FRW/Modules/Staking/StakeAmount/StakeAmountViewModel.swift +++ b/FRW/Modules/Staking/StakeAmount/StakeAmountViewModel.swift @@ -43,6 +43,7 @@ class StakeAmountViewModel: ObservableObject { init(provider: StakingProvider, isUnstake: Bool) { self.provider = provider self.isUnstake = isUnstake + let token = WalletManager.shared.flowToken self.balance = isUnstake ? (provider.currentNode?.stakingCount ?? 0) : WalletManager.shared .getBalance(byId: token?.contractId ?? "").doubleValue diff --git a/FRW/Modules/TrustProvider/TrustJSMessageHandler.swift b/FRW/Modules/TrustProvider/TrustJSMessageHandler.swift index 5986f6ed..50126fa4 100644 --- a/FRW/Modules/TrustProvider/TrustJSMessageHandler.swift +++ b/FRW/Modules/TrustProvider/TrustJSMessageHandler.swift @@ -383,11 +383,8 @@ extension TrustJSMessageHandler { if result.isFailed { HUD.error(title: "transaction failed") self.cancel(id: id) - EventTrack.Transaction - .evmSigned(txId: txid.hex, success: false) return } - EventTrack.Transaction.evmSigned(txId: txid.hex, success: true) let model = try await FlowNetwork.fetchEVMTransactionResult(txid: txid.hex) DispatchQueue.main.async { self.webVC?.webView.tw diff --git a/FRW/Modules/Wallet/AddToken/AddTokenViewModel.swift b/FRW/Modules/Wallet/AddToken/AddTokenViewModel.swift index a4b6c4fe..2c9482f1 100644 --- a/FRW/Modules/Wallet/AddToken/AddTokenViewModel.swift +++ b/FRW/Modules/Wallet/AddToken/AddTokenViewModel.swift @@ -255,7 +255,10 @@ extension AddTokenViewModel { } } catch { debugPrint("AddTokenViewModel -> confirmActiveTokenAction error: \(error)") - isRequesting = false + DispatchQueue.main.async { + self.isRequesting = false + } + failedBlock() } } diff --git a/FRW/Modules/Wallet/CreateAccount/CreateProfileWaitingViewModel.swift b/FRW/Modules/Wallet/CreateAccount/CreateProfileWaitingViewModel.swift index a9ef3dee..f59c4d3f 100644 --- a/FRW/Modules/Wallet/CreateAccount/CreateProfileWaitingViewModel.swift +++ b/FRW/Modules/Wallet/CreateAccount/CreateProfileWaitingViewModel.swift @@ -27,11 +27,12 @@ class CreateProfileWaitingViewModel: ObservableObject { .dropFirst() .receive(on: DispatchQueue.main) .map { $0 } - .sink { walletInfo in + .sink { [weak self] walletInfo in let isEmptyBlockChain = walletInfo?.currentNetworkWalletModel? .isEmptyBlockChain ?? true if !isEmptyBlockChain { - self.createFinished = true + self?.updateWalletInfo() + self?.createFinished = true EventTrack.Account.createdTimeEnd() } @@ -128,4 +129,11 @@ class CreateProfileWaitingViewModel: ObservableObject { } currentPage = page.index } + + private func updateWalletInfo() { + guard let uid = UserManager.shared.activatedUID, let address = WalletManager.shared.getPrimaryWalletAddress() else { + return + } + LocalUserDefaults.shared.updateSEUser(by: uid, address: address) + } } diff --git a/FRW/Modules/Wallet/CustomToken/CustomTokenManager.swift b/FRW/Modules/Wallet/CustomToken/CustomTokenManager.swift index 5ccb7923..31254e9d 100644 --- a/FRW/Modules/Wallet/CustomToken/CustomTokenManager.swift +++ b/FRW/Modules/Wallet/CustomToken/CustomTokenManager.swift @@ -89,7 +89,8 @@ class CustomTokenManager: ObservableObject { private func findCurrent(list: [CustomToken]) -> [CustomToken] { guard let address = WalletManager.shared .getWatchAddressOrChildAccountAddressOrPrimaryAddress(), - let userId = UserManager.shared.activatedUID else { + let userId = UserManager.shared.activatedUID + else { return [] } let currentNetwork = LocalUserDefaults.shared.flowNetwork diff --git a/FRW/Modules/Wallet/FlowWalletKit/KeyProtocol+Add.swift b/FRW/Modules/Wallet/FlowWalletKit/KeyProtocol+Add.swift new file mode 100644 index 00000000..8cc23801 --- /dev/null +++ b/FRW/Modules/Wallet/FlowWalletKit/KeyProtocol+Add.swift @@ -0,0 +1,45 @@ +// +// KeyProtocol+Add.swift +// FRW +// +// Created by cat on 2024/9/27. +// + +import Foundation +import FlowWalletKit + +private let sTag = ".key." + +enum KeyProvider { + static func password(with _: String) -> String { + let aseKey = LocalEnvManager.shared.backupAESKey + return aseKey + } + + static func lastKey(with uid: String, in store: FlowWalletKit.KeychainStorage ) -> String? { + let allKeys = store.allKeys + let result = allKeys.last { $0.contains(uid) } + return result + } + + static func getId(with key: String) -> String { + guard key.contains(sTag) else { + return key + } + guard let result = key.components(separatedBy: sTag).first else { + return key + } + return result + } +} + +extension KeyProtocol { + func createKey(uid: String) -> String { + guard !uid.contains(sTag) else { + return uid + } + let suffix = self.id.prefix(8) + return uid + sTag + suffix + } +} + diff --git a/FRW/Modules/Wallet/FlowWalletKit/PKWallet+Add.swift b/FRW/Modules/Wallet/FlowWalletKit/PKWallet+Add.swift new file mode 100644 index 00000000..1f4d2b75 --- /dev/null +++ b/FRW/Modules/Wallet/FlowWalletKit/PKWallet+Add.swift @@ -0,0 +1,43 @@ +// +// PKWallet+Add.swift +// FRW +// +// Created by cat on 2024/9/10. +// + +import Flow +import FlowWalletKit +import Foundation + +extension FlowWalletKit.PrivateKey { + private static let suffix = ".PK" + static func wallet(id: String) throws -> FlowWalletKit.PrivateKey { + let pw = KeyProvider.password(with: id) + let key = KeyProvider.lastKey(with: id, in: PKStorage) ?? id + let privateKey = try FlowWalletKit.PrivateKey.get( + id: key, + password: pw, + storage: PrivateKey.PKStorage + ) + return privateKey + } + + func store(id: String) throws { + let pw = KeyProvider.password(with: id) + let key = self.createKey(uid: id) + try store(id: key, password: pw) + } +} + +extension FlowWalletKit.PrivateKey { + static var PKStorage: FlowWalletKit.KeychainStorage { + let service = (Bundle.main.bundleIdentifier ?? AppBundleName) + FlowWalletKit.PrivateKey + .suffix + let storage = FlowWalletKit.KeychainStorage( + service: service, + label: "PKWallet", + synchronizable: false + ) + return storage + } +} diff --git a/FRW/Modules/Wallet/FlowWalletKit/SecureEnclaveKey+Add.swift b/FRW/Modules/Wallet/FlowWalletKit/SecureEnclaveKey+Add.swift new file mode 100644 index 00000000..6bac5ae9 --- /dev/null +++ b/FRW/Modules/Wallet/FlowWalletKit/SecureEnclaveKey+Add.swift @@ -0,0 +1,85 @@ +// +// SecureEnclaveKey+Add.swift +// FRW +// +// Created by cat on 2024/9/10. +// + +import Flow +import FlowWalletKit +import Foundation + +extension SecureEnclaveKey { + private static let suffix = ".SE" + static func create() throws -> SecureEnclaveKey { + let SecureEnclaveKey = try SecureEnclaveKey + .create(storage: SecureEnclaveKey.KeychainStorage) + return SecureEnclaveKey + } + + static func wallet(id: String) throws -> SecureEnclaveKey { + let pw = KeyProvider.password(with: id) + let key = KeyProvider.lastKey(with: id, in: SecureEnclaveKey.KeychainStorage) ?? id + let secureEnclaveKey = try SecureEnclaveKey.get( + id: key, + password: pw, + storage: SecureEnclaveKey.KeychainStorage + ) + return secureEnclaveKey + } + + func flowAccountKey( + index: Int = -1, + signAlgo: Flow.SignatureAlgorithm = .ECDSA_P256, + weight: Int = 1000 + ) throws -> Flow.AccountKey { + guard let publicData = try? publicKey() else { + throw WalletError.emptyPublicKey + } + let key = Flow.AccountKey( + index: index, + publicKey: .init(data: publicData), + signAlgo: signAlgo, + hashAlgo: .SHA2_256, + weight: weight + ) + return key + } + + func store(id: String) throws { + let pw = KeyProvider.password(with: id) + let key = self.createKey(uid: id) + try store(id: key, password: pw) + } +} + +// MARK: - Private + +extension SecureEnclaveKey { + static var KeychainStorage: FlowWalletKit.KeychainStorage { + let service = (Bundle.main.bundleIdentifier ?? AppBundleName) + SecureEnclaveKey.suffix + let storage = FlowWalletKit.KeychainStorage( + service: service, + label: "SecureEnclaveKey", + synchronizable: false + ) + return storage + } +} + +// MARK: - String + +extension String { + func addUserMessage() -> Data? { + guard let textData = data(using: .utf8) else { + return nil + } + return Flow.DomainTag.user.normalize + textData + } +} + +extension Data { + public func signUserMessage() -> Data { + Flow.DomainTag.user.normalize + self + } +} diff --git a/FRW/Modules/Wallet/FlowWalletKit/SecureEnclaveMigration.swift b/FRW/Modules/Wallet/FlowWalletKit/SecureEnclaveMigration.swift new file mode 100644 index 00000000..a811e542 --- /dev/null +++ b/FRW/Modules/Wallet/FlowWalletKit/SecureEnclaveMigration.swift @@ -0,0 +1,237 @@ +// +// SecureEnclaveMigration.swift +// FRW +// +// Created by cat on 2024/9/10. +// + +import CryptoKit +import FlowWalletKit +import Foundation +import KeychainAccess +import WalletCore +// MARK: - SecureEnclaveMigration + +enum SecureEnclaveMigration { + // MARK: Internal + + static func start() { + guard !LocalUserDefaults.shared.migrationFinished else { + return + } + LocalUserDefaults.shared.loginUIDList = [] + migrationFromOldSE() + migrationFromLilicoTag() + migrationOldSeedPhrase() + migrationSeedPhraseBackup() + LocalUserDefaults.shared.migrationFinished = true + } + + private static func migrationFromOldSE() { + let service: String = "com.flowfoundation.wallet.securekey" + let userKey: String = "user.keystore" + let keychain = Keychain(service: service) + guard let data = try? keychain.getData(userKey) else { + print("[Migration] SecureEnclave get value from keychain empty,\(service)") + return + } + guard let users = try? JSONDecoder().decode([StoreInfo].self, from: data) else { + print("[Migration] SecureEnclave list decoder failed ") + return + } + migration(users: users) + } + + // migrate from lilico tag,Caused by a misquote + private static func migrationFromLilicoTag() { + let lilicoService = "io.outblock.lilico.securekey" + let userKey = "user.keystore" + let keychain = Keychain(service: lilicoService) + guard let data = try? keychain.getData(userKey) else { + log.info("[SecureEnclave] migration empty ") + return + } + guard let users = try? JSONDecoder().decode([StoreInfo].self, from: data) else { + log.info("[SecureEnclave] decoder failed on loginedUser ") + return + } + migration(users: users) + } + + private static func migration(users: [StoreInfo]) { + var userIds = LocalUserDefaults.shared.loginUIDList + let allKeys = SecureEnclaveKey.KeychainStorage.allKeys + let startAt = CFAbsoluteTimeGetCurrent() + var finishCount = 0 + for model in users { + do { + guard let privateKey = try? SecureEnclave.P256.Signing + .PrivateKey(dataRepresentation: model.publicKey) else { + log.error("[Mig] migration from Lilico Tag error: private key") + continue + } + let secureKey = SecureEnclaveKey( + key: privateKey, + storage: SecureEnclaveKey.KeychainStorage + ) + let storeKey = secureKey.createKey(uid: model.uniq) + if allKeys.contains(storeKey) { + continue + } + if canKeySign(privateKey: secureKey) { + guard let publicKey = try secureKey.publicKey()?.hexString else { + log.warning("[Mig] migration from Lilico Tag error: public key is empty") + continue + } + let address = address(by: model.uniq) + let storeUser = UserManager.StoreUser(publicKey: publicKey, address: address, userId: model.uniq, keyType: .secureEnclave, account: nil) + LocalUserDefaults.shared.addUser(user: storeUser) + try secureKey.store(id: model.uniq) + if !userIds.contains(model.uniq) { + userIds.append(model.uniq) + } + finishCount += 1 + } else { + log.warning("[Mig] migration from Lilico Tag error: not sign") + } + } catch { + log.error("[Mig] migration from Lilico Tag error:\(error.localizedDescription)") + continue + } + } + LocalUserDefaults.shared.loginUIDList = userIds + let endAt = CFAbsoluteTimeGetCurrent() + log.debug("[Migration] total: \(users.count), finish: \(finishCount), time:\(endAt - startAt)") + } + + static func canKeySign(privateKey: SecureEnclaveKey) -> Bool { + guard let data = generateRandomBytes(), + let _ = try? privateKey.sign(data: data, hashAlgo: .SHA2_256) else { + return false + } + return true + } + +//MARK: - phrase + private static func migrationOldSeedPhrase() { + let mainKeychain = + Keychain(service: (Bundle.main.bundleIdentifier ?? "com.flowfoundation.wallet") + ".local") + .label("Lilico app backup") + .synchronizable(false) + .accessibility(.whenUnlocked) + var userIds = LocalUserDefaults.shared.loginUIDList + let allKeys = mainKeychain.allKeys() + for theKey in allKeys { + let uid = theKey.removePrefix("lilico.mnemonic.") + guard let data = try? mainKeychain.getData(theKey), + let decryptedData = try? WalletManager.decryptionChaChaPoly(key: uid, data: data), + let mnemonic = String(data: decryptedData, encoding: .utf8), + !mnemonic.isEmpty + else { + log.debug("[Mig] invalid userId:\(uid)") + continue + } + + guard mnemonic.split(separator: " ").count == 12 else { + log.debug("[Mig] invalid userId:\(uid),\(mnemonic)") + continue + } + + guard let hdWallet = HDWallet(mnemonic: mnemonic, passphrase: "") else { + log.debug("[Mig] invalid mnemonic:\(uid),\(mnemonic)") + continue + } + let providerKey = FlowWalletKit.SeedPhraseKey( + hdWallet: hdWallet, + storage: FlowWalletKit.SeedPhraseKey.seedPhraseStorage + ) + guard let publicKey = try? providerKey.publicKey(signAlgo: .ECDSA_SECP256k1)?.hexValue else { + continue + } + let address = address(by: uid) + let storeUser = UserManager.StoreUser(publicKey: publicKey, address: address, userId: uid, keyType: .secureEnclave, account: nil) + LocalUserDefaults.shared.addUser(user: storeUser) + + try? providerKey.store(id: uid) + if !userIds.contains(uid) { + userIds.append(uid) + } + } + } + + private static func migrationSeedPhraseBackup() { + let mainKeychain = + Keychain(service: (Bundle.main.bundleIdentifier ?? "com.flowfoundation.wallet") + ".backup.phrase") + .label("Lilico app backup") + .synchronizable(false) + .accessibility(.whenUnlocked) + + let allKeys = mainKeychain.allKeys() + for userId in allKeys { + guard let data = try? mainKeychain.getData(userId) , + let decryptedData = try? WalletManager.decryptionChaChaPoly(key: userId, data: data), + let mnemonic = String(data: decryptedData, encoding: .utf8), + !mnemonic.isEmpty + else { + log.debug("[Mig] invalid userId:\(userId)") + continue + } + guard mnemonic.split(separator: " ").count == 12 else { + log.debug("[Mig] invalid userId:\(userId),\(mnemonic)") + continue + } + + guard let hdWallet = HDWallet(mnemonic: mnemonic, passphrase: "") else { + log.debug("[Mig] invalid mnemonic:\(userId),\(mnemonic)") + continue + } + let providerKey = FlowWalletKit.SeedPhraseKey( + hdWallet: hdWallet, + storage: FlowWalletKit.SeedPhraseKey.seedPhraseBackupStorage + ) + let uid = userId.components(separatedBy: "-backup-").first ?? userId + + try? providerKey.store(id: uid) + } + } + + static func address(by uid: String) -> String? { + var address = MultiAccountStorage.shared.getWalletInfo(uid)? + .getNetworkWalletModel(network: .mainnet)?.getAddress + if address == nil { + address = LocalUserDefaults.shared.userAddressOfDeletedApp[uid] + } + return address + } + + // MARK: Private + + private static func generateRandomBytes(length: Int = 32) -> Data? { + var keyData = Data(count: length) + let result = keyData.withUnsafeMutableBytes { + SecRandomCopyBytes(kSecRandomDefault, length, $0.baseAddress!) + } + + if result == errSecSuccess { + return keyData + } + + return nil + } +} + +// MARK: - StoreInfo + +private struct StoreInfo: Codable { + // MARK: Lifecycle + + init(uniq: String, publicKey: Data) { + self.uniq = uniq + self.publicKey = publicKey + } + + // MARK: Internal + + var uniq: String + var publicKey: Data +} diff --git a/FRW/Modules/Wallet/FlowWalletKit/SeedPhrase+Add.swift b/FRW/Modules/Wallet/FlowWalletKit/SeedPhrase+Add.swift new file mode 100644 index 00000000..5279a029 --- /dev/null +++ b/FRW/Modules/Wallet/FlowWalletKit/SeedPhrase+Add.swift @@ -0,0 +1,65 @@ +// +// SeedPhrase+Add.swift +// FRW +// +// Created by cat on 2024/9/27. +// + +import Flow +import FlowWalletKit +import Foundation + +extension SeedPhraseKey { + private static let suffix = ".SP" + static func wallet(id: String) throws -> SeedPhraseKey { + let pw = KeyProvider.password(with: id) + let key = KeyProvider.lastKey(with: id, in: seedPhraseStorage) ?? id + let seedPhraseKey = try SeedPhraseKey.get( + id: key, + password: pw, + storage: SeedPhraseKey.seedPhraseStorage + ) + return seedPhraseKey + } + + func store(id: String) throws { + let pw = KeyProvider.password(with: id) + let key = self.createKey(uid: id) + try store(id: key, password: pw) + } + + static var seedPhraseStorage: FlowWalletKit.KeychainStorage { + let service = (Bundle.main.bundleIdentifier ?? AppBundleName) + suffix + let storage = FlowWalletKit.KeychainStorage( + service: service, + label: "SeedPhraseKey", + synchronizable: false + ) + return storage + } +} + +//MARK: - For Backup +extension SeedPhraseKey { + + static func createBackup(uid: String? = nil) throws -> SeedPhraseKey { + let key = try SeedPhraseKey.create(storage: seedPhraseBackupStorage) + return key + } + + func storeBackup(id: String) throws { + let pw = KeyProvider.password(with: id) + let key = self.createKey(uid: id) + try store(id: key, password: pw) + } + + static var seedPhraseBackupStorage: FlowWalletKit.KeychainStorage { + let service = (Bundle.main.bundleIdentifier ?? AppBundleName) + suffix + ".backup" + let storage = FlowWalletKit.KeychainStorage( + service: service, + label: "SeedPhraseKey Backup", + synchronizable: false + ) + return storage + } +} diff --git a/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveSingleNFTViewModel.swift b/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveSingleNFTViewModel.swift index 1c7bd345..68b6b60d 100644 --- a/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveSingleNFTViewModel.swift +++ b/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveSingleNFTViewModel.swift @@ -205,6 +205,16 @@ final class MoveSingleNFTViewModel: ObservableObject { ) let holder = TransactionManager.TransactionHolder(id: tid, type: .moveAsset) TransactionManager.shared.newTransaction(holder: holder) + EventTrack.Transaction + .NFTTransfer( + from: fromContact.address ?? "", + to: toContact.address ?? "", + identifier: nft.response.flowIdentifier ?? "", + txId: tid.hex, + fromType: fromContact.walletType?.trackName ?? "", + toType: toContact.walletType?.trackName ?? "", + isMove: true + ) closeAction() } catch { log.error(" Move NFT =====") @@ -220,6 +230,7 @@ final class MoveSingleNFTViewModel: ObservableObject { } guard let collection = collection else { log.error("[NFT] nft \(nft.collectionName) not found") + return } let identifier = nft.publicIdentifier @@ -275,6 +286,17 @@ final class MoveSingleNFTViewModel: ObservableObject { } let holder = TransactionManager.TransactionHolder(id: tid, type: .moveAsset) TransactionManager.shared.newTransaction(holder: holder) + EventTrack.Transaction + .NFTTransfer( + from: fromContact.address ?? "", + to: toContact.address ?? "", + identifier: nft.response.flowIdentifier ?? "", + txId: tid.hex, + fromType: fromContact.walletType?.trackName ?? "", + toType: toContact.walletType?.trackName ?? "", + isMove: true + ) + closeAction() } catch { log.error("[Move NFT] Move NFT failed on Linked Account. ") diff --git a/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveTokenViewModel.swift b/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveTokenViewModel.swift index fc9b4d54..06a7e188 100644 --- a/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveTokenViewModel.swift +++ b/FRW/Modules/Wallet/MoveAsset/ViewModel/MoveTokenViewModel.swift @@ -367,6 +367,14 @@ extension MoveTokenViewModel { type: .moveAsset ) TransactionManager.shared.newTransaction(holder: holder) + EventTrack.Transaction + .ftTransfer( + from: fromContact.address ?? "", + to: toContact.address ?? "", + type: token.symbol ?? "", + amount: amount.doubleValue, + identifier: token.contractId + ) } DispatchQueue.main.async { self.closeAction() @@ -407,7 +415,14 @@ extension MoveTokenViewModel { let holder = TransactionManager.TransactionHolder(id: txid, type: .transferCoin) TransactionManager.shared.newTransaction(holder: holder) HUD.dismissLoading() - + EventTrack.Transaction + .ftTransfer( + from: fromContact.address ?? "", + to: toContact.address ?? "", + type: token.symbol ?? "", + amount: amount.doubleValue, + identifier: token.contractId + ) WalletManager.shared.reloadWalletInfo() DispatchQueue.main.async { self.closeAction() @@ -442,7 +457,14 @@ extension MoveTokenViewModel { let txid = try await FlowNetwork.fundCoa(amount: amount) let holder = TransactionManager.TransactionHolder(id: txid, type: .transferCoin) TransactionManager.shared.newTransaction(holder: holder) - + EventTrack.Transaction + .ftTransfer( + from: fromContact.address ?? "", + to: toContact.address ?? "", + type: token.symbol ?? "", + amount: amount.doubleValue, + identifier: token.contractId + ) WalletManager.shared.reloadWalletInfo() DispatchQueue.main.async { self.closeAction() @@ -486,6 +508,15 @@ extension MoveTokenViewModel { self.closeAction() self.buttonState = .enabled } + EventTrack.Transaction + .ftTransfer( + from: fromContact.address ?? "", + to: toContact.address ?? "", + type: token.symbol ?? "", + amount: amount.doubleValue, + identifier: token.contractId + ) + } catch { DispatchQueue.main.async { self.buttonState = .enabled diff --git a/FRW/Modules/Wallet/Receive/ReceiveQRView.swift b/FRW/Modules/Wallet/Receive/ReceiveQRView.swift index 5fe0d2f0..b4771c14 100644 --- a/FRW/Modules/Wallet/Receive/ReceiveQRView.swift +++ b/FRW/Modules/Wallet/Receive/ReceiveQRView.swift @@ -52,8 +52,10 @@ struct ReceiveQRView: RouteableView { .lineLimit(1) Spacer() - Image("Copy") + Image("icon-address-copy") .resizable() + .renderingMode(.template) + .foregroundStyle(Color.Theme.Text.black3) .frame(width: 24, height: 24) } .frame(height: 48) diff --git a/FRW/Modules/Wallet/Send/WalletSendAmountViewModel.swift b/FRW/Modules/Wallet/Send/WalletSendAmountViewModel.swift index 2797ae1c..8ca6d185 100644 --- a/FRW/Modules/Wallet/Send/WalletSendAmountViewModel.swift +++ b/FRW/Modules/Wallet/Send/WalletSendAmountViewModel.swift @@ -336,7 +336,8 @@ extension WalletSendAmountViewModel { } guard let address = WalletManager.shared.getPrimaryWalletAddress(), - let targetAddress = targetContact.address else { + let targetAddress = targetContact.address + else { return } diff --git a/FRW/Modules/Wallet/TokenDetail/TokenDetailView.swift b/FRW/Modules/Wallet/TokenDetail/TokenDetailView.swift index ff22cb4d..666cd133 100644 --- a/FRW/Modules/Wallet/TokenDetail/TokenDetailView.swift +++ b/FRW/Modules/Wallet/TokenDetail/TokenDetailView.swift @@ -104,7 +104,7 @@ struct TokenDetailView: RouteableView { .foregroundColor(.LL.Neutrals.neutrals1) .font(.inter(size: 16, weight: .semibold)) Image("icon-right-arrow") - .visibility(self.vm.isTokenDetailsButtonEnabled ? .visible: .gone) + .visibility(self.vm.isTokenDetailsButtonEnabled ? .visible : .gone) } .frame(height: 32) .padding(.trailing, 10) diff --git a/FRW/Modules/Wallet/TokenDetail/TokenDetailViewModel.swift b/FRW/Modules/Wallet/TokenDetail/TokenDetailViewModel.swift index 4a078a13..385835ed 100644 --- a/FRW/Modules/Wallet/TokenDetail/TokenDetailViewModel.swift +++ b/FRW/Modules/Wallet/TokenDetail/TokenDetailViewModel.swift @@ -177,8 +177,8 @@ class TokenDetailViewModel: ObservableObject { var buttonAction: TokenDetailViewModel.Action = .none var showStorageView: Bool { return self.token.isFlowCoin } - var isTokenDetailsButtonEnabled: Bool { self.token.website.isNotNullNorEmpty } - + var isTokenDetailsButtonEnabled: Bool { token.website.isNotNullNorEmpty } + // MARK: Private private var cancelSets = Set() diff --git a/FRW/Modules/Wallet/WalletViewModel.swift b/FRW/Modules/Wallet/WalletViewModel.swift index f7ec067c..2dc3114e 100644 --- a/FRW/Modules/Wallet/WalletViewModel.swift +++ b/FRW/Modules/Wallet/WalletViewModel.swift @@ -7,7 +7,7 @@ import Combine import Flow -import FlowWalletCore +import FlowWalletKit import Foundation import SwiftUI import SwiftUIPager diff --git a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle) 1.png b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle) 1.png index c0c043c7..26ea2de4 100644 Binary files a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle) 1.png and b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle) 1.png differ diff --git a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle).png b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle).png index dea7f164..c7bd1fc9 100644 Binary files a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle).png and b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle).png differ diff --git a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x 1.png b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x 1.png index f1678b5c..86e9802c 100644 Binary files a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x 1.png and b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x 1.png differ diff --git a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x.png b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x.png index 156c8527..74cfc44b 100644 Binary files a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x.png and b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x 1.png b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x 1.png index aff1232b..74a58652 100644 Binary files a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x 1.png and b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x 1.png differ diff --git a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x.png b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x.png index 03eb09dc..13c6443a 100644 Binary files a/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x.png and b/FRW/Resource/Assets.xcassets/WalletIcon/close_circle.imageset/X-Mark (Circle)@3x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964.png b/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964.png index 450227c5..508d61b4 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964.png and b/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@2x.png b/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@2x.png index fef88bda..e38ccfb0 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@2x.png and b/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@3x.png b/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@3x.png index c1d8427b..dcfb1863 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@3x.png and b/FRW/Resource/Assets.xcassets/wallet/icon_arrow_bottom_16.imageset/Group 47964@3x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290.png b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290.png index d7f5f52f..0a5261cf 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290.png and b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x 1.png b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x 1.png index e7d7225a..64630106 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x 1.png and b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x 1.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x.png b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x.png index ac075358..518bae74 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x.png and b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x 1.png b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x 1.png index 853abc5e..226dac5a 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x 1.png and b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x 1.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x.png b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x.png index 46528401..0fc1467c 100644 Binary files a/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x.png and b/FRW/Resource/Assets.xcassets/wallet/icon_assets_move_arrow.imageset/Group 47290@3x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/Contents.json b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/Contents.json new file mode 100644 index 00000000..044c555e --- /dev/null +++ b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_import_google_40.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_import_google_40@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_import_google_40@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40.png new file mode 100644 index 00000000..dc9a4ded Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40@2x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40@2x.png new file mode 100644 index 00000000..fd755355 Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40@3x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40@3x.png new file mode 100644 index 00000000..16ca42c1 Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_google_40.imageset/icon_import_google_40@3x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/Contents.json b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/Contents.json new file mode 100644 index 00000000..14c5fa2e --- /dev/null +++ b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_import_icloud_40.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_import_icloud_40@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_import_icloud_40@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40.png new file mode 100644 index 00000000..c3dbf716 Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40@2x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40@2x.png new file mode 100644 index 00000000..08f7dfaf Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40@3x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40@3x.png new file mode 100644 index 00000000..7ee3999d Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_icloud_40.imageset/icon_import_icloud_40@3x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/Contents.json b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/Contents.json new file mode 100644 index 00000000..b26dbab6 --- /dev/null +++ b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_import_keystore_40.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_import_keystore_40@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_import_keystore_40@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40.png new file mode 100644 index 00000000..c535bb8f Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40@2x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40@2x.png new file mode 100644 index 00000000..27820ebd Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40@3x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40@3x.png new file mode 100644 index 00000000..109f6d4b Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_keystore_40.imageset/icon_import_keystore_40@3x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/Contents.json b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/Contents.json new file mode 100644 index 00000000..3b58e21b --- /dev/null +++ b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "icon_import_phrase_40.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "icon_import_phrase_40@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "icon_import_phrase_40@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40.png new file mode 100644 index 00000000..6004b09c Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40@2x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40@2x.png new file mode 100644 index 00000000..af487731 Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40@3x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40@3x.png new file mode 100644 index 00000000..da2b8f9d Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_phrase_40.imageset/icon_import_phrase_40@3x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Contents.json b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Contents.json new file mode 100644 index 00000000..f1df5fb2 --- /dev/null +++ b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "Group 47612.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Group 47612@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Group 47612@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612.png new file mode 100644 index 00000000..28833dc3 Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612@2x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612@2x.png new file mode 100644 index 00000000..f8df9da9 Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612@2x.png differ diff --git a/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612@3x.png b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612@3x.png new file mode 100644 index 00000000..99ea70b3 Binary files /dev/null and b/FRW/Resource/Assets.xcassets/wallet/icon_import_privatekey_40.imageset/Group 47612@3x.png differ diff --git a/FRW/Resource/Json/cloudfunctions.json b/FRW/Resource/Json/cloudfunctions.json index 54721ef9..1ac0f065 100644 --- a/FRW/Resource/Json/cloudfunctions.json +++ b/FRW/Resource/Json/cloudfunctions.json @@ -3,25 +3,25 @@ "mainnet": { "version": "1.0", "ft": { - "isTokenListEnabled": "CiAgICAKICAgIC8vIEZsb3cgV2FsbGV0IC0gbWFpbm5ldCBTY3JpcHQgIGlzVG9rZW5MaXN0RW5hYmxlZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgIAogICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KICAgIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjENCmltcG9ydCBBRFVUb2tlbiBmcm9tIDB4ZTQ1MmEyZjU2NjU3MjhmNQ0KaW1wb3J0IGFpU3BvcnRzSnVpY2UgZnJvbSAweDlkYjk0Yzk1NjQyNDNiYTcNCmltcG9ydCBCYWxsZXJ6RkMgZnJvbSAweDRlYTA0N2MzZTczY2E0NjANCmltcG9ydCBCZWF2ZXIgZnJvbSAweDY4N2UxYTdhZWYxN2I3OGINCmltcG9ydCBCbG9jdG9Ub2tlbiBmcm9tIDB4MGY5ZGY5MWM5MTIxYzQ2MA0KaW1wb3J0IGJyYXNpbCBmcm9tIDB4N2JmMDdkNzE5ZGNiODQ4MA0KaW1wb3J0IGNlQVZBWCBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlQk5CIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VCVVNEIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VEQUkgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZUZUTSBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlTUFUSUMgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZVVTRFQgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZVdCVEMgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZVdFVEggZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBEQU1PNDIwIGZyb20gMHgzMzk5ZDdjNmM2MDliN2U1DQppbXBvcnQgRml4ZXNGdW5naWJsZVRva2VuIGZyb20gMHhhOTEwMmU1NmE4YjdhNjgwDQppbXBvcnQgRmxvdmF0YXJEdXN0VG9rZW4gZnJvbSAweDkyMWVhNDQ5ZGZmZWM2OGENCmltcG9ydCBGbG93QmxvY2tjaGFpbmhpdENvaW4gZnJvbSAweGQzYjYyZmZiYmM2MzJmNWENCmltcG9ydCBGVVNEIGZyb20gMHgzYzU5NTliNTY4ODk2MzkzDQppbXBvcnQgTWFpbmxlZGdlciBmcm9tIDB4ZmQxY2NhYWFlMzlkMGU3OQ0KaW1wb3J0IFBldEpva2ljc0hvcnNlcyBmcm9tIDB4NmZkMjQ2NWYzYTIyZTM0Yw0KaW1wb3J0IFBva2VydGltZSBmcm9tIDB4ZmQxY2NhYWFlMzlkMGU3OQ0KaW1wb3J0IFJFVlYgZnJvbSAweGQwMWU0ODJlYjY4MGVjOWYNCmltcG9ydCBSTFkgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBTbG9wcHlTdGFrZXMgZnJvbSAweDUzZjM4OWQ5NmZiNGNlNWUNCmltcG9ydCBTdGFybHlUb2tlbiBmcm9tIDB4MTQyZmE2NTcwYjYyZmQ5Nw0KaW1wb3J0IHN0Rmxvd1Rva2VuIGZyb20gMHhkNmY4MDU2NTE5M2FkNzI3DQppbXBvcnQgVGVsZXBvcnRlZFRldGhlclRva2VuIGZyb20gMHhjZmRkOTBkNGEwMGY3YjViDQppbXBvcnQgVGhlV29sZm9mRmxvdyBmcm9tIDB4ODI1OWM3M2U0ODc0MjJkNw0KaW1wb3J0IFRvcFNob3RCRVRBIGZyb20gMHhlZTA5MDI5ZjFkYmNkOWQxDQppbXBvcnQgVXRhaEphenpMZWdlbmRzQ2x1YiBmcm9tIDB4Y2JiYTRkNDFhZWY4M2ZlMw0KaW1wb3J0IFZhbXBpcmUgZnJvbSAweDY3ZGFhZDkxZTM3ODJjODANCmltcG9ydCBWcm9vbVRva2VuIGZyb20gMHhmODg3ZWNlMzkxNjY5MDZlDQppbXBvcnQgRGFwcGVyVXRpbGl0eUNvaW4gZnJvbSAweGVhZDg5MjA4M2IzZTJjNmMNCmltcG9ydCBVU0RDRmxvdyBmcm9tIDB4ZjFhYjk5YzgyZGVlMzUyNg0KaW1wb3J0IEVWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGIgZnJvbSAweDFlNGFhMGI4N2QxMGIxNDEKCiAgICAKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3dUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tBRFVUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9BRFVUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0FEVVRva2VuTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2FpU3BvcnRzSnVpY2VWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYWlTcG9ydHNKdWljZVJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2FpU3BvcnRzSnVpY2VNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmFsbGVyekZDVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JhbGxlcnpGQ1JlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JhbGxlcnpGQ01ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCZWF2ZXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQmVhdmVyUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQmVhdmVyTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Jsb2N0b1Rva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Jsb2N0b1Rva2VuUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYmxvY3RvVG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2ticmFzaWxWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYnJhc2lsUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYnJhc2lsTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlQVZBWFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUFWQVhSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUFWQVhCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUJOQlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUJOQlJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlQk5CQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VCVVNEVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlQlVTRFJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlQlVTREJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlREFJVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlREFJUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VEQUlCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUZUTVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUZUTVJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlRlRNQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VNQVRJQ1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZU1BVElDUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VNQVRJQ0JhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlVVNEVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZVVTRFRSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZVVTRFRCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZVdCVENWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VXQlRDUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VXQlRDQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VXRVRIVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlV0VUSFJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlV0VUSEJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0RBTU80MjBWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvREFNTzQyMFJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0RBTU80MjBNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRml4ZXNGdW5naWJsZVRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0ZpeHNTdGFuZGFyZEZUXzB4YTkxMDJlNTZhOGI3YTY4MFRSVU1QX1JlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0ZpeHNTdGFuZGFyZEZUXzB4YTkxMDJlNTZhOGI3YTY4MFRSVU1QX0JhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3ZhdGFyRHVzdFRva2VuUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvdmF0YXJEdXN0VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93QmxvY2tjaGFpbmhpdENvaW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvd0Jsb2NrY2hhaW5oaXRDb2luUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvd0Jsb2NrY2hhaW5oaXRDb2luTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZVU0RWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZnVzZFJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Z1c2RCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tNYWlubGVkZ2VyVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01haW5sZWRnZXJSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NYWlubGVkZ2VyTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1BldEpva2ljc0hvcnNlc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9QZXRKb2tpY3NIb3JzZXNSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9QZXRKb2tpY3NIb3JzZXNNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUG9rZXJ0aW1lVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Bva2VydGltZVJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Bva2VydGltZU1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSRVZWVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3JldnZSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9yZXZ2QmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUkxZVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1JMWVJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1JMWUJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Nsb3BweVN0YWtlc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9TbG9wcHlTdGFrZXNSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9TbG9wcHlTdGFrZXNNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU3Rhcmx5VG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3Rhcmx5VG9rZW5SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9zdGFybHlUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3N0Rmxvd1Rva2VuUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3RGbG93VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUZWxlcG9ydGVkVGV0aGVyVG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvdGVsZXBvcnRlZFRldGhlclRva2VuUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvdGVsZXBvcnRlZFRldGhlclRva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVGhlV29sZm9mRmxvd1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9UaGVXb2xmb2ZGbG93UmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVGhlV29sZm9mRmxvd01ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3BTaG90QkVUQVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Ub3BTaG90QkVUQVJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RvcFNob3RCRVRBTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1V0YWhKYXp6TGVnZW5kc0NsdWJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVXRhaEphenpMZWdlbmRzQ2x1YlJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1V0YWhKYXp6TGVnZW5kc0NsdWJNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVmFtcGlyZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9WYW1waXJlUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVmFtcGlyZU1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tWcm9vbVRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Zyb29tVG9rZW5SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Wcm9vbVRva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRGFwcGVyVXRpbGl0eUNvaW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZGFwcGVyVXRpbGl0eUNvaW5SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9kYXBwZXJVdGlsaXR5Q29pbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1VTRENGbG93VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3VzZGNGbG93UmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvdXNkY0Zsb3dNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9FVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIAoKICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDoge1N0cmluZzogQm9vbH0gewogICAgICByZXR1cm4gewogICAgIkEuMTY1NDY1MzM5OTA0MGE2MS5GbG93VG9rZW4iIDoKICAgIGNoZWNrRmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmU0NTJhMmY1NjY1NzI4ZjUuQURVVG9rZW4iIDoKICAgIGNoZWNrQURVVG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOWRiOTRjOTU2NDI0M2JhNy5haVNwb3J0c0p1aWNlIiA6CiAgICBjaGVja2FpU3BvcnRzSnVpY2VWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNGVhMDQ3YzNlNzNjYTQ2MC5CYWxsZXJ6RkMiIDoKICAgIGNoZWNrQmFsbGVyekZDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY4N2UxYTdhZWYxN2I3OGIuQmVhdmVyIiA6CiAgICBjaGVja0JlYXZlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wZjlkZjkxYzkxMjFjNDYwLkJsb2N0b1Rva2VuIiA6CiAgICBjaGVja0Jsb2N0b1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjdiZjA3ZDcxOWRjYjg0ODAuYnJhc2lsIiA6CiAgICBjaGVja2JyYXNpbFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQVZBWCIgOgogICAgY2hlY2tjZUFWQVhWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZUJOQiIgOgogICAgY2hlY2tjZUJOQlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQlVTRCIgOgogICAgY2hlY2tjZUJVU0RWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZURBSSIgOgogICAgY2hlY2tjZURBSVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlRlRNIiA6CiAgICBjaGVja2NlRlRNVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VNQVRJQyIgOgogICAgY2hlY2tjZU1BVElDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VVU0RUIiA6CiAgICBjaGVja2NlVVNEVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlV0JUQyIgOgogICAgY2hlY2tjZVdCVENWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZVdFVEgiIDoKICAgIGNoZWNrY2VXRVRIVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjMzOTlkN2M2YzYwOWI3ZTUuREFNTzQyMCIgOgogICAgY2hlY2tEQU1PNDIwVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmE5MTAyZTU2YThiN2E2ODAuRml4ZXNGdW5naWJsZVRva2VuIiA6CiAgICBjaGVja0ZpeGVzRnVuZ2libGVUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyRHVzdFRva2VuIiA6CiAgICBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzYjYyZmZiYmM2MzJmNWEuRmxvd0Jsb2NrY2hhaW5oaXRDb2luIiA6CiAgICBjaGVja0Zsb3dCbG9ja2NoYWluaGl0Q29pblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zYzU5NTliNTY4ODk2MzkzLkZVU0QiIDoKICAgIGNoZWNrRlVTRFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5mZDFjY2FhYWUzOWQwZTc5Lk1haW5sZWRnZXIiIDoKICAgIGNoZWNrTWFpbmxlZGdlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS42ZmQyNDY1ZjNhMjJlMzRjLlBldEpva2ljc0hvcnNlcyIgOgogICAgY2hlY2tQZXRKb2tpY3NIb3JzZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZmQxY2NhYWFlMzlkMGU3OS5Qb2tlcnRpbWUiIDoKICAgIGNoZWNrUG9rZXJ0aW1lVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQwMWU0ODJlYjY4MGVjOWYuUkVWViIgOgogICAgY2hlY2tSRVZWVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuUkxZIiA6CiAgICBjaGVja1JMWVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS41M2YzODlkOTZmYjRjZTVlLlNsb3BweVN0YWtlcyIgOgogICAgY2hlY2tTbG9wcHlTdGFrZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMTQyZmE2NTcwYjYyZmQ5Ny5TdGFybHlUb2tlbiIgOgogICAgY2hlY2tTdGFybHlUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNmY4MDU2NTE5M2FkNzI3LnN0Rmxvd1Rva2VuIiA6CiAgICBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNmZGQ5MGQ0YTAwZjdiNWIuVGVsZXBvcnRlZFRldGhlclRva2VuIiA6CiAgICBjaGVja1RlbGVwb3J0ZWRUZXRoZXJUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44MjU5YzczZTQ4NzQyMmQ3LlRoZVdvbGZvZkZsb3ciIDoKICAgIGNoZWNrVGhlV29sZm9mRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lZTA5MDI5ZjFkYmNkOWQxLlRvcFNob3RCRVRBIiA6CiAgICBjaGVja1RvcFNob3RCRVRBVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNiYmE0ZDQxYWVmODNmZTMuVXRhaEphenpMZWdlbmRzQ2x1YiIgOgogICAgY2hlY2tVdGFoSmF6ekxlZ2VuZHNDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY3ZGFhZDkxZTM3ODJjODAuVmFtcGlyZSIgOgogICAgY2hlY2tWYW1waXJlVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuVnJvb21Ub2tlbiIgOgogICAgY2hlY2tWcm9vbVRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmVhZDg5MjA4M2IzZTJjNmMuRGFwcGVyVXRpbGl0eUNvaW4iIDoKICAgIGNoZWNrRGFwcGVyVXRpbGl0eUNvaW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjFhYjk5YzgyZGVlMzUyNi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZTRhYTBiODdkMTBiMTQxLkVWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGIiIDoKICAgIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICB9CiAgICB9CiAg", - "isLinkedAccountTokenListEnabled": "CiAgICAKICAgIC8vIEZsb3cgV2FsbGV0IC0gbWFpbm5ldCBTY3JpcHQgIGlzTGlua2VkQWNjb3VudFRva2VuTGlzdEVuYWJsZWQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAKICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxDQppbXBvcnQgQURVVG9rZW4gZnJvbSAweGU0NTJhMmY1NjY1NzI4ZjUNCmltcG9ydCBhaVNwb3J0c0p1aWNlIGZyb20gMHg5ZGI5NGM5NTY0MjQzYmE3DQppbXBvcnQgQmFsbGVyekZDIGZyb20gMHg0ZWEwNDdjM2U3M2NhNDYwDQppbXBvcnQgQmVhdmVyIGZyb20gMHg2ODdlMWE3YWVmMTdiNzhiDQppbXBvcnQgQmxvY3RvVG9rZW4gZnJvbSAweDBmOWRmOTFjOTEyMWM0NjANCmltcG9ydCBicmFzaWwgZnJvbSAweDdiZjA3ZDcxOWRjYjg0ODANCmltcG9ydCBjZUFWQVggZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZUJOQiBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlQlVTRCBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlREFJIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VGVE0gZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZU1BVElDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VVU0RUIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXQlRDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXRVRIIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgREFNTzQyMCBmcm9tIDB4MzM5OWQ3YzZjNjA5YjdlNQ0KaW1wb3J0IEZpeGVzRnVuZ2libGVUb2tlbiBmcm9tIDB4YTkxMDJlNTZhOGI3YTY4MA0KaW1wb3J0IEZsb3ZhdGFyRHVzdFRva2VuIGZyb20gMHg5MjFlYTQ0OWRmZmVjNjhhDQppbXBvcnQgRmxvd0Jsb2NrY2hhaW5oaXRDb2luIGZyb20gMHhkM2I2MmZmYmJjNjMyZjVhDQppbXBvcnQgRlVTRCBmcm9tIDB4M2M1OTU5YjU2ODg5NjM5Mw0KaW1wb3J0IE1haW5sZWRnZXIgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBQZXRKb2tpY3NIb3JzZXMgZnJvbSAweDZmZDI0NjVmM2EyMmUzNGMNCmltcG9ydCBQb2tlcnRpbWUgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBSRVZWIGZyb20gMHhkMDFlNDgyZWI2ODBlYzlmDQppbXBvcnQgUkxZIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgU2xvcHB5U3Rha2VzIGZyb20gMHg1M2YzODlkOTZmYjRjZTVlDQppbXBvcnQgU3Rhcmx5VG9rZW4gZnJvbSAweDE0MmZhNjU3MGI2MmZkOTcNCmltcG9ydCBzdEZsb3dUb2tlbiBmcm9tIDB4ZDZmODA1NjUxOTNhZDcyNw0KaW1wb3J0IFRlbGVwb3J0ZWRUZXRoZXJUb2tlbiBmcm9tIDB4Y2ZkZDkwZDRhMDBmN2I1Yg0KaW1wb3J0IFRoZVdvbGZvZkZsb3cgZnJvbSAweDgyNTljNzNlNDg3NDIyZDcNCmltcG9ydCBUb3BTaG90QkVUQSBmcm9tIDB4ZWUwOTAyOWYxZGJjZDlkMQ0KaW1wb3J0IFV0YWhKYXp6TGVnZW5kc0NsdWIgZnJvbSAweGNiYmE0ZDQxYWVmODNmZTMNCmltcG9ydCBWYW1waXJlIGZyb20gMHg2N2RhYWQ5MWUzNzgyYzgwDQppbXBvcnQgVnJvb21Ub2tlbiBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IERhcHBlclV0aWxpdHlDb2luIGZyb20gMHhlYWQ4OTIwODNiM2UyYzZjDQppbXBvcnQgVVNEQ0Zsb3cgZnJvbSAweGYxYWI5OWM4MmRlZTM1MjYNCmltcG9ydCBFVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiIGZyb20gMHgxZTRhYTBiODdkMTBiMTQxCgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93VG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zsb3dUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0FEVVRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9BRFVUb2tlbk1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2thaVNwb3J0c0p1aWNlVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9haVNwb3J0c0p1aWNlTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0JhbGxlcnpGQ1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQmFsbGVyekZDTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0JlYXZlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQmVhdmVyTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Jsb2N0b1Rva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9ibG9jdG9Ub2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2JyYXNpbFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYnJhc2lsTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlQVZBWFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VBVkFYQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VCTkJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlQk5CQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VCVVNEVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUJVU0RCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZURBSVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VEQUlCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUZUTVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VGVE1CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZU1BVElDVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZU1BVElDQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VVU0RUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZVVTRFRCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZVdCVENWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlV0JUQ0JhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlV0VUSFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VXRVRIQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrREFNTzQyMFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvREFNTzQyME1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGaXhlc0Z1bmdpYmxlVG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0ZpeHNTdGFuZGFyZEZUXzB4YTkxMDJlNTZhOGI3YTY4MFRSVU1QX0JhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckR1c3RUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3dCbG9ja2NoYWluaGl0Q29pblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvd0Jsb2NrY2hhaW5oaXRDb2luTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZVU0RWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Z1c2RCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tNYWlubGVkZ2VyVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NYWlubGVkZ2VyTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1BldEpva2ljc0hvcnNlc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUGV0Sm9raWNzSG9yc2VzTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Bva2VydGltZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUG9rZXJ0aW1lTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JFVlZWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3JldnZCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSTFlWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1JMWUJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Nsb3BweVN0YWtlc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU2xvcHB5U3Rha2VzTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1N0YXJseVRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9zdGFybHlUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9zdEZsb3dUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RlbGVwb3J0ZWRUZXRoZXJUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvdGVsZXBvcnRlZFRldGhlclRva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVGhlV29sZm9mRmxvd1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVGhlV29sZm9mRmxvd01ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3BTaG90QkVUQVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVG9wU2hvdEJFVEFNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVXRhaEphenpMZWdlbmRzQ2x1YlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVXRhaEphenpMZWdlbmRzQ2x1Yk1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tWYW1waXJlVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9WYW1waXJlTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Zyb29tVG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Zyb29tVG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tEYXBwZXJVdGlsaXR5Q29pblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZGFwcGVyVXRpbGl0eUNvaW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvdXNkY0Zsb3dNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIAoKICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDoge1N0cmluZzogQm9vbH0gewogICAgICByZXR1cm4gewogICAgIkEuMTY1NDY1MzM5OTA0MGE2MS5GbG93VG9rZW4iIDoKICAgIGNoZWNrRmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmU0NTJhMmY1NjY1NzI4ZjUuQURVVG9rZW4iIDoKICAgIGNoZWNrQURVVG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOWRiOTRjOTU2NDI0M2JhNy5haVNwb3J0c0p1aWNlIiA6CiAgICBjaGVja2FpU3BvcnRzSnVpY2VWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNGVhMDQ3YzNlNzNjYTQ2MC5CYWxsZXJ6RkMiIDoKICAgIGNoZWNrQmFsbGVyekZDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY4N2UxYTdhZWYxN2I3OGIuQmVhdmVyIiA6CiAgICBjaGVja0JlYXZlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wZjlkZjkxYzkxMjFjNDYwLkJsb2N0b1Rva2VuIiA6CiAgICBjaGVja0Jsb2N0b1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjdiZjA3ZDcxOWRjYjg0ODAuYnJhc2lsIiA6CiAgICBjaGVja2JyYXNpbFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQVZBWCIgOgogICAgY2hlY2tjZUFWQVhWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZUJOQiIgOgogICAgY2hlY2tjZUJOQlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQlVTRCIgOgogICAgY2hlY2tjZUJVU0RWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZURBSSIgOgogICAgY2hlY2tjZURBSVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlRlRNIiA6CiAgICBjaGVja2NlRlRNVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VNQVRJQyIgOgogICAgY2hlY2tjZU1BVElDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VVU0RUIiA6CiAgICBjaGVja2NlVVNEVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlV0JUQyIgOgogICAgY2hlY2tjZVdCVENWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZVdFVEgiIDoKICAgIGNoZWNrY2VXRVRIVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjMzOTlkN2M2YzYwOWI3ZTUuREFNTzQyMCIgOgogICAgY2hlY2tEQU1PNDIwVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmE5MTAyZTU2YThiN2E2ODAuRml4ZXNGdW5naWJsZVRva2VuIiA6CiAgICBjaGVja0ZpeGVzRnVuZ2libGVUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyRHVzdFRva2VuIiA6CiAgICBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzYjYyZmZiYmM2MzJmNWEuRmxvd0Jsb2NrY2hhaW5oaXRDb2luIiA6CiAgICBjaGVja0Zsb3dCbG9ja2NoYWluaGl0Q29pblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zYzU5NTliNTY4ODk2MzkzLkZVU0QiIDoKICAgIGNoZWNrRlVTRFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5mZDFjY2FhYWUzOWQwZTc5Lk1haW5sZWRnZXIiIDoKICAgIGNoZWNrTWFpbmxlZGdlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS42ZmQyNDY1ZjNhMjJlMzRjLlBldEpva2ljc0hvcnNlcyIgOgogICAgY2hlY2tQZXRKb2tpY3NIb3JzZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZmQxY2NhYWFlMzlkMGU3OS5Qb2tlcnRpbWUiIDoKICAgIGNoZWNrUG9rZXJ0aW1lVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQwMWU0ODJlYjY4MGVjOWYuUkVWViIgOgogICAgY2hlY2tSRVZWVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuUkxZIiA6CiAgICBjaGVja1JMWVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS41M2YzODlkOTZmYjRjZTVlLlNsb3BweVN0YWtlcyIgOgogICAgY2hlY2tTbG9wcHlTdGFrZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMTQyZmE2NTcwYjYyZmQ5Ny5TdGFybHlUb2tlbiIgOgogICAgY2hlY2tTdGFybHlUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNmY4MDU2NTE5M2FkNzI3LnN0Rmxvd1Rva2VuIiA6CiAgICBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNmZGQ5MGQ0YTAwZjdiNWIuVGVsZXBvcnRlZFRldGhlclRva2VuIiA6CiAgICBjaGVja1RlbGVwb3J0ZWRUZXRoZXJUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44MjU5YzczZTQ4NzQyMmQ3LlRoZVdvbGZvZkZsb3ciIDoKICAgIGNoZWNrVGhlV29sZm9mRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lZTA5MDI5ZjFkYmNkOWQxLlRvcFNob3RCRVRBIiA6CiAgICBjaGVja1RvcFNob3RCRVRBVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNiYmE0ZDQxYWVmODNmZTMuVXRhaEphenpMZWdlbmRzQ2x1YiIgOgogICAgY2hlY2tVdGFoSmF6ekxlZ2VuZHNDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY3ZGFhZDkxZTM3ODJjODAuVmFtcGlyZSIgOgogICAgY2hlY2tWYW1waXJlVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuVnJvb21Ub2tlbiIgOgogICAgY2hlY2tWcm9vbVRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmVhZDg5MjA4M2IzZTJjNmMuRGFwcGVyVXRpbGl0eUNvaW4iIDoKICAgIGNoZWNrRGFwcGVyVXRpbGl0eUNvaW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjFhYjk5YzgyZGVlMzUyNi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZTRhYTBiODdkMTBiMTQxLkVWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGIiIDoKICAgIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICB9CiAgICB9CiAg", - "getTokenListBalance": "CiAgICAKICAgIC8vIEZsb3cgV2FsbGV0IC0gbWFpbm5ldCBTY3JpcHQgIGdldFRva2VuTGlzdEJhbGFuY2VTdGFibGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAKICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxDQppbXBvcnQgQURVVG9rZW4gZnJvbSAweGU0NTJhMmY1NjY1NzI4ZjUNCmltcG9ydCBhaVNwb3J0c0p1aWNlIGZyb20gMHg5ZGI5NGM5NTY0MjQzYmE3DQppbXBvcnQgQmFsbGVyekZDIGZyb20gMHg0ZWEwNDdjM2U3M2NhNDYwDQppbXBvcnQgQmVhdmVyIGZyb20gMHg2ODdlMWE3YWVmMTdiNzhiDQppbXBvcnQgQmxvY3RvVG9rZW4gZnJvbSAweDBmOWRmOTFjOTEyMWM0NjANCmltcG9ydCBicmFzaWwgZnJvbSAweDdiZjA3ZDcxOWRjYjg0ODANCmltcG9ydCBjZUFWQVggZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZUJOQiBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlQlVTRCBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlREFJIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VGVE0gZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZU1BVElDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VVU0RUIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXQlRDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXRVRIIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgREFNTzQyMCBmcm9tIDB4MzM5OWQ3YzZjNjA5YjdlNQ0KaW1wb3J0IEZpeGVzRnVuZ2libGVUb2tlbiBmcm9tIDB4YTkxMDJlNTZhOGI3YTY4MA0KaW1wb3J0IEZsb3ZhdGFyRHVzdFRva2VuIGZyb20gMHg5MjFlYTQ0OWRmZmVjNjhhDQppbXBvcnQgRmxvd0Jsb2NrY2hhaW5oaXRDb2luIGZyb20gMHhkM2I2MmZmYmJjNjMyZjVhDQppbXBvcnQgRlVTRCBmcm9tIDB4M2M1OTU5YjU2ODg5NjM5Mw0KaW1wb3J0IE1haW5sZWRnZXIgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBQZXRKb2tpY3NIb3JzZXMgZnJvbSAweDZmZDI0NjVmM2EyMmUzNGMNCmltcG9ydCBQb2tlcnRpbWUgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBSRVZWIGZyb20gMHhkMDFlNDgyZWI2ODBlYzlmDQppbXBvcnQgUkxZIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgU2xvcHB5U3Rha2VzIGZyb20gMHg1M2YzODlkOTZmYjRjZTVlDQppbXBvcnQgU3Rhcmx5VG9rZW4gZnJvbSAweDE0MmZhNjU3MGI2MmZkOTcNCmltcG9ydCBzdEZsb3dUb2tlbiBmcm9tIDB4ZDZmODA1NjUxOTNhZDcyNw0KaW1wb3J0IFRlbGVwb3J0ZWRUZXRoZXJUb2tlbiBmcm9tIDB4Y2ZkZDkwZDRhMDBmN2I1Yg0KaW1wb3J0IFRoZVdvbGZvZkZsb3cgZnJvbSAweDgyNTljNzNlNDg3NDIyZDcNCmltcG9ydCBUb3BTaG90QkVUQSBmcm9tIDB4ZWUwOTAyOWYxZGJjZDlkMQ0KaW1wb3J0IFV0YWhKYXp6TGVnZW5kc0NsdWIgZnJvbSAweGNiYmE0ZDQxYWVmODNmZTMNCmltcG9ydCBWYW1waXJlIGZyb20gMHg2N2RhYWQ5MWUzNzgyYzgwDQppbXBvcnQgVnJvb21Ub2tlbiBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IERhcHBlclV0aWxpdHlDb2luIGZyb20gMHhlYWQ4OTIwODNiM2UyYzZjDQppbXBvcnQgVVNEQ0Zsb3cgZnJvbSAweGYxYWI5OWM4MmRlZTM1MjYNCmltcG9ydCBFVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiIGZyb20gMHgxZTRhYTBiODdkMTBiMTQxCgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93VG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2Zsb3dUb2tlbkJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tBRFVUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvQURVVG9rZW5NZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2FpU3BvcnRzSnVpY2VCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2FpU3BvcnRzSnVpY2VNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0JhbGxlcnpGQ0JhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvQmFsbGVyekZDTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCZWF2ZXJCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL0JlYXZlck1ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmxvY3RvVG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2Jsb2N0b1Rva2VuQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2JyYXNpbEJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvYnJhc2lsTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUFWQVhCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2NlQVZBWEJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUJOQkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvY2VCTkJCYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VCVVNEQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9jZUJVU0RCYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VEQUlCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2NlREFJQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlRlRNQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9jZUZUTUJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZU1BVElDQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9jZU1BVElDQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlVVNEVEJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvY2VVU0RUQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlV0JUQ0JhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvY2VXQlRDQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlV0VUSEJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvY2VXRVRIQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0RBTU80MjBCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL0RBTU80MjBNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZpeGVzRnVuZ2libGVUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvRml4c1N0YW5kYXJkRlRfMHhhOTEwMmU1NmE4YjdhNjgwVFJVTVBfQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9GbG92YXRhckR1c3RUb2tlbkJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93QmxvY2tjaGFpbmhpdENvaW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL0Zsb3dCbG9ja2NoYWluaGl0Q29pbk1ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRlVTREJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvZnVzZEJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tNYWlubGVkZ2VyQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9NYWlubGVkZ2VyTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQZXRKb2tpY3NIb3JzZXNCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL1BldEpva2ljc0hvcnNlc01ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUG9rZXJ0aW1lQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9Qb2tlcnRpbWVNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JFVlZCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL3JldnZCYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUkxZQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9STFlCYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU2xvcHB5U3Rha2VzQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9TbG9wcHlTdGFrZXNNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1N0YXJseVRva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9zdGFybHlUb2tlbkJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tzdEZsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvc3RGbG93VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVGVsZXBvcnRlZFRldGhlclRva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy90ZWxlcG9ydGVkVGV0aGVyVG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVGhlV29sZm9mRmxvd0JhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvVGhlV29sZm9mRmxvd01ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVG9wU2hvdEJFVEFCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL1RvcFNob3RCRVRBTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tVdGFoSmF6ekxlZ2VuZHNDbHViQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9VdGFoSmF6ekxlZ2VuZHNDbHViTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tWYW1waXJlQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9WYW1waXJlTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tWcm9vbVRva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9Wcm9vbVRva2VuQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0RhcHBlclV0aWxpdHlDb2luQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9kYXBwZXJVdGlsaXR5Q29pbkJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tVU0RDRmxvd0JhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvdXNkY0Zsb3dNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0VWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGJCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL0VWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGJWYXVsdCkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgCgogICAgYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcykgOiB7U3RyaW5nOiBVRml4NjR9IHsKICAgICAgcmV0dXJuIHsKICAgICAgIkEuMTY1NDY1MzM5OTA0MGE2MS5GbG93VG9rZW4iIDoKICAgIGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS5lNDUyYTJmNTY2NTcyOGY1LkFEVVRva2VuIiA6CiAgICBjaGVja0FEVVRva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS45ZGI5NGM5NTY0MjQzYmE3LmFpU3BvcnRzSnVpY2UiIDoKICAgIGNoZWNrYWlTcG9ydHNKdWljZUJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuNGVhMDQ3YzNlNzNjYTQ2MC5CYWxsZXJ6RkMiIDoKICAgIGNoZWNrQmFsbGVyekZDQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS42ODdlMWE3YWVmMTdiNzhiLkJlYXZlciIgOgogICAgY2hlY2tCZWF2ZXJCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjBmOWRmOTFjOTEyMWM0NjAuQmxvY3RvVG9rZW4iIDoKICAgIGNoZWNrQmxvY3RvVG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjdiZjA3ZDcxOWRjYjg0ODAuYnJhc2lsIiA6CiAgICBjaGVja2JyYXNpbEJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZUFWQVgiIDoKICAgIGNoZWNrY2VBVkFYQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQk5CIiA6CiAgICBjaGVja2NlQk5CQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQlVTRCIgOgogICAgY2hlY2tjZUJVU0RCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VEQUkiIDoKICAgIGNoZWNrY2VEQUlCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VGVE0iIDoKICAgIGNoZWNrY2VGVE1CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VNQVRJQyIgOgogICAgY2hlY2tjZU1BVElDQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlVVNEVCIgOgogICAgY2hlY2tjZVVTRFRCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VXQlRDIiA6CiAgICBjaGVja2NlV0JUQ0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZVdFVEgiIDoKICAgIGNoZWNrY2VXRVRIQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4zMzk5ZDdjNmM2MDliN2U1LkRBTU80MjAiIDoKICAgIGNoZWNrREFNTzQyMEJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuYTkxMDJlNTZhOGI3YTY4MC5GaXhlc0Z1bmdpYmxlVG9rZW4iIDoKICAgIGNoZWNrRml4ZXNGdW5naWJsZVRva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyRHVzdFRva2VuIiA6CiAgICBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS5kM2I2MmZmYmJjNjMyZjVhLkZsb3dCbG9ja2NoYWluaGl0Q29pbiIgOgogICAgY2hlY2tGbG93QmxvY2tjaGFpbmhpdENvaW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjNjNTk1OWI1Njg4OTYzOTMuRlVTRCIgOgogICAgY2hlY2tGVVNEQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS5mZDFjY2FhYWUzOWQwZTc5Lk1haW5sZWRnZXIiIDoKICAgIGNoZWNrTWFpbmxlZGdlckJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuNmZkMjQ2NWYzYTIyZTM0Yy5QZXRKb2tpY3NIb3JzZXMiIDoKICAgIGNoZWNrUGV0Sm9raWNzSG9yc2VzQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS5mZDFjY2FhYWUzOWQwZTc5LlBva2VydGltZSIgOgogICAgY2hlY2tQb2tlcnRpbWVCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmQwMWU0ODJlYjY4MGVjOWYuUkVWViIgOgogICAgY2hlY2tSRVZWQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LlJMWSIgOgogICAgY2hlY2tSTFlCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjUzZjM4OWQ5NmZiNGNlNWUuU2xvcHB5U3Rha2VzIiA6CiAgICBjaGVja1Nsb3BweVN0YWtlc0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMTQyZmE2NTcwYjYyZmQ5Ny5TdGFybHlUb2tlbiIgOgogICAgY2hlY2tTdGFybHlUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZDZmODA1NjUxOTNhZDcyNy5zdEZsb3dUb2tlbiIgOgogICAgY2hlY2tzdEZsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuY2ZkZDkwZDRhMDBmN2I1Yi5UZWxlcG9ydGVkVGV0aGVyVG9rZW4iIDoKICAgIGNoZWNrVGVsZXBvcnRlZFRldGhlclRva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS44MjU5YzczZTQ4NzQyMmQ3LlRoZVdvbGZvZkZsb3ciIDoKICAgIGNoZWNrVGhlV29sZm9mRmxvd0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZWUwOTAyOWYxZGJjZDlkMS5Ub3BTaG90QkVUQSIgOgogICAgY2hlY2tUb3BTaG90QkVUQUJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuY2JiYTRkNDFhZWY4M2ZlMy5VdGFoSmF6ekxlZ2VuZHNDbHViIiA6CiAgICBjaGVja1V0YWhKYXp6TGVnZW5kc0NsdWJCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjY3ZGFhZDkxZTM3ODJjODAuVmFtcGlyZSIgOgogICAgY2hlY2tWYW1waXJlQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS5mODg3ZWNlMzkxNjY5MDZlLlZyb29tVG9rZW4iIDoKICAgIGNoZWNrVnJvb21Ub2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZWFkODkyMDgzYjNlMmM2Yy5EYXBwZXJVdGlsaXR5Q29pbiIgOgogICAgY2hlY2tEYXBwZXJVdGlsaXR5Q29pbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZjFhYjk5YzgyZGVlMzUyNi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMWU0YWEwYjg3ZDEwYjE0MS5FVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiIiA6CiAgICBjaGVja0VWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGJCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICB9CiAgICB9CiAg", - "addToken": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBhZGRUb2tlbiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPiApID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC0gPFRva2VuPi5jcmVhdGVFbXB0eVZhdWx0KHZhdWx0VHlwZTogVHlwZTxAPFRva2VuPi5WYXVsdD4oKSksIHRvOiA8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgfQoKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICAgICAgCiAgICAgICAgfQogICAgICAgCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCBiYWxhbmNlQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goYmFsYW5jZUNhcGFiaWxpdHksIGF0OiA8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICAgICAgfQogICAgCiAgICB9Cn0=", - "enableTokenStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBlbmFibGVUb2tlblN0b3JhZ2UgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCY8VG9rZW4+LlZhdWx0Pihmcm9tOiA8VG9rZW5TdG9yYWdlUGF0aD4gKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtIDxUb2tlbj4uY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QDxUb2tlbj4uVmF1bHQ+KCkpLCB0bzogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgIH0KCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuUmVjZWl2ZXJQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8VG9rZW4+LlZhdWx0Pig8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcGFiaWxpdHksIGF0OiA8VG9rZW5SZWNlaXZlclBhdGg+KQogICAgICAgIAogICAgICAgIH0KICAgICAgIAogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlbkJhbGFuY2VQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgYmFsYW5jZUNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGJhbGFuY2VDYXBhYmlsaXR5LCBhdDogPFRva2VuQmFsYW5jZVBhdGg+KQogICAgICAgIH0KICAgIAogICAgfQp9", - "transferEvmTokens": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2ZlckV2bVRva2VucyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCi8vLyBUcmFuc2ZlcnMgJEZMT1cgZnJvbSB0aGUgc2lnbmVyJ3MgYWNjb3VudCBDYWRlbmNlIEZsb3cgYmFsYW5jZSB0byB0aGUgcmVjaXBpZW50J3MgaGV4LWVuY29kZWQgRVZNIGFkZHJlc3MuCi8vLyBOb3RlIHRoYXQgYSBDT0EgbXVzdCBoYXZlIGEgJEZMT1cgYmFsYW5jZSBpbiBFVk0gYmVmb3JlIHRyYW5zZmVycmluZyB2YWx1ZSB0byBhbm90aGVyIEVWTSBhZGRyZXNzLgovLy8KdHJhbnNhY3Rpb24odG9FVk1BZGRyZXNzSGV4OiBTdHJpbmcsIGFtb3VudDogVUludDI1NiwgZ2FzTGltaXQ6IFVJbnQ2NCkgewoKICAgIGxldCBjb2E6IGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzczogRVZNLkVWTUFkZHJlc3MKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IC9zdG9yYWdlL2V2bSkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LUVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCksIHRvOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgfQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgYnJpZGdlZCBhY2NvdW50IikKCiAgICAgICAgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHRvRVZNQWRkcmVzc0hleCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBpZiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MuYnl0ZXMgPT0gc2VsZi5jb2EuYWRkcmVzcygpLmJ5dGVzIHsKICAgICAgICAvLyAgICAgcmV0dXJuCiAgICAgICAgLy8gfQogICAgICAgIGxldCBkYXRhID0gIiIKICAgICAgICBsZXQgdHhSZXN1bHQgPSBzZWxmLmNvYS5jYWxsKAogICAgICAgICAgICB0bzogc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgICBnYXNMaW1pdDogZ2FzTGltaXQsCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZUJhbGFuY2UKICAgICAgICApCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgIH0KfQ==", - "transferTokens": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2ZlclRva2VucyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgcmVjaXBpZW50OiBBZGRyZXNzKSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcmVkCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnRBY2NvdW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnRBY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oPFRva2VuUmVjZWl2ZXJQYXRoPikhCiAgICAgICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9" + "isTokenListEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBpc1Rva2VuTGlzdEVuYWJsZWQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgogICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KICAgIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjENCmltcG9ydCBBRFVUb2tlbiBmcm9tIDB4ZTQ1MmEyZjU2NjU3MjhmNQ0KaW1wb3J0IGFpU3BvcnRzSnVpY2UgZnJvbSAweDlkYjk0Yzk1NjQyNDNiYTcNCmltcG9ydCBCYWxsZXJ6RkMgZnJvbSAweDRlYTA0N2MzZTczY2E0NjANCmltcG9ydCBCZWF2ZXIgZnJvbSAweDY4N2UxYTdhZWYxN2I3OGINCmltcG9ydCBCbG9jdG9Ub2tlbiBmcm9tIDB4MGY5ZGY5MWM5MTIxYzQ2MA0KaW1wb3J0IGJyYXNpbCBmcm9tIDB4N2JmMDdkNzE5ZGNiODQ4MA0KaW1wb3J0IGNlQVZBWCBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlQk5CIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VCVVNEIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VEQUkgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZUZUTSBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlTUFUSUMgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZVVTRFQgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZVdCVEMgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZVdFVEggZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBEQU1PNDIwIGZyb20gMHgzMzk5ZDdjNmM2MDliN2U1DQppbXBvcnQgRml4ZXNGdW5naWJsZVRva2VuIGZyb20gMHhhOTEwMmU1NmE4YjdhNjgwDQppbXBvcnQgRmxvdmF0YXJEdXN0VG9rZW4gZnJvbSAweDkyMWVhNDQ5ZGZmZWM2OGENCmltcG9ydCBGbG93QmxvY2tjaGFpbmhpdENvaW4gZnJvbSAweGQzYjYyZmZiYmM2MzJmNWENCmltcG9ydCBGVVNEIGZyb20gMHgzYzU5NTliNTY4ODk2MzkzDQppbXBvcnQgTWFpbmxlZGdlciBmcm9tIDB4ZmQxY2NhYWFlMzlkMGU3OQ0KaW1wb3J0IFBldEpva2ljc0hvcnNlcyBmcm9tIDB4NmZkMjQ2NWYzYTIyZTM0Yw0KaW1wb3J0IFBva2VydGltZSBmcm9tIDB4ZmQxY2NhYWFlMzlkMGU3OQ0KaW1wb3J0IFJFVlYgZnJvbSAweGQwMWU0ODJlYjY4MGVjOWYNCmltcG9ydCBSTFkgZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBTbG9wcHlTdGFrZXMgZnJvbSAweDUzZjM4OWQ5NmZiNGNlNWUNCmltcG9ydCBTdGFybHlUb2tlbiBmcm9tIDB4MTQyZmE2NTcwYjYyZmQ5Nw0KaW1wb3J0IHN0Rmxvd1Rva2VuIGZyb20gMHhkNmY4MDU2NTE5M2FkNzI3DQppbXBvcnQgVGVsZXBvcnRlZFRldGhlclRva2VuIGZyb20gMHhjZmRkOTBkNGEwMGY3YjViDQppbXBvcnQgVGhlV29sZm9mRmxvdyBmcm9tIDB4ODI1OWM3M2U0ODc0MjJkNw0KaW1wb3J0IFRvcFNob3RCRVRBIGZyb20gMHhlZTA5MDI5ZjFkYmNkOWQxDQppbXBvcnQgVXRhaEphenpMZWdlbmRzQ2x1YiBmcm9tIDB4Y2JiYTRkNDFhZWY4M2ZlMw0KaW1wb3J0IFZhbXBpcmUgZnJvbSAweDY3ZGFhZDkxZTM3ODJjODANCmltcG9ydCBWcm9vbVRva2VuIGZyb20gMHhmODg3ZWNlMzkxNjY5MDZlDQppbXBvcnQgRGFwcGVyVXRpbGl0eUNvaW4gZnJvbSAweGVhZDg5MjA4M2IzZTJjNmMNCmltcG9ydCBVU0RDRmxvdyBmcm9tIDB4ZjFhYjk5YzgyZGVlMzUyNg0KaW1wb3J0IEVWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGIgZnJvbSAweDFlNGFhMGI4N2QxMGIxNDENCmltcG9ydCBFVk1WTUJyaWRnZWRUb2tlbl9kOGFkOGFlODM3NWFhMzFiZmY1NDFlMTdkYzRiNDkxNzAxNGViZGFhIGZyb20gMHgxZTRhYTBiODdkMTBiMTQxCgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93VG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZmxvd1Rva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQURVVG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQURVVG9rZW5SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9BRFVUb2tlbk1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2thaVNwb3J0c0p1aWNlVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2FpU3BvcnRzSnVpY2VSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9haVNwb3J0c0p1aWNlTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0JhbGxlcnpGQ1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9CYWxsZXJ6RkNSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9CYWxsZXJ6RkNNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmVhdmVyVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JlYXZlclJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JlYXZlck1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCbG9jdG9Ub2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9ibG9jdG9Ub2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Jsb2N0b1Rva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrYnJhc2lsVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2JyYXNpbFJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2JyYXNpbE1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUFWQVhWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VBVkFYUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VBVkFYQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VCTkJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VCTkJSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUJOQkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlQlVTRFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUJVU0RSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUJVU0RCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZURBSVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZURBSVJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlREFJQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VGVE1WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VGVE1SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUZUTUJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlTUFUSUNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VNQVRJQ1JlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlTUFUSUNCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZVVTRFRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VVU0RUUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VVU0RUQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VXQlRDVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlV0JUQ1JlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlV0JUQ0JhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlV0VUSFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZVdFVEhSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZVdFVEhCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tEQU1PNDIwVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0RBTU80MjBSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9EQU1PNDIwTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZpeGVzRnVuZ2libGVUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GaXhzU3RhbmRhcmRGVF8weGE5MTAyZTU2YThiN2E2ODBUUlVNUF9SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GaXhzU3RhbmRhcmRGVF8weGE5MTAyZTU2YThiN2E2ODBUUlVNUF9CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG92YXRhckR1c3RUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckR1c3RUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3ZhdGFyRHVzdFRva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd0Jsb2NrY2hhaW5oaXRDb2luVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3dCbG9ja2NoYWluaGl0Q29pblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3dCbG9ja2NoYWluaGl0Q29pbk1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGVVNEVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Z1c2RSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9mdXNkQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrTWFpbmxlZGdlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NYWlubGVkZ2VyUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvTWFpbmxlZGdlck1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQZXRKb2tpY3NIb3JzZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUGV0Sm9raWNzSG9yc2VzUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUGV0Sm9raWNzSG9yc2VzTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Bva2VydGltZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Qb2tlcnRpbWVSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Qb2tlcnRpbWVNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUkVWVlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9yZXZ2UmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvcmV2dkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JMWVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9STFlSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9STFlCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTbG9wcHlTdGFrZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU2xvcHB5U3Rha2VzUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU2xvcHB5U3Rha2VzTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1N0YXJseVRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3N0YXJseVRva2VuUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3Rhcmx5VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tzdEZsb3dUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9zdEZsb3dUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3N0Rmxvd1Rva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVGVsZXBvcnRlZFRldGhlclRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3RlbGVwb3J0ZWRUZXRoZXJUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3RlbGVwb3J0ZWRUZXRoZXJUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RoZVdvbGZvZkZsb3dWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVGhlV29sZm9mRmxvd1JlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RoZVdvbGZvZkZsb3dNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVG9wU2hvdEJFVEFWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVG9wU2hvdEJFVEFSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Ub3BTaG90QkVUQU1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tVdGFoSmF6ekxlZ2VuZHNDbHViVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1V0YWhKYXp6TGVnZW5kc0NsdWJSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9VdGFoSmF6ekxlZ2VuZHNDbHViTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1ZhbXBpcmVWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVmFtcGlyZVJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1ZhbXBpcmVNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVnJvb21Ub2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Wcm9vbVRva2VuUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVnJvb21Ub2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0RhcHBlclV0aWxpdHlDb2luVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2RhcHBlclV0aWxpdHlDb2luUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZGFwcGVyVXRpbGl0eUNvaW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy91c2RjRmxvd1JlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3VzZGNGbG93TWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0VWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0VWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGJWYXVsdCkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9FVk1WTUJyaWRnZWRUb2tlbl9kOGFkOGFlODM3NWFhMzFiZmY1NDFlMTdkYzRiNDkxNzAxNGViZGFhUmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYVZhdWx0KQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIAoKICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDoge1N0cmluZzogQm9vbH0gewogICAgICByZXR1cm4gewogICAgIkEuMTY1NDY1MzM5OTA0MGE2MS5GbG93VG9rZW4iIDoKICAgIGNoZWNrRmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmU0NTJhMmY1NjY1NzI4ZjUuQURVVG9rZW4iIDoKICAgIGNoZWNrQURVVG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOWRiOTRjOTU2NDI0M2JhNy5haVNwb3J0c0p1aWNlIiA6CiAgICBjaGVja2FpU3BvcnRzSnVpY2VWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNGVhMDQ3YzNlNzNjYTQ2MC5CYWxsZXJ6RkMiIDoKICAgIGNoZWNrQmFsbGVyekZDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY4N2UxYTdhZWYxN2I3OGIuQmVhdmVyIiA6CiAgICBjaGVja0JlYXZlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wZjlkZjkxYzkxMjFjNDYwLkJsb2N0b1Rva2VuIiA6CiAgICBjaGVja0Jsb2N0b1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjdiZjA3ZDcxOWRjYjg0ODAuYnJhc2lsIiA6CiAgICBjaGVja2JyYXNpbFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQVZBWCIgOgogICAgY2hlY2tjZUFWQVhWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZUJOQiIgOgogICAgY2hlY2tjZUJOQlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQlVTRCIgOgogICAgY2hlY2tjZUJVU0RWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZURBSSIgOgogICAgY2hlY2tjZURBSVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlRlRNIiA6CiAgICBjaGVja2NlRlRNVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VNQVRJQyIgOgogICAgY2hlY2tjZU1BVElDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VVU0RUIiA6CiAgICBjaGVja2NlVVNEVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlV0JUQyIgOgogICAgY2hlY2tjZVdCVENWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZVdFVEgiIDoKICAgIGNoZWNrY2VXRVRIVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjMzOTlkN2M2YzYwOWI3ZTUuREFNTzQyMCIgOgogICAgY2hlY2tEQU1PNDIwVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmE5MTAyZTU2YThiN2E2ODAuRml4ZXNGdW5naWJsZVRva2VuIiA6CiAgICBjaGVja0ZpeGVzRnVuZ2libGVUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyRHVzdFRva2VuIiA6CiAgICBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzYjYyZmZiYmM2MzJmNWEuRmxvd0Jsb2NrY2hhaW5oaXRDb2luIiA6CiAgICBjaGVja0Zsb3dCbG9ja2NoYWluaGl0Q29pblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zYzU5NTliNTY4ODk2MzkzLkZVU0QiIDoKICAgIGNoZWNrRlVTRFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5mZDFjY2FhYWUzOWQwZTc5Lk1haW5sZWRnZXIiIDoKICAgIGNoZWNrTWFpbmxlZGdlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS42ZmQyNDY1ZjNhMjJlMzRjLlBldEpva2ljc0hvcnNlcyIgOgogICAgY2hlY2tQZXRKb2tpY3NIb3JzZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZmQxY2NhYWFlMzlkMGU3OS5Qb2tlcnRpbWUiIDoKICAgIGNoZWNrUG9rZXJ0aW1lVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQwMWU0ODJlYjY4MGVjOWYuUkVWViIgOgogICAgY2hlY2tSRVZWVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuUkxZIiA6CiAgICBjaGVja1JMWVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS41M2YzODlkOTZmYjRjZTVlLlNsb3BweVN0YWtlcyIgOgogICAgY2hlY2tTbG9wcHlTdGFrZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMTQyZmE2NTcwYjYyZmQ5Ny5TdGFybHlUb2tlbiIgOgogICAgY2hlY2tTdGFybHlUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNmY4MDU2NTE5M2FkNzI3LnN0Rmxvd1Rva2VuIiA6CiAgICBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNmZGQ5MGQ0YTAwZjdiNWIuVGVsZXBvcnRlZFRldGhlclRva2VuIiA6CiAgICBjaGVja1RlbGVwb3J0ZWRUZXRoZXJUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44MjU5YzczZTQ4NzQyMmQ3LlRoZVdvbGZvZkZsb3ciIDoKICAgIGNoZWNrVGhlV29sZm9mRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lZTA5MDI5ZjFkYmNkOWQxLlRvcFNob3RCRVRBIiA6CiAgICBjaGVja1RvcFNob3RCRVRBVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNiYmE0ZDQxYWVmODNmZTMuVXRhaEphenpMZWdlbmRzQ2x1YiIgOgogICAgY2hlY2tVdGFoSmF6ekxlZ2VuZHNDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY3ZGFhZDkxZTM3ODJjODAuVmFtcGlyZSIgOgogICAgY2hlY2tWYW1waXJlVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuVnJvb21Ub2tlbiIgOgogICAgY2hlY2tWcm9vbVRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmVhZDg5MjA4M2IzZTJjNmMuRGFwcGVyVXRpbGl0eUNvaW4iIDoKICAgIGNoZWNrRGFwcGVyVXRpbGl0eUNvaW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjFhYjk5YzgyZGVlMzUyNi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZTRhYTBiODdkMTBiMTQxLkVWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGIiIDoKICAgIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZTRhYTBiODdkMTBiMTQxLkVWTVZNQnJpZGdlZFRva2VuX2Q4YWQ4YWU4Mzc1YWEzMWJmZjU0MWUxN2RjNGI0OTE3MDE0ZWJkYWEiIDoKICAgIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICB9CiAgICB9CiAg", + "isLinkedAccountTokenListEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBpc0xpbmtlZEFjY291bnRUb2tlbkxpc3RFbmFibGVkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxDQppbXBvcnQgQURVVG9rZW4gZnJvbSAweGU0NTJhMmY1NjY1NzI4ZjUNCmltcG9ydCBhaVNwb3J0c0p1aWNlIGZyb20gMHg5ZGI5NGM5NTY0MjQzYmE3DQppbXBvcnQgQmFsbGVyekZDIGZyb20gMHg0ZWEwNDdjM2U3M2NhNDYwDQppbXBvcnQgQmVhdmVyIGZyb20gMHg2ODdlMWE3YWVmMTdiNzhiDQppbXBvcnQgQmxvY3RvVG9rZW4gZnJvbSAweDBmOWRmOTFjOTEyMWM0NjANCmltcG9ydCBicmFzaWwgZnJvbSAweDdiZjA3ZDcxOWRjYjg0ODANCmltcG9ydCBjZUFWQVggZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZUJOQiBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlQlVTRCBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlREFJIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VGVE0gZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZU1BVElDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VVU0RUIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXQlRDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXRVRIIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgREFNTzQyMCBmcm9tIDB4MzM5OWQ3YzZjNjA5YjdlNQ0KaW1wb3J0IEZpeGVzRnVuZ2libGVUb2tlbiBmcm9tIDB4YTkxMDJlNTZhOGI3YTY4MA0KaW1wb3J0IEZsb3ZhdGFyRHVzdFRva2VuIGZyb20gMHg5MjFlYTQ0OWRmZmVjNjhhDQppbXBvcnQgRmxvd0Jsb2NrY2hhaW5oaXRDb2luIGZyb20gMHhkM2I2MmZmYmJjNjMyZjVhDQppbXBvcnQgRlVTRCBmcm9tIDB4M2M1OTU5YjU2ODg5NjM5Mw0KaW1wb3J0IE1haW5sZWRnZXIgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBQZXRKb2tpY3NIb3JzZXMgZnJvbSAweDZmZDI0NjVmM2EyMmUzNGMNCmltcG9ydCBQb2tlcnRpbWUgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBSRVZWIGZyb20gMHhkMDFlNDgyZWI2ODBlYzlmDQppbXBvcnQgUkxZIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgU2xvcHB5U3Rha2VzIGZyb20gMHg1M2YzODlkOTZmYjRjZTVlDQppbXBvcnQgU3Rhcmx5VG9rZW4gZnJvbSAweDE0MmZhNjU3MGI2MmZkOTcNCmltcG9ydCBzdEZsb3dUb2tlbiBmcm9tIDB4ZDZmODA1NjUxOTNhZDcyNw0KaW1wb3J0IFRlbGVwb3J0ZWRUZXRoZXJUb2tlbiBmcm9tIDB4Y2ZkZDkwZDRhMDBmN2I1Yg0KaW1wb3J0IFRoZVdvbGZvZkZsb3cgZnJvbSAweDgyNTljNzNlNDg3NDIyZDcNCmltcG9ydCBUb3BTaG90QkVUQSBmcm9tIDB4ZWUwOTAyOWYxZGJjZDlkMQ0KaW1wb3J0IFV0YWhKYXp6TGVnZW5kc0NsdWIgZnJvbSAweGNiYmE0ZDQxYWVmODNmZTMNCmltcG9ydCBWYW1waXJlIGZyb20gMHg2N2RhYWQ5MWUzNzgyYzgwDQppbXBvcnQgVnJvb21Ub2tlbiBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IERhcHBlclV0aWxpdHlDb2luIGZyb20gMHhlYWQ4OTIwODNiM2UyYzZjDQppbXBvcnQgVVNEQ0Zsb3cgZnJvbSAweGYxYWI5OWM4MmRlZTM1MjYNCmltcG9ydCBFVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiIGZyb20gMHgxZTRhYTBiODdkMTBiMTQxDQppbXBvcnQgRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYSBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQoKICAgIAogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tBRFVUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQURVVG9rZW5NZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrYWlTcG9ydHNKdWljZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYWlTcG9ydHNKdWljZU1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCYWxsZXJ6RkNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JhbGxlcnpGQ01ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCZWF2ZXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JlYXZlck1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCbG9jdG9Ub2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYmxvY3RvVG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2ticmFzaWxWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2JyYXNpbE1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUFWQVhWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlQVZBWEJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlQk5CVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZUJOQkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlQlVTRFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VCVVNEQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VEQUlWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlREFJQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VGVE1WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlRlRNQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VNQVRJQ1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VNQVRJQ0JhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlVVNEVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2VVU0RUQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VXQlRDVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9jZVdCVENCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZVdFVEhWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2NlV0VUSEJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0RBTU80MjBWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0RBTU80MjBNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRml4ZXNGdW5naWJsZVRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GaXhzU3RhbmRhcmRGVF8weGE5MTAyZTU2YThiN2E2ODBUUlVNUF9CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG92YXRhckR1c3RUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvdmF0YXJEdXN0VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93QmxvY2tjaGFpbmhpdENvaW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3dCbG9ja2NoYWluaGl0Q29pbk1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGVVNEVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9mdXNkQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrTWFpbmxlZGdlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvTWFpbmxlZGdlck1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQZXRKb2tpY3NIb3JzZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1BldEpva2ljc0hvcnNlc01ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQb2tlcnRpbWVWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Bva2VydGltZU1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSRVZWVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9yZXZ2QmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUkxZVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9STFlCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTbG9wcHlTdGFrZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Nsb3BweVN0YWtlc01ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTdGFybHlUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3Rhcmx5VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tzdEZsb3dUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3RGbG93VG9rZW5CYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUZWxlcG9ydGVkVGV0aGVyVG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3RlbGVwb3J0ZWRUZXRoZXJUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RoZVdvbGZvZkZsb3dWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RoZVdvbGZvZkZsb3dNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVG9wU2hvdEJFVEFWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RvcFNob3RCRVRBTWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1V0YWhKYXp6TGVnZW5kc0NsdWJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1V0YWhKYXp6TGVnZW5kc0NsdWJNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVmFtcGlyZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVmFtcGlyZU1ldGFkYXRhKQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tWcm9vbVRva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Wcm9vbVRva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRGFwcGVyVXRpbGl0eUNvaW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2RhcHBlclV0aWxpdHlDb2luQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVVNEQ0Zsb3dWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3VzZGNGbG93TWV0YWRhdGEpCgogICAgICBsZXQgZmxhZyA9IGJhbGFuY2UKCiAgICAgIHJldHVybiBmbGFnIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0VWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICAKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0VWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGJWYXVsdCkKCiAgICAgIGxldCBmbGFnID0gYmFsYW5jZQoKICAgICAgcmV0dXJuIGZsYWcgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIAogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYVZhdWx0KQoKICAgICAgbGV0IGZsYWcgPSBiYWxhbmNlCgogICAgICByZXR1cm4gZmxhZyAKICAgIH0KICAgIAoKICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDoge1N0cmluZzogQm9vbH0gewogICAgICByZXR1cm4gewogICAgIkEuMTY1NDY1MzM5OTA0MGE2MS5GbG93VG9rZW4iIDoKICAgIGNoZWNrRmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmU0NTJhMmY1NjY1NzI4ZjUuQURVVG9rZW4iIDoKICAgIGNoZWNrQURVVG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOWRiOTRjOTU2NDI0M2JhNy5haVNwb3J0c0p1aWNlIiA6CiAgICBjaGVja2FpU3BvcnRzSnVpY2VWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNGVhMDQ3YzNlNzNjYTQ2MC5CYWxsZXJ6RkMiIDoKICAgIGNoZWNrQmFsbGVyekZDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY4N2UxYTdhZWYxN2I3OGIuQmVhdmVyIiA6CiAgICBjaGVja0JlYXZlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wZjlkZjkxYzkxMjFjNDYwLkJsb2N0b1Rva2VuIiA6CiAgICBjaGVja0Jsb2N0b1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjdiZjA3ZDcxOWRjYjg0ODAuYnJhc2lsIiA6CiAgICBjaGVja2JyYXNpbFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQVZBWCIgOgogICAgY2hlY2tjZUFWQVhWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZUJOQiIgOgogICAgY2hlY2tjZUJOQlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlQlVTRCIgOgogICAgY2hlY2tjZUJVU0RWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZURBSSIgOgogICAgY2hlY2tjZURBSVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlRlRNIiA6CiAgICBjaGVja2NlRlRNVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VNQVRJQyIgOgogICAgY2hlY2tjZU1BVElDVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VVU0RUIiA6CiAgICBjaGVja2NlVVNEVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlV0JUQyIgOgogICAgY2hlY2tjZVdCVENWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZVdFVEgiIDoKICAgIGNoZWNrY2VXRVRIVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjMzOTlkN2M2YzYwOWI3ZTUuREFNTzQyMCIgOgogICAgY2hlY2tEQU1PNDIwVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmE5MTAyZTU2YThiN2E2ODAuRml4ZXNGdW5naWJsZVRva2VuIiA6CiAgICBjaGVja0ZpeGVzRnVuZ2libGVUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyRHVzdFRva2VuIiA6CiAgICBjaGVja0Zsb3ZhdGFyRHVzdFRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzYjYyZmZiYmM2MzJmNWEuRmxvd0Jsb2NrY2hhaW5oaXRDb2luIiA6CiAgICBjaGVja0Zsb3dCbG9ja2NoYWluaGl0Q29pblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zYzU5NTliNTY4ODk2MzkzLkZVU0QiIDoKICAgIGNoZWNrRlVTRFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5mZDFjY2FhYWUzOWQwZTc5Lk1haW5sZWRnZXIiIDoKICAgIGNoZWNrTWFpbmxlZGdlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS42ZmQyNDY1ZjNhMjJlMzRjLlBldEpva2ljc0hvcnNlcyIgOgogICAgY2hlY2tQZXRKb2tpY3NIb3JzZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZmQxY2NhYWFlMzlkMGU3OS5Qb2tlcnRpbWUiIDoKICAgIGNoZWNrUG9rZXJ0aW1lVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQwMWU0ODJlYjY4MGVjOWYuUkVWViIgOgogICAgY2hlY2tSRVZWVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuUkxZIiA6CiAgICBjaGVja1JMWVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS41M2YzODlkOTZmYjRjZTVlLlNsb3BweVN0YWtlcyIgOgogICAgY2hlY2tTbG9wcHlTdGFrZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMTQyZmE2NTcwYjYyZmQ5Ny5TdGFybHlUb2tlbiIgOgogICAgY2hlY2tTdGFybHlUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNmY4MDU2NTE5M2FkNzI3LnN0Rmxvd1Rva2VuIiA6CiAgICBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNmZGQ5MGQ0YTAwZjdiNWIuVGVsZXBvcnRlZFRldGhlclRva2VuIiA6CiAgICBjaGVja1RlbGVwb3J0ZWRUZXRoZXJUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44MjU5YzczZTQ4NzQyMmQ3LlRoZVdvbGZvZkZsb3ciIDoKICAgIGNoZWNrVGhlV29sZm9mRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lZTA5MDI5ZjFkYmNkOWQxLlRvcFNob3RCRVRBIiA6CiAgICBjaGVja1RvcFNob3RCRVRBVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNiYmE0ZDQxYWVmODNmZTMuVXRhaEphenpMZWdlbmRzQ2x1YiIgOgogICAgY2hlY2tVdGFoSmF6ekxlZ2VuZHNDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjY3ZGFhZDkxZTM3ODJjODAuVmFtcGlyZSIgOgogICAgY2hlY2tWYW1waXJlVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuVnJvb21Ub2tlbiIgOgogICAgY2hlY2tWcm9vbVRva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmVhZDg5MjA4M2IzZTJjNmMuRGFwcGVyVXRpbGl0eUNvaW4iIDoKICAgIGNoZWNrRGFwcGVyVXRpbGl0eUNvaW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjFhYjk5YzgyZGVlMzUyNi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZTRhYTBiODdkMTBiMTQxLkVWTVZNQnJpZGdlZFRva2VuXzFiOTcxMDBlYTFkNzEyNmM0ZDYwMDI3ZTIzMWVhNGNiMjUzMTRiZGIiIDoKICAgIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZTRhYTBiODdkMTBiMTQxLkVWTVZNQnJpZGdlZFRva2VuX2Q4YWQ4YWU4Mzc1YWEzMWJmZjU0MWUxN2RjNGI0OTE3MDE0ZWJkYWEiIDoKICAgIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICB9CiAgICB9CiAg", + "getTokenListBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRUb2tlbkxpc3RCYWxhbmNlU3RhYmxlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxDQppbXBvcnQgQURVVG9rZW4gZnJvbSAweGU0NTJhMmY1NjY1NzI4ZjUNCmltcG9ydCBhaVNwb3J0c0p1aWNlIGZyb20gMHg5ZGI5NGM5NTY0MjQzYmE3DQppbXBvcnQgQmFsbGVyekZDIGZyb20gMHg0ZWEwNDdjM2U3M2NhNDYwDQppbXBvcnQgQmVhdmVyIGZyb20gMHg2ODdlMWE3YWVmMTdiNzhiDQppbXBvcnQgQmxvY3RvVG9rZW4gZnJvbSAweDBmOWRmOTFjOTEyMWM0NjANCmltcG9ydCBicmFzaWwgZnJvbSAweDdiZjA3ZDcxOWRjYjg0ODANCmltcG9ydCBjZUFWQVggZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZUJOQiBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlQlVTRCBmcm9tIDB4MjMxY2MwZGJiY2ZmYzRiNw0KaW1wb3J0IGNlREFJIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VGVE0gZnJvbSAweDIzMWNjMGRiYmNmZmM0YjcNCmltcG9ydCBjZU1BVElDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VVU0RUIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXQlRDIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgY2VXRVRIIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgREFNTzQyMCBmcm9tIDB4MzM5OWQ3YzZjNjA5YjdlNQ0KaW1wb3J0IEZpeGVzRnVuZ2libGVUb2tlbiBmcm9tIDB4YTkxMDJlNTZhOGI3YTY4MA0KaW1wb3J0IEZsb3ZhdGFyRHVzdFRva2VuIGZyb20gMHg5MjFlYTQ0OWRmZmVjNjhhDQppbXBvcnQgRmxvd0Jsb2NrY2hhaW5oaXRDb2luIGZyb20gMHhkM2I2MmZmYmJjNjMyZjVhDQppbXBvcnQgRlVTRCBmcm9tIDB4M2M1OTU5YjU2ODg5NjM5Mw0KaW1wb3J0IE1haW5sZWRnZXIgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBQZXRKb2tpY3NIb3JzZXMgZnJvbSAweDZmZDI0NjVmM2EyMmUzNGMNCmltcG9ydCBQb2tlcnRpbWUgZnJvbSAweGZkMWNjYWFhZTM5ZDBlNzkNCmltcG9ydCBSRVZWIGZyb20gMHhkMDFlNDgyZWI2ODBlYzlmDQppbXBvcnQgUkxZIGZyb20gMHgyMzFjYzBkYmJjZmZjNGI3DQppbXBvcnQgU2xvcHB5U3Rha2VzIGZyb20gMHg1M2YzODlkOTZmYjRjZTVlDQppbXBvcnQgU3Rhcmx5VG9rZW4gZnJvbSAweDE0MmZhNjU3MGI2MmZkOTcNCmltcG9ydCBzdEZsb3dUb2tlbiBmcm9tIDB4ZDZmODA1NjUxOTNhZDcyNw0KaW1wb3J0IFRlbGVwb3J0ZWRUZXRoZXJUb2tlbiBmcm9tIDB4Y2ZkZDkwZDRhMDBmN2I1Yg0KaW1wb3J0IFRoZVdvbGZvZkZsb3cgZnJvbSAweDgyNTljNzNlNDg3NDIyZDcNCmltcG9ydCBUb3BTaG90QkVUQSBmcm9tIDB4ZWUwOTAyOWYxZGJjZDlkMQ0KaW1wb3J0IFV0YWhKYXp6TGVnZW5kc0NsdWIgZnJvbSAweGNiYmE0ZDQxYWVmODNmZTMNCmltcG9ydCBWYW1waXJlIGZyb20gMHg2N2RhYWQ5MWUzNzgyYzgwDQppbXBvcnQgVnJvb21Ub2tlbiBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IERhcHBlclV0aWxpdHlDb2luIGZyb20gMHhlYWQ4OTIwODNiM2UyYzZjDQppbXBvcnQgVVNEQ0Zsb3cgZnJvbSAweGYxYWI5OWM4MmRlZTM1MjYNCmltcG9ydCBFVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiIGZyb20gMHgxZTRhYTBiODdkMTBiMTQxDQppbXBvcnQgRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYSBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQoKICAgIAogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQURVVG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL0FEVVRva2VuTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2thaVNwb3J0c0p1aWNlQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9haVNwb3J0c0p1aWNlTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCYWxsZXJ6RkNCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL0JhbGxlcnpGQ01ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmVhdmVyQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9CZWF2ZXJNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Jsb2N0b1Rva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9ibG9jdG9Ub2tlbkJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2ticmFzaWxCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2JyYXNpbE1ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VBVkFYQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9jZUFWQVhCYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VCTkJCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2NlQk5CQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlQlVTREJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvY2VCVVNEQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja2NlREFJQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9jZURBSUJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZUZUTUJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvY2VGVE1CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrY2VNQVRJQ0JhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvY2VNQVRJQ0JhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZVVTRFRCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2NlVVNEVEJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZVdCVENCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2NlV0JUQ0JhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tjZVdFVEhCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2NlV0VUSEJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tEQU1PNDIwQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9EQU1PNDIwTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGaXhlc0Z1bmdpYmxlVG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL0ZpeHNTdGFuZGFyZEZUXzB4YTkxMDJlNTZhOGI3YTY4MFRSVU1QX0JhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG92YXRhckR1c3RUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvRmxvdmF0YXJEdXN0VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd0Jsb2NrY2hhaW5oaXRDb2luQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9GbG93QmxvY2tjaGFpbmhpdENvaW5NZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZVU0RCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL2Z1c2RCYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrTWFpbmxlZGdlckJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvTWFpbmxlZGdlck1ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUGV0Sm9raWNzSG9yc2VzQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9QZXRKb2tpY3NIb3JzZXNNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Bva2VydGltZUJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvUG9rZXJ0aW1lTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSRVZWQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9yZXZ2QmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JMWUJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvUkxZQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Nsb3BweVN0YWtlc0JhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvU2xvcHB5U3Rha2VzTWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTdGFybHlUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvc3Rhcmx5VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrc3RGbG93VG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL3N0Rmxvd1Rva2VuQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RlbGVwb3J0ZWRUZXRoZXJUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvdGVsZXBvcnRlZFRldGhlclRva2VuQmFsYW5jZSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RoZVdvbGZvZkZsb3dCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL1RoZVdvbGZvZkZsb3dNZXRhZGF0YSkgPz8gbmlsCiAgICAgIAogICAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIAogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgICB9CiAgICAgIAogICAgICByZXR1cm4gMC4wCiAgICAgIAogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RvcFNob3RCRVRBQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9Ub3BTaG90QkVUQU1ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVXRhaEphenpMZWdlbmRzQ2x1YkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvVXRhaEphenpMZWdlbmRzQ2x1Yk1ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVmFtcGlyZUJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvVmFtcGlyZU1ldGFkYXRhKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVnJvb21Ub2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvVnJvb21Ub2tlbkJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tEYXBwZXJVdGlsaXR5Q29pbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvZGFwcGVyVXRpbGl0eUNvaW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVVNEQ0Zsb3dCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL3VzZGNGbG93TWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tFVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9FVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiVmF1bHQpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tFVk1WTUJyaWRnZWRUb2tlbl9kOGFkOGFlODM3NWFhMzFiZmY1NDFlMTdkYzRiNDkxNzAxNGViZGFhQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9FVk1WTUJyaWRnZWRUb2tlbl9kOGFkOGFlODM3NWFhMzFiZmY1NDFlMTdkYzRiNDkxNzAxNGViZGFhVmF1bHQpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIAoKICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDoge1N0cmluZzogVUZpeDY0fSB7CiAgICAgIHJldHVybiB7CiAgICAgICJBLjE2NTQ2NTMzOTkwNDBhNjEuRmxvd1Rva2VuIiA6CiAgICBjaGVja0Zsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZTQ1MmEyZjU2NjU3MjhmNS5BRFVUb2tlbiIgOgogICAgY2hlY2tBRFVUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuOWRiOTRjOTU2NDI0M2JhNy5haVNwb3J0c0p1aWNlIiA6CiAgICBjaGVja2FpU3BvcnRzSnVpY2VCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjRlYTA0N2MzZTczY2E0NjAuQmFsbGVyekZDIiA6CiAgICBjaGVja0JhbGxlcnpGQ0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuNjg3ZTFhN2FlZjE3Yjc4Yi5CZWF2ZXIiIDoKICAgIGNoZWNrQmVhdmVyQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4wZjlkZjkxYzkxMjFjNDYwLkJsb2N0b1Rva2VuIiA6CiAgICBjaGVja0Jsb2N0b1Rva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS43YmYwN2Q3MTlkY2I4NDgwLmJyYXNpbCIgOgogICAgY2hlY2ticmFzaWxCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VBVkFYIiA6CiAgICBjaGVja2NlQVZBWEJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZUJOQiIgOgogICAgY2hlY2tjZUJOQkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZUJVU0QiIDoKICAgIGNoZWNrY2VCVVNEQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlREFJIiA6CiAgICBjaGVja2NlREFJQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlRlRNIiA6CiAgICBjaGVja2NlRlRNQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlTUFUSUMiIDoKICAgIGNoZWNrY2VNQVRJQ0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5jZVVTRFQiIDoKICAgIGNoZWNrY2VVU0RUQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4yMzFjYzBkYmJjZmZjNGI3LmNlV0JUQyIgOgogICAgY2hlY2tjZVdCVENCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjIzMWNjMGRiYmNmZmM0YjcuY2VXRVRIIiA6CiAgICBjaGVja2NlV0VUSEJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMzM5OWQ3YzZjNjA5YjdlNS5EQU1PNDIwIiA6CiAgICBjaGVja0RBTU80MjBCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmE5MTAyZTU2YThiN2E2ODAuRml4ZXNGdW5naWJsZVRva2VuIiA6CiAgICBjaGVja0ZpeGVzRnVuZ2libGVUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuOTIxZWE0NDlkZmZlYzY4YS5GbG92YXRhckR1c3RUb2tlbiIgOgogICAgY2hlY2tGbG92YXRhckR1c3RUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZDNiNjJmZmJiYzYzMmY1YS5GbG93QmxvY2tjaGFpbmhpdENvaW4iIDoKICAgIGNoZWNrRmxvd0Jsb2NrY2hhaW5oaXRDb2luQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4zYzU5NTliNTY4ODk2MzkzLkZVU0QiIDoKICAgIGNoZWNrRlVTREJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZmQxY2NhYWFlMzlkMGU3OS5NYWlubGVkZ2VyIiA6CiAgICBjaGVja01haW5sZWRnZXJCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjZmZDI0NjVmM2EyMmUzNGMuUGV0Sm9raWNzSG9yc2VzIiA6CiAgICBjaGVja1BldEpva2ljc0hvcnNlc0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZmQxY2NhYWFlMzlkMGU3OS5Qb2tlcnRpbWUiIDoKICAgIGNoZWNrUG9rZXJ0aW1lQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS5kMDFlNDgyZWI2ODBlYzlmLlJFVlYiIDoKICAgIGNoZWNrUkVWVkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuMjMxY2MwZGJiY2ZmYzRiNy5STFkiIDoKICAgIGNoZWNrUkxZQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS41M2YzODlkOTZmYjRjZTVlLlNsb3BweVN0YWtlcyIgOgogICAgY2hlY2tTbG9wcHlTdGFrZXNCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjE0MmZhNjU3MGI2MmZkOTcuU3Rhcmx5VG9rZW4iIDoKICAgIGNoZWNrU3Rhcmx5VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmQ2ZjgwNTY1MTkzYWQ3Mjcuc3RGbG93VG9rZW4iIDoKICAgIGNoZWNrc3RGbG93VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmNmZGQ5MGQ0YTAwZjdiNWIuVGVsZXBvcnRlZFRldGhlclRva2VuIiA6CiAgICBjaGVja1RlbGVwb3J0ZWRUZXRoZXJUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuODI1OWM3M2U0ODc0MjJkNy5UaGVXb2xmb2ZGbG93IiA6CiAgICBjaGVja1RoZVdvbGZvZkZsb3dCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmVlMDkwMjlmMWRiY2Q5ZDEuVG9wU2hvdEJFVEEiIDoKICAgIGNoZWNrVG9wU2hvdEJFVEFCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmNiYmE0ZDQxYWVmODNmZTMuVXRhaEphenpMZWdlbmRzQ2x1YiIgOgogICAgY2hlY2tVdGFoSmF6ekxlZ2VuZHNDbHViQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS42N2RhYWQ5MWUzNzgyYzgwLlZhbXBpcmUiIDoKICAgIGNoZWNrVmFtcGlyZUJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZjg4N2VjZTM5MTY2OTA2ZS5Wcm9vbVRva2VuIiA6CiAgICBjaGVja1Zyb29tVG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmVhZDg5MjA4M2IzZTJjNmMuRGFwcGVyVXRpbGl0eUNvaW4iIDoKICAgIGNoZWNrRGFwcGVyVXRpbGl0eUNvaW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLmYxYWI5OWM4MmRlZTM1MjYuVVNEQ0Zsb3ciIDoKICAgIGNoZWNrVVNEQ0Zsb3dCYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjFlNGFhMGI4N2QxMGIxNDEuRVZNVk1CcmlkZ2VkVG9rZW5fMWI5NzEwMGVhMWQ3MTI2YzRkNjAwMjdlMjMxZWE0Y2IyNTMxNGJkYiIgOgogICAgY2hlY2tFVk1WTUJyaWRnZWRUb2tlbl8xYjk3MTAwZWExZDcxMjZjNGQ2MDAyN2UyMzFlYTRjYjI1MzE0YmRiQmFsYW5jZShhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgICAiQS4xZTRhYTBiODdkMTBiMTQxLkVWTVZNQnJpZGdlZFRva2VuX2Q4YWQ4YWU4Mzc1YWEzMWJmZjU0MWUxN2RjNGI0OTE3MDE0ZWJkYWEiIDoKICAgIGNoZWNrRVZNVk1CcmlkZ2VkVG9rZW5fZDhhZDhhZTgzNzVhYTMxYmZmNTQxZTE3ZGM0YjQ5MTcwMTRlYmRhYUJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgIH0KICAgIH0KICA=", + "addToken": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYWRkVG9rZW4gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uIHsKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmPFRva2VuPi5WYXVsdD4oZnJvbTogPFRva2VuU3RvcmFnZVBhdGg+ICkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LSA8VG9rZW4+LmNyZWF0ZUVtcHR5VmF1bHQodmF1bHRUeXBlOiBUeXBlPEA8VG9rZW4+LlZhdWx0PigpKSwgdG86IDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICB9CgogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlblJlY2VpdmVyUGF0aD4pID09IGZhbHNlIHsKICAgICAgICAgICAgbGV0IHJlY2VpdmVyQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXBhYmlsaXR5LCBhdDogPFRva2VuUmVjZWl2ZXJQYXRoPikKICAgICAgICAKICAgICAgICB9CiAgICAgICAKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5CYWxhbmNlUGF0aD4pID09IGZhbHNlIHsKICAgICAgICAgICAgbGV0IGJhbGFuY2VDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8VG9rZW4+LlZhdWx0Pig8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChiYWxhbmNlQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlbkJhbGFuY2VQYXRoPikKICAgICAgICB9CiAgICAKICAgIH0KfQ==", + "enableTokenStorage": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZW5hYmxlVG9rZW5TdG9yYWdlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPiApID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC0gPFRva2VuPi5jcmVhdGVFbXB0eVZhdWx0KHZhdWx0VHlwZTogVHlwZTxAPFRva2VuPi5WYXVsdD4oKSksIHRvOiA8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgfQoKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICAgICAgCiAgICAgICAgfQogICAgICAgCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCBiYWxhbmNlQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goYmFsYW5jZUNhcGFiaWxpdHksIGF0OiA8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICAgICAgfQogICAgCiAgICB9Cn0=", + "transferEvmTokens": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJFdm1Ub2tlbnMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRyYW5zZmVycyAkRkxPVyBmcm9tIHRoZSBzaWduZXIncyBhY2NvdW50IENhZGVuY2UgRmxvdyBiYWxhbmNlIHRvIHRoZSByZWNpcGllbnQncyBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcy4KLy8vIE5vdGUgdGhhdCBhIENPQSBtdXN0IGhhdmUgYSAkRkxPVyBiYWxhbmNlIGluIEVWTSBiZWZvcmUgdHJhbnNmZXJyaW5nIHZhbHVlIHRvIGFub3RoZXIgRVZNIGFkZHJlc3MuCi8vLwp0cmFuc2FjdGlvbih0b0VWTUFkZHJlc3NIZXg6IFN0cmluZywgYW1vdW50OiBVSW50MjU2LCBnYXNMaW1pdDogVUludDY0KSB7CgogICAgbGV0IGNvYTogYXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzOiBFVk0uRVZNQWRkcmVzcwoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogL3N0b3JhZ2UvZXZtKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKSwgdG86IC9zdG9yYWdlL2V2bSkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBicmlkZ2VkIGFjY291bnQiKQoKICAgICAgICBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcodG9FVk1BZGRyZXNzSGV4KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIGlmIHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcy5ieXRlcyA9PSBzZWxmLmNvYS5hZGRyZXNzKCkuYnl0ZXMgewogICAgICAgIC8vICAgICByZXR1cm4KICAgICAgICAvLyB9CiAgICAgICAgbGV0IGRhdGEgPSAiIgogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQogICAgfQp9", + "transferTokens": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJUb2tlbnMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKCiAgICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVyZWQKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmPFRva2VuPi5WYXVsdD4oZnJvbTogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgICAgbGV0IHJlY2lwaWVudEFjY291bnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudEFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pig8VG9rZW5SZWNlaXZlclBhdGg+KSEKICAgICAgICAgICAgCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0=" }, "nft": { - "checkNFTListEnabled": "CiAgICAKICAgIC8vIEZsb3cgV2FsbGV0IC0gbWFpbm5ldCBTY3JpcHQgIGNoZWNrTkZUTGlzdEVuYWJsZWQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAKICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgICBpbXBvcnQgU3BvcnRiaXQgZnJvbSAweGNhNWMzMWMwYzAzZTExYmUNCmltcG9ydCBTaGViYUhvcGVHcm93cyBmcm9tIDB4ZTA0MDhlNTFiMGI5NzBhNw0KaW1wb3J0IEZsb3ZhdGFyIGZyb20gMHg5MjFlYTQ0OWRmZmVjNjhhDQppbXBvcnQgRlJDMjBTZW1pTkZUIGZyb20gMHhkMmFiYjVkYmY1ZTA4NjY2DQppbXBvcnQgRmx1bmtzIGZyb20gMHg4MDdjM2Q0NzA4ODhjYzQ4DQppbXBvcnQgUm9ndWVCdW5uaWVzX05GVCBmcm9tIDB4Mzk2NjQ2ZjExMGFmYjJlNg0KaW1wb3J0IGFpU3BvcnRzTWludGVyIGZyb20gMHhhYmU1YTJiZjQ3Y2U1YmYzDQppbXBvcnQgSGVyb2VzT2ZUaGVGbG93IGZyb20gMHgxZGMzN2FiNTFhNTRkODNmDQppbXBvcnQgVUZDX05GVCBmcm9tIDB4MzI5ZmViM2FiMDYyZDI4OQ0KaW1wb3J0IEdvbGF6b3MgZnJvbSAweDg3Y2E3M2E0MWJiNTBhZDUNCmltcG9ydCBLYXJhdE5GVCBmcm9tIDB4ODJlZDFiOWNiYTViYjFiMw0KaW1wb3J0IFRvdWNoc3RvbmVQYXJ0eUZsYXZvcnogZnJvbSAweGM0YjFmNDM4Nzc0OGYzODkNCmltcG9ydCBNZXRhdmVyc2VNYXJrZXQgZnJvbSAweGQ3NTY0NTBmMzg2ZmI0YWMNCmltcG9ydCBNRkxDbHViIGZyb20gMHg4ZWJjYmZkNTE2YjFkYTI3DQppbXBvcnQgQldBWVhfTkZUIGZyb20gMHhmMDJiMTVlMTFlYjM3MTViDQppbXBvcnQgRmxvd3ZlcnNlU2hpcnQgZnJvbSAweDkyMTJhODc1MDFhOGE2YTINCmltcG9ydCBNaW50U3RvcmVJdGVtIGZyb20gMHgyMDE4NzA5Mzc5MGI5YWVmDQppbXBvcnQgVGhlRmFicmljYW50S2FwZXJzIGZyb20gMHg3NzUyZWE3MzYzODQzMjJmDQppbXBvcnQgQmwweCBmcm9tIDB4NzYyMGFjZjZkN2YyNDY4YQ0KaW1wb3J0IFN0YW56Q2x1YiBmcm9tIDB4ZGE0MjFjNzhlMmY3ZTBlNw0KaW1wb3J0IEljb25vR3JhcGhpa2EgZnJvbSAweGE2ZWU0N2RhODhlNmNiZGUNCmltcG9ydCBTazh0aWJsZXMgZnJvbSAweDBhMmZiYjkyYThhZTVjNmQNCmltcG9ydCBBbGxEYXkgZnJvbSAweGU0Y2Y0YmRjMTc1MWM2NWQNCmltcG9ydCBNYWduZXRpcSBmcm9tIDB4NTI1N2YxNDU1ZWQzNjZmZQ0KaW1wb3J0IEtlZXBySXRlbXMgZnJvbSAweDVlYjEyYWQzZDVhOTk5NDUNCmltcG9ydCBNYXRyaXhXb3JsZFZvdWNoZXIgZnJvbSAweDBkNzdlYzQ3YmJhZDhlZjYNCmltcG9ydCBUaGVGYWJyaWNhbnRYWG9yaWVzIGZyb20gMHg3NzUyZWE3MzYzODQzMjJmDQppbXBvcnQgTUlLT1NFQU5GVCBmcm9tIDB4MGI4MGU0MmFhYWIzMDVmMA0KaW1wb3J0IEZsb2JvdCBmcm9tIDB4OTIxZWE0NDlkZmZlYzY4YQ0KaW1wb3J0IE5GR3YzIGZyb20gMHgxMjNjYjY2Njk5NmI4NDMyDQppbXBvcnQgQ3J5cHRvUGlnZ29WMiBmcm9tIDB4ZDNkZjgyNGJmODE5MTBhNA0KaW1wb3J0IE1GTFBhY2sgZnJvbSAweDhlYmNiZmQ1MTZiMWRhMjcNCmltcG9ydCBUb3VjaHN0b25lU25vd3lHbG9iZXogZnJvbSAweGM0YjFmNDM4Nzc0OGYzODkNCmltcG9ydCBEb21haW5zIGZyb20gMHgyMzNlYjAxMmQzNGIwMDcwDQppbXBvcnQgQXJ0IGZyb20gMHhkNzk2ZmYxNzEwN2JiZmY2DQppbXBvcnQgQnJlYWtpbmdUX05GVCBmcm9tIDB4MzI5ZmViM2FiMDYyZDI4OQ0KaW1wb3J0IERpbWVuc2lvblggZnJvbSAweGUzYWQ2MDMwY2JhZmYxYzINCmltcG9ydCBMdWZ0aGF1cyBmcm9tIDB4MjAxODcwOTM3OTBiOWFlZg0KaW1wb3J0IERyaXZlcnpORlQgZnJvbSAweGEwMzliZDdkNTVhOTZjMGMNCmltcG9ydCBQdWZmUGFseiBmcm9tIDB4YTNlYjk3ODRhZTdkYzljOA0KaW1wb3J0IEJhcnRlcllhcmRDbHViV2VyZXdvbGYgZnJvbSAweDI4YWJiOWYyOTFjYWRhZjINCmltcG9ydCBPcGVuTG9ja2VySW5jQm9uZVlhcmRIdXNreXpDbHViIGZyb20gMHgyMDE4NzA5Mzc5MGI5YWVmDQppbXBvcnQgWWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlIGZyb20gMHg3NTgyNTJhYjkzMmEzNDE2DQppbXBvcnQgRmxvdmF0YXJDb21wb25lbnQgZnJvbSAweDkyMWVhNDQ5ZGZmZWM2OGENCmltcG9ydCBGbG92YXRhckR1c3RDb2xsZWN0aWJsZSBmcm9tIDB4OTIxZWE0NDlkZmZlYzY4YQ0KaW1wb3J0IEpvbGx5Sm9rZXJzIGZyb20gMHg2OTliZjI4NDEwMWE3NmYxDQppbXBvcnQgSFdHYXJhZ2VDYXJkIGZyb20gMHhkMGJjZWZkZjFlNjdlYTg1DQppbXBvcnQgSGlnaHNub2JpZXR5Tm90SW5QYXJpcyBmcm9tIDB4Nzc1MmVhNzM2Mzg0MzIyZg0KaW1wb3J0IFlvdW5nQm95c0Jlcm4gZnJvbSAweDIwMTg3MDkzNzkwYjlhZWYNCmltcG9ydCBDYXIgZnJvbSAweGY4ODdlY2UzOTE2NjkwNmUNCmltcG9ydCBXaGVlbCBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IEluY2VwdGlvbkJsYWNrQm94IGZyb20gMHg4M2VkNjRhMWQ0ZjM4MzNmDQppbXBvcnQgUmFjZURheV9ORlQgZnJvbSAweDMyOWZlYjNhYjA2MmQyODkNCmltcG9ydCBDcnlwdG9QaWdnbyBmcm9tIDB4ZDNkZjgyNGJmODE5MTBhNA0KaW1wb3J0IERvb2RsZXMgZnJvbSAweGU4MTE5M2M0MjRjZmQzZmINCmltcG9ydCBQYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdCBmcm9tIDB4MzRmMmJmNGE4MGJiMGY2OQ0KaW1wb3J0IFBpY2tlbSBmcm9tIDB4MjAxODcwOTM3OTBiOWFlZg0KaW1wb3J0IE9uZVNob3RzIGZyb20gMHg0ZjdmZjU0M2M5MzYwNzJiDQppbXBvcnQgRmxvd3ZlcnNlUGFzcyBmcm9tIDB4OTIxMmE4NzUwMWE4YTZhMg0KaW1wb3J0IEZhbnRhc3RlY05GVCBmcm9tIDB4NGJiZmY0NjFmYThmNjE5Mg0KaW1wb3J0IEJvbmV5YXJkIGZyb20gMHg3YTk0NDJiZTBiM2MxNzhhDQppbXBvcnQgQ2FuZXNfVmF1bHRfTkZUIGZyb20gMHgzMjlmZWIzYWIwNjJkMjg5DQppbXBvcnQgREdEX05GVCBmcm9tIDB4MzI5ZmViM2FiMDYyZDI4OQ0KaW1wb3J0IFdlZWtkYXkgZnJvbSAweDc3NTJlYTczNjM4NDMyMmYNCmltcG9ydCBQYXJ0eUZhdm9yeiBmcm9tIDB4MTIzY2I2NjY5OTZiODQzMg0KaW1wb3J0IFdlYXJhYmxlcyBmcm9tIDB4ZTgxMTkzYzQyNGNmZDNmYg0KaW1wb3J0IEJvYmJsel9ORlQgZnJvbSAweGQ0NWUyYmQ5YTNkNTAwM2INCmltcG9ydCBCbG92aXplTkZUIGZyb20gMHhlZTQ1NjdhYjdmNjNhYmYyDQppbXBvcnQgRmxvd3ZlcnNlVHJlYXN1cmVzIGZyb20gMHg5MjEyYTg3NTAxYThhNmEyDQppbXBvcnQgTkZURGF5VHJlYXN1cmVDaGVzdCBmcm9tIDB4MTE3Mzk2ZDhhNzJhZDM3Mg0KaW1wb3J0IFBpZWNlIGZyb20gMHhmZGM0MzZmZDdkYjIyZTAxDQppbXBvcnQgQmFja3BhY2sgZnJvbSAweDgwN2MzZDQ3MDg4OGNjNDgNCmltcG9ydCBPcmRpbmFsIGZyb20gMHg5MjEyYTg3NTAxYThhNmEyDQppbXBvcnQgUlRMU3RvcmVJdGVtIGZyb20gMHg5ZDFkMGQwYzgyYmYxYzU5DQppbXBvcnQgRmxvd3R5V3JhcHBlZCBmcm9tIDB4NTkyZWIzMmI0N2Q4Yjg1Zg0KaW1wb3J0IENoYXJpdHlORlQgZnJvbSAweDA5N2JhZmE0ZTBiNDhlZWYNCmltcG9ydCBZQmVlcyBmcm9tIDB4MjAxODcwOTM3OTBiOWFlZg0KaW1wb3J0IEluY2VwdGlvbkF2YXRhciBmcm9tIDB4ODNlZDY0YTFkNGYzODMzZg0KaW1wb3J0IFlhaG9vQ29sbGVjdGlibGUgZnJvbSAweDc1ODI1MmFiOTMyYTM0MTYNCmltcG9ydCBGTE9BVCBmcm9tIDB4MmQ0YzNjYWZmYmVhYjg0NQ0KaW1wb3J0IEFlcmFSZXdhcmRzIGZyb20gMHgzMGNmNWRjZjZlYThkMzc5DQppbXBvcnQgQ2FyQ2x1YiBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IFBhY2tORlQgZnJvbSAweGU0Y2Y0YmRjMTc1MWM2NWQNCmltcG9ydCBTZXVzc2libGVzIGZyb20gMHgzMjFkOGZjZGUwNWY2ZThjDQppbXBvcnQgSGVsbWV0IGZyb20gMHhmODg3ZWNlMzkxNjY5MDZlDQppbXBvcnQgRnVjaGlib2xhX05GVCBmcm9tIDB4ZjNlZTY4NGNkMDI1OWZlZA0KaW1wb3J0IENpbWVsaW9fTkZUIGZyb20gMHgyYzlkZTkzN2MzMTk0NjhkDQppbXBvcnQgR2FpYSBmcm9tIDB4OGIxNDgxODNjMjhmZjg4Zg0KaW1wb3J0IE1GTFBsYXllciBmcm9tIDB4OGViY2JmZDUxNmIxZGEyNw0KaW1wb3J0IEZsb3dSZXdhcmRzIGZyb20gMHhhNDVlYWQxY2YxY2E5ZWRhDQppbXBvcnQgU3R1cmR5SXRlbXMgZnJvbSAweDQyN2NlYWRhMjcxYWEwYjENCmltcG9ydCBTZWVkc09mSGFwcGluZXNzR2VuZXNpcyBmcm9tIDB4NTJhY2IzYjM5OWRmMTFmYw0KaW1wb3J0IFplZWR6SU5PIGZyb20gMHg2MmIzMDYzZmJlNjcyZmM4DQppbXBvcnQgVG91Y2hzdG9uZU1pZG5pZ2h0TXVuY2hpZXMgZnJvbSAweGM0YjFmNDM4Nzc0OGYzODkNCmltcG9ydCBHb29iZXJYQ29udHJhY3QgZnJvbSAweDM0ZjJiZjRhODBiYjBmNjkNCmltcG9ydCBTdGFybHlDYXJkIGZyb20gMHg1YjgyZjIxYzBlZGY3NmUzDQppbXBvcnQgVG91Y2hzdG9uZUdhbGFjdGljR291cm1ldCBmcm9tIDB4YzRiMWY0Mzg3NzQ4ZjM4OQ0KaW1wb3J0IERhbmR5IGZyb20gMHgwOTdiYWZhNGUwYjQ4ZWVmDQppbXBvcnQgQWVyYU5GVCBmcm9tIDB4MzBjZjVkY2Y2ZWE4ZDM3OQ0KaW1wb3J0IENyeXB0b1BpZ2dvUG90aW9uIGZyb20gMHhkM2RmODI0YmY4MTkxMGE0DQppbXBvcnQgUmVkZWVtYWJsZXMgZnJvbSAweGU4MTE5M2M0MjRjZmQzZmINCmltcG9ydCBUb3BTaG90IGZyb20gMHgwYjJhMzI5OWNjODU3ZTI5DQppbXBvcnQgU3BvcnR2YXRhciBmcm9tIDB4Y2E1YzMxYzBjMDNlMTFiZQ0KaW1wb3J0IEZsb3d2ZXJzZVNvY2tzIGZyb20gMHhjZTRjMDI1MzlkMWZhYmU4CgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTcG9ydGJpdFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Nwb3J0Yml0Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1NoZWJhSG9wZUdyb3dzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU2hlYmFIb3BlR3Jvd3NDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvdmF0YXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGUkMyMFNlbWlORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GUkMyMFNlbWlORlRfMHhkMmFiYjVkYmY1ZTA4NjY2Y29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZsdW5rc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0ZsdW5rc0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSb2d1ZUJ1bm5pZXNfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUm9ndWVCdW5uaWVzX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2thaVNwb3J0c01pbnRlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2FpU3BvcnRzTWludGVyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0hlcm9lc09mVGhlRmxvd1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0hlcm9lc09mVGhlRmxvd0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tVRkNfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVUZDX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tHb2xhem9zVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvR29sYXpvc05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tLYXJhdE5GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0thcmF0TkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RvdWNoc3RvbmVQYXJ0eUZsYXZvcnpWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Ub3VjaHN0b25lUGFydHlGbGF2b3J6Q29sbGVjdGlvbl8weGM0YjFmNDM4Nzc0OGYzODkpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tNZXRhdmVyc2VNYXJrZXRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9OZnRNZXRhdmVyc2VNYXJrZXRDb2xsZWN0aW9uVmVyc2lvblR3bykKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01GTENsdWJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NRkxDbHViQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0JXQVlYX05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JXQVlYX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93dmVyc2VTaGlydFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3d2ZXJzZVNoaXJ0Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01pbnRTdG9yZUl0ZW1WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NaW50U3RvcmVJdGVtQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RoZUZhYnJpY2FudEthcGVyc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RoZUZhYnJpY2FudEthcGVyc0NvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmwweFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2JsMHhORlRzKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU3RhbnpDbHViVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU3RhbnpDbHViQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ljb25vR3JhcGhpa2FWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9JY29ub0dyYXBoaWthTkZUKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU2s4dGlibGVzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVGlibGVzU2s4dGlibGVzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0FsbERheVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0FsbERheU5GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tNYWduZXRpcVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01hZ25ldGlxVG9rZW5zQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0tlZXBySXRlbXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9LZWVwckl0ZW1zQ29sbGVjdGlvblYxMCkKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01hdHJpeFdvcmxkVm91Y2hlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01hdHJpeFdvcmxkVm91Y2hlckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUaGVGYWJyaWNhbnRYWG9yaWVzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVGhlRmFicmljYW50WFhvcmllc0NvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrTUlLT1NFQU5GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01pa29TZWFDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvYm90VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvYm90Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja05GR3YzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvbmZnTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NyeXB0b1BpZ2dvVjJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9DcnlwdG9QaWdnb1YyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01GTFBhY2tWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NRkxQYWNrQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RvdWNoc3RvbmVTbm93eUdsb2JlelZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RvdWNoc3RvbmVTbm93eUdsb2JlekNvbGxlY3Rpb25fMHhjNGIxZjQzODc3NDhmMzg5KQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRG9tYWluc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zuc0RvbWFpbkNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tBcnRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy92ZXJzdXNBcnRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQnJlYWtpbmdUX05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JyZWFraW5nVF9ORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRGltZW5zaW9uWFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2RteENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tMdWZ0aGF1c1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0x1ZnRoYXVzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0RyaXZlcnpORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Ecml2ZXJ6TkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1B1ZmZQYWx6VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUHVmZlBhbHpDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmFydGVyWWFyZENsdWJXZXJld29sZlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JhcnRlcllhcmRDbHViV2VyZXdvbGZDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrT3BlbkxvY2tlckluY0JvbmVZYXJkSHVza3l6Q2x1YlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL09wZW5Mb2NrZXJJbmNCb25lWWFyZEh1c2t5ekNsdWJDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMveWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3ZhdGFyQ29tcG9uZW50VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvdmF0YXJDb21wb25lbnRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvdmF0YXJEdXN0Q29sbGVjdGlibGVWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckR1c3RDb2xsZWN0aWJsZUNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tKb2xseUpva2Vyc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0pvbGx5Sm9rZXJzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0hXR2FyYWdlQ2FyZFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0hXR2FyYWdlQ2FyZENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tIaWdoc25vYmlldHlOb3RJblBhcmlzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvSGlnaHNub2JpZXR5Tm90SW5QYXJpc0NvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWW91bmdCb3lzQmVyblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1lvdW5nQm95c0Jlcm5Db2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQ2FyVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQ2FyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1doZWVsVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvV2hlZWxDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrSW5jZXB0aW9uQmxhY2tCb3hWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9JbmNlcHRpb25CbGFja0JveENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSYWNlRGF5X05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1JhY2VEYXlfTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NyeXB0b1BpZ2dvVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQ3J5cHRvUGlnZ29Db2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRG9vZGxlc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Rvb2RsZXMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1BhcnR5TWFuc2lvbkRyaW5rQ29sbGVjdGlvblB1YmxpYykKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1BpY2tlbVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1BpY2tlbUNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tPbmVTaG90c1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RpYmxlc09uZVNob3RzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3d2ZXJzZVBhc3NWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG93dmVyc2VQYXNzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZhbnRhc3RlY05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0ZhbnRhc3RlY05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCb25leWFyZFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JvbmV5YXJkQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NhbmVzX1ZhdWx0X05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0NhbmVzX1ZhdWx0X05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tER0RfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvREdEX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tXZWVrZGF5VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvV2Vla2RheUNvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUGFydHlGYXZvcnpWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9QYXJ0eUZhdm9yekNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tXZWFyYWJsZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy93ZWFyYWJsZXMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCb2JibHpfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQm9iYmx6X05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCbG92aXplTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYmxvdml6ZU5GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93dmVyc2VUcmVhc3VyZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG93dmVyc2VUcmVhc3VyZXNDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrTkZURGF5VHJlYXN1cmVDaGVzdFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2JiTkZURGF5VHJlYXN1cmVDaGVzdENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQaWVjZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1BpZWNlX0NvbGxlY3Rpb24weGZkYzQzNmZkN2RiMjJlMDEpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCYWNrcGFja1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JhY2twYWNrQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja09yZGluYWxWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9PcmRpbmFsQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JUTFN0b3JlSXRlbVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1JUTFN0b3JlSXRlbUNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93dHlXcmFwcGVkVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvd3R5V3JhcHBlZF8weDU5MmViMzJiNDdkOGI4NWYpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tDaGFyaXR5TkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZmluZENoYXJpdHlDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWUJlZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9ZQmVlc0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tJbmNlcHRpb25BdmF0YXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9JbmNlcHRpb25BdmF0YXJDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWWFob29Db2xsZWN0aWJsZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3lhaG9vQ29sbGVjdGlibGVDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRkxPQVRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GTE9BVENvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQWVyYVJld2FyZHNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9hZXJhUmV3YXJkc05GVCkKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NhckNsdWJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9DYXJDbHViQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1BhY2tORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9QYWNrTkZUQ29sbGVjdGlvblB1YikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1NldXNzaWJsZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9UaWJsZXNTZXVzc2libGVzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0hlbG1ldFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0hlbG1ldENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGdWNoaWJvbGFfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRnVjaGlib2xhX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tDaW1lbGlvX05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0NpbWVsaW9fTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0dhaWFWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9HYWlhQ29sbGVjdGlvbjAwMSkKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01GTFBsYXllclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01GTFBsYXllckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93UmV3YXJkc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zsb3dSZXdhcmRzQ29sbGVjdGlvblB1YmxpYykKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1N0dXJkeUl0ZW1zVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU3R1cmR5SXRlbXNDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU2VlZHNPZkhhcHBpbmVzc0dlbmVzaXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9TZWVkc09mSGFwcGluZXNzR2VuZXNpc19Db2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWmVlZHpJTk9WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9aZWVkeklOT0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3VjaHN0b25lTWlkbmlnaHRNdW5jaGllc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RvdWNoc3RvbmVNaWRuaWdodE11bmNoaWVzQ29sbGVjdGlvbl8weGM0YjFmNDM4Nzc0OGYzODkpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tHb29iZXJYQ29udHJhY3RWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Hb29iZXJ6UGFydHlGb2xrc0NvbGxlY3Rpb25QdWJsaWMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTdGFybHlDYXJkVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3Rhcmx5Q2FyZENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3VjaHN0b25lR2FsYWN0aWNHb3VybWV0VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVG91Y2hzdG9uZUdhbGFjdGljR291cm1ldENvbGxlY3Rpb25fMHhjNGIxZjQzODc3NDhmMzg5KQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRGFuZHlWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9maW5kRGFuZHkpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tBZXJhTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYWVyYU5GVHMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tDcnlwdG9QaWdnb1BvdGlvblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0NyeXB0b1BpZ2dvUG90aW9uQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JlZGVlbWFibGVzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvcmVkZWVtYWJsZXMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3BTaG90VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvTW9tZW50Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Nwb3J0dmF0YXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9TcG9ydHZhdGFyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3d2ZXJzZVNvY2tzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvTWF0cml4TWFya2V0Rmxvd3ZlcnNlU29ja3NDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICAKCiAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IHtTdHJpbmc6IEJvb2x9IHsKICAgICAgcmV0dXJuIHsKICAgICJBLmNhNWMzMWMwYzAzZTExYmUuU3BvcnRiaXQiIDoKICAgIGNoZWNrU3BvcnRiaXRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTA0MDhlNTFiMGI5NzBhNy5TaGViYUhvcGVHcm93cyIgOgogICAgY2hlY2tTaGViYUhvcGVHcm93c1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyIiA6CiAgICBjaGVja0Zsb3ZhdGFyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQyYWJiNWRiZjVlMDg2NjYuRlJDMjBTZW1pTkZUIiA6CiAgICBjaGVja0ZSQzIwU2VtaU5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44MDdjM2Q0NzA4ODhjYzQ4LkZsdW5rcyIgOgogICAgY2hlY2tGbHVua3NWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzk2NjQ2ZjExMGFmYjJlNi5Sb2d1ZUJ1bm5pZXNfTkZUIiA6CiAgICBjaGVja1JvZ3VlQnVubmllc19ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuYWJlNWEyYmY0N2NlNWJmMy5haVNwb3J0c01pbnRlciIgOgogICAgY2hlY2thaVNwb3J0c01pbnRlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZGMzN2FiNTFhNTRkODNmLkhlcm9lc09mVGhlRmxvdyIgOgogICAgY2hlY2tIZXJvZXNPZlRoZUZsb3dWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzI5ZmViM2FiMDYyZDI4OS5VRkNfTkZUIiA6CiAgICBjaGVja1VGQ19ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODdjYTczYTQxYmI1MGFkNS5Hb2xhem9zIiA6CiAgICBjaGVja0dvbGF6b3NWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODJlZDFiOWNiYTViYjFiMy5LYXJhdE5GVCIgOgogICAgY2hlY2tLYXJhdE5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5jNGIxZjQzODc3NDhmMzg5LlRvdWNoc3RvbmVQYXJ0eUZsYXZvcnoiIDoKICAgIGNoZWNrVG91Y2hzdG9uZVBhcnR5Rmxhdm9yelZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNzU2NDUwZjM4NmZiNGFjLk1ldGF2ZXJzZU1hcmtldCIgOgogICAgY2hlY2tNZXRhdmVyc2VNYXJrZXRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOGViY2JmZDUxNmIxZGEyNy5NRkxDbHViIiA6CiAgICBjaGVja01GTENsdWJWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjAyYjE1ZTExZWIzNzE1Yi5CV0FZWF9ORlQiIDoKICAgIGNoZWNrQldBWVhfTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjkyMTJhODc1MDFhOGE2YTIuRmxvd3ZlcnNlU2hpcnQiIDoKICAgIGNoZWNrRmxvd3ZlcnNlU2hpcnRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5NaW50U3RvcmVJdGVtIiA6CiAgICBjaGVja01pbnRTdG9yZUl0ZW1WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzc1MmVhNzM2Mzg0MzIyZi5UaGVGYWJyaWNhbnRLYXBlcnMiIDoKICAgIGNoZWNrVGhlRmFicmljYW50S2FwZXJzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjc2MjBhY2Y2ZDdmMjQ2OGEuQmwweCIgOgogICAgY2hlY2tCbDB4VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmRhNDIxYzc4ZTJmN2UwZTcuU3RhbnpDbHViIiA6CiAgICBjaGVja1N0YW56Q2x1YlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hNmVlNDdkYTg4ZTZjYmRlLkljb25vR3JhcGhpa2EiIDoKICAgIGNoZWNrSWNvbm9HcmFwaGlrYVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wYTJmYmI5MmE4YWU1YzZkLlNrOHRpYmxlcyIgOgogICAgY2hlY2tTazh0aWJsZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTRjZjRiZGMxNzUxYzY1ZC5BbGxEYXkiIDoKICAgIGNoZWNrQWxsRGF5VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjUyNTdmMTQ1NWVkMzY2ZmUuTWFnbmV0aXEiIDoKICAgIGNoZWNrTWFnbmV0aXFWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNWViMTJhZDNkNWE5OTk0NS5LZWVwckl0ZW1zIiA6CiAgICBjaGVja0tlZXBySXRlbXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMGQ3N2VjNDdiYmFkOGVmNi5NYXRyaXhXb3JsZFZvdWNoZXIiIDoKICAgIGNoZWNrTWF0cml4V29ybGRWb3VjaGVyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjc3NTJlYTczNjM4NDMyMmYuVGhlRmFicmljYW50WFhvcmllcyIgOgogICAgY2hlY2tUaGVGYWJyaWNhbnRYWG9yaWVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjBiODBlNDJhYWFiMzA1ZjAuTUlLT1NFQU5GVCIgOgogICAgY2hlY2tNSUtPU0VBTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjkyMWVhNDQ5ZGZmZWM2OGEuRmxvYm90IiA6CiAgICBjaGVja0Zsb2JvdFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xMjNjYjY2Njk5NmI4NDMyLk5GR3YzIiA6CiAgICBjaGVja05GR3YzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzZGY4MjRiZjgxOTEwYTQuQ3J5cHRvUGlnZ29WMiIgOgogICAgY2hlY2tDcnlwdG9QaWdnb1YyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjhlYmNiZmQ1MTZiMWRhMjcuTUZMUGFjayIgOgogICAgY2hlY2tNRkxQYWNrVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmM0YjFmNDM4Nzc0OGYzODkuVG91Y2hzdG9uZVNub3d5R2xvYmV6IiA6CiAgICBjaGVja1RvdWNoc3RvbmVTbm93eUdsb2JlelZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzNlYjAxMmQzNGIwMDcwLkRvbWFpbnMiIDoKICAgIGNoZWNrRG9tYWluc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNzk2ZmYxNzEwN2JiZmY2LkFydCIgOgogICAgY2hlY2tBcnRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzI5ZmViM2FiMDYyZDI4OS5CcmVha2luZ1RfTkZUIiA6CiAgICBjaGVja0JyZWFraW5nVF9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTNhZDYwMzBjYmFmZjFjMi5EaW1lbnNpb25YIiA6CiAgICBjaGVja0RpbWVuc2lvblhWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5MdWZ0aGF1cyIgOgogICAgY2hlY2tMdWZ0aGF1c1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hMDM5YmQ3ZDU1YTk2YzBjLkRyaXZlcnpORlQiIDoKICAgIGNoZWNrRHJpdmVyek5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hM2ViOTc4NGFlN2RjOWM4LlB1ZmZQYWx6IiA6CiAgICBjaGVja1B1ZmZQYWx6VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjI4YWJiOWYyOTFjYWRhZjIuQmFydGVyWWFyZENsdWJXZXJld29sZiIgOgogICAgY2hlY2tCYXJ0ZXJZYXJkQ2x1YldlcmV3b2xmVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIwMTg3MDkzNzkwYjlhZWYuT3BlbkxvY2tlckluY0JvbmVZYXJkSHVza3l6Q2x1YiIgOgogICAgY2hlY2tPcGVuTG9ja2VySW5jQm9uZVlhcmRIdXNreXpDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjc1ODI1MmFiOTMyYTM0MTYuWWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlIiA6CiAgICBjaGVja1lhaG9vUGFydG5lcnNDb2xsZWN0aWJsZVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyQ29tcG9uZW50IiA6CiAgICBjaGVja0Zsb3ZhdGFyQ29tcG9uZW50VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjkyMWVhNDQ5ZGZmZWM2OGEuRmxvdmF0YXJEdXN0Q29sbGVjdGlibGUiIDoKICAgIGNoZWNrRmxvdmF0YXJEdXN0Q29sbGVjdGlibGVWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNjk5YmYyODQxMDFhNzZmMS5Kb2xseUpva2VycyIgOgogICAgY2hlY2tKb2xseUpva2Vyc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kMGJjZWZkZjFlNjdlYTg1LkhXR2FyYWdlQ2FyZCIgOgogICAgY2hlY2tIV0dhcmFnZUNhcmRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzc1MmVhNzM2Mzg0MzIyZi5IaWdoc25vYmlldHlOb3RJblBhcmlzIiA6CiAgICBjaGVja0hpZ2hzbm9iaWV0eU5vdEluUGFyaXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5Zb3VuZ0JveXNCZXJuIiA6CiAgICBjaGVja1lvdW5nQm95c0Jlcm5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjg4N2VjZTM5MTY2OTA2ZS5DYXIiIDoKICAgIGNoZWNrQ2FyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuV2hlZWwiIDoKICAgIGNoZWNrV2hlZWxWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODNlZDY0YTFkNGYzODMzZi5JbmNlcHRpb25CbGFja0JveCIgOgogICAgY2hlY2tJbmNlcHRpb25CbGFja0JveFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zMjlmZWIzYWIwNjJkMjg5LlJhY2VEYXlfTkZUIiA6CiAgICBjaGVja1JhY2VEYXlfTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzZGY4MjRiZjgxOTEwYTQuQ3J5cHRvUGlnZ28iIDoKICAgIGNoZWNrQ3J5cHRvUGlnZ29WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTgxMTkzYzQyNGNmZDNmYi5Eb29kbGVzIiA6CiAgICBjaGVja0Rvb2RsZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzRmMmJmNGE4MGJiMGY2OS5QYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdCIgOgogICAgY2hlY2tQYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMDE4NzA5Mzc5MGI5YWVmLlBpY2tlbSIgOgogICAgY2hlY2tQaWNrZW1WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNGY3ZmY1NDNjOTM2MDcyYi5PbmVTaG90cyIgOgogICAgY2hlY2tPbmVTaG90c1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjEyYTg3NTAxYThhNmEyLkZsb3d2ZXJzZVBhc3MiIDoKICAgIGNoZWNrRmxvd3ZlcnNlUGFzc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS40YmJmZjQ2MWZhOGY2MTkyLkZhbnRhc3RlY05GVCIgOgogICAgY2hlY2tGYW50YXN0ZWNORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuN2E5NDQyYmUwYjNjMTc4YS5Cb25leWFyZCIgOgogICAgY2hlY2tCb25leWFyZFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zMjlmZWIzYWIwNjJkMjg5LkNhbmVzX1ZhdWx0X05GVCIgOgogICAgY2hlY2tDYW5lc19WYXVsdF9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzI5ZmViM2FiMDYyZDI4OS5ER0RfTkZUIiA6CiAgICBjaGVja0RHRF9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzc1MmVhNzM2Mzg0MzIyZi5XZWVrZGF5IiA6CiAgICBjaGVja1dlZWtkYXlWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMTIzY2I2NjY5OTZiODQzMi5QYXJ0eUZhdm9yeiIgOgogICAgY2hlY2tQYXJ0eUZhdm9yelZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lODExOTNjNDI0Y2ZkM2ZiLldlYXJhYmxlcyIgOgogICAgY2hlY2tXZWFyYWJsZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZDQ1ZTJiZDlhM2Q1MDAzYi5Cb2JibHpfTkZUIiA6CiAgICBjaGVja0JvYmJsel9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZWU0NTY3YWI3ZjYzYWJmMi5CbG92aXplTkZUIiA6CiAgICBjaGVja0Jsb3ZpemVORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOTIxMmE4NzUwMWE4YTZhMi5GbG93dmVyc2VUcmVhc3VyZXMiIDoKICAgIGNoZWNrRmxvd3ZlcnNlVHJlYXN1cmVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjExNzM5NmQ4YTcyYWQzNzIuTkZURGF5VHJlYXN1cmVDaGVzdCIgOgogICAgY2hlY2tORlREYXlUcmVhc3VyZUNoZXN0VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmZkYzQzNmZkN2RiMjJlMDEuUGllY2UiIDoKICAgIGNoZWNrUGllY2VWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODA3YzNkNDcwODg4Y2M0OC5CYWNrcGFjayIgOgogICAgY2hlY2tCYWNrcGFja1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjEyYTg3NTAxYThhNmEyLk9yZGluYWwiIDoKICAgIGNoZWNrT3JkaW5hbFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45ZDFkMGQwYzgyYmYxYzU5LlJUTFN0b3JlSXRlbSIgOgogICAgY2hlY2tSVExTdG9yZUl0ZW1WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNTkyZWIzMmI0N2Q4Yjg1Zi5GbG93dHlXcmFwcGVkIiA6CiAgICBjaGVja0Zsb3d0eVdyYXBwZWRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMDk3YmFmYTRlMGI0OGVlZi5DaGFyaXR5TkZUIiA6CiAgICBjaGVja0NoYXJpdHlORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5ZQmVlcyIgOgogICAgY2hlY2tZQmVlc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44M2VkNjRhMWQ0ZjM4MzNmLkluY2VwdGlvbkF2YXRhciIgOgogICAgY2hlY2tJbmNlcHRpb25BdmF0YXJWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzU4MjUyYWI5MzJhMzQxNi5ZYWhvb0NvbGxlY3RpYmxlIiA6CiAgICBjaGVja1lhaG9vQ29sbGVjdGlibGVWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMmQ0YzNjYWZmYmVhYjg0NS5GTE9BVCIgOgogICAgY2hlY2tGTE9BVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zMGNmNWRjZjZlYThkMzc5LkFlcmFSZXdhcmRzIiA6CiAgICBjaGVja0FlcmFSZXdhcmRzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuQ2FyQ2x1YiIgOgogICAgY2hlY2tDYXJDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmU0Y2Y0YmRjMTc1MWM2NWQuUGFja05GVCIgOgogICAgY2hlY2tQYWNrTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjMyMWQ4ZmNkZTA1ZjZlOGMuU2V1c3NpYmxlcyIgOgogICAgY2hlY2tTZXVzc2libGVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuSGVsbWV0IiA6CiAgICBjaGVja0hlbG1ldFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5mM2VlNjg0Y2QwMjU5ZmVkLkZ1Y2hpYm9sYV9ORlQiIDoKICAgIGNoZWNrRnVjaGlib2xhX05GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yYzlkZTkzN2MzMTk0NjhkLkNpbWVsaW9fTkZUIiA6CiAgICBjaGVja0NpbWVsaW9fTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjhiMTQ4MTgzYzI4ZmY4OGYuR2FpYSIgOgogICAgY2hlY2tHYWlhVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjhlYmNiZmQ1MTZiMWRhMjcuTUZMUGxheWVyIiA6CiAgICBjaGVja01GTFBsYXllclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hNDVlYWQxY2YxY2E5ZWRhLkZsb3dSZXdhcmRzIiA6CiAgICBjaGVja0Zsb3dSZXdhcmRzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjQyN2NlYWRhMjcxYWEwYjEuU3R1cmR5SXRlbXMiIDoKICAgIGNoZWNrU3R1cmR5SXRlbXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNTJhY2IzYjM5OWRmMTFmYy5TZWVkc09mSGFwcGluZXNzR2VuZXNpcyIgOgogICAgY2hlY2tTZWVkc09mSGFwcGluZXNzR2VuZXNpc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS42MmIzMDYzZmJlNjcyZmM4LlplZWR6SU5PIiA6CiAgICBjaGVja1plZWR6SU5PVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmM0YjFmNDM4Nzc0OGYzODkuVG91Y2hzdG9uZU1pZG5pZ2h0TXVuY2hpZXMiIDoKICAgIGNoZWNrVG91Y2hzdG9uZU1pZG5pZ2h0TXVuY2hpZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzRmMmJmNGE4MGJiMGY2OS5Hb29iZXJYQ29udHJhY3QiIDoKICAgIGNoZWNrR29vYmVyWENvbnRyYWN0VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjViODJmMjFjMGVkZjc2ZTMuU3Rhcmx5Q2FyZCIgOgogICAgY2hlY2tTdGFybHlDYXJkVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmM0YjFmNDM4Nzc0OGYzODkuVG91Y2hzdG9uZUdhbGFjdGljR291cm1ldCIgOgogICAgY2hlY2tUb3VjaHN0b25lR2FsYWN0aWNHb3VybWV0VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjA5N2JhZmE0ZTBiNDhlZWYuRGFuZHkiIDoKICAgIGNoZWNrRGFuZHlWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzBjZjVkY2Y2ZWE4ZDM3OS5BZXJhTkZUIiA6CiAgICBjaGVja0FlcmFORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZDNkZjgyNGJmODE5MTBhNC5DcnlwdG9QaWdnb1BvdGlvbiIgOgogICAgY2hlY2tDcnlwdG9QaWdnb1BvdGlvblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lODExOTNjNDI0Y2ZkM2ZiLlJlZGVlbWFibGVzIiA6CiAgICBjaGVja1JlZGVlbWFibGVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjBiMmEzMjk5Y2M4NTdlMjkuVG9wU2hvdCIgOgogICAgY2hlY2tUb3BTaG90VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNhNWMzMWMwYzAzZTExYmUuU3BvcnR2YXRhciIgOgogICAgY2hlY2tTcG9ydHZhdGFyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNlNGMwMjUzOWQxZmFiZTguRmxvd3ZlcnNlU29ja3MiIDoKICAgIGNoZWNrRmxvd3ZlcnNlU29ja3NWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgfQogICAgfQogIA==" + "checkNFTListEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja05GVExpc3RFbmFibGVkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgICBpbXBvcnQgU3BvcnRiaXQgZnJvbSAweGNhNWMzMWMwYzAzZTExYmUNCmltcG9ydCBTaGViYUhvcGVHcm93cyBmcm9tIDB4ZTA0MDhlNTFiMGI5NzBhNw0KaW1wb3J0IEZsb3ZhdGFyIGZyb20gMHg5MjFlYTQ0OWRmZmVjNjhhDQppbXBvcnQgRlJDMjBTZW1pTkZUIGZyb20gMHhkMmFiYjVkYmY1ZTA4NjY2DQppbXBvcnQgRmx1bmtzIGZyb20gMHg4MDdjM2Q0NzA4ODhjYzQ4DQppbXBvcnQgUm9ndWVCdW5uaWVzX05GVCBmcm9tIDB4Mzk2NjQ2ZjExMGFmYjJlNg0KaW1wb3J0IGFpU3BvcnRzTWludGVyIGZyb20gMHhhYmU1YTJiZjQ3Y2U1YmYzDQppbXBvcnQgSGVyb2VzT2ZUaGVGbG93IGZyb20gMHgxZGMzN2FiNTFhNTRkODNmDQppbXBvcnQgVUZDX05GVCBmcm9tIDB4MzI5ZmViM2FiMDYyZDI4OQ0KaW1wb3J0IEdvbGF6b3MgZnJvbSAweDg3Y2E3M2E0MWJiNTBhZDUNCmltcG9ydCBLYXJhdE5GVCBmcm9tIDB4ODJlZDFiOWNiYTViYjFiMw0KaW1wb3J0IFRvdWNoc3RvbmVQYXJ0eUZsYXZvcnogZnJvbSAweGM0YjFmNDM4Nzc0OGYzODkNCmltcG9ydCBNZXRhdmVyc2VNYXJrZXQgZnJvbSAweGQ3NTY0NTBmMzg2ZmI0YWMNCmltcG9ydCBNRkxDbHViIGZyb20gMHg4ZWJjYmZkNTE2YjFkYTI3DQppbXBvcnQgQldBWVhfTkZUIGZyb20gMHhmMDJiMTVlMTFlYjM3MTViDQppbXBvcnQgRmxvd3ZlcnNlU2hpcnQgZnJvbSAweDkyMTJhODc1MDFhOGE2YTINCmltcG9ydCBNaW50U3RvcmVJdGVtIGZyb20gMHgyMDE4NzA5Mzc5MGI5YWVmDQppbXBvcnQgVGhlRmFicmljYW50S2FwZXJzIGZyb20gMHg3NzUyZWE3MzYzODQzMjJmDQppbXBvcnQgQmwweCBmcm9tIDB4NzYyMGFjZjZkN2YyNDY4YQ0KaW1wb3J0IFN0YW56Q2x1YiBmcm9tIDB4ZGE0MjFjNzhlMmY3ZTBlNw0KaW1wb3J0IEljb25vR3JhcGhpa2EgZnJvbSAweGE2ZWU0N2RhODhlNmNiZGUNCmltcG9ydCBTazh0aWJsZXMgZnJvbSAweDBhMmZiYjkyYThhZTVjNmQNCmltcG9ydCBBbGxEYXkgZnJvbSAweGU0Y2Y0YmRjMTc1MWM2NWQNCmltcG9ydCBNYWduZXRpcSBmcm9tIDB4NTI1N2YxNDU1ZWQzNjZmZQ0KaW1wb3J0IEtlZXBySXRlbXMgZnJvbSAweDVlYjEyYWQzZDVhOTk5NDUNCmltcG9ydCBNYXRyaXhXb3JsZFZvdWNoZXIgZnJvbSAweDBkNzdlYzQ3YmJhZDhlZjYNCmltcG9ydCBUaGVGYWJyaWNhbnRYWG9yaWVzIGZyb20gMHg3NzUyZWE3MzYzODQzMjJmDQppbXBvcnQgTUlLT1NFQU5GVCBmcm9tIDB4MGI4MGU0MmFhYWIzMDVmMA0KaW1wb3J0IEZsb2JvdCBmcm9tIDB4OTIxZWE0NDlkZmZlYzY4YQ0KaW1wb3J0IE5GR3YzIGZyb20gMHgxMjNjYjY2Njk5NmI4NDMyDQppbXBvcnQgQ3J5cHRvUGlnZ29WMiBmcm9tIDB4ZDNkZjgyNGJmODE5MTBhNA0KaW1wb3J0IE1GTFBhY2sgZnJvbSAweDhlYmNiZmQ1MTZiMWRhMjcNCmltcG9ydCBUb3VjaHN0b25lU25vd3lHbG9iZXogZnJvbSAweGM0YjFmNDM4Nzc0OGYzODkNCmltcG9ydCBEb21haW5zIGZyb20gMHgyMzNlYjAxMmQzNGIwMDcwDQppbXBvcnQgQXJ0IGZyb20gMHhkNzk2ZmYxNzEwN2JiZmY2DQppbXBvcnQgQnJlYWtpbmdUX05GVCBmcm9tIDB4MzI5ZmViM2FiMDYyZDI4OQ0KaW1wb3J0IERpbWVuc2lvblggZnJvbSAweGUzYWQ2MDMwY2JhZmYxYzINCmltcG9ydCBMdWZ0aGF1cyBmcm9tIDB4MjAxODcwOTM3OTBiOWFlZg0KaW1wb3J0IERyaXZlcnpORlQgZnJvbSAweGEwMzliZDdkNTVhOTZjMGMNCmltcG9ydCBQdWZmUGFseiBmcm9tIDB4YTNlYjk3ODRhZTdkYzljOA0KaW1wb3J0IEJhcnRlcllhcmRDbHViV2VyZXdvbGYgZnJvbSAweDI4YWJiOWYyOTFjYWRhZjINCmltcG9ydCBPcGVuTG9ja2VySW5jQm9uZVlhcmRIdXNreXpDbHViIGZyb20gMHgyMDE4NzA5Mzc5MGI5YWVmDQppbXBvcnQgWWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlIGZyb20gMHg3NTgyNTJhYjkzMmEzNDE2DQppbXBvcnQgRmxvdmF0YXJDb21wb25lbnQgZnJvbSAweDkyMWVhNDQ5ZGZmZWM2OGENCmltcG9ydCBGbG92YXRhckR1c3RDb2xsZWN0aWJsZSBmcm9tIDB4OTIxZWE0NDlkZmZlYzY4YQ0KaW1wb3J0IEpvbGx5Sm9rZXJzIGZyb20gMHg2OTliZjI4NDEwMWE3NmYxDQppbXBvcnQgSFdHYXJhZ2VDYXJkIGZyb20gMHhkMGJjZWZkZjFlNjdlYTg1DQppbXBvcnQgSGlnaHNub2JpZXR5Tm90SW5QYXJpcyBmcm9tIDB4Nzc1MmVhNzM2Mzg0MzIyZg0KaW1wb3J0IFlvdW5nQm95c0Jlcm4gZnJvbSAweDIwMTg3MDkzNzkwYjlhZWYNCmltcG9ydCBDYXIgZnJvbSAweGY4ODdlY2UzOTE2NjkwNmUNCmltcG9ydCBXaGVlbCBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IEluY2VwdGlvbkJsYWNrQm94IGZyb20gMHg4M2VkNjRhMWQ0ZjM4MzNmDQppbXBvcnQgUmFjZURheV9ORlQgZnJvbSAweDMyOWZlYjNhYjA2MmQyODkNCmltcG9ydCBDcnlwdG9QaWdnbyBmcm9tIDB4ZDNkZjgyNGJmODE5MTBhNA0KaW1wb3J0IERvb2RsZXMgZnJvbSAweGU4MTE5M2M0MjRjZmQzZmINCmltcG9ydCBQYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdCBmcm9tIDB4MzRmMmJmNGE4MGJiMGY2OQ0KaW1wb3J0IFBpY2tlbSBmcm9tIDB4MjAxODcwOTM3OTBiOWFlZg0KaW1wb3J0IE9uZVNob3RzIGZyb20gMHg0ZjdmZjU0M2M5MzYwNzJiDQppbXBvcnQgRmxvd3ZlcnNlUGFzcyBmcm9tIDB4OTIxMmE4NzUwMWE4YTZhMg0KaW1wb3J0IEZhbnRhc3RlY05GVCBmcm9tIDB4NGJiZmY0NjFmYThmNjE5Mg0KaW1wb3J0IEJvbmV5YXJkIGZyb20gMHg3YTk0NDJiZTBiM2MxNzhhDQppbXBvcnQgQ2FuZXNfVmF1bHRfTkZUIGZyb20gMHgzMjlmZWIzYWIwNjJkMjg5DQppbXBvcnQgREdEX05GVCBmcm9tIDB4MzI5ZmViM2FiMDYyZDI4OQ0KaW1wb3J0IFdlZWtkYXkgZnJvbSAweDc3NTJlYTczNjM4NDMyMmYNCmltcG9ydCBQYXJ0eUZhdm9yeiBmcm9tIDB4MTIzY2I2NjY5OTZiODQzMg0KaW1wb3J0IFdlYXJhYmxlcyBmcm9tIDB4ZTgxMTkzYzQyNGNmZDNmYg0KaW1wb3J0IEJvYmJsel9ORlQgZnJvbSAweGQ0NWUyYmQ5YTNkNTAwM2INCmltcG9ydCBCbG92aXplTkZUIGZyb20gMHhlZTQ1NjdhYjdmNjNhYmYyDQppbXBvcnQgRmxvd3ZlcnNlVHJlYXN1cmVzIGZyb20gMHg5MjEyYTg3NTAxYThhNmEyDQppbXBvcnQgTkZURGF5VHJlYXN1cmVDaGVzdCBmcm9tIDB4MTE3Mzk2ZDhhNzJhZDM3Mg0KaW1wb3J0IFBpZWNlIGZyb20gMHhmZGM0MzZmZDdkYjIyZTAxDQppbXBvcnQgQmFja3BhY2sgZnJvbSAweDgwN2MzZDQ3MDg4OGNjNDgNCmltcG9ydCBPcmRpbmFsIGZyb20gMHg5MjEyYTg3NTAxYThhNmEyDQppbXBvcnQgUlRMU3RvcmVJdGVtIGZyb20gMHg5ZDFkMGQwYzgyYmYxYzU5DQppbXBvcnQgRmxvd3R5V3JhcHBlZCBmcm9tIDB4NTkyZWIzMmI0N2Q4Yjg1Zg0KaW1wb3J0IENoYXJpdHlORlQgZnJvbSAweDA5N2JhZmE0ZTBiNDhlZWYNCmltcG9ydCBZQmVlcyBmcm9tIDB4MjAxODcwOTM3OTBiOWFlZg0KaW1wb3J0IEluY2VwdGlvbkF2YXRhciBmcm9tIDB4ODNlZDY0YTFkNGYzODMzZg0KaW1wb3J0IFlhaG9vQ29sbGVjdGlibGUgZnJvbSAweDc1ODI1MmFiOTMyYTM0MTYNCmltcG9ydCBGTE9BVCBmcm9tIDB4MmQ0YzNjYWZmYmVhYjg0NQ0KaW1wb3J0IEFlcmFSZXdhcmRzIGZyb20gMHgzMGNmNWRjZjZlYThkMzc5DQppbXBvcnQgQ2FyQ2x1YiBmcm9tIDB4Zjg4N2VjZTM5MTY2OTA2ZQ0KaW1wb3J0IFBhY2tORlQgZnJvbSAweGU0Y2Y0YmRjMTc1MWM2NWQNCmltcG9ydCBTZXVzc2libGVzIGZyb20gMHgzMjFkOGZjZGUwNWY2ZThjDQppbXBvcnQgSGVsbWV0IGZyb20gMHhmODg3ZWNlMzkxNjY5MDZlDQppbXBvcnQgRnVjaGlib2xhX05GVCBmcm9tIDB4ZjNlZTY4NGNkMDI1OWZlZA0KaW1wb3J0IENpbWVsaW9fTkZUIGZyb20gMHgyYzlkZTkzN2MzMTk0NjhkDQppbXBvcnQgR2FpYSBmcm9tIDB4OGIxNDgxODNjMjhmZjg4Zg0KaW1wb3J0IE1GTFBsYXllciBmcm9tIDB4OGViY2JmZDUxNmIxZGEyNw0KaW1wb3J0IEZsb3dSZXdhcmRzIGZyb20gMHhhNDVlYWQxY2YxY2E5ZWRhDQppbXBvcnQgU3R1cmR5SXRlbXMgZnJvbSAweDQyN2NlYWRhMjcxYWEwYjENCmltcG9ydCBTZWVkc09mSGFwcGluZXNzR2VuZXNpcyBmcm9tIDB4NTJhY2IzYjM5OWRmMTFmYw0KaW1wb3J0IFplZWR6SU5PIGZyb20gMHg2MmIzMDYzZmJlNjcyZmM4DQppbXBvcnQgVG91Y2hzdG9uZU1pZG5pZ2h0TXVuY2hpZXMgZnJvbSAweGM0YjFmNDM4Nzc0OGYzODkNCmltcG9ydCBHb29iZXJYQ29udHJhY3QgZnJvbSAweDM0ZjJiZjRhODBiYjBmNjkNCmltcG9ydCBTdGFybHlDYXJkIGZyb20gMHg1YjgyZjIxYzBlZGY3NmUzDQppbXBvcnQgVG91Y2hzdG9uZUdhbGFjdGljR291cm1ldCBmcm9tIDB4YzRiMWY0Mzg3NzQ4ZjM4OQ0KaW1wb3J0IERhbmR5IGZyb20gMHgwOTdiYWZhNGUwYjQ4ZWVmDQppbXBvcnQgQWVyYU5GVCBmcm9tIDB4MzBjZjVkY2Y2ZWE4ZDM3OQ0KaW1wb3J0IENyeXB0b1BpZ2dvUG90aW9uIGZyb20gMHhkM2RmODI0YmY4MTkxMGE0DQppbXBvcnQgUmVkZWVtYWJsZXMgZnJvbSAweGU4MTE5M2M0MjRjZmQzZmINCmltcG9ydCBUb3BTaG90IGZyb20gMHgwYjJhMzI5OWNjODU3ZTI5DQppbXBvcnQgU3BvcnR2YXRhciBmcm9tIDB4Y2E1YzMxYzBjMDNlMTFiZQ0KaW1wb3J0IEZsb3d2ZXJzZVNvY2tzIGZyb20gMHhjZTRjMDI1MzlkMWZhYmU4CgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTcG9ydGJpdFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1Nwb3J0Yml0Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1NoZWJhSG9wZUdyb3dzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU2hlYmFIb3BlR3Jvd3NDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvdmF0YXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGUkMyMFNlbWlORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GUkMyMFNlbWlORlRfMHhkMmFiYjVkYmY1ZTA4NjY2Y29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZsdW5rc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0ZsdW5rc0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSb2d1ZUJ1bm5pZXNfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUm9ndWVCdW5uaWVzX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2thaVNwb3J0c01pbnRlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2FpU3BvcnRzTWludGVyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0hlcm9lc09mVGhlRmxvd1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0hlcm9lc09mVGhlRmxvd0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tVRkNfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVUZDX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tHb2xhem9zVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvR29sYXpvc05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tLYXJhdE5GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0thcmF0TkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RvdWNoc3RvbmVQYXJ0eUZsYXZvcnpWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Ub3VjaHN0b25lUGFydHlGbGF2b3J6Q29sbGVjdGlvbl8weGM0YjFmNDM4Nzc0OGYzODkpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tNZXRhdmVyc2VNYXJrZXRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9OZnRNZXRhdmVyc2VNYXJrZXRDb2xsZWN0aW9uVmVyc2lvblR3bykKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01GTENsdWJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NRkxDbHViQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0JXQVlYX05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JXQVlYX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93dmVyc2VTaGlydFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3d2ZXJzZVNoaXJ0Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01pbnRTdG9yZUl0ZW1WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NaW50U3RvcmVJdGVtQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RoZUZhYnJpY2FudEthcGVyc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RoZUZhYnJpY2FudEthcGVyc0NvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmwweFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2JsMHhORlRzKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU3RhbnpDbHViVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU3RhbnpDbHViQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ljb25vR3JhcGhpa2FWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9JY29ub0dyYXBoaWthTkZUKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU2s4dGlibGVzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVGlibGVzU2s4dGlibGVzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0FsbERheVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0FsbERheU5GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tNYWduZXRpcVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01hZ25ldGlxVG9rZW5zQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0tlZXBySXRlbXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9LZWVwckl0ZW1zQ29sbGVjdGlvblYxMCkKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01hdHJpeFdvcmxkVm91Y2hlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01hdHJpeFdvcmxkVm91Y2hlckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUaGVGYWJyaWNhbnRYWG9yaWVzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVGhlRmFicmljYW50WFhvcmllc0NvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrTUlLT1NFQU5GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01pa29TZWFDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvYm90VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvYm90Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja05GR3YzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvbmZnTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NyeXB0b1BpZ2dvVjJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9DcnlwdG9QaWdnb1YyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01GTFBhY2tWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9NRkxQYWNrQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1RvdWNoc3RvbmVTbm93eUdsb2JlelZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RvdWNoc3RvbmVTbm93eUdsb2JlekNvbGxlY3Rpb25fMHhjNGIxZjQzODc3NDhmMzg5KQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRG9tYWluc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zuc0RvbWFpbkNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tBcnRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy92ZXJzdXNBcnRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQnJlYWtpbmdUX05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JyZWFraW5nVF9ORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRGltZW5zaW9uWFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2RteENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tMdWZ0aGF1c1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0x1ZnRoYXVzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0RyaXZlcnpORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Ecml2ZXJ6TkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1B1ZmZQYWx6VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvUHVmZlBhbHpDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQmFydGVyWWFyZENsdWJXZXJld29sZlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JhcnRlcllhcmRDbHViV2VyZXdvbGZDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrT3BlbkxvY2tlckluY0JvbmVZYXJkSHVza3l6Q2x1YlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL09wZW5Mb2NrZXJJbmNCb25lWWFyZEh1c2t5ekNsdWJDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMveWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3ZhdGFyQ29tcG9uZW50VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvdmF0YXJDb21wb25lbnRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvdmF0YXJEdXN0Q29sbGVjdGlibGVWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckR1c3RDb2xsZWN0aWJsZUNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tKb2xseUpva2Vyc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0pvbGx5Sm9rZXJzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0hXR2FyYWdlQ2FyZFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0hXR2FyYWdlQ2FyZENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tIaWdoc25vYmlldHlOb3RJblBhcmlzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvSGlnaHNub2JpZXR5Tm90SW5QYXJpc0NvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWW91bmdCb3lzQmVyblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1lvdW5nQm95c0Jlcm5Db2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQ2FyVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQ2FyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1doZWVsVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvV2hlZWxDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrSW5jZXB0aW9uQmxhY2tCb3hWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9JbmNlcHRpb25CbGFja0JveENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tSYWNlRGF5X05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1JhY2VEYXlfTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NyeXB0b1BpZ2dvVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQ3J5cHRvUGlnZ29Db2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRG9vZGxlc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Rvb2RsZXMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1BhcnR5TWFuc2lvbkRyaW5rQ29sbGVjdGlvblB1YmxpYykKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1BpY2tlbVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1BpY2tlbUNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tPbmVTaG90c1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RpYmxlc09uZVNob3RzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3d2ZXJzZVBhc3NWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG93dmVyc2VQYXNzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZhbnRhc3RlY05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0ZhbnRhc3RlY05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCb25leWFyZFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JvbmV5YXJkQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NhbmVzX1ZhdWx0X05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0NhbmVzX1ZhdWx0X05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tER0RfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvREdEX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tXZWVrZGF5VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvV2Vla2RheUNvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrUGFydHlGYXZvcnpWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9QYXJ0eUZhdm9yekNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tXZWFyYWJsZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy93ZWFyYWJsZXMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCb2JibHpfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvQm9iYmx6X05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCbG92aXplTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYmxvdml6ZU5GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93dmVyc2VUcmVhc3VyZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG93dmVyc2VUcmVhc3VyZXNDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrTkZURGF5VHJlYXN1cmVDaGVzdFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2JiTkZURGF5VHJlYXN1cmVDaGVzdENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tQaWVjZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1BpZWNlX0NvbGxlY3Rpb24weGZkYzQzNmZkN2RiMjJlMDEpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tCYWNrcGFja1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0JhY2twYWNrQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja09yZGluYWxWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9PcmRpbmFsQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JUTFN0b3JlSXRlbVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1JUTFN0b3JlSXRlbUNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93dHlXcmFwcGVkVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRmxvd3R5V3JhcHBlZF8weDU5MmViMzJiNDdkOGI4NWYpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tDaGFyaXR5TkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvZmluZENoYXJpdHlDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWUJlZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9ZQmVlc0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tJbmNlcHRpb25BdmF0YXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9JbmNlcHRpb25BdmF0YXJDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWWFob29Db2xsZWN0aWJsZVZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3lhaG9vQ29sbGVjdGlibGVDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRkxPQVRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GTE9BVENvbGxlY3Rpb25QdWJsaWNQYXRoKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrQWVyYVJld2FyZHNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9hZXJhUmV3YXJkc05GVCkKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0NhckNsdWJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9DYXJDbHViQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1BhY2tORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9QYWNrTkZUQ29sbGVjdGlvblB1YikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1NldXNzaWJsZXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9UaWJsZXNTZXVzc2libGVzQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0hlbG1ldFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0hlbG1ldENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGdWNoaWJvbGFfTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvRnVjaGlib2xhX05GVENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tDaW1lbGlvX05GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0NpbWVsaW9fTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0dhaWFWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9HYWlhQ29sbGVjdGlvbjAwMSkKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01GTFBsYXllclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01GTFBsYXllckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93UmV3YXJkc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zsb3dSZXdhcmRzQ29sbGVjdGlvblB1YmxpYykKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1N0dXJkeUl0ZW1zVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvU3R1cmR5SXRlbXNDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrU2VlZHNPZkhhcHBpbmVzc0dlbmVzaXNWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9TZWVkc09mSGFwcGluZXNzR2VuZXNpc19Db2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrWmVlZHpJTk9WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9aZWVkeklOT0NvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3VjaHN0b25lTWlkbmlnaHRNdW5jaGllc1ZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL1RvdWNoc3RvbmVNaWRuaWdodE11bmNoaWVzQ29sbGVjdGlvbl8weGM0YjFmNDM4Nzc0OGYzODkpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tHb29iZXJYQ29udHJhY3RWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9Hb29iZXJ6UGFydHlGb2xrc0NvbGxlY3Rpb25QdWJsaWMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tTdGFybHlDYXJkVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3Rhcmx5Q2FyZENvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3VjaHN0b25lR2FsYWN0aWNHb3VybWV0VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvVG91Y2hzdG9uZUdhbGFjdGljR291cm1ldENvbGxlY3Rpb25fMHhjNGIxZjQzODc3NDhmMzg5KQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRGFuZHlWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9maW5kRGFuZHkpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tBZXJhTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvYWVyYU5GVHMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tDcnlwdG9QaWdnb1BvdGlvblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0NyeXB0b1BpZ2dvUG90aW9uQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1JlZGVlbWFibGVzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvcmVkZWVtYWJsZXMpCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tUb3BTaG90VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvTW9tZW50Q29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1Nwb3J0dmF0YXJWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9TcG9ydHZhdGFyQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0Zsb3d2ZXJzZVNvY2tzVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvTWF0cml4TWFya2V0Rmxvd3ZlcnNlU29ja3NDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICAKCiAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IHtTdHJpbmc6IEJvb2x9IHsKICAgICAgcmV0dXJuIHsKICAgICJBLmNhNWMzMWMwYzAzZTExYmUuU3BvcnRiaXQiIDoKICAgIGNoZWNrU3BvcnRiaXRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTA0MDhlNTFiMGI5NzBhNy5TaGViYUhvcGVHcm93cyIgOgogICAgY2hlY2tTaGViYUhvcGVHcm93c1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyIiA6CiAgICBjaGVja0Zsb3ZhdGFyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQyYWJiNWRiZjVlMDg2NjYuRlJDMjBTZW1pTkZUIiA6CiAgICBjaGVja0ZSQzIwU2VtaU5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44MDdjM2Q0NzA4ODhjYzQ4LkZsdW5rcyIgOgogICAgY2hlY2tGbHVua3NWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzk2NjQ2ZjExMGFmYjJlNi5Sb2d1ZUJ1bm5pZXNfTkZUIiA6CiAgICBjaGVja1JvZ3VlQnVubmllc19ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuYWJlNWEyYmY0N2NlNWJmMy5haVNwb3J0c01pbnRlciIgOgogICAgY2hlY2thaVNwb3J0c01pbnRlclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xZGMzN2FiNTFhNTRkODNmLkhlcm9lc09mVGhlRmxvdyIgOgogICAgY2hlY2tIZXJvZXNPZlRoZUZsb3dWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzI5ZmViM2FiMDYyZDI4OS5VRkNfTkZUIiA6CiAgICBjaGVja1VGQ19ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODdjYTczYTQxYmI1MGFkNS5Hb2xhem9zIiA6CiAgICBjaGVja0dvbGF6b3NWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODJlZDFiOWNiYTViYjFiMy5LYXJhdE5GVCIgOgogICAgY2hlY2tLYXJhdE5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5jNGIxZjQzODc3NDhmMzg5LlRvdWNoc3RvbmVQYXJ0eUZsYXZvcnoiIDoKICAgIGNoZWNrVG91Y2hzdG9uZVBhcnR5Rmxhdm9yelZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNzU2NDUwZjM4NmZiNGFjLk1ldGF2ZXJzZU1hcmtldCIgOgogICAgY2hlY2tNZXRhdmVyc2VNYXJrZXRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOGViY2JmZDUxNmIxZGEyNy5NRkxDbHViIiA6CiAgICBjaGVja01GTENsdWJWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjAyYjE1ZTExZWIzNzE1Yi5CV0FZWF9ORlQiIDoKICAgIGNoZWNrQldBWVhfTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjkyMTJhODc1MDFhOGE2YTIuRmxvd3ZlcnNlU2hpcnQiIDoKICAgIGNoZWNrRmxvd3ZlcnNlU2hpcnRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5NaW50U3RvcmVJdGVtIiA6CiAgICBjaGVja01pbnRTdG9yZUl0ZW1WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzc1MmVhNzM2Mzg0MzIyZi5UaGVGYWJyaWNhbnRLYXBlcnMiIDoKICAgIGNoZWNrVGhlRmFicmljYW50S2FwZXJzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjc2MjBhY2Y2ZDdmMjQ2OGEuQmwweCIgOgogICAgY2hlY2tCbDB4VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmRhNDIxYzc4ZTJmN2UwZTcuU3RhbnpDbHViIiA6CiAgICBjaGVja1N0YW56Q2x1YlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hNmVlNDdkYTg4ZTZjYmRlLkljb25vR3JhcGhpa2EiIDoKICAgIGNoZWNrSWNvbm9HcmFwaGlrYVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wYTJmYmI5MmE4YWU1YzZkLlNrOHRpYmxlcyIgOgogICAgY2hlY2tTazh0aWJsZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTRjZjRiZGMxNzUxYzY1ZC5BbGxEYXkiIDoKICAgIGNoZWNrQWxsRGF5VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjUyNTdmMTQ1NWVkMzY2ZmUuTWFnbmV0aXEiIDoKICAgIGNoZWNrTWFnbmV0aXFWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNWViMTJhZDNkNWE5OTk0NS5LZWVwckl0ZW1zIiA6CiAgICBjaGVja0tlZXBySXRlbXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMGQ3N2VjNDdiYmFkOGVmNi5NYXRyaXhXb3JsZFZvdWNoZXIiIDoKICAgIGNoZWNrTWF0cml4V29ybGRWb3VjaGVyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjc3NTJlYTczNjM4NDMyMmYuVGhlRmFicmljYW50WFhvcmllcyIgOgogICAgY2hlY2tUaGVGYWJyaWNhbnRYWG9yaWVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjBiODBlNDJhYWFiMzA1ZjAuTUlLT1NFQU5GVCIgOgogICAgY2hlY2tNSUtPU0VBTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjkyMWVhNDQ5ZGZmZWM2OGEuRmxvYm90IiA6CiAgICBjaGVja0Zsb2JvdFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4xMjNjYjY2Njk5NmI4NDMyLk5GR3YzIiA6CiAgICBjaGVja05GR3YzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzZGY4MjRiZjgxOTEwYTQuQ3J5cHRvUGlnZ29WMiIgOgogICAgY2hlY2tDcnlwdG9QaWdnb1YyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjhlYmNiZmQ1MTZiMWRhMjcuTUZMUGFjayIgOgogICAgY2hlY2tNRkxQYWNrVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmM0YjFmNDM4Nzc0OGYzODkuVG91Y2hzdG9uZVNub3d5R2xvYmV6IiA6CiAgICBjaGVja1RvdWNoc3RvbmVTbm93eUdsb2JlelZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMzNlYjAxMmQzNGIwMDcwLkRvbWFpbnMiIDoKICAgIGNoZWNrRG9tYWluc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kNzk2ZmYxNzEwN2JiZmY2LkFydCIgOgogICAgY2hlY2tBcnRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzI5ZmViM2FiMDYyZDI4OS5CcmVha2luZ1RfTkZUIiA6CiAgICBjaGVja0JyZWFraW5nVF9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTNhZDYwMzBjYmFmZjFjMi5EaW1lbnNpb25YIiA6CiAgICBjaGVja0RpbWVuc2lvblhWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5MdWZ0aGF1cyIgOgogICAgY2hlY2tMdWZ0aGF1c1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hMDM5YmQ3ZDU1YTk2YzBjLkRyaXZlcnpORlQiIDoKICAgIGNoZWNrRHJpdmVyek5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hM2ViOTc4NGFlN2RjOWM4LlB1ZmZQYWx6IiA6CiAgICBjaGVja1B1ZmZQYWx6VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjI4YWJiOWYyOTFjYWRhZjIuQmFydGVyWWFyZENsdWJXZXJld29sZiIgOgogICAgY2hlY2tCYXJ0ZXJZYXJkQ2x1YldlcmV3b2xmVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjIwMTg3MDkzNzkwYjlhZWYuT3BlbkxvY2tlckluY0JvbmVZYXJkSHVza3l6Q2x1YiIgOgogICAgY2hlY2tPcGVuTG9ja2VySW5jQm9uZVlhcmRIdXNreXpDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjc1ODI1MmFiOTMyYTM0MTYuWWFob29QYXJ0bmVyc0NvbGxlY3RpYmxlIiA6CiAgICBjaGVja1lhaG9vUGFydG5lcnNDb2xsZWN0aWJsZVZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjFlYTQ0OWRmZmVjNjhhLkZsb3ZhdGFyQ29tcG9uZW50IiA6CiAgICBjaGVja0Zsb3ZhdGFyQ29tcG9uZW50VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjkyMWVhNDQ5ZGZmZWM2OGEuRmxvdmF0YXJEdXN0Q29sbGVjdGlibGUiIDoKICAgIGNoZWNrRmxvdmF0YXJEdXN0Q29sbGVjdGlibGVWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNjk5YmYyODQxMDFhNzZmMS5Kb2xseUpva2VycyIgOgogICAgY2hlY2tKb2xseUpva2Vyc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5kMGJjZWZkZjFlNjdlYTg1LkhXR2FyYWdlQ2FyZCIgOgogICAgY2hlY2tIV0dhcmFnZUNhcmRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzc1MmVhNzM2Mzg0MzIyZi5IaWdoc25vYmlldHlOb3RJblBhcmlzIiA6CiAgICBjaGVja0hpZ2hzbm9iaWV0eU5vdEluUGFyaXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5Zb3VuZ0JveXNCZXJuIiA6CiAgICBjaGVja1lvdW5nQm95c0Jlcm5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZjg4N2VjZTM5MTY2OTA2ZS5DYXIiIDoKICAgIGNoZWNrQ2FyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuV2hlZWwiIDoKICAgIGNoZWNrV2hlZWxWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODNlZDY0YTFkNGYzODMzZi5JbmNlcHRpb25CbGFja0JveCIgOgogICAgY2hlY2tJbmNlcHRpb25CbGFja0JveFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zMjlmZWIzYWIwNjJkMjg5LlJhY2VEYXlfTkZUIiA6CiAgICBjaGVja1JhY2VEYXlfTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmQzZGY4MjRiZjgxOTEwYTQuQ3J5cHRvUGlnZ28iIDoKICAgIGNoZWNrQ3J5cHRvUGlnZ29WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZTgxMTkzYzQyNGNmZDNmYi5Eb29kbGVzIiA6CiAgICBjaGVja0Rvb2RsZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzRmMmJmNGE4MGJiMGY2OS5QYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdCIgOgogICAgY2hlY2tQYXJ0eU1hbnNpb25Ecmlua3NDb250cmFjdFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yMDE4NzA5Mzc5MGI5YWVmLlBpY2tlbSIgOgogICAgY2hlY2tQaWNrZW1WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNGY3ZmY1NDNjOTM2MDcyYi5PbmVTaG90cyIgOgogICAgY2hlY2tPbmVTaG90c1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjEyYTg3NTAxYThhNmEyLkZsb3d2ZXJzZVBhc3MiIDoKICAgIGNoZWNrRmxvd3ZlcnNlUGFzc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS40YmJmZjQ2MWZhOGY2MTkyLkZhbnRhc3RlY05GVCIgOgogICAgY2hlY2tGYW50YXN0ZWNORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuN2E5NDQyYmUwYjNjMTc4YS5Cb25leWFyZCIgOgogICAgY2hlY2tCb25leWFyZFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zMjlmZWIzYWIwNjJkMjg5LkNhbmVzX1ZhdWx0X05GVCIgOgogICAgY2hlY2tDYW5lc19WYXVsdF9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzI5ZmViM2FiMDYyZDI4OS5ER0RfTkZUIiA6CiAgICBjaGVja0RHRF9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzc1MmVhNzM2Mzg0MzIyZi5XZWVrZGF5IiA6CiAgICBjaGVja1dlZWtkYXlWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMTIzY2I2NjY5OTZiODQzMi5QYXJ0eUZhdm9yeiIgOgogICAgY2hlY2tQYXJ0eUZhdm9yelZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lODExOTNjNDI0Y2ZkM2ZiLldlYXJhYmxlcyIgOgogICAgY2hlY2tXZWFyYWJsZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZDQ1ZTJiZDlhM2Q1MDAzYi5Cb2JibHpfTkZUIiA6CiAgICBjaGVja0JvYmJsel9ORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZWU0NTY3YWI3ZjYzYWJmMi5CbG92aXplTkZUIiA6CiAgICBjaGVja0Jsb3ZpemVORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOTIxMmE4NzUwMWE4YTZhMi5GbG93dmVyc2VUcmVhc3VyZXMiIDoKICAgIGNoZWNrRmxvd3ZlcnNlVHJlYXN1cmVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjExNzM5NmQ4YTcyYWQzNzIuTkZURGF5VHJlYXN1cmVDaGVzdCIgOgogICAgY2hlY2tORlREYXlUcmVhc3VyZUNoZXN0VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmZkYzQzNmZkN2RiMjJlMDEuUGllY2UiIDoKICAgIGNoZWNrUGllY2VWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuODA3YzNkNDcwODg4Y2M0OC5CYWNrcGFjayIgOgogICAgY2hlY2tCYWNrcGFja1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45MjEyYTg3NTAxYThhNmEyLk9yZGluYWwiIDoKICAgIGNoZWNrT3JkaW5hbFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS45ZDFkMGQwYzgyYmYxYzU5LlJUTFN0b3JlSXRlbSIgOgogICAgY2hlY2tSVExTdG9yZUl0ZW1WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNTkyZWIzMmI0N2Q4Yjg1Zi5GbG93dHlXcmFwcGVkIiA6CiAgICBjaGVja0Zsb3d0eVdyYXBwZWRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMDk3YmFmYTRlMGI0OGVlZi5DaGFyaXR5TkZUIiA6CiAgICBjaGVja0NoYXJpdHlORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMjAxODcwOTM3OTBiOWFlZi5ZQmVlcyIgOgogICAgY2hlY2tZQmVlc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS44M2VkNjRhMWQ0ZjM4MzNmLkluY2VwdGlvbkF2YXRhciIgOgogICAgY2hlY2tJbmNlcHRpb25BdmF0YXJWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNzU4MjUyYWI5MzJhMzQxNi5ZYWhvb0NvbGxlY3RpYmxlIiA6CiAgICBjaGVja1lhaG9vQ29sbGVjdGlibGVWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMmQ0YzNjYWZmYmVhYjg0NS5GTE9BVCIgOgogICAgY2hlY2tGTE9BVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4zMGNmNWRjZjZlYThkMzc5LkFlcmFSZXdhcmRzIiA6CiAgICBjaGVja0FlcmFSZXdhcmRzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuQ2FyQ2x1YiIgOgogICAgY2hlY2tDYXJDbHViVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmU0Y2Y0YmRjMTc1MWM2NWQuUGFja05GVCIgOgogICAgY2hlY2tQYWNrTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjMyMWQ4ZmNkZTA1ZjZlOGMuU2V1c3NpYmxlcyIgOgogICAgY2hlY2tTZXVzc2libGVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmY4ODdlY2UzOTE2NjkwNmUuSGVsbWV0IiA6CiAgICBjaGVja0hlbG1ldFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5mM2VlNjg0Y2QwMjU5ZmVkLkZ1Y2hpYm9sYV9ORlQiIDoKICAgIGNoZWNrRnVjaGlib2xhX05GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4yYzlkZTkzN2MzMTk0NjhkLkNpbWVsaW9fTkZUIiA6CiAgICBjaGVja0NpbWVsaW9fTkZUVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjhiMTQ4MTgzYzI4ZmY4OGYuR2FpYSIgOgogICAgY2hlY2tHYWlhVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjhlYmNiZmQ1MTZiMWRhMjcuTUZMUGxheWVyIiA6CiAgICBjaGVja01GTFBsYXllclZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5hNDVlYWQxY2YxY2E5ZWRhLkZsb3dSZXdhcmRzIiA6CiAgICBjaGVja0Zsb3dSZXdhcmRzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjQyN2NlYWRhMjcxYWEwYjEuU3R1cmR5SXRlbXMiIDoKICAgIGNoZWNrU3R1cmR5SXRlbXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNTJhY2IzYjM5OWRmMTFmYy5TZWVkc09mSGFwcGluZXNzR2VuZXNpcyIgOgogICAgY2hlY2tTZWVkc09mSGFwcGluZXNzR2VuZXNpc1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS42MmIzMDYzZmJlNjcyZmM4LlplZWR6SU5PIiA6CiAgICBjaGVja1plZWR6SU5PVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmM0YjFmNDM4Nzc0OGYzODkuVG91Y2hzdG9uZU1pZG5pZ2h0TXVuY2hpZXMiIDoKICAgIGNoZWNrVG91Y2hzdG9uZU1pZG5pZ2h0TXVuY2hpZXNWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzRmMmJmNGE4MGJiMGY2OS5Hb29iZXJYQ29udHJhY3QiIDoKICAgIGNoZWNrR29vYmVyWENvbnRyYWN0VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjViODJmMjFjMGVkZjc2ZTMuU3Rhcmx5Q2FyZCIgOgogICAgY2hlY2tTdGFybHlDYXJkVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmM0YjFmNDM4Nzc0OGYzODkuVG91Y2hzdG9uZUdhbGFjdGljR291cm1ldCIgOgogICAgY2hlY2tUb3VjaHN0b25lR2FsYWN0aWNHb3VybWV0VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjA5N2JhZmE0ZTBiNDhlZWYuRGFuZHkiIDoKICAgIGNoZWNrRGFuZHlWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzBjZjVkY2Y2ZWE4ZDM3OS5BZXJhTkZUIiA6CiAgICBjaGVja0FlcmFORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZDNkZjgyNGJmODE5MTBhNC5DcnlwdG9QaWdnb1BvdGlvbiIgOgogICAgY2hlY2tDcnlwdG9QaWdnb1BvdGlvblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lODExOTNjNDI0Y2ZkM2ZiLlJlZGVlbWFibGVzIiA6CiAgICBjaGVja1JlZGVlbWFibGVzVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLjBiMmEzMjk5Y2M4NTdlMjkuVG9wU2hvdCIgOgogICAgY2hlY2tUb3BTaG90VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNhNWMzMWMwYzAzZTExYmUuU3BvcnR2YXRhciIgOgogICAgY2hlY2tTcG9ydHZhdGFyVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICJBLmNlNGMwMjUzOWQxZmFiZTguRmxvd3ZlcnNlU29ja3MiIDoKICAgIGNoZWNrRmxvd3ZlcnNlU29ja3NWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgfQogICAgfQogIA==" }, "swap": { - "DeployPairTemplate": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBEZXBsb3lQYWlyVGVtcGxhdGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxCnRyYW5zYWN0aW9uKHBhaXJUZW1wbGF0ZUNvZGU6IFN0cmluZykgewogICAgcHJlcGFyZShkZXBsb3lBY2NvdW50OiBBdXRoQWNjb3VudCkgewogICAgICAgIGxldCB0b2tlbjBWYXVsdCA8LSBGbG93VG9rZW4uY3JlYXRlRW1wdHlWYXVsdCgpCiAgICAgICAgbGV0IHRva2VuMVZhdWx0IDwtIEZsb3dUb2tlbi5jcmVhdGVFbXB0eVZhdWx0KCkKICAgICAgICBkZXBsb3lBY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogIlN3YXBQYWlyIiwgY29kZTogcGFpclRlbXBsYXRlQ29kZS51dGY4LCB0b2tlbjBWYXVsdDogPC10b2tlbjBWYXVsdCwgdG9rZW4xVmF1bHQ6IDwtdG9rZW4xVmF1bHQpCiAgICB9Cn0=", - "CreatePairTemplate": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBDcmVhdGVQYWlyVGVtcGxhdGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICBpbXBvcnQgVG9rZW4wTmFtZSBmcm9tIFRva2VuMEFkZHIKaW1wb3J0IFRva2VuMU5hbWUgZnJvbSBUb2tlbjFBZGRyCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKaW1wb3J0IFN3YXBGYWN0b3J5IGZyb20gMHhiMDYzYzE2Y2FjODVkYmQxCnRyYW5zYWN0aW9uKCkgewogICAgcHJlcGFyZSh1c2VyQWNjb3VudDogQXV0aEFjY291bnQpIHsKICAgICAgICBsZXQgZmxvd1ZhdWx0UmVmID0gdXNlckFjY291bnQuYm9ycm93PCZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KSEKICAgICAgICBhc3NlcnQoZmxvd1ZhdWx0UmVmLmJhbGFuY2UgPj0gMC4wMDIsIG1lc3NhZ2U6ICJJbnN1ZmZpY2llbnQgYmFsYW5jZSB0byBjcmVhdGUgcGFpciwgbWluaW11bSBiYWxhbmNlIHJlcXVpcmVtZW50OiAwLjAwMiBmbG93IikKICAgICAgICBsZXQgYWNjb3VudENyZWF0aW9uRmVlVmF1bHQgPC0gZmxvd1ZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogMC4wMDEpCiAgICAgICAgbGV0IHRva2VuMFZhdWx0IDwtIFRva2VuME5hbWUuY3JlYXRlRW1wdHlWYXVsdCgpCiAgICAgICAgbGV0IHRva2VuMVZhdWx0IDwtIFRva2VuMU5hbWUuY3JlYXRlRW1wdHlWYXVsdCgpCiAgICAgICAgU3dhcEZhY3RvcnkuY3JlYXRlUGFpcih0b2tlbjBWYXVsdDogPC10b2tlbjBWYXVsdCwgdG9rZW4xVmF1bHQ6IDwtdG9rZW4xVmF1bHQsIGFjY291bnRDcmVhdGlvbkZlZTogPC1hY2NvdW50Q3JlYXRpb25GZWVWYXVsdCkKICAgIH0KfQ==", - "AddLiquidity": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBBZGRMaXF1aWRpdHkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZjIzM2RjZWU4OGZlMGFiZQppbXBvcnQgU3dhcEZhY3RvcnkgZnJvbSAweGIwNjNjMTZjYWM4NWRiZDEKaW1wb3J0IFN3YXBJbnRlcmZhY2VzIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwQ29uZmlnIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwRXJyb3IgZnJvbSAweGI3OGVmN2FmYTUyZmY5MDYKdHJhbnNhY3Rpb24oCiAgICB0b2tlbjBLZXk6IFN0cmluZywKICAgIHRva2VuMUtleTogU3RyaW5nLAogICAgdG9rZW4wSW5EZXNpcmVkOiBVRml4NjQsCiAgICB0b2tlbjFJbkRlc2lyZWQ6IFVGaXg2NCwKICAgIHRva2VuMEluTWluOiBVRml4NjQsCiAgICB0b2tlbjFJbk1pbjogVUZpeDY0LAogICAgZGVhZGxpbmU6IFVGaXg2NCwKICAgIHRva2VuMFZhdWx0UGF0aDogU3RvcmFnZVBhdGgsCiAgICB0b2tlbjFWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAopIHsKICAgIHByZXBhcmUodXNlckFjY291bnQ6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgYXNzZXJ0KGRlYWRsaW5lID49IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCwgbWVzc2FnZToKICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgbXNnOiAiQWRkTGlxdWlkaXR5OiBleHBpcmVkICIuY29uY2F0KGRlYWRsaW5lLnRvU3RyaW5nKCkpLmNvbmNhdCgiIDwgIikuY29uY2F0KGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcC50b1N0cmluZygpKSwKICAgICAgICAgICAgICAgIGVycjogU3dhcEVycm9yLkVycm9yQ29kZS5FWFBJUkVECiAgICAgICAgICAgICkKICAgICAgICApCiAgICAgICAgbGV0IHBhaXJBZGRyID0gU3dhcEZhY3RvcnkuZ2V0UGFpckFkZHJlc3ModG9rZW4wS2V5OiB0b2tlbjBLZXksIHRva2VuMUtleTogdG9rZW4xS2V5KQogICAgICAgICAgICA/PyBwYW5pYygiQWRkTGlxdWlkaXR5OiBub25leGlzdGVudCBwYWlyICIuY29uY2F0KHRva2VuMEtleSkuY29uY2F0KCIgPC0+ICIpLmNvbmNhdCh0b2tlbjFLZXkpLmNvbmNhdCgiLCBjcmVhdGUgcGFpciBmaXJzdCIpKQogICAgICAgIGxldCBwYWlyUHVibGljUmVmID0gZ2V0QWNjb3VudChwYWlyQWRkcikuZ2V0Q2FwYWJpbGl0eTwme1N3YXBJbnRlcmZhY2VzLlBhaXJQdWJsaWN9PihTd2FwQ29uZmlnLlBhaXJQdWJsaWNQYXRoKS5ib3Jyb3coKSEKICAgICAgICBsZXQgcGFpckluZm8gPSBwYWlyUHVibGljUmVmLmdldFBhaXJJbmZvKCkKICAgICAgICB2YXIgdG9rZW4wSW4gPSAwLjAKICAgICAgICB2YXIgdG9rZW4xSW4gPSAwLjAKICAgICAgICB2YXIgdG9rZW4wUmVzZXJ2ZSA9IDAuMAogICAgICAgIHZhciB0b2tlbjFSZXNlcnZlID0gMC4wCiAgICAgICAgaWYgdG9rZW4wS2V5ID09IChwYWlySW5mb1swXSBhcyEgU3RyaW5nKSB7CiAgICAgICAgICAgIHRva2VuMFJlc2VydmUgPSAocGFpckluZm9bMl0gYXMhIFVGaXg2NCkKICAgICAgICAgICAgdG9rZW4xUmVzZXJ2ZSA9IChwYWlySW5mb1szXSBhcyEgVUZpeDY0KQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRva2VuMFJlc2VydmUgPSAocGFpckluZm9bM10gYXMhIFVGaXg2NCkKICAgICAgICAgICAgdG9rZW4xUmVzZXJ2ZSA9IChwYWlySW5mb1syXSBhcyEgVUZpeDY0KQogICAgICAgIH0KICAgICAgICBpZiB0b2tlbjBSZXNlcnZlID09IDAuMCAmJiB0b2tlbjFSZXNlcnZlID09IDAuMCB7CiAgICAgICAgICAgIHRva2VuMEluID0gdG9rZW4wSW5EZXNpcmVkCiAgICAgICAgICAgIHRva2VuMUluID0gdG9rZW4xSW5EZXNpcmVkCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIGFtb3VudDFPcHRpbWFsID0gU3dhcENvbmZpZy5xdW90ZShhbW91bnRBOiB0b2tlbjBJbkRlc2lyZWQsIHJlc2VydmVBOiB0b2tlbjBSZXNlcnZlLCByZXNlcnZlQjogdG9rZW4xUmVzZXJ2ZSkKICAgICAgICAgICAgaWYgKGFtb3VudDFPcHRpbWFsIDw9IHRva2VuMUluRGVzaXJlZCkgewogICAgICAgICAgICAgICAgYXNzZXJ0KGFtb3VudDFPcHRpbWFsID49IHRva2VuMUluTWluLCBtZXNzYWdlOgogICAgICAgICAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgICAgICAgICAgbXNnOiAiU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRSBleHBlY3QgbWluIi5jb25jYXQodG9rZW4xSW5NaW4udG9TdHJpbmcoKSkuY29uY2F0KCIgZ290ICIpLmNvbmNhdChhbW91bnQxT3B0aW1hbC50b1N0cmluZygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB0b2tlbjBJbiA9IHRva2VuMEluRGVzaXJlZAogICAgICAgICAgICAgICAgdG9rZW4xSW4gPSBhbW91bnQxT3B0aW1hbAogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGFtb3VudDBPcHRpbWFsID0gU3dhcENvbmZpZy5xdW90ZShhbW91bnRBOiB0b2tlbjFJbkRlc2lyZWQsIHJlc2VydmVBOiB0b2tlbjFSZXNlcnZlLCByZXNlcnZlQjogdG9rZW4wUmVzZXJ2ZSkKICAgICAgICAgICAgICAgIGFzc2VydChhbW91bnQwT3B0aW1hbCA8PSB0b2tlbjBJbkRlc2lyZWQpCiAgICAgICAgICAgICAgICBhc3NlcnQoYW1vdW50ME9wdGltYWwgPj0gdG9rZW4wSW5NaW4sIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgICAgICAgICBtc2c6ICJTTElQUEFHRV9PRkZTRVRfVE9PX0xBUkdFIGV4cGVjdCBtaW4iLmNvbmNhdCh0b2tlbjBJbk1pbi50b1N0cmluZygpKS5jb25jYXQoIiBnb3QgIikuY29uY2F0KGFtb3VudDBPcHRpbWFsLnRvU3RyaW5nKCkpLAogICAgICAgICAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHRva2VuMEluID0gYW1vdW50ME9wdGltYWwKICAgICAgICAgICAgICAgIHRva2VuMUluID0gdG9rZW4xSW5EZXNpcmVkCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbGV0IHRva2VuMFZhdWx0IDwtIHVzZXJBY2NvdW50LmJvcnJvdzwmRnVuZ2libGVUb2tlbi5WYXVsdD4oZnJvbTogdG9rZW4wVmF1bHRQYXRoKSEud2l0aGRyYXcoYW1vdW50OiB0b2tlbjBJbikKICAgICAgICBsZXQgdG9rZW4xVmF1bHQgPC0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbjFWYXVsdFBhdGgpIS53aXRoZHJhdyhhbW91bnQ6IHRva2VuMUluKQogICAgICAgIGxldCBscFRva2VuVmF1bHQgPC0gcGFpclB1YmxpY1JlZi5hZGRMaXF1aWRpdHkoCiAgICAgICAgICAgIHRva2VuQVZhdWx0OiA8LSB0b2tlbjBWYXVsdCwKICAgICAgICAgICAgdG9rZW5CVmF1bHQ6IDwtIHRva2VuMVZhdWx0CiAgICAgICAgKQogICAgICAgIGxldCBscFRva2VuQ29sbGVjdGlvblN0b3JhZ2VQYXRoID0gU3dhcENvbmZpZy5McFRva2VuQ29sbGVjdGlvblN0b3JhZ2VQYXRoCiAgICAgICAgbGV0IGxwVG9rZW5Db2xsZWN0aW9uUHVibGljUGF0aCA9IFN3YXBDb25maWcuTHBUb2tlbkNvbGxlY3Rpb25QdWJsaWNQYXRoCiAgICAgICAgdmFyIGxwVG9rZW5Db2xsZWN0aW9uUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZTd2FwRmFjdG9yeS5McFRva2VuQ29sbGVjdGlvbj4oZnJvbTogbHBUb2tlbkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICBpZiBscFRva2VuQ29sbGVjdGlvblJlZiA9PSBuaWwgewogICAgICAgICAgICBkZXN0cm95IDwtIHVzZXJBY2NvdW50LmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiBscFRva2VuQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICB1c2VyQWNjb3VudC5zYXZlKDwtU3dhcEZhY3RvcnkuY3JlYXRlRW1wdHlMcFRva2VuQ29sbGVjdGlvbigpLCB0bzogbHBUb2tlbkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgdXNlckFjY291bnQubGluazwme1N3YXBJbnRlcmZhY2VzLkxwVG9rZW5Db2xsZWN0aW9uUHVibGljfT4obHBUb2tlbkNvbGxlY3Rpb25QdWJsaWNQYXRoLCB0YXJnZXQ6IGxwVG9rZW5Db2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxwVG9rZW5Db2xsZWN0aW9uUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZTd2FwRmFjdG9yeS5McFRva2VuQ29sbGVjdGlvbj4oZnJvbTogbHBUb2tlbkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgbHBUb2tlbkNvbGxlY3Rpb25SZWYhLmRlcG9zaXQocGFpckFkZHI6IHBhaXJBZGRyLCBscFRva2VuVmF1bHQ6IDwtIGxwVG9rZW5WYXVsdCkKICAgIH0KfQ==", - "RemoveLiquidity": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBSZW1vdmVMaXF1aWRpdHkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZjIzM2RjZWU4OGZlMGFiZQppbXBvcnQgU3dhcEZhY3RvcnkgZnJvbSAweGIwNjNjMTZjYWM4NWRiZDEKaW1wb3J0IFN3YXBJbnRlcmZhY2VzIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwQ29uZmlnIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwRXJyb3IgZnJvbSAweGI3OGVmN2FmYTUyZmY5MDYKdHJhbnNhY3Rpb24oCiAgICB0b2tlbjBLZXk6IFN0cmluZywKICAgIHRva2VuMUtleTogU3RyaW5nLAogICAgbHBUb2tlbkFtb3VudDogVUZpeDY0LAogICAgdG9rZW4wT3V0TWluOiBVRml4NjQsCiAgICB0b2tlbjFPdXRNaW46IFVGaXg2NCwKICAgIGRlYWRsaW5lOiBVRml4NjQsCiAgICB0b2tlbjBWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW4xVmF1bHRQYXRoOiBTdG9yYWdlUGF0aCwKKSB7CiAgICBwcmVwYXJlKHVzZXJBY2NvdW50OiBBdXRoQWNjb3VudCkgewogICAgICAgIGFzc2VydChkZWFkbGluZSA+PSBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAsIG1lc3NhZ2U6CiAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgIG1zZzogIlJlbW92ZUxpcXVpZGl0eTogZXhwaXJlZCAiLmNvbmNhdChkZWFkbGluZS50b1N0cmluZygpKS5jb25jYXQoIiA8ICIpLmNvbmNhdChnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAudG9TdHJpbmcoKSksCiAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuRVhQSVJFRAogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgIGxldCBwYWlyQWRkciA9IFN3YXBGYWN0b3J5LmdldFBhaXJBZGRyZXNzKHRva2VuMEtleTogdG9rZW4wS2V5LCB0b2tlbjFLZXk6IHRva2VuMUtleSkKICAgICAgICAgICAgPz8gcGFuaWMoIlJlbW92ZUxpcXVpZGl0eTogbm9uZXhpc3RlbnQgcGFpciAiLmNvbmNhdCh0b2tlbjBLZXkpLmNvbmNhdCgiIDwtPiAiKS5jb25jYXQodG9rZW4xS2V5KS5jb25jYXQoIiwgY3JlYXRlIHBhaXIgZmlyc3QiKSkKICAgICAgICBsZXQgbHBUb2tlbkNvbGxlY3Rpb25SZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JlN3YXBGYWN0b3J5LkxwVG9rZW5Db2xsZWN0aW9uPihmcm9tOiBTd2FwQ29uZmlnLkxwVG9rZW5Db2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJSZW1vdmVMaXF1aWRpdHk6IGNhbm5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIExwVG9rZW5Db2xsZWN0aW9uIikKICAgICAgICBsZXQgbHBUb2tlblJlbW92ZSA8LSBscFRva2VuQ29sbGVjdGlvblJlZi53aXRoZHJhdyhwYWlyQWRkcjogcGFpckFkZHIsIGFtb3VudDogbHBUb2tlbkFtb3VudCkKICAgICAgICBsZXQgdG9rZW5zIDwtIGdldEFjY291bnQocGFpckFkZHIpLmdldENhcGFiaWxpdHk8JntTd2FwSW50ZXJmYWNlcy5QYWlyUHVibGljfT4oU3dhcENvbmZpZy5QYWlyUHVibGljUGF0aCkuYm9ycm93KCkhLnJlbW92ZUxpcXVpZGl0eShscFRva2VuVmF1bHQ6IDwtbHBUb2tlblJlbW92ZSkKICAgICAgICBsZXQgdG9rZW4wVmF1bHQgPC0gdG9rZW5zWzBdLndpdGhkcmF3KGFtb3VudDogdG9rZW5zWzBdLmJhbGFuY2UpCiAgICAgICAgbGV0IHRva2VuMVZhdWx0IDwtIHRva2Vuc1sxXS53aXRoZHJhdyhhbW91bnQ6IHRva2Vuc1sxXS5iYWxhbmNlKQogICAgICAgIGRlc3Ryb3kgdG9rZW5zCiAgICAgICAgYXNzZXJ0KHRva2VuMFZhdWx0LmJhbGFuY2UgPj0gdG9rZW4wT3V0TWluICYmIHRva2VuMVZhdWx0LmJhbGFuY2UgPj0gdG9rZW4xT3V0TWluLCBtZXNzYWdlOgogICAgICAgICAgICBTd2FwRXJyb3IuRXJyb3JFbmNvZGUoCiAgICAgICAgICAgICAgICBtc2c6ICJSZW1vdmVMaXF1aWRpdHk6IElOU1VGRklDSUVOVF9SRU1PVkVfTElRVUlESVRZX09VVF9BTU9VTlQiLAogICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UKICAgICAgICAgICAgKQogICAgICAgICkKICAgICAgICBsZXQgbG9jYWxWYXVsdDBSZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuMFZhdWx0UGF0aCkhCiAgICAgICAgbGV0IGxvY2FsVmF1bHQxUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbjFWYXVsdFBhdGgpIQogICAgICAgIGlmIHRva2VuMFZhdWx0LmlzSW5zdGFuY2UobG9jYWxWYXVsdDBSZWYuZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgIGxvY2FsVmF1bHQwUmVmLmRlcG9zaXQoZnJvbTogPC10b2tlbjBWYXVsdCkKICAgICAgICAgICAgbG9jYWxWYXVsdDFSZWYuZGVwb3NpdChmcm9tOiA8LXRva2VuMVZhdWx0KQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxvY2FsVmF1bHQwUmVmLmRlcG9zaXQoZnJvbTogPC10b2tlbjFWYXVsdCkKICAgICAgICAgICAgbG9jYWxWYXVsdDFSZWYuZGVwb3NpdChmcm9tOiA8LXRva2VuMFZhdWx0KQogICAgICAgIH0KICAgIH0KfQ==", - "SwapExactTokensForTokens": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBTd2FwRXhhY3RUb2tlbnNGb3JUb2tlbnMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICBpbXBvcnQgVG9rZW4xTmFtZSBmcm9tIFRva2VuMUFkZHIKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IFN3YXBSb3V0ZXIgZnJvbSAweGE2ODUwNzc2YTk0ZTY1NTEKaW1wb3J0IFN3YXBFcnJvciBmcm9tIDB4Yjc4ZWY3YWZhNTJmZjkwNgp0cmFuc2FjdGlvbigKICAgIHRva2VuS2V5RmxhdFNwbGl0UGF0aDogW1N0cmluZ10sCiAgICBhbW91bnRJblNwbGl0OiBbVUZpeDY0XSwKICAgIGFtb3VudE91dE1pbjogVUZpeDY0LAogICAgZGVhZGxpbmU6IFVGaXg2NCwKICAgIHRva2VuSW5WYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRSZWNlaXZlclBhdGg6IFB1YmxpY1BhdGgsCiAgICB0b2tlbk91dEJhbGFuY2VQYXRoOiBQdWJsaWNQYXRoLAopIHsKICAgIHByZXBhcmUodXNlckFjY291bnQ6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgYXNzZXJ0KGRlYWRsaW5lID49IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCwgbWVzc2FnZToKICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgbXNnOiAiRVhQSVJFRCIsCiAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuRVhQSVJFRAogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgIGxldCBsZW4gPSB0b2tlbktleUZsYXRTcGxpdFBhdGgubGVuZ3RoCiAgICAgICAgbGV0IHRva2VuSW5LZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbMF0KICAgICAgICBsZXQgdG9rZW5PdXRLZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbbGVuLTFdCiAgICAgICAgdmFyIHRva2VuT3V0QW1vdW50VG90YWwgPSAwLjAKICAgICAgICB2YXIgdG9rZW5PdXRSZWNlaXZlclJlZiA9IHVzZXJBY2NvdW50LmJvcnJvdzwmRnVuZ2libGVUb2tlbi5WYXVsdD4oZnJvbTogdG9rZW5PdXRWYXVsdFBhdGgpCiAgICAgICAgaWYgdG9rZW5PdXRSZWNlaXZlclJlZiA9PSBuaWwgewogICAgICAgICAgICB1c2VyQWNjb3VudC5zYXZlKDwtIFRva2VuMU5hbWUuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdG9rZW5PdXRWYXVsdFBhdGgpCiAgICAgICAgICAgIHVzZXJBY2NvdW50Lmxpbms8JlRva2VuMU5hbWUuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHRva2VuT3V0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgICAgICB1c2VyQWNjb3VudC5saW5rPCZUb2tlbjFOYW1lLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHRva2VuT3V0QmFsYW5jZVBhdGgsIHRhcmdldDogdG9rZW5PdXRWYXVsdFBhdGgpCiAgICAgICAgICAgIHRva2VuT3V0UmVjZWl2ZXJSZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgIH0KICAgICAgICB2YXIgcGF0aEluZGV4ID0gMAogICAgICAgIHZhciBpID0gMAogICAgICAgIHZhciBwYXRoOiBbU3RyaW5nXSA9IFtdCiAgICAgICAgd2hpbGUoaSA8IGxlbikgewogICAgICAgICAgICB2YXIgY3VyVG9rZW5LZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbaV0KICAgICAgICAgICAgcGF0aC5hcHBlbmQoY3VyVG9rZW5LZXkpCiAgICAgICAgICAgIGlmIChjdXJUb2tlbktleSA9PSB0b2tlbk91dEtleSkgewogICAgICAgICAgICAgICAgbGV0IHRva2VuSW5BbW91bnQgPSBhbW91bnRJblNwbGl0W3BhdGhJbmRleF0KICAgICAgICAgICAgICAgIGxldCB0b2tlbkluVmF1bHQgPC0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbkluVmF1bHRQYXRoKSEud2l0aGRyYXcoYW1vdW50OiB0b2tlbkluQW1vdW50KQogICAgICAgICAgICAgICAgbGV0IHRva2VuT3V0VmF1bHQgPC0gU3dhcFJvdXRlci5zd2FwV2l0aFBhdGgodmF1bHRJbjogPC0gdG9rZW5JblZhdWx0LCB0b2tlbktleVBhdGg6IHBhdGgsIGV4YWN0QW1vdW50czogbmlsKQogICAgICAgICAgICAgICAgdG9rZW5PdXRBbW91bnRUb3RhbCA9IHRva2VuT3V0QW1vdW50VG90YWwgKyB0b2tlbk91dFZhdWx0LmJhbGFuY2UKICAgICAgICAgICAgICAgIHRva2VuT3V0UmVjZWl2ZXJSZWYhLmRlcG9zaXQoZnJvbTogPC0gdG9rZW5PdXRWYXVsdCkKICAgICAgICAgICAgICAgIHBhdGggPSBbXQogICAgICAgICAgICAgICAgcGF0aEluZGV4ID0gcGF0aEluZGV4ICsgMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgIH0KICAgICAgICBhc3NlcnQodG9rZW5PdXRBbW91bnRUb3RhbCA+PSBhbW91bnRPdXRNaW4sIG1lc3NhZ2U6CiAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgIG1zZzogIlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UgZXhwZWN0IG1pbiAiLmNvbmNhdChhbW91bnRPdXRNaW4udG9TdHJpbmcoKSkuY29uY2F0KCIgZ290ICIpLmNvbmNhdCh0b2tlbk91dEFtb3VudFRvdGFsLnRvU3RyaW5nKCkpLAogICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UKICAgICAgICAgICAgKQogICAgICAgICkKICAgIH0KfQ==", - "SwapTokensForExactTokens": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBTd2FwVG9rZW5zRm9yRXhhY3RUb2tlbnMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICBpbXBvcnQgVG9rZW4xTmFtZSBmcm9tIFRva2VuMUFkZHIKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IFN3YXBSb3V0ZXIgZnJvbSAweGE2ODUwNzc2YTk0ZTY1NTEKaW1wb3J0IFN3YXBFcnJvciBmcm9tIDB4Yjc4ZWY3YWZhNTJmZjkwNgp0cmFuc2FjdGlvbigKICAgIHRva2VuS2V5RmxhdFNwbGl0UGF0aDogW1N0cmluZ10sCiAgICBhbW91bnRPdXRTcGxpdDogW1VGaXg2NF0sCiAgICBhbW91bnRJbk1heDogVUZpeDY0LAogICAgZGVhZGxpbmU6IFVGaXg2NCwKICAgIHRva2VuSW5WYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRSZWNlaXZlclBhdGg6IFB1YmxpY1BhdGgsCiAgICB0b2tlbk91dEJhbGFuY2VQYXRoOiBQdWJsaWNQYXRoLAopIHsKICAgIHByZXBhcmUodXNlckFjY291bnQ6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgYXNzZXJ0KCBkZWFkbGluZSA+PSBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAsIG1lc3NhZ2U6CiAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgIG1zZzogIkVYUElSRUQiLAogICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLkVYUElSRUQKICAgICAgICAgICAgKQogICAgICAgICkKICAgICAgICBsZXQgbGVuID0gdG9rZW5LZXlGbGF0U3BsaXRQYXRoLmxlbmd0aAogICAgICAgIGxldCB0b2tlbkluS2V5ID0gdG9rZW5LZXlGbGF0U3BsaXRQYXRoWzBdCiAgICAgICAgbGV0IHRva2VuT3V0S2V5ID0gdG9rZW5LZXlGbGF0U3BsaXRQYXRoW2xlbi0xXQogICAgICAgIHZhciB0b2tlbk91dEFtb3VudFRvdGFsID0gMC4wCiAgICAgICAgdmFyIHRva2VuT3V0UmVjZWl2ZXJSZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgIGlmIHRva2VuT3V0UmVjZWl2ZXJSZWYgPT0gbmlsIHsKICAgICAgICAgICAgdXNlckFjY291bnQuc2F2ZSg8LSBUb2tlbjFOYW1lLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgICAgICB1c2VyQWNjb3VudC5saW5rPCZUb2tlbjFOYW1lLlZhdWx0e0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih0b2tlbk91dFJlY2VpdmVyUGF0aCwgdGFyZ2V0OiB0b2tlbk91dFZhdWx0UGF0aCkKICAgICAgICAgICAgdXNlckFjY291bnQubGluazwmVG9rZW4xTmFtZS5WYXVsdHtGdW5naWJsZVRva2VuLkJhbGFuY2V9Pih0b2tlbk91dEJhbGFuY2VQYXRoLCB0YXJnZXQ6IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgICAgICB0b2tlbk91dFJlY2VpdmVyUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbk91dFZhdWx0UGF0aCkKICAgICAgICB9CiAgICAgICAgdmFyIHBhdGhJbmRleCA9IDAKICAgICAgICB2YXIgaSA9IDAKICAgICAgICB2YXIgcGF0aDogW1N0cmluZ10gPSBbXQogICAgICAgIHZhciBhbW91bnRJblRvdGFsID0gMC4wCiAgICAgICAgd2hpbGUoaSA8IGxlbikgewogICAgICAgICAgICB2YXIgY3VyVG9rZW5LZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbaV0KICAgICAgICAgICAgcGF0aC5hcHBlbmQoY3VyVG9rZW5LZXkpCiAgICAgICAgICAgIGlmIChjdXJUb2tlbktleSA9PSB0b2tlbk91dEtleSkgewogICAgICAgICAgICAgICAgbGV0IHRva2VuT3V0RXhwZWN0QW1vdW50ID0gYW1vdW50T3V0U3BsaXRbcGF0aEluZGV4XQogICAgICAgICAgICAgICAgbGV0IGFtb3VudHMgPSBTd2FwUm91dGVyLmdldEFtb3VudHNJbihhbW91bnRPdXQ6IHRva2VuT3V0RXhwZWN0QW1vdW50LCB0b2tlbktleVBhdGg6IHBhdGgpCiAgICAgICAgICAgICAgICBsZXQgdG9rZW5JbkFtb3VudCA9IGFtb3VudHNbMF0KICAgICAgICAgICAgICAgIGFtb3VudEluVG90YWwgPSBhbW91bnRJblRvdGFsICsgdG9rZW5JbkFtb3VudAogICAgICAgICAgICAgICAgbGV0IHRva2VuSW5WYXVsdCA8LSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuSW5WYXVsdFBhdGgpIS53aXRoZHJhdyhhbW91bnQ6IHRva2VuSW5BbW91bnQpCiAgICAgICAgICAgICAgICBsZXQgdG9rZW5PdXRWYXVsdCA8LSBTd2FwUm91dGVyLnN3YXBXaXRoUGF0aCh2YXVsdEluOiA8LSB0b2tlbkluVmF1bHQsIHRva2VuS2V5UGF0aDogcGF0aCwgZXhhY3RBbW91bnRzOiBhbW91bnRzKQogICAgICAgICAgICAgICAgdG9rZW5PdXRBbW91bnRUb3RhbCA9IHRva2VuT3V0QW1vdW50VG90YWwgKyB0b2tlbk91dFZhdWx0LmJhbGFuY2UKICAgICAgICAgICAgICAgIHRva2VuT3V0UmVjZWl2ZXJSZWYhLmRlcG9zaXQoZnJvbTogPC0gdG9rZW5PdXRWYXVsdCkKICAgICAgICAgICAgICAgIHBhdGggPSBbXQogICAgICAgICAgICAgICAgcGF0aEluZGV4ID0gcGF0aEluZGV4ICsgMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgIH0KICAgICAgICBhc3NlcnQoYW1vdW50SW5Ub3RhbCA8PSBhbW91bnRJbk1heCwgbWVzc2FnZToKICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgbXNnOiAiU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRSIsCiAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRQogICAgICAgICAgICApCiAgICAgICAgKQogICAgfQp9", - "MintAllTokens": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBNaW50QWxsVG9rZW5zIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IEJVU0QgZnJvbSAweEJVU0QKaW1wb3J0IEZVU0QgZnJvbSAweDNjNTk1OWI1Njg4OTYzOTMKaW1wb3J0IFVTREMgZnJvbSAweFVTREMKaW1wb3J0IFVTRFQgZnJvbSAweFVTRFQKaW1wb3J0IHdGbG93IGZyb20gMHh3RmxvdwppbXBvcnQgQkxUIGZyb20gMHhCTFQKaW1wb3J0IFRlc3RUb2tlbkEgZnJvbSAweFRlc3RUb2tlbkEKaW1wb3J0IFRlc3RUb2tlbkIgZnJvbSAweFRlc3RUb2tlbkIKaW1wb3J0IFRlc3RUb2tlbkMgZnJvbSAweFRlc3RUb2tlbkMKdHJhbnNhY3Rpb24obWludEFtb3VudDogVUZpeDY0KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogQXV0aEFjY291bnQpIHsKICAgICAgICB2YXIgdmF1bHRTdG9yYWdlUGF0aCA9IC9zdG9yYWdlL3Rlc3RfYnVzZFZhdWx0CiAgICAgICAgdmFyIHZhdWx0UmVjZWl2ZXJQYXRoID0gL3B1YmxpYy90ZXN0X2J1c2RSZWNlaXZlcgogICAgICAgIHZhciB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X2J1c2RCYWxhbmNlCiAgICAgICAgdmFyIGJ1c2RWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JkJVU0QuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgYnVzZFZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LUJVU0QuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkJVU0QuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZCVVNELlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgYnVzZFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmQlVTRC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBidXNkVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1CVVNELnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF9mdXNkVmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF9mdXNkUmVjZWl2ZXIKICAgICAgICB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X2Z1c2RCYWxhbmNlCiAgICAgICAgdmFyIGZ1c2RWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JkZVU0QuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgZnVzZFZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LUZVU0QuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkZVU0QuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZGVVNELlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgZnVzZFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmRlVTRC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBmdXNkVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1GVVNELnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF91c2RjVmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF91c2RjUmVjZWl2ZXIKICAgICAgICB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X3VzZGNCYWxhbmNlCiAgICAgICAgdmFyIHVzZGNWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlVTREMuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdXNkY1ZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVVTREMuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlVTREMuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZVU0RDLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdXNkY1ZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVVNEQy5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB1c2RjVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1VU0RDLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF91c2R0VmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF91c2R0UmVjZWl2ZXIKICAgICAgICB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X3VzZHRCYWxhbmNlCiAgICAgICAgdmFyIHVzZHRWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlVTRFQuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdXNkdFZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVVTRFQuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlVTRFQuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZVU0RULlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdXNkdFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVVNEVC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB1c2R0VmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1VU0RULnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF93Zmxvd1ZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3Rfd2Zsb3dSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3Rfd2Zsb3dCYWxhbmNlCiAgICAgICAgdmFyIHdmbG93VmF1bHRSZWYgPSBzaWduZXIuYm9ycm93PCZ3Rmxvdy5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBpZiB3Zmxvd1ZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LXdGbG93LmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZ3Rmxvdy5WYXVsdHtGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHRSZWNlaXZlclBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JndGbG93LlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgd2Zsb3dWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JndGbG93LlZhdWx0Pihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgIHdmbG93VmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC13Rmxvdy50ZXN0X21pbnRlci5taW50VG9rZW5zKGFtb3VudDogbWludEFtb3VudCkpCiAgICAgICAgdmF1bHRTdG9yYWdlUGF0aCA9IC9zdG9yYWdlL3Rlc3RfYmx0VmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF9ibHRSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RfYmx0QmFsYW5jZQogICAgICAgIHZhciBiTFRWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JkJMVC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBpZiBiTFRWYXVsdFJlZiA9PSBuaWwgewogICAgICAgICAgICBkZXN0cm95IDwtIHNpZ25lci5sb2FkPEBBbnlSZXNvdXJjZT4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLnNhdmUoPC1CTFQuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkJMVC5WYXVsdHtGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHRSZWNlaXZlclBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkJMVC5WYXVsdHtGdW5naWJsZVRva2VuLkJhbGFuY2V9Pih2YXVsdEJhbGFuY2VQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIGJMVFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmQkxULlZhdWx0Pihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgIGJMVFZhdWx0UmVmIS5kZXBvc2l0KGZyb206IDwtQkxULnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdFRva2VuQVZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkFSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkFCYWxhbmNlCiAgICAgICAgdmFyIHRlc3RUb2tlbkFWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlRlc3RUb2tlbkEuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdGVzdFRva2VuQVZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVRlc3RUb2tlbkEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlRlc3RUb2tlbkEuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZUZXN0VG9rZW5BLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdGVzdFRva2VuQVZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVGVzdFRva2VuQS5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB0ZXN0VG9rZW5BVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1UZXN0VG9rZW5BLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdFRva2VuQlZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkJSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkJCYWxhbmNlCiAgICAgICAgdmFyIHRlc3RUb2tlbkJWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlRlc3RUb2tlbkIuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdGVzdFRva2VuQlZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVRlc3RUb2tlbkIuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlRlc3RUb2tlbkIuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZUZXN0VG9rZW5CLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdGVzdFRva2VuQlZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVGVzdFRva2VuQi5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB0ZXN0VG9rZW5CVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1UZXN0VG9rZW5CLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdFRva2VuQ1ZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkNSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkNCYWxhbmNlCiAgICAgICAgdmFyIHRlc3RUb2tlbkNWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlRlc3RUb2tlbkMuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdGVzdFRva2VuQ1ZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVRlc3RUb2tlbkMuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlRlc3RUb2tlbkMuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZUZXN0VG9rZW5DLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdGVzdFRva2VuQ1ZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVGVzdFRva2VuQy5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB0ZXN0VG9rZW5DVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1UZXN0VG9rZW5DLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgIH0KfQo=", + "DeployPairTemplate": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgRGVwbG95UGFpclRlbXBsYXRlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxCnRyYW5zYWN0aW9uKHBhaXJUZW1wbGF0ZUNvZGU6IFN0cmluZykgewogICAgcHJlcGFyZShkZXBsb3lBY2NvdW50OiBBdXRoQWNjb3VudCkgewogICAgICAgIGxldCB0b2tlbjBWYXVsdCA8LSBGbG93VG9rZW4uY3JlYXRlRW1wdHlWYXVsdCgpCiAgICAgICAgbGV0IHRva2VuMVZhdWx0IDwtIEZsb3dUb2tlbi5jcmVhdGVFbXB0eVZhdWx0KCkKICAgICAgICBkZXBsb3lBY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogIlN3YXBQYWlyIiwgY29kZTogcGFpclRlbXBsYXRlQ29kZS51dGY4LCB0b2tlbjBWYXVsdDogPC10b2tlbjBWYXVsdCwgdG9rZW4xVmF1bHQ6IDwtdG9rZW4xVmF1bHQpCiAgICB9Cn0=", + "CreatePairTemplate": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgQ3JlYXRlUGFpclRlbXBsYXRlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgVG9rZW4wTmFtZSBmcm9tIFRva2VuMEFkZHIKaW1wb3J0IFRva2VuMU5hbWUgZnJvbSBUb2tlbjFBZGRyCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKaW1wb3J0IFN3YXBGYWN0b3J5IGZyb20gMHhiMDYzYzE2Y2FjODVkYmQxCnRyYW5zYWN0aW9uKCkgewogICAgcHJlcGFyZSh1c2VyQWNjb3VudDogQXV0aEFjY291bnQpIHsKICAgICAgICBsZXQgZmxvd1ZhdWx0UmVmID0gdXNlckFjY291bnQuYm9ycm93PCZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KSEKICAgICAgICBhc3NlcnQoZmxvd1ZhdWx0UmVmLmJhbGFuY2UgPj0gMC4wMDIsIG1lc3NhZ2U6ICJJbnN1ZmZpY2llbnQgYmFsYW5jZSB0byBjcmVhdGUgcGFpciwgbWluaW11bSBiYWxhbmNlIHJlcXVpcmVtZW50OiAwLjAwMiBmbG93IikKICAgICAgICBsZXQgYWNjb3VudENyZWF0aW9uRmVlVmF1bHQgPC0gZmxvd1ZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogMC4wMDEpCiAgICAgICAgbGV0IHRva2VuMFZhdWx0IDwtIFRva2VuME5hbWUuY3JlYXRlRW1wdHlWYXVsdCgpCiAgICAgICAgbGV0IHRva2VuMVZhdWx0IDwtIFRva2VuMU5hbWUuY3JlYXRlRW1wdHlWYXVsdCgpCiAgICAgICAgU3dhcEZhY3RvcnkuY3JlYXRlUGFpcih0b2tlbjBWYXVsdDogPC10b2tlbjBWYXVsdCwgdG9rZW4xVmF1bHQ6IDwtdG9rZW4xVmF1bHQsIGFjY291bnRDcmVhdGlvbkZlZTogPC1hY2NvdW50Q3JlYXRpb25GZWVWYXVsdCkKICAgIH0KfQ==", + "AddLiquidity": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgQWRkTGlxdWlkaXR5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZjIzM2RjZWU4OGZlMGFiZQppbXBvcnQgU3dhcEZhY3RvcnkgZnJvbSAweGIwNjNjMTZjYWM4NWRiZDEKaW1wb3J0IFN3YXBJbnRlcmZhY2VzIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwQ29uZmlnIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwRXJyb3IgZnJvbSAweGI3OGVmN2FmYTUyZmY5MDYKdHJhbnNhY3Rpb24oCiAgICB0b2tlbjBLZXk6IFN0cmluZywKICAgIHRva2VuMUtleTogU3RyaW5nLAogICAgdG9rZW4wSW5EZXNpcmVkOiBVRml4NjQsCiAgICB0b2tlbjFJbkRlc2lyZWQ6IFVGaXg2NCwKICAgIHRva2VuMEluTWluOiBVRml4NjQsCiAgICB0b2tlbjFJbk1pbjogVUZpeDY0LAogICAgZGVhZGxpbmU6IFVGaXg2NCwKICAgIHRva2VuMFZhdWx0UGF0aDogU3RvcmFnZVBhdGgsCiAgICB0b2tlbjFWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAopIHsKICAgIHByZXBhcmUodXNlckFjY291bnQ6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgYXNzZXJ0KGRlYWRsaW5lID49IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCwgbWVzc2FnZToKICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgbXNnOiAiQWRkTGlxdWlkaXR5OiBleHBpcmVkICIuY29uY2F0KGRlYWRsaW5lLnRvU3RyaW5nKCkpLmNvbmNhdCgiIDwgIikuY29uY2F0KGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcC50b1N0cmluZygpKSwKICAgICAgICAgICAgICAgIGVycjogU3dhcEVycm9yLkVycm9yQ29kZS5FWFBJUkVECiAgICAgICAgICAgICkKICAgICAgICApCiAgICAgICAgbGV0IHBhaXJBZGRyID0gU3dhcEZhY3RvcnkuZ2V0UGFpckFkZHJlc3ModG9rZW4wS2V5OiB0b2tlbjBLZXksIHRva2VuMUtleTogdG9rZW4xS2V5KQogICAgICAgICAgICA/PyBwYW5pYygiQWRkTGlxdWlkaXR5OiBub25leGlzdGVudCBwYWlyICIuY29uY2F0KHRva2VuMEtleSkuY29uY2F0KCIgPC0+ICIpLmNvbmNhdCh0b2tlbjFLZXkpLmNvbmNhdCgiLCBjcmVhdGUgcGFpciBmaXJzdCIpKQogICAgICAgIGxldCBwYWlyUHVibGljUmVmID0gZ2V0QWNjb3VudChwYWlyQWRkcikuZ2V0Q2FwYWJpbGl0eTwme1N3YXBJbnRlcmZhY2VzLlBhaXJQdWJsaWN9PihTd2FwQ29uZmlnLlBhaXJQdWJsaWNQYXRoKS5ib3Jyb3coKSEKICAgICAgICBsZXQgcGFpckluZm8gPSBwYWlyUHVibGljUmVmLmdldFBhaXJJbmZvKCkKICAgICAgICB2YXIgdG9rZW4wSW4gPSAwLjAKICAgICAgICB2YXIgdG9rZW4xSW4gPSAwLjAKICAgICAgICB2YXIgdG9rZW4wUmVzZXJ2ZSA9IDAuMAogICAgICAgIHZhciB0b2tlbjFSZXNlcnZlID0gMC4wCiAgICAgICAgaWYgdG9rZW4wS2V5ID09IChwYWlySW5mb1swXSBhcyEgU3RyaW5nKSB7CiAgICAgICAgICAgIHRva2VuMFJlc2VydmUgPSAocGFpckluZm9bMl0gYXMhIFVGaXg2NCkKICAgICAgICAgICAgdG9rZW4xUmVzZXJ2ZSA9IChwYWlySW5mb1szXSBhcyEgVUZpeDY0KQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRva2VuMFJlc2VydmUgPSAocGFpckluZm9bM10gYXMhIFVGaXg2NCkKICAgICAgICAgICAgdG9rZW4xUmVzZXJ2ZSA9IChwYWlySW5mb1syXSBhcyEgVUZpeDY0KQogICAgICAgIH0KICAgICAgICBpZiB0b2tlbjBSZXNlcnZlID09IDAuMCAmJiB0b2tlbjFSZXNlcnZlID09IDAuMCB7CiAgICAgICAgICAgIHRva2VuMEluID0gdG9rZW4wSW5EZXNpcmVkCiAgICAgICAgICAgIHRva2VuMUluID0gdG9rZW4xSW5EZXNpcmVkCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgdmFyIGFtb3VudDFPcHRpbWFsID0gU3dhcENvbmZpZy5xdW90ZShhbW91bnRBOiB0b2tlbjBJbkRlc2lyZWQsIHJlc2VydmVBOiB0b2tlbjBSZXNlcnZlLCByZXNlcnZlQjogdG9rZW4xUmVzZXJ2ZSkKICAgICAgICAgICAgaWYgKGFtb3VudDFPcHRpbWFsIDw9IHRva2VuMUluRGVzaXJlZCkgewogICAgICAgICAgICAgICAgYXNzZXJ0KGFtb3VudDFPcHRpbWFsID49IHRva2VuMUluTWluLCBtZXNzYWdlOgogICAgICAgICAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgICAgICAgICAgbXNnOiAiU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRSBleHBlY3QgbWluIi5jb25jYXQodG9rZW4xSW5NaW4udG9TdHJpbmcoKSkuY29uY2F0KCIgZ290ICIpLmNvbmNhdChhbW91bnQxT3B0aW1hbC50b1N0cmluZygpKSwKICAgICAgICAgICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB0b2tlbjBJbiA9IHRva2VuMEluRGVzaXJlZAogICAgICAgICAgICAgICAgdG9rZW4xSW4gPSBhbW91bnQxT3B0aW1hbAogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdmFyIGFtb3VudDBPcHRpbWFsID0gU3dhcENvbmZpZy5xdW90ZShhbW91bnRBOiB0b2tlbjFJbkRlc2lyZWQsIHJlc2VydmVBOiB0b2tlbjFSZXNlcnZlLCByZXNlcnZlQjogdG9rZW4wUmVzZXJ2ZSkKICAgICAgICAgICAgICAgIGFzc2VydChhbW91bnQwT3B0aW1hbCA8PSB0b2tlbjBJbkRlc2lyZWQpCiAgICAgICAgICAgICAgICBhc3NlcnQoYW1vdW50ME9wdGltYWwgPj0gdG9rZW4wSW5NaW4sIG1lc3NhZ2U6CiAgICAgICAgICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgICAgICAgICBtc2c6ICJTTElQUEFHRV9PRkZTRVRfVE9PX0xBUkdFIGV4cGVjdCBtaW4iLmNvbmNhdCh0b2tlbjBJbk1pbi50b1N0cmluZygpKS5jb25jYXQoIiBnb3QgIikuY29uY2F0KGFtb3VudDBPcHRpbWFsLnRvU3RyaW5nKCkpLAogICAgICAgICAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHRva2VuMEluID0gYW1vdW50ME9wdGltYWwKICAgICAgICAgICAgICAgIHRva2VuMUluID0gdG9rZW4xSW5EZXNpcmVkCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgbGV0IHRva2VuMFZhdWx0IDwtIHVzZXJBY2NvdW50LmJvcnJvdzwmRnVuZ2libGVUb2tlbi5WYXVsdD4oZnJvbTogdG9rZW4wVmF1bHRQYXRoKSEud2l0aGRyYXcoYW1vdW50OiB0b2tlbjBJbikKICAgICAgICBsZXQgdG9rZW4xVmF1bHQgPC0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbjFWYXVsdFBhdGgpIS53aXRoZHJhdyhhbW91bnQ6IHRva2VuMUluKQogICAgICAgIGxldCBscFRva2VuVmF1bHQgPC0gcGFpclB1YmxpY1JlZi5hZGRMaXF1aWRpdHkoCiAgICAgICAgICAgIHRva2VuQVZhdWx0OiA8LSB0b2tlbjBWYXVsdCwKICAgICAgICAgICAgdG9rZW5CVmF1bHQ6IDwtIHRva2VuMVZhdWx0CiAgICAgICAgKQogICAgICAgIGxldCBscFRva2VuQ29sbGVjdGlvblN0b3JhZ2VQYXRoID0gU3dhcENvbmZpZy5McFRva2VuQ29sbGVjdGlvblN0b3JhZ2VQYXRoCiAgICAgICAgbGV0IGxwVG9rZW5Db2xsZWN0aW9uUHVibGljUGF0aCA9IFN3YXBDb25maWcuTHBUb2tlbkNvbGxlY3Rpb25QdWJsaWNQYXRoCiAgICAgICAgdmFyIGxwVG9rZW5Db2xsZWN0aW9uUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZTd2FwRmFjdG9yeS5McFRva2VuQ29sbGVjdGlvbj4oZnJvbTogbHBUb2tlbkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICBpZiBscFRva2VuQ29sbGVjdGlvblJlZiA9PSBuaWwgewogICAgICAgICAgICBkZXN0cm95IDwtIHVzZXJBY2NvdW50LmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiBscFRva2VuQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICB1c2VyQWNjb3VudC5zYXZlKDwtU3dhcEZhY3RvcnkuY3JlYXRlRW1wdHlMcFRva2VuQ29sbGVjdGlvbigpLCB0bzogbHBUb2tlbkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgdXNlckFjY291bnQubGluazwme1N3YXBJbnRlcmZhY2VzLkxwVG9rZW5Db2xsZWN0aW9uUHVibGljfT4obHBUb2tlbkNvbGxlY3Rpb25QdWJsaWNQYXRoLCB0YXJnZXQ6IGxwVG9rZW5Db2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxwVG9rZW5Db2xsZWN0aW9uUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZTd2FwRmFjdG9yeS5McFRva2VuQ29sbGVjdGlvbj4oZnJvbTogbHBUb2tlbkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgbHBUb2tlbkNvbGxlY3Rpb25SZWYhLmRlcG9zaXQocGFpckFkZHI6IHBhaXJBZGRyLCBscFRva2VuVmF1bHQ6IDwtIGxwVG9rZW5WYXVsdCkKICAgIH0KfQ==", + "RemoveLiquidity": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgUmVtb3ZlTGlxdWlkaXR5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZjIzM2RjZWU4OGZlMGFiZQppbXBvcnQgU3dhcEZhY3RvcnkgZnJvbSAweGIwNjNjMTZjYWM4NWRiZDEKaW1wb3J0IFN3YXBJbnRlcmZhY2VzIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwQ29uZmlnIGZyb20gMHhiNzhlZjdhZmE1MmZmOTA2CmltcG9ydCBTd2FwRXJyb3IgZnJvbSAweGI3OGVmN2FmYTUyZmY5MDYKdHJhbnNhY3Rpb24oCiAgICB0b2tlbjBLZXk6IFN0cmluZywKICAgIHRva2VuMUtleTogU3RyaW5nLAogICAgbHBUb2tlbkFtb3VudDogVUZpeDY0LAogICAgdG9rZW4wT3V0TWluOiBVRml4NjQsCiAgICB0b2tlbjFPdXRNaW46IFVGaXg2NCwKICAgIGRlYWRsaW5lOiBVRml4NjQsCiAgICB0b2tlbjBWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW4xVmF1bHRQYXRoOiBTdG9yYWdlUGF0aCwKKSB7CiAgICBwcmVwYXJlKHVzZXJBY2NvdW50OiBBdXRoQWNjb3VudCkgewogICAgICAgIGFzc2VydChkZWFkbGluZSA+PSBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAsIG1lc3NhZ2U6CiAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgIG1zZzogIlJlbW92ZUxpcXVpZGl0eTogZXhwaXJlZCAiLmNvbmNhdChkZWFkbGluZS50b1N0cmluZygpKS5jb25jYXQoIiA8ICIpLmNvbmNhdChnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAudG9TdHJpbmcoKSksCiAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuRVhQSVJFRAogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgIGxldCBwYWlyQWRkciA9IFN3YXBGYWN0b3J5LmdldFBhaXJBZGRyZXNzKHRva2VuMEtleTogdG9rZW4wS2V5LCB0b2tlbjFLZXk6IHRva2VuMUtleSkKICAgICAgICAgICAgPz8gcGFuaWMoIlJlbW92ZUxpcXVpZGl0eTogbm9uZXhpc3RlbnQgcGFpciAiLmNvbmNhdCh0b2tlbjBLZXkpLmNvbmNhdCgiIDwtPiAiKS5jb25jYXQodG9rZW4xS2V5KS5jb25jYXQoIiwgY3JlYXRlIHBhaXIgZmlyc3QiKSkKICAgICAgICBsZXQgbHBUb2tlbkNvbGxlY3Rpb25SZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JlN3YXBGYWN0b3J5LkxwVG9rZW5Db2xsZWN0aW9uPihmcm9tOiBTd2FwQ29uZmlnLkxwVG9rZW5Db2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJSZW1vdmVMaXF1aWRpdHk6IGNhbm5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIExwVG9rZW5Db2xsZWN0aW9uIikKICAgICAgICBsZXQgbHBUb2tlblJlbW92ZSA8LSBscFRva2VuQ29sbGVjdGlvblJlZi53aXRoZHJhdyhwYWlyQWRkcjogcGFpckFkZHIsIGFtb3VudDogbHBUb2tlbkFtb3VudCkKICAgICAgICBsZXQgdG9rZW5zIDwtIGdldEFjY291bnQocGFpckFkZHIpLmdldENhcGFiaWxpdHk8JntTd2FwSW50ZXJmYWNlcy5QYWlyUHVibGljfT4oU3dhcENvbmZpZy5QYWlyUHVibGljUGF0aCkuYm9ycm93KCkhLnJlbW92ZUxpcXVpZGl0eShscFRva2VuVmF1bHQ6IDwtbHBUb2tlblJlbW92ZSkKICAgICAgICBsZXQgdG9rZW4wVmF1bHQgPC0gdG9rZW5zWzBdLndpdGhkcmF3KGFtb3VudDogdG9rZW5zWzBdLmJhbGFuY2UpCiAgICAgICAgbGV0IHRva2VuMVZhdWx0IDwtIHRva2Vuc1sxXS53aXRoZHJhdyhhbW91bnQ6IHRva2Vuc1sxXS5iYWxhbmNlKQogICAgICAgIGRlc3Ryb3kgdG9rZW5zCiAgICAgICAgYXNzZXJ0KHRva2VuMFZhdWx0LmJhbGFuY2UgPj0gdG9rZW4wT3V0TWluICYmIHRva2VuMVZhdWx0LmJhbGFuY2UgPj0gdG9rZW4xT3V0TWluLCBtZXNzYWdlOgogICAgICAgICAgICBTd2FwRXJyb3IuRXJyb3JFbmNvZGUoCiAgICAgICAgICAgICAgICBtc2c6ICJSZW1vdmVMaXF1aWRpdHk6IElOU1VGRklDSUVOVF9SRU1PVkVfTElRVUlESVRZX09VVF9BTU9VTlQiLAogICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UKICAgICAgICAgICAgKQogICAgICAgICkKICAgICAgICBsZXQgbG9jYWxWYXVsdDBSZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuMFZhdWx0UGF0aCkhCiAgICAgICAgbGV0IGxvY2FsVmF1bHQxUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbjFWYXVsdFBhdGgpIQogICAgICAgIGlmIHRva2VuMFZhdWx0LmlzSW5zdGFuY2UobG9jYWxWYXVsdDBSZWYuZ2V0VHlwZSgpKSB7CiAgICAgICAgICAgIGxvY2FsVmF1bHQwUmVmLmRlcG9zaXQoZnJvbTogPC10b2tlbjBWYXVsdCkKICAgICAgICAgICAgbG9jYWxWYXVsdDFSZWYuZGVwb3NpdChmcm9tOiA8LXRva2VuMVZhdWx0KQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxvY2FsVmF1bHQwUmVmLmRlcG9zaXQoZnJvbTogPC10b2tlbjFWYXVsdCkKICAgICAgICAgICAgbG9jYWxWYXVsdDFSZWYuZGVwb3NpdChmcm9tOiA8LXRva2VuMFZhdWx0KQogICAgICAgIH0KICAgIH0KfQ==", + "SwapExactTokensForTokens": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgU3dhcEV4YWN0VG9rZW5zRm9yVG9rZW5zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgVG9rZW4xTmFtZSBmcm9tIFRva2VuMUFkZHIKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IFN3YXBSb3V0ZXIgZnJvbSAweGE2ODUwNzc2YTk0ZTY1NTEKaW1wb3J0IFN3YXBFcnJvciBmcm9tIDB4Yjc4ZWY3YWZhNTJmZjkwNgp0cmFuc2FjdGlvbigKICAgIHRva2VuS2V5RmxhdFNwbGl0UGF0aDogW1N0cmluZ10sCiAgICBhbW91bnRJblNwbGl0OiBbVUZpeDY0XSwKICAgIGFtb3VudE91dE1pbjogVUZpeDY0LAogICAgZGVhZGxpbmU6IFVGaXg2NCwKICAgIHRva2VuSW5WYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRSZWNlaXZlclBhdGg6IFB1YmxpY1BhdGgsCiAgICB0b2tlbk91dEJhbGFuY2VQYXRoOiBQdWJsaWNQYXRoLAopIHsKICAgIHByZXBhcmUodXNlckFjY291bnQ6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgYXNzZXJ0KGRlYWRsaW5lID49IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCwgbWVzc2FnZToKICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgbXNnOiAiRVhQSVJFRCIsCiAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuRVhQSVJFRAogICAgICAgICAgICApCiAgICAgICAgKQogICAgICAgIGxldCBsZW4gPSB0b2tlbktleUZsYXRTcGxpdFBhdGgubGVuZ3RoCiAgICAgICAgbGV0IHRva2VuSW5LZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbMF0KICAgICAgICBsZXQgdG9rZW5PdXRLZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbbGVuLTFdCiAgICAgICAgdmFyIHRva2VuT3V0QW1vdW50VG90YWwgPSAwLjAKICAgICAgICB2YXIgdG9rZW5PdXRSZWNlaXZlclJlZiA9IHVzZXJBY2NvdW50LmJvcnJvdzwmRnVuZ2libGVUb2tlbi5WYXVsdD4oZnJvbTogdG9rZW5PdXRWYXVsdFBhdGgpCiAgICAgICAgaWYgdG9rZW5PdXRSZWNlaXZlclJlZiA9PSBuaWwgewogICAgICAgICAgICB1c2VyQWNjb3VudC5zYXZlKDwtIFRva2VuMU5hbWUuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdG9rZW5PdXRWYXVsdFBhdGgpCiAgICAgICAgICAgIHVzZXJBY2NvdW50Lmxpbms8JlRva2VuMU5hbWUuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHRva2VuT3V0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgICAgICB1c2VyQWNjb3VudC5saW5rPCZUb2tlbjFOYW1lLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHRva2VuT3V0QmFsYW5jZVBhdGgsIHRhcmdldDogdG9rZW5PdXRWYXVsdFBhdGgpCiAgICAgICAgICAgIHRva2VuT3V0UmVjZWl2ZXJSZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgIH0KICAgICAgICB2YXIgcGF0aEluZGV4ID0gMAogICAgICAgIHZhciBpID0gMAogICAgICAgIHZhciBwYXRoOiBbU3RyaW5nXSA9IFtdCiAgICAgICAgd2hpbGUoaSA8IGxlbikgewogICAgICAgICAgICB2YXIgY3VyVG9rZW5LZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbaV0KICAgICAgICAgICAgcGF0aC5hcHBlbmQoY3VyVG9rZW5LZXkpCiAgICAgICAgICAgIGlmIChjdXJUb2tlbktleSA9PSB0b2tlbk91dEtleSkgewogICAgICAgICAgICAgICAgbGV0IHRva2VuSW5BbW91bnQgPSBhbW91bnRJblNwbGl0W3BhdGhJbmRleF0KICAgICAgICAgICAgICAgIGxldCB0b2tlbkluVmF1bHQgPC0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbkluVmF1bHRQYXRoKSEud2l0aGRyYXcoYW1vdW50OiB0b2tlbkluQW1vdW50KQogICAgICAgICAgICAgICAgbGV0IHRva2VuT3V0VmF1bHQgPC0gU3dhcFJvdXRlci5zd2FwV2l0aFBhdGgodmF1bHRJbjogPC0gdG9rZW5JblZhdWx0LCB0b2tlbktleVBhdGg6IHBhdGgsIGV4YWN0QW1vdW50czogbmlsKQogICAgICAgICAgICAgICAgdG9rZW5PdXRBbW91bnRUb3RhbCA9IHRva2VuT3V0QW1vdW50VG90YWwgKyB0b2tlbk91dFZhdWx0LmJhbGFuY2UKICAgICAgICAgICAgICAgIHRva2VuT3V0UmVjZWl2ZXJSZWYhLmRlcG9zaXQoZnJvbTogPC0gdG9rZW5PdXRWYXVsdCkKICAgICAgICAgICAgICAgIHBhdGggPSBbXQogICAgICAgICAgICAgICAgcGF0aEluZGV4ID0gcGF0aEluZGV4ICsgMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgIH0KICAgICAgICBhc3NlcnQodG9rZW5PdXRBbW91bnRUb3RhbCA+PSBhbW91bnRPdXRNaW4sIG1lc3NhZ2U6CiAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgIG1zZzogIlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UgZXhwZWN0IG1pbiAiLmNvbmNhdChhbW91bnRPdXRNaW4udG9TdHJpbmcoKSkuY29uY2F0KCIgZ290ICIpLmNvbmNhdCh0b2tlbk91dEFtb3VudFRvdGFsLnRvU3RyaW5nKCkpLAogICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLlNMSVBQQUdFX09GRlNFVF9UT09fTEFSR0UKICAgICAgICAgICAgKQogICAgICAgICkKICAgIH0KfQ==", + "SwapTokensForExactTokens": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgU3dhcFRva2Vuc0ZvckV4YWN0VG9rZW5zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgVG9rZW4xTmFtZSBmcm9tIFRva2VuMUFkZHIKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IFN3YXBSb3V0ZXIgZnJvbSAweGE2ODUwNzc2YTk0ZTY1NTEKaW1wb3J0IFN3YXBFcnJvciBmcm9tIDB4Yjc4ZWY3YWZhNTJmZjkwNgp0cmFuc2FjdGlvbigKICAgIHRva2VuS2V5RmxhdFNwbGl0UGF0aDogW1N0cmluZ10sCiAgICBhbW91bnRPdXRTcGxpdDogW1VGaXg2NF0sCiAgICBhbW91bnRJbk1heDogVUZpeDY0LAogICAgZGVhZGxpbmU6IFVGaXg2NCwKICAgIHRva2VuSW5WYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRWYXVsdFBhdGg6IFN0b3JhZ2VQYXRoLAogICAgdG9rZW5PdXRSZWNlaXZlclBhdGg6IFB1YmxpY1BhdGgsCiAgICB0b2tlbk91dEJhbGFuY2VQYXRoOiBQdWJsaWNQYXRoLAopIHsKICAgIHByZXBhcmUodXNlckFjY291bnQ6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgYXNzZXJ0KCBkZWFkbGluZSA+PSBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAsIG1lc3NhZ2U6CiAgICAgICAgICAgIFN3YXBFcnJvci5FcnJvckVuY29kZSgKICAgICAgICAgICAgICAgIG1zZzogIkVYUElSRUQiLAogICAgICAgICAgICAgICAgZXJyOiBTd2FwRXJyb3IuRXJyb3JDb2RlLkVYUElSRUQKICAgICAgICAgICAgKQogICAgICAgICkKICAgICAgICBsZXQgbGVuID0gdG9rZW5LZXlGbGF0U3BsaXRQYXRoLmxlbmd0aAogICAgICAgIGxldCB0b2tlbkluS2V5ID0gdG9rZW5LZXlGbGF0U3BsaXRQYXRoWzBdCiAgICAgICAgbGV0IHRva2VuT3V0S2V5ID0gdG9rZW5LZXlGbGF0U3BsaXRQYXRoW2xlbi0xXQogICAgICAgIHZhciB0b2tlbk91dEFtb3VudFRvdGFsID0gMC4wCiAgICAgICAgdmFyIHRva2VuT3V0UmVjZWl2ZXJSZWYgPSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgIGlmIHRva2VuT3V0UmVjZWl2ZXJSZWYgPT0gbmlsIHsKICAgICAgICAgICAgdXNlckFjY291bnQuc2F2ZSg8LSBUb2tlbjFOYW1lLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgICAgICB1c2VyQWNjb3VudC5saW5rPCZUb2tlbjFOYW1lLlZhdWx0e0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih0b2tlbk91dFJlY2VpdmVyUGF0aCwgdGFyZ2V0OiB0b2tlbk91dFZhdWx0UGF0aCkKICAgICAgICAgICAgdXNlckFjY291bnQubGluazwmVG9rZW4xTmFtZS5WYXVsdHtGdW5naWJsZVRva2VuLkJhbGFuY2V9Pih0b2tlbk91dEJhbGFuY2VQYXRoLCB0YXJnZXQ6IHRva2VuT3V0VmF1bHRQYXRoKQogICAgICAgICAgICB0b2tlbk91dFJlY2VpdmVyUmVmID0gdXNlckFjY291bnQuYm9ycm93PCZGdW5naWJsZVRva2VuLlZhdWx0Pihmcm9tOiB0b2tlbk91dFZhdWx0UGF0aCkKICAgICAgICB9CiAgICAgICAgdmFyIHBhdGhJbmRleCA9IDAKICAgICAgICB2YXIgaSA9IDAKICAgICAgICB2YXIgcGF0aDogW1N0cmluZ10gPSBbXQogICAgICAgIHZhciBhbW91bnRJblRvdGFsID0gMC4wCiAgICAgICAgd2hpbGUoaSA8IGxlbikgewogICAgICAgICAgICB2YXIgY3VyVG9rZW5LZXkgPSB0b2tlbktleUZsYXRTcGxpdFBhdGhbaV0KICAgICAgICAgICAgcGF0aC5hcHBlbmQoY3VyVG9rZW5LZXkpCiAgICAgICAgICAgIGlmIChjdXJUb2tlbktleSA9PSB0b2tlbk91dEtleSkgewogICAgICAgICAgICAgICAgbGV0IHRva2VuT3V0RXhwZWN0QW1vdW50ID0gYW1vdW50T3V0U3BsaXRbcGF0aEluZGV4XQogICAgICAgICAgICAgICAgbGV0IGFtb3VudHMgPSBTd2FwUm91dGVyLmdldEFtb3VudHNJbihhbW91bnRPdXQ6IHRva2VuT3V0RXhwZWN0QW1vdW50LCB0b2tlbktleVBhdGg6IHBhdGgpCiAgICAgICAgICAgICAgICBsZXQgdG9rZW5JbkFtb3VudCA9IGFtb3VudHNbMF0KICAgICAgICAgICAgICAgIGFtb3VudEluVG90YWwgPSBhbW91bnRJblRvdGFsICsgdG9rZW5JbkFtb3VudAogICAgICAgICAgICAgICAgbGV0IHRva2VuSW5WYXVsdCA8LSB1c2VyQWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHRva2VuSW5WYXVsdFBhdGgpIS53aXRoZHJhdyhhbW91bnQ6IHRva2VuSW5BbW91bnQpCiAgICAgICAgICAgICAgICBsZXQgdG9rZW5PdXRWYXVsdCA8LSBTd2FwUm91dGVyLnN3YXBXaXRoUGF0aCh2YXVsdEluOiA8LSB0b2tlbkluVmF1bHQsIHRva2VuS2V5UGF0aDogcGF0aCwgZXhhY3RBbW91bnRzOiBhbW91bnRzKQogICAgICAgICAgICAgICAgdG9rZW5PdXRBbW91bnRUb3RhbCA9IHRva2VuT3V0QW1vdW50VG90YWwgKyB0b2tlbk91dFZhdWx0LmJhbGFuY2UKICAgICAgICAgICAgICAgIHRva2VuT3V0UmVjZWl2ZXJSZWYhLmRlcG9zaXQoZnJvbTogPC0gdG9rZW5PdXRWYXVsdCkKICAgICAgICAgICAgICAgIHBhdGggPSBbXQogICAgICAgICAgICAgICAgcGF0aEluZGV4ID0gcGF0aEluZGV4ICsgMQogICAgICAgICAgICB9CiAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgIH0KICAgICAgICBhc3NlcnQoYW1vdW50SW5Ub3RhbCA8PSBhbW91bnRJbk1heCwgbWVzc2FnZToKICAgICAgICAgICAgU3dhcEVycm9yLkVycm9yRW5jb2RlKAogICAgICAgICAgICAgICAgbXNnOiAiU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRSIsCiAgICAgICAgICAgICAgICBlcnI6IFN3YXBFcnJvci5FcnJvckNvZGUuU0xJUFBBR0VfT0ZGU0VUX1RPT19MQVJHRQogICAgICAgICAgICApCiAgICAgICAgKQogICAgfQp9", + "MintAllTokens": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgTWludEFsbFRva2VucyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IEJVU0QgZnJvbSAweEJVU0QKaW1wb3J0IEZVU0QgZnJvbSAweDNjNTk1OWI1Njg4OTYzOTMKaW1wb3J0IFVTREMgZnJvbSAweFVTREMKaW1wb3J0IFVTRFQgZnJvbSAweFVTRFQKaW1wb3J0IHdGbG93IGZyb20gMHh3RmxvdwppbXBvcnQgQkxUIGZyb20gMHhCTFQKaW1wb3J0IFRlc3RUb2tlbkEgZnJvbSAweFRlc3RUb2tlbkEKaW1wb3J0IFRlc3RUb2tlbkIgZnJvbSAweFRlc3RUb2tlbkIKaW1wb3J0IFRlc3RUb2tlbkMgZnJvbSAweFRlc3RUb2tlbkMKdHJhbnNhY3Rpb24obWludEFtb3VudDogVUZpeDY0KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogQXV0aEFjY291bnQpIHsKICAgICAgICB2YXIgdmF1bHRTdG9yYWdlUGF0aCA9IC9zdG9yYWdlL3Rlc3RfYnVzZFZhdWx0CiAgICAgICAgdmFyIHZhdWx0UmVjZWl2ZXJQYXRoID0gL3B1YmxpYy90ZXN0X2J1c2RSZWNlaXZlcgogICAgICAgIHZhciB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X2J1c2RCYWxhbmNlCiAgICAgICAgdmFyIGJ1c2RWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JkJVU0QuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgYnVzZFZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LUJVU0QuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkJVU0QuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZCVVNELlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgYnVzZFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmQlVTRC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBidXNkVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1CVVNELnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF9mdXNkVmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF9mdXNkUmVjZWl2ZXIKICAgICAgICB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X2Z1c2RCYWxhbmNlCiAgICAgICAgdmFyIGZ1c2RWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JkZVU0QuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgZnVzZFZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LUZVU0QuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkZVU0QuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZGVVNELlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgZnVzZFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmRlVTRC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBmdXNkVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1GVVNELnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF91c2RjVmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF91c2RjUmVjZWl2ZXIKICAgICAgICB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X3VzZGNCYWxhbmNlCiAgICAgICAgdmFyIHVzZGNWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlVTREMuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdXNkY1ZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVVTREMuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlVTREMuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZVU0RDLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdXNkY1ZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVVNEQy5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB1c2RjVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1VU0RDLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF91c2R0VmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF91c2R0UmVjZWl2ZXIKICAgICAgICB2YXVsdEJhbGFuY2VQYXRoID0gL3B1YmxpYy90ZXN0X3VzZHRCYWxhbmNlCiAgICAgICAgdmFyIHVzZHRWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlVTRFQuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdXNkdFZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVVTRFQuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlVTRFQuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZVU0RULlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdXNkdFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVVNEVC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB1c2R0VmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1VU0RULnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdF93Zmxvd1ZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3Rfd2Zsb3dSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3Rfd2Zsb3dCYWxhbmNlCiAgICAgICAgdmFyIHdmbG93VmF1bHRSZWYgPSBzaWduZXIuYm9ycm93PCZ3Rmxvdy5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBpZiB3Zmxvd1ZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LXdGbG93LmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZ3Rmxvdy5WYXVsdHtGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHRSZWNlaXZlclBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JndGbG93LlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgd2Zsb3dWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JndGbG93LlZhdWx0Pihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgIHdmbG93VmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC13Rmxvdy50ZXN0X21pbnRlci5taW50VG9rZW5zKGFtb3VudDogbWludEFtb3VudCkpCiAgICAgICAgdmF1bHRTdG9yYWdlUGF0aCA9IC9zdG9yYWdlL3Rlc3RfYmx0VmF1bHQKICAgICAgICB2YXVsdFJlY2VpdmVyUGF0aCA9IC9wdWJsaWMvdGVzdF9ibHRSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RfYmx0QmFsYW5jZQogICAgICAgIHZhciBiTFRWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JkJMVC5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBpZiBiTFRWYXVsdFJlZiA9PSBuaWwgewogICAgICAgICAgICBkZXN0cm95IDwtIHNpZ25lci5sb2FkPEBBbnlSZXNvdXJjZT4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLnNhdmUoPC1CTFQuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkJMVC5WYXVsdHtGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHRSZWNlaXZlclBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JkJMVC5WYXVsdHtGdW5naWJsZVRva2VuLkJhbGFuY2V9Pih2YXVsdEJhbGFuY2VQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIGJMVFZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmQkxULlZhdWx0Pihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgIGJMVFZhdWx0UmVmIS5kZXBvc2l0KGZyb206IDwtQkxULnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdFRva2VuQVZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkFSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkFCYWxhbmNlCiAgICAgICAgdmFyIHRlc3RUb2tlbkFWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlRlc3RUb2tlbkEuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdGVzdFRva2VuQVZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVRlc3RUb2tlbkEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlRlc3RUb2tlbkEuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZUZXN0VG9rZW5BLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdGVzdFRva2VuQVZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVGVzdFRva2VuQS5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB0ZXN0VG9rZW5BVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1UZXN0VG9rZW5BLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdFRva2VuQlZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkJSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkJCYWxhbmNlCiAgICAgICAgdmFyIHRlc3RUb2tlbkJWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlRlc3RUb2tlbkIuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdGVzdFRva2VuQlZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVRlc3RUb2tlbkIuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlRlc3RUb2tlbkIuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZUZXN0VG9rZW5CLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdGVzdFRva2VuQlZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVGVzdFRva2VuQi5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB0ZXN0VG9rZW5CVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1UZXN0VG9rZW5CLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgICAgICB2YXVsdFN0b3JhZ2VQYXRoID0gL3N0b3JhZ2UvdGVzdFRva2VuQ1ZhdWx0CiAgICAgICAgdmF1bHRSZWNlaXZlclBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkNSZWNlaXZlcgogICAgICAgIHZhdWx0QmFsYW5jZVBhdGggPSAvcHVibGljL3Rlc3RUb2tlbkNCYWxhbmNlCiAgICAgICAgdmFyIHRlc3RUb2tlbkNWYXVsdFJlZiA9IHNpZ25lci5ib3Jyb3c8JlRlc3RUb2tlbkMuVmF1bHQ+KGZyb206IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgaWYgdGVzdFRva2VuQ1ZhdWx0UmVmID09IG5pbCB7CiAgICAgICAgICAgIGRlc3Ryb3kgPC0gc2lnbmVyLmxvYWQ8QEFueVJlc291cmNlPihmcm9tOiB2YXVsdFN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuc2F2ZSg8LVRlc3RUb2tlbkMuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmxpbms8JlRlc3RUb2tlbkMuVmF1bHR7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0UmVjZWl2ZXJQYXRoLCB0YXJnZXQ6IHZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5saW5rPCZUZXN0VG9rZW5DLlZhdWx0e0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0QmFsYW5jZVBhdGgsIHRhcmdldDogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgdGVzdFRva2VuQ1ZhdWx0UmVmID0gc2lnbmVyLmJvcnJvdzwmVGVzdFRva2VuQy5WYXVsdD4oZnJvbTogdmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICB0ZXN0VG9rZW5DVmF1bHRSZWYhLmRlcG9zaXQoZnJvbTogPC1UZXN0VG9rZW5DLnRlc3RfbWludGVyLm1pbnRUb2tlbnMoYW1vdW50OiBtaW50QW1vdW50KSkKICAgIH0KfQo=", "QueryTokenNames": "cHViIGZ1biBtYWluKHF1ZXJ5QWRkcjogQWRkcmVzcyk6IFtTdHJpbmddIHsKICAgIGxldCBuYW1lcyA9IGdldEFjY291bnQocXVlcnlBZGRyKS5jb250cmFjdHMubmFtZXMKICAgIGxldCB0b2tlbk5hbWVzOiBbU3RyaW5nXSA9IFtdCiAgICBsZXQgY29sb246IFVJbnQ4ID0gNTgKICAgIGxldCBzcGFjZTogVUludDggPSAzMgogICAgbGV0IGJyYWNlOiBVSW50OCA9IDEyMwogICAgbGV0IHRva2VuSW5kZW50aWZpZXI6IFtVSW50OF0gPSBbNzAsIDExNywgMTEwLCAxMDMsIDEwNSwgOTgsIDEwOCwgMTAxLCA4NCwgMTExLCAxMDcsIDEwMSwgMTEwXSAKICAgIGxldCBpbmRlbnRpZmllckxlbmd0aCA9IHRva2VuSW5kZW50aWZpZXIubGVuZ3RoCiAgICBmb3IgbmFtZSBpbiBuYW1lcyB7CiAgICAgICAgbGV0IGNvZGUgPSBnZXRBY2NvdW50KHF1ZXJ5QWRkcikuY29udHJhY3RzLmdldChuYW1lOiBuYW1lKSEuY29kZQogICAgICAgIGxldCBjb2RlTGVuZ3RoID0gY29kZS5sZW5ndGgKICAgICAgICB2YXIgaXNUb2tlbiA9IGZhbHNlCiAgICAgICAgdmFyIGkgPSAxMwogICAgICAgIHdoaWxlKGkgPCBjb2RlTGVuZ3RoLTEpIHsKICAgICAgICAgICAgaWYgY29kZVtpXSA9PSBicmFjZSB7CiAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIGNvZGVbaV0gPT0gY29sb24gJiYgY29kZVtpKzFdID09IHNwYWNlIHsKICAgICAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgICAgICAgICAgd2hpbGUoY29kZVtpXSA9PSBzcGFjZSAmJiBpIDwgY29kZUxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdmFyIGogPSAwCiAgICAgICAgICAgICAgICB3aGlsZShqIDwgaW5kZW50aWZpZXJMZW5ndGggJiYgaSA8IGNvZGVMZW5ndGgpIHsKICAgICAgICAgICAgICAgICAgICBpZiBjb2RlW2ldID09IHRva2VuSW5kZW50aWZpZXJbal0gewogICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAxCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiBqID09IGluZGVudGlmaWVyTGVuZ3RoICYmIChjb2RlW2ldPT1zcGFjZSB8fCBjb2RlW2ldPT1icmFjZSkgewogICAgICAgICAgICAgICAgICAgIGlzVG9rZW4gPSB0cnVlCiAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGkgPSBpICsgMQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIGlzVG9rZW4gewogICAgICAgICAgICB0b2tlbk5hbWVzLmFwcGVuZChuYW1lKQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiB0b2tlbk5hbWVzCn0=", "QueryPairArrayAddr": "aW1wb3J0IFN3YXBGYWN0b3J5IGZyb20gMHhiMDYzYzE2Y2FjODVkYmQxCnB1YiBmdW4gbWFpbihmcm9tOiBVSW50NjQsIHRvOiBVSW50NjQpOiBbQWRkcmVzc10gewogICAgcmV0dXJuIFN3YXBGYWN0b3J5LmdldFNsaWNlZFBhaXJzKGZyb206IGZyb20sIHRvOiB0bykKfQo=", "QueryPairArrayInfo": "aW1wb3J0IFN3YXBGYWN0b3J5IGZyb20gMHhiMDYzYzE2Y2FjODVkYmQxCnB1YiBmdW4gbWFpbihmcm9tOiBVSW50NjQsIHRvOiBVSW50NjQpOiBbQW55U3RydWN0XSB7CiAgICByZXR1cm4gU3dhcEZhY3RvcnkuZ2V0U2xpY2VkUGFpckluZm9zKGZyb206IGZyb20sIHRvOiB0bykKfQo=", @@ -41,442 +41,447 @@ ] }, "basic": { - "accountStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBhY2NvdW50U3RvcmFnZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAgYWNjZXNzKGFsbCkgc3RydWN0IFN0b3JhZ2VJbmZvIHsKICAgIGFjY2VzcyhhbGwpICBsZXQgY2FwYWNpdHk6IFVJbnQ2NAogICAgYWNjZXNzKGFsbCkgIGxldCB1c2VkOiBVSW50NjQKICAgIGFjY2VzcyhhbGwpICBsZXQgYXZhaWxhYmxlOiBVSW50NjQKCiAgICBpbml0KGNhcGFjaXR5OiBVSW50NjQsIHVzZWQ6IFVJbnQ2NCwgYXZhaWxhYmxlOiBVSW50NjQpIHsKICAgICAgICBzZWxmLmNhcGFjaXR5ID0gY2FwYWNpdHkKICAgICAgICBzZWxmLnVzZWQgPSB1c2VkCiAgICAgICAgc2VsZi5hdmFpbGFibGUgPSBhdmFpbGFibGUKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IFN0b3JhZ2VJbmZvIHsKICAgIGxldCBhY2N0ID0gZ2V0QWNjb3VudChhZGRyKQogICAgcmV0dXJuIFN0b3JhZ2VJbmZvKGNhcGFjaXR5OiBhY2N0LnN0b3JhZ2UuY2FwYWNpdHksCiAgICAgICAgICAgIHVzZWQ6IGFjY3Quc3RvcmFnZS51c2VkLAogICAgICAgICAgICBhdmFpbGFibGU6IGFjY3Quc3RvcmFnZS5jYXBhY2l0eSAtIGFjY3Quc3RvcmFnZS51c2VkKQp9", - "addContractToAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBhZGRDb250cmFjdFRvQWNjb3VudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICB0cmFuc2FjdGlvbihuYW1lOiBTdHJpbmcsIGNvZGU6IFN0cmluZykgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29udHJhY3RzLCBBZGRDb250cmFjdCkgJkFjY291bnQpIHsKICAgICAgICBzaWduZXIuY29udHJhY3RzLmFkZChuYW1lOiBuYW1lLCBjb2RlOiBjb2RlLnV0ZjgpCiAgICB9Cn0=", - "addKey": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBhZGRLZXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcsIHNpZ25hdHVyZUFsZ29yaXRobTogVUludDgsIGhhc2hBbGdvcml0aG06IFVJbnQ4LCB3ZWlnaHQ6IFVGaXg2NCkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoS2V5cykgJkFjY291bnQpIHsKICAgICAgICBsZXQga2V5ID0gUHVibGljS2V5KAogICAgICAgICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25hdHVyZUFsZ29yaXRobSkhCiAgICAgICAgKQoKICAgICAgICBzaWduZXIua2V5cy5hZGQoCiAgICAgICAgICAgIHB1YmxpY0tleToga2V5LAogICAgICAgICAgICBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3JpdGhtKSEsCiAgICAgICAgICAgIHdlaWdodDogd2VpZ2h0CiAgICAgICAgKQogICAgfQp9", - "addKeyTemp": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBhZGRLZXlUZW1wIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCnRyYW5zYWN0aW9uKHB1YmxpY0tleXM6IFtDcnlwdG8uS2V5TGlzdEVudHJ5XSwgY29udHJhY3RzOiB7U3RyaW5nOiBTdHJpbmd9KSB7CglwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSB8IFN0b3JhZ2UpICZBY2NvdW50KSB7CgoJCWxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKCQkvLyBhZGQgYWxsIHRoZSBrZXlzIHRvIHRoZSBhY2NvdW50CgkJZm9yIGtleSBpbiBwdWJsaWNLZXlzIHsKCQkJYWNjb3VudC5rZXlzLmFkZChwdWJsaWNLZXk6IGtleS5wdWJsaWNLZXksIGhhc2hBbGdvcml0aG06IGtleS5oYXNoQWxnb3JpdGhtLCB3ZWlnaHQ6IGtleS53ZWlnaHQpCgkJfQoJCQoJCS8vIGFkZCBjb250cmFjdHMgaWYgcHJvdmlkZWQKCQlmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewoJCQlhY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQoJCX0KCX0KfQ==", - "createAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjcmVhdGVBY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MTY1NDY1MzM5OTA0MGE2MQppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZjIzM2RjZWU4OGZlMGFiZQoKIHRyYW5zYWN0aW9uKHB1YmxpY0tleXM6IFtDcnlwdG8uS2V5TGlzdEVudHJ5XSwgY29udHJhY3RzOiB7U3RyaW5nOiBTdHJpbmd9LCBmdW5kQW1vdW50OiBVRml4NjQpIHsKICAgIGxldCB0b2tlblJlY2VpdmVyOiAme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9CiAgICBsZXQgc2VudFZhdWx0OiBARnVuZ2libGVUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlIHwgU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgYWNjb3VudCA9IEFjY291bnQocGF5ZXI6IHNpZ25lcikKICAgICAgICBmb3Iga2V5IGluIHB1YmxpY0tleXMgewogICAgICAgICAgICBhY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LnB1YmxpY0tleSwgaGFzaEFsZ29yaXRobToga2V5Lmhhc2hBbGdvcml0aG0sIHdlaWdodDoga2V5LndlaWdodCkKICAgICAgICB9CiAgICAgICAgZm9yIGNvbnRyYWN0IGluIGNvbnRyYWN0cy5rZXlzIHsKICAgICAgICAgICAgYWNjb3VudC5jb250cmFjdHMuYWRkKG5hbWU6IGNvbnRyYWN0LCBjb2RlOiBjb250cmFjdHNbY29udHJhY3RdIS5kZWNvZGVIZXgoKSkKICAgICAgICB9CiAgICAgICAgc2VsZi50b2tlblJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpID8/IHBhbmljKCJVbmFibGUgdG8gYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSIpCiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXInJ3MgVmF1bHQhIikKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGZ1bmRBbW91bnQpCiAgICB9CiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnRva2VuUmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQogfQ==", - "createAccountSdk": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjcmVhdGVBY2NvdW50U2RrIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCnRyYW5zYWN0aW9uKHB1YmxpY0tleTogU3RyaW5nLCBzaWduYXR1cmVBbGdvcml0aG06IFVJbnQ4LCBoYXNoQWxnb3JpdGhtOiBVSW50OCwgd2VpZ2h0OiBVRml4NjQsIGNvbnRyYWN0czoge1N0cmluZzogU3RyaW5nfSkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUgfCBTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKICAgICAgICBsZXQga2V5ID0gUHVibGljS2V5KAogICAgICAgICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25hdHVyZUFsZ29yaXRobSkhCiAgICAgICAgKQoKICAgICAgICBhY2NvdW50LmtleXMuYWRkKAogICAgICAgICAgICBwdWJsaWNLZXk6IGtleSwKICAgICAgICAgICAgaGFzaEFsZ29yaXRobTogSGFzaEFsZ29yaXRobShyYXdWYWx1ZTogaGFzaEFsZ29yaXRobSkhLAogICAgICAgICAgICB3ZWlnaHQ6IHdlaWdodAogICAgICAgICkKCiAgICAgICAgZm9yIGNvbnRyYWN0IGluIGNvbnRyYWN0cy5rZXlzIHsKICAgICAgICAgICAgYWNjb3VudC5jb250cmFjdHMuYWRkKG5hbWU6IGNvbnRyYWN0LCBjb2RlOiBjb250cmFjdHNbY29udHJhY3RdIS5kZWNvZGVIZXgoKSkKICAgICAgICB9CiAgICB9Cn0=", - "getAccountInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2NvdW50SW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBhY2Nlc3MoYWxsKSBzdHJ1Y3QgUmVzdWx0IHsKICBhY2Nlc3MoYWxsKSBsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpIGxldCBiYWxhbmNlOiBVRml4NjQKICBhY2Nlc3MoYWxsKSBsZXQgYXZhaWxhYmxlQmFsYW5jZTogVUZpeDY0CiAgYWNjZXNzKGFsbCkgbGV0IHN0b3JhZ2VVc2VkOiBVSW50NjQKICBhY2Nlc3MoYWxsKSBsZXQgc3RvcmFnZUNhcGFjaXR5OiBVSW50NjQKCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsCiAgICBiYWxhbmNlOiBVRml4NjQsCiAgICBhdmFpbGFibGVCYWxhbmNlOiBVRml4NjQsCiAgICBzdG9yYWdlVXNlZDogVUludDY0LAogICAgc3RvcmFnZUNhcGFjaXR5OiBVSW50NjQKICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICAgIHNlbGYuYXZhaWxhYmxlQmFsYW5jZSA9IGF2YWlsYWJsZUJhbGFuY2UKICAgIHNlbGYuc3RvcmFnZVVzZWQgPSBzdG9yYWdlVXNlZAogICAgc2VsZi5zdG9yYWdlQ2FwYWNpdHkgPSBzdG9yYWdlQ2FwYWNpdHkKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBSZXN1bHQgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHJldHVybiBSZXN1bHQoCiAgICBhZGRyZXNzOiBhY2NvdW50LmFkZHJlc3MsCiAgICBiYWxhbmNlOiBhY2NvdW50LmJhbGFuY2UsCiAgICBhdmFpbGFibGVCYWxhbmNlOiBhY2NvdW50LmF2YWlsYWJsZUJhbGFuY2UsCiAgICBzdG9yYWdlVXNlZDogYWNjb3VudC5zdG9yYWdlLnVzZWQsCiAgICBzdG9yYWdlQ2FwYWNpdHk6IGFjY291bnQuc3RvcmFnZS5jYXBhY2l0eQogICkKfQ==", - "getAccountMinFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2NvdW50TWluRmxvdyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICByZXR1cm4gYWNjb3VudC5iYWxhbmNlIC0gYWNjb3VudC5hdmFpbGFibGVCYWxhbmNlCn0=", - "getAccountTotalFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2NvdW50VG90YWxGbG93QmFsYW5jZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2Ci8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCB1bmxvY2tlZFZhdWx0ID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvZmxvd1Rva2VuQmFsYW5jZSkhCiAgICAgIC5ib3Jyb3coKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IEJhbGFuY2UgcmVmZXJlbmNlIHRvIHRoZSBWYXVsdCIpCiAgICBsZXQgdW5sb2NrZWRCYWxhbmNlID0gdW5sb2NrZWRWYXVsdC5iYWxhbmNlCiAgICAgICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0CiAgICAgIDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgcmV0dXJuIHVubG9ja2VkQmFsYW5jZQogICAgfQogICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIAogICAgcmV0dXJuIGxvY2tlZEJhbGFuY2UgKyB1bmxvY2tlZEJhbGFuY2UKfQ==", - "getAccountTotalLockedFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2NvdW50VG90YWxMb2NrZWRGbG93QmFsYW5jZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCgovLyBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZWU4Mjg1NmJmMjBlMmFhNgovLyBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgwYWU1M2NiNmUzZjQyYTc5Ci8vIGltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweGY4ZDZlMDU4NmIwYTIwYzcKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBVRml4NjQgewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgbGV0IGxvY2tlZEFjY291bnRJbmZvQ2FwID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmdldAogICAgICA8JkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcj4KICAgICAgKExvY2tlZFRva2Vucy5Mb2NrZWRBY2NvdW50SW5mb1B1YmxpY1BhdGgpCiAgICBpZiBsb2NrZWRBY2NvdW50SW5mb0NhcCA9PSBuaWwgfHwgIShsb2NrZWRBY2NvdW50SW5mb0NhcCEuY2hlY2soKSkgewogICAgICAgIHJldHVybiBVRml4NjQoMCkKICAgIH0KICAgIAogICAgbGV0IGxvY2tlZEFjY291bnRJbmZvUmVmID0gbG9ja2VkQWNjb3VudEluZm9DYXAhLmJvcnJvdygpIQogICAgbGV0IGxvY2tlZEJhbGFuY2UgPSBsb2NrZWRBY2NvdW50SW5mb1JlZi5nZXRMb2NrZWRBY2NvdW50QmFsYW5jZSgpCiAgICAKICAgIHJldHVybiBsb2NrZWRCYWxhbmNlCn0=", - "getAccountTotalUnlockedFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2NvdW50VG90YWxVbmxvY2tlZEZsb3dCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIC8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCi8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2CmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICBsZXQgdW5sb2NrZWRWYXVsdCA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5nZXQ8JkZsb3dUb2tlbi5WYXVsdD4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKSEKICAgICAgLmJvcnJvdygpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQmFsYW5jZSByZWZlcmVuY2UgdG8gdGhlIFZhdWx0IikKICAgIGxldCB1bmxvY2tlZEJhbGFuY2UgPSB1bmxvY2tlZFZhdWx0LmJhbGFuY2UKCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0CiAgICAgIDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgcmV0dXJuIHVubG9ja2VkQmFsYW5jZQogICAgfQogICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIGxldCBsb2NrZWRCYWxhbmNlVW5sb2NrZWQgPSBsb2NrZWRBY2NvdW50SW5mb1JlZi5nZXRVbmxvY2tMaW1pdCgpCgogICAgaWYgbG9ja2VkQmFsYW5jZSA9PSBVRml4NjQoMCkgewogICAgICAgIHJldHVybiB1bmxvY2tlZEJhbGFuY2UKICAgIH0KCiAgICBpZiBsb2NrZWRCYWxhbmNlVW5sb2NrZWQgPiBsb2NrZWRCYWxhbmNlIHsKICAgICAgICByZXR1cm4gdW5sb2NrZWRCYWxhbmNlICsgbG9ja2VkQmFsYW5jZQogICAgfQoKICAgIHJldHVybiBsb2NrZWRCYWxhbmNlVW5sb2NrZWQgKyB1bmxvY2tlZEJhbGFuY2UKfQ==", - "getFindAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRGaW5kQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRklORCBmcm9tIDB4RmluZAovL0NoZWNrIHRoZSBzdGF0dXMgb2YgYSBmaW4gdXNlcgphY2Nlc3MoYWxsKSBmdW4gbWFpbihuYW1lOiBTdHJpbmcpIDogQWRkcmVzcz8gewogICAgbGV0IHN0YXR1cyA9IEZJTkQuc3RhdHVzKG5hbWUpCiAgICByZXR1cm4gc3RhdHVzLm93bmVyCn0=", - "getFindDomainByAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRGaW5kRG9tYWluQnlBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGSU5EIGZyb20gMHhGaW5kCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IFN0cmluZz97CiAgICByZXR1cm4gRklORC5yZXZlcnNlTG9va3VwKGFkZHJlc3MpCn0=", - "getFlownsAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRGbG93bnNBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93bnMgZnJvbSAweEZsb3ducwppbXBvcnQgRG9tYWlucyBmcm9tIDB4RG9tYWlucwoKYWNjZXNzKGFsbCkgZnVuIG1haW4obmFtZTogU3RyaW5nLCByb290OiBTdHJpbmcpIDogQWRkcmVzcz8gewogICAgbGV0IHByZWZpeCA9ICIweCIKICAgIGxldCByb290SGFoc2ggPSBGbG93bnMuaGFzaChub2RlOiAiIiwgbGFibGU6IHJvb3QpCiAgICBsZXQgbmFtZWhhc2ggPSBwcmVmaXguY29uY2F0KEZsb3ducy5oYXNoKG5vZGU6IHJvb3RIYWhzaCwgbGFibGU6IG5hbWUpKQogICAgdmFyIGFkZHJlc3MgPSBEb21haW5zLmdldFJlY29yZHMobmFtZWhhc2gpCiAgICByZXR1cm4gYWRkcmVzcwp9", - "getFlownsDomainsByAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRGbG93bnNEb21haW5zQnlBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBEb21haW5zIGZyb20gMHhEb21haW5zCi8vIGFkZHJlc3M6IEZsb3cgYWRkcmVzcwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtEb21haW5zLkRvbWFpbkRldGFpbF0gewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICBsZXQgY29sbGVjdGlvbkNhcCA9IGFjY291bnQuZ2V0Q2FwYWJpbGl0eTwme0RvbWFpbnMuQ29sbGVjdGlvblB1YmxpY30+KERvbWFpbnMuQ29sbGVjdGlvblB1YmxpY1BhdGgpCiAgICBsZXQgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25DYXAuYm9ycm93KCkhCiAgICBsZXQgZG9tYWluczpbRG9tYWlucy5Eb21haW5EZXRhaWxdID0gW10KICAgIGxldCBpZHMgPSBjb2xsZWN0aW9uLmdldElEcygpCgogICAgZm9yIGlkIGluIGlkcyB7CiAgICAgICAgbGV0IGRvbWFpbiA9IGNvbGxlY3Rpb24uYm9ycm93RG9tYWluKGlkOiBpZCkKICAgICAgICBsZXQgZGV0YWlsID0gZG9tYWluLmdldERldGFpbCgpCiAgICAgICAgZG9tYWlucy5hcHBlbmQoZGV0YWlsKQogICAgfQoKICAgIHJldHVybiBkb21haW5zCn0=", - "getStorageInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRTdG9yYWdlSW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAgYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IHtTdHJpbmc6IFVJbnQ2NH0gewogICAgbGV0IGFjY3QgPSBnZXRBY2NvdW50KGFkZHIpCiAgICBsZXQgcmV0OiB7U3RyaW5nOiBVSW50NjR9ID0ge30KICAgIHJldFsiY2FwYWNpdHkiXSA9IGFjY3Quc3RvcmFnZS5jYXBhY2l0eQogICAgcmV0WyJ1c2VkIl0gPSBhY2N0LnN0b3JhZ2UudXNlZAogICAgcmV0WyJhdmFpbGFibGUiXSA9IGFjY3Quc3RvcmFnZS5jYXBhY2l0eSAtICBhY2N0LnN0b3JhZ2UudXNlZAogICAgcmV0dXJuIHJldAp9", - "getTokenBalanceWithModel": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRUb2tlbkJhbGFuY2VXaXRoTW9kZWwgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9Pig8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBCYWxhbmNlIGNhcGFiaWxpdHkiKQoKICAgIHJldHVybiB2YXVsdFJlZi5iYWxhbmNlCn0=", - "isKeyHasFullAuth": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBpc0tleUhhc0Z1bGxBdXRoIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwdWJsaWNLZXk6IFN0cmluZyk6IEJvb2wgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHZhciBmbGFnID0gZmFsc2UKICBmdW4gYWNjb3VudEZuKGFjY291bnRLZXk6IEFjY291bnRLZXkpOiBCb29sIHsKICAgIGxldCBrZXkgPSBTdHJpbmcuZW5jb2RlSGV4KGFjY291bnRLZXkucHVibGljS2V5LnB1YmxpY0tleSkKICAgIGlmIHB1YmxpY0tleSA9PSBrZXkgewogICAgICBmbGFnID0gYWNjb3VudEtleS53ZWlnaHQgPj0gVUZpeDY0KDEwMDApICYmICFhY2NvdW50S2V5LmlzUmV2b2tlZAogICAgfQogICAgcmV0dXJuIGZhbHNlCiAgfQogIGFjY291bnQua2V5cy5mb3JFYWNoKGFjY291bnRGbikKCiAgcmV0dXJuIGZsYWcKfQo=", - "isKeysHasFullAuth": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBpc0tleXNIYXNGdWxsQXV0aCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcHVibGljS2V5czogW1N0cmluZ10pOiBCb29sIHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICB2YXIgd2VpZ2h0OiBVRml4NjQgPSAwLjAKICBmdW4gYWNjb3VudEZuKGFjY291bnRLZXk6IEFjY291bnRLZXkpOiBCb29sIHsKICAgIGxldCBrZXkgPSBTdHJpbmcuZW5jb2RlSGV4KGFjY291bnRLZXkucHVibGljS2V5LnB1YmxpY0tleSkKICAgIGlmIHB1YmxpY0tleXMuY29udGFpbnMoa2V5KSAmJiAhYWNjb3VudEtleS5pc1Jldm9rZWQgewogICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBhY2NvdW50S2V5LndlaWdodCAKICAgIH0KICAgIHJldHVybiBmYWxzZQogIH0KICBhY2NvdW50LmtleXMuZm9yRWFjaChhY2NvdW50Rm4pCgogIHJldHVybiB3ZWlnaHQgPj0gVUZpeDY0KDEwMDApCn0K", - "isLockedFlowEnable": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBpc0xvY2tlZEZsb3dFbmFibGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogQm9vbCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIHJldHVybiBhY2NvdW50LmNhcGFiaWxpdGllcy5leGlzdHMoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKfQ==", - "isTokenStorageEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBpc1Rva2VuU3RvcmFnZUVuYWJsZWQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAKICAgIGxldCByZWNlaXZlciA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KQogICAgbGV0IGJhbGFuY2UgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KQoKICAgIHJldHVybiByZWNlaXZlciAmJiBiYWxhbmNlCn0=", - "queryCustomFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBxdWVyeUN1c3RvbUZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cwoKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgY29udHJhY3ROYW1lOiBTdHJpbmcpOiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YSB7CiAgICAKICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KGNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IGNvbnRyYWN0TmFtZSkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKICAgIHJldHVybiB2YXVsdERhdGEKfQ==", - "queryCustomNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBxdWVyeUN1c3RvbU5GVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhNZXRhZGF0YVZpZXdzCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihjb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIGNvbnRyYWN0TmFtZTogU3RyaW5nKTogTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YSB7CgogICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQoY29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogY29udHJhY3ROYW1lKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAKICAgIHJldHVybiBjb2xsZWN0aW9uRGF0YQp9", - "queryFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBxdWVyeUZsb3dCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvZmxvd1Rva2VuQmFsYW5jZSkKICAgID8/IG5pbAoKICAgIAogICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgIH0KICAgIAogICAgcmV0dXJuIDAuMAp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyczogW0FkZHJlc3NdKTogW1VGaXg2NF0gewogICAgbGV0IGJhbHM6IFtVRml4NjRdID0gW10KCiAgICBmb3IgYWRkciBpbiBhZGRycyB7CiAgICAgICAgbGV0IGJhbCA9IGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyKQogICAgICAgIGJhbHMuYXBwZW5kKGJhbCkKICAgIH0KICAgIAogICAgcmV0dXJuIGJhbHMKfQ==", - "removeAccountKeyByIndex": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICByZW1vdmVBY2NvdW50S2V5QnlJbmRleCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICB0cmFuc2FjdGlvbihrZXlJbmRleDogSW50KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIHNpZ25lci5rZXlzLnJldm9rZShrZXlJbmRleDoga2V5SW5kZXgpCiAgICB9Cn0=", - "removeContractFromAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICByZW1vdmVDb250cmFjdEZyb21BY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIHRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZykgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoUmVtb3ZlQ29udHJhY3QpICZBY2NvdW50KSB7CiAgICAgICAgc2lnbmVyLmNvbnRyYWN0cy5yZW1vdmUobmFtZTogbmFtZSkKICAgIH0KfQ==", - "revokeKey": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICByZXZva2VLZXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgdHJhbnNhY3Rpb24oaW5kZXg6IEludCkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoS2V5cykgJkFjY291bnQpIHsKICAgICAgICAvLyBHZXQgYSBrZXkgZnJvbSBhbiBhdXRoIGFjY291bnQuCiAgICAgICAgbGV0IGtleUEgPSBzaWduZXIua2V5cy5yZXZva2Uoa2V5SW5kZXg6IGluZGV4KQogICAgfQp9", - "test": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0ZXN0IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHg5YTA3NjZkOTNiNjYwOGI3CmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDdlNjBkZjA0MmE5YzA4NjgKCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKCiAgICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVyZWQKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnRBY2NvdW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnRBY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikhCiAgICAgICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9", - "updateContractOfAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB1cGRhdGVDb250cmFjdE9mQWNjb3VudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICB0cmFuc2FjdGlvbihuYW1lOiBTdHJpbmcsIGNvZGU6IFN0cmluZykgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoVXBkYXRlQ29udHJhY3QpICZBY2NvdW50KSB7CiAgICAgICAgc2lnbmVyLmNvbnRyYWN0cy51cGRhdGUobmFtZTogbmFtZSwgY29kZTogY29kZS51dGY4KQogICAgfQp9", - "verifyUserSignature": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB2ZXJpZnlVc2VyU2lnbmF0dXJlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCmFjY2VzcyhhbGwpIGZ1biBtYWluKAogICAgbWVzc2FnZTogU3RyaW5nLAogICAgcmF3UHVibGljS2V5czogW1N0cmluZ10sCiAgICB3ZWlnaHRzOiBbVUZpeDY0XSwKICAgIHNpZ25BbGdvczogW1VJbnQ4XSwKICAgIGhhc2hBbGdvczogW1VJbnQ4XSwKICAgIHNpZ25hdHVyZXM6IFtTdHJpbmddLAopOiBCb29sIHsKCiAgICBsZXQga2V5TGlzdCA9IENyeXB0by5LZXlMaXN0KCkKCiAgICB2YXIgaSA9IDAKICAgIGZvciByYXdQdWJsaWNLZXkgaW4gcmF3UHVibGljS2V5cyB7CiAgICBrZXlMaXN0LmFkZCgKICAgICAgICBQdWJsaWNLZXkoCiAgICAgICAgcHVibGljS2V5OiByYXdQdWJsaWNLZXkuZGVjb2RlSGV4KCksCiAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25BbGdvc1tpXSkhCiAgICAgICAgKSwKICAgICAgICBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3NbaV0pISwKICAgICAgICB3ZWlnaHQ6IHdlaWdodHNbaV0sCiAgICApCiAgICBpID0gaSArIDEKICAgIH0KCiAgICBsZXQgc2lnbmF0dXJlU2V0OiBbQ3J5cHRvLktleUxpc3RTaWduYXR1cmVdID0gW10KCiAgICB2YXIgaiA9IDAKICAgIGZvciBzaWduYXR1cmUgaW4gc2lnbmF0dXJlcyB7CiAgICBzaWduYXR1cmVTZXQuYXBwZW5kKAogICAgICAgIENyeXB0by5LZXlMaXN0U2lnbmF0dXJlKAogICAgICAgICAgICBrZXlJbmRleDogaiwKICAgICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUuZGVjb2RlSGV4KCkKICAgICAgICApCiAgICApCiAgICAgICAgaiA9IGogKyAxCiAgICB9CgogICAgbGV0IHNpZ25lZERhdGEgPSBtZXNzYWdlLmRlY29kZUhleCgpCgogICAgcmV0dXJuIGtleUxpc3QudmVyaWZ5KAogICAgICAgIHNpZ25hdHVyZVNldDogc2lnbmF0dXJlU2V0LAogICAgICAgIHNpZ25lZERhdGE6IHNpZ25lZERhdGEsCiAgICAgICAgZG9tYWluU2VwYXJhdGlvblRhZzogIkZMT1ctVjAuMC11c2VyIgogICAgKQp9", - "withdrawAllUnlockedFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB3aXRoZHJhd0FsbFVubG9ja2VkRmxvdyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2Ci8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKdHJhbnNhY3Rpb24oKSB7CgogICAgbGV0IGhvbGRlclJlZjogYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyCiAgICBsZXQgdmF1bHRSZWY6ICZGbG93VG9rZW4uVmF1bHQKICAgIGxldCBhbW91bnQ6IFVGaXg2NAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgICBzZWxmLmhvbGRlclJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBUb2tlbkhvbGRlciIpCgoJCQkJc2VsZi52YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgZmxvdyB0b2tlbiB2YXVsdCByZWYiKQoKICAgICAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBzaWduZXIKICAgICAgICAuY2FwYWJpbGl0aWVzLmdldDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAgIChMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQoKICAgICAgICBpZiBsb2NrZWRBY2NvdW50SW5mb0NhcCA9PSBuaWwgfHwgIShsb2NrZWRBY2NvdW50SW5mb0NhcCEuY2hlY2soKSkgewogICAgICAgICAgICBwYW5pYygiQ291bGQgbm90IGdldCBmbG93IGxvY2tlZCB0b2tlbiB2YXVsdCIpCiAgICAgICAgfQoKICAgICAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICAgICAgbGV0IGxvY2tlZEJhbGFuY2UgPSBsb2NrZWRBY2NvdW50SW5mb1JlZi5nZXRMb2NrZWRBY2NvdW50QmFsYW5jZSgpCiAgICAgICAgbGV0IGxvY2tlZEJhbGFuY2VVbmxvY2tlZCA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldFVubG9ja0xpbWl0KCkKCiAgICAgICAgLy8gaWYgbG9ja2VkQmFsYW5jZSA9PSBVRml4NjQoMCkgewogICAgICAgIC8vICAgICBwYW5pYygiTm90IGVub3VnaCBhbW91bnQgdG8gd2l0aGRyYXciKQogICAgICAgIC8vIH0KCiAgICAgICAgc2VsZi5hbW91bnQgPSBsb2NrZWRCYWxhbmNlVW5sb2NrZWQKICAgIAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYudmF1bHRSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuaG9sZGVyUmVmLndpdGhkcmF3KGFtb3VudDogc2VsZi5hbW91bnQpKQogICAgfQp9", - "withdrawUnlockedFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB3aXRoZHJhd1VubG9ja2VkRmxvdyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAvLyBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgovLyBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZWU4Mjg1NmJmMjBlMmFhNgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgwYWU1M2NiNmUzZjQyYTc5CmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweGY4ZDZlMDU4NmIwYTIwYzcKCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0KSB7CgogICAgbGV0IGhvbGRlclJlZjogYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAgJkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcgogICAgbGV0IHZhdWx0UmVmOiAmRmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5ob2xkZXJSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPihmcm9tOiBMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gVG9rZW5Ib2xkZXIiKQoKICAgICAgICBzZWxmLnZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBmbG93IHRva2VuIHZhdWx0IHJlZiIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi52YXVsdFJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5ob2xkZXJSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpKQogICAgfQp9" + "accountStorage": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYWNjb3VudFN0b3JhZ2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiBhY2Nlc3MoYWxsKSBzdHJ1Y3QgU3RvcmFnZUluZm8gewogICAgYWNjZXNzKGFsbCkgIGxldCBjYXBhY2l0eTogVUludDY0CiAgICBhY2Nlc3MoYWxsKSAgbGV0IHVzZWQ6IFVJbnQ2NAogICAgYWNjZXNzKGFsbCkgIGxldCBhdmFpbGFibGU6IFVJbnQ2NAoKICAgIGluaXQoY2FwYWNpdHk6IFVJbnQ2NCwgdXNlZDogVUludDY0LCBhdmFpbGFibGU6IFVJbnQ2NCkgewogICAgICAgIHNlbGYuY2FwYWNpdHkgPSBjYXBhY2l0eQogICAgICAgIHNlbGYudXNlZCA9IHVzZWQKICAgICAgICBzZWxmLmF2YWlsYWJsZSA9IGF2YWlsYWJsZQogICAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzKTogU3RvcmFnZUluZm8gewogICAgbGV0IGFjY3QgPSBnZXRBY2NvdW50KGFkZHIpCiAgICByZXR1cm4gU3RvcmFnZUluZm8oY2FwYWNpdHk6IGFjY3Quc3RvcmFnZS5jYXBhY2l0eSwKICAgICAgICAgICAgdXNlZDogYWNjdC5zdG9yYWdlLnVzZWQsCiAgICAgICAgICAgIGF2YWlsYWJsZTogYWNjdC5zdG9yYWdlLmNhcGFjaXR5IC0gYWNjdC5zdG9yYWdlLnVzZWQpCn0=", + "addContractToAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYWRkQ29udHJhY3RUb0FjY291bnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZywgY29kZTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb250cmFjdHMsIEFkZENvbnRyYWN0KSAmQWNjb3VudCkgewogICAgICAgIHNpZ25lci5jb250cmFjdHMuYWRkKG5hbWU6IG5hbWUsIGNvZGU6IGNvZGUudXRmOCkKICAgIH0KfQ==", + "addKey": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYWRkS2V5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgQ3J5cHRvCgp0cmFuc2FjdGlvbihwdWJsaWNLZXk6IFN0cmluZywgc2lnbmF0dXJlQWxnb3JpdGhtOiBVSW50OCwgaGFzaEFsZ29yaXRobTogVUludDgsIHdlaWdodDogVUZpeDY0KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBrZXkgPSBQdWJsaWNLZXkoCiAgICAgICAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LmRlY29kZUhleCgpLAogICAgICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogc2lnbmF0dXJlQWxnb3JpdGhtKSEKICAgICAgICApCgogICAgICAgIHNpZ25lci5rZXlzLmFkZCgKICAgICAgICAgICAgcHVibGljS2V5OiBrZXksCiAgICAgICAgICAgIGhhc2hBbGdvcml0aG06IEhhc2hBbGdvcml0aG0ocmF3VmFsdWU6IGhhc2hBbGdvcml0aG0pISwKICAgICAgICAgICAgd2VpZ2h0OiB3ZWlnaHQKICAgICAgICApCiAgICB9Cn0=", + "addKeyTemp": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYWRkS2V5VGVtcCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5czogW0NyeXB0by5LZXlMaXN0RW50cnldLCBjb250cmFjdHM6IHtTdHJpbmc6IFN0cmluZ30pIHsKCXByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlIHwgU3RvcmFnZSkgJkFjY291bnQpIHsKCgkJbGV0IGFjY291bnQgPSBBY2NvdW50KHBheWVyOiBzaWduZXIpCgoJCS8vIGFkZCBhbGwgdGhlIGtleXMgdG8gdGhlIGFjY291bnQKCQlmb3Iga2V5IGluIHB1YmxpY0tleXMgewoJCQlhY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LnB1YmxpY0tleSwgaGFzaEFsZ29yaXRobToga2V5Lmhhc2hBbGdvcml0aG0sIHdlaWdodDoga2V5LndlaWdodCkKCQl9CgkJCgkJLy8gYWRkIGNvbnRyYWN0cyBpZiBwcm92aWRlZAoJCWZvciBjb250cmFjdCBpbiBjb250cmFjdHMua2V5cyB7CgkJCWFjY291bnQuY29udHJhY3RzLmFkZChuYW1lOiBjb250cmFjdCwgY29kZTogY29udHJhY3RzW2NvbnRyYWN0XSEuZGVjb2RlSGV4KCkpCgkJfQoJfQp9", + "createAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY3JlYXRlQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhmMjMzZGNlZTg4ZmUwYWJlCgogdHJhbnNhY3Rpb24ocHVibGljS2V5czogW0NyeXB0by5LZXlMaXN0RW50cnldLCBjb250cmFjdHM6IHtTdHJpbmc6IFN0cmluZ30sIGZ1bmRBbW91bnQ6IFVGaXg2NCkgewogICAgbGV0IHRva2VuUmVjZWl2ZXI6ICZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzZW50VmF1bHQ6IEBGdW5naWJsZVRva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUgfCBTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQogICAgICAgIGZvciBrZXkgaW4gcHVibGljS2V5cyB7CiAgICAgICAgICAgIGFjY291bnQua2V5cy5hZGQocHVibGljS2V5OiBrZXkucHVibGljS2V5LCBoYXNoQWxnb3JpdGhtOiBrZXkuaGFzaEFsZ29yaXRobSwgd2VpZ2h0OiBrZXkud2VpZ2h0KQogICAgICAgIH0KICAgICAgICBmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewogICAgICAgICAgICBhY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQogICAgICAgIH0KICAgICAgICBzZWxmLnRva2VuUmVjZWl2ZXIgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikgPz8gcGFuaWMoIlVuYWJsZSB0byBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIikKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcicncyBWYXVsdCEiKQogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogZnVuZEFtb3VudCkKICAgIH0KICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYudG9rZW5SZWNlaXZlci5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9CiB9", + "createAccountSdk": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY3JlYXRlQWNjb3VudFNkayAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcsIHNpZ25hdHVyZUFsZ29yaXRobTogVUludDgsIGhhc2hBbGdvcml0aG06IFVJbnQ4LCB3ZWlnaHQ6IFVGaXg2NCwgY29udHJhY3RzOiB7U3RyaW5nOiBTdHJpbmd9KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSB8IFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGFjY291bnQgPSBBY2NvdW50KHBheWVyOiBzaWduZXIpCgogICAgICAgIGxldCBrZXkgPSBQdWJsaWNLZXkoCiAgICAgICAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LmRlY29kZUhleCgpLAogICAgICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogc2lnbmF0dXJlQWxnb3JpdGhtKSEKICAgICAgICApCgogICAgICAgIGFjY291bnQua2V5cy5hZGQoCiAgICAgICAgICAgIHB1YmxpY0tleToga2V5LAogICAgICAgICAgICBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3JpdGhtKSEsCiAgICAgICAgICAgIHdlaWdodDogd2VpZ2h0CiAgICAgICAgKQoKICAgICAgICBmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewogICAgICAgICAgICBhY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQogICAgICAgIH0KICAgIH0KfQ==", + "getAccountInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjb3VudEluZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmFjY2VzcyhhbGwpIHN0cnVjdCBSZXN1bHQgewogIGFjY2VzcyhhbGwpIGxldCBhZGRyZXNzOiBBZGRyZXNzCiAgYWNjZXNzKGFsbCkgbGV0IGJhbGFuY2U6IFVGaXg2NAogIGFjY2VzcyhhbGwpIGxldCBhdmFpbGFibGVCYWxhbmNlOiBVRml4NjQKICBhY2Nlc3MoYWxsKSBsZXQgc3RvcmFnZVVzZWQ6IFVJbnQ2NAogIGFjY2VzcyhhbGwpIGxldCBzdG9yYWdlQ2FwYWNpdHk6IFVJbnQ2NAogIGFjY2VzcyhhbGwpIGxldCBzdG9yYWdlRmxvdzogVUZpeDY0CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLAogICAgYmFsYW5jZTogVUZpeDY0LAogICAgYXZhaWxhYmxlQmFsYW5jZTogVUZpeDY0LAogICAgc3RvcmFnZVVzZWQ6IFVJbnQ2NCwKICAgIHN0b3JhZ2VDYXBhY2l0eTogVUludDY0LAogICAgc3RvcmFnZUZsb3c6IFVGaXg2NCwKICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICAgIHNlbGYuYXZhaWxhYmxlQmFsYW5jZSA9IGF2YWlsYWJsZUJhbGFuY2UKICAgIHNlbGYuc3RvcmFnZVVzZWQgPSBzdG9yYWdlVXNlZAogICAgc2VsZi5zdG9yYWdlQ2FwYWNpdHkgPSBzdG9yYWdlQ2FwYWNpdHkKICAgIHNlbGYuc3RvcmFnZUZsb3cgPSBzdG9yYWdlRmxvdwogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFJlc3VsdCB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgcmV0dXJuIFJlc3VsdCgKICAgIGFkZHJlc3M6IGFjY291bnQuYWRkcmVzcywKICAgIGJhbGFuY2U6IGFjY291bnQuYmFsYW5jZSwKICAgIGF2YWlsYWJsZUJhbGFuY2U6IGFjY291bnQuYXZhaWxhYmxlQmFsYW5jZSwKICAgIHN0b3JhZ2VVc2VkOiBhY2NvdW50LnN0b3JhZ2UudXNlZCwKICAgIHN0b3JhZ2VDYXBhY2l0eTogYWNjb3VudC5zdG9yYWdlLmNhcGFjaXR5LAogICAgc3RvcmFnZUZsb3c6IGFjY291bnQuYmFsYW5jZSAtIGFjY291bnQuYXZhaWxhYmxlQmFsYW5jZQogICkKfQ==", + "getAccountMinFlow": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjb3VudE1pbkZsb3cgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBVRml4NjQgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHJldHVybiBhY2NvdW50LmJhbGFuY2UgLSBhY2NvdW50LmF2YWlsYWJsZUJhbGFuY2UKfQ==", + "getAccountTotalFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjb3VudFRvdGFsRmxvd0JhbGFuY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKLy8gaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGVlODI4NTZiZjIwZTJhYTYKLy8gaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MGFlNTNjYjZlM2Y0MmE3OQovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhmOGQ2ZTA1ODZiMGEyMGM3CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IHVubG9ja2VkVmF1bHQgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKSEKICAgICAgLmJvcnJvdygpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQmFsYW5jZSByZWZlcmVuY2UgdG8gdGhlIFZhdWx0IikKICAgIGxldCB1bmxvY2tlZEJhbGFuY2UgPSB1bmxvY2tlZFZhdWx0LmJhbGFuY2UKICAgICAgICAKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb0NhcCA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5nZXQKICAgICAgPCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+CiAgICAgIChMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQogICAgaWYgbG9ja2VkQWNjb3VudEluZm9DYXAgPT0gbmlsIHx8ICEobG9ja2VkQWNjb3VudEluZm9DYXAhLmNoZWNrKCkpIHsKICAgICAgICByZXR1cm4gdW5sb2NrZWRCYWxhbmNlCiAgICB9CiAgICAKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb1JlZiA9IGxvY2tlZEFjY291bnRJbmZvQ2FwIS5ib3Jyb3coKSEKICAgIGxldCBsb2NrZWRCYWxhbmNlID0gbG9ja2VkQWNjb3VudEluZm9SZWYuZ2V0TG9ja2VkQWNjb3VudEJhbGFuY2UoKQogICAgCiAgICByZXR1cm4gbG9ja2VkQmFsYW5jZSArIHVubG9ja2VkQmFsYW5jZQp9", + "getAccountTotalLockedFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjb3VudFRvdGFsTG9ja2VkRmxvd0JhbGFuY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2Ci8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0CiAgICAgIDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgcmV0dXJuIFVGaXg2NCgwKQogICAgfQogICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIAogICAgcmV0dXJuIGxvY2tlZEJhbGFuY2UKfQ==", + "getAccountTotalUnlockedFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjb3VudFRvdGFsVW5sb2NrZWRGbG93QmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKLy8gaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KLy8gaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCi8vIGltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweExvY2tlZFRva2VucwoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGVlODI4NTZiZjIwZTJhYTYKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MGFlNTNjYjZlM2Y0MmE3OQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhmOGQ2ZTA1ODZiMGEyMGM3CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgIGxldCB1bmxvY2tlZFZhdWx0ID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmdldDwmRmxvd1Rva2VuLlZhdWx0PigvcHVibGljL2Zsb3dUb2tlbkJhbGFuY2UpIQogICAgICAuYm9ycm93KCkKICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBCYWxhbmNlIHJlZmVyZW5jZSB0byB0aGUgVmF1bHQiKQogICAgbGV0IHVubG9ja2VkQmFsYW5jZSA9IHVubG9ja2VkVmF1bHQuYmFsYW5jZQoKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb0NhcCA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5nZXQKICAgICAgPCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+CiAgICAgIChMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQogICAgaWYgbG9ja2VkQWNjb3VudEluZm9DYXAgPT0gbmlsIHx8ICEobG9ja2VkQWNjb3VudEluZm9DYXAhLmNoZWNrKCkpIHsKICAgICAgICByZXR1cm4gdW5sb2NrZWRCYWxhbmNlCiAgICB9CiAgICAKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb1JlZiA9IGxvY2tlZEFjY291bnRJbmZvQ2FwIS5ib3Jyb3coKSEKICAgIGxldCBsb2NrZWRCYWxhbmNlID0gbG9ja2VkQWNjb3VudEluZm9SZWYuZ2V0TG9ja2VkQWNjb3VudEJhbGFuY2UoKQogICAgbGV0IGxvY2tlZEJhbGFuY2VVbmxvY2tlZCA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldFVubG9ja0xpbWl0KCkKCiAgICBpZiBsb2NrZWRCYWxhbmNlID09IFVGaXg2NCgwKSB7CiAgICAgICAgcmV0dXJuIHVubG9ja2VkQmFsYW5jZQogICAgfQoKICAgIGlmIGxvY2tlZEJhbGFuY2VVbmxvY2tlZCA+IGxvY2tlZEJhbGFuY2UgewogICAgICAgIHJldHVybiB1bmxvY2tlZEJhbGFuY2UgKyBsb2NrZWRCYWxhbmNlCiAgICB9CgogICAgcmV0dXJuIGxvY2tlZEJhbGFuY2VVbmxvY2tlZCArIHVubG9ja2VkQmFsYW5jZQp9", + "getFindAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RmluZEFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGSU5EIGZyb20gMHhGaW5kCi8vQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIGZpbiB1c2VyCmFjY2VzcyhhbGwpIGZ1biBtYWluKG5hbWU6IFN0cmluZykgOiBBZGRyZXNzPyB7CiAgICBsZXQgc3RhdHVzID0gRklORC5zdGF0dXMobmFtZSkKICAgIHJldHVybiBzdGF0dXMub3duZXIKfQ==", + "getFindDomainByAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RmluZERvbWFpbkJ5QWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZJTkQgZnJvbSAweEZpbmQKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDogU3RyaW5nP3sKICAgIHJldHVybiBGSU5ELnJldmVyc2VMb29rdXAoYWRkcmVzcykKfQ==", + "getFlownsAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Rmxvd25zQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3ducyBmcm9tIDB4Rmxvd25zCmltcG9ydCBEb21haW5zIGZyb20gMHhEb21haW5zCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihuYW1lOiBTdHJpbmcsIHJvb3Q6IFN0cmluZykgOiBBZGRyZXNzPyB7CiAgICBsZXQgcHJlZml4ID0gIjB4IgogICAgbGV0IHJvb3RIYWhzaCA9IEZsb3ducy5oYXNoKG5vZGU6ICIiLCBsYWJsZTogcm9vdCkKICAgIGxldCBuYW1laGFzaCA9IHByZWZpeC5jb25jYXQoRmxvd25zLmhhc2gobm9kZTogcm9vdEhhaHNoLCBsYWJsZTogbmFtZSkpCiAgICB2YXIgYWRkcmVzcyA9IERvbWFpbnMuZ2V0UmVjb3JkcyhuYW1laGFzaCkKICAgIHJldHVybiBhZGRyZXNzCn0=", + "getFlownsDomainsByAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Rmxvd25zRG9tYWluc0J5QWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IERvbWFpbnMgZnJvbSAweERvbWFpbnMKLy8gYWRkcmVzczogRmxvdyBhZGRyZXNzCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW0RvbWFpbnMuRG9tYWluRGV0YWlsXSB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gYWNjb3VudC5nZXRDYXBhYmlsaXR5PCZ7RG9tYWlucy5Db2xsZWN0aW9uUHVibGljfT4oRG9tYWlucy5Db2xsZWN0aW9uUHVibGljUGF0aCkKICAgIGxldCBjb2xsZWN0aW9uID0gY29sbGVjdGlvbkNhcC5ib3Jyb3coKSEKICAgIGxldCBkb21haW5zOltEb21haW5zLkRvbWFpbkRldGFpbF0gPSBbXQogICAgbGV0IGlkcyA9IGNvbGxlY3Rpb24uZ2V0SURzKCkKCiAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICBsZXQgZG9tYWluID0gY29sbGVjdGlvbi5ib3Jyb3dEb21haW4oaWQ6IGlkKQogICAgICAgIGxldCBkZXRhaWwgPSBkb21haW4uZ2V0RGV0YWlsKCkKICAgICAgICBkb21haW5zLmFwcGVuZChkZXRhaWwpCiAgICB9CgogICAgcmV0dXJuIGRvbWFpbnMKfQ==", + "getStorageInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0U3RvcmFnZUluZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzKToge1N0cmluZzogVUludDY0fSB7CiAgICBsZXQgYWNjdCA9IGdldEFjY291bnQoYWRkcikKICAgIGxldCByZXQ6IHtTdHJpbmc6IFVJbnQ2NH0gPSB7fQogICAgcmV0WyJjYXBhY2l0eSJdID0gYWNjdC5zdG9yYWdlLmNhcGFjaXR5CiAgICByZXRbInVzZWQiXSA9IGFjY3Quc3RvcmFnZS51c2VkCiAgICByZXRbImF2YWlsYWJsZSJdID0gYWNjdC5zdG9yYWdlLmNhcGFjaXR5IC0gIGFjY3Quc3RvcmFnZS51c2VkCiAgICByZXR1cm4gcmV0Cn0=", + "getTokenBalanceWithModel": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0VG9rZW5CYWxhbmNlV2l0aE1vZGVsIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KDxUb2tlbkJhbGFuY2VQYXRoPikKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IEJhbGFuY2UgY2FwYWJpbGl0eSIpCgogICAgcmV0dXJuIHZhdWx0UmVmLmJhbGFuY2UKfQ==", + "isKeyHasFullAuth": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgaXNLZXlIYXNGdWxsQXV0aCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHB1YmxpY0tleTogU3RyaW5nKTogQm9vbCB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgdmFyIGZsYWcgPSBmYWxzZQogIGZ1biBhY2NvdW50Rm4oYWNjb3VudEtleTogQWNjb3VudEtleSk6IEJvb2wgewogICAgbGV0IGtleSA9IFN0cmluZy5lbmNvZGVIZXgoYWNjb3VudEtleS5wdWJsaWNLZXkucHVibGljS2V5KQogICAgaWYgcHVibGljS2V5ID09IGtleSB7CiAgICAgIGZsYWcgPSBhY2NvdW50S2V5LndlaWdodCA+PSBVRml4NjQoMTAwMCkgJiYgIWFjY291bnRLZXkuaXNSZXZva2VkCiAgICB9CiAgICByZXR1cm4gZmFsc2UKICB9CiAgYWNjb3VudC5rZXlzLmZvckVhY2goYWNjb3VudEZuKQoKICByZXR1cm4gZmxhZwp9Cg==", + "isKeysHasFullAuth": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgaXNLZXlzSGFzRnVsbEF1dGggLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwdWJsaWNLZXlzOiBbU3RyaW5nXSk6IEJvb2wgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHZhciB3ZWlnaHQ6IFVGaXg2NCA9IDAuMAogIGZ1biBhY2NvdW50Rm4oYWNjb3VudEtleTogQWNjb3VudEtleSk6IEJvb2wgewogICAgbGV0IGtleSA9IFN0cmluZy5lbmNvZGVIZXgoYWNjb3VudEtleS5wdWJsaWNLZXkucHVibGljS2V5KQogICAgaWYgcHVibGljS2V5cy5jb250YWlucyhrZXkpICYmICFhY2NvdW50S2V5LmlzUmV2b2tlZCB7CiAgICAgIHdlaWdodCA9IHdlaWdodCArIGFjY291bnRLZXkud2VpZ2h0IAogICAgfQogICAgcmV0dXJuIGZhbHNlCiAgfQogIGFjY291bnQua2V5cy5mb3JFYWNoKGFjY291bnRGbikKCiAgcmV0dXJuIHdlaWdodCA+PSBVRml4NjQoMTAwMCkKfQo=", + "isLockedFlowEnable": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgaXNMb2NrZWRGbG93RW5hYmxlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBCb29sIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgcmV0dXJuIGFjY291bnQuY2FwYWJpbGl0aWVzLmV4aXN0cyhMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQp9", + "isTokenStorageEnabled": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgaXNUb2tlblN0b3JhZ2VFbmFibGVkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgIAogICAgbGV0IHJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICBsZXQgYmFsYW5jZSA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5CYWxhbmNlUGF0aD4pCgogICAgcmV0dXJuIHJlY2VpdmVyICYmIGJhbGFuY2UKfQ==", + "queryCustomFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcXVlcnlDdXN0b21GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzCgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oY29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBjb250cmFjdE5hbWU6IFN0cmluZyk6IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhIHsKICAgIAogICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQoY29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogY29udHJhY3ROYW1lKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgogICAgcmV0dXJuIHZhdWx0RGF0YQp9", + "queryCustomNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcXVlcnlDdXN0b21ORlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE1ldGFkYXRhVmlld3MKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgY29udHJhY3ROYW1lOiBTdHJpbmcpOiBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhIHsKCiAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChjb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBjb250cmFjdE5hbWUpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgIAogICAgcmV0dXJuIGNvbGxlY3Rpb25EYXRhCn0=", + "queryFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcXVlcnlGbG93QmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgphY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93VG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKQogICAgPz8gbmlsCgogICAgCiAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgfQogICAgCiAgICByZXR1cm4gMC4wCn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJzOiBbQWRkcmVzc10pOiBbVUZpeDY0XSB7CiAgICBsZXQgYmFsczogW1VGaXg2NF0gPSBbXQoKICAgIGZvciBhZGRyIGluIGFkZHJzIHsKICAgICAgICBsZXQgYmFsID0gY2hlY2tGbG93VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHIpCiAgICAgICAgYmFscy5hcHBlbmQoYmFsKQogICAgfQogICAgCiAgICByZXR1cm4gYmFscwp9", + "removeAccountKeyByIndex": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcmVtb3ZlQWNjb3VudEtleUJ5SW5kZXggLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnRyYW5zYWN0aW9uKGtleUluZGV4OiBJbnQpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEtleXMpICZBY2NvdW50KSB7CiAgICAgICAgc2lnbmVyLmtleXMucmV2b2tlKGtleUluZGV4OiBrZXlJbmRleCkKICAgIH0KfQ==", + "removeContractFromAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcmVtb3ZlQ29udHJhY3RGcm9tQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKdHJhbnNhY3Rpb24obmFtZTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChSZW1vdmVDb250cmFjdCkgJkFjY291bnQpIHsKICAgICAgICBzaWduZXIuY29udHJhY3RzLnJlbW92ZShuYW1lOiBuYW1lKQogICAgfQp9", + "revokeKey": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcmV2b2tlS2V5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+Cgp0cmFuc2FjdGlvbihpbmRleDogSW50KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIC8vIEdldCBhIGtleSBmcm9tIGFuIGF1dGggYWNjb3VudC4KICAgICAgICBsZXQga2V5QSA9IHNpZ25lci5rZXlzLnJldm9rZShrZXlJbmRleDogaW5kZXgpCiAgICB9Cn0=", + "test": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdGVzdCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweDlhMDc2NmQ5M2I2NjA4YjcKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4N2U2MGRmMDQyYTljMDg2OAoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQsIHJlY2lwaWVudDogQWRkcmVzcykgewoKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJlZAogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCB2YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgICAgbGV0IHJlY2lwaWVudEFjY291bnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudEFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICAgICAgCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0=", + "updateContractOfAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdXBkYXRlQ29udHJhY3RPZkFjY291bnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZywgY29kZTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChVcGRhdGVDb250cmFjdCkgJkFjY291bnQpIHsKICAgICAgICBzaWduZXIuY29udHJhY3RzLnVwZGF0ZShuYW1lOiBuYW1lLCBjb2RlOiBjb2RlLnV0ZjgpCiAgICB9Cn0=", + "verifyUserSignature": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdmVyaWZ5VXNlclNpZ25hdHVyZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oCiAgICBtZXNzYWdlOiBTdHJpbmcsCiAgICByYXdQdWJsaWNLZXlzOiBbU3RyaW5nXSwKICAgIHdlaWdodHM6IFtVRml4NjRdLAogICAgc2lnbkFsZ29zOiBbVUludDhdLAogICAgaGFzaEFsZ29zOiBbVUludDhdLAogICAgc2lnbmF0dXJlczogW1N0cmluZ10sCik6IEJvb2wgewoKICAgIGxldCBrZXlMaXN0ID0gQ3J5cHRvLktleUxpc3QoKQoKICAgIHZhciBpID0gMAogICAgZm9yIHJhd1B1YmxpY0tleSBpbiByYXdQdWJsaWNLZXlzIHsKICAgIGtleUxpc3QuYWRkKAogICAgICAgIFB1YmxpY0tleSgKICAgICAgICBwdWJsaWNLZXk6IHJhd1B1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogc2lnbkFsZ29zW2ldKSEKICAgICAgICApLAogICAgICAgIGhhc2hBbGdvcml0aG06IEhhc2hBbGdvcml0aG0ocmF3VmFsdWU6IGhhc2hBbGdvc1tpXSkhLAogICAgICAgIHdlaWdodDogd2VpZ2h0c1tpXSwKICAgICkKICAgIGkgPSBpICsgMQogICAgfQoKICAgIGxldCBzaWduYXR1cmVTZXQ6IFtDcnlwdG8uS2V5TGlzdFNpZ25hdHVyZV0gPSBbXQoKICAgIHZhciBqID0gMAogICAgZm9yIHNpZ25hdHVyZSBpbiBzaWduYXR1cmVzIHsKICAgIHNpZ25hdHVyZVNldC5hcHBlbmQoCiAgICAgICAgQ3J5cHRvLktleUxpc3RTaWduYXR1cmUoCiAgICAgICAgICAgIGtleUluZGV4OiBqLAogICAgICAgICAgICBzaWduYXR1cmU6IHNpZ25hdHVyZS5kZWNvZGVIZXgoKQogICAgICAgICkKICAgICkKICAgICAgICBqID0gaiArIDEKICAgIH0KCiAgICBsZXQgc2lnbmVkRGF0YSA9IG1lc3NhZ2UuZGVjb2RlSGV4KCkKCiAgICByZXR1cm4ga2V5TGlzdC52ZXJpZnkoCiAgICAgICAgc2lnbmF0dXJlU2V0OiBzaWduYXR1cmVTZXQsCiAgICAgICAgc2lnbmVkRGF0YTogc2lnbmVkRGF0YSwKICAgICAgICBkb21haW5TZXBhcmF0aW9uVGFnOiAiRkxPVy1WMC4wLXVzZXIiCiAgICApCn0=", + "withdrawAllUnlockedFlow": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgd2l0aGRyYXdBbGxVbmxvY2tlZEZsb3cgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKLy8gaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGVlODI4NTZiZjIwZTJhYTYKLy8gaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MGFlNTNjYjZlM2Y0MmE3OQovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhmOGQ2ZTA1ODZiMGEyMGM3Cgp0cmFuc2FjdGlvbigpIHsKCiAgICBsZXQgaG9sZGVyUmVmOiBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXIKICAgIGxldCB2YXVsdFJlZjogJkZsb3dUb2tlbi5WYXVsdAogICAgbGV0IGFtb3VudDogVUZpeDY0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIHNlbGYuaG9sZGVyUmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcj4oZnJvbTogTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIFRva2VuSG9sZGVyIikKCgkJCQlzZWxmLnZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBmbG93IHRva2VuIHZhdWx0IHJlZiIpCgogICAgICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb0NhcCA9IHNpZ25lcgogICAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0PCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+CiAgICAgICAgKExvY2tlZFRva2Vucy5Mb2NrZWRBY2NvdW50SW5mb1B1YmxpY1BhdGgpCgogICAgICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgICAgIHBhbmljKCJDb3VsZCBub3QgZ2V0IGZsb3cgbG9ja2VkIHRva2VuIHZhdWx0IikKICAgICAgICB9CgogICAgICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb1JlZiA9IGxvY2tlZEFjY291bnRJbmZvQ2FwIS5ib3Jyb3coKSEKICAgICAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgICAgICBsZXQgbG9ja2VkQmFsYW5jZVVubG9ja2VkID0gbG9ja2VkQWNjb3VudEluZm9SZWYuZ2V0VW5sb2NrTGltaXQoKQoKICAgICAgICAvLyBpZiBsb2NrZWRCYWxhbmNlID09IFVGaXg2NCgwKSB7CiAgICAgICAgLy8gICAgIHBhbmljKCJOb3QgZW5vdWdoIGFtb3VudCB0byB3aXRoZHJhdyIpCiAgICAgICAgLy8gfQoKICAgICAgICBzZWxmLmFtb3VudCA9IGxvY2tlZEJhbGFuY2VVbmxvY2tlZAogICAgCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi52YXVsdFJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5ob2xkZXJSZWYud2l0aGRyYXcoYW1vdW50OiBzZWxmLmFtb3VudCkpCiAgICB9Cn0=", + "withdrawUnlockedFlow": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgd2l0aGRyYXdVbmxvY2tlZEZsb3cgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCi8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2CmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKCiAgICBsZXQgaG9sZGVyUmVmOiBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyCiAgICBsZXQgdmF1bHRSZWY6ICZGbG93VG9rZW4uVmF1bHQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmhvbGRlclJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBUb2tlbkhvbGRlciIpCgogICAgICAgIHNlbGYudmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGZsb3cgdG9rZW4gdmF1bHQgcmVmIikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnZhdWx0UmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLmhvbGRlclJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICB9Cn0=" }, "bridge": { - "batchBridgeNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVEZyb21Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRDb250cmFjdEFkZHJlc3M6IFRoZSBGbG93IGFjY291bnQgYWRkcmVzcyBob3N0aW5nIHRoZSBORlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIG5mdENvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWRzOiBbVUludDI1Nl0pIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkM3MjEgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIE5GVCB0eXBlCiAgICAgICAgc2VsZi5uZnRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IG5mdENvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogbmZ0Q29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiTkZUIgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIikKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24gLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2goY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvbGxlY3Rpb25DYXAsIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgY29sbGVjdGlvbiBmcm9tIHN0b3JhZ2UgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkgKiBVRml4NjQoaWRzLmxlbmd0aCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "batchBridgeNFTFromEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVEZyb21Fdm1WMiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgRVJDNzIxIGlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIENhZGVuY2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWRzOiBbVUludDI1Nl0pIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLm5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCBpZHMubGVuZ3RoIHsKICAgICAgICAgICAgbGV0IG5mdElkID0gaWRzW2lkeF0hCiAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICBpZDogbmZ0SWQsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBicmlkZ2VkIG5mdCBpcyB0aGUgY29ycmVjdCB0eXBlCiAgICAgICAgICAgIGFzc2VydCgKICAgICAgICAgICAgICAgIG5mdC5nZXRUeXBlKCkgPT0gc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgbWVzc2FnZTogIkJyaWRnZWQgbmZ0IHR5cGUgbWlzbWF0Y2ggLSByZXF1ZXN3dGVkOiAiLmNvbmNhdChzZWxmLm5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgICApCiAgICAgICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgTkZUIGludG8gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24KICAgICAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "batchBridgeNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVFRvRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdENvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgbmZ0Q29udHJhY3ROYW1lOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICAgIAogICAgbGV0IG5mdHM6IEB7VUludDY0IDoge05vbkZ1bmdpYmxlVG9rZW4uTkZUfX0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBzZWxmLm5mdHMgPC0ge30KICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgZm9yIGlkIGluIGlkcyB7CiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICAgICAgc2VsZi5uZnRzW2lkXSA8LSEgbmZ0CiAgICAgICAgfQogICAgICAgIC8vIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwICogVUZpeDY0KGlkcy5sZW5ndGgpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCBpZHMubGVuZ3RoIHsKICAgICAgICAgICAgbGV0IG5mdElkID0gaWRzW2lkeF0hCiAgICAgICAgICAgIGxldCBuZnQgPC0gc2VsZi5uZnRzLnJlbW92ZShrZXk6IG5mdElkKSEgYXMgQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgICAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCggCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCEsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYubmZ0cwogICAgfQp9Cg==", - "batchBridgeNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVFRvRXZtQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBCcmlkZ2VzIGFuIE5GVCBmcm9tIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uIGluIENhZGVuY2UgdG8gdGhlIHNpZ25lcidzIENPQSBpbiBGbG93RVZNCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBORlQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIENhZGVuY2UgTkZULmlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdLCByZWNpcGllbnQ6IFN0cmluZykgewogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2xsZWN0aW9uOiBhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgeyAgICAgICAgCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBzZWxmLmNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWRzWzBdKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgKEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZSAqIFVGaXg2NChpZHMubGVuZ3RoKSkKCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBORlQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5uZnQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IG5mdElkZW50aWZpZXI6CiAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNlbmQgaW52YWxpZCBuZnQgdHlwZSAtIHJlcXVlc3RlZDogIi5jb25jYXQobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBORlQgdG8gdGhlIGJyaWRnZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICBzZWxmLm5mdC5nZXRUeXBlKCksCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHRyYW5zYWN0aW9uCiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LXNlbGYubmZ0LAogICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICB2YXIgaWR4ID0gMAoKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgaWYgaWR4ID09IDAgewogICAgICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VORlRUb0VWTSgKICAgICAgICAgICAgICAgIHRva2VuOiA8LSBzZWxmLmNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpLAogICAgICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "batchBridgeNFTToEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVFRvRXZtVjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKCi8vLyBCcmlkZ2VzIGFuIE5GVCBmcm9tIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uIGluIENhZGVuY2UgdG8gdGhlIHNpZ25lcidzIENPQSBpbiBGbG93RVZNCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBORlQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIENhZGVuY2UgTkZULmlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgICAKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgcmVxdWlyZXNPbmJvYXJkaW5nOiBCb29sCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkc1swXSkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHZhciBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSArIChGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUgKiBVRml4NjQoaWRzLmxlbmd0aCkpCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBORlQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcobmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkJyaWRnZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXNzZXQgdHlwZSIpCiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICBhcHByb3hGZWUgPSBhcHByb3hGZWUgKyBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUKICAgICAgICB9CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgbGV0IHNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC0gbmZ0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCBpZHMubGVuZ3RoIHsKICAgICAgICAgICAgIGlmIGlkeCA9PSAwIHsKICAgICAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG5mdElkID0gaWRzW2lkeF0hCiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBuZnRJZCkhIGFzIEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICAgICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchEvmAddressRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgRVZNIGNvbnRyYWN0IG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBldm1BZGRyZXNzZXM6IEFycmF5IG9mIGhleC1lbmNvZGVkIGFkZHJlc3Mgb2YgdGhlIEVWTSBjb250cmFjdCBhcyBhIFN0cmluZyB3aXRob3V0IDB4IHByZWZpeCB0byBjaGVjayBmb3IKLy8vICAgICBvbmJvYXJkaW5nIHN0YXR1cwovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgY29udHJhY3QgcmVxdWlyZXMgb25ib2FyZGluZyB0byB0aGUgRmxvd0VWTUJyaWRnZSBpZiB0aGUgdHlwZSBpcyBicmlkZ2VhYmxlLCBvdGhlcndpc2UgbmlsCi8vLyAgICAgaW5kZXhlZCBvbiB0aGUgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgRVZNIGNvbnRyYWN0IHdpdGhvdXQgMHggcHJlZml4Ci8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihldm1BZGRyZXNzZXM6IFtTdHJpbmddKToge1N0cmluZzogQm9vbD99IHsKICAgIGxldCByZXN1bHRzOiB7U3RyaW5nOiBCb29sP30gPSB7fQogICAgZm9yIGFkZHJlc3NIZXggaW4gZXZtQWRkcmVzc2VzIHsKICAgICAgICBpZiByZXN1bHRzW2FkZHJlc3NIZXhdICE9IG5pbCB7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQogICAgICAgIGlmIGxldCBhZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogYWRkcmVzc0hleCkgewogICAgICAgICAgICBsZXQgcmVxdWlyZXNPbmJvYXJkaW5nID0gRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3MpCiAgICAgICAgICAgIHJlc3VsdHMuaW5zZXJ0KGtleTogYWRkcmVzc0hleCwgcmVxdWlyZXNPbmJvYXJkaW5nKQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHRzCn0K", - "batchIdentifierRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaElkZW50aWZpZXJSZXF1aXJlc09uYm9hcmRpbmcgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBUeXBlczogVGhlIGFycmF5IG9mIHR5cGVzIHRvIGNoZWNrIGZvciBvbmJvYXJkaW5nIHN0YXR1cwovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwgaW5kZXhlZAovLy8gICAgIG9uIHRoZSB0eXBlCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihpZGVudGlmaWVyczogW1N0cmluZ10pOiB7U3RyaW5nOiBCb29sP30gewogICAgbGV0IHJlc3VsdHM6IHtTdHJpbmc6IEJvb2w/fSA9IHt9CgogICAgZm9yIGlkZW50aWZpZXIgaW4gaWRlbnRpZmllcnMgewogICAgICAgIGlmIHJlc3VsdHNbaWRlbnRpZmllcl0gIT0gbmlsIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CiAgICAgICAgbGV0IHR5cGU6IFR5cGUgPSBDb21wb3NpdGVUeXBlKGlkZW50aWZpZXIpID8/IHBhbmljKCJJbnZhbGlkIHR5cGUgaWRlbnRpZmllciIpCiAgICAgICAgcmVzdWx0cy5pbnNlcnQoa2V5OiBpZGVudGlmaWVyLCBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcodHlwZSkpCiAgICB9CiAgICByZXR1cm4gcmVzdWx0cwp9Cg==", - "batchOnboardByEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaE9uYm9hcmRCeUV2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgTkZUIHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIE5GVHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIE5GVCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gYWRkcmVzc2VzQXNIZXg6IEFycmF5IG9mIEVWTSBjb250cmFjdCBhZGRyZXNzZXMgKGFzIGhleCBzdHJpbmcgd2l0aG91dCAweCBwcmVmaXgpIGRlZmluaW5nIHRoZSAKLy8vICAgICBicmlkZ2VhYmxlIGFzc2V0IHRvIGJlIG9uYm9hcmRlZAovLy8KdHJhbnNhY3Rpb24oYWRkcmVzc2VzQXNIZXg6IFtTdHJpbmddKSB7CgogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgLy8gU2V0IGEgd2l0aGRyYXdhbCBsaW1pdCBmb3IgdGhlIHByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyTGltaXQgPSBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUgKiBVRml4NjQoYWRkcmVzc2VzQXNIZXgubGVuZ3RoKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihwcm92aWRlckxpbWl0KQogICAgICAgIC8vIENyZWF0ZSBTY29wZWRGVFByb3ZpZGVyIHRvIGV4cGlyZSBqdXN0IGFmdGVyIHRoaXMgdHJhbnNhY3Rpb24KICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBJdGVyYXRlIG92ZXIgcHJvdmlkZWQgYXJyYXkKICAgICAgICBmb3IgYWRkcmVzc0hleCBpbiBhZGRyZXNzZXNBc0hleCB7CiAgICAgICAgICAgIC8vIENvbnZlcnQgaGV4IHN0cmluZyB0byBFVk1BZGRyZXNzCiAgICAgICAgICAgIGxldCBhZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogYWRkcmVzc0hleCkKICAgICAgICAgICAgLy8gQ29udGludWUgaWYgdGhlIGhleCBpcyBub3QgYSB2YWxpZCBFVk0gYWRkcmVzcyBvciBpZiB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IG9uYm9hcmRlZAogICAgICAgICAgICBpZiBhZGRyZXNzID09IG5pbCB8fCBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcyEpICE9IHRydWUgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlFVk1BZGRyZXNzKAogICAgICAgICAgICAgICAgYWRkcmVzcyEsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchOnboardByIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaE9uYm9hcmRCeUlkZW50aWZpZXIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBhc3NldCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBhc3NldHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIGFzc2V0IHRvIEVWTQovLy8KLy8vIEBwYXJhbSB0eXBlczogVGhlIENhZGVuY2UgdHlwZXMgb2YgdGhlIGJyaWRnZWFibGUgYXNzZXQgdG8gb25ib2FyZCB0byB0aGUgYnJpZGdlCi8vLwp0cmFuc2FjdGlvbihpZGVudGlmaWVyczogW1N0cmluZ10pIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICAvLyBTZXQgYSB3aXRoZHJhd2FsIGxpbWl0IGZvciB0aGUgcHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NCh0eXBlcy5sZW5ndGgpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAgICAgLy8gQ3JlYXRlIFNjb3BlZEZUUHJvdmlkZXIgdG8gZXhwaXJlIGp1c3QgYWZ0ZXIgdGhpcyB0cmFuc2FjdGlvbgogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGZvciBpZGVudGlmaWVycyBpbiBpZGVudGlmaWVycyB7IAogICAgICAgICAgICBsZXQgdHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgPz8gcGFuaWMoIkludmFsaWQgdHlwZSBpZGVudGlmaWVyIikKICAgICAgICAgICAgLy8gQ29udGludWUgb24gaWYgdGhlIHR5cGUgZG9lcyBub3QgcmVxdWlyZSBvbmJvYXJkaW5nCiAgICAgICAgICAgIGlmIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKSAhPSB0cnVlIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gT25ib2FyZCB0aGUgYXNzZXQgVHlwZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICB0eXBlLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgfQogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "batchOnboardByType": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaE9uYm9hcmRCeVR5cGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBhc3NldCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBhc3NldHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIGFzc2V0IHRvIEVWTQovLy8KLy8vIEBwYXJhbSB0eXBlczogVGhlIENhZGVuY2UgdHlwZXMgb2YgdGhlIGJyaWRnZWFibGUgYXNzZXQgdG8gb25ib2FyZCB0byB0aGUgYnJpZGdlCi8vLwp0cmFuc2FjdGlvbih0eXBlczogW1R5cGVdKSB7CgogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgLy8gU2V0IGEgd2l0aGRyYXdhbCBsaW1pdCBmb3IgdGhlIHByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyTGltaXQgPSBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUgKiBVRml4NjQodHlwZXMubGVuZ3RoKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihwcm92aWRlckxpbWl0KQogICAgICAgIC8vIENyZWF0ZSBTY29wZWRGVFByb3ZpZGVyIHRvIGV4cGlyZSBqdXN0IGFmdGVyIHRoaXMgdHJhbnNhY3Rpb24KICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBmb3IgdHlwZSBpbiB0eXBlcyB7IAogICAgICAgICAgICAvLyBDb250aW51ZSBvbiBpZiB0aGUgdHlwZSBkb2VzIG5vdCByZXF1aXJlIG9uYm9hcmRpbmcKICAgICAgICAgICAgaWYgRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpICE9IHRydWUgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBhc3NldCBUeXBlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHR5cGUsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchTypeRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaFR5cGVSZXF1aXJlc09uYm9hcmRpbmcgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBUeXBlczogVGhlIGFycmF5IG9mIHR5cGVzIHRvIGNoZWNrIGZvciBvbmJvYXJkaW5nIHN0YXR1cwovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwgaW5kZXhlZAovLy8gICAgIG9uIHRoZSB0eXBlCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbih0eXBlczogW1R5cGVdKToge1R5cGU6IEJvb2w/fSB7CiAgICBsZXQgcmVzdWx0czoge1R5cGU6IEJvb2w/fSA9IHt9CiAgICBmb3IgdHlwZSBpbiB0eXBlcyB7CiAgICAgICAgaWYgcmVzdWx0c1t0eXBlXSAhPSBuaWwgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KICAgICAgICByZXN1bHRzLmluc2VydChrZXk6IHR5cGUsIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKSkKICAgIH0KICAgIHJldHVybiByZXN1bHRzCn0K", - "bridgeNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRDb250cmFjdEFkZHJlc3M6IFRoZSBGbG93IGFjY291bnQgYWRkcmVzcyBob3N0aW5nIHRoZSBORlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIG5mdENvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWQ6IFVJbnQyNTYpIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkM3MjEgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIE5GVCB0eXBlCiAgICAgICAgc2VsZi5uZnRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IG5mdENvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogbmZ0Q29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiTkZUIgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIikKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24gLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2goY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvbGxlY3Rpb25DYXAsIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgY29sbGVjdGlvbiBmcm9tIHN0b3JhZ2UgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCBORlQgaW50byB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbgogICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTFromEvmToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRDb250cmFjdEFkZHJlc3M6IFRoZSBGbG93IGFjY291bnQgYWRkcmVzcyBob3N0aW5nIHRoZSBORlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIG5mdENvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWQ6IFVJbnQyNTYsIHJlY2VpdmVyOiBBZGRyZXNzKSB7CgogICAgbGV0IG5mdFR5cGU6IFR5cGUKICAgIGxldCBjb2xsZWN0aW9uOiAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8vIEdldCB0aGUgRVJDNzIxIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBORlQgdHlwZQogICAgICAgIHNlbGYubmZ0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgICAgICBhZGRyZXNzOiBuZnRDb250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgICAgICBjb250cmFjdE5hbWU6IG5mdENvbnRyYWN0TmFtZSwKICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZTogIk5GVCIKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSIpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CgogICAgICAgIGxldCByZWNlaXZlckFjY3QgPSBnZXRBY2NvdW50KHJlY2VpdmVyKQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHJlY2VpdmVyQWNjdC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgY29sbGVjdGlvbiBjYXBhYmlsaXRpZXMgZnJvbSBwdWJsaWMgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCBORlQgaW50byB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbgogICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTFromEvmToFlowV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtVG9GbG93VjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UuCi8vLyBBbHNvIGtub3cgdGhhdCB0aGUgcmVjaXBpZW50IEZsb3cgYWNjb3VudCBtdXN0IGhhdmUgYSBSZWNlaXZlciBjYXBhYmxlIG9mIHJlY2VpdmluZyB0aGUgdGhpcyBicmlkZ2VkIE5GVCBhY2Nlc3NpYmxlCi8vLyB2aWEgcHVibGlzaGVkIENhcGFiaWxpdHkgYXQgdGhlIHRva2VuJ3Mgc3RhbmRhcmQgcGF0aC4KLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8gQHBhcmFtIHJlY2lwaWVudDogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIHRvIHJlY2VpdmUgdGhlIGJyaWRnZWQgTkZUCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50MjU2LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgcmVjZWl2ZXI6ICZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgc2VsZi5uZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBORlQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBzZWxmLm5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgcmVjaXBpZW50J3MgTkZUIFJlY2VpdmVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAvLyBDb25maWd1cmUgdGhlIHNpZ25lcidzIGFjY291bnQgZm9yIHRoaXMgTkZUCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYucmVjZWl2ZXIgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBSZWNlaXZlciBmcm9tIHJlY2lwaWVudCdzIHB1YmxpYyBjYXBhYmlsaXR5IHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgIHR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCBuZnQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgbmZ0LmdldFR5cGUoKSA9PSBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQoc2VsZi5uZnRUeXBlLmlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "bridgeNFTFromEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtVjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgRVJDNzIxIGlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIENhZGVuY2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQyNTYpIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLm5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBFbnN1cmUgdGhlIGJyaWRnZWQgbmZ0IGlzIHRoZSBjb3JyZWN0IHR5cGUKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIG5mdC5nZXRUeXBlKCkgPT0gc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBtZXNzYWdlOiAiQnJpZGdlZCBuZnQgdHlwZSBtaXNtYXRjaCAtIHJlcXVlc3d0ZWQ6ICIuY29uY2F0KHNlbGYubmZ0VHlwZS5pZGVudGlmaWVyKQogICAgICAgICAgICAgICAgLmNvbmNhdCgiLCByZWNlaXZlZDogIikuY29uY2F0KG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCBORlQgaW50byB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbgogICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "bridgeNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC1zZWxmLm5mdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWQ6IFVJbnQ2NCwgY29udHJhY3RFVk1BZGRyZXNzOiBTdHJpbmcsIGRhdGE6IFtVSW50OF0sIGdhc0xpbWl0OiBVSW50NjQpIHsKICAgIAogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LXNlbGYubmZ0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBhZGRyZXNzQnl0ZXM6IFtVSW50OF0gPSBjb250cmFjdEVWTUFkZHJlc3MuZGVjb2RlSGV4KCkKICAgICAgICBsZXQgZXZtVG9rZW5BZGRyID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IFsKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzBdLCBhZGRyZXNzQnl0ZXNbMV0sIGFkZHJlc3NCeXRlc1syXSwgYWRkcmVzc0J5dGVzWzNdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbNF0sIGFkZHJlc3NCeXRlc1s1XSwgYWRkcmVzc0J5dGVzWzZdLCBhZGRyZXNzQnl0ZXNbN10sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1s4XSwgYWRkcmVzc0J5dGVzWzldLCBhZGRyZXNzQnl0ZXNbMTBdLCBhZGRyZXNzQnl0ZXNbMTFdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTJdLCBhZGRyZXNzQnl0ZXNbMTNdLCBhZGRyZXNzQnl0ZXNbMTRdLCBhZGRyZXNzQnl0ZXNbMTVdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTZdLCBhZGRyZXNzQnl0ZXNbMTddLCBhZGRyZXNzQnl0ZXNbMThdLCBhZGRyZXNzQnl0ZXNbMTldCiAgICAgICAgXSkKICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgLy8gbGV0IGRhdGEgPSBkYXRhU3RyLmRlY29kZUhleCgpCgogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBldm1Ub2tlbkFkZHIsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTToEvmAddressV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bUFkZHJlc3NWMiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIEJyaWRnZXMgYW4gTkZUIGZyb20gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24gaW4gQ2FkZW5jZSB0byB0aGUgbmFtZWQgcmVjaXBpZW50IGluIEVWTS4KLy8vCi8vLyBOT1RFOiBUaGlzIHRyYW5zYWN0aW9uIGFsc28gb25ib2FyZHMgdGhlIE5GVCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgQ2FkZW5jZSBORlQuaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gRVZNCi8vLyBAcGFyYW0gcmVjaXBpZW50OiBUaGUgaGV4LWVuY29kZWQgRVZNIGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgTkZUCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50NjQsIHJlY2lwaWVudDogU3RyaW5nKSB7CiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsgICAgICAgIAogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5iYXNlRmVlCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBORlQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5uZnQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IG5mdElkZW50aWZpZXI6CiAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNlbmQgaW52YWxpZCBuZnQgdHlwZSAtIHJlcXVlc3RlZDogIi5jb25jYXQobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBORlQgdG8gdGhlIGJyaWRnZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICBzZWxmLm5mdC5nZXRUeXBlKCksCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHRyYW5zYWN0aW9uCiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LXNlbGYubmZ0LAogICAgICAgICAgICB0bzogRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCksCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "bridgeNFTToEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bVYyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gQnJpZGdlcyBhbiBORlQgZnJvbSB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbiBpbiBDYWRlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EgaW4gRmxvd0VWTQovLy8KLy8vIE5PVEU6IFRoaXMgdHJhbnNhY3Rpb24gYWxzbyBvbmJvYXJkcyB0aGUgTkZUIHRvIHRoZSBicmlkZ2UgaWYgbmVjZXNzYXJ5IHdoaWNoIG1heSBpbmN1ciBhZGRpdGlvbmFsIGZlZXMKLy8vICAgICB0aGFuIGJyaWRnaW5nIGFuIGFzc2V0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQuCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBDYWRlbmNlIE5GVC5pZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBFVk0KLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCkgewogICAgCiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBORlQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkgKyBGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLm5mdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gbmZ0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIG5mdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIE5GVCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "bridgeTokensFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGZ1bmdpYmxlIHRva2VucyBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZQovLy8gRmxvd0VWTUJyaWRnZS4KLy8vCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIEZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIFZhdWx0LWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUludDI1NikgewoKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzIwIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBGdW5naWJsZVRva2VuIFZhdWx0IHR5cGUKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgICAgICBhZGRyZXNzOiB0b2tlbkNvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogdG9rZW5Db250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJWYXVsdCIKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIG9mOiAiIC5jb25jYXQodG9rZW5Db250cmFjdEFkZHJlc3MudG9TdHJpbmcoKSkuY29uY2F0KCIuIikuY29uY2F0KHRva2VuQ29udHJhY3ROYW1lKS5jb25jYXQoIi5WYXVsdCIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBWYXVsdCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgLy8gSWYgdGhlIHZhdWx0IGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgaXQgYW5kIHB1Ymxpc2ggYWNjb3JkaW5nIHRvIHRoZSBjb250cmFjdCdzIGRlZmluZWQgY29uZmlndXJhdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC12YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKCiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxldCBtZXRhZGF0YUNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXAsIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gobWV0YWRhdGFDYXAsIGF0OiB2YXVsdERhdGEubWV0YWRhdGFQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLnJlY2VpdmVyID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmF1bHQgZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIHRva2VuIGludG8gdGhlIHNpZ25lcidzIHZhdWx0CiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeTokensFromEvmToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGZ1bmdpYmxlIHRva2VucyBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZQovLy8gRmxvd0VWTUJyaWRnZS4KLy8vCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIEZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIFZhdWx0LWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUludDI1NiwgcmVjZWl2ZXI6IEFkZHJlc3MpIHsKCiAgICBsZXQgdmF1bHRUeXBlOiBUeXBlCiAgICBsZXQgcmVjZWl2ZXI6ICZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkMyMCBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gRnVuZ2libGVUb2tlbiBWYXVsdCB0eXBlCiAgICAgICAgc2VsZi52YXVsdFR5cGUgPSBGbG93RVZNQnJpZGdlVXRpbHMuYnVpbGRDb21wb3NpdGVUeXBlKAogICAgICAgICAgICAgICAgYWRkcmVzczogdG9rZW5Db250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgICAgICBjb250cmFjdE5hbWU6IHRva2VuQ29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiVmF1bHQiCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBvZjogIiAuY29uY2F0KHRva2VuQ29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkpLmNvbmNhdCgiLiIpLmNvbmNhdCh0b2tlbkNvbnRyYWN0TmFtZSkuY29uY2F0KCIuVmF1bHQiKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgVmF1bHQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQsIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIC8vIElmIHRoZSB2YXVsdCBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGl0IGFuZCBwdWJsaXNoIGFjY29yZGluZyB0byB0aGUgY29udHJhY3QncyBkZWZpbmVkIGNvbmZpZ3VyYXRpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCgogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBsZXQgbWV0YWRhdGFDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwLCBhdDogdmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKG1ldGFkYXRhQ2FwLCBhdDogdmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKICAgICAgICB9CiAgICAgICAgbGV0IHJlY2VpdmVyQWNjdCA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICAgICAgc2VsZi5yZWNlaXZlciA9IHJlY2VpdmVyQWNjdC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZhdWx0IHJlY2VpdmVyIGNhcGFiaWxpdGllcyBmcm9tIHB1YmxpYyBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZSByZXF1ZXN0CiAgICAgICAgbGV0IHZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9IDwtIHNlbGYuY29hLndpdGhkcmF3VG9rZW5zKAogICAgICAgICAgICB0eXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgYW1vdW50OiBhbW91bnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCB0b2tlbiBpbnRvIHRoZSBzaWduZXIncyB2YXVsdAogICAgICAgIHNlbGYucmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXZhdWx0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", - "bridgeTokensFromEvmToFlowV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtVG9GbG93VjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKLy8vIFRoaXMgdHJhbnNhY3Rpb24gYnJpZGdlcyBmdW5naWJsZSB0b2tlbnMgZnJvbSBFVk0gdG8gQ2FkZW5jZSBhc3N1bWluZyBpdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZCB0byB0aGUKLy8vIEZsb3dFVk1CcmlkZ2UuIFRoZSBmdWxsIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBpcyBzb3VyY2VkIGZyb20gRVZNLCBzbyBpdCdzIGFzc3VtZWQgdGhlIHNpZ25lciBoYXMgc3VmZmljaWVudAovLy8gYmFsYW5jZSBvZiB0aGUgRVJDMjAgdG8gYnJpZGdpbmcgaW50byBDYWRlbmNlLiBBbHNvIGtub3cgdGhhdCB0aGUgcmVjaXBpZW50IEZsb3cgYWNjb3VudCBtdXN0IGhhdmUgYSBSZWNlaXZlcgovLy8gY2FwYWJsZSBvZiByZWNlaXZpbmcgdGhlIGJyaWRnZWQgdG9rZW5zIGFjY2Vzc2libGUgdmlhIHB1Ymxpc2hlZCBDYXBhYmlsaXR5IGF0IHRoZSB0b2tlbidzIHN0YW5kYXJkIHBhdGguCi8vLwovLy8gTk9URTogVGhlIEVSQzIwIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB2YXVsdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCB0byBicmlkZ2UKLy8vICAgICAtIGUuZy4gdmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTSBhbmQgdHJhbnNmZXIgdG8gdGhlIHJlY2lwaWVudAovLy8gQHBhcmFtIHJlY2lwaWVudDogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIHRvIHJlY2VpdmUgdGhlIGJyaWRnZWQgdG9rZW5zCi8vLwp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZywgYW1vdW50OiBVSW50MjU2LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKCiAgICBsZXQgdmF1bHRUeXBlOiBUeXBlCiAgICBsZXQgcmVjZWl2ZXI6ICZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgVmF1bHQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgVmF1bHQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgc2VsZi52YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHNlbGYudmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBzZWxmLnZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIFZhdWx0IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0LCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICAvLyBJZiB0aGUgdmF1bHQgZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBpdCBhbmQgcHVibGlzaCBhY2NvcmRpbmcgdG8gdGhlIGNvbnRyYWN0J3MgZGVmaW5lZCBjb25maWd1cmF0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LXZhdWx0RGF0YS5jcmVhdGVFbXB0eVZhdWx0KCksIHRvOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEubWV0YWRhdGFQYXRoKQoKICAgICAgICAgICAgbGV0IHJlY2VpdmVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgbGV0IG1ldGFkYXRhQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcCwgYXQ6IHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChtZXRhZGF0YUNhcCwgYXQ6IHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYucmVjZWl2ZXIgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWYXVsdCBmcm9tIHJlY2lwaWVudCdzIGFjY291bnQiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBFbnN1cmUgdGhlIGJyaWRnZWQgdmF1bHQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCh2YXVsdC5nZXRUeXBlKCkgPT0gc2VsZi52YXVsdFR5cGUsIG1lc3NhZ2U6ICJCcmlkZ2VkIHZhdWx0IHR5cGUgbWlzbWF0Y2giKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgdG9rZW4gaW50byB0aGUgc2lnbmVyJ3MgdmF1bHQKICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC12YXVsdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "bridgeTokensFromEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtVjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgZnVuZ2libGUgdG9rZW5zIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlCi8vLyBGbG93RVZNQnJpZGdlLgovLy8KLy8vIE5PVEU6IFRoZSBFUkMyMCBtdXN0IGhhdmUgZmlyc3QgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIGJyaWRnZS4gVGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlIG1ldGhvZAovLy8gICAgIEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzOiBzZWxmLmV2bUNvbnRyYWN0QWRkcmVzcykKLy8vCi8vLyBAcGFyYW0gdmF1bHRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQgdG8gYnJpZGdlCi8vLyAgICAgLSBlLmcuIHZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gYW1vdW50OiBUaGUgYW1vdW50IG9mIHRva2VucyB0byBicmlkZ2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVJbnQyNTYpIHsKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi52YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYudmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgVmF1bHQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQsIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIC8vIElmIHRoZSB2YXVsdCBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGl0IGFuZCBwdWJsaXNoIGFjY29yZGluZyB0byB0aGUgY29udHJhY3QncyBkZWZpbmVkIGNvbmZpZ3VyYXRpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCgogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBsZXQgbWV0YWRhdGFDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwLCBhdDogdmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKG1ldGFkYXRhQ2FwLCBhdDogdmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5yZWNlaXZlciA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZhdWx0IGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZSByZXF1ZXN0CiAgICAgICAgbGV0IHZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9IDwtIHNlbGYuY29hLndpdGhkcmF3VG9rZW5zKAogICAgICAgICAgICB0eXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgYW1vdW50OiBhbW91bnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRW5zdXJlIHRoZSBicmlkZ2VkIHZhdWx0IGlzIHRoZSBjb3JyZWN0IHR5cGUKICAgICAgICBhc3NlcnQodmF1bHQuZ2V0VHlwZSgpID09IHNlbGYudmF1bHRUeXBlLCBtZXNzYWdlOiAiQnJpZGdlZCB2YXVsdCB0eXBlIG1pc21hdGNoIikKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIHRva2VuIGludG8gdGhlIHNpZ25lcidzIHZhdWx0CiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "bridgeTokensToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0KSB7CgogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYmFsYW5jZSAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgYnJpZGdlIGZlZSBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiBzdG9yYWdlIHVzYWdlIHdpdGggc29tZSBidWZmZXIKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdFRva2VucygKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeTokensToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKHRva2VuQ29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCB0b2tlbkNvbnRyYWN0TmFtZTogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCwgY29udHJhY3RFVk1BZGRyZXNzOiBTdHJpbmcsIGRhdGE6IFtVSW50OF0sIGdhc0xpbWl0OiBVSW50NjQpIHsKCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UsIEVWTS5DYWxsLCBFVk0uT3duZXIpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgIGFkZHJlc3M6IHRva2VuQ29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICBjb250cmFjdE5hbWU6IHRva2VuQ29udHJhY3ROYW1lLAogICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJWYXVsdCIKICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgb2Y6ICIgLmNvbmNhdCh0b2tlbkNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpKS5jb25jYXQoIi4iKS5jb25jYXQodG9rZW5Db250cmFjdE5hbWUpLmNvbmNhdCgiLlZhdWx0IikpCgogICAgICAgIHNlbGYuY29hLmRlcG9zaXRUb2tlbnMoCiAgICAgICAgICAgIHZhdWx0OiA8LXNlbGYuc2VudFZhdWx0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQoKICAgICAgICB2YXIgYWRkcmVzc0J5dGVzOiBbVUludDhdID0gY29udHJhY3RFVk1BZGRyZXNzLmRlY29kZUhleCgpCiAgICAgICAgbGV0IGV2bVRva2VuQWRkciA9IEVWTS5FVk1BZGRyZXNzKGJ5dGVzOiBbCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1swXSwgYWRkcmVzc0J5dGVzWzFdLCBhZGRyZXNzQnl0ZXNbMl0sIGFkZHJlc3NCeXRlc1szXSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzRdLCBhZGRyZXNzQnl0ZXNbNV0sIGFkZHJlc3NCeXRlc1s2XSwgYWRkcmVzc0J5dGVzWzddLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbOF0sIGFkZHJlc3NCeXRlc1s5XSwgYWRkcmVzc0J5dGVzWzEwXSwgYWRkcmVzc0J5dGVzWzExXSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzEyXSwgYWRkcmVzc0J5dGVzWzEzXSwgYWRkcmVzc0J5dGVzWzE0XSwgYWRkcmVzc0J5dGVzWzE1XSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzE2XSwgYWRkcmVzc0J5dGVzWzE3XSwgYWRkcmVzc0J5dGVzWzE4XSwgYWRkcmVzc0J5dGVzWzE5XQogICAgICAgIF0pCiAgICAgICAgbGV0IHZhbHVlQmFsYW5jZSA9IEVWTS5CYWxhbmNlKGF0dG9mbG93OiAwKQogICAgICAgIC8vIGxldCBkYXRhID0gZGF0YVN0ci5kZWNvZGVIZXgoKQogICAgICAgICBsZXQgdHhSZXN1bHQgPSBzZWxmLmNvYS5jYWxsKAogICAgICAgICAgICB0bzogZXZtVG9rZW5BZGRyLAogICAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgICBnYXNMaW1pdDogZ2FzTGltaXQsCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZUJhbGFuY2UKICAgICAgICApCgogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuZmFpbGVkIHx8IHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLnN1Y2Nlc3NmdWwsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeTokensToEvmAddressV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bUFkZHJlc3NWMiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCwgcmVjaXBpZW50OiBTdHJpbmcpIHsKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAogICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgVmF1bHQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IHZhdWx0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIHZhdWx0IHR5cGUgLSByZXF1ZXN0ZWQ6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgc2VsZi5zZW50VmF1bHQuYmFsYW5jZSA9PSBhbW91bnQ6ICJBbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVlc3RlZCBhbW91bnQiCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBWYXVsdCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgdHJhbnNhY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCiAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VUb2tlbnNUb0VWTSgKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", - "bridgeTokensToEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bVYyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCi8vLyBCcmlkZ2VzIGEgVmF1bHQgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmFnZSB0byB0aGUgc2lnbmVyJ3MgQ09BIGluIEVWTS5BY2NvdW50LgovLy8KLy8vIE5PVEU6IFRoaXMgdHJhbnNhY3Rpb24gYWxzbyBvbmJvYXJkcyB0aGUgVmF1bHQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gdmF1bHRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQgdG8gYnJpZGdlCi8vLyAgICAgLSBlLmcuIHZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gYW1vdW50OiBUaGUgYW1vdW50IG9mIHRva2VucyB0byBicmlkZ2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCkgewogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIHZhciBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIFZhdWx0IHJlcXVpcmVzIG9uYm9hcmRpbmcgLSB0aGlzIGltcGFjdHMgdGhlIGZlZSByZXF1aXJlZAogICAgICAgIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nID0gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKSkKICAgICAgICAgICAgPz8gcGFuaWMoIkJyaWRnZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXNzZXQgdHlwZSIpCiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICBhcHByb3hGZWUgPSBhcHByb3hGZWUgKyBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUKICAgICAgICB9CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgcHJlIHsKICAgICAgICBzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCkuaWRlbnRpZmllciA9PSB2YXVsdElkZW50aWZpZXI6CiAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNlbmQgaW52YWxpZCB2YXVsdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgIC5jb25jYXQoIiwgc2VuZGluZzogIikuY29uY2F0KHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgLy8gT25ib2FyZCB0aGUgVmF1bHQgdG8gdGhlIGJyaWRnZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICBzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCksCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdFRva2VucygKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "calculateBridgeFee": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjYWxjdWxhdGVCcmlkZ2VGZWUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgdGhlIGNhbGN1bGF0ZWQgZmVlIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCB0byBlc2Nyb3cgYW4gYXNzZXQgcGx1cyB0aGUgYmFzZSBmZWUuCi8vLwovLy8gQHBhcmFtIGJ5dGVzOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8gZXNjcm93IGFuIGFzc2V0LgovLy8KLy8vIEByZXR1cm4gVGhlIGNhbGN1bGF0ZWQgZmVlIHRvIGJlIHBhaWQgaW4gRmxvd1Rva2VuCi8vLwphY2Nlc3MoYWxsKQpmdW4gbWFpbihieXRlcyB1c2VkOiBVSW50NjQpOiBVRml4NjQgewogICAgcmV0dXJuIEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IHVzZWQpCn0K", - "evmAddressRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk1VdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgd2hldGhlciBhIEVWTSBjb250cmFjdCBuZWVkcyB0byBiZSBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcGFyYW0gZXZtQWRkcmVzc0hleDogVGhlIGhleC1lbmNvZGVkIGFkZHJlc3Mgb2YgdGhlIEVWTSBjb250cmFjdCBhcyBhIFN0cmluZyB3aXRob3V0IDB4IHByZWZpeAovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgY29udHJhY3QgcmVxdWlyZXMgb25ib2FyZGluZyB0byB0aGUgRmxvd0VWTUJyaWRnZSBpZiB0aGUgdHlwZSBpcyBicmlkZ2VhYmxlLCBvdGhlcndpc2UgbmlsCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihldm1BZGRyZXNzSGV4OiBTdHJpbmcpOiBCb29sPyB7CiAgICBpZiBsZXQgYWRkcmVzcyA9IEVWTVV0aWxzLmdldEVWTUFkZHJlc3NGcm9tSGV4U3RyaW5nKGFkZHJlc3M6IGV2bUFkZHJlc3NIZXgpIHsKICAgICAgICByZXR1cm4gRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3MpCiAgICB9CiAgICByZXR1cm4gbmlsCn0K", - "getAssociatedEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBc3NvY2lhdGVkRXZtQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBFVk1VdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgdGhlIEVWTSBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gQ2FkZW5jZSB0eXBlIChhcyBpdHMgaWRlbnRpZmllciBTdHJpbmcpCi8vLwovLy8gQHBhcmFtIHR5cGVJZGVudGlmaWVyIFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBTdHJpbmcKLy8vCi8vLyBAcmV0dXJuIFRoZSBFVk0gYWRkcmVzcyBhcyBhIGhleCBzdHJpbmcgaWYgdGhlIHR5cGUgaGFzIGFuIGFzc29jaWF0ZWQgRVZNQWRkcmVzcywgb3RoZXJ3aXNlIG5pbAovLy8KYWNjZXNzKGFsbCkKZnVuIG1haW4oaWRlbnRpZmllcjogU3RyaW5nKTogU3RyaW5nPyB7CiAgICBpZiBsZXQgdHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgewogICAgICAgIGlmIGxldCBhZGRyZXNzID0gRmxvd0VWTUJyaWRnZUNvbmZpZy5nZXRFVk1BZGRyZXNzQXNzb2NpYXRlZCh3aXRoOiB0eXBlKSB7CiAgICAgICAgICAgIHJldHVybiBFVk1VdGlscy5nZXRFVk1BZGRyZXNzQXNIZXhTdHJpbmcoYWRkcmVzczogYWRkcmVzcykKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbmlsCn0=", - "getAssociatedFlowIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBc3NvY2lhdGVkRmxvd0lkZW50aWZpZXIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTSBmcm9tIDB4RVZNCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlQ29uZmlnCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihhZGRyZXNzOiBTdHJpbmcpOiBTdHJpbmc/IHsKICAgIGlmIGxldCB0eXBlSW5mbyA9IEZsb3dFVk1CcmlkZ2VDb25maWcuZ2V0VHlwZUFzc29jaWF0ZWQod2l0aDogRVZNLmFkZHJlc3NGcm9tU3RyaW5nKGFkZHJlc3MpKSB7CiAgICAgICAgcmV0dXJuIHR5cGVJbmZvLmlkZW50aWZpZXIKICAgIH0KICAgIHJldHVybiBuaWwKfQ==", - "getBridgeCoaAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRCcmlkZ2VDb2FBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB0aGUgRVZNIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHJldHVybiBUaGUgRVZNIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBGbG93RVZNQnJpZGdlJ3MgY29vcmRpbmF0aW5nIENhZGVuY2VPd25lZEFjY291bnQKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKCk6IFN0cmluZyB7CiAgICBsZXQgYWRkcmVzczogRVZNLkVWTUFkZHJlc3MgPSBGbG93RVZNQnJpZGdlLmdldEJyaWRnZUNPQUVWTUFkZHJlc3MoKQogICAgcmV0dXJuIEVWTVV0aWxzLmdldEVWTUFkZHJlc3NBc0hleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzKQp9", - "onboardByEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBvbmJvYXJkQnlFdm1BZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBFVk1VdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIE5GVCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBORlRzIGJldHdlZW4gZW52aXJvbm1lbnRzCi8vLyBOT1RFOiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgYnJpZGdpbmcgYSBDYWRlbmNlLW5hdGl2ZSBORlQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIGNvbnRyYWN0QWRkcmVzc0hleDogVGhlIEVWTSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCAoYXMgaGV4IHN0cmluZyB3aXRob3V0IDB4IHByZWZpeCkgZGVmaW5pbmcgdGhlIAovLy8gICAgIGJyaWRnZWFibGUgYXNzZXQgdG8gYmUgb25ib2FyZGVkCi8vLwp0cmFuc2FjdGlvbihjb250cmFjdEFkZHJlc3NIZXg6IFN0cmluZykgewoKICAgIGxldCBjb250cmFjdEFkZHJlc3M6IEVWTS5FVk1BZGRyZXNzCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgRVZNQWRkcmVzcyBmcm9tIGhleCBzdHJpbmcgKG5vIGxlYWRpbmcgYCIweCJgKSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIHNlbGYuY29udHJhY3RBZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogY29udHJhY3RBZGRyZXNzSGV4KQogICAgICAgICAgICA/PyBwYW5pYygiSW52YWxpZCBFVk0gYWRkcmVzcyBzdHJpbmcgcHJvdmlkZWQiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIE9uYm9hcmQgdGhlIEVWTSBjb250cmFjdAogICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5RVZNQWRkcmVzcygKICAgICAgICAgICAgc2VsZi5jb250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "onboardByType": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBvbmJvYXJkQnlUeXBlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgYXNzZXQgdHlwZSB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgYXNzZXRzIGJldHdlZW4gZW52aXJvbm1lbnRzCi8vLyBOT1RFOiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgYnJpZGdpbmcgYSBDYWRlbmNlLW5hdGl2ZSBhc3NldCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gdHlwZTogVGhlIENhZGVuY2UgdHlwZSBvZiB0aGUgYnJpZGdlYWJsZSBhc3NldCB0byBvbmJvYXJkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKHR5cGU6IFR5cGUpIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIE9uYm9hcmQgdGhlIGFzc2V0IFR5cGUKICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgIHR5cGUsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "onboardByTypeIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBvbmJvYXJkQnlUeXBlSWRlbnRpZmllciAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIGFzc2V0IHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgYXNzZXQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIGlkZW50aWZlcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBicmlkZ2VhYmxlIGFzc2V0IHRvIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlCi8vLwp0cmFuc2FjdGlvbihpZGVudGlmaWVyOiBTdHJpbmcpIHsKCiAgICBsZXQgdHlwZTogVHlwZQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSB0eXBlIGZyb20gaWRlbnRpZmllciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIHNlbGYudHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgPz8gcGFuaWMoIkludmFsaWQgdHlwZSBpZGVudGlmaWVyIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBPbmJvYXJkIHRoZSBhc3NldCBUeXBlCiAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICBzZWxmLnR5cGUsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "typeRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0eXBlUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgdHlwZSBuZWVkcyB0byBiZSBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcGFyYW0gdHlwZTogVGhlIENhZGVuY2UgVHlwZSBpbiBxdWVzdGlvbgovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKHR5cGU6IFR5cGUpOiBCb29sPyB7CiAgICByZXR1cm4gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpCn0K", - "typeRequiresOnboardingByIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0eXBlUmVxdWlyZXNPbmJvYXJkaW5nQnlJZGVudGlmaWVyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgdHlwZSBuZWVkcyB0byBiZSBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcGFyYW0gaWRlbnRpZmllcjogVGhlIGlkZW50aWZpZXIgb2YgdGhlIENhZGVuY2UgVHlwZSBpbiBxdWVzdGlvbgovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGlkZW50aWZpZXI6IFN0cmluZyk6IEJvb2w/IHsKICAgIGlmIGxldCB0eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSB7CiAgICAgICAgcmV0dXJuIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKQogICAgfQogICAgcmV0dXJuIG5pbAp9Cg==" + "batchBridgeNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRGcm9tRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdENvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gbmZ0Q29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgTkZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZHM6IFtVSW50MjU2XSkgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzcyMSBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gTkZUIHR5cGUKICAgICAgICBzZWxmLm5mdFR5cGUgPSBGbG93RVZNQnJpZGdlVXRpbHMuYnVpbGRDb21wb3NpdGVUeXBlKAogICAgICAgICAgICAgICAgYWRkcmVzczogbmZ0Q29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICAgICAgY29udHJhY3ROYW1lOiBuZnRDb250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJORlQiCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUiKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSAqIFVGaXg2NChpZHMubGVuZ3RoKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGZvciBpZCBpbiBpZHMgewogICAgICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgICAgIHR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLmNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1uZnQpCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgTkZUIGludG8gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24KICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "batchBridgeNFTFromEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRGcm9tRXZtVjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50MjU2XSkgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIHNlbGYubmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBzZWxmLm5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGNvbGxlY3Rpb24gZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgKEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZSAqIFVGaXg2NChpZHMubGVuZ3RoKSkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgd2hpbGUgaWR4IDwgaWRzLmxlbmd0aCB7CiAgICAgICAgICAgIGxldCBuZnRJZCA9IGlkc1tpZHhdIQogICAgICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgaWQ6IG5mdElkLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCBuZnQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQoc2VsZi5uZnRUeXBlLmlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgiLCByZWNlaXZlZDogIikuY29uY2F0KG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICAgICAgKQogICAgICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchBridgeNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRUb0V2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWRzOiBbVUludDY0XSkgewogICAgCiAgICBsZXQgbmZ0czogQHtVSW50NjQgOiB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIHNlbGYubmZ0cyA8LSB7fQogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgICAgICBzZWxmLm5mdHNbaWRdIDwtISBuZnQKICAgICAgICB9CiAgICAgICAgLy8gc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAgKiBVRml4NjQoaWRzLmxlbmd0aCkKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIHdoaWxlIGlkeCA8IGlkcy5sZW5ndGggewogICAgICAgICAgICBsZXQgbmZ0SWQgPSBpZHNbaWR4XSEKICAgICAgICAgICAgbGV0IG5mdCA8LSBzZWxmLm5mdHMucmVtb3ZlKGtleTogbmZ0SWQpISBhcyBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKCAKICAgICAgICAgICAgICAgIG5mdDogPC0gbmZ0ISwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5uZnRzCiAgICB9Cn0K", + "batchBridgeNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRUb0V2bUFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKLy8vIEJyaWRnZXMgYW4gTkZUIGZyb20gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24gaW4gQ2FkZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BIGluIEZsb3dFVk0KLy8vCi8vLyBOT1RFOiBUaGlzIHRyYW5zYWN0aW9uIGFsc28gb25ib2FyZHMgdGhlIE5GVCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgQ2FkZW5jZSBORlQuaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0sIHJlY2lwaWVudDogU3RyaW5nKSB7CiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvbGxlY3Rpb246IGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7ICAgICAgICAKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBORlQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIHNlbGYuY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZHNbMF0pCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkgKyAoRmxvd0VWTUJyaWRnZUNvbmZpZy5iYXNlRmVlICogVUZpeDY0KGlkcy5sZW5ndGgpKQoKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLm5mdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gbmZ0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIG5mdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIE5GVCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgdHJhbnNhY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCiAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VORlRUb0VWTSgKICAgICAgICAgICAgdG9rZW46IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCgogICAgICAgIGZvciBpZCBpbiBpZHMgewogICAgICAgICAgICBpZiBpZHggPT0gMCB7CiAgICAgICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICAgICAgdG9rZW46IDwtIHNlbGYuY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCksCiAgICAgICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "batchBridgeNFTToEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRUb0V2bVYyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgoKLy8vIEJyaWRnZXMgYW4gTkZUIGZyb20gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24gaW4gQ2FkZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BIGluIEZsb3dFVk0KLy8vCi8vLyBOT1RFOiBUaGlzIHRyYW5zYWN0aW9uIGFsc28gb25ib2FyZHMgdGhlIE5GVCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgQ2FkZW5jZSBORlQuaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICAgIAogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWRzWzBdKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgKEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZSAqIFVGaXg2NChpZHMubGVuZ3RoKSkKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LSBuZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQoKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIHdoaWxlIGlkeCA8IGlkcy5sZW5ndGggewogICAgICAgICAgICAgaWYgaWR4ID09IDAgewogICAgICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbmZ0SWQgPSBpZHNbaWR4XSEKICAgICAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IG5mdElkKSEgYXMgQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgICAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgICAgIG5mdDogPC0gbmZ0LAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchEvmAddressRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hFdm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSBFVk0gY29udHJhY3QgbmVlZHMgdG8gYmUgb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHBhcmFtIGV2bUFkZHJlc3NlczogQXJyYXkgb2YgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgRVZNIGNvbnRyYWN0IGFzIGEgU3RyaW5nIHdpdGhvdXQgMHggcHJlZml4IHRvIGNoZWNrIGZvcgovLy8gICAgIG9uYm9hcmRpbmcgc3RhdHVzCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSBjb250cmFjdCByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vICAgICBpbmRleGVkIG9uIHRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBFVk0gY29udHJhY3Qgd2l0aG91dCAweCBwcmVmaXgKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGV2bUFkZHJlc3NlczogW1N0cmluZ10pOiB7U3RyaW5nOiBCb29sP30gewogICAgbGV0IHJlc3VsdHM6IHtTdHJpbmc6IEJvb2w/fSA9IHt9CiAgICBmb3IgYWRkcmVzc0hleCBpbiBldm1BZGRyZXNzZXMgewogICAgICAgIGlmIHJlc3VsdHNbYWRkcmVzc0hleF0gIT0gbmlsIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CiAgICAgICAgaWYgbGV0IGFkZHJlc3MgPSBFVk1VdGlscy5nZXRFVk1BZGRyZXNzRnJvbUhleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzSGV4KSB7CiAgICAgICAgICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcykKICAgICAgICAgICAgcmVzdWx0cy5pbnNlcnQoa2V5OiBhZGRyZXNzSGV4LCByZXF1aXJlc09uYm9hcmRpbmcpCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdHMKfQo=", + "batchIdentifierRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hJZGVudGlmaWVyUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgd2hldGhlciBhIHR5cGUgbmVlZHMgdG8gYmUgb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHBhcmFtIFR5cGVzOiBUaGUgYXJyYXkgb2YgdHlwZXMgdG8gY2hlY2sgZm9yIG9uYm9hcmRpbmcgc3RhdHVzCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbCBpbmRleGVkCi8vLyAgICAgb24gdGhlIHR5cGUKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGlkZW50aWZpZXJzOiBbU3RyaW5nXSk6IHtTdHJpbmc6IEJvb2w/fSB7CiAgICBsZXQgcmVzdWx0czoge1N0cmluZzogQm9vbD99ID0ge30KCiAgICBmb3IgaWRlbnRpZmllciBpbiBpZGVudGlmaWVycyB7CiAgICAgICAgaWYgcmVzdWx0c1tpZGVudGlmaWVyXSAhPSBuaWwgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KICAgICAgICBsZXQgdHlwZTogVHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgPz8gcGFuaWMoIkludmFsaWQgdHlwZSBpZGVudGlmaWVyIikKICAgICAgICByZXN1bHRzLmluc2VydChrZXk6IGlkZW50aWZpZXIsIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKSkKICAgIH0KICAgIHJldHVybiByZXN1bHRzCn0K", + "batchOnboardByEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hPbmJvYXJkQnlFdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRVZNVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBORlQgdHlwZSB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgTkZUcyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgTkZUIHRvIEVWTQovLy8KLy8vIEBwYXJhbSBhZGRyZXNzZXNBc0hleDogQXJyYXkgb2YgRVZNIGNvbnRyYWN0IGFkZHJlc3NlcyAoYXMgaGV4IHN0cmluZyB3aXRob3V0IDB4IHByZWZpeCkgZGVmaW5pbmcgdGhlIAovLy8gICAgIGJyaWRnZWFibGUgYXNzZXQgdG8gYmUgb25ib2FyZGVkCi8vLwp0cmFuc2FjdGlvbihhZGRyZXNzZXNBc0hleDogW1N0cmluZ10pIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICAvLyBTZXQgYSB3aXRoZHJhd2FsIGxpbWl0IGZvciB0aGUgcHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NChhZGRyZXNzZXNBc0hleC5sZW5ndGgpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAgICAgLy8gQ3JlYXRlIFNjb3BlZEZUUHJvdmlkZXIgdG8gZXhwaXJlIGp1c3QgYWZ0ZXIgdGhpcyB0cmFuc2FjdGlvbgogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBwcm92aWRlZCBhcnJheQogICAgICAgIGZvciBhZGRyZXNzSGV4IGluIGFkZHJlc3Nlc0FzSGV4IHsKICAgICAgICAgICAgLy8gQ29udmVydCBoZXggc3RyaW5nIHRvIEVWTUFkZHJlc3MKICAgICAgICAgICAgbGV0IGFkZHJlc3MgPSBFVk1VdGlscy5nZXRFVk1BZGRyZXNzRnJvbUhleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzSGV4KQogICAgICAgICAgICAvLyBDb250aW51ZSBpZiB0aGUgaGV4IGlzIG5vdCBhIHZhbGlkIEVWTSBhZGRyZXNzIG9yIGlmIHRoZSBhZGRyZXNzIGlzIGFscmVhZHkgb25ib2FyZGVkCiAgICAgICAgICAgIGlmIGFkZHJlc3MgPT0gbmlsIHx8IEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzISkgIT0gdHJ1ZSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeUVWTUFkZHJlc3MoCiAgICAgICAgICAgICAgICBhZGRyZXNzISwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchOnboardByIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hPbmJvYXJkQnlJZGVudGlmaWVyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIGFzc2V0IHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgYXNzZXQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIHR5cGVzOiBUaGUgQ2FkZW5jZSB0eXBlcyBvZiB0aGUgYnJpZGdlYWJsZSBhc3NldCB0byBvbmJvYXJkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKGlkZW50aWZpZXJzOiBbU3RyaW5nXSkgewoKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIC8vIFNldCBhIHdpdGhkcmF3YWwgbGltaXQgZm9yIHRoZSBwcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckxpbWl0ID0gRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlICogVUZpeDY0KHR5cGVzLmxlbmd0aCkKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIocHJvdmlkZXJMaW1pdCkKICAgICAgICAvLyBDcmVhdGUgU2NvcGVkRlRQcm92aWRlciB0byBleHBpcmUganVzdCBhZnRlciB0aGlzIHRyYW5zYWN0aW9uCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgZm9yIGlkZW50aWZpZXJzIGluIGlkZW50aWZpZXJzIHsgCiAgICAgICAgICAgIGxldCB0eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSA/PyBwYW5pYygiSW52YWxpZCB0eXBlIGlkZW50aWZpZXIiKQogICAgICAgICAgICAvLyBDb250aW51ZSBvbiBpZiB0aGUgdHlwZSBkb2VzIG5vdCByZXF1aXJlIG9uYm9hcmRpbmcKICAgICAgICAgICAgaWYgRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpICE9IHRydWUgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBhc3NldCBUeXBlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHR5cGUsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "batchOnboardByType": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hPbmJvYXJkQnlUeXBlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIGFzc2V0IHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgYXNzZXQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIHR5cGVzOiBUaGUgQ2FkZW5jZSB0eXBlcyBvZiB0aGUgYnJpZGdlYWJsZSBhc3NldCB0byBvbmJvYXJkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKHR5cGVzOiBbVHlwZV0pIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICAvLyBTZXQgYSB3aXRoZHJhd2FsIGxpbWl0IGZvciB0aGUgcHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NCh0eXBlcy5sZW5ndGgpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAgICAgLy8gQ3JlYXRlIFNjb3BlZEZUUHJvdmlkZXIgdG8gZXhwaXJlIGp1c3QgYWZ0ZXIgdGhpcyB0cmFuc2FjdGlvbgogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGZvciB0eXBlIGluIHR5cGVzIHsgCiAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGlmIHRoZSB0eXBlIGRvZXMgbm90IHJlcXVpcmUgb25ib2FyZGluZwogICAgICAgICAgICBpZiBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcodHlwZSkgIT0gdHJ1ZSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIGFzc2V0IFR5cGUKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICAgICAgdHlwZSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchTypeRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hUeXBlUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgd2hldGhlciBhIHR5cGUgbmVlZHMgdG8gYmUgb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHBhcmFtIFR5cGVzOiBUaGUgYXJyYXkgb2YgdHlwZXMgdG8gY2hlY2sgZm9yIG9uYm9hcmRpbmcgc3RhdHVzCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbCBpbmRleGVkCi8vLyAgICAgb24gdGhlIHR5cGUKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKHR5cGVzOiBbVHlwZV0pOiB7VHlwZTogQm9vbD99IHsKICAgIGxldCByZXN1bHRzOiB7VHlwZTogQm9vbD99ID0ge30KICAgIGZvciB0eXBlIGluIHR5cGVzIHsKICAgICAgICBpZiByZXN1bHRzW3R5cGVdICE9IG5pbCB7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQogICAgICAgIHJlc3VsdHMuaW5zZXJ0KGtleTogdHlwZSwgRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpKQogICAgfQogICAgcmV0dXJuIHJlc3VsdHMKfQo=", + "bridgeNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdENvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gbmZ0Q29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgTkZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDI1NikgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzcyMSBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gTkZUIHR5cGUKICAgICAgICBzZWxmLm5mdFR5cGUgPSBGbG93RVZNQnJpZGdlVXRpbHMuYnVpbGRDb21wb3NpdGVUeXBlKAogICAgICAgICAgICAgICAgYWRkcmVzczogbmZ0Q29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICAgICAgY29udHJhY3ROYW1lOiBuZnRDb250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJORlQiCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUiKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTFromEvmToFlow": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdENvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gbmZ0Q29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgTkZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDI1NiwgcmVjZWl2ZXI6IEFkZHJlc3MpIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkM3MjEgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIE5GVCB0eXBlCiAgICAgICAgc2VsZi5uZnRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IG5mdENvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogbmZ0Q29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiTkZUIgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIikKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24gLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2goY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvbGxlY3Rpb25DYXAsIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIH0KCiAgICAgICAgbGV0IHJlY2VpdmVyQWNjdCA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gcmVjZWl2ZXJBY2N0LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGNhcGFiaWxpdGllcyBmcm9tIHB1YmxpYyBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTFromEvmToFlowV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bVRvRmxvd1YyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCgoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gYnJpZGdlcyBhbiBORlQgZnJvbSBFVk0gdG8gQ2FkZW5jZSBhc3N1bWluZyBpdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZS4KLy8vIEFsc28ga25vdyB0aGF0IHRoZSByZWNpcGllbnQgRmxvdyBhY2NvdW50IG11c3QgaGF2ZSBhIFJlY2VpdmVyIGNhcGFibGUgb2YgcmVjZWl2aW5nIHRoZSB0aGlzIGJyaWRnZWQgTkZUIGFjY2Vzc2libGUKLy8vIHZpYSBwdWJsaXNoZWQgQ2FwYWJpbGl0eSBhdCB0aGUgdG9rZW4ncyBzdGFuZGFyZCBwYXRoLgovLy8gTk9URTogVGhlIEVSQzcyMSBtdXN0IGhhdmUgZmlyc3QgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIGJyaWRnZS4gVGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlIG1ldGhvZAovLy8gICAgIEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzOiBzZWxmLmV2bUNvbnRyYWN0QWRkcmVzcykKLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLyBAcGFyYW0gcmVjaXBpZW50OiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgYnJpZGdlZCBORlQKLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQyNTYsIHJlY2lwaWVudDogQWRkcmVzcykgewogICAgbGV0IG5mdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLm5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSByZWNpcGllbnQncyBORlQgUmVjZWl2ZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIC8vIENvbmZpZ3VyZSB0aGUgc2lnbmVyJ3MgYWNjb3VudCBmb3IgdGhpcyBORlQKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5yZWNlaXZlciA9IGdldEFjY291bnQocmVjaXBpZW50KS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFJlY2VpdmVyIGZyb20gcmVjaXBpZW50J3MgcHVibGljIGNhcGFiaWxpdHkgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRW5zdXJlIHRoZSBicmlkZ2VkIG5mdCBpcyB0aGUgY29ycmVjdCB0eXBlCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgbWVzc2FnZTogIkJyaWRnZWQgbmZ0IHR5cGUgbWlzbWF0Y2ggLSByZXF1ZXN3dGVkOiAiLmNvbmNhdChzZWxmLm5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgIC5jb25jYXQoIiwgcmVjZWl2ZWQ6ICIpLmNvbmNhdChuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgTkZUIGludG8gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24KICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "bridgeNFTFromEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bVYyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDI1NikgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIHNlbGYubmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBzZWxmLm5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGNvbGxlY3Rpb24gZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgIHR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCBuZnQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgbmZ0LmdldFR5cGUoKSA9PSBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQoc2VsZi5uZnRUeXBlLmlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "bridgeNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdENvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgbmZ0Q29udHJhY3ROYW1lOiBTdHJpbmcsIGlkOiBVSW50NjQpIHsKICAgIAogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LXNlbGYubmZ0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDY0LCBjb250cmFjdEVWTUFkZHJlc3M6IFN0cmluZywgZGF0YTogW1VJbnQ4XSwgZ2FzTGltaXQ6IFVJbnQ2NCkgewogICAgCiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlLCBFVk0uQ2FsbCwgRVZNLk93bmVyKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlLCBFVk0uQ2FsbCwgRVZNLk93bmVyKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgdmFyIGFkZHJlc3NCeXRlczogW1VJbnQ4XSA9IGNvbnRyYWN0RVZNQWRkcmVzcy5kZWNvZGVIZXgoKQogICAgICAgIGxldCBldm1Ub2tlbkFkZHIgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogWwogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMF0sIGFkZHJlc3NCeXRlc1sxXSwgYWRkcmVzc0J5dGVzWzJdLCBhZGRyZXNzQnl0ZXNbM10sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1s0XSwgYWRkcmVzc0J5dGVzWzVdLCBhZGRyZXNzQnl0ZXNbNl0sIGFkZHJlc3NCeXRlc1s3XSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzhdLCBhZGRyZXNzQnl0ZXNbOV0sIGFkZHJlc3NCeXRlc1sxMF0sIGFkZHJlc3NCeXRlc1sxMV0sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1sxMl0sIGFkZHJlc3NCeXRlc1sxM10sIGFkZHJlc3NCeXRlc1sxNF0sIGFkZHJlc3NCeXRlc1sxNV0sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1sxNl0sIGFkZHJlc3NCeXRlc1sxN10sIGFkZHJlc3NCeXRlc1sxOF0sIGFkZHJlc3NCeXRlc1sxOV0KICAgICAgICBdKQogICAgICAgIGxldCB2YWx1ZUJhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICAvLyBsZXQgZGF0YSA9IGRhdGFTdHIuZGVjb2RlSGV4KCkKCiAgICAgICAgbGV0IHR4UmVzdWx0ID0gc2VsZi5jb2EuY2FsbCgKICAgICAgICAgICAgdG86IGV2bVRva2VuQWRkciwKICAgICAgICAgICAgZGF0YTogZGF0YSwKICAgICAgICAgICAgZ2FzTGltaXQ6IGdhc0xpbWl0LAogICAgICAgICAgICB2YWx1ZTogdmFsdWVCYWxhbmNlCiAgICAgICAgKQoKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTToEvmAddressV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm1BZGRyZXNzVjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gQnJpZGdlcyBhbiBORlQgZnJvbSB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbiBpbiBDYWRlbmNlIHRvIHRoZSBuYW1lZCByZWNpcGllbnQgaW4gRVZNLgovLy8KLy8vIE5PVEU6IFRoaXMgdHJhbnNhY3Rpb24gYWxzbyBvbmJvYXJkcyB0aGUgTkZUIHRvIHRoZSBicmlkZ2UgaWYgbmVjZXNzYXJ5IHdoaWNoIG1heSBpbmN1ciBhZGRpdGlvbmFsIGZlZXMKLy8vICAgICB0aGFuIGJyaWRnaW5nIGFuIGFzc2V0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQuCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBDYWRlbmNlIE5GVC5pZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBFVk0KLy8vIEBwYXJhbSByZWNpcGllbnQ6IFRoZSBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyB0byByZWNlaXZlIHRoZSBORlQKLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCwgcmVjaXBpZW50OiBTdHJpbmcpIHsKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgcmVxdWlyZXNPbmJvYXJkaW5nOiBCb29sCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgeyAgICAgICAgCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkgKyBGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLm5mdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gbmZ0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIG5mdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIE5GVCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgdHJhbnNhY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCiAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VORlRUb0VWTSgKICAgICAgICAgICAgdG9rZW46IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIHRvOiBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KSwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "bridgeNFTToEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm1WMiAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBCcmlkZ2VzIGFuIE5GVCBmcm9tIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uIGluIENhZGVuY2UgdG8gdGhlIHNpZ25lcidzIENPQSBpbiBGbG93RVZNCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBORlQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIENhZGVuY2UgTkZULmlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHZhciBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSArIEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZQogICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgTkZUIHJlcXVpcmVzIG9uYm9hcmRpbmcgLSB0aGlzIGltcGFjdHMgdGhlIGZlZSByZXF1aXJlZAogICAgICAgIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nID0gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHNlbGYubmZ0LmdldFR5cGUoKSkKICAgICAgICAgICAgPz8gcGFuaWMoIkJyaWRnZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXNzZXQgdHlwZSIpCiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICBhcHByb3hGZWUgPSBhcHByb3hGZWUgKyBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUKICAgICAgICB9CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgcHJlIHsKICAgICAgICBzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllciA9PSBuZnRJZGVudGlmaWVyOgogICAgICAgICAgICAiQXR0ZW1wdGluZyB0byBzZW5kIGludmFsaWQgbmZ0IHR5cGUgLSByZXF1ZXN0ZWQ6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgIC5jb25jYXQoIiwgc2VuZGluZzogIikuY29uY2F0KHNlbGYubmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgLy8gT25ib2FyZCB0aGUgTkZUIHRvIHRoZSBicmlkZ2UKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgfQogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC1zZWxmLm5mdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "bridgeTokensFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgZnVuZ2libGUgdG9rZW5zIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlCi8vLyBGbG93RVZNQnJpZGdlLgovLy8KLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIHRva2VuQ29udHJhY3RBZGRyZXNzOiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgaG9zdGluZyB0aGUgRlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIHRva2VuQ29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgVmF1bHQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIGFtb3VudDogVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYnJpZGdlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbih0b2tlbkNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgdG9rZW5Db250cmFjdE5hbWU6IFN0cmluZywgYW1vdW50OiBVSW50MjU2KSB7CgogICAgbGV0IHZhdWx0VHlwZTogVHlwZQogICAgbGV0IHJlY2VpdmVyOiAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8vIEdldCB0aGUgRVJDMjAgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIEZ1bmdpYmxlVG9rZW4gVmF1bHQgdHlwZQogICAgICAgIHNlbGYudmF1bHRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRva2VuQ29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICAgICAgY29udHJhY3ROYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSwKICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZTogIlZhdWx0IgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgb2Y6ICIgLmNvbmNhdCh0b2tlbkNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpKS5jb25jYXQoIi4iKS5jb25jYXQodG9rZW5Db250cmFjdE5hbWUpLmNvbmNhdCgiLlZhdWx0IikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIFZhdWx0IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0LCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICAvLyBJZiB0aGUgdmF1bHQgZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBpdCBhbmQgcHVibGlzaCBhY2NvcmRpbmcgdG8gdGhlIGNvbnRyYWN0J3MgZGVmaW5lZCBjb25maWd1cmF0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LXZhdWx0RGF0YS5jcmVhdGVFbXB0eVZhdWx0KCksIHRvOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEubWV0YWRhdGFQYXRoKQoKICAgICAgICAgICAgbGV0IHJlY2VpdmVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgbGV0IG1ldGFkYXRhQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcCwgYXQ6IHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChtZXRhZGF0YUNhcCwgYXQ6IHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYucmVjZWl2ZXIgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWYXVsdCBmcm9tIHN0b3JhZ2UgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgcmVxdWVzdAogICAgICAgIGxldCB2YXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fSA8LSBzZWxmLmNvYS53aXRoZHJhd1Rva2VucygKICAgICAgICAgICAgdHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgdG9rZW4gaW50byB0aGUgc2lnbmVyJ3MgdmF1bHQKICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC12YXVsdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeTokensFromEvmToFlow": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgZnVuZ2libGUgdG9rZW5zIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlCi8vLyBGbG93RVZNQnJpZGdlLgovLy8KLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIHRva2VuQ29udHJhY3RBZGRyZXNzOiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgaG9zdGluZyB0aGUgRlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIHRva2VuQ29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgVmF1bHQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIGFtb3VudDogVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYnJpZGdlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbih0b2tlbkNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgdG9rZW5Db250cmFjdE5hbWU6IFN0cmluZywgYW1vdW50OiBVSW50MjU2LCByZWNlaXZlcjogQWRkcmVzcykgewoKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlJlY2VpdmVyfQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzIwIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBGdW5naWJsZVRva2VuIFZhdWx0IHR5cGUKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgICAgICBhZGRyZXNzOiB0b2tlbkNvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogdG9rZW5Db250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJWYXVsdCIKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIG9mOiAiIC5jb25jYXQodG9rZW5Db250cmFjdEFkZHJlc3MudG9TdHJpbmcoKSkuY29uY2F0KCIuIikuY29uY2F0KHRva2VuQ29udHJhY3ROYW1lKS5jb25jYXQoIi5WYXVsdCIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBWYXVsdCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgLy8gSWYgdGhlIHZhdWx0IGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgaXQgYW5kIHB1Ymxpc2ggYWNjb3JkaW5nIHRvIHRoZSBjb250cmFjdCdzIGRlZmluZWQgY29uZmlndXJhdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC12YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKCiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxldCBtZXRhZGF0YUNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXAsIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gobWV0YWRhdGFDYXAsIGF0OiB2YXVsdERhdGEubWV0YWRhdGFQYXRoKQogICAgICAgIH0KICAgICAgICBsZXQgcmVjZWl2ZXJBY2N0ID0gZ2V0QWNjb3VudChyZWNlaXZlcikKICAgICAgICBzZWxmLnJlY2VpdmVyID0gcmVjZWl2ZXJBY2N0LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmF1bHQgcmVjZWl2ZXIgY2FwYWJpbGl0aWVzIGZyb20gcHVibGljIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIHRva2VuIGludG8gdGhlIHNpZ25lcidzIHZhdWx0CiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "bridgeTokensFromEvmToFlowV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bVRvRmxvd1YyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGZ1bmdpYmxlIHRva2VucyBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZQovLy8gRmxvd0VWTUJyaWRnZS4gVGhlIGZ1bGwgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGlzIHNvdXJjZWQgZnJvbSBFVk0sIHNvIGl0J3MgYXNzdW1lZCB0aGUgc2lnbmVyIGhhcyBzdWZmaWNpZW50Ci8vLyBiYWxhbmNlIG9mIHRoZSBFUkMyMCB0byBicmlkZ2luZyBpbnRvIENhZGVuY2UuIEFsc28ga25vdyB0aGF0IHRoZSByZWNpcGllbnQgRmxvdyBhY2NvdW50IG11c3QgaGF2ZSBhIFJlY2VpdmVyCi8vLyBjYXBhYmxlIG9mIHJlY2VpdmluZyB0aGUgYnJpZGdlZCB0b2tlbnMgYWNjZXNzaWJsZSB2aWEgcHVibGlzaGVkIENhcGFiaWxpdHkgYXQgdGhlIHRva2VuJ3Mgc3RhbmRhcmQgcGF0aC4KLy8vCi8vLyBOT1RFOiBUaGUgRVJDMjAgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIHZhdWx0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0IHRvIGJyaWRnZQovLy8gICAgIC0gZS5nLiB2YXVsdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGFtb3VudDogVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYnJpZGdlIGZyb20gRVZNIGFuZCB0cmFuc2ZlciB0byB0aGUgcmVjaXBpZW50Ci8vLyBAcGFyYW0gcmVjaXBpZW50OiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgYnJpZGdlZCB0b2tlbnMKLy8vCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVJbnQyNTYsIHJlY2lwaWVudDogQWRkcmVzcykgewoKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlJlY2VpdmVyfQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi52YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYudmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgVmF1bHQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQsIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIC8vIElmIHRoZSB2YXVsdCBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGl0IGFuZCBwdWJsaXNoIGFjY29yZGluZyB0byB0aGUgY29udHJhY3QncyBkZWZpbmVkIGNvbmZpZ3VyYXRpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCgogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBsZXQgbWV0YWRhdGFDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwLCBhdDogdmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKG1ldGFkYXRhQ2FwLCBhdDogdmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5yZWNlaXZlciA9IGdldEFjY291bnQocmVjaXBpZW50KS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZhdWx0IGZyb20gcmVjaXBpZW50J3MgYWNjb3VudCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgcmVxdWVzdAogICAgICAgIGxldCB2YXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fSA8LSBzZWxmLmNvYS53aXRoZHJhd1Rva2VucygKICAgICAgICAgICAgdHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCB2YXVsdCBpcyB0aGUgY29ycmVjdCB0eXBlCiAgICAgICAgYXNzZXJ0KHZhdWx0LmdldFR5cGUoKSA9PSBzZWxmLnZhdWx0VHlwZSwgbWVzc2FnZTogIkJyaWRnZWQgdmF1bHQgdHlwZSBtaXNtYXRjaCIpCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCB0b2tlbiBpbnRvIHRoZSBzaWduZXIncyB2YXVsdAogICAgICAgIHNlbGYucmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXZhdWx0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "bridgeTokensFromEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bVYyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gYnJpZGdlcyBmdW5naWJsZSB0b2tlbnMgZnJvbSBFVk0gdG8gQ2FkZW5jZSBhc3N1bWluZyBpdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZCB0byB0aGUKLy8vIEZsb3dFVk1CcmlkZ2UuCi8vLwovLy8gTk9URTogVGhlIEVSQzIwIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB2YXVsdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCB0byBicmlkZ2UKLy8vICAgICAtIGUuZy4gdmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGFtb3VudDogVUludDI1NikgewogICAgbGV0IHZhdWx0VHlwZTogVHlwZQogICAgbGV0IHJlY2VpdmVyOiAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIHNlbGYudmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBzZWxmLnZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogc2VsZi52YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBWYXVsdCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgLy8gSWYgdGhlIHZhdWx0IGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgaXQgYW5kIHB1Ymxpc2ggYWNjb3JkaW5nIHRvIHRoZSBjb250cmFjdCdzIGRlZmluZWQgY29uZmlndXJhdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC12YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKCiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxldCBtZXRhZGF0YUNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXAsIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gobWV0YWRhdGFDYXAsIGF0OiB2YXVsdERhdGEubWV0YWRhdGFQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLnJlY2VpdmVyID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmF1bHQgZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBFbnN1cmUgdGhlIGJyaWRnZWQgdmF1bHQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCh2YXVsdC5nZXRUeXBlKCkgPT0gc2VsZi52YXVsdFR5cGUsIG1lc3NhZ2U6ICJCcmlkZ2VkIHZhdWx0IHR5cGUgbWlzbWF0Y2giKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgdG9rZW4gaW50byB0aGUgc2lnbmVyJ3MgdmF1bHQKICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC12YXVsdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "bridgeTokensToEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbih0b2tlbkNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgdG9rZW5Db250cmFjdE5hbWU6IFN0cmluZywgYW1vdW50OiBVRml4NjQpIHsKCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0VG9rZW5zKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnNlbnRWYXVsdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeTokensToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0LCBjb250cmFjdEVWTUFkZHJlc3M6IFN0cmluZywgZGF0YTogW1VJbnQ4XSwgZ2FzTGltaXQ6IFVJbnQ2NCkgewoKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlLCBFVk0uQ2FsbCwgRVZNLk93bmVyKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewoKICAgICAgICBsZXQgdmF1bHRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgYWRkcmVzczogdG9rZW5Db250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogdG9rZW5Db250cmFjdE5hbWUsCiAgICAgICAgICAgIHJlc291cmNlTmFtZTogIlZhdWx0IgogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBvZjogIiAuY29uY2F0KHRva2VuQ29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkpLmNvbmNhdCgiLiIpLmNvbmNhdCh0b2tlbkNvbnRyYWN0TmFtZSkuY29uY2F0KCIuVmF1bHQiKSkKCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdFRva2VucygKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCgogICAgICAgIHZhciBhZGRyZXNzQnl0ZXM6IFtVSW50OF0gPSBjb250cmFjdEVWTUFkZHJlc3MuZGVjb2RlSGV4KCkKICAgICAgICBsZXQgZXZtVG9rZW5BZGRyID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IFsKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzBdLCBhZGRyZXNzQnl0ZXNbMV0sIGFkZHJlc3NCeXRlc1syXSwgYWRkcmVzc0J5dGVzWzNdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbNF0sIGFkZHJlc3NCeXRlc1s1XSwgYWRkcmVzc0J5dGVzWzZdLCBhZGRyZXNzQnl0ZXNbN10sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1s4XSwgYWRkcmVzc0J5dGVzWzldLCBhZGRyZXNzQnl0ZXNbMTBdLCBhZGRyZXNzQnl0ZXNbMTFdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTJdLCBhZGRyZXNzQnl0ZXNbMTNdLCBhZGRyZXNzQnl0ZXNbMTRdLCBhZGRyZXNzQnl0ZXNbMTVdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTZdLCBhZGRyZXNzQnl0ZXNbMTddLCBhZGRyZXNzQnl0ZXNbMThdLCBhZGRyZXNzQnl0ZXNbMTldCiAgICAgICAgXSkKICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgLy8gbGV0IGRhdGEgPSBkYXRhU3RyLmRlY29kZUhleCgpCiAgICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBldm1Ub2tlbkFkZHIsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeTokensToEvmAddressV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm1BZGRyZXNzVjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0LCByZWNpcGllbnQ6IFN0cmluZykgewogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYmFsYW5jZSAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgYnJpZGdlIGZlZSBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiBzdG9yYWdlIHVzYWdlIHdpdGggc29tZSBidWZmZXIKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBWYXVsdCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gdmF1bHRJZGVudGlmaWVyOgogICAgICAgICAgICAiQXR0ZW1wdGluZyB0byBzZW5kIGludmFsaWQgdmF1bHQgdHlwZSAtIHJlcXVlc3RlZDogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICBzZWxmLnNlbnRWYXVsdC5iYWxhbmNlID09IGFtb3VudDogIkFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWVzdGVkIGFtb3VudCIKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIFZhdWx0IHRvIHRoZSBicmlkZ2UKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICAgICAgc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgfQogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZSB0cmFuc2FjdGlvbgogICAgICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCkKICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZVRva2Vuc1RvRVZNKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnNlbnRWYXVsdCwKICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", + "bridgeTokensToEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm1WMiAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKLy8vIEJyaWRnZXMgYSBWYXVsdCBmcm9tIHRoZSBzaWduZXIncyBzdG9yYWdlIHRvIHRoZSBzaWduZXIncyBDT0EgaW4gRVZNLkFjY291bnQuCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBWYXVsdCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSB2YXVsdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCB0byBicmlkZ2UKLy8vICAgICAtIGUuZy4gdmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0KSB7CiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogdmF1bHRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAogICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgVmF1bHQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IHZhdWx0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIHZhdWx0IHR5cGUgLSByZXF1ZXN0ZWQ6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBWYXVsdCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0VG9rZW5zKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnNlbnRWYXVsdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "calculateBridgeFee": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2FsY3VsYXRlQnJpZGdlRmVlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB0aGUgY2FsY3VsYXRlZCBmZWUgYmFzZWQgb24gdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIHRvIGVzY3JvdyBhbiBhc3NldCBwbHVzIHRoZSBiYXNlIGZlZS4KLy8vCi8vLyBAcGFyYW0gYnl0ZXM6IFRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCB0byBlc2Nyb3cgYW4gYXNzZXQuCi8vLwovLy8gQHJldHVybiBUaGUgY2FsY3VsYXRlZCBmZWUgdG8gYmUgcGFpZCBpbiBGbG93VG9rZW4KLy8vCmFjY2VzcyhhbGwpCmZ1biBtYWluKGJ5dGVzIHVzZWQ6IFVJbnQ2NCk6IFVGaXg2NCB7CiAgICByZXR1cm4gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogdXNlZCkKfQo=", + "evmAddressRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgRVZNIGNvbnRyYWN0IG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBldm1BZGRyZXNzSGV4OiBUaGUgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgRVZNIGNvbnRyYWN0IGFzIGEgU3RyaW5nIHdpdGhvdXQgMHggcHJlZml4Ci8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSBjb250cmFjdCByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGV2bUFkZHJlc3NIZXg6IFN0cmluZyk6IEJvb2w/IHsKICAgIGlmIGxldCBhZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogZXZtQWRkcmVzc0hleCkgewogICAgICAgIHJldHVybiBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcykKICAgIH0KICAgIHJldHVybiBuaWwKfQo=", + "getAssociatedEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QXNzb2NpYXRlZEV2bUFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB0aGUgRVZNIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBDYWRlbmNlIHR5cGUgKGFzIGl0cyBpZGVudGlmaWVyIFN0cmluZykKLy8vCi8vLyBAcGFyYW0gdHlwZUlkZW50aWZpZXIgVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIFN0cmluZwovLy8KLy8vIEByZXR1cm4gVGhlIEVWTSBhZGRyZXNzIGFzIGEgaGV4IHN0cmluZyBpZiB0aGUgdHlwZSBoYXMgYW4gYXNzb2NpYXRlZCBFVk1BZGRyZXNzLCBvdGhlcndpc2UgbmlsCi8vLwphY2Nlc3MoYWxsKQpmdW4gbWFpbihpZGVudGlmaWVyOiBTdHJpbmcpOiBTdHJpbmc/IHsKICAgIGlmIGxldCB0eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSB7CiAgICAgICAgaWYgbGV0IGFkZHJlc3MgPSBGbG93RVZNQnJpZGdlQ29uZmlnLmdldEVWTUFkZHJlc3NBc3NvY2lhdGVkKHdpdGg6IHR5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIEVWTVV0aWxzLmdldEVWTUFkZHJlc3NBc0hleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzKQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBuaWwKfQ==", + "getAssociatedFlowIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QXNzb2NpYXRlZEZsb3dJZGVudGlmaWVyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNIGZyb20gMHhFVk0KaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmFjY2VzcyhhbGwpCmZ1biBtYWluKGFkZHJlc3M6IFN0cmluZyk6IFN0cmluZz8gewogICAgaWYgbGV0IHR5cGVJbmZvID0gRmxvd0VWTUJyaWRnZUNvbmZpZy5nZXRUeXBlQXNzb2NpYXRlZCh3aXRoOiBFVk0uYWRkcmVzc0Zyb21TdHJpbmcoYWRkcmVzcykpIHsKICAgICAgICByZXR1cm4gdHlwZUluZm8uaWRlbnRpZmllcgogICAgfQogICAgcmV0dXJuIG5pbAp9", + "getBridgeCoaAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QnJpZGdlQ29hQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRVZNVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHRoZSBFVk0gYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcmV0dXJuIFRoZSBFVk0gYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIEZsb3dFVk1CcmlkZ2UncyBjb29yZGluYXRpbmcgQ2FkZW5jZU93bmVkQWNjb3VudAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4oKTogU3RyaW5nIHsKICAgIGxldCBhZGRyZXNzOiBFVk0uRVZNQWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2UuZ2V0QnJpZGdlQ09BRVZNQWRkcmVzcygpCiAgICByZXR1cm4gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0FzSGV4U3RyaW5nKGFkZHJlc3M6IGFkZHJlc3MpCn0=", + "onboardByEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgb25ib2FyZEJ5RXZtQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgTkZUIHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIE5GVHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIE5GVCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gY29udHJhY3RBZGRyZXNzSGV4OiBUaGUgRVZNIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IChhcyBoZXggc3RyaW5nIHdpdGhvdXQgMHggcHJlZml4KSBkZWZpbmluZyB0aGUgCi8vLyAgICAgYnJpZGdlYWJsZSBhc3NldCB0byBiZSBvbmJvYXJkZWQKLy8vCnRyYW5zYWN0aW9uKGNvbnRyYWN0QWRkcmVzc0hleDogU3RyaW5nKSB7CgogICAgbGV0IGNvbnRyYWN0QWRkcmVzczogRVZNLkVWTUFkZHJlc3MKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIENvbnN0cnVjdCBFVk1BZGRyZXNzIGZyb20gaGV4IHN0cmluZyAobm8gbGVhZGluZyBgIjB4ImApIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgc2VsZi5jb250cmFjdEFkZHJlc3MgPSBFVk1VdGlscy5nZXRFVk1BZGRyZXNzRnJvbUhleFN0cmluZyhhZGRyZXNzOiBjb250cmFjdEFkZHJlc3NIZXgpCiAgICAgICAgICAgID8/IHBhbmljKCJJbnZhbGlkIEVWTSBhZGRyZXNzIHN0cmluZyBwcm92aWRlZCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gT25ib2FyZCB0aGUgRVZNIGNvbnRyYWN0CiAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlFVk1BZGRyZXNzKAogICAgICAgICAgICBzZWxmLmNvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "onboardByType": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgb25ib2FyZEJ5VHlwZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBhc3NldCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBhc3NldHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIGFzc2V0IHRvIEVWTQovLy8KLy8vIEBwYXJhbSB0eXBlOiBUaGUgQ2FkZW5jZSB0eXBlIG9mIHRoZSBicmlkZ2VhYmxlIGFzc2V0IHRvIG9uYm9hcmQgdG8gdGhlIGJyaWRnZQovLy8KdHJhbnNhY3Rpb24odHlwZTogVHlwZSkgewoKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gT25ib2FyZCB0aGUgYXNzZXQgVHlwZQogICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgdHlwZSwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "onboardByTypeIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgb25ib2FyZEJ5VHlwZUlkZW50aWZpZXIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgYXNzZXQgdHlwZSB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgYXNzZXRzIGJldHdlZW4gZW52aXJvbm1lbnRzCi8vLyBOT1RFOiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgYnJpZGdpbmcgYSBDYWRlbmNlLW5hdGl2ZSBhc3NldCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gaWRlbnRpZmVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIGJyaWRnZWFibGUgYXNzZXQgdG8gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKGlkZW50aWZpZXI6IFN0cmluZykgewoKICAgIGxldCB0eXBlOiBUeXBlCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIHR5cGUgZnJvbSBpZGVudGlmaWVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgc2VsZi50eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSA/PyBwYW5pYygiSW52YWxpZCB0eXBlIGlkZW50aWZpZXIiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIE9uYm9hcmQgdGhlIGFzc2V0IFR5cGUKICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgIHNlbGYudHlwZSwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "typeRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHlwZVJlcXVpcmVzT25ib2FyZGluZyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSB0eXBlOiBUaGUgQ2FkZW5jZSBUeXBlIGluIHF1ZXN0aW9uCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4odHlwZTogVHlwZSk6IEJvb2w/IHsKICAgIHJldHVybiBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcodHlwZSkKfQo=", + "typeRequiresOnboardingByIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHlwZVJlcXVpcmVzT25ib2FyZGluZ0J5SWRlbnRpZmllciAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBpZGVudGlmaWVyOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgQ2FkZW5jZSBUeXBlIGluIHF1ZXN0aW9uCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4oaWRlbnRpZmllcjogU3RyaW5nKTogQm9vbD8gewogICAgaWYgbGV0IHR5cGUgPSBDb21wb3NpdGVUeXBlKGlkZW50aWZpZXIpIHsKICAgICAgICByZXR1cm4gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpCiAgICB9CiAgICByZXR1cm4gbmlsCn0K" }, "collection": { - "checkNFTCollection": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja05GVENvbGxlY3Rpb24gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgICBpbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCiAgICAvLyBUaGlzIHRyYW5zYWN0aW9uIGlzIGZvciB0cmFuc2ZlcnJpbmcgYW5kIE5GVCBmcm9tCiAgICAvLyBvbmUgYWNjb3VudCB0byBhbm90aGVyCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrPFRva2VuPlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuZXhpc3QoPFRva2VuQ29sbGVjdGlvblB1YmxpY1BhdGg+KQogICAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQoKICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgICAgcmV0dXJuIGNoZWNrPFRva2VuPlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICB9", - "enableNFTStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBlbmFibGVORlRTdG9yYWdlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENhcGFiaWxpdGllcywgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuYm9ycm93PCY8TkZUPi5Db2xsZWN0aW9uPig8Q29sbGVjdGlvblB1YmxpY1BhdGg+KSA9PSBuaWwgewogICAgICAgICAgICBsZXQgY29sbGVjdGlvbiA8LSA8TkZUPi5jcmVhdGVFbXB0eUNvbGxlY3Rpb24obmZ0VHlwZTogVHlwZTxAPE5GVD4uTkZUPigpKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbiwgdG86IDxDb2xsZWN0aW9uU3RvcmFnZVBhdGg+KQogICAgICAgIH0KICAgICAgICBpZiAoc2lnbmVyLmNhcGFiaWxpdGllcy5ib3Jyb3c8JjxORlQ+LkNvbGxlY3Rpb24+KDxDb2xsZWN0aW9uUHVibGljUGF0aD4pID09IG5pbCkgewogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCg8Q29sbGVjdGlvblB1YmxpY1BhdGg+KQogICAgICAgICAgICBsZXQgY2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8TkZUPi5Db2xsZWN0aW9uPig8Q29sbGVjdGlvblN0b3JhZ2VQYXRoPikgICAgICAgICAgICAKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNhcCwgYXQ6IDxDb2xsZWN0aW9uUHVibGljUGF0aD4pCgogICAgICAgIH0KICAgIH0KfQ==", - "getCatalogTypeData": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDYXRhbG9nVHlwZURhdGEgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE5GVENhdGFsb2cgZnJvbSAweE5GVENhdGFsb2cKCmFjY2VzcyhhbGwpIGZ1biBtYWluKCk6IHtTdHJpbmcgOiB7U3RyaW5nIDogQm9vbH19IHsKICBsZXQgY2F0YWxvZyA9IE5GVENhdGFsb2cuZ2V0Q2F0YWxvZ1R5cGVEYXRhKCkKICByZXR1cm4gY2F0YWxvZwp9", - "getNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRORlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKCmFjY2VzcyhhbGwpIHN0cnVjdCBWaWV3SW5mbyB7CiAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBkZXNjcmlwdGlvbjogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0KICBhY2Nlc3MoYWxsKSBsZXQgcmFyaXR5OiBTdHJpbmc/CgogIGluaXQobmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nLCB0aHVtYm5haWw6IHtNZXRhZGF0YVZpZXdzLkZpbGV9LCByYXJpdHk6IFN0cmluZz8pIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogICAgc2VsZi50aHVtYm5haWwgPSB0aHVtYm5haWwKICAgIHNlbGYucmFyaXR5ID0gcmFyaXR5CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSWQ6IFN0cmluZywgdG9rZW5JRHM6IFtVSW50NjRdKToge1VJbnQ2NDogVmlld0luZm99IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzOiB7VUludDY0OiBWaWV3SW5mb30gPSB7fQogIHZhciBjb2xsZWN0aW9uRGlzcGxheUZldGNoZWQgPSBmYWxzZQoKICBpZiB0b2tlbklEcy5sZW5ndGggPT0gMCB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgc3RvcmFnZVBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoSWQpIQogIGxldCBwdWJsaWNQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBwYXRoSWQpIQogIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKQogIGlmIHR5cGUgPT0gbmlsIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCgogIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZSEuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQogIGlmICFjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgbmFtZTogcGF0aElkLAogICAgICAgIGRlc2NyaXB0aW9uOiAiIiwKICAgICAgICB0aHVtYm5haWw6IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiAiIiksCiAgICAgICAgcmFyaXR5OiBuaWwKICAgICAgKQogICAgfQogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PihwdWJsaWNQYXRoKQogIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYhLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRCkKICAgIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0RGlzcGxheShyZXNvbHZlciEpIHsKICAgICAgICB2YXIgcmFyaXR5RGVzYzogU3RyaW5nPyA9IG5pbAogICAgICAgIGlmIGxldCByYXJpdHlWaWV3ID0gTWV0YWRhdGFWaWV3cy5nZXRSYXJpdHkocmVzb2x2ZXIhKSB7CiAgICAgICAgICByYXJpdHlEZXNjID0gcmFyaXR5Vmlldy5kZXNjcmlwdGlvbgogICAgICAgIH0KCiAgICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICBkZXNjcmlwdGlvbjogZGlzcGxheS5kZXNjcmlwdGlvbiwKICAgICAgICAgIHRodW1ibmFpbDogZGlzcGxheS50aHVtYm5haWwsCiAgICAgICAgICByYXJpdHk6IHJhcml0eURlc2MKICAgICAgICApCiAgICAgIH0gCiAgICB9CiAgIGVsc2UgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSWQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbAogICAgICApCiAgICB9CiAgfQogIHJldHVybiByZXMKfQ==", - "getNFTCollection": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRORlRDb2xsZWN0aW9uIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCQppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgoKYWNjZXNzKGFsbCkgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICBhY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHNxdWFyZUltYWdlOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgbWVkaWFUeXBlOiBTdHJpbmcKCiAgaW5pdChuYW1lOiBTdHJpbmcsIHNxdWFyZUltYWdlOiBTdHJpbmcsIG1lZGlhVHlwZTogU3RyaW5nKSB7CiAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICBzZWxmLnNxdWFyZUltYWdlID0gc3F1YXJlSW1hZ2UKICAgIHNlbGYubWVkaWFUeXBlID0gbWVkaWFUeXBlCiAgfQp9CgphY2Nlc3MoYWxsKSBzdHJ1Y3QgTkZUQ29sbGVjdGlvbiB7CiAgYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogIGFjY2VzcyhhbGwpIGxldCBpZExpc3Q6IFtVSW50NjRdCgogIGluaXQoaWQ6U3RyaW5nLCBwYXRoOiBTdHJpbmcsIGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PywgaWRMaXN0OiBbVUludDY0XSkgewogICAgc2VsZi5pZCA9IGlkCiAgICBzZWxmLnBhdGggPSBwYXRoCiAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICBzZWxmLmlkTGlzdCA9IGlkTGlzdAogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIGdldERpc3BsYXkoYWRkcmVzczogQWRkcmVzcywgc3RvcmFnZVBhdGg6IFN0b3JhZ2VQYXRoLCBwdWJsaWNQYXRoOiBQdWJsaWNQYXRoKTogQ29sbGVjdGlvbkRpc3BsYXk/IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzb3VyY2VUeXBlID0gVHlwZTxAQW55UmVzb3VyY2U+KCkKICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oKQogIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCiAgdmFyIGl0ZW06IENvbGxlY3Rpb25EaXNwbGF5PyA9ICBuaWwKCiAgICBpZiBsZXQgdHlwZSA9IGFjY291bnQuc3RvcmFnZS50eXBlKGF0OiBzdG9yYWdlUGF0aCkgewogICAgICBsZXQgaXNSZXNvdXJjZSA9IHR5cGUuaXNTdWJ0eXBlKG9mOiByZXNvdXJjZVR5cGUpCiAgICAgIGxldCBpc05GVENvbGxlY3Rpb24gPSB0eXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpCiAgICAgIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCgogICAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgICAgaWYgaXNORlRDb2xsZWN0aW9uICYmIGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgICAgIGlmIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbiwgTm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHB1YmxpY1BhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQoKICAgICAgICAgIC8vIFRPRE86IG1vdmUgdG8gYSBsaXN0CiAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKQogICAgICAgICAgICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICAgICAgaXRlbSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlLmZpbGUudXJpKCksCiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZTogZGlzcGxheS5zcXVhcmVJbWFnZS5tZWRpYVR5cGUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogIHJldHVybiBpdGVtCn0KCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSUQ6IFN0cmluZyk6IE5GVENvbGxlY3Rpb24gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IGNvbGxlY3Rpb24gPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4ocHVibGljUGF0aCkhCiAgcmV0dXJuIE5GVENvbGxlY3Rpb24oCiAgICBpZDogYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSEuaWRlbnRpZmllciwKICAgIHBhdGg6IHN0b3JhZ2VQYXRoLnRvU3RyaW5nKCksCiAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBzdG9yYWdlUGF0aCwgcHVibGljUGF0aDogcHVibGljUGF0aCksCiAgICBpZExpc3Q6IGNvbGxlY3Rpb24uZ2V0SURzKCkKICApCn0=", - "getNFTDisplays": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRORlREaXNwbGF5cyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgVmlld0luZm8gewphY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCmFjY2VzcyhhbGwpIGxldCBkZXNjcmlwdGlvbjogU3RyaW5nCmFjY2VzcyhhbGwpIGxldCB0aHVtYm5haWw6IHtNZXRhZGF0YVZpZXdzLkZpbGV9CmFjY2VzcyhhbGwpIGxldCByYXJpdHk6IFN0cmluZz8KYWNjZXNzKGFsbCkgbGV0IGNvbGxlY3Rpb25EaXNwbGF5OiBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EaXNwbGF5PwoKaW5pdChuYW1lOiBTdHJpbmcsIGRlc2NyaXB0aW9uOiBTdHJpbmcsIHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0sIHJhcml0eTogU3RyaW5nPywgY29sbGVjdGlvbkRpc3BsYXk6IE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRpc3BsYXk/KSB7CiAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KICAgIHNlbGYudGh1bWJuYWlsID0gdGh1bWJuYWlsCiAgICBzZWxmLnJhcml0eSA9IHJhcml0eQogICAgc2VsZi5jb2xsZWN0aW9uRGlzcGxheSA9IGNvbGxlY3Rpb25EaXNwbGF5CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSUQ6IFN0cmluZywgdG9rZW5JRHM6IFtVSW50NjRdKToge1VJbnQ2NDogVmlld0luZm99IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzOiB7VUludDY0OiBWaWV3SW5mb30gPSB7fQogIHZhciBjb2xsZWN0aW9uRGlzcGxheUZldGNoZWQgPSBmYWxzZQoKICBpZiB0b2tlbklEcy5sZW5ndGggPT0gMCB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgc3RvcmFnZVBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoSUQpIQogIGxldCBwdWJsaWNQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBwYXRoSUQpIQogIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKQogIGlmIHR5cGUgPT0gbmlsIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCgogIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZSEuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQogIGlmICFjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgbmFtZTogcGF0aElELAogICAgICAgIGRlc2NyaXB0aW9uOiAiIiwKICAgICAgICB0aHVtYm5haWw6IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiAiIiksCiAgICAgICAgcmFyaXR5OiBuaWwsCiAgICAgICAgY29sbGVjdGlvbkRpc3BsYXk6IG5pbAogICAgICApCiAgICB9CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihwdWJsaWNQYXRoKQogIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYhLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRCkKICAgIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXREaXNwbGF5KHJlc29sdmVyISkgewogICAgICB2YXIgcmFyaXR5RGVzYzogU3RyaW5nPyA9IG5pbAogICAgICBpZiBsZXQgcmFyaXR5VmlldyA9IE1ldGFkYXRhVmlld3MuZ2V0UmFyaXR5KHJlc29sdmVyISkgewogICAgICAgICAgcmFyaXR5RGVzYyA9IHJhcml0eVZpZXcuZGVzY3JpcHRpb24KICAgICAgICB9CgogICAgICAgIHZhciBjb2xsZWN0aW9uRGlzcGxheTogTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGlzcGxheT8gPSBuaWwKICAgICAgICBpZiAoIWNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCkgewogICAgICAgICAgaWYgbGV0IGNEaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGlzcGxheShyZXNvbHZlciEpIHsKICAgICAgICAgICAgY29sbGVjdGlvbkRpc3BsYXkgPSBjRGlzcGxheQogICAgICAgICAgICBjb2xsZWN0aW9uRGlzcGxheUZldGNoZWQgPSB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgIGRlc2NyaXB0aW9uOiBkaXNwbGF5LmRlc2NyaXB0aW9uLAogICAgICAgICAgdGh1bWJuYWlsOiBkaXNwbGF5LnRodW1ibmFpbCwKICAgICAgICAgIHJhcml0eTogcmFyaXR5RGVzYywKICAgICAgICAgIGNvbGxlY3Rpb25EaXNwbGF5OiBjb2xsZWN0aW9uRGlzcGxheQogICAgICAgICkKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgbmFtZTogcGF0aElELAogICAgICAgIGRlc2NyaXB0aW9uOiAiIiwKICAgICAgICB0aHVtYm5haWw6IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiAiIiksCiAgICAgICAgcmFyaXR5OiBuaWwsCiAgICAgICAgY29sbGVjdGlvbkRpc3BsYXk6IG5pbAogICAgICApCiAgICB9CiAgfQogIHJldHVybiByZXMKfQ==", - "getNFTMetadataViews": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRORlRNZXRhZGF0YVZpZXdzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRhdGEgewogIGFjY2VzcyhhbGwpIGxldCBzdG9yYWdlUGF0aDogU3RvcmFnZVBhdGgKICBhY2Nlc3MoYWxsKSBsZXQgcHVibGljUGF0aDogUHVibGljUGF0aAogIGFjY2VzcyhhbGwpIGxldCBwcm92aWRlclBhdGg6IFByaXZhdGVQYXRoCiAgYWNjZXNzKGFsbCkgbGV0IHB1YmxpY0NvbGxlY3Rpb246IFR5cGUKICBhY2Nlc3MoYWxsKSBsZXQgcHVibGljTGlua2VkVHlwZTogVHlwZQogIGFjY2VzcyhhbGwpIGxldCBwcm92aWRlckxpbmtlZFR5cGU6IFR5cGUKCiAgaW5pdCgKICAgIHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aCwKICAgIHB1YmxpY1BhdGg6IFB1YmxpY1BhdGgsCiAgICBwcm92aWRlclBhdGg6IFByaXZhdGVQYXRoLAogICAgcHVibGljQ29sbGVjdGlvbjogVHlwZSwKICAgIHB1YmxpY0xpbmtlZFR5cGU6IFR5cGUsCiAgICBwcm92aWRlckxpbmtlZFR5cGU6IFR5cGUKICApIHsKICAgIHNlbGYuc3RvcmFnZVBhdGggPSBzdG9yYWdlUGF0aAogICAgc2VsZi5wdWJsaWNQYXRoID0gcHVibGljUGF0aAogICAgc2VsZi5wcm92aWRlclBhdGggPSBwcm92aWRlclBhdGgKICAgIHNlbGYucHVibGljQ29sbGVjdGlvbiA9IHB1YmxpY0NvbGxlY3Rpb24KICAgIHNlbGYucHVibGljTGlua2VkVHlwZSA9IHB1YmxpY0xpbmtlZFR5cGUKICAgIHNlbGYucHJvdmlkZXJMaW5rZWRUeXBlID0gcHJvdmlkZXJMaW5rZWRUeXBlCiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSWQ6IFN0cmluZywgdG9rZW5JRDogVUludDY0KToge1N0cmluZzogQW55U3RydWN0fSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHJlczoge1N0cmluZzogQW55U3RydWN0fSA9IHt9CgogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb24sIFZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PihwdWJsaWNQYXRoKQogIGlmIGNvbGxlY3Rpb25SZWYgPT0gbmlsIHsKICAgIHBhbmljKCJHZXQgQ29sbGVjdGlvbiBGYWlsZWQiKQogIH0KCiAgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpCiAgaWYgdHlwZSA9PSBuaWwgewogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUhLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgaWYgKCFjb25mb3JtZWRNZXRhZGF0YVZpZXdzKSB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBjb2xsZWN0aW9uUmVmIS5ib3Jyb3dORlQodG9rZW5JRCkKCiAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZiEuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEKSEKICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgaWYgbGV0IHJhcml0eSA9IE1ldGFkYXRhVmlld3MuZ2V0UmFyaXR5KHJlc29sdmVyKSB7CiAgICAgIHJlc1sicmFyaXR5Il0gPSByYXJpdHkKICAgIH0KCiAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0RGlzcGxheShyZXNvbHZlcikgewogICAgICByZXNbImRpc3BsYXkiXSA9IGRpc3BsYXkKICAgIH0KCiAgICBpZiBsZXQgZWRpdGlvbnMgPSBNZXRhZGF0YVZpZXdzLmdldEVkaXRpb25zKHJlc29sdmVyKSB7CiAgICAgIHJlc1siZWRpdGlvbnMiXSA9IGVkaXRpb25zCiAgICB9CgogICAgaWYgbGV0IHNlcmlhbCA9IE1ldGFkYXRhVmlld3MuZ2V0U2VyaWFsKHJlc29sdmVyKSB7CiAgICAgIHJlc1sic2VyaWFsIl0gPSBzZXJpYWwKICAgIH0KCiAgICBpZiBsZXQgcm95YWx0aWVzID0gTWV0YWRhdGFWaWV3cy5nZXRSb3lhbHRpZXMocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJyb3lhbHRpZXMiXSA9IHJveWFsdGllcwogICAgfQoKICAgIGlmIGxldCBsaWNlbnNlID0gTWV0YWRhdGFWaWV3cy5nZXRMaWNlbnNlKHJlc29sdmVyKSB7CiAgICAgIHJlc1sibGljZW5zZSJdID0gbGljZW5zZQogICAgfQoKICAgIGlmIGxldCBtZWRpYXMgPSBNZXRhZGF0YVZpZXdzLmdldE1lZGlhcyhyZXNvbHZlcikgewogICAgICByZXNbIm1lZGlhcyJdID0gbWVkaWFzCiAgICB9CgogICAgaWYgbGV0IGV4dGVybmFsVVJMID0gTWV0YWRhdGFWaWV3cy5nZXRFeHRlcm5hbFVSTChyZXNvbHZlcikgewogICAgICByZXNbImV4dGVybmFsVVJMIl0gPSBleHRlcm5hbFVSTAogICAgfQoKICAgIGlmIGxldCB0cmFpdHMgPSBNZXRhZGF0YVZpZXdzLmdldFRyYWl0cyhyZXNvbHZlcikgewogICAgICByZXNbInRyYWl0cyJdID0gdHJhaXRzCiAgICB9CgogICAgaWYgbGV0IGNvbGxlY3Rpb25EaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGlzcGxheShyZXNvbHZlcikgewogICAgICByZXNbImNvbGxlY3Rpb25EaXNwbGF5Il0gPSBjb2xsZWN0aW9uRGlzcGxheQogICAgfQoKICAgIGlmIGxldCBjb2xsZWN0aW9uRGF0YSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRhdGEocmVzb2x2ZXIpIHsKICAgICAgbGV0IGRhdGEgPSBDb2xsZWN0aW9uRGF0YSgKICAgICAgICBzdG9yYWdlUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgsCiAgICAgICAgcHVibGljUGF0aDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCwKICAgICAgICBwcm92aWRlclBhdGg6IGNvbGxlY3Rpb25EYXRhLnByb3ZpZGVyUGF0aCwKICAgICAgICBwdWJsaWNDb2xsZWN0aW9uOiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNDb2xsZWN0aW9uLAogICAgICAgIHB1YmxpY0xpbmtlZFR5cGU6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY0xpbmtlZFR5cGUsCiAgICAgICAgcHJvdmlkZXJMaW5rZWRUeXBlOiBjb2xsZWN0aW9uRGF0YS5wcm92aWRlckxpbmtlZFR5cGUKICAgICAgKQogICAgICByZXNbImNvbGxlY3Rpb25EYXRhIl0gPSBkYXRhCiAgICB9CiAgfQogIHJlc1sidG9rZW5JZCJdID0gdG9rZW5JRAoKICByZXR1cm4gcmVzCn0=", - "getUserCollections": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRVc2VyQ29sbGVjdGlvbnMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRpc3BsYXkgewogIGFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgc3F1YXJlSW1hZ2U6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBtZWRpYVR5cGU6IFN0cmluZwoKICBpbml0KG5hbWU6IFN0cmluZywgc3F1YXJlSW1hZ2U6IFN0cmluZywgbWVkaWFUeXBlOiBTdHJpbmcpIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogICAgc2VsZi5tZWRpYVR5cGUgPSBtZWRpYVR5cGUKICB9Cn0KCmFjY2VzcyhhbGwpIHN0cnVjdCBORlRDb2xsZWN0aW9uIHsKICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KCiAgaW5pdChpZDpTdHJpbmcsIHBhdGg6IFN0cmluZywgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LCBpZExpc3Q6IFtVSW50NjRdKSB7CiAgICBzZWxmLmlkID0gaWQKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYuZGlzcGxheSA9IGRpc3BsYXkKICAgIHNlbGYuaWRMaXN0ID0gaWRMaXN0CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gZ2V0RGlzcGxheShhZGRyZXNzOiBBZGRyZXNzLCBzdG9yYWdlUGF0aDogU3RvcmFnZVBhdGgsIHB1YmxpY1BhdGg6IFB1YmxpY1BhdGgpOiBDb2xsZWN0aW9uRGlzcGxheT8gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSB7CiAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgbGV0IGlzTkZUQ29sbGVjdGlvbiA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkKICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4ocHVibGljUGF0aCkgewogICAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uUmVmLmdldElEcygpCgogICAgICAgICAgLy8gVE9ETzogbW92ZSB0byBhIGxpc3QKICAgICAgICAgIGlmIHRva2VuSURzLmxlbmd0aCA+IDAgCiAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvQXJsZWVTY2VuZSB7CiAgICAgICAgICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEc1swXSkKICAgICAgICAgICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgICAgICAgICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGlzcGxheShyZXNvbHZlciEpIHsKICAgICAgICAgICAgICAgIGl0ZW0gPSBDb2xsZWN0aW9uRGlzcGxheSgKICAgICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgICBzcXVhcmVJbWFnZTogZGlzcGxheS5zcXVhcmVJbWFnZS5maWxlLnVyaSgpLAogICAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGRpc3BsYXkuc3F1YXJlSW1hZ2UubWVkaWFUeXBlCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICByZXR1cm4gaXRlbQp9CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbTkZUQ29sbGVjdGlvbl0gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IGNvbGxlY3Rpb25QYXRoczogW1N0b3JhZ2VQYXRoXSA9IFtdCiAgbGV0IGNvbGxlY3Rpb25zOiBbTkZUQ29sbGVjdGlvbl0gPSBbXQoKICBmdW4gZWFjaFBhdGgocGF0aDogU3RvcmFnZVBhdGgsIFR5cGU6IFR5cGUpOiBCb29sIHsKICAgCiAgICBpZiBUeXBlICE9IG5pbCB7CiAgICAgIGlmIFR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkgewogICAgICAgIGNvbGxlY3Rpb25QYXRocy5hcHBlbmQocGF0aCkKICAgICAgfQogICAgICAKICAgIH0KICAgCiAgICByZXR1cm4gdHJ1ZQogIH0KCiAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZWFjaFBhdGgpCgogIGZvciBwYXRoIGluIGNvbGxlY3Rpb25QYXRocyB7CiAgICBsZXQgcGF0aFN0ciA9IHBhdGgudG9TdHJpbmcoKQogICAgbGV0IHNwbGl0QXJyID0gcGF0aFN0ci5zcGxpdChzZXBhcmF0b3I6ICIvIikKICAgIGxldCBpZGVudGlmaWVyID0gc3BsaXRBcnJbMl0KICAgIGxldCBwdWJQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBpZGVudGlmaWVyKSEKICAgIGxldCBjb2xsZWN0aW9uID0gIGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KHB1YlBhdGgpIQoKICAgIGNvbGxlY3Rpb25zLmFwcGVuZCgKICAgICAgTkZUQ29sbGVjdGlvbigKICAgICAgaWQ6IGlkZW50aWZpZXIsCiAgICAgIHBhdGg6IHB1YlBhdGgudG9TdHJpbmcoKSwKICAgICAgZGlzcGxheTogZ2V0RGlzcGxheShhZGRyZXNzOiBhZGRyZXNzLCBzdG9yYWdlUGF0aDogcGF0aCwgcHVibGljUGF0aDogcHViUGF0aCksCiAgICAgIGlkTGlzdDogY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICApCiAgICApCiAgfQoKCiAgcmV0dXJuIGNvbGxlY3Rpb25zCn0=", - "getUserCollectionsPage": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRVc2VyQ29sbGVjdGlvbnNQYWdlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwogIGltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweFZpZXdSZXNvbHZlcgogIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgCiAgYWNjZXNzKGFsbCkgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICAgIGFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBzcXVhcmVJbWFnZTogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgbWVkaWFUeXBlOiBTdHJpbmcKICAKICAgIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogU3RyaW5nLCBtZWRpYVR5cGU6IFN0cmluZykgewogICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogICAgICBzZWxmLm1lZGlhVHlwZSA9IG1lZGlhVHlwZQogICAgfQogIH0KICAKICBhY2Nlc3MoYWxsKSBzdHJ1Y3QgTkZUQ29sbGVjdGlvbiB7CiAgICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHBhdGg6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogICAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KICAKICAgIGluaXQoaWQ6U3RyaW5nLCBwYXRoOiBTdHJpbmcsIGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PywgaWRMaXN0OiBbVUludDY0XSkgewogICAgICBzZWxmLmlkID0gaWQKICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICAgIHNlbGYuaWRMaXN0ID0gaWRMaXN0CiAgICB9CiAgfQogIAogIGFjY2VzcyhhbGwpIGZ1biBnZXREaXNwbGF5KGFkZHJlc3M6IEFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aCwgcHVibGljUGF0aDogUHVibGljUGF0aCk6IENvbGxlY3Rpb25EaXNwbGF5PyB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogICAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICAgIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCiAgICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAogIAogICAgICBpZiBsZXQgdHlwZSA9IGFjY291bnQuc3RvcmFnZS50eXBlKGF0OiBzdG9yYWdlUGF0aCkgewogICAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICAgIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCiAgCiAgICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgICAgaWYgaXNORlRDb2xsZWN0aW9uICYmIGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4ocHVibGljUGF0aCkgewogICAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKICAKICAgICAgICAgICAgLy8gVE9ETzogbW92ZSB0byBhIGxpc3QKICAgICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvUmFyaWJsZU5GVENvbGxlY3Rpb24gCiAgICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pCiAgICAgICAgICAgICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICAgICAgICBpdGVtID0gQ29sbGVjdGlvbkRpc3BsYXkoCiAgICAgICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlLmZpbGUudXJpKCksCiAgICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBkaXNwbGF5LnNxdWFyZUltYWdlLm1lZGlhVHlwZQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgCiAgICByZXR1cm4gaXRlbQogIH0KICAKICBhY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHN0YXJ0OiBJbnQsIGVuZDogSW50KTogW05GVENvbGxlY3Rpb25dIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICAgIGxldCBjb2xsZWN0aW9uUGF0aHM6IFtTdG9yYWdlUGF0aF0gPSBbXQogICAgbGV0IGNvbGxlY3Rpb25zOiBbTkZUQ29sbGVjdGlvbl0gPSBbXQogIAogICAgZnVuIGVhY2hQYXRoKHBhdGg6IFN0b3JhZ2VQYXRoLCBUeXBlOiBUeXBlKTogQm9vbCB7CiAgICAgCiAgICAgIGlmIFR5cGUgIT0gbmlsIHsKICAgICAgICBpZiBUeXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpIHsKICAgICAgICAgIGNvbGxlY3Rpb25QYXRocy5hcHBlbmQocGF0aCkKICAgICAgICB9CiAgICAgICAgCiAgICAgIH0KICAgICAKICAgICAgcmV0dXJuIHRydWUKICAgIH0KICAKICAgIGFjY291bnQuc3RvcmFnZS5mb3JFYWNoU3RvcmVkKGVhY2hQYXRoKQogIAogICAgZm9yIHBhdGggaW4gY29sbGVjdGlvblBhdGhzIHsKICAgICAgbGV0IHBhdGhTdHIgPSBwYXRoLnRvU3RyaW5nKCkKICAgICAgbGV0IHNwbGl0QXJyID0gcGF0aFN0ci5zcGxpdChzZXBhcmF0b3I6ICIvIikKICAgICAgbGV0IGlkZW50aWZpZXIgPSBzcGxpdEFyclsyXQogICAgICBsZXQgcHViUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogaWRlbnRpZmllcikhCiAgICAgIGxldCBjb2xsZWN0aW9uID0gIGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KHB1YlBhdGgpIQogIAogICAgICBjb2xsZWN0aW9ucy5hcHBlbmQoCiAgICAgICAgTkZUQ29sbGVjdGlvbigKICAgICAgICBpZDogaWRlbnRpZmllciwKICAgICAgICBwYXRoOiBwdWJQYXRoLnRvU3RyaW5nKCksCiAgICAgICAgZGlzcGxheTogZ2V0RGlzcGxheShhZGRyZXNzOiBhZGRyZXNzLCBzdG9yYWdlUGF0aDogcGF0aCwgcHVibGljUGF0aDogcHViUGF0aCksCiAgICAgICAgaWRMaXN0OiBjb2xsZWN0aW9uLmdldElEcygpCiAgICAgICAgKQogICAgICApCiAgICAgIAogICAgfQoKICAgIGxldCBsZW4gPSBjb2xsZWN0aW9ucy5sZW5ndGgKICAgIHZhciBlbmROdW4gPSBlbmQKICAgIGlmIGxlbiA8IHN0YXJ0IHsKICAgICAgcmV0dXJuIFtdCiAgICB9IGVsc2UgewogICAgICBpZiBsZW4gPCBlbmQgewogICAgICAgIGVuZE51biA9IGxlbgogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBjb2xsZWN0aW9ucy5zbGljZShmcm9tOiBzdGFydCwgdXBUbzogZW5kTnVuICkKICB9", - "sendNbaNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kTmJhTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgovLyBUaGlzIHRyYW5zYWN0aW9uIGlzIGZvciB0cmFuc2ZlcnJpbmcgYW5kIE5GVCBmcm9tCi8vIG9uZSBhY2NvdW50IHRvIGFub3RoZXIKdHJhbnNhY3Rpb24ocmVjaXBpZW50OiBBZGRyZXNzLCB3aXRoZHJhd0lEOiBVSW50NjQpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8vIGdldCB0aGUgcmVjaXBpZW50cyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCiAgICAgICAgLy8gYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXInJ3MgTkZUIGNvbGxlY3Rpb24KICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHNpZ25lci5zdG9yYWdlCiAgICAgICAgLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogL3N0b3JhZ2UvTW9tZW50Q29sbGVjdGlvbikKICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgb3duZXInJ3MgY29sbGVjdGlvbiIpCiAgICAgICAgbGV0IHNlbmRlclJlZiA9IHNpZ25lcgogICAgICAgIC5jYXBhYmlsaXRpZXMKICAgICAgICAuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oL3B1YmxpYy9Nb21lbnRDb2xsZWN0aW9uKQogICAgICAgIC8vIGJvcnJvdyBhIHB1YmxpYyByZWZlcmVuY2UgdG8gdGhlIHJlY2VpdmVycyBjb2xsZWN0aW9uCiAgICAgICAgbGV0IHJlY2lwaWVudFJlZiA9IHJlY2lwaWVudAogICAgICAgIC5jYXBhYmlsaXRpZXMKICAgICAgICAuYm9ycm93PCZ7VG9wU2hvdC5Nb21lbnRDb2xsZWN0aW9uUHVibGljfT4oL3B1YmxpYy9Nb21lbnRDb2xsZWN0aW9uKSA/PyBwYW5pYygiVW5hYmxlIHRvIGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UiKQogICAgICAgIAogICAgICAgIC8vIHdpdGhkcmF3IHRoZSBORlQgZnJvbSB0aGUgb3duZXInJ3MgY29sbGVjdGlvbgogICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiB3aXRoZHJhd0lEKQogICAgICAgIC8vIERlcG9zaXQgdGhlIE5GVCBpbiB0aGUgcmVjaXBpZW50JydzIGNvbGxlY3Rpb24KICAgICAgICByZWNpcGllbnRSZWYhLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgfQp9", - "sendNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKLy8gVGhpcyB0cmFuc2FjdGlvbiBpcyBmb3IgdHJhbnNmZXJyaW5nIGFuZCBORlQgZnJvbQovLyBvbmUgYWNjb3VudCB0byBhbm90aGVyCgp0cmFuc2FjdGlvbihyZWNpcGllbnQ6IEFkZHJlc3MsIHdpdGhkcmF3SUQ6IFVJbnQ2NCkgewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8vIGdldCB0aGUgcmVjaXBpZW50cyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgTkZUIGNvbGxlY3Rpb24KICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KGZyb206IDxDb2xsZWN0aW9uU3RvcmFnZVBhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBjb2xsZWN0aW9uIikKCiAgICAgICAgLy8gYm9ycm93IGEgcHVibGljIHJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXJzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgZGVwb3NpdFJlZiA9IHJlY2lwaWVudAogICAgICAgICAgICAuY2FwYWJpbGl0aWVzCiAgICAgICAgICAgIC5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pig8Q29sbGVjdGlvblB1YmxpY1BhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXIncyBjb2xsZWN0aW9uIikKCiAgICAgICAgLy8gd2l0aGRyYXcgdGhlIE5GVCBmcm9tIHRoZSBvd25lcidzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogd2l0aGRyYXdJRCkKCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgTkZUIGluIHRoZSByZWNpcGllbnQncyBjb2xsZWN0aW9uCiAgICAgICAgZGVwb3NpdFJlZi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgIH0KfQ==" + "checkNFTCollection": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2hlY2tORlRDb2xsZWN0aW9uIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgogICAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KICAgIGltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKICAgIC8vIFRoaXMgdHJhbnNhY3Rpb24gaXMgZm9yIHRyYW5zZmVycmluZyBhbmQgTkZUIGZyb20KICAgIC8vIG9uZSBhY2NvdW50IHRvIGFub3RoZXIKCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2s8VG9rZW4+VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5leGlzdCg8VG9rZW5Db2xsZWN0aW9uUHVibGljUGF0aD4pCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CgogICAgYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgICByZXR1cm4gY2hlY2s8VG9rZW4+VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgIH0=", + "enableNFTStorage": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZW5hYmxlTkZUU3RvcmFnZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ2FwYWJpbGl0aWVzLCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5ib3Jyb3c8JjxORlQ+LkNvbGxlY3Rpb24+KDxDb2xsZWN0aW9uUHVibGljUGF0aD4pID09IG5pbCB7CiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uIDwtIDxORlQ+LmNyZWF0ZUVtcHR5Q29sbGVjdGlvbihuZnRUeXBlOiBUeXBlPEA8TkZUPi5ORlQ+KCkpCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uLCB0bzogPENvbGxlY3Rpb25TdG9yYWdlUGF0aD4pCiAgICAgICAgfQogICAgICAgIGlmIChzaWduZXIuY2FwYWJpbGl0aWVzLmJvcnJvdzwmPE5GVD4uQ29sbGVjdGlvbj4oPENvbGxlY3Rpb25QdWJsaWNQYXRoPikgPT0gbmlsKSB7CiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKDxDb2xsZWN0aW9uUHVibGljUGF0aD4pCiAgICAgICAgICAgIGxldCBjYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxORlQ+LkNvbGxlY3Rpb24+KDxDb2xsZWN0aW9uU3RvcmFnZVBhdGg+KSAgICAgICAgICAgIAogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY2FwLCBhdDogPENvbGxlY3Rpb25QdWJsaWNQYXRoPikKCiAgICAgICAgfQogICAgfQp9", + "getCatalogTypeData": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q2F0YWxvZ1R5cGVEYXRhIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTkZUQ2F0YWxvZyBmcm9tIDB4TkZUQ2F0YWxvZwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKToge1N0cmluZyA6IHtTdHJpbmcgOiBCb29sfX0gewogIGxldCBjYXRhbG9nID0gTkZUQ2F0YWxvZy5nZXRDYXRhbG9nVHlwZURhdGEoKQogIHJldHVybiBjYXRhbG9nCn0=", + "getNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0TkZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgoKYWNjZXNzKGFsbCkgc3RydWN0IFZpZXdJbmZvIHsKICBhY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IGRlc2NyaXB0aW9uOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgdGh1bWJuYWlsOiB7TWV0YWRhdGFWaWV3cy5GaWxlfQogIGFjY2VzcyhhbGwpIGxldCByYXJpdHk6IFN0cmluZz8KCiAgaW5pdChuYW1lOiBTdHJpbmcsIGRlc2NyaXB0aW9uOiBTdHJpbmcsIHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0sIHJhcml0eTogU3RyaW5nPykgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCiAgICBzZWxmLnRodW1ibmFpbCA9IHRodW1ibmFpbAogICAgc2VsZi5yYXJpdHkgPSByYXJpdHkKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJZDogU3RyaW5nLCB0b2tlbklEczogW1VJbnQ2NF0pOiB7VUludDY0OiBWaWV3SW5mb30gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXM6IHtVSW50NjQ6IFZpZXdJbmZvfSA9IHt9CiAgdmFyIGNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCA9IGZhbHNlCgogIGlmIHRva2VuSURzLmxlbmd0aCA9PSAwIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpCiAgaWYgdHlwZSA9PSBuaWwgewogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKCiAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlIS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCiAgaWYgIWNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSWQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbAogICAgICApCiAgICB9CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KHB1YmxpY1BhdGgpCiAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZiEuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEKQogICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXREaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgIHZhciByYXJpdHlEZXNjOiBTdHJpbmc/ID0gbmlsCiAgICAgICAgaWYgbGV0IHJhcml0eVZpZXcgPSBNZXRhZGF0YVZpZXdzLmdldFJhcml0eShyZXNvbHZlciEpIHsKICAgICAgICAgIHJhcml0eURlc2MgPSByYXJpdHlWaWV3LmRlc2NyaXB0aW9uCiAgICAgICAgfQoKICAgICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgIGRlc2NyaXB0aW9uOiBkaXNwbGF5LmRlc2NyaXB0aW9uLAogICAgICAgICAgdGh1bWJuYWlsOiBkaXNwbGF5LnRodW1ibmFpbCwKICAgICAgICAgIHJhcml0eTogcmFyaXR5RGVzYwogICAgICAgICkKICAgICAgfSAKICAgIH0KICAgZWxzZSB7CiAgICAgIHJlc1t0b2tlbklEXSA9IFZpZXdJbmZvKAogICAgICAgIG5hbWU6IHBhdGhJZCwKICAgICAgICBkZXNjcmlwdGlvbjogIiIsCiAgICAgICAgdGh1bWJuYWlsOiBNZXRhZGF0YVZpZXdzLkhUVFBGaWxlKHVybDogIiIpLAogICAgICAgIHJhcml0eTogbmlsCiAgICAgICkKICAgIH0KICB9CiAgcmV0dXJuIHJlcwp9", + "getNFTCollection": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0TkZUQ29sbGVjdGlvbiAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4JCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRpc3BsYXkgewogIGFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgc3F1YXJlSW1hZ2U6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBtZWRpYVR5cGU6IFN0cmluZwoKICBpbml0KG5hbWU6IFN0cmluZywgc3F1YXJlSW1hZ2U6IFN0cmluZywgbWVkaWFUeXBlOiBTdHJpbmcpIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogICAgc2VsZi5tZWRpYVR5cGUgPSBtZWRpYVR5cGUKICB9Cn0KCmFjY2VzcyhhbGwpIHN0cnVjdCBORlRDb2xsZWN0aW9uIHsKICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KCiAgaW5pdChpZDpTdHJpbmcsIHBhdGg6IFN0cmluZywgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LCBpZExpc3Q6IFtVSW50NjRdKSB7CiAgICBzZWxmLmlkID0gaWQKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYuZGlzcGxheSA9IGRpc3BsYXkKICAgIHNlbGYuaWRMaXN0ID0gaWRMaXN0CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gZ2V0RGlzcGxheShhZGRyZXNzOiBBZGRyZXNzLCBzdG9yYWdlUGF0aDogU3RvcmFnZVBhdGgsIHB1YmxpY1BhdGg6IFB1YmxpY1BhdGgpOiBDb2xsZWN0aW9uRGlzcGxheT8gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSB7CiAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgbGV0IGlzTkZUQ29sbGVjdGlvbiA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkKICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4ocHVibGljUGF0aCkgewogICAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uUmVmLmdldElEcygpCgogICAgICAgICAgLy8gVE9ETzogbW92ZSB0byBhIGxpc3QKICAgICAgICAgIGlmIHRva2VuSURzLmxlbmd0aCA+IDAgewogICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pCiAgICAgICAgICAgIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICAgICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIhKSB7CiAgICAgICAgICAgICAgICBpdGVtID0gQ29sbGVjdGlvbkRpc3BsYXkoCiAgICAgICAgICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UuZmlsZS51cmkoKSwKICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBkaXNwbGF5LnNxdWFyZUltYWdlLm1lZGlhVHlwZQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgcmV0dXJuIGl0ZW0KfQoKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJRDogU3RyaW5nKTogTkZUQ29sbGVjdGlvbiB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHN0b3JhZ2VQYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aElEKSEKICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogcGF0aElEKSEKICBsZXQgY29sbGVjdGlvbiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PihwdWJsaWNQYXRoKSEKICByZXR1cm4gTkZUQ29sbGVjdGlvbigKICAgIGlkOiBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpIS5pZGVudGlmaWVyLAogICAgcGF0aDogc3RvcmFnZVBhdGgudG9TdHJpbmcoKSwKICAgIGRpc3BsYXk6IGdldERpc3BsYXkoYWRkcmVzczogYWRkcmVzcywgc3RvcmFnZVBhdGg6IHN0b3JhZ2VQYXRoLCBwdWJsaWNQYXRoOiBwdWJsaWNQYXRoKSwKICAgIGlkTGlzdDogY29sbGVjdGlvbi5nZXRJRHMoKQogICkKfQ==", + "getNFTDisplays": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0TkZURGlzcGxheXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCmFjY2VzcyhhbGwpIHN0cnVjdCBWaWV3SW5mbyB7CmFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKYWNjZXNzKGFsbCkgbGV0IGRlc2NyaXB0aW9uOiBTdHJpbmcKYWNjZXNzKGFsbCkgbGV0IHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0KYWNjZXNzKGFsbCkgbGV0IHJhcml0eTogU3RyaW5nPwphY2Nlc3MoYWxsKSBsZXQgY29sbGVjdGlvbkRpc3BsYXk6IE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRpc3BsYXk/Cgppbml0KG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZywgdGh1bWJuYWlsOiB7TWV0YWRhdGFWaWV3cy5GaWxlfSwgcmFyaXR5OiBTdHJpbmc/LCBjb2xsZWN0aW9uRGlzcGxheTogTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGlzcGxheT8pIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogICAgc2VsZi50aHVtYm5haWwgPSB0aHVtYm5haWwKICAgIHNlbGYucmFyaXR5ID0gcmFyaXR5CiAgICBzZWxmLmNvbGxlY3Rpb25EaXNwbGF5ID0gY29sbGVjdGlvbkRpc3BsYXkKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJRDogU3RyaW5nLCB0b2tlbklEczogW1VJbnQ2NF0pOiB7VUludDY0OiBWaWV3SW5mb30gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXM6IHtVSW50NjQ6IFZpZXdJbmZvfSA9IHt9CiAgdmFyIGNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCA9IGZhbHNlCgogIGlmIHRva2VuSURzLmxlbmd0aCA9PSAwIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpCiAgaWYgdHlwZSA9PSBuaWwgewogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKCiAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlIS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCiAgaWYgIWNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSUQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbCwKICAgICAgICBjb2xsZWN0aW9uRGlzcGxheTogbmlsCiAgICAgICkKICAgIH0KICAgIHJldHVybiByZXMKICB9CgogIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbiwgTm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHB1YmxpY1BhdGgpCiAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZiEuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEKQogICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldERpc3BsYXkocmVzb2x2ZXIhKSB7CiAgICAgIHZhciByYXJpdHlEZXNjOiBTdHJpbmc/ID0gbmlsCiAgICAgIGlmIGxldCByYXJpdHlWaWV3ID0gTWV0YWRhdGFWaWV3cy5nZXRSYXJpdHkocmVzb2x2ZXIhKSB7CiAgICAgICAgICByYXJpdHlEZXNjID0gcmFyaXR5Vmlldy5kZXNjcmlwdGlvbgogICAgICAgIH0KCiAgICAgICAgdmFyIGNvbGxlY3Rpb25EaXNwbGF5OiBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EaXNwbGF5PyA9IG5pbAogICAgICAgIGlmICghY29sbGVjdGlvbkRpc3BsYXlGZXRjaGVkKSB7CiAgICAgICAgICBpZiBsZXQgY0Rpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICBjb2xsZWN0aW9uRGlzcGxheSA9IGNEaXNwbGF5CiAgICAgICAgICAgIGNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCA9IHRydWUKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJlc1t0b2tlbklEXSA9IFZpZXdJbmZvKAogICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgZGVzY3JpcHRpb246IGRpc3BsYXkuZGVzY3JpcHRpb24sCiAgICAgICAgICB0aHVtYm5haWw6IGRpc3BsYXkudGh1bWJuYWlsLAogICAgICAgICAgcmFyaXR5OiByYXJpdHlEZXNjLAogICAgICAgICAgY29sbGVjdGlvbkRpc3BsYXk6IGNvbGxlY3Rpb25EaXNwbGF5CiAgICAgICAgKQogICAgICB9CiAgICB9IGVsc2UgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSUQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbCwKICAgICAgICBjb2xsZWN0aW9uRGlzcGxheTogbmlsCiAgICAgICkKICAgIH0KICB9CiAgcmV0dXJuIHJlcwp9", + "getNFTMetadataViews": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0TkZUTWV0YWRhdGFWaWV3cyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKCmFjY2VzcyhhbGwpIHN0cnVjdCBDb2xsZWN0aW9uRGF0YSB7CiAgYWNjZXNzKGFsbCkgbGV0IHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aAogIGFjY2VzcyhhbGwpIGxldCBwdWJsaWNQYXRoOiBQdWJsaWNQYXRoCiAgYWNjZXNzKGFsbCkgbGV0IHByb3ZpZGVyUGF0aDogUHJpdmF0ZVBhdGgKICBhY2Nlc3MoYWxsKSBsZXQgcHVibGljQ29sbGVjdGlvbjogVHlwZQogIGFjY2VzcyhhbGwpIGxldCBwdWJsaWNMaW5rZWRUeXBlOiBUeXBlCiAgYWNjZXNzKGFsbCkgbGV0IHByb3ZpZGVyTGlua2VkVHlwZTogVHlwZQoKICBpbml0KAogICAgc3RvcmFnZVBhdGg6IFN0b3JhZ2VQYXRoLAogICAgcHVibGljUGF0aDogUHVibGljUGF0aCwKICAgIHByb3ZpZGVyUGF0aDogUHJpdmF0ZVBhdGgsCiAgICBwdWJsaWNDb2xsZWN0aW9uOiBUeXBlLAogICAgcHVibGljTGlua2VkVHlwZTogVHlwZSwKICAgIHByb3ZpZGVyTGlua2VkVHlwZTogVHlwZQogICkgewogICAgc2VsZi5zdG9yYWdlUGF0aCA9IHN0b3JhZ2VQYXRoCiAgICBzZWxmLnB1YmxpY1BhdGggPSBwdWJsaWNQYXRoCiAgICBzZWxmLnByb3ZpZGVyUGF0aCA9IHByb3ZpZGVyUGF0aAogICAgc2VsZi5wdWJsaWNDb2xsZWN0aW9uID0gcHVibGljQ29sbGVjdGlvbgogICAgc2VsZi5wdWJsaWNMaW5rZWRUeXBlID0gcHVibGljTGlua2VkVHlwZQogICAgc2VsZi5wcm92aWRlckxpbmtlZFR5cGUgPSBwcm92aWRlckxpbmtlZFR5cGUKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJZDogU3RyaW5nLCB0b2tlbklEOiBVSW50NjQpOiB7U3RyaW5nOiBBbnlTdHJ1Y3R9IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzOiB7U3RyaW5nOiBBbnlTdHJ1Y3R9ID0ge30KCiAgbGV0IHN0b3JhZ2VQYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aElkKSEKICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogcGF0aElkKSEKICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbiwgVmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KHB1YmxpY1BhdGgpCiAgaWYgY29sbGVjdGlvblJlZiA9PSBuaWwgewogICAgcGFuaWMoIkdldCBDb2xsZWN0aW9uIEZhaWxlZCIpCiAgfQoKICBsZXQgdHlwZSA9IGFjY291bnQuc3RvcmFnZS50eXBlKGF0OiBzdG9yYWdlUGF0aCkKICBpZiB0eXBlID09IG5pbCB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8QHtWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZSEuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICBpZiAoIWNvbmZvcm1lZE1ldGFkYXRhVmlld3MpIHsKICAgIHJldHVybiByZXMKICB9CgogIGNvbGxlY3Rpb25SZWYhLmJvcnJvd05GVCh0b2tlbklEKQoKICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmIS5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSUQpIQogIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICBpZiBsZXQgcmFyaXR5ID0gTWV0YWRhdGFWaWV3cy5nZXRSYXJpdHkocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJyYXJpdHkiXSA9IHJhcml0eQogICAgfQoKICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXREaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgIHJlc1siZGlzcGxheSJdID0gZGlzcGxheQogICAgfQoKICAgIGlmIGxldCBlZGl0aW9ucyA9IE1ldGFkYXRhVmlld3MuZ2V0RWRpdGlvbnMocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJlZGl0aW9ucyJdID0gZWRpdGlvbnMKICAgIH0KCiAgICBpZiBsZXQgc2VyaWFsID0gTWV0YWRhdGFWaWV3cy5nZXRTZXJpYWwocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJzZXJpYWwiXSA9IHNlcmlhbAogICAgfQoKICAgIGlmIGxldCByb3lhbHRpZXMgPSBNZXRhZGF0YVZpZXdzLmdldFJveWFsdGllcyhyZXNvbHZlcikgewogICAgICByZXNbInJveWFsdGllcyJdID0gcm95YWx0aWVzCiAgICB9CgogICAgaWYgbGV0IGxpY2Vuc2UgPSBNZXRhZGF0YVZpZXdzLmdldExpY2Vuc2UocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJsaWNlbnNlIl0gPSBsaWNlbnNlCiAgICB9CgogICAgaWYgbGV0IG1lZGlhcyA9IE1ldGFkYXRhVmlld3MuZ2V0TWVkaWFzKHJlc29sdmVyKSB7CiAgICAgIHJlc1sibWVkaWFzIl0gPSBtZWRpYXMKICAgIH0KCiAgICBpZiBsZXQgZXh0ZXJuYWxVUkwgPSBNZXRhZGF0YVZpZXdzLmdldEV4dGVybmFsVVJMKHJlc29sdmVyKSB7CiAgICAgIHJlc1siZXh0ZXJuYWxVUkwiXSA9IGV4dGVybmFsVVJMCiAgICB9CgogICAgaWYgbGV0IHRyYWl0cyA9IE1ldGFkYXRhVmlld3MuZ2V0VHJhaXRzKHJlc29sdmVyKSB7CiAgICAgIHJlc1sidHJhaXRzIl0gPSB0cmFpdHMKICAgIH0KCiAgICBpZiBsZXQgY29sbGVjdGlvbkRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgIHJlc1siY29sbGVjdGlvbkRpc3BsYXkiXSA9IGNvbGxlY3Rpb25EaXNwbGF5CiAgICB9CgogICAgaWYgbGV0IGNvbGxlY3Rpb25EYXRhID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGF0YShyZXNvbHZlcikgewogICAgICBsZXQgZGF0YSA9IENvbGxlY3Rpb25EYXRhKAogICAgICAgIHN0b3JhZ2VQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCwKICAgICAgICBwdWJsaWNQYXRoOiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoLAogICAgICAgIHByb3ZpZGVyUGF0aDogY29sbGVjdGlvbkRhdGEucHJvdmlkZXJQYXRoLAogICAgICAgIHB1YmxpY0NvbGxlY3Rpb246IGNvbGxlY3Rpb25EYXRhLnB1YmxpY0NvbGxlY3Rpb24sCiAgICAgICAgcHVibGljTGlua2VkVHlwZTogY29sbGVjdGlvbkRhdGEucHVibGljTGlua2VkVHlwZSwKICAgICAgICBwcm92aWRlckxpbmtlZFR5cGU6IGNvbGxlY3Rpb25EYXRhLnByb3ZpZGVyTGlua2VkVHlwZQogICAgICApCiAgICAgIHJlc1siY29sbGVjdGlvbkRhdGEiXSA9IGRhdGEKICAgIH0KICB9CiAgcmVzWyJ0b2tlbklkIl0gPSB0b2tlbklECgogIHJldHVybiByZXMKfQ==", + "getUserCollections": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0VXNlckNvbGxlY3Rpb25zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhWaWV3UmVzb2x2ZXIKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIHN0cnVjdCBDb2xsZWN0aW9uRGlzcGxheSB7CiAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBzcXVhcmVJbWFnZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IG1lZGlhVHlwZTogU3RyaW5nCgogIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogU3RyaW5nLCBtZWRpYVR5cGU6IFN0cmluZykgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgICBzZWxmLm1lZGlhVHlwZSA9IG1lZGlhVHlwZQogIH0KfQoKYWNjZXNzKGFsbCkgc3RydWN0IE5GVENvbGxlY3Rpb24gewogIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8KICBhY2Nlc3MoYWxsKSBsZXQgaWRMaXN0OiBbVUludDY0XQoKICBpbml0KGlkOlN0cmluZywgcGF0aDogU3RyaW5nLCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8sIGlkTGlzdDogW1VJbnQ2NF0pIHsKICAgIHNlbGYuaWQgPSBpZAogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi5kaXNwbGF5ID0gZGlzcGxheQogICAgc2VsZi5pZExpc3QgPSBpZExpc3QKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBnZXREaXNwbGF5KGFkZHJlc3M6IEFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aCwgcHVibGljUGF0aDogUHVibGljUGF0aCk6IENvbGxlY3Rpb25EaXNwbGF5PyB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8QHtWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIHZhciBpdGVtOiBDb2xsZWN0aW9uRGlzcGxheT8gPSAgbmlsCgogICAgaWYgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpIHsKICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgIGlmIGlzTkZUQ29sbGVjdGlvbiAmJiBjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihwdWJsaWNQYXRoKSB7CiAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKCiAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL1JhcmlibGVORlRDb2xsZWN0aW9uIAogICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKQogICAgICAgICAgICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICAgICAgaXRlbSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlLmZpbGUudXJpKCksCiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZTogZGlzcGxheS5zcXVhcmVJbWFnZS5tZWRpYVR5cGUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogIHJldHVybiBpdGVtCn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtORlRDb2xsZWN0aW9uXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICBsZXQgY29sbGVjdGlvblBhdGhzOiBbU3RvcmFnZVBhdGhdID0gW10KICBsZXQgY29sbGVjdGlvbnM6IFtORlRDb2xsZWN0aW9uXSA9IFtdCgogIGZ1biBlYWNoUGF0aChwYXRoOiBTdG9yYWdlUGF0aCwgVHlwZTogVHlwZSk6IEJvb2wgewogICAKICAgIGlmIFR5cGUgIT0gbmlsIHsKICAgICAgaWYgVHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKSB7CiAgICAgICAgY29sbGVjdGlvblBhdGhzLmFwcGVuZChwYXRoKQogICAgICB9CiAgICAgIAogICAgfQogICAKICAgIHJldHVybiB0cnVlCiAgfQoKICBhY2NvdW50LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChlYWNoUGF0aCkKCiAgZm9yIHBhdGggaW4gY29sbGVjdGlvblBhdGhzIHsKICAgIGxldCBwYXRoU3RyID0gcGF0aC50b1N0cmluZygpCiAgICBsZXQgc3BsaXRBcnIgPSBwYXRoU3RyLnNwbGl0KHNlcGFyYXRvcjogIi8iKQogICAgbGV0IGlkZW50aWZpZXIgPSBzcGxpdEFyclsyXQogICAgbGV0IHB1YlBhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IGlkZW50aWZpZXIpIQogICAgbGV0IGNvbGxlY3Rpb24gPSAgYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4ocHViUGF0aCkhCgogICAgY29sbGVjdGlvbnMuYXBwZW5kKAogICAgICBORlRDb2xsZWN0aW9uKAogICAgICBpZDogaWRlbnRpZmllciwKICAgICAgcGF0aDogcHViUGF0aC50b1N0cmluZygpLAogICAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBwYXRoLCBwdWJsaWNQYXRoOiBwdWJQYXRoKSwKICAgICAgaWRMaXN0OiBjb2xsZWN0aW9uLmdldElEcygpCiAgICAgICkKICAgICkKICB9CgoKICByZXR1cm4gY29sbGVjdGlvbnMKfQ==", + "getUserCollectionsPage": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0VXNlckNvbGxlY3Rpb25zUGFnZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCiAgaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCiAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KICAKICBhY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRpc3BsYXkgewogICAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHNxdWFyZUltYWdlOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBtZWRpYVR5cGU6IFN0cmluZwogIAogICAgaW5pdChuYW1lOiBTdHJpbmcsIHNxdWFyZUltYWdlOiBTdHJpbmcsIG1lZGlhVHlwZTogU3RyaW5nKSB7CiAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgICAgIHNlbGYubWVkaWFUeXBlID0gbWVkaWFUeXBlCiAgICB9CiAgfQogIAogIGFjY2VzcyhhbGwpIHN0cnVjdCBORlRDb2xsZWN0aW9uIHsKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgICBhY2Nlc3MoYWxsKSBsZXQgaWRMaXN0OiBbVUludDY0XQogIAogICAgaW5pdChpZDpTdHJpbmcsIHBhdGg6IFN0cmluZywgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LCBpZExpc3Q6IFtVSW50NjRdKSB7CiAgICAgIHNlbGYuaWQgPSBpZAogICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgIHNlbGYuZGlzcGxheSA9IGRpc3BsYXkKICAgICAgc2VsZi5pZExpc3QgPSBpZExpc3QKICAgIH0KICB9CiAgCiAgYWNjZXNzKGFsbCkgZnVuIGdldERpc3BsYXkoYWRkcmVzczogQWRkcmVzcywgc3RvcmFnZVBhdGg6IFN0b3JhZ2VQYXRoLCBwdWJsaWNQYXRoOiBQdWJsaWNQYXRoKTogQ29sbGVjdGlvbkRpc3BsYXk/IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oKQogICAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICAgIHZhciBpdGVtOiBDb2xsZWN0aW9uRGlzcGxheT8gPSAgbmlsCiAgCiAgICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSB7CiAgICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICAgIGxldCBpc05GVENvbGxlY3Rpb24gPSB0eXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpCiAgICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKICAKICAgICAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihwdWJsaWNQYXRoKSB7CiAgICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQogIAogICAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIAogICAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL0FybGVlU2NlbmUgewogICAgICAgICAgICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEc1swXSkKICAgICAgICAgICAgICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgICAgICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIhKSB7CiAgICAgICAgICAgICAgICAgIGl0ZW0gPSBDb2xsZWN0aW9uRGlzcGxheSgKICAgICAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UuZmlsZS51cmkoKSwKICAgICAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGRpc3BsYXkuc3F1YXJlSW1hZ2UubWVkaWFUeXBlCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAKICAgIHJldHVybiBpdGVtCiAgfQogIAogIGFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgc3RhcnQ6IEludCwgZW5kOiBJbnQpOiBbTkZUQ29sbGVjdGlvbl0gewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oKQogICAgbGV0IGNvbGxlY3Rpb25QYXRoczogW1N0b3JhZ2VQYXRoXSA9IFtdCiAgICBsZXQgY29sbGVjdGlvbnM6IFtORlRDb2xsZWN0aW9uXSA9IFtdCiAgCiAgICBmdW4gZWFjaFBhdGgocGF0aDogU3RvcmFnZVBhdGgsIFR5cGU6IFR5cGUpOiBCb29sIHsKICAgICAKICAgICAgaWYgVHlwZSAhPSBuaWwgewogICAgICAgIGlmIFR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkgewogICAgICAgICAgY29sbGVjdGlvblBhdGhzLmFwcGVuZChwYXRoKQogICAgICAgIH0KICAgICAgICAKICAgICAgfQogICAgIAogICAgICByZXR1cm4gdHJ1ZQogICAgfQogIAogICAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZWFjaFBhdGgpCiAgCiAgICBmb3IgcGF0aCBpbiBjb2xsZWN0aW9uUGF0aHMgewogICAgICBsZXQgcGF0aFN0ciA9IHBhdGgudG9TdHJpbmcoKQogICAgICBsZXQgc3BsaXRBcnIgPSBwYXRoU3RyLnNwbGl0KHNlcGFyYXRvcjogIi8iKQogICAgICBsZXQgaWRlbnRpZmllciA9IHNwbGl0QXJyWzJdCiAgICAgIGxldCBwdWJQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBpZGVudGlmaWVyKSEKICAgICAgbGV0IGNvbGxlY3Rpb24gPSAgYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4ocHViUGF0aCkhCiAgCiAgICAgIGNvbGxlY3Rpb25zLmFwcGVuZCgKICAgICAgICBORlRDb2xsZWN0aW9uKAogICAgICAgIGlkOiBpZGVudGlmaWVyLAogICAgICAgIHBhdGg6IHB1YlBhdGgudG9TdHJpbmcoKSwKICAgICAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBwYXRoLCBwdWJsaWNQYXRoOiBwdWJQYXRoKSwKICAgICAgICBpZExpc3Q6IGNvbGxlY3Rpb24uZ2V0SURzKCkKICAgICAgICApCiAgICAgICkKICAgICAgCiAgICB9CgogICAgbGV0IGxlbiA9IGNvbGxlY3Rpb25zLmxlbmd0aAogICAgdmFyIGVuZE51biA9IGVuZAogICAgaWYgbGVuIDwgc3RhcnQgewogICAgICByZXR1cm4gW10KICAgIH0gZWxzZSB7CiAgICAgIGlmIGxlbiA8IGVuZCB7CiAgICAgICAgZW5kTnVuID0gbGVuCiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuIGNvbGxlY3Rpb25zLnNsaWNlKGZyb206IHN0YXJ0LCB1cFRvOiBlbmROdW4gKQogIH0=", + "sendNbaNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZE5iYU5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Ci8vIFRoaXMgdHJhbnNhY3Rpb24gaXMgZm9yIHRyYW5zZmVycmluZyBhbmQgTkZUIGZyb20KLy8gb25lIGFjY291bnQgdG8gYW5vdGhlcgp0cmFuc2FjdGlvbihyZWNpcGllbnQ6IEFkZHJlc3MsIHdpdGhkcmF3SUQ6IFVJbnQ2NCkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLy8gZ2V0IHRoZSByZWNpcGllbnRzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKICAgICAgICAvLyBib3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcicncyBORlQgY29sbGVjdGlvbgogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gc2lnbmVyLnN0b3JhZ2UKICAgICAgICAuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiAvc3RvcmFnZS9Nb21lbnRDb2xsZWN0aW9uKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBvd25lcicncyBjb2xsZWN0aW9uIikKICAgICAgICBsZXQgc2VuZGVyUmVmID0gc2lnbmVyCiAgICAgICAgLmNhcGFiaWxpdGllcwogICAgICAgIC5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigvcHVibGljL01vbWVudENvbGxlY3Rpb24pCiAgICAgICAgLy8gYm9ycm93IGEgcHVibGljIHJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXJzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50UmVmID0gcmVjaXBpZW50CiAgICAgICAgLmNhcGFiaWxpdGllcwogICAgICAgIC5ib3Jyb3c8JntUb3BTaG90Lk1vbWVudENvbGxlY3Rpb25QdWJsaWN9PigvcHVibGljL01vbWVudENvbGxlY3Rpb24pID8/IHBhbmljKCJVbmFibGUgdG8gYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSIpCiAgICAgICAgCiAgICAgICAgLy8gd2l0aGRyYXcgdGhlIE5GVCBmcm9tIHRoZSBvd25lcicncyBjb2xsZWN0aW9uCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IHdpdGhkcmF3SUQpCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgTkZUIGluIHRoZSByZWNpcGllbnQnJ3MgY29sbGVjdGlvbgogICAgICAgIHJlY2lwaWVudFJlZiEuZGVwb3NpdCh0b2tlbjogPC1uZnQpCiAgICB9Cn0=", + "sendNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgovLyBUaGlzIHRyYW5zYWN0aW9uIGlzIGZvciB0cmFuc2ZlcnJpbmcgYW5kIE5GVCBmcm9tCi8vIG9uZSBhY2NvdW50IHRvIGFub3RoZXIKCnRyYW5zYWN0aW9uKHJlY2lwaWVudDogQWRkcmVzcywgd2l0aGRyYXdJRDogVUludDY0KSB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLy8gZ2V0IHRoZSByZWNpcGllbnRzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBORlQgY29sbGVjdGlvbgogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oZnJvbTogPENvbGxlY3Rpb25TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIGNvbGxlY3Rpb24iKQoKICAgICAgICAvLyBib3Jyb3cgYSBwdWJsaWMgcmVmZXJlbmNlIHRvIHRoZSByZWNlaXZlcnMgY29sbGVjdGlvbgogICAgICAgIGxldCBkZXBvc2l0UmVmID0gcmVjaXBpZW50CiAgICAgICAgICAgIC5jYXBhYmlsaXRpZXMKICAgICAgICAgICAgLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KDxDb2xsZWN0aW9uUHVibGljUGF0aD4pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNlaXZlcidzIGNvbGxlY3Rpb24iKQoKICAgICAgICAvLyB3aXRoZHJhdyB0aGUgTkZUIGZyb20gdGhlIG93bmVyJ3MgY29sbGVjdGlvbgogICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiB3aXRoZHJhd0lEKQoKICAgICAgICAvLyBEZXBvc2l0IHRoZSBORlQgaW4gdGhlIHJlY2lwaWVudCdzIGNvbGxlY3Rpb24KICAgICAgICBkZXBvc2l0UmVmLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgfQp9" }, "contract": { - "getContractByName": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDb250cmFjdEJ5TmFtZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBjb250cmFjdE5hbWU6IFN0cmluZyk6IFN0cmluZz8gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBkZXBsb3llZENvbnRyYWN0ID0gYWNjb3VudC5jb250cmFjdHMuZ2V0KG5hbWU6IGNvbnRyYWN0TmFtZSkKCiAgcmV0dXJuIFN0cmluZy5mcm9tVVRGOChkZXBsb3llZENvbnRyYWN0Py5jb2RlISkKfQ==", - "getContractNames": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDb250cmFjdE5hbWVzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiAmW1N0cmluZ10gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHJldHVybiBhY2NvdW50LmNvbnRyYWN0cy5uYW1lcwp9" + "getContractByName": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q29udHJhY3RCeU5hbWUgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIGNvbnRyYWN0TmFtZTogU3RyaW5nKTogU3RyaW5nPyB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGRlcGxveWVkQ29udHJhY3QgPSBhY2NvdW50LmNvbnRyYWN0cy5nZXQobmFtZTogY29udHJhY3ROYW1lKQoKICByZXR1cm4gU3RyaW5nLmZyb21VVEY4KGRlcGxveWVkQ29udHJhY3Q/LmNvZGUhKQp9", + "getContractNames": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q29udHJhY3ROYW1lcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6ICZbU3RyaW5nXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgcmV0dXJuIGFjY291bnQuY29udHJhY3RzLm5hbWVzCn0=" }, "evm": { - "call": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjYWxsIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZERhdGE6IFN0cmluZywgaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFN0cmluZyB7CiAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KEFkZHJlc3MoMHhDT0EpKQoKICAgIGxldCBjb2EgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQoKICAgIGxldCB0eFJlc3VsdCA9IGNvYS5jYWxsKAogICAgICAgIHRvOiBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKSwKICAgICAgICBkYXRhOiBoZXhFbmNvZGVkRGF0YS5kZWNvZGVIZXgoKSwKICAgICAgICBnYXNMaW1pdDogMTUwMDAwMDAsIC8vIHRvZG8gbWFrZSBpdCBjb25maWd1cmFibGUsIG1heCBmb3Igbm93CiAgICAgICAgdmFsdWU6IEVWTS5CYWxhbmNlKGF0dG9mbG93OiAwKQogICAgKQoKICAgIGFzc2VydCgKICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICApCgogICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoY2FsbFJlc3VsdC5kYXRhKQp9Cg==", - "callContract": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjYWxsQ29udHJhY3QgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRyYW5zZmVycyAkRkxPVyBmcm9tIHRoZSBzaWduZXIncyBhY2NvdW50IENhZGVuY2UgRmxvdyBiYWxhbmNlIHRvIHRoZSByZWNpcGllbnQncyBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcy4KLy8vIE5vdGUgdGhhdCBhIENPQSBtdXN0IGhhdmUgYSAkRkxPVyBiYWxhbmNlIGluIEVWTSBiZWZvcmUgdHJhbnNmZXJyaW5nIHZhbHVlIHRvIGFub3RoZXIgRVZNIGFkZHJlc3MuCi8vLwp0cmFuc2FjdGlvbih0b0VWTUFkZHJlc3NIZXg6IFN0cmluZywgYW1vdW50OiBVRml4NjQsIGRhdGE6IFtVSW50OF0sIGdhc0xpbWl0OiBVSW50NjQpIHsKCiAgICBsZXQgY29hOiBhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3M6IEVWTS5FVk1BZGRyZXNzCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiAvc3RvcmFnZS9ldm0pID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1FVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpLCB0bzogL3N0b3JhZ2UvZXZtKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIGJyaWRnZWQgYWNjb3VudCIpCgogICAgICAgIHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyh0b0VWTUFkZHJlc3NIZXgpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzLmJ5dGVzID09IHNlbGYuY29hLmFkZHJlc3MoKS5ieXRlcyB7CiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgdmFsdWVCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQogICAgfQp9", - "checkCoaLink": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja0NvYUxpbmsgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgQ09BIGlzIHN0b3JlZCBhbmQgaXRzIHB1YmxpYyBjYXBhYmlsaXR5IGlzIHB1Ymxpc2hlZAovLy8KLy8vIEBwYXJhbSBmbG93QWRkcmVzczogVGhlIEZsb3cgYWRkcmVzcyB0byBjaGVjayBmb3IgYSBDT0EKLy8vCi8vLyBAcmV0dXJuIEJvb2w6IFdoZXRoZXIgYSBDT0EgaXMgc3RvcmVkIGFuZCBpdHMgcHVibGljIGNhcGFiaWxpdHkgaXMgcHVibGlzaGVkLCBuaWwgaWYgbm8gQ09BIGlzIHN0b3JlZAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4oZmxvd0FkZHJlc3M6IEFkZHJlc3MpOiBCb29sPyB7CiAgICAvLyBCb3Jyb3cgdGhlIENPQSB0byBjaGVjayBpZiBvbmUgaXMgc3RvcmVkCiAgICBpZiBsZXQgYWRkcmVzczogRVZNLkVWTUFkZHJlc3MgPSBnZXRBdXRoQWNjb3VudDxhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudD4oZmxvd0FkZHJlc3MpCiAgICAgICAgLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKT8uYWRkcmVzcygpIHsKICAgICAgICAvLyBDT0EgZm91bmQgLSBjaGVjayBpZiB0aGUgcHVibGljIGNhcGFiaWxpdHkgaXMgcHVibGlzaGVkCiAgICAgICAgcmV0dXJuIGdldEFjY291bnQoZmxvd0FkZHJlc3MpLmNhcGFiaWxpdGllcy5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigvcHVibGljL2V2bSkgIT0gbmlsCiAgICB9CiAgICAvLyBObyBDT0EgZm91bmQgLSByZXR1cm4gbmlsCiAgICByZXR1cm4gbmlsCn0=", - "coaLink": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjb2FMaW5rIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gcHVibGlzaGVzIGEgcHVibGljICoqdW5lbnRpdGxlZCoqIGNhcGFiaWxpdHkgZm9yIHRoZSBDT0Egc3RvcmVkIGluIHRoZSBzaWduaW5nIGFjY291bnQncyBzdG9yYWdlCi8vLyB3aGVyZSBhIENPQSBoYXMgYWxyZWFkeSBiZWVuIHN0b3JlZC4KLy8vCnRyYW5zYWN0aW9uIHsKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU3RvcmFnZUNhcGFiaWxpdGllcywgUHVibGlzaENhcGFiaWxpdHksIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLy8gRW5zdXJlIGEgQ09BIGlzIHN0b3JlZAogICAgICAgIGxldCBjb2FQYXRoID0gL3N0b3JhZ2UvZXZtCiAgICAgICAgbGV0IGNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoCiAgICAgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgQ09BIGluIHN0b3JhZ2UgYXQgcGF0aCAiLmNvbmNhdChjb2FQYXRoLnRvU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAuY29uY2F0KCIuIE1ha2Ugc3VyZSB0aGUgc2lnbmluZyBhY2NvdW50IGhhcyBpbml0aWFsaXplZCBhIENPQSBhdCB0aGUgZXhwZWN0ZWQgcGF0aC4iKQogICAgICAgICAgICApCgogICAgICAgIC8vIFB1Ymxpc2ggYSBwdWJsaWMgKip1bmVudGl0bGVkKiogY2FwYWJpbGl0eQogICAgICAgIGxldCBjb2FQdWJsaWNQYXRoID0gL3B1YmxpYy9ldm0KICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2FQdWJsaWNQYXRoKQogICAgICAgIGxldCBjb2FDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oY29hUGF0aCkKICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29hQ2FwYWJpbGl0eSwgYXQ6IGNvYVB1YmxpY1BhdGgpCiAgICB9Cn0=", - "createCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjcmVhdGVDb2EgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKCi8vLyBDcmVhdGVzIGEgQ09BIGFuZCBzYXZlcyBpdCBpbiB0aGUgc2lnbmVyJ3MgRmxvdyBhY2NvdW50ICYgcGFzc2luZyB0aGUgZ2l2ZW4gdmFsdWUgb2YgRmxvdyBpbnRvIEZsb3dFVk0KdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKICAgIGxldCBzZW50VmF1bHQ6IEBGbG93VG9rZW4uVmF1bHQKICAgIGxldCBhdXRoOiBhdXRoKElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oCiAgICAgICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgICAgICBzZWxmLmF1dGggPSBzaWduZXIKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgY29hIDwtIEVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCkKICAgICAgICBjb2EuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQoKICAgICAgICBsb2coY29hLmJhbGFuY2UoKS5pbkZMT1coKSkKICAgICAgICBsZXQgc3RvcmFnZVBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiAiZXZtIikhCiAgICAgICAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6ICJldm0iKSEKICAgICAgICBzZWxmLmF1dGguc3RvcmFnZS5zYXZlPEBFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oPC1jb2EsIHRvOiBzdG9yYWdlUGF0aCkKICAgICAgICBsZXQgYWRkcmVzc2FibGVDYXAgPSBzZWxmLmF1dGguY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PihzdG9yYWdlUGF0aCkKICAgICAgICBzZWxmLmF1dGguY2FwYWJpbGl0aWVzLnVucHVibGlzaChwdWJsaWNQYXRoKQogICAgICAgIHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMucHVibGlzaChhZGRyZXNzYWJsZUNhcCwgYXQ6IHB1YmxpY1BhdGgpCiAgICB9Cn0=", - "createCoaEmpty": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjcmVhdGVDb2FFbXB0eSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgoKLy8vIENyZWF0ZXMgYSBDT0EgYW5kIHNhdmVzIGl0IGluIHRoZSBzaWduZXIncyBGbG93IGFjY291bnQgJiBwYXNzaW5nIHRoZSBnaXZlbiB2YWx1ZSBvZiBGbG93IGludG8gRmxvd0VWTQp0cmFuc2FjdGlvbigpIHsKICAgIGxldCBhdXRoOiBhdXRoKElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oCiAgICAgICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQogICAgICAgIHNlbGYuYXV0aCA9IHNpZ25lcgogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBjb2EgPC0gRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKQogICAgICAgIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6ICJldm0iKSEKICAgICAgICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogImV2bSIpIQogICAgICAgIHNlbGYuYXV0aC5zdG9yYWdlLnNhdmU8QEVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pig8LWNvYSwgdG86IHN0b3JhZ2VQYXRoKQogICAgICAgIGxldCBhZGRyZXNzYWJsZUNhcCA9IHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KHN0b3JhZ2VQYXRoKQogICAgICAgIHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHB1YmxpY1BhdGgpCiAgICAgICAgc2VsZi5hdXRoLmNhcGFiaWxpdGllcy5wdWJsaXNoKGFkZHJlc3NhYmxlQ2FwLCBhdDogcHVibGljUGF0aCkKICAgIH0KfQ==", - "deployContract": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBkZXBsb3lDb250cmFjdCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHg4YzUzMDNlYWEyNjIwMmQ2CgoKdHJhbnNhY3Rpb24oY29kZTogU3RyaW5nKSB7CiAgICBsZXQgY29hOiBhdXRoKEVWTS5EZXBsb3kpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uRGVwbG95KSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgIGZyb206IC9zdG9yYWdlL2V2bSkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgIHNlbGYuY29hLmRlcGxveShjb2RlOiBjb2RlLmRlY29kZUhleCgpLCAgZ2FzTGltaXQ6IDE1MDAwMDAwLCB2YWx1ZTogRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApKQogICAgfQp9Cg==", - "estimateGas": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBlc3RpbWF0ZUdhcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCmFjY2VzcyhhbGwpCmZ1biBtYWluKGhleEVuY29kZWRUeDogU3RyaW5nLCBhZGRyZXNzOiBBZGRyZXNzKTogW1VJbnQ2NDsgMl0gewogICAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyZXNzKQoKICAgIGxldCBjb2EgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICBsZXQgdHhSZXN1bHQgPSBFVk0ucnVuKHR4OiBoZXhFbmNvZGVkVHguZGVjb2RlSGV4KCksIGNvaW5iYXNlOiBjb2EuYWRkcmVzcygpKQoKICAgIGFzc2VydCgKICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICApCgogICAgcmV0dXJuIFt0eFJlc3VsdC5lcnJvckNvZGUsIHR4UmVzdWx0Lmdhc1VzZWRdCn0K", - "fundCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBmdW5kQ29hIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0KSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CiAgICBsZXQgYXV0aDogYXV0aChTdG9yYWdlKSAmQWNjb3VudAogICAgbGV0IGNvYTogJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKCiAgICAgICAgbGV0IGNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCgogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgICAgIHNlbGYuYXV0aCA9IHNpZ25lcgogICAgICAgIHNlbGYuY29hID0gY29hCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9Cg==", - "fundEvmAddr": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBmdW5kRXZtQWRkciAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihldm1BZGRyOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0KSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcmVkCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnRBY2NvdW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnRBY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oPFRva2VuUmVjZWl2ZXJQYXRoPikhCiAgICAgICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9", - "getAddr": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBZGRyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweDhjNTMwM2VhYTI2MjAyZDYKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGZsb3dBZGRyZXNzOiBBZGRyZXNzKTogU3RyaW5nPyB7CiAgICBpZiBsZXQgYWRkcmVzczogRVZNLkVWTUFkZHJlc3MgPSBnZXRBdXRoQWNjb3VudDxhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudD4oZmxvd0FkZHJlc3MpCiAgICAgICAgLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKT8uYWRkcmVzcygpIHsKICAgICAgICBsZXQgYnl0ZXM6IFtVSW50OF0gPSBbXQogICAgICAgIGZvciBieXRlIGluIGFkZHJlc3MuYnl0ZXMgewogICAgICAgICAgICBieXRlcy5hcHBlbmQoYnl0ZSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoYnl0ZXMpCiAgICB9CiAgICByZXR1cm4gbmlsCn0=", - "getBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFVJbnQgewogICAgbGV0IGFkZHJlc3NCeXRlcyA9IGhleEVuY29kZWRBZGRyZXNzLmRlY29kZUhleCgpLnRvQ29uc3RhbnRTaXplZDxbVUludDg7IDIwXT4oKSEKICAgIGxldCBhZGRyZXNzID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IGFkZHJlc3NCeXRlcykKCiAgICByZXR1cm4gYWRkcmVzcy5iYWxhbmNlKCkuaW5BdHRvRkxPVygpCn0K", - "getCoaAddr": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDb2FBZGRyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFN0cmluZyB7CiAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHJlc3MpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkKCiAgICBpZiBjb2EgPT0gbmlsIHsgCiAgICAgICAgcmV0dXJuICIiCiAgICB9IGVsc2UgewogICAgICAgIGxldCBjb2FBZGRyID0gY29hPy5hZGRyZXNzKCkgCgogICAgICAgIGxldCBhZGRyQnl0ZTogW1VJbnQ4XSA9IFtdCgogICAgICAgIGZvciBieXRlIGluIGNvYUFkZHI/LmJ5dGVzISB7CiAgICAgICAgICAgIGFkZHJCeXRlLmFwcGVuZChieXRlKQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoYWRkckJ5dGUpCiAgICB9Cn0K", - "getCoaBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDb2FCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyZXNzKQoKICAgIGxldCBjb2EgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICAKICAgIHJldHVybiBjb2EuYmFsYW5jZSgpLmluRkxPVygpCn0K", - "getCode": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDb2RlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFN0cmluZyB7CiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQogICAgbGV0IGFkZHJlc3MgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKQoKICAgIHJldHVybiBTdHJpbmcuZW5jb2RlSGV4KGFkZHJlc3MuY29kZSgpKQp9Cg==", - "getNonce": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXROb25jZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCmFjY2VzcyhhbGwpCmZ1biBtYWluKGhleEVuY29kZWRBZGRyZXNzOiBTdHJpbmcpOiBVSW50NjQgewogICAgbGV0IGFkZHJlc3NCeXRlcyA9IGhleEVuY29kZWRBZGRyZXNzLmRlY29kZUhleCgpLnRvQ29uc3RhbnRTaXplZDxbVUludDg7IDIwXT4oKSEKICAgIGxldCBhZGRyZXNzID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IGFkZHJlc3NCeXRlcykKCiAgICByZXR1cm4gYWRkcmVzcy5ub25jZSgpCn0K", - "newAccountAndCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBuZXdBY2NvdW50QW5kQ29hIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcsIHNpZ25hdHVyZUFsZ29yaXRobTogVUludDgsIGhhc2hBbGdvcml0aG06IFVJbnQ4LCB3ZWlnaHQ6IFVGaXg2NCkgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAogICAgbGV0IGF1dGg6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewoKICAgICAgICBsZXQgYWNjb3VudCA9IEFjY291bnQocGF5ZXI6IHNpZ25lcikKCiAgICAgICAgbGV0IGtleSA9IFB1YmxpY0tleSgKICAgICAgICAgICAgcHVibGljS2V5OiBwdWJsaWNLZXkuZGVjb2RlSGV4KCksCiAgICAgICAgICAgIHNpZ25hdHVyZUFsZ29yaXRobTogU2lnbmF0dXJlQWxnb3JpdGhtKHJhd1ZhbHVlOiBzaWduYXR1cmVBbGdvcml0aG0pIQogICAgICAgICkKCiAgICAgICAgYWNjb3VudC5rZXlzLmFkZChwdWJsaWNLZXk6IGtleSwgaGFzaEFsZ29yaXRobTogSGFzaEFsZ29yaXRobShyYXdWYWx1ZTogaGFzaEFsZ29yaXRobSkhLCB3ZWlnaHQ6IHdlaWdodCkKCQkKICAgICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiAwLjApIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICAgICAgc2VsZi5hdXRoID0gYWNjb3VudAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBhY2NvdW50IDwtIEVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCkKICAgICAgICBsb2coYWNjb3VudC5hZGRyZXNzKCkpCiAgICAgICAgYWNjb3VudC5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCgogICAgICAgIGxvZyhhY2NvdW50LmJhbGFuY2UoKSkKICAgICAgICBzZWxmLmF1dGguc3RvcmFnZS5zYXZlPEBFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oPC1hY2NvdW50LCB0bzogU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogImV2bSIpISkKICAgIH0KfQo=", - "run": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBydW4gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihoZXhFbmNvZGVkVHg6IFN0cmluZykgewogICAgbGV0IGNvYTogJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IHR4UmVzdWx0ID0gRVZNLnJ1bih0eDogaGV4RW5jb2RlZFR4LmRlY29kZUhleCgpLCBjb2luYmFzZTogc2VsZi5jb2EuYWRkcmVzcygpKQogICAgICAgIC8vIHRvZG8gb25seSB0ZW1wb3JhcnkgdW50aWwgd2UgY29ycmVjdGx5IGhhbmRsZSBmYWlsdXJlIGV2ZW50cwogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuZmFpbGVkIHx8IHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLnN1Y2Nlc3NmdWwsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICAgICApCiAgICB9Cn0K", - "transferCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2ZlckNvYSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgYWRkcmVzczogQWRkcmVzcykgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEVWTS5XaXRoZHJhdykgJkFjY291bnQpIHsKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3KSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCgogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIGNvYS53aXRoZHJhdyhiYWxhbmNlOiBFVk0uQmFsYW5jZShhdHRvZmxvdzogVUludChhbW91bnQpICogMTAwMDAwMDAwMDAwMDAwMDAwKSkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgICBsZXQgcmVjZWl2ZXIgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikhCiAgICAgICAgcmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9Cg==", - "transferFlowFromCoaToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2ZlckZsb3dGcm9tQ29hVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCBhZGRyZXNzOiBBZGRyZXNzKSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgRVZNLldpdGhkcmF3KSAmQWNjb3VudCkgewogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgICAgICBsZXQgd2l0aGRyYXdCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgd2l0aGRyYXdCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIGNvYS53aXRoZHJhdyhiYWxhbmNlOiB3aXRoZHJhd0JhbGFuY2UpIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgbGV0IHJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgIH0KfQo=", - "transferFlowToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2ZlckZsb3dUb0V2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRyYW5zZmVycyAkRkxPVyBmcm9tIHRoZSBzaWduZXIncyBhY2NvdW50IENhZGVuY2UgRmxvdyBiYWxhbmNlIHRvIHRoZSByZWNpcGllbnQncyBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcy4KLy8vIE5vdGUgdGhhdCBhIENPQSBtdXN0IGhhdmUgYSAkRkxPVyBiYWxhbmNlIGluIEVWTSBiZWZvcmUgdHJhbnNmZXJyaW5nIHZhbHVlIHRvIGFub3RoZXIgRVZNIGFkZHJlc3MuCi8vLwp0cmFuc2FjdGlvbihyZWNpcGllbnRFVk1BZGRyZXNzSGV4OiBTdHJpbmcsIGFtb3VudDogVUZpeDY0LCBnYXNMaW1pdDogVUludDY0KSB7CgogICAgbGV0IGNvYTogYXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzOiBFVk0uRVZNQWRkcmVzcwogICAgdmFyIHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogL3N0b3JhZ2UvZXZtKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKSwgdG86IC9zdG9yYWdlL2V2bSkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBicmlkZ2VkIGFjY291bnQiKQoKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpIGFzISBARmxvd1Rva2VuLlZhdWx0CgogICAgICAgIHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnRFVk1BZGRyZXNzSGV4KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuY29hLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgICAgICAKICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgdmFsdWVCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGRhdGE6IFtdLAogICAgICAgICAgICBnYXNMaW1pdDogZ2FzTGltaXQsCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZUJhbGFuY2UKICAgICAgICApCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKCiAgICB9Cn0=", - "withdrawCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB3aXRoZHJhd0NvYSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgYWRkcmVzczogQWRkcmVzcykgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEVWTS5XaXRoZHJhdykgJkFjY291bnQpIHsKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3KSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICAgICAgbGV0IHdpdGhkcmF3QmFsYW5jZSA9IEVWTS5CYWxhbmNlKGF0dG9mbG93OiAwKQogICAgICAgIHdpdGhkcmF3QmFsYW5jZS5zZXRGTE9XKGZsb3c6IGFtb3VudCkKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSBjb2Eud2l0aGRyYXcoYmFsYW5jZTogd2l0aGRyYXdCYWxhbmNlKSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgIGxldCByZWNlaXZlciA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICByZWNlaXZlci5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0K" + "call": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2FsbCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihoZXhFbmNvZGVkRGF0YTogU3RyaW5nLCBoZXhFbmNvZGVkQWRkcmVzczogU3RyaW5nKTogU3RyaW5nIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oQWRkcmVzcygweENPQSkpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIGxldCBhZGRyZXNzQnl0ZXMgPSBoZXhFbmNvZGVkQWRkcmVzcy5kZWNvZGVIZXgoKS50b0NvbnN0YW50U2l6ZWQ8W1VJbnQ4OyAyMF0+KCkhCgogICAgbGV0IHR4UmVzdWx0ID0gY29hLmNhbGwoCiAgICAgICAgdG86IEVWTS5FVk1BZGRyZXNzKGJ5dGVzOiBhZGRyZXNzQnl0ZXMpLAogICAgICAgIGRhdGE6IGhleEVuY29kZWREYXRhLmRlY29kZUhleCgpLAogICAgICAgIGdhc0xpbWl0OiAxNTAwMDAwMCwgLy8gdG9kbyBtYWtlIGl0IGNvbmZpZ3VyYWJsZSwgbWF4IGZvciBub3cKICAgICAgICB2YWx1ZTogRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICApCgogICAgYXNzZXJ0KAogICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICkKCiAgICByZXR1cm4gU3RyaW5nLmVuY29kZUhleChjYWxsUmVzdWx0LmRhdGEpCn0K", + "callContract": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2FsbENvbnRyYWN0IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gVHJhbnNmZXJzICRGTE9XIGZyb20gdGhlIHNpZ25lcidzIGFjY291bnQgQ2FkZW5jZSBGbG93IGJhbGFuY2UgdG8gdGhlIHJlY2lwaWVudCdzIGhleC1lbmNvZGVkIEVWTSBhZGRyZXNzLgovLy8gTm90ZSB0aGF0IGEgQ09BIG11c3QgaGF2ZSBhICRGTE9XIGJhbGFuY2UgaW4gRVZNIGJlZm9yZSB0cmFuc2ZlcnJpbmcgdmFsdWUgdG8gYW5vdGhlciBFVk0gYWRkcmVzcy4KLy8vCnRyYW5zYWN0aW9uKHRvRVZNQWRkcmVzc0hleDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCwgZGF0YTogW1VJbnQ4XSwgZ2FzTGltaXQ6IFVJbnQ2NCkgewoKICAgIGxldCBjb2E6IGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzczogRVZNLkVWTUFkZHJlc3MKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IC9zdG9yYWdlL2V2bSkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LUVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCksIHRvOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgfQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgYnJpZGdlZCBhY2NvdW50IikKCiAgICAgICAgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHRvRVZNQWRkcmVzc0hleCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MuYnl0ZXMgPT0gc2VsZi5jb2EuYWRkcmVzcygpLmJ5dGVzIHsKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQogICAgICAgIGxldCB2YWx1ZUJhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICB2YWx1ZUJhbGFuY2Uuc2V0RkxPVyhmbG93OiBhbW91bnQpCiAgICAgICAgbGV0IHR4UmVzdWx0ID0gc2VsZi5jb2EuY2FsbCgKICAgICAgICAgICAgdG86IHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZGF0YTogZGF0YSwKICAgICAgICAgICAgZ2FzTGltaXQ6IGdhc0xpbWl0LAogICAgICAgICAgICB2YWx1ZTogdmFsdWVCYWxhbmNlCiAgICAgICAgKQogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuZmFpbGVkIHx8IHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLnN1Y2Nlc3NmdWwsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICAgICApCiAgICB9Cn0=", + "checkCoaLink": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2hlY2tDb2FMaW5rIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSBDT0EgaXMgc3RvcmVkIGFuZCBpdHMgcHVibGljIGNhcGFiaWxpdHkgaXMgcHVibGlzaGVkCi8vLwovLy8gQHBhcmFtIGZsb3dBZGRyZXNzOiBUaGUgRmxvdyBhZGRyZXNzIHRvIGNoZWNrIGZvciBhIENPQQovLy8KLy8vIEByZXR1cm4gQm9vbDogV2hldGhlciBhIENPQSBpcyBzdG9yZWQgYW5kIGl0cyBwdWJsaWMgY2FwYWJpbGl0eSBpcyBwdWJsaXNoZWQsIG5pbCBpZiBubyBDT0EgaXMgc3RvcmVkCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihmbG93QWRkcmVzczogQWRkcmVzcyk6IEJvb2w/IHsKICAgIC8vIEJvcnJvdyB0aGUgQ09BIHRvIGNoZWNrIGlmIG9uZSBpcyBzdG9yZWQKICAgIGlmIGxldCBhZGRyZXNzOiBFVk0uRVZNQWRkcmVzcyA9IGdldEF1dGhBY2NvdW50PGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50PihmbG93QWRkcmVzcykKICAgICAgICAuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pPy5hZGRyZXNzKCkgewogICAgICAgIC8vIENPQSBmb3VuZCAtIGNoZWNrIGlmIHRoZSBwdWJsaWMgY2FwYWJpbGl0eSBpcyBwdWJsaXNoZWQKICAgICAgICByZXR1cm4gZ2V0QWNjb3VudChmbG93QWRkcmVzcykuY2FwYWJpbGl0aWVzLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KC9wdWJsaWMvZXZtKSAhPSBuaWwKICAgIH0KICAgIC8vIE5vIENPQSBmb3VuZCAtIHJldHVybiBuaWwKICAgIHJldHVybiBuaWwKfQ==", + "coaLink": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY29hTGluayAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBwdWJsaXNoZXMgYSBwdWJsaWMgKip1bmVudGl0bGVkKiogY2FwYWJpbGl0eSBmb3IgdGhlIENPQSBzdG9yZWQgaW4gdGhlIHNpZ25pbmcgYWNjb3VudCdzIHN0b3JhZ2UKLy8vIHdoZXJlIGEgQ09BIGhhcyBhbHJlYWR5IGJlZW4gc3RvcmVkLgovLy8KdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBTdG9yYWdlQ2FwYWJpbGl0aWVzLCBQdWJsaXNoQ2FwYWJpbGl0eSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvLyBFbnN1cmUgYSBDT0EgaXMgc3RvcmVkCiAgICAgICAgbGV0IGNvYVBhdGggPSAvc3RvcmFnZS9ldm0KICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygKICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZmluZCBDT0EgaW4gc3RvcmFnZSBhdCBwYXRoICIuY29uY2F0KGNvYVBhdGgudG9TdHJpbmcoKSkKICAgICAgICAgICAgICAgIC5jb25jYXQoIi4gTWFrZSBzdXJlIHRoZSBzaWduaW5nIGFjY291bnQgaGFzIGluaXRpYWxpemVkIGEgQ09BIGF0IHRoZSBleHBlY3RlZCBwYXRoLiIpCiAgICAgICAgICAgICkKCiAgICAgICAgLy8gUHVibGlzaCBhIHB1YmxpYyAqKnVuZW50aXRsZWQqKiBjYXBhYmlsaXR5CiAgICAgICAgbGV0IGNvYVB1YmxpY1BhdGggPSAvcHVibGljL2V2bQogICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvYVB1YmxpY1BhdGgpCiAgICAgICAgbGV0IGNvYUNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihjb2FQYXRoKQogICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2FDYXBhYmlsaXR5LCBhdDogY29hUHVibGljUGF0aCkKICAgIH0KfQ==", + "createCoa": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY3JlYXRlQ29hIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgoKLy8vIENyZWF0ZXMgYSBDT0EgYW5kIHNhdmVzIGl0IGluIHRoZSBzaWduZXIncyBGbG93IGFjY291bnQgJiBwYXNzaW5nIHRoZSBnaXZlbiB2YWx1ZSBvZiBGbG93IGludG8gRmxvd0VWTQp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCkgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAogICAgbGV0IGF1dGg6IGF1dGgoSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgICAgIHNlbGYuYXV0aCA9IHNpZ25lcgogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBjb2EgPC0gRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKQogICAgICAgIGNvYS5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCgogICAgICAgIGxvZyhjb2EuYmFsYW5jZSgpLmluRkxPVygpKQogICAgICAgIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6ICJldm0iKSEKICAgICAgICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogImV2bSIpIQogICAgICAgIHNlbGYuYXV0aC5zdG9yYWdlLnNhdmU8QEVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pig8LWNvYSwgdG86IHN0b3JhZ2VQYXRoKQogICAgICAgIGxldCBhZGRyZXNzYWJsZUNhcCA9IHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KHN0b3JhZ2VQYXRoKQogICAgICAgIHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHB1YmxpY1BhdGgpCiAgICAgICAgc2VsZi5hdXRoLmNhcGFiaWxpdGllcy5wdWJsaXNoKGFkZHJlc3NhYmxlQ2FwLCBhdDogcHVibGljUGF0aCkKICAgIH0KfQ==", + "createCoaEmpty": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY3JlYXRlQ29hRW1wdHkgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCgovLy8gQ3JlYXRlcyBhIENPQSBhbmQgc2F2ZXMgaXQgaW4gdGhlIHNpZ25lcidzIEZsb3cgYWNjb3VudCAmIHBhc3NpbmcgdGhlIGdpdmVuIHZhbHVlIG9mIEZsb3cgaW50byBGbG93RVZNCnRyYW5zYWN0aW9uKCkgewogICAgbGV0IGF1dGg6IGF1dGgoSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCiAgICAgICAgc2VsZi5hdXRoID0gc2lnbmVyCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGNvYSA8LSBFVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpCiAgICAgICAgbGV0IHN0b3JhZ2VQYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogImV2bSIpIQogICAgICAgIGxldCBwdWJsaWNQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiAiZXZtIikhCiAgICAgICAgc2VsZi5hdXRoLnN0b3JhZ2Uuc2F2ZTxARVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KDwtY29hLCB0bzogc3RvcmFnZVBhdGgpCiAgICAgICAgbGV0IGFkZHJlc3NhYmxlQ2FwID0gc2VsZi5hdXRoLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oc3RvcmFnZVBhdGgpCiAgICAgICAgc2VsZi5hdXRoLmNhcGFiaWxpdGllcy51bnB1Ymxpc2gocHVibGljUGF0aCkKICAgICAgICBzZWxmLmF1dGguY2FwYWJpbGl0aWVzLnB1Ymxpc2goYWRkcmVzc2FibGVDYXAsIGF0OiBwdWJsaWNQYXRoKQogICAgfQp9", + "deployContract": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZGVwbG95Q29udHJhY3QgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweDhjNTMwM2VhYTI2MjAyZDYKCgp0cmFuc2FjdGlvbihjb2RlOiBTdHJpbmcpIHsKICAgIGxldCBjb2E6IGF1dGgoRVZNLkRlcGxveSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5EZXBsb3kpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIENPQSEiKQoKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgc2VsZi5jb2EuZGVwbG95KGNvZGU6IGNvZGUuZGVjb2RlSGV4KCksICBnYXNMaW1pdDogMTUwMDAwMDAsIHZhbHVlOiBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkpCiAgICB9Cn0K", + "estimateGas": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZXN0aW1hdGVHYXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZFR4OiBTdHJpbmcsIGFkZHJlc3M6IEFkZHJlc3MpOiBbVUludDY0OyAyXSB7CiAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHJlc3MpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIGxldCB0eFJlc3VsdCA9IEVWTS5ydW4odHg6IGhleEVuY29kZWRUeC5kZWNvZGVIZXgoKSwgY29pbmJhc2U6IGNvYS5hZGRyZXNzKCkpCgogICAgYXNzZXJ0KAogICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICkKCiAgICByZXR1cm4gW3R4UmVzdWx0LmVycm9yQ29kZSwgdHhSZXN1bHQuZ2FzVXNlZF0KfQo=", + "fundCoa": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZnVuZENvYSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKICAgIGxldCBzZW50VmF1bHQ6IEBGbG93VG9rZW4uVmF1bHQKICAgIGxldCBhdXRoOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50CiAgICBsZXQgY29hOiAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCB2YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgoKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICAgICAgc2VsZi5hdXRoID0gc2lnbmVyCiAgICAgICAgc2VsZi5jb2EgPSBjb2EKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0K", + "fundEvmAddr": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZnVuZEV2bUFkZHIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGV2bUFkZHI6IFN0cmluZywgYW1vdW50OiBVRml4NjQpIHsKCiAgICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVyZWQKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmPFRva2VuPi5WYXVsdD4oZnJvbTogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgICAgbGV0IHJlY2lwaWVudEFjY291bnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudEFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pig8VG9rZW5SZWNlaXZlclBhdGg+KSEKICAgICAgICAgICAgCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0=", + "getAddr": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWRkciAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4OGM1MzAzZWFhMjYyMDJkNgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oZmxvd0FkZHJlc3M6IEFkZHJlc3MpOiBTdHJpbmc/IHsKICAgIGlmIGxldCBhZGRyZXNzOiBFVk0uRVZNQWRkcmVzcyA9IGdldEF1dGhBY2NvdW50PGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50PihmbG93QWRkcmVzcykKICAgICAgICAuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pPy5hZGRyZXNzKCkgewogICAgICAgIGxldCBieXRlczogW1VJbnQ4XSA9IFtdCiAgICAgICAgZm9yIGJ5dGUgaW4gYWRkcmVzcy5ieXRlcyB7CiAgICAgICAgICAgIGJ5dGVzLmFwcGVuZChieXRlKQogICAgICAgIH0KICAgICAgICByZXR1cm4gU3RyaW5nLmVuY29kZUhleChieXRlcykKICAgIH0KICAgIHJldHVybiBuaWwKfQ==", + "getBalance": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihoZXhFbmNvZGVkQWRkcmVzczogU3RyaW5nKTogVUludCB7CiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQogICAgbGV0IGFkZHJlc3MgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKQoKICAgIHJldHVybiBhZGRyZXNzLmJhbGFuY2UoKS5pbkF0dG9GTE9XKCkKfQo=", + "getCoaAddr": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q29hQWRkciAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogU3RyaW5nIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcmVzcykKCiAgICBsZXQgY29hID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgKQoKICAgIGlmIGNvYSA9PSBuaWwgeyAKICAgICAgICByZXR1cm4gIiIKICAgIH0gZWxzZSB7CiAgICAgICAgbGV0IGNvYUFkZHIgPSBjb2E/LmFkZHJlc3MoKSAKCiAgICAgICAgbGV0IGFkZHJCeXRlOiBbVUludDhdID0gW10KCiAgICAgICAgZm9yIGJ5dGUgaW4gY29hQWRkcj8uYnl0ZXMhIHsKICAgICAgICAgICAgYWRkckJ5dGUuYXBwZW5kKGJ5dGUpCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU3RyaW5nLmVuY29kZUhleChhZGRyQnl0ZSkKICAgIH0KfQo=", + "getCoaBalance": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q29hQmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHJlc3MpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIAogICAgcmV0dXJuIGNvYS5iYWxhbmNlKCkuaW5GTE9XKCkKfQo=", + "getCode": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q29kZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihoZXhFbmNvZGVkQWRkcmVzczogU3RyaW5nKTogU3RyaW5nIHsKICAgIGxldCBhZGRyZXNzQnl0ZXMgPSBoZXhFbmNvZGVkQWRkcmVzcy5kZWNvZGVIZXgoKS50b0NvbnN0YW50U2l6ZWQ8W1VJbnQ4OyAyMF0+KCkhCiAgICBsZXQgYWRkcmVzcyA9IEVWTS5FVk1BZGRyZXNzKGJ5dGVzOiBhZGRyZXNzQnl0ZXMpCgogICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoYWRkcmVzcy5jb2RlKCkpCn0K", + "getNonce": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Tm9uY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFVJbnQ2NCB7CiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQogICAgbGV0IGFkZHJlc3MgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKQoKICAgIHJldHVybiBhZGRyZXNzLm5vbmNlKCkKfQo=", + "newAccountAndCoa": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgbmV3QWNjb3VudEFuZENvYSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihwdWJsaWNLZXk6IFN0cmluZywgc2lnbmF0dXJlQWxnb3JpdGhtOiBVSW50OCwgaGFzaEFsZ29yaXRobTogVUludDgsIHdlaWdodDogVUZpeDY0KSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CiAgICBsZXQgYXV0aDogYXV0aChTdG9yYWdlKSAmQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CgogICAgICAgIGxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKICAgICAgICBsZXQga2V5ID0gUHVibGljS2V5KAogICAgICAgICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25hdHVyZUFsZ29yaXRobSkhCiAgICAgICAgKQoKICAgICAgICBhY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LCBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3JpdGhtKSEsIHdlaWdodDogd2VpZ2h0KQoJCQogICAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IDAuMCkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgICAgICBzZWxmLmF1dGggPSBhY2NvdW50CiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGFjY291bnQgPC0gRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKQogICAgICAgIGxvZyhhY2NvdW50LmFkZHJlc3MoKSkKICAgICAgICBhY2NvdW50LmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKCiAgICAgICAgbG9nKGFjY291bnQuYmFsYW5jZSgpKQogICAgICAgIHNlbGYuYXV0aC5zdG9yYWdlLnNhdmU8QEVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pig8LWFjY291bnQsIHRvOiBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiAiZXZtIikhKQogICAgfQp9Cg==", + "run": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcnVuIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGhleEVuY29kZWRUeDogU3RyaW5nKSB7CiAgICBsZXQgY29hOiAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgdHhSZXN1bHQgPSBFVk0ucnVuKHR4OiBoZXhFbmNvZGVkVHguZGVjb2RlSGV4KCksIGNvaW5iYXNlOiBzZWxmLmNvYS5hZGRyZXNzKCkpCiAgICAgICAgLy8gdG9kbyBvbmx5IHRlbXBvcmFyeSB1bnRpbCB3ZSBjb3JyZWN0bHkgaGFuZGxlIGZhaWx1cmUgZXZlbnRzCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgIH0KfQo=", + "transferCoa": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJDb2EgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCBhZGRyZXNzOiBBZGRyZXNzKSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgRVZNLldpdGhkcmF3KSAmQWNjb3VudCkgewogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gY29hLndpdGhkcmF3KGJhbGFuY2U6IEVWTS5CYWxhbmNlKGF0dG9mbG93OiBVSW50KGFtb3VudCkgKiAxMDAwMDAwMDAwMDAwMDAwMDApKSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgIGxldCByZWNlaXZlciA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICByZWNlaXZlci5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0K", + "transferFlowFromCoaToFlow": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJGbG93RnJvbUNvYVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQsIGFkZHJlc3M6IEFkZHJlc3MpIHsKICAgIGxldCBzZW50VmF1bHQ6IEBGbG93VG9rZW4uVmF1bHQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBFVk0uV2l0aGRyYXcpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5XaXRoZHJhdykgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIENPQSEiKQogICAgICAgIGxldCB3aXRoZHJhd0JhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICB3aXRoZHJhd0JhbGFuY2Uuc2V0RkxPVyhmbG93OiBhbW91bnQpCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gY29hLndpdGhkcmF3KGJhbGFuY2U6IHdpdGhkcmF3QmFsYW5jZSkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgICBsZXQgcmVjZWl2ZXIgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikhCiAgICAgICAgcmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9Cg==", + "transferFlowToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJGbG93VG9Fdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gVHJhbnNmZXJzICRGTE9XIGZyb20gdGhlIHNpZ25lcidzIGFjY291bnQgQ2FkZW5jZSBGbG93IGJhbGFuY2UgdG8gdGhlIHJlY2lwaWVudCdzIGhleC1lbmNvZGVkIEVWTSBhZGRyZXNzLgovLy8gTm90ZSB0aGF0IGEgQ09BIG11c3QgaGF2ZSBhICRGTE9XIGJhbGFuY2UgaW4gRVZNIGJlZm9yZSB0cmFuc2ZlcnJpbmcgdmFsdWUgdG8gYW5vdGhlciBFVk0gYWRkcmVzcy4KLy8vCnRyYW5zYWN0aW9uKHJlY2lwaWVudEVWTUFkZHJlc3NIZXg6IFN0cmluZywgYW1vdW50OiBVRml4NjQsIGdhc0xpbWl0OiBVSW50NjQpIHsKCiAgICBsZXQgY29hOiBhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3M6IEVWTS5FVk1BZGRyZXNzCiAgICB2YXIgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiAvc3RvcmFnZS9ldm0pID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1FVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpLCB0bzogL3N0b3JhZ2UvZXZtKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIGJyaWRnZWQgYWNjb3VudCIpCgogICAgICAgIGxldCB2YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KAogICAgICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkgYXMhIEBGbG93VG9rZW4uVmF1bHQKCiAgICAgICAgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudEVWTUFkZHJlc3NIZXgpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgICAgIAogICAgICAgIGxldCB2YWx1ZUJhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICB2YWx1ZUJhbGFuY2Uuc2V0RkxPVyhmbG93OiBhbW91bnQpCiAgICAgICAgbGV0IHR4UmVzdWx0ID0gc2VsZi5jb2EuY2FsbCgKICAgICAgICAgICAgdG86IHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZGF0YTogW10sCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQoKICAgIH0KfQ==", + "withdrawCoa": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgd2l0aGRyYXdDb2EgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCBhZGRyZXNzOiBBZGRyZXNzKSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgRVZNLldpdGhkcmF3KSAmQWNjb3VudCkgewogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgICAgICBsZXQgd2l0aGRyYXdCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgd2l0aGRyYXdCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIGNvYS53aXRoZHJhdyhiYWxhbmNlOiB3aXRoZHJhd0JhbGFuY2UpIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgbGV0IHJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgIH0KfQo=" }, "hybridCustody": { - "addNFTCollectionToDelegator": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBhZGRORlRDb2xsZWN0aW9uVG9EZWxlZ2F0b3IgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uKHBhcmVudDogQWRkcmVzcywgaXNQdWJsaWM6IEJvb2wpIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IG8gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5Pd25lcikgJkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygib3duZWQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIGxldCBjaGlsZDogJkh5YnJpZEN1c3RvZHkuQ2hpbGRBY2NvdW50ID0gby5ib3Jyb3dDaGlsZEFjY291bnQocGFyZW50OiBwYXJlbnQpCiAgICAgICAgICAgID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogICAgICAgIGxldCBjYXAgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFeGFtcGxlTkZULkNvbGxlY3Rpb24+KEV4YW1wbGVORlQuQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgIG8uYWRkQ2FwYWJpbGl0eVRvRGVsZWdhdG9yKHBhcmVudDogcGFyZW50LCBjYXA6IGNhcCwgaXNQdWJsaWM6IGlzUHVibGljKQogICAgfQp9", - "batchBridgeChildNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZUNoaWxkTkZURnJvbUV2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZHM6IFtVSW50MjU2XSkgewogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAgLy8gbGV0IHJlY2VpdmVyID0gZ2V0QWNjb3VudChjaGlsZCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIC8vICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBSZWNlaXZlciBmcm9tIHJlY2lwaWVudCdzIHB1YmxpYyBjYXBhYmlsaXR5IHBhdGgiKQoKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwdWJsaWNDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgICAgIGFzc2VydChwdWJsaWNDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHVibGljIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICAgIAogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICAgICAgdHlwZTogbmZ0VHlwZSwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKCiAgICAgICAgICAgIGFzc2VydCgKICAgICAgICAgICAgICAgIG5mdC5nZXRUeXBlKCkgPT0gbmZ0VHlwZSwKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQobmZ0VHlwZS5pZGVudGlmaWVyKQogICAgICAgICAgICAgICAgICAgIC5jb25jYXQoIiwgcmVjZWl2ZWQ6ICIpLmNvbmNhdChuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgICAgIH0KICAgICAgCgogICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchBridgeChildNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZUNoaWxkTkZUVG9Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZHM6IFtVSW50NjRdKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIGxldCBpZCA9IGlkc1swXQogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgICAgIGxldCBjaGlsZE5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1jaGlsZE5mdCkKICAgICAgICAvLyAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMCAqIFVGaXg2NChpZHMubGVuZ3RoKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBjb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LSBuZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgZm9yIG5mdElkIGluIGlkcyB7CiAgICAgICAgICAgIGlmIGlkeCA9PSAwIHsKICAgICAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBuZnRJZCkKICAgICAgICAgICAgY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQoKfQo=", - "batchBridgeChildNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaEJyaWRnZUNoaWxkTkZUVG9Fdm1BZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZHM6IFtVSW50NjRdLCByZWNpcGllbnQ6U3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICAvLyBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIGxldCBpZCA9IGlkc1swXQogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgICAgIGxldCBjaGlsZE5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1jaGlsZE5mdCkKICAgICAgICAvLyAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMCAqIFVGaXg2NChpZHMubGVuZ3RoKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgICAgICAgICAKICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCgogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LSBuZnQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIGZvciBuZnRJZCBpbiBpZHMgewogICAgICAgICAgICBpZiBpZHggPT0gMCB7CiAgICAgICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICAgICAgdG9rZW46IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogbmZ0SWQpLAogICAgICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICB9CiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2NvcGVkUHJvdmlkZXIKICAgIH0KCn0K", - "batchSendChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaFNlbmRDaGlsZE5GVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAKICAgIGxldCByZWNlaXZlckFjYyA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgcmVjZWl2ZXJBY2MuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQogICAgCiAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgIH0KICB9Cn0=", - "batchSendChildNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaFNlbmRDaGlsZE5GVFRvQ2hpbGQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKCiAgICBsZXQgcmVjZWl2ZXJDaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogcmVjZWl2ZXIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICBsZXQgcmVjZWl2ZXJDb250cm9sbGVySWQgPSByZWNlaXZlckNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIGxldCByZWNlaXZlckNhcCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiByZWNlaXZlckNvbnRyb2xsZXJJZCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpIAogICAgbGV0IHB1YmxpY0NhcCA9IHJlY2VpdmVyQ2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGxldCByZWNlaXZlclJlZiA9ICBwdWJsaWNDYXAuYm9ycm93KCkhCgogICAgZm9yIGlkIGluIGlkcyB7CiAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", - "batchTransferChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaFRyYW5zZmVyQ2hpbGRORlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCAgaWRzOiBbVUludDY0XSApIHsKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgbGV0IHJlY2VpdmVyUmVmID0gIHNpZ25lci5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgZm9yIGlkIGluIGlkcyB7ICAgICAKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgIH0KICB9Cn0=", - "batchTransferNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBiYXRjaFRyYW5zZmVyTkZUVG9DaGlsZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCnRyYW5zYWN0aW9uKGNoaWxkQWRkcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBjaGlsZENhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CiAgICBhc3NlcnQoY2hpbGRDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIGxldCBwYXJlbnRSZWYgPSAgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oZnJvbSA6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSEKICAgIGxldCBjaGlsZFJlZiA9IGNoaWxkQ2FwLmJvcnJvdygpIQoKICAgIGZvciBpZCBpbiBpZHMgeyAgICAgCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBuZnQgPC0gcGFyZW50UmVmIS53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkhCiAgICAgICAgY2hpbGRSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", - "bridgeChildFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VDaGlsZEZURnJvbUV2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5Cgp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGFtb3VudDogVUludDI1NikgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKICAgICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgIAogICAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIGxldCBzY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICkKCiAgICAgICAgbGV0IHZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9IDwtIGNvYS53aXRoZHJhd1Rva2VucygKICAgICAgICAgICAgdHlwZTogdmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCgogICAgICAgIHZhdWx0UmVmLmRlcG9zaXQoZnJvbTogPC0gdmF1bHQpCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQoKfQog", - "bridgeChildFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VDaGlsZEZUVG9Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBhbW91bnQ6IFVGaXg2NCkgewoKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICAgIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKCiAgICAgICAgdmF1bHQuZGVwb3NpdChmcm9tOiA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQoKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgIHNlbGYuY29hLmRlcG9zaXRUb2tlbnMoCiAgICAgICAgICAgIHZhdWx0OiA8LXNlbGYucGF5bWVudFZhdWx0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQog", - "bridgeChildFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VDaGlsZEZUVG9Fdm1BZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBjaGlsZDogQWRkcmVzcywgYW1vdW50OiBVRml4NjQsIHJlY2lwaWVudDpTdHJpbmcpIHsKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICAgIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIC8vIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIC8vIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgIAogICAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCB2YXVsdFJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CgogICAgICAgIHZhdWx0LmRlcG9zaXQoZnJvbTogPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpKQogICAgICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYmFsYW5jZSAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5wYXltZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgYnJpZGdlIGZlZSBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiBzdG9yYWdlIHVzYWdlIHdpdGggc29tZSBidWZmZXIKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICkKCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlVG9rZW5zVG9FVk0oCiAgICAgICAgICAgIHZhdWx0OiA8LXNlbGYucGF5bWVudFZhdWx0LAogICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0KIA==", - "bridgeChildNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VDaGlsZE5GVEZyb21Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5Cgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZDogVUludDI1NikgewogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAgLy8gbGV0IHJlY2VpdmVyID0gZ2V0QWNjb3VudChjaGlsZCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIC8vICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBSZWNlaXZlciBmcm9tIHJlY2lwaWVudCdzIHB1YmxpYyBjYXBhYmlsaXR5IHBhdGgiKQoKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwdWJsaWNDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgICAgIGFzc2VydChwdWJsaWNDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHVibGljIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICAgIAogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBjb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgIHR5cGU6IG5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCgogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgbmZ0LmdldFR5cGUoKSA9PSBuZnRUeXBlLAogICAgICAgICAgICBtZXNzYWdlOiAiQnJpZGdlZCBuZnQgdHlwZSBtaXNtYXRjaCAtIHJlcXVlc3d0ZWQ6ICIuY29uY2F0KG5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgIC5jb25jYXQoIiwgcmVjZWl2ZWQ6ICIpLmNvbmNhdChuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgKQoKICAgICAgICBjb2xsZWN0aW9uUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeChildNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VDaGlsZE5GVFRvRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50NjQsIGNoaWxkOiBBZGRyZXNzKSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgoKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKICAgICAgICBsZXQgY2hpbGROZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBjb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtY2hpbGROZnQpCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCiAgICAgICAKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC1zZWxmLm5mdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeChildNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBicmlkZ2VDaGlsZE5GVFRvRXZtQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCgoKdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBjaGlsZDogQWRkcmVzcywgaWQ6IFVJbnQ2NCwgcmVjaXBpZW50OlN0cmluZykgewogICAgCiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgLy8gbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgLy8gc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAvLyAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICAgICAgbGV0IGNoaWxkTmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LWNoaWxkTmZ0KQogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICAvLyBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgIC8vICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgLy8gICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAvLyApCiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LXNlbGYubmZ0LAogICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "checkChildLinkedCollections": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja0NoaWxkTGlua2VkQ29sbGVjdGlvbnMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MsIGlkZW50aWZpZXI6IFN0cmluZyk6IEJvb2wgewogICAgbGV0IG1nciA9IGdldEF1dGhBY2NvdW50KHBhcmVudCkuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IG1hbmFnZXIgZnJvbSBwYXJlbnQiKQogICAgbGV0IGNoaWxkID0gbWdyLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJDaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogICAgbGV0IGNhcCA9IGNoaWxkLmdldENhcGFiaWxpdHkoCiAgICAgICAgICAgIHBhdGg6IFByaXZhdGVQYXRoKGlkZW50aWZpZXI6IGlkZW50aWZpZXIpISBhcyBDYXBhYmlsaXR5UGF0aCwKICAgICAgICAgICAgdHlwZTogVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKICAgICAgICApIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlciwgTm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4/CgogICAgCiAgICByZXR1cm4gY2FwICE9IG5pbAp9ICAgCiAgICA=", - "checkChildLinkedVaults": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja0NoaWxkTGlua2VkVmF1bHRzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MsIGNoaWxkOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcpOiBCb29sIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkKICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgCiAgbGV0IHByb3ZpZGVyVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCgogIGxldCBhZGRyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihjaGlsZCkKICAKICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQoKICBsZXQgY29udHJvbGxlcnMgPSBhZGRyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGgpISkKICB2YXIgZmxhZyA9IGZhbHNlCgogIGZvciBjIGluIGNvbnRyb2xsZXJzIHsKICAgIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgY29udGludWUKICAgIH0KCiAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgIGNvbnRpbnVlCiAgICAgIH0KCiAgICAgIGZsYWcgPSB0cnVlCiAgICAgIGJyZWFrCiAgICB9CiAgfQoKICByZXR1cm4gZmxhZwp9IAogICAg", - "checkChildRecieveVaults": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja0NoaWxkUmVjaWV2ZVZhdWx0cyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcywgcGF0aDogU3RyaW5nKTogQm9vbCB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpCiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogIAogIGxldCByZWNlaXZlclR5cGUgPSBUeXBlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KCkKCiAgbGV0IGFkZHIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkKQogIAogIGxldCBjaGlsZEFjY3QgPSBtYW5hZ2VyLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogIGxldCBjb250cm9sbGVycyA9IGFkZHIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aCkhKQogIHZhciBmbGFnID0gZmFsc2UKCiAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHJlY2VpdmVyVHlwZSkgewogICAgICBjb250aW51ZQogICAgfQoKICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiByZWNlaXZlclR5cGUpIHsKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+IAoKICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgZmxhZyA9IHRydWUKICAgICAgYnJlYWsKICAgIH0KICB9CgogIHJldHVybiBmbGFnCn0gCiAgICA=", - "editChildAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBlZGl0Q2hpbGRBY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgp0cmFuc2FjdGlvbihjaGlsZEFkZHJlc3M6IEFkZHJlc3MsIG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZywgdGh1bWJuYWlsOiBTdHJpbmcpIHsKICAgIHByZXBhcmUoYWNjdDogQXV0aEFjY291bnQpIHsKICAgICAgICBsZXQgbSA9IGFjY3QuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIGxldCBkID0gTWV0YWRhdGFWaWV3cy5EaXNwbGF5KAogICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sCiAgICAgICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6IHRodW1ibmFpbCkKICAgICAgICApCgogICAgICAgIG0uc2V0Q2hpbGRBY2NvdW50RGlzcGxheShhZGRyZXNzOiBjaGlsZEFkZHJlc3MsIGQpCiAgICB9Cn0=", - "getAccessibleChildAccountNFTs": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2Nlc3NpYmxlQ2hpbGRBY2NvdW50TkZUcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IEFueVN0cnVjdCB7CiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKCiAgdmFyIHR5cGVJZHNXaXRoUHJvdmlkZXIgPSB7fSBhcyB7QWRkcmVzczogW1N0cmluZ119CgogIC8vIEFkZHJlc3MgLT4gbmZ0IFVVSUQgLT4gRGlzcGxheQogIHZhciBuZnRWaWV3cyA9IHt9IGFzIHtBZGRyZXNzOiB7VUludDY0OiBNZXRhZGF0YVZpZXdzLkRpc3BsYXl9fSAKCiAgCiAgbGV0IHByb3ZpZGVyVHlwZSA9IFR5cGU8Q2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oKQogIGxldCBjb2xsZWN0aW9uVHlwZTogVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigpCgogIC8vIEl0ZXJhdGUgdGhyb3VnaCBjaGlsZCBhY2NvdW50cwogIGZvciBhZGRyZXNzIGluIG1hbmFnZXIuZ2V0Q2hpbGRBZGRyZXNzZXMoKSB7CiAgICBsZXQgYWNjdCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oYWRkcmVzcykKICAgIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgICBsZXQgdmlld3M6IHtVSW50NjQ6IE1ldGFkYXRhVmlld3MuRGlzcGxheX0gPSB7fQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgIAogICAgLy8gdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CgogICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGghKQogICAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKICAgIAoKICAgIC8vIGl0ZXJhdGUgc3RvcmFnZSwgY2hlY2sgaWYgdHlwZUlkc1dpdGhQcm92aWRlciBjb250YWlucyB0aGUgdHlwZUlkLCBpZiBzbywgYWRkIHRvIHZpZXdzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICAgIAogICAgICBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyW2FkZHJlc3NdID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHRydWUKICAgICAgfQoKICAgICAgZm9yIGtleSBpbiB0eXBlSWRzV2l0aFByb3ZpZGVyLmtleXMgewogICAgICAgIGZvciBpZHgsIHZhbHVlIGluIHR5cGVJZHNXaXRoUHJvdmlkZXJba2V5XSEgewogICAgICAgICAgbGV0IHZhbHVlID0gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldIQoKICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZS5pZGVudGlmaWVyIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIHR5cGUuaXNJbnN0YW5jZShjb2xsZWN0aW9uVHlwZSkgewogICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgSURzICYgcmVzb2x2ZSB0aGUgdmlldwogICAgICAgICAgICAgIGZvciBpZCBpbiBjb2xsZWN0aW9uLmdldElEcygpIHsKICAgICAgICAgICAgICAgIGxldCBuZnQgPSBjb2xsZWN0aW9uLmJvcnJvd05GVChpZCkhCiAgICAgICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogaWQpIQogICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSByZXNvbHZlci5yZXNvbHZlVmlldyhUeXBlPE1ldGFkYXRhVmlld3MuRGlzcGxheT4oKSkhIGFzPyBNZXRhZGF0YVZpZXdzLkRpc3BsYXkgewogICAgICAgICAgICAgICAgICB2aWV3cy5pbnNlcnQoa2V5OiBuZnQudXVpZCwgZGlzcGxheSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCiAgICBuZnRWaWV3c1thZGRyZXNzXSA9IHZpZXdzCiAgfQogIHJldHVybiBuZnRWaWV3cwp9", - "getAccessibleCoinInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2Nlc3NpYmxlQ29pbkluZm8gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgVG9rZW5JbmZvIHsKYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKYWNjZXNzKGFsbCkgbGV0IGJhbGFuY2U6IFVGaXg2NAoKaW5pdChpZDogU3RyaW5nLCBiYWxhbmNlOiBVRml4NjQpIHsKICAgIHNlbGYuaWQgPSBpZAogICAgc2VsZi5iYWxhbmNlID0gYmFsYW5jZQp9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGRBZGRyZXNzOiBBZGRyZXNzKTogW1Rva2VuSW5mb10gewogICAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKICAgIHZhciB0eXBlSWRzV2l0aFByb3ZpZGVyOiB7QWRkcmVzczogW1N0cmluZ119ID0ge30KCiAgICB2YXIgY29pbkluZm9MaXN0OiBbVG9rZW5JbmZvXSA9IFtdCiAgICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigpCiAgICBsZXQgdmF1bHRUeXBlOiBUeXBlID0gVHlwZTxAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigpCgogICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCgogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+IChjaGlsZEFkZHJlc3MpCiAgICBsZXQgZm91bmRUeXBlczogW1N0cmluZ10gPSBbXQogICAgbGV0IHZhdWx0QmFsYW5jZXM6IHtTdHJpbmc6IFVGaXg2NH0gPSB7fQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAvLyBnZXQgYWxsIHByaXZhdGUgcGF0aHMKICAgIGFjY3Quc3RvcmFnZS5mb3JFYWNoU3RvcmVkKGZ1biAocGF0aDogU3RvcmFnZVBhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgICAgICAvLyBDaGVjayB3aGljaCBwcml2YXRlIHBhdGhzIGhhdmUgTkZUIFByb3ZpZGVyIEFORCBjYW4gYmUgYm9ycm93ZWQKICAgICAgICBpZiAhdHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSl7CiAgICAgICAgICAgIHJldHVybiB0cnVlCiAgICAgICAgfQoKICAgICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGgpCgogICAgICAgIC8vIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgICAgICAgICBpZiAhYy5ib3Jyb3dUeXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgICAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZQogICAgfSkKICAgIHR5cGVJZHNXaXRoUHJvdmlkZXJbY2hpbGRBZGRyZXNzXSA9IGZvdW5kVHlwZXMKCiAgICAKICAgIGFjY3Quc3RvcmFnZS5mb3JFYWNoU3RvcmVkKGZ1biAocGF0aDogU3RvcmFnZVBhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgIAogICAgaWYgdHlwZUlkc1dpdGhQcm92aWRlcltjaGlsZEFkZHJlc3NdID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICBmb3Iga2V5IGluIHR5cGVJZHNXaXRoUHJvdmlkZXIua2V5cyB7CiAgICAgICAgZm9yIGlkeCwgdmFsdWUgaW4gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldISB7CiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHR5cGVJZHNXaXRoUHJvdmlkZXJba2V5XSEKCiAgICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZS5pZGVudGlmaWVyIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiB0eXBlLmlzSW5zdGFuY2UodmF1bHRUeXBlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgbGV0IHZhdWx0ID0gYWNjdC5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KGZyb206IHBhdGgpIHsgCiAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgSURzICYgcmVzb2x2ZSB0aGUgdmlldwogICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvTGlzdC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgVG9rZW5JbmZvKGlkOiB0eXBlLmlkZW50aWZpZXIsIGJhbGFuY2U6IHZhdWx0LmJhbGFuY2UpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB9CiAgICAgIHJldHVybiB0cnVlCiAgICB9KQoKICAgIAogICAgcmV0dXJuIGNvaW5JbmZvTGlzdAp9", - "getAccessibleCollectionAndIdsDisplay": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBY2Nlc3NpYmxlQ29sbGVjdGlvbkFuZElkc0Rpc3BsYXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKCmFjY2VzcyhhbGwpIHN0cnVjdCBDb2xsZWN0aW9uRGlzcGxheSB7CiAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBzcXVhcmVJbWFnZTogTWV0YWRhdGFWaWV3cy5NZWRpYQoKICBpbml0KG5hbWU6IFN0cmluZywgc3F1YXJlSW1hZ2U6IE1ldGFkYXRhVmlld3MuTWVkaWEpIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogIH0KfQoKYWNjZXNzKGFsbCkgc3RydWN0IE5GVENvbGxlY3Rpb24gewogIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogIGFjY2VzcyhhbGwpIGxldCBpZExpc3Q6IFtVSW50NjRdCgogIGluaXQoaWQ6U3RyaW5nLCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8sIGlkTGlzdDogW1VJbnQ2NF0pIHsKICAgIHNlbGYuaWQgPSBpZAogICAgc2VsZi5kaXNwbGF5ID0gZGlzcGxheQogICAgc2VsZi5pZExpc3QgPSBpZExpc3QKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBnZXREaXNwbGF5KGFkZHJlc3M6IEFkZHJlc3MsIHBhdGg6IFN0b3JhZ2VQYXRoKTogQ29sbGVjdGlvbkRpc3BsYXk/IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oYWRkcmVzcykKCiAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgLy8gbGV0IHZhdWx0VHlwZSA9IFR5cGU8QHtGdW5naWJsZVRva2VuLlZhdWx0fT4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPCZ7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHBhdGgpIHsKICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgIGlmIGlzTkZUQ29sbGVjdGlvbiAmJiBjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihmcm9tOiBwYXRoKSB7CiAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKCiAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvUmFyaWJsZU5GVENvbGxlY3Rpb24gCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKSEKICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgICAgICAgICAgaXRlbSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UKICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgcmV0dXJuIGl0ZW0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZEFjY291bnQ6IEFkZHJlc3MpOiBbTkZUQ29sbGVjdGlvbl0gewogICAgbGV0IG1hbmFnZXIgPSAgZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKCiAgICAvLyBBZGRyZXNzIC0+IENvbGxlY3Rpb24gVHlwZSAtPiBvd25lZE5GVHMKCiAgICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigpCiAgICBsZXQgY29sbGVjdGlvblR5cGU6IFR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQoKICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBjaGlsZCBhY2NvdW50cwoKICAgIGxldCBhY2N0ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihjaGlsZEFjY291bnQpCiAgICBsZXQgZm91bmRUeXBlczogW1R5cGVdID0gW10KICAgIGxldCBuZnRzOiB7U3RyaW5nOiBbVUludDY0XX0gPSB7fQogICAgbGV0IGNvbGxlY3Rpb25MaXN0OiBbTkZUQ29sbGVjdGlvbl0gPSBbXQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFjY291bnQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgICAgIC8vIENoZWNrIHdoaWNoIHByaXZhdGUgcGF0aHMgaGF2ZSBORlQgUHJvdmlkZXIgQU5EIGNhbiBiZSBib3Jyb3dlZAogICAgICAgIC8vIGlmICF0eXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKXsKICAgICAgICAvLyAgICAgcmV0dXJuIHRydWUKICAgICAgICAvLyB9CiAgICAgICAgLy8gaWYgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KHBhdGg6IHBhdGgsIHR5cGU6IFR5cGU8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKSkgewogICAgICAgIC8vICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgIC8vICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAvLyAgICAgICAgIC8vIGlmIHRoaXMgaXNuJ3QgYSBwcm92aWRlciBjYXBhYmlsaXR5LCBleGl0IHRoZSBhY2NvdW50IGl0ZXJhdGlvbiBmdW5jdGlvbiBmb3IgdGhpcyBwYXRoCiAgICAgICAgLy8gICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIC8vICAgICB9CiAgICAgICAgLy8gICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkpCiAgICAgICAgLy8gfQoKICAgICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGghKQogICAgICAgIGZvciBjIGluIGNvbnRyb2xsZXJzIHsKICAgICAgICAgIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KCiAgICAgICAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKSkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgLy8gaXRlcmF0ZSBzdG9yYWdlLCBjaGVjayBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyIGNvbnRhaW5zIHRoZSB0eXBlSWQsIGlmIHNvLCBhZGQgdG8gbmZ0cwogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewoKICAgICAgICBpZiBmb3VuZFR5cGVzID09IG5pbCB7CiAgICAgICAgICAgIHJldHVybiB0cnVlCiAgICAgICAgfQoKICAgICAgICBmb3IgaWR4LCB2YWx1ZSBpbiBmb3VuZFR5cGVzIHsKICAgICAgICAgICAgbGV0IHZhbHVlID0gZm91bmRUeXBlcyEKCiAgICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgdHlwZS5pc0luc3RhbmNlKGNvbGxlY3Rpb25UeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIGxldCBjb2xsZWN0aW9uID0gYWNjdC5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGZyb206IHBhdGgpIHsgCiAgICAgICAgICAgICAgICAgICAgbmZ0cy5pbnNlcnQoa2V5OiB0eXBlLmlkZW50aWZpZXIsIGNvbGxlY3Rpb24uZ2V0SURzKCkpCiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkxpc3QuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgTkZUQ29sbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHR5cGUuaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ2V0RGlzcGxheShhZGRyZXNzOiBjaGlsZEFjY291bnQsIHBhdGg6IHBhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICBpZExpc3Q6IGNvbGxlY3Rpb24uZ2V0SURzKCkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlCiAgICB9KQoKICAgIHJldHVybiBjb2xsZWN0aW9uTGlzdAp9", - "getChildAccountAllowTypes": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDaGlsZEFjY291bnRBbGxvd1R5cGVzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MpOiBbU3RyaW5nXT8gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcikKICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHIpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKCiAgCiAgbGV0IG5mdFByb3ZpZGVyVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgbGV0IGZ0UHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKCiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCiAgbGV0IGFkZHIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkKQogIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAvLyBnZXQgYWxsIHByaXZhdGUgcGF0aHMKCiAgZm9yIHMgaW4gYWRkci5zdG9yYWdlLnN0b3JhZ2VQYXRocyB7CiAgICBsZXQgY29udHJvbGxlcnMgPSBhZGRyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHMpCiAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgIC8vIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgLy8gICBjb250aW51ZQogICAgICAvLyB9CgogICAgICBpZiBsZXQgbmZ0Q2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogbmZ0UHJvdmlkZXJUeXBlKSB7CiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gbmZ0Q2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKG5mdENhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICBicmVhawogICAgICB9CiAgICAgIGlmIGxldCBmdENhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogYy5jYXBhYmlsaXR5SUQsIHR5cGU6IGZ0UHJvdmlkZXJUeXBlKSB7CiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gZnRDYXAgYXMhIENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGZ0Q2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiBmb3VuZFR5cGVzCn0=", - "getChildAccountFTCapabilities": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDaGlsZEFjY291bnRGVENhcGFiaWxpdGllcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKLy8gVGhpcyBzY3JpcHQgaXRlcmF0ZXMgdGhyb3VnaCBhIHBhcmVudCdzIGNoaWxkIGFjY291bnRzLCAKLy8gaWRlbnRpZmllcyBwcml2YXRlIHBhdGhzIHdpdGggYW4gYWNjZXNzaWJsZSBGdW5naWJsZVRva2VuLlByb3ZpZGVyLCBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyB0eXBlSWRzCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOkFueVN0cnVjdCB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKQogIGxldCBtYW5hZ2VyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcikuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKICB2YXIgdHlwZUlkc1dpdGhQcm92aWRlcjoge0FkZHJlc3M6IFtTdHJpbmddfSA9IHt9CiAgCiAgbGV0IHByb3ZpZGVyVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCgogIC8vIEl0ZXJhdGUgdGhyb3VnaCBjaGlsZCBhY2NvdW50cwogIGZvciBhZGRyZXNzIGluIG1hbmFnZXIuZ2V0Q2hpbGRBZGRyZXNzZXMoKSB7CiAgICBsZXQgYWRkciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oYWRkcmVzcykKICAgIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAvLyBnZXQgYWxsIHByaXZhdGUgcGF0aHMKCiAgICBmb3IgcyBpbiBhZGRyLnN0b3JhZ2Uuc3RvcmFnZVBhdGhzIHsKICAgICAgZm9yIGMgaW4gYWRkci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBzKSB7CiAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSl7CiAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgaWYgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogYy5jYXBhYmlsaXR5SUQsIHR5cGU6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgfQoKICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICAgIHR5cGVJZHNXaXRoUHJvdmlkZXJbYWRkcmVzc10gPSBmb3VuZFR5cGVzCiAgICAgICAgICBicmVhawogICAgICAgIH0KICAgICAgfQogICAgfSAgICAgIAogIH0KCiAgcmV0dXJuIHR5cGVJZHNXaXRoUHJvdmlkZXIKfQog", - "getChildAccountMeta": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDaGlsZEFjY291bnRNZXRhIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MpOiB7QWRkcmVzczogQW55U3RydWN0fSB7CiAgICBsZXQgYWNjdCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkKICAgIGxldCBtID0gYWNjdC5zdG9yYWdlLmJvcnJvdzwmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKCiAgICBpZiBtID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHt9CiAgICB9IGVsc2UgewogICAgICAgIHZhciBkYXRhOiB7QWRkcmVzczogQW55U3RydWN0fSA9IHt9CiAgICAgICAgZm9yIGFkZHJlc3MgaW4gbT8uZ2V0Q2hpbGRBZGRyZXNzZXMoKSEgewogICAgICAgICAgICBsZXQgYyA9IG0/LmdldENoaWxkQWNjb3VudERpc3BsYXkoYWRkcmVzczogYWRkcmVzcykgCiAgICAgICAgICAgIGRhdGEuaW5zZXJ0KGtleTogYWRkcmVzcywgYykKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRhdGEKICAgIH0KfQ==", - "getChildAddresses": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRDaGlsZEFkZHJlc3NlcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzKTogW0FkZHJlc3NdIHsKICAgIGxldCBhY2N0ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KQogICAgbGV0IG1hbmFnZXIgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vdCBmb3VuZCIpCiAgICByZXR1cm4gIG1hbmFnZXIuZ2V0Q2hpbGRBZGRyZXNzZXMoKQp9", - "getExamplenftCollectionFromDelegator": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRFeGFtcGxlbmZ0Q29sbGVjdGlvbkZyb21EZWxlZ2F0b3IgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweDI4YjgxZjU4ODBkNTU1NGUKCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MsIGlzUHVibGljOiBCb29sKSB7CiAgICBsZXQgbSA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm90IGZvdW5kIikKICAgIGxldCBhY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKQogICAgICAgID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCBpbiBtYW5hZ2VyIikKCiAgICBsZXQgdCA9IFR5cGU8Q2FwYWJpbGl0eTwmRXhhbXBsZU5GVC5Db2xsZWN0aW9uPj4oKQoKICAgIGxldCBjYXAgPSAoaXNQdWJsaWMgPyBhY2N0LmdldFB1YmxpY0NhcEZyb21EZWxlZ2F0b3IodHlwZTogdCkgOiBhY2N0LmdldFByaXZhdGVDYXBGcm9tRGVsZWdhdG9yKHR5cGU6IHQpKQogICAgICAgID8/IHBhbmljKCJjYXBhYmlsaXR5IG5vdCBmb3VuZCIpCiAgICAKICAgIGFzc2VydChjYXAuZ2V0VHlwZSgpID09IHQsIG1lc3NhZ2U6ICJtaXNtYXRjaGVkIGNhcGFiaWxpdHkgdHlwZXMiKQp9", - "publishToParent": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBwdWJsaXNoVG9QYXJlbnQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgI2FsbG93QWNjb3VudExpbmtpbmcKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmFjdG9yeSBmcm9tIDB4Q2FwYWJpbGl0eUZhY3RvcnkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKaW1wb3J0IENhcGFiaWxpdHlEZWxlZ2F0b3IgZnJvbSAweENhcGFiaWxpdHlEZWxlZ2F0b3IKCnRyYW5zYWN0aW9uKHBhcmVudDogQWRkcmVzcywgZmFjdG9yeUFkZHJlc3M6IEFkZHJlc3MsIGZpbHRlckFkZHJlc3M6IEFkZHJlc3MpIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCBvd25lZCA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk93bmVyKSAmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJvd25lZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogICAgICAgIGxldCBmYWN0b3J5ID0gZ2V0QWNjb3VudChmYWN0b3J5QWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwmQ2FwYWJpbGl0eUZhY3RvcnkuTWFuYWdlcj4oQ2FwYWJpbGl0eUZhY3RvcnkuUHVibGljUGF0aCkKICAgICAgICBhc3NlcnQoZmFjdG9yeS5jaGVjaygpLCBtZXNzYWdlOiAiZmFjdG9yeSBhZGRyZXNzIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgbGV0IGZpbHRlciA9IGdldEFjY291bnQoZmlsdGVyQWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwme0NhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyfT4oQ2FwYWJpbGl0eUZpbHRlci5QdWJsaWNQYXRoKQogICAgICAgIGFzc2VydChmaWx0ZXIuY2hlY2soKSwgbWVzc2FnZTogImNhcGFiaWxpdHkgZmlsdGVyIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgb3duZWQucHVibGlzaFRvUGFyZW50KHBhcmVudEFkZHJlc3M6IHBhcmVudCwgZmFjdG9yeTogZmFjdG9yeSwgZmlsdGVyOiBmaWx0ZXIpCiAgICB9Cn0=", - "redeemAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICByZWRlZW1BY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweFZpZXdSZXNvbHZlcgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCnRyYW5zYWN0aW9uKGNoaWxkQWRkcmVzczogQWRkcmVzcywgZmlsdGVyQWRkcmVzczogQWRkcmVzcz8sIGZpbHRlclBhdGg6IFB1YmxpY1BhdGg/KSB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzLCBJbmJveCkgJkFjY291bnQpIHsKICAgICAgICB2YXIgZmlsdGVyOiBDYXBhYmlsaXR5PCZ7Q2FwYWJpbGl0eUZpbHRlci5GaWx0ZXJ9Pj8gPSBuaWwKICAgICAgICBpZiBmaWx0ZXJBZGRyZXNzICE9IG5pbCAmJiBmaWx0ZXJQYXRoICE9IG5pbCB7CiAgICAgICAgICAgIGZpbHRlciA9IGdldEFjY291bnQoZmlsdGVyQWRkcmVzcyEpLmNhcGFiaWxpdGllcy5nZXQ8JntDYXBhYmlsaXR5RmlsdGVyLkZpbHRlcn0+KGZpbHRlclBhdGghKQogICAgICAgIH0KCiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IG0gPC0gSHlicmlkQ3VzdG9keS5jcmVhdGVNYW5hZ2VyKGZpbHRlcjogZmlsdGVyKQogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSg8LSBtLCB0bzogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCgogICAgICAgICAgICBmb3IgYyBpbiBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSB7CiAgICAgICAgICAgICAgICBjLmRlbGV0ZSgpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnVucHVibGlzaChIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWNQYXRoKQoKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWN9PihIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCksCiAgICAgICAgICAgICAgICBhdDogSHlicmlkQ3VzdG9keS5NYW5hZ2VyUHVibGljUGF0aAogICAgICAgICAgICApCgogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZ7SHlicmlkQ3VzdG9keS5NYW5hZ2VyUHJpdmF0ZSwgSHlicmlkQ3VzdG9keS5NYW5hZ2VyUHVibGljfT4oSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgfQoKICAgICAgICBsZXQgaW5ib3hOYW1lID0gSHlicmlkQ3VzdG9keS5nZXRDaGlsZEFjY291bnRJZGVudGlmaWVyKGFjY3QuYWRkcmVzcykKICAgICAgICBsZXQgY2FwID0gYWNjdC5pbmJveC5jbGFpbTxhdXRoKEh5YnJpZEN1c3RvZHkuQ2hpbGQpICZ7SHlicmlkQ3VzdG9keS5BY2NvdW50UHJpdmF0ZSwgSHlicmlkQ3VzdG9keS5BY2NvdW50UHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJ9PihpbmJveE5hbWUsIHByb3ZpZGVyOiBjaGlsZEFkZHJlc3MpCiAgICAgICAgICAgID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IGNhcCBub3QgZm91bmQiKQoKICAgICAgICBsZXQgbWFuYWdlciA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vIGZvdW5kIikKCiAgICAgICAgbWFuYWdlci5hZGRBY2NvdW50KGNhcDogY2FwKQogICAgfQp9", - "sendChildFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kQ2hpbGRGVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKLy8gSEMtb3duZWQgaW1wb3J0cwppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihhZGRyZXNzOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgcGF0aDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCApIHsKCiAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICBsZXQgdmF1bHREYXRhOiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YQoKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAKICAgICAgc2VsZi52YXVsdERhdGEgPSA8VG9rZW4+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/CiAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8VG9rZW4+ICIpCgogICAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHNlbGYudmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAKICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgc2VsZi5wYXltZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgfQoKICBleGVjdXRlIHsKCiAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2VpdmVyKQoKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnQuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihzZWxmLnZhdWx0RGF0YS5yZWNlaXZlclBhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5wYXltZW50VmF1bHQpCiAgfQp9CiA=", - "sendChildFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kQ2hpbGRGVFRvQ2hpbGQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCi8vIEhDLW93bmVkIGltcG9ydHMKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcmVjZWl2ZXI6IEFkZHJlc3MsIHBhdGg6IFN0cmluZywgYW1vdW50OiBVRml4NjQgKSB7CgogIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICBsZXQgcGF5bWVudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgbGV0IHZhdWx0RGF0YTogRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGEKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgCiAgICAgIHNlbGYudmF1bHREYXRhID0gPFRva2VuPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKSkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPwogICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPFRva2VuPiAiKQoKICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBzZWxmLnZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgCiAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgCiAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgIHNlbGYucGF5bWVudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogIH0KCiAgZXhlY3V0ZSB7CgogICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudChyZWNlaXZlcikKCiAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgbGV0IHJlY2VpdmVyUmVmID0gcmVjaXBpZW50LmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oc2VsZi52YXVsdERhdGEucmVjZWl2ZXJQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQoKICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYucGF5bWVudFZhdWx0KQogIH0KfQog", - "sendChildFTWithParent": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kQ2hpbGRGVFdpdGhQYXJlbnQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQsIHRvOiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcykgewoKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICAgIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCB2YXVsdERhdGE6IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIHNlbGYudmF1bHREYXRhID0gRXhhbXBsZVRva2VuLnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/CiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIEV4YW1wbGVUb2tlbiIpCgogICAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHNlbGYudmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgLy8gR2V0IHRoZSByZWNpcGllbnQncyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudCh0bykKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHNlbGYudmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhLmJvcnJvdygpCgkJCT8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQoKICAgICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLnBheW1lbnRWYXVsdCkKICAgIH0KfQog", - "sendChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kQ2hpbGRORlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKCnRyYW5zYWN0aW9uKGNoaWxkQWRkcjogQWRkcmVzcywgcmVjZWl2ZXI6IEFkZHJlc3MsIGlkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCkgewogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGRBZGRyKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgIGxldCByZWNlaXZlckFjYyA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgcmVjZWl2ZXJBY2MuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQogICAgCiAgICByZWNlaXZlclJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgfQp9", - "sendChildNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kQ2hpbGRORlRUb0NoaWxkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKCiAgICBsZXQgcmVjZWl2ZXJDaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogcmVjZWl2ZXIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICBsZXQgcmVjZWl2ZXJDb250cm9sbGVySWQgPSByZWNlaXZlckNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIGxldCByZWNlaXZlckNhcCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiByZWNlaXZlckNvbnRyb2xsZXJJZCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpIAogICAgbGV0IHB1YmxpY0NhcCA9IHJlY2VpdmVyQ2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGxldCByZWNlaXZlclJlZiA9ICBwdWJsaWNDYXAuYm9ycm93KCkhCgogICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgCiAgICByZWNlaXZlclJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgfQp9", - "setupOwnedAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZXR1cE93bmVkQWNjb3VudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAjYWxsb3dBY2NvdW50TGlua2luZwoKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5Ci8vLyBUaGlzIHRyYW5zYWN0aW9uIGNvbmZpZ3VyZXMgYW4gT3duZWRBY2NvdW50IGluIHRoZSBzaWduZXIgaWYgbmVlZGVkIGFuZCBjb25maWd1cmVzIGl0cyBDYXBhYmlsaXRpZXMgcGVyCi8vLyBIeWJyaWRDdXN0b2R5J3MgaW50ZW5kZWQgZGVzaWduLiBJZiBEaXNwbGF5IHZhbHVlcyBhcmUgc3BlY2lmaWVkIChhcyByZWNvbW1lbmRlZCksIHRoZXkgd2lsbCBiZSBzZXQgb24gdGhlCi8vLyBzaWduZXIncyBPd25lZEFjY291bnQuCi8vLwp0cmFuc2FjdGlvbihuYW1lOiBTdHJpbmc/LCBkZXNjOiBTdHJpbmc/LCB0aHVtYm5haWxVUkw6IFN0cmluZz8pIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGFjY3RDYXAgPSBhY2N0LmNhcGFiaWxpdGllcy5hY2NvdW50Lmlzc3VlPGF1dGgoU3RvcmFnZSwgQ29udHJhY3RzLCBLZXlzLCBJbmJveCwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oKQoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudD4oZnJvbTogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IG93bmVkQWNjb3VudCA8LSBIeWJyaWRDdXN0b2R5LmNyZWF0ZU93bmVkQWNjb3VudChhY2N0OiBhY2N0Q2FwKQogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSg8LW93bmVkQWNjb3VudCwgdG86IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgfQoKICAgICAgICBsZXQgb3duZWQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5Pd25lcikgJkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygib3duZWQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIC8vIFNldCB0aGUgZGlzcGxheSBtZXRhZGF0YSBmb3IgdGhlIE93bmVkQWNjb3VudAogICAgICAgIGlmIG5hbWUgIT0gbmlsICYmIGRlc2MgIT0gbmlsICYmIHRodW1ibmFpbFVSTCAhPSBuaWwgewogICAgICAgICAgICBsZXQgdGh1bWJuYWlsID0gTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6IHRodW1ibmFpbFVSTCEpCiAgICAgICAgICAgIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5EaXNwbGF5KG5hbWU6IG5hbWUhLCBkZXNjcmlwdGlvbjogZGVzYyEsIHRodW1ibmFpbDogdGh1bWJuYWlsKQogICAgICAgICAgICBvd25lZC5zZXREaXNwbGF5KGRpc3BsYXkpCiAgICAgICAgfQoKICAgICAgICAvLyBjaGVjayB0aGF0IHBhdGhzIGFyZSBhbGwgY29uZmlndXJlZCBwcm9wZXJseQogICAgICAgIGZvciBjIGluIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkgewogICAgICAgICAgICBjLmRlbGV0ZSgpCiAgICAgICAgfQoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Cb3Jyb3dhYmxlQWNjb3VudCwgSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0h5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJ9PihIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljUGF0aAogICAgICAgICkKICAgIH0KfQog", - "setupOwnedAccountAndPublishToParent": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZXR1cE93bmVkQWNjb3VudEFuZFB1Ymxpc2hUb1BhcmVudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAjYWxsb3dBY2NvdW50TGlua2luZwoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhDYXBhYmlsaXR5RmFjdG9yeQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgppbXBvcnQgQ2FwYWJpbGl0eURlbGVnYXRvciBmcm9tIDB4Q2FwYWJpbGl0eURlbGVnYXRvcgovLy8gVGhpcyB0cmFuc2FjdGlvbiBjb25maWd1cmVzIGFuIE93bmVkQWNjb3VudCBpbiB0aGUgc2lnbmVyIGlmIG5lZWRlZCwgYW5kIHByb2NlZWRzIHRvIGNyZWF0ZSBhIENoaWxkQWNjb3VudCAKLy8vIHVzaW5nIENhcGFiaWxpdHlGYWN0b3J5Lk1hbmFnZXIgYW5kIENhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyIENhcGFiaWxpdGllcyBmcm9tIHRoZSBnaXZlbiBhZGRyZXNzZXMuIEEKLy8vIENhcGFiaWxpdHkgb24gdGhlIENoaWxkQWNjb3VudCBpcyB0aGVuIHB1Ymxpc2hlZCB0byB0aGUgc3BlY2lmaWVkIHBhcmVudCBhY2NvdW50LiAKLy8vCnRyYW5zYWN0aW9uKAogICAgcGFyZW50OiBBZGRyZXNzLAogICAgZmFjdG9yeUFkZHJlc3M6IEFkZHJlc3MsCiAgICBmaWx0ZXJBZGRyZXNzOiBBZGRyZXNzLAogICAgbmFtZTogU3RyaW5nLAogICAgZGVzYzogU3RyaW5nLAogICAgdGh1bWJuYWlsVVJMOiBTdHJpbmcKKSB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIC8vIENvbmZpZ3VyZSBPd25lZEFjY291bnQgaWYgaXQgZG9lc24ndCBleGlzdAogICAgICAgIGlmIGFjY3Quc3RvcmFnZS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICB2YXIgYWNjdENhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmFjY291bnQuaXNzdWU8YXV0aChTdG9yYWdlLCBDb250cmFjdHMsIEtleXMsIEluYm94LCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PigpCiAgICAgICAgICAgIGxldCBvd25lZEFjY291bnQgPC0gSHlicmlkQ3VzdG9keS5jcmVhdGVPd25lZEFjY291bnQoYWNjdDogYWNjdENhcCkKICAgICAgICAgICAgYWNjdC5zdG9yYWdlLnNhdmUoPC1vd25lZEFjY291bnQsIHRvOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgIH0KCiAgICAgICAgZm9yIGMgaW4gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSB7CiAgICAgICAgICAgIGMuZGVsZXRlKCkKICAgICAgICB9CgoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Cb3Jyb3dhYmxlQWNjb3VudCwgSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0h5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJ9PihIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljUGF0aAogICAgICAgICkKCiAgICAgICAgbGV0IG93bmVkID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuT3duZXIpICZIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudD4oZnJvbTogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm93bmVkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgICAvLyBTZXQgdGhlIGRpc3BsYXkgbWV0YWRhdGEgZm9yIHRoZSBPd25lZEFjY291bnQKICAgICAgICBpZiBuYW1lICE9IG5pbCAmJiBkZXNjICE9IG5pbCAmJiB0aHVtYm5haWxVUkwgIT0gbmlsIHsKICAgICAgICAgICAgbGV0IHRodW1ibmFpbCA9IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiB0aHVtYm5haWxVUkwhKQogICAgICAgICAgICBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuRGlzcGxheShuYW1lOiBuYW1lISwgZGVzY3JpcHRpb246IGRlc2MhLCB0aHVtYm5haWw6IHRodW1ibmFpbCkKICAgICAgICAgICAgb3duZWQuc2V0RGlzcGxheShkaXNwbGF5KQogICAgICAgIH0KCiAgICAgICAgLy8gR2V0IENhcGFiaWxpdHlGYWN0b3J5ICYgQ2FwYWJpbGl0eUZpbHRlciBDYXBhYmlsaXRpZXMKICAgICAgICBsZXQgZmFjdG9yeSA9IGdldEFjY291bnQoZmFjdG9yeUFkZHJlc3MpLmNhcGFiaWxpdGllcy5nZXQ8JkNhcGFiaWxpdHlGYWN0b3J5Lk1hbmFnZXI+KENhcGFiaWxpdHlGYWN0b3J5LlB1YmxpY1BhdGgpCiAgICAgICAgYXNzZXJ0KGZhY3RvcnkuY2hlY2soKSwgbWVzc2FnZTogImZhY3RvcnkgYWRkcmVzcyBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSIpCgogICAgICAgIGxldCBmaWx0ZXIgPSBnZXRBY2NvdW50KGZpbHRlckFkZHJlc3MpLmNhcGFiaWxpdGllcy5nZXQ8JntDYXBhYmlsaXR5RmlsdGVyLkZpbHRlcn0+KENhcGFiaWxpdHlGaWx0ZXIuUHVibGljUGF0aCkKICAgICAgICBhc3NlcnQoZmlsdGVyLmNoZWNrKCksIG1lc3NhZ2U6ICJjYXBhYmlsaXR5IGZpbHRlciBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSIpCgogICAgICAgIC8vIEZpbmFsbHkgcHVibGlzaCBhIENoaWxkQWNjb3VudCBjYXBhYmlsaXR5IG9uIHRoZSBzaWduaW5nIGFjY291bnQgdG8gdGhlIHNwZWNpZmllZCBwYXJlbnQKICAgICAgICBvd25lZC5wdWJsaXNoVG9QYXJlbnQocGFyZW50QWRkcmVzczogcGFyZW50LCBmYWN0b3J5OiBmYWN0b3J5LCBmaWx0ZXI6IGZpbHRlcikKICAgIH0KfQ==", - "transferChildFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2ZlckNoaWxkRlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCi8vIEhDLW93bmVkIGltcG9ydHMKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgoKCnRyYW5zYWN0aW9uKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGg6IFN0cmluZywgYW1vdW50OiBVRml4NjQgKSB7CgogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IHZhdWx0RGF0YSA9IDxUb2tlbj4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8VG9rZW4+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgcGF5bWVudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgbGV0IHJlY2VpdmVyUmVmID0gIHNpZ25lci5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCiAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtcGF5bWVudFZhdWx0KQogIH0KfQ==", - "transferChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2ZlckNoaWxkTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKCnRyYW5zYWN0aW9uKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGg6IFN0cmluZywgIGlkOiBVSW50NjQgKSB7CgogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgc2lnbmVyLmNhcGFiaWxpdGllcy5nZXQ8JntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", - "transferNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0cmFuc2Zlck5GVFRvQ2hpbGQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Cgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIGlkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCkgewogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGRBZGRyKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPiAucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IGNoaWxkQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGFzc2VydChjaGlsZENhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgbGV0IHBhcmVudFJlZiA9ICBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pihmcm9tIDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpIQogICAgbGV0IGNoaWxkUmVmID0gY2hpbGRDYXAuYm9ycm93KCkhCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgbmZ0IDwtIHBhcmVudFJlZiEud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpIQogICAgCiAgICBjaGlsZFJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgfQp9", - "unlinkChildAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB1bmxpbmtDaGlsZEFjY291bnQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCnRyYW5zYWN0aW9uKGNoaWxkOiBBZGRyZXNzKSB7CiAgICBwcmVwYXJlIChhY2N0OiBBdXRoQWNjb3VudCkgewogICAgICAgIGxldCBtYW5hZ2VyID0gYWNjdC5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vdCBmb3VuZCIpCiAgICAgICAgbWFuYWdlci5yZW1vdmVDaGlsZChhZGRyOiBjaGlsZCkKICAgIH0KfQ==" + "addNFTCollectionToDelegator": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYWRkTkZUQ29sbGVjdGlvblRvRGVsZWdhdG9yIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24ocGFyZW50OiBBZGRyZXNzLCBpc1B1YmxpYzogQm9vbCkgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgbyA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk93bmVyKSAmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJvd25lZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgbGV0IGNoaWxkOiAmSHlicmlkQ3VzdG9keS5DaGlsZEFjY291bnQgPSBvLmJvcnJvd0NoaWxkQWNjb3VudChwYXJlbnQ6IHBhcmVudCkKICAgICAgICAgICAgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkV4YW1wbGVORlQuQ29sbGVjdGlvbj4oRXhhbXBsZU5GVC5Db2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgby5hZGRDYXBhYmlsaXR5VG9EZWxlZ2F0b3IocGFyZW50OiBwYXJlbnQsIGNhcDogY2FwLCBpc1B1YmxpYzogaXNQdWJsaWMpCiAgICB9Cn0=", + "batchBridgeChildNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VDaGlsZE5GVEZyb21Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkczogW1VJbnQyNTZdKSB7CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgICAvLyBsZXQgcmVjZWl2ZXIgPSBnZXRBY2NvdW50KGNoaWxkKS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFJlY2VpdmVyIGZyb20gcmVjaXBpZW50J3MgcHVibGljIGNhcGFiaWxpdHkgcGF0aCIpCgoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHB1YmxpY0NhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CiAgICAgICAgYXNzZXJ0KHB1YmxpY0NhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwdWJsaWMgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHVibGljQ2FwLmJvcnJvdygpIQoKICAgICAgCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSArIChGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUgKiBVRml4NjQoaWRzLmxlbmd0aCkpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgbGV0IHNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKCiAgICAgICAgZm9yIGlkIGluIGlkcyB7CiAgICAgICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIGNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgICAgIHR5cGU6IG5mdFR5cGUsCiAgICAgICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCgogICAgICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IG5mdFR5cGUsCiAgICAgICAgICAgICAgICBtZXNzYWdlOiAiQnJpZGdlZCBuZnQgdHlwZSBtaXNtYXRjaCAtIHJlcXVlc3d0ZWQ6ICIuY29uY2F0KG5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgICApCgogICAgICAgICAgICBjb2xsZWN0aW9uUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgICAgICB9CiAgICAgIAoKICAgICAgICAKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "batchBridgeChildNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VDaGlsZE5GVFRvRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkczogW1VJbnQ2NF0pIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgbGV0IGlkID0gaWRzWzBdCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICAgICAgbGV0IGNoaWxkTmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LWNoaWxkTmZ0KQogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiA0MDBfMDAwCiAgICAgICAgICAgICkgKyAoRmxvd0VWTUJyaWRnZUNvbmZpZy5iYXNlRmVlICogVUZpeDY0KGlkcy5sZW5ndGgpKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBjb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LSBuZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgZm9yIG5mdElkIGluIGlkcyB7CiAgICAgICAgICAgIGlmIGlkeCA9PSAwIHsKICAgICAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBuZnRJZCkKICAgICAgICAgICAgY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQoKfQo=", + "batchBridgeChildNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VDaGlsZE5GVFRvRXZtQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkczogW1VJbnQ2NF0sIHJlY2lwaWVudDpTdHJpbmcpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIC8vIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAvLyAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgbGV0IGlkID0gaWRzWzBdCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICAgICAgbGV0IGNoaWxkTmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LWNoaWxkTmZ0KQogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID1GbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IDQwMF8wMDAKICAgICAgICAgICAgKSArIChGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUgKiBVRml4NjQoaWRzLmxlbmd0aCkpCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgICAgICAgICAKICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCgogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LSBuZnQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIGZvciBuZnRJZCBpbiBpZHMgewogICAgICAgICAgICBpZiBpZHggPT0gMCB7CiAgICAgICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICAgICAgdG9rZW46IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogbmZ0SWQpLAogICAgICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICB9CiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2NvcGVkUHJvdmlkZXIKICAgIH0KCn0K", + "batchSendChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hTZW5kQ2hpbGRORlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgIAogICAgbGV0IHJlY2VpdmVyQWNjID0gZ2V0QWNjb3VudChyZWNlaXZlcikKICAgIGxldCByZWNlaXZlclJlZiA9ICByZWNlaXZlckFjYy5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCiAgICAKICAgIGZvciBpZCBpbiBpZHMgewogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", + "batchSendChildNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hTZW5kQ2hpbGRORlRUb0NoaWxkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgoKICAgIGxldCByZWNlaXZlckNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiByZWNlaXZlcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIGxldCByZWNlaXZlckNvbnRyb2xsZXJJZCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgbGV0IHJlY2VpdmVyQ2FwID0gcmVjZWl2ZXJDaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IHJlY2VpdmVyQ29udHJvbGxlcklkLCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikgCiAgICBsZXQgcHVibGljQ2FwID0gcmVjZWl2ZXJDYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgbGV0IHJlY2VpdmVyUmVmID0gIHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICByZWNlaXZlclJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgICB9CiAgfQp9", + "batchTransferChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hUcmFuc2ZlckNoaWxkTkZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsICBpZHM6IFtVSW50NjRdICkgewoKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgc2lnbmVyLmNhcGFiaWxpdGllcy5nZXQ8JntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKCiAgICBmb3IgaWQgaW4gaWRzIHsgICAgIAogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", + "batchTransferNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYmF0Y2hUcmFuc2Zlck5GVFRvQ2hpbGQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IGNoaWxkQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGFzc2VydChjaGlsZENhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgbGV0IHBhcmVudFJlZiA9ICBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pihmcm9tIDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpIQogICAgbGV0IGNoaWxkUmVmID0gY2hpbGRDYXAuYm9ycm93KCkhCgogICAgZm9yIGlkIGluIGlkcyB7ICAgICAKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IG5mdCA8LSBwYXJlbnRSZWYhLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKSEKICAgICAgICBjaGlsZFJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgICB9CiAgfQp9", + "bridgeChildFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRGVEZyb21Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBjaGlsZDogQWRkcmVzcywgYW1vdW50OiBVSW50MjU2KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgIAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgbGV0IHNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQoKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gY29hLndpdGhkcmF3VG9rZW5zKAogICAgICAgICAgICB0eXBlOiB2YXVsdFR5cGUsCiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKCiAgICAgICAgdmF1bHRSZWYuZGVwb3NpdChmcm9tOiA8LSB2YXVsdCkKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cgp9CiA=", + "bridgeChildFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRGVFRvRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCgp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGFtb3VudDogVUZpeDY0KSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogICAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQoKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAKICAgICAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAoKICAgICAgICB2YXVsdC5kZXBvc2l0KGZyb206IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KSkKICAgICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYucGF5bWVudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogNDAwXzAwMAogICAgICAgICAgICApCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICkKCiAgICB9CgogICAgZXhlY3V0ZSB7CgogICAgICAgICBzZWxmLmNvYS5kZXBvc2l0VG9rZW5zKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnBheW1lbnRWYXVsdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0KIA==", + "bridgeChildFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRGVFRvRXZtQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBhbW91bnQ6IFVGaXg2NCwgcmVjaXBpZW50OlN0cmluZykgewogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogICAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgLy8gbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgLy8gc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAvLyAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKCiAgICAgICAgdmF1bHQuZGVwb3NpdChmcm9tOiA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IDQwMF8wMDAKICAgICAgICAgICAgKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCgogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCkKICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZVRva2Vuc1RvRVZNKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnBheW1lbnRWYXVsdCwKICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9CiA=", + "bridgeChildNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRORlRGcm9tRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkOiBVSW50MjU2KSB7CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgICAvLyBsZXQgcmVjZWl2ZXIgPSBnZXRBY2NvdW50KGNoaWxkKS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFJlY2VpdmVyIGZyb20gcmVjaXBpZW50J3MgcHVibGljIGNhcGFiaWxpdHkgcGF0aCIpCgoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHB1YmxpY0NhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CiAgICAgICAgYXNzZXJ0KHB1YmxpY0NhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwdWJsaWMgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHVibGljQ2FwLmJvcnJvdygpIQoKICAgICAgCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIGxldCBzY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCgogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIGNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogbmZ0VHlwZSwKICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IG5mdFR5cGUsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQobmZ0VHlwZS5pZGVudGlmaWVyKQogICAgICAgICAgICAgICAgLmNvbmNhdCgiLCByZWNlaXZlZDogIikuY29uY2F0KG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICApCgogICAgICAgIGNvbGxlY3Rpb25SZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeChildNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRORlRUb0V2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCwgY2hpbGQ6IEFkZHJlc3MpIHsKICAgIAogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgICAgIGxldCBjaGlsZE5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1jaGlsZE5mdCkKICAgICAgICAvLyAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IDQwMF8wMDAKICAgICAgICAgICAgKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "bridgeChildNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRORlRUb0V2bUFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZDogVUludDY0LCByZWNpcGllbnQ6U3RyaW5nKSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICAvLyBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICAvLyBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgIC8vICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgoKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKICAgICAgICBsZXQgY2hpbGROZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBjb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtY2hpbGROZnQpCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiA0MDBfMDAwCiAgICAgICAgICAgICkKICAgICAgIAogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgLy8gc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAvLyAgICAgbmZ0OiA8LXNlbGYubmZ0LAogICAgICAgIC8vICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgLy8gKQogICAgICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCkKICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICB0b2tlbjogPC1zZWxmLm5mdCwKICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "checkChildLinkedCollections": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2hlY2tDaGlsZExpbmtlZENvbGxlY3Rpb25zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nKTogQm9vbCB7CiAgICBsZXQgbWdyID0gZ2V0QXV0aEFjY291bnQocGFyZW50KS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgbWFuYWdlciBmcm9tIHBhcmVudCIpCiAgICBsZXQgY2hpbGQgPSBtZ3IuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoIkNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKCiAgICBsZXQgY2FwID0gY2hpbGQuZ2V0Q2FwYWJpbGl0eSgKICAgICAgICAgICAgcGF0aDogUHJpdmF0ZVBhdGgoaWRlbnRpZmllcjogaWRlbnRpZmllcikhIGFzIENhcGFiaWxpdHlQYXRoLAogICAgICAgICAgICB0eXBlOiBUeXBlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlciwgTm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQogICAgICAgICkgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pj8KCiAgICAKICAgIHJldHVybiBjYXAgIT0gbmlsCn0gICAKICAgIA==", + "checkChildLinkedVaults": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2hlY2tDaGlsZExpbmtlZFZhdWx0cyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MsIHBhdGg6IFN0cmluZyk6IEJvb2wgewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KQogIGxldCBtYW5hZ2VyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAKICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKCiAgbGV0IGFkZHIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkKQogIAogIGxldCBjaGlsZEFjY3QgPSBtYW5hZ2VyLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogIGxldCBjb250cm9sbGVycyA9IGFkZHIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aCkhKQogIHZhciBmbGFnID0gZmFsc2UKCiAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICBjb250aW51ZQogICAgfQoKICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgZmxhZyA9IHRydWUKICAgICAgYnJlYWsKICAgIH0KICB9CgogIHJldHVybiBmbGFnCn0gCiAgICA=", + "checkChildRecieveVaults": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2hlY2tDaGlsZFJlY2lldmVWYXVsdHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MsIGNoaWxkOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcpOiBCb29sIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkKICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgCiAgbGV0IHJlY2VpdmVyVHlwZSA9IFR5cGU8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oKQoKICBsZXQgYWRkciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oY2hpbGQpCiAgCiAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKCiAgbGV0IGNvbnRyb2xsZXJzID0gYWRkci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoKSEpCiAgdmFyIGZsYWcgPSBmYWxzZQoKICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICBpZiAhYy5ib3Jyb3dUeXBlLmlzU3VidHlwZShvZjogcmVjZWl2ZXJUeXBlKSB7CiAgICAgIGNvbnRpbnVlCiAgICB9CgogICAgaWYgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogYy5jYXBhYmlsaXR5SUQsIHR5cGU6IHJlY2VpdmVyVHlwZSkgewogICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4gCgogICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICBjb250aW51ZQogICAgICB9CgogICAgICBmbGFnID0gdHJ1ZQogICAgICBicmVhawogICAgfQogIH0KCiAgcmV0dXJuIGZsYWcKfSAKICAgIA==", + "editChildAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZWRpdENoaWxkQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCnRyYW5zYWN0aW9uKGNoaWxkQWRkcmVzczogQWRkcmVzcywgbmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nLCB0aHVtYm5haWw6IFN0cmluZykgewogICAgcHJlcGFyZShhY2N0OiBBdXRoQWNjb3VudCkgewogICAgICAgIGxldCBtID0gYWNjdC5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgbGV0IGQgPSBNZXRhZGF0YVZpZXdzLkRpc3BsYXkoCiAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgdGh1bWJuYWlsOiBNZXRhZGF0YVZpZXdzLkhUVFBGaWxlKHVybDogdGh1bWJuYWlsKQogICAgICAgICkKCiAgICAgICAgbS5zZXRDaGlsZEFjY291bnREaXNwbGF5KGFkZHJlc3M6IGNoaWxkQWRkcmVzcywgZCkKICAgIH0KfQ==", + "getAccessibleChildAccountNFTs": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjZXNzaWJsZUNoaWxkQWNjb3VudE5GVHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IEFueVN0cnVjdCB7CiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKCiAgdmFyIHR5cGVJZHNXaXRoUHJvdmlkZXIgPSB7fSBhcyB7QWRkcmVzczogW1N0cmluZ119CgogIC8vIEFkZHJlc3MgLT4gbmZ0IFVVSUQgLT4gRGlzcGxheQogIHZhciBuZnRWaWV3cyA9IHt9IGFzIHtBZGRyZXNzOiB7U3RyaW5nOiBbVUludDY0XX19IAoKICAKICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICBsZXQgY29sbGVjdGlvblR5cGU6IFR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQoKICAvLyBJdGVyYXRlIHRocm91Z2ggY2hpbGQgYWNjb3VudHMKICBmb3IgYWRkcmVzcyBpbiBtYW5hZ2VyLmdldENoaWxkQWRkcmVzc2VzKCkgewogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGFkZHJlc3MpCiAgICBsZXQgZm91bmRUeXBlczogW1N0cmluZ10gPSBbXQogICAgbGV0IHZpZXdzOiB7U3RyaW5nOiBbVUludDY0XX0gPSB7fQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgIAogICAgLy8gdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CgogICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGghKQogICAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKICAgIAoKICAgIC8vIGl0ZXJhdGUgc3RvcmFnZSwgY2hlY2sgaWYgdHlwZUlkc1dpdGhQcm92aWRlciBjb250YWlucyB0aGUgdHlwZUlkLCBpZiBzbywgYWRkIHRvIHZpZXdzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICAgIAogICAgICBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyW2FkZHJlc3NdID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHRydWUKICAgICAgfQoKICAgICAgZm9yIGtleSBpbiB0eXBlSWRzV2l0aFByb3ZpZGVyLmtleXMgewogICAgICAgIGZvciBpZHgsIHZhbHVlIGluIHR5cGVJZHNXaXRoUHJvdmlkZXJba2V5XSEgewogICAgICAgICAgbGV0IHZhbHVlID0gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldIQoKICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZS5pZGVudGlmaWVyIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIHR5cGUuaXNJbnN0YW5jZShjb2xsZWN0aW9uVHlwZSkgewogICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgSURzICYgcmVzb2x2ZSB0aGUgdmlldwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgZm9yIGlkIGluIGNvbGxlY3Rpb24uZ2V0SURzKCkgewogICAgICAgICAgICAgICAgbGV0IG5mdCA9IGNvbGxlY3Rpb24uYm9ycm93TkZUKGlkKSEKCiAgICAgICAgICAgICAgICB2aWV3c1tuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXJdID0gY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB0cnVlCiAgICB9KQogICAgbmZ0Vmlld3NbYWRkcmVzc10gPSB2aWV3cwogIH0KICByZXR1cm4gbmZ0Vmlld3MKfQ==", + "getAccessibleCoinInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjZXNzaWJsZUNvaW5JbmZvIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgogaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIHN0cnVjdCBUb2tlbkluZm8gewphY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwphY2Nlc3MoYWxsKSBsZXQgYmFsYW5jZTogVUZpeDY0Cgppbml0KGlkOiBTdHJpbmcsIGJhbGFuY2U6IFVGaXg2NCkgewogICAgc2VsZi5pZCA9IGlkCiAgICBzZWxmLmJhbGFuY2UgPSBiYWxhbmNlCn0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZEFkZHJlc3M6IEFkZHJlc3MpOiBbVG9rZW5JbmZvXSB7CiAgICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCgogICAgdmFyIHR5cGVJZHNXaXRoUHJvdmlkZXI6IHtBZGRyZXNzOiBbU3RyaW5nXX0gPSB7fQoKICAgIHZhciBjb2luSW5mb0xpc3Q6IFtUb2tlbkluZm9dID0gW10KICAgIGxldCBwcm92aWRlclR5cGUgPSBUeXBlPENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KCkKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUgPSBUeXBlPEB7RnVuZ2libGVUb2tlbi5WYXVsdH0+KCkKCiAgICAvLyBJdGVyYXRlIHRocm91Z2ggY2hpbGQgYWNjb3VudHMKCiAgICBsZXQgYWNjdCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4gKGNoaWxkQWRkcmVzcykKICAgIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgICBsZXQgdmF1bHRCYWxhbmNlczoge1N0cmluZzogVUZpeDY0fSA9IHt9CiAgICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgICAgIC8vIENoZWNrIHdoaWNoIHByaXZhdGUgcGF0aHMgaGF2ZSBORlQgUHJvdmlkZXIgQU5EIGNhbiBiZSBib3Jyb3dlZAogICAgICAgIGlmICF0eXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKXsKICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9CgogICAgICAgIGxldCBjb250cm9sbGVycyA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogcGF0aCkKCiAgICAgICAgLy8gbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgICAgICAgIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICAgICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlCiAgICB9KQogICAgdHlwZUlkc1dpdGhQcm92aWRlcltjaGlsZEFkZHJlc3NdID0gZm91bmRUeXBlcwoKICAgIAogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgCiAgICBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyW2NoaWxkQWRkcmVzc10gPT0gbmlsIHsKICAgICAgICByZXR1cm4gdHJ1ZQogICAgfQoKICAgIGZvciBrZXkgaW4gdHlwZUlkc1dpdGhQcm92aWRlci5rZXlzIHsKICAgICAgICBmb3IgaWR4LCB2YWx1ZSBpbiB0eXBlSWRzV2l0aFByb3ZpZGVyW2tleV0hIHsKICAgICAgICAgICAgbGV0IHZhbHVlID0gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldIQoKICAgICAgICAgICAgaWYgdmFsdWVbaWR4XSAhPSB0eXBlLmlkZW50aWZpZXIgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIHR5cGUuaXNJbnN0YW5jZSh2YXVsdFR5cGUpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiBsZXQgdmF1bHQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBJRHMgJiByZXNvbHZlIHRoZSB2aWV3CiAgICAgICAgICAgICAgICAgICAgY29pbkluZm9MaXN0LmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICBUb2tlbkluZm8oaWQ6IHR5cGUuaWRlbnRpZmllciwgYmFsYW5jZTogdmF1bHQuYmFsYW5jZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgCiAgICByZXR1cm4gY29pbkluZm9MaXN0Cn0=", + "getAccessibleCollectionAndIdsDisplay": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QWNjZXNzaWJsZUNvbGxlY3Rpb25BbmRJZHNEaXNwbGF5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgoKYWNjZXNzKGFsbCkgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICBhY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHNxdWFyZUltYWdlOiBNZXRhZGF0YVZpZXdzLk1lZGlhCgogIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogTWV0YWRhdGFWaWV3cy5NZWRpYSkgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgfQp9CgphY2Nlc3MoYWxsKSBzdHJ1Y3QgTkZUQ29sbGVjdGlvbiB7CiAgYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KCiAgaW5pdChpZDpTdHJpbmcsIGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PywgaWRMaXN0OiBbVUludDY0XSkgewogICAgc2VsZi5pZCA9IGlkCiAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICBzZWxmLmlkTGlzdCA9IGlkTGlzdAogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIGdldERpc3BsYXkoYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RvcmFnZVBhdGgpOiBDb2xsZWN0aW9uRGlzcGxheT8gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihhZGRyZXNzKQoKICBsZXQgcmVzb3VyY2VUeXBlID0gVHlwZTxAQW55UmVzb3VyY2U+KCkKICAvLyBsZXQgdmF1bHRUeXBlID0gVHlwZTxAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIHZhciBpdGVtOiBDb2xsZWN0aW9uRGlzcGxheT8gPSAgbmlsCgogICAgaWYgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogcGF0aCkgewogICAgICBsZXQgaXNSZXNvdXJjZSA9IHR5cGUuaXNTdWJ0eXBlKG9mOiByZXNvdXJjZVR5cGUpCiAgICAgIGxldCBpc05GVENvbGxlY3Rpb24gPSB0eXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpCiAgICAgIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCgogICAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgICAgaWYgaXNORlRDb2xsZWN0aW9uICYmIGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgICAgIGlmIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGZyb206IHBhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQoKICAgICAgICAgIC8vIFRPRE86IG1vdmUgdG8gYSBsaXN0CiAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIAogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FybGVlU2NlbmUgewogICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pIQogICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIpIHsKICAgICAgICAgICAgICBpdGVtID0gQ29sbGVjdGlvbkRpc3BsYXkoCiAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICBzcXVhcmVJbWFnZTogZGlzcGxheS5zcXVhcmVJbWFnZQogICAgICAgICAgICAgICkKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICByZXR1cm4gaXRlbQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MsIGNoaWxkQWNjb3VudDogQWRkcmVzcyk6IFtORlRDb2xsZWN0aW9uXSB7CiAgICBsZXQgbWFuYWdlciA9ICBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKICAgIC8vIEFkZHJlc3MgLT4gQ29sbGVjdGlvbiBUeXBlIC0+IG93bmVkTkZUcwoKICAgIGxldCBwcm92aWRlclR5cGUgPSBUeXBlPENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KCkKICAgIGxldCBjb2xsZWN0aW9uVHlwZTogVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigpCgogICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCgogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkQWNjb3VudCkKICAgIGxldCBmb3VuZFR5cGVzOiBbVHlwZV0gPSBbXQogICAgbGV0IG5mdHM6IHtTdHJpbmc6IFtVSW50NjRdfSA9IHt9CiAgICBsZXQgY29sbGVjdGlvbkxpc3Q6IFtORlRDb2xsZWN0aW9uXSA9IFtdCiAgICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWNjb3VudCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgLy8gZ2V0IGFsbCBwcml2YXRlIHBhdGhzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICAgICAgLy8gQ2hlY2sgd2hpY2ggcHJpdmF0ZSBwYXRocyBoYXZlIE5GVCBQcm92aWRlciBBTkQgY2FuIGJlIGJvcnJvd2VkCiAgICAgICAgLy8gaWYgIXR5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpewogICAgICAgIC8vICAgICByZXR1cm4gdHJ1ZQogICAgICAgIC8vIH0KICAgICAgICAvLyBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkocGF0aDogcGF0aCwgdHlwZTogVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpKSB7CiAgICAgICAgLy8gICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgLy8gICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgIC8vICAgICAgICAgLy8gaWYgdGhpcyBpc24ndCBhIHByb3ZpZGVyIGNhcGFiaWxpdHksIGV4aXQgdGhlIGFjY291bnQgaXRlcmF0aW9uIGZ1bmN0aW9uIGZvciB0aGlzIHBhdGgKICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnVlCiAgICAgICAgLy8gICAgIH0KICAgICAgICAvLyAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKSkKICAgICAgICAvLyB9CgogICAgICAgIGxldCBjb250cm9sbGVycyA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogcGF0aCEpCiAgICAgICAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgfQoKICAgICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3VuZFR5cGVzLmFwcGVuZChjYXAuYm9ycm93PCZBbnlSZXNvdXJjZT4oKSEuZ2V0VHlwZSgpKQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZQogICAgfSkKCiAgICAvLyBpdGVyYXRlIHN0b3JhZ2UsIGNoZWNrIGlmIHR5cGVJZHNXaXRoUHJvdmlkZXIgY29udGFpbnMgdGhlIHR5cGVJZCwgaWYgc28sIGFkZCB0byBuZnRzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CgogICAgICAgIGlmIGZvdW5kVHlwZXMgPT0gbmlsIHsKICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9CgogICAgICAgIGZvciBpZHgsIHZhbHVlIGluIGZvdW5kVHlwZXMgewogICAgICAgICAgICBsZXQgdmFsdWUgPSBmb3VuZFR5cGVzIQoKICAgICAgICAgICAgaWYgdmFsdWVbaWR4XSAhPSB0eXBlIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiB0eXBlLmlzSW5zdGFuY2UoY29sbGVjdGlvblR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAgICAgICBuZnRzLmluc2VydChrZXk6IHR5cGUuaWRlbnRpZmllciwgY29sbGVjdGlvbi5nZXRJRHMoKSkKICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uTGlzdC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICBORlRDb2xsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBpZDogdHlwZS5pZGVudGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGNoaWxkQWNjb3VudCwgcGF0aDogcGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgIGlkTGlzdDogY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgcmV0dXJuIGNvbGxlY3Rpb25MaXN0Cn0=", + "getChildAccountAllowTypes": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q2hpbGRBY2NvdW50QWxsb3dUeXBlcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCi8vIFRoaXMgc2NyaXB0IGl0ZXJhdGVzIHRocm91Z2ggYSBwYXJlbnQncyBjaGlsZCBhY2NvdW50cywgCi8vIGlkZW50aWZpZXMgcHJpdmF0ZSBwYXRocyB3aXRoIGFuIGFjY2Vzc2libGUgTm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlciwgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZUlkcwphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcyk6IFtTdHJpbmddPyB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKQogIGxldCBtYW5hZ2VyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcikuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCgoKICAKICBsZXQgbmZ0UHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICBsZXQgZnRQcm92aWRlclR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQoKICAvLyBJdGVyYXRlIHRocm91Z2ggY2hpbGQgYWNjb3VudHMKICBsZXQgYWRkciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oY2hpbGQpCiAgbGV0IGZvdW5kVHlwZXM6IFtTdHJpbmddID0gW10KICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwoKICBmb3IgcyBpbiBhZGRyLnN0b3JhZ2Uuc3RvcmFnZVBhdGhzIHsKICAgIGxldCBjb250cm9sbGVycyA9IGFkZHIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogcykKICAgIGZvciBjIGluIGNvbnRyb2xsZXJzIHsKICAgICAgLy8gaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAvLyAgIGNvbnRpbnVlCiAgICAgIC8vIH0KCiAgICAgIGlmIGxldCBuZnRDYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBuZnRQcm92aWRlclR5cGUpIHsKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBuZnRDYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQobmZ0Q2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgICAgaWYgbGV0IGZ0Q2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogZnRQcm92aWRlclR5cGUpIHsKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBmdENhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoZnRDYXAuYm9ycm93PCZBbnlSZXNvdXJjZT4oKSEuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgYnJlYWsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIGZvdW5kVHlwZXMKfQ==", + "getChildAccountFTCapabilities": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q2hpbGRBY2NvdW50RlRDYXBhYmlsaXRpZXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIEZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6QW55U3RydWN0IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHIpCiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCgogIHZhciB0eXBlSWRzV2l0aFByb3ZpZGVyOiB7QWRkcmVzczogW1N0cmluZ119ID0ge30KICAKICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKCiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCiAgZm9yIGFkZHJlc3MgaW4gbWFuYWdlci5nZXRDaGlsZEFkZHJlc3NlcygpIHsKICAgIGxldCBhZGRyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihhZGRyZXNzKQogICAgbGV0IGZvdW5kVHlwZXM6IFtTdHJpbmddID0gW10KICAgIGxldCBjaGlsZEFjY3QgPSBtYW5hZ2VyLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwoKICAgIGZvciBzIGluIGFkZHIuc3RvcmFnZS5zdG9yYWdlUGF0aHMgewogICAgICBmb3IgYyBpbiBhZGRyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHMpIHsKICAgICAgICBpZiAhYy5ib3Jyb3dUeXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKXsKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICB9CgogICAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKICAgICAgICAgIGJyZWFrCiAgICAgICAgfQogICAgICB9CiAgICB9ICAgICAgCiAgfQoKICByZXR1cm4gdHlwZUlkc1dpdGhQcm92aWRlcgp9CiA=", + "getChildAccountMeta": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q2hpbGRBY2NvdW50TWV0YSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcyk6IHtBZGRyZXNzOiBBbnlTdHJ1Y3R9IHsKICAgIGxldCBhY2N0ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KQogICAgbGV0IG0gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQoKICAgIGlmIG0gPT0gbmlsIHsKICAgICAgICByZXR1cm4ge30KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGRhdGE6IHtBZGRyZXNzOiBBbnlTdHJ1Y3R9ID0ge30KICAgICAgICBmb3IgYWRkcmVzcyBpbiBtPy5nZXRDaGlsZEFkZHJlc3NlcygpISB7CiAgICAgICAgICAgIGxldCBjID0gbT8uZ2V0Q2hpbGRBY2NvdW50RGlzcGxheShhZGRyZXNzOiBhZGRyZXNzKSAKICAgICAgICAgICAgZGF0YS5pbnNlcnQoa2V5OiBhZGRyZXNzLCBjKQogICAgICAgIH0KICAgICAgICByZXR1cm4gZGF0YQogICAgfQp9", + "getChildAddresses": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Q2hpbGRBZGRyZXNzZXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MpOiBbQWRkcmVzc10gewogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpCiAgICBsZXQgbWFuYWdlciA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm90IGZvdW5kIikKICAgIHJldHVybiAgbWFuYWdlci5nZXRDaGlsZEFkZHJlc3NlcygpCn0=", + "getExamplenftCollectionFromDelegator": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RXhhbXBsZW5mdENvbGxlY3Rpb25Gcm9tRGVsZWdhdG9yIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4MjhiODFmNTg4MGQ1NTU0ZQoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcywgaXNQdWJsaWM6IEJvb2wpIHsKICAgIGxldCBtID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBub3QgZm91bmQiKQogICAgbGV0IGFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpCiAgICAgICAgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIGluIG1hbmFnZXIiKQoKICAgIGxldCB0ID0gVHlwZTxDYXBhYmlsaXR5PCZFeGFtcGxlTkZULkNvbGxlY3Rpb24+PigpCgogICAgbGV0IGNhcCA9IChpc1B1YmxpYyA/IGFjY3QuZ2V0UHVibGljQ2FwRnJvbURlbGVnYXRvcih0eXBlOiB0KSA6IGFjY3QuZ2V0UHJpdmF0ZUNhcEZyb21EZWxlZ2F0b3IodHlwZTogdCkpCiAgICAgICAgPz8gcGFuaWMoImNhcGFiaWxpdHkgbm90IGZvdW5kIikKICAgIAogICAgYXNzZXJ0KGNhcC5nZXRUeXBlKCkgPT0gdCwgbWVzc2FnZTogIm1pc21hdGNoZWQgY2FwYWJpbGl0eSB0eXBlcyIpCn0=", + "publishToParent": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcHVibGlzaFRvUGFyZW50IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgojYWxsb3dBY2NvdW50TGlua2luZwoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhDYXBhYmlsaXR5RmFjdG9yeQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgppbXBvcnQgQ2FwYWJpbGl0eURlbGVnYXRvciBmcm9tIDB4Q2FwYWJpbGl0eURlbGVnYXRvcgoKdHJhbnNhY3Rpb24ocGFyZW50OiBBZGRyZXNzLCBmYWN0b3J5QWRkcmVzczogQWRkcmVzcywgZmlsdGVyQWRkcmVzczogQWRkcmVzcykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IG93bmVkID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuT3duZXIpICZIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudD4oZnJvbTogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm93bmVkIGFjY291bnQgbm90IGZvdW5kIikKCiAgICAgICAgbGV0IGZhY3RvcnkgPSBnZXRBY2NvdW50KGZhY3RvcnlBZGRyZXNzKS5jYXBhYmlsaXRpZXMuZ2V0PCZDYXBhYmlsaXR5RmFjdG9yeS5NYW5hZ2VyPihDYXBhYmlsaXR5RmFjdG9yeS5QdWJsaWNQYXRoKQogICAgICAgIGFzc2VydChmYWN0b3J5LmNoZWNrKCksIG1lc3NhZ2U6ICJmYWN0b3J5IGFkZHJlc3MgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkiKQoKICAgICAgICBsZXQgZmlsdGVyID0gZ2V0QWNjb3VudChmaWx0ZXJBZGRyZXNzKS5jYXBhYmlsaXRpZXMuZ2V0PCZ7Q2FwYWJpbGl0eUZpbHRlci5GaWx0ZXJ9PihDYXBhYmlsaXR5RmlsdGVyLlB1YmxpY1BhdGgpCiAgICAgICAgYXNzZXJ0KGZpbHRlci5jaGVjaygpLCBtZXNzYWdlOiAiY2FwYWJpbGl0eSBmaWx0ZXIgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkiKQoKICAgICAgICBvd25lZC5wdWJsaXNoVG9QYXJlbnQocGFyZW50QWRkcmVzczogcGFyZW50LCBmYWN0b3J5OiBmYWN0b3J5LCBmaWx0ZXI6IGZpbHRlcikKICAgIH0KfQ==", + "redeemAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcmVkZWVtQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyZXNzOiBBZGRyZXNzLCBmaWx0ZXJBZGRyZXNzOiBBZGRyZXNzPywgZmlsdGVyUGF0aDogUHVibGljUGF0aD8pIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMsIEluYm94KSAmQWNjb3VudCkgewogICAgICAgIHZhciBmaWx0ZXI6IENhcGFiaWxpdHk8JntDYXBhYmlsaXR5RmlsdGVyLkZpbHRlcn0+PyA9IG5pbAogICAgICAgIGlmIGZpbHRlckFkZHJlc3MgIT0gbmlsICYmIGZpbHRlclBhdGggIT0gbmlsIHsKICAgICAgICAgICAgZmlsdGVyID0gZ2V0QWNjb3VudChmaWx0ZXJBZGRyZXNzISkuY2FwYWJpbGl0aWVzLmdldDwme0NhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyfT4oZmlsdGVyUGF0aCEpCiAgICAgICAgfQoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgbSA8LSBIeWJyaWRDdXN0b2R5LmNyZWF0ZU1hbmFnZXIoZmlsdGVyOiBmaWx0ZXIpCiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKDwtIG0sIHRvOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIGZvciBjIGluIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpIHsKICAgICAgICAgICAgICAgIGMuZGVsZXRlKCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKEh5YnJpZEN1c3RvZHkuTWFuYWdlclB1YmxpY1BhdGgpCgogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0h5YnJpZEN1c3RvZHkuTWFuYWdlclB1YmxpY30+KEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgICAgIGF0OiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWNQYXRoCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJntIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQcml2YXRlLCBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWN9PihIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICB9CgogICAgICAgIGxldCBpbmJveE5hbWUgPSBIeWJyaWRDdXN0b2R5LmdldENoaWxkQWNjb3VudElkZW50aWZpZXIoYWNjdC5hZGRyZXNzKQogICAgICAgIGxldCBjYXAgPSBhY2N0LmluYm94LmNsYWltPGF1dGgoSHlicmlkQ3VzdG9keS5DaGlsZCkgJntIeWJyaWRDdXN0b2R5LkFjY291bnRQcml2YXRlLCBIeWJyaWRDdXN0b2R5LkFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KGluYm94TmFtZSwgcHJvdmlkZXI6IGNoaWxkQWRkcmVzcykKICAgICAgICAgICAgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgY2FwIG5vdCBmb3VuZCIpCgogICAgICAgIGxldCBtYW5hZ2VyID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm8gZm91bmQiKQoKICAgICAgICBtYW5hZ2VyLmFkZEFjY291bnQoY2FwOiBjYXApCiAgICB9Cn0=", + "sendChildFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZENoaWxkRlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CgovLyBIQy1vd25lZCBpbXBvcnRzCmltcG9ydCBDYXBhYmlsaXR5RmFjdG9yeSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKCnRyYW5zYWN0aW9uKGFkZHJlc3M6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0ICkgewoKICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVycmVkCiAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogIGxldCB2YXVsdERhdGE6IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhCgogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgIAogICAgICBzZWxmLnZhdWx0RGF0YSA9IDxUb2tlbj4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxUb2tlbj4gIikKCiAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogc2VsZi52YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgIAogICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgIAogICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgIGxldCB2YXVsdFJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICB9CgogIGV4ZWN1dGUgewoKICAgICAgLy8gR2V0IHRoZSByZWNpcGllbnQncyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgbGV0IHJlY2lwaWVudCA9IGdldEFjY291bnQocmVjZWl2ZXIpCgogICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFJlY2VpdmVyCiAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHNlbGYudmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKCiAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLnBheW1lbnRWYXVsdCkKICB9Cn0KIA==", + "sendChildFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZENoaWxkRlRUb0NoaWxkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKLy8gSEMtb3duZWQgaW1wb3J0cwppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihhZGRyZXNzOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgcGF0aDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCApIHsKCiAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICBsZXQgdmF1bHREYXRhOiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YQoKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAKICAgICAgc2VsZi52YXVsdERhdGEgPSA8VG9rZW4+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/CiAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8VG9rZW4+ICIpCgogICAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHNlbGYudmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAKICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgc2VsZi5wYXltZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgfQoKICBleGVjdXRlIHsKCiAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2VpdmVyKQoKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnQuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihzZWxmLnZhdWx0RGF0YS5yZWNlaXZlclBhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5wYXltZW50VmF1bHQpCiAgfQp9CiA=", + "sendChildFTWithParent": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZENoaWxkRlRXaXRoUGFyZW50IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgdG86IEFkZHJlc3MsIGNoaWxkOiBBZGRyZXNzKSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogICAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHZhdWx0RGF0YTogRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGEKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgc2VsZi52YXVsdERhdGEgPSBFeGFtcGxlVG9rZW4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgRXhhbXBsZVRva2VuIikKCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogc2VsZi52YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYucGF5bWVudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewoKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHRvKQoKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFJlY2VpdmVyCiAgICAgICAgbGV0IHJlY2VpdmVyUmVmID0gcmVjaXBpZW50LmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oc2VsZi52YXVsdERhdGEucmVjZWl2ZXJQYXRoKSEuYm9ycm93KCkKCQkJPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYucGF5bWVudFZhdWx0KQogICAgfQp9CiA=", + "sendChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZENoaWxkTkZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgbGV0IHJlY2VpdmVyQWNjID0gZ2V0QWNjb3VudChyZWNlaXZlcikKICAgIGxldCByZWNlaXZlclJlZiA9ICByZWNlaXZlckFjYy5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCiAgICAKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", + "sendChildNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZENoaWxkTkZUVG9DaGlsZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Cgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50NjQpIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgoKICAgIGxldCByZWNlaXZlckNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiByZWNlaXZlcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIGxldCByZWNlaXZlckNvbnRyb2xsZXJJZCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgbGV0IHJlY2VpdmVyQ2FwID0gcmVjZWl2ZXJDaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IHJlY2VpdmVyQ29udHJvbGxlcklkLCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikgCiAgICBsZXQgcHVibGljQ2FwID0gcmVjZWl2ZXJDYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgbGV0IHJlY2VpdmVyUmVmID0gIHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", + "setupOwnedAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2V0dXBPd25lZEFjY291bnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiNhbGxvd0FjY291bnRMaW5raW5nCgppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhWaWV3UmVzb2x2ZXIKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKLy8vIFRoaXMgdHJhbnNhY3Rpb24gY29uZmlndXJlcyBhbiBPd25lZEFjY291bnQgaW4gdGhlIHNpZ25lciBpZiBuZWVkZWQgYW5kIGNvbmZpZ3VyZXMgaXRzIENhcGFiaWxpdGllcyBwZXIKLy8vIEh5YnJpZEN1c3RvZHkncyBpbnRlbmRlZCBkZXNpZ24uIElmIERpc3BsYXkgdmFsdWVzIGFyZSBzcGVjaWZpZWQgKGFzIHJlY29tbWVuZGVkKSwgdGhleSB3aWxsIGJlIHNldCBvbiB0aGUKLy8vIHNpZ25lcidzIE93bmVkQWNjb3VudC4KLy8vCnRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZz8sIGRlc2M6IFN0cmluZz8sIHRodW1ibmFpbFVSTDogU3RyaW5nPykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgYWNjdENhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmFjY291bnQuaXNzdWU8YXV0aChTdG9yYWdlLCBDb250cmFjdHMsIEtleXMsIEluYm94LCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PigpCgogICAgICAgIGlmIGFjY3Quc3RvcmFnZS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgb3duZWRBY2NvdW50IDwtIEh5YnJpZEN1c3RvZHkuY3JlYXRlT3duZWRBY2NvdW50KGFjY3Q6IGFjY3RDYXApCiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKDwtb3duZWRBY2NvdW50LCB0bzogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICB9CgogICAgICAgIGxldCBvd25lZCA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk93bmVyKSAmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJvd25lZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgLy8gU2V0IHRoZSBkaXNwbGF5IG1ldGFkYXRhIGZvciB0aGUgT3duZWRBY2NvdW50CiAgICAgICAgaWYgbmFtZSAhPSBuaWwgJiYgZGVzYyAhPSBuaWwgJiYgdGh1bWJuYWlsVVJMICE9IG5pbCB7CiAgICAgICAgICAgIGxldCB0aHVtYm5haWwgPSBNZXRhZGF0YVZpZXdzLkhUVFBGaWxlKHVybDogdGh1bWJuYWlsVVJMISkKICAgICAgICAgICAgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLkRpc3BsYXkobmFtZTogbmFtZSEsIGRlc2NyaXB0aW9uOiBkZXNjISwgdGh1bWJuYWlsOiB0aHVtYm5haWwpCiAgICAgICAgICAgIG93bmVkLnNldERpc3BsYXkoZGlzcGxheSkKICAgICAgICB9CgogICAgICAgIC8vIGNoZWNrIHRoYXQgcGF0aHMgYXJlIGFsbCBjb25maWd1cmVkIHByb3Blcmx5CiAgICAgICAgZm9yIGMgaW4gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSB7CiAgICAgICAgICAgIGMuZGVsZXRlKCkKICAgICAgICB9CgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntIeWJyaWRDdXN0b2R5LkJvcnJvd2FibGVBY2NvdW50LCBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFB1YmxpYywgVmlld1Jlc29sdmVyLlJlc29sdmVyfT4oSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWNQYXRoCiAgICAgICAgKQogICAgfQp9CiA=", + "setupOwnedAccountAndPublishToParent": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2V0dXBPd25lZEFjY291bnRBbmRQdWJsaXNoVG9QYXJlbnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiNhbGxvd0FjY291bnRMaW5raW5nCgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhWaWV3UmVzb2x2ZXIKCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweENhcGFiaWxpdHlGYWN0b3J5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCmltcG9ydCBDYXBhYmlsaXR5RGVsZWdhdG9yIGZyb20gMHhDYXBhYmlsaXR5RGVsZWdhdG9yCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGNvbmZpZ3VyZXMgYW4gT3duZWRBY2NvdW50IGluIHRoZSBzaWduZXIgaWYgbmVlZGVkLCBhbmQgcHJvY2VlZHMgdG8gY3JlYXRlIGEgQ2hpbGRBY2NvdW50IAovLy8gdXNpbmcgQ2FwYWJpbGl0eUZhY3RvcnkuTWFuYWdlciBhbmQgQ2FwYWJpbGl0eUZpbHRlci5GaWx0ZXIgQ2FwYWJpbGl0aWVzIGZyb20gdGhlIGdpdmVuIGFkZHJlc3Nlcy4gQQovLy8gQ2FwYWJpbGl0eSBvbiB0aGUgQ2hpbGRBY2NvdW50IGlzIHRoZW4gcHVibGlzaGVkIHRvIHRoZSBzcGVjaWZpZWQgcGFyZW50IGFjY291bnQuIAovLy8KdHJhbnNhY3Rpb24oCiAgICBwYXJlbnQ6IEFkZHJlc3MsCiAgICBmYWN0b3J5QWRkcmVzczogQWRkcmVzcywKICAgIGZpbHRlckFkZHJlc3M6IEFkZHJlc3MsCiAgICBuYW1lOiBTdHJpbmcsCiAgICBkZXNjOiBTdHJpbmcsCiAgICB0aHVtYm5haWxVUkw6IFN0cmluZwopIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgLy8gQ29uZmlndXJlIE93bmVkQWNjb3VudCBpZiBpdCBkb2Vzbid0IGV4aXN0CiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHZhciBhY2N0Q2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuYWNjb3VudC5pc3N1ZTxhdXRoKFN0b3JhZ2UsIENvbnRyYWN0cywgS2V5cywgSW5ib3gsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KCkKICAgICAgICAgICAgbGV0IG93bmVkQWNjb3VudCA8LSBIeWJyaWRDdXN0b2R5LmNyZWF0ZU93bmVkQWNjb3VudChhY2N0OiBhY2N0Q2FwKQogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSg8LW93bmVkQWNjb3VudCwgdG86IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgfQoKICAgICAgICBmb3IgYyBpbiBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpIHsKICAgICAgICAgICAgYy5kZWxldGUoKQogICAgICAgIH0KCgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntIeWJyaWRDdXN0b2R5LkJvcnJvd2FibGVBY2NvdW50LCBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFB1YmxpYywgVmlld1Jlc29sdmVyLlJlc29sdmVyfT4oSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWNQYXRoCiAgICAgICAgKQoKICAgICAgICBsZXQgb3duZWQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5Pd25lcikgJkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygib3duZWQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIC8vIFNldCB0aGUgZGlzcGxheSBtZXRhZGF0YSBmb3IgdGhlIE93bmVkQWNjb3VudAogICAgICAgIGlmIG5hbWUgIT0gbmlsICYmIGRlc2MgIT0gbmlsICYmIHRodW1ibmFpbFVSTCAhPSBuaWwgewogICAgICAgICAgICBsZXQgdGh1bWJuYWlsID0gTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6IHRodW1ibmFpbFVSTCEpCiAgICAgICAgICAgIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5EaXNwbGF5KG5hbWU6IG5hbWUhLCBkZXNjcmlwdGlvbjogZGVzYyEsIHRodW1ibmFpbDogdGh1bWJuYWlsKQogICAgICAgICAgICBvd25lZC5zZXREaXNwbGF5KGRpc3BsYXkpCiAgICAgICAgfQoKICAgICAgICAvLyBHZXQgQ2FwYWJpbGl0eUZhY3RvcnkgJiBDYXBhYmlsaXR5RmlsdGVyIENhcGFiaWxpdGllcwogICAgICAgIGxldCBmYWN0b3J5ID0gZ2V0QWNjb3VudChmYWN0b3J5QWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwmQ2FwYWJpbGl0eUZhY3RvcnkuTWFuYWdlcj4oQ2FwYWJpbGl0eUZhY3RvcnkuUHVibGljUGF0aCkKICAgICAgICBhc3NlcnQoZmFjdG9yeS5jaGVjaygpLCBtZXNzYWdlOiAiZmFjdG9yeSBhZGRyZXNzIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgbGV0IGZpbHRlciA9IGdldEFjY291bnQoZmlsdGVyQWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwme0NhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyfT4oQ2FwYWJpbGl0eUZpbHRlci5QdWJsaWNQYXRoKQogICAgICAgIGFzc2VydChmaWx0ZXIuY2hlY2soKSwgbWVzc2FnZTogImNhcGFiaWxpdHkgZmlsdGVyIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgLy8gRmluYWxseSBwdWJsaXNoIGEgQ2hpbGRBY2NvdW50IGNhcGFiaWxpdHkgb24gdGhlIHNpZ25pbmcgYWNjb3VudCB0byB0aGUgc3BlY2lmaWVkIHBhcmVudAogICAgICAgIG93bmVkLnB1Ymxpc2hUb1BhcmVudChwYXJlbnRBZGRyZXNzOiBwYXJlbnQsIGZhY3Rvcnk6IGZhY3RvcnksIGZpbHRlcjogZmlsdGVyKQogICAgfQp9", + "transferChildFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJDaGlsZEZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKLy8gSEMtb3duZWQgaW1wb3J0cwppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCApIHsKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgdmF1bHREYXRhID0gPFRva2VuPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKSkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxUb2tlbj4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCB2YXVsdFJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBwYXltZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgc2lnbmVyLmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1wYXltZW50VmF1bHQpCiAgfQp9", + "transferChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJDaGlsZE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCAgaWQ6IFVJbnQ2NCApIHsKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgIGxldCByZWNlaXZlclJlZiA9ICBzaWduZXIuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQogICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogIH0KfQ==", + "transferNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJORlRUb0NoaWxkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCnRyYW5zYWN0aW9uKGNoaWxkQWRkcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+IC5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgY2hpbGRDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgYXNzZXJ0KGNoaWxkQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICBsZXQgcGFyZW50UmVmID0gIHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KGZyb20gOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkhCiAgICBsZXQgY2hpbGRSZWYgPSBjaGlsZENhcC5ib3Jyb3coKSEKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBuZnQgPC0gcGFyZW50UmVmIS53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkhCiAgICAKICAgIGNoaWxkUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", + "unlinkChildAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdW5saW5rQ2hpbGRBY2NvdW50IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKdHJhbnNhY3Rpb24oY2hpbGQ6IEFkZHJlc3MpIHsKICAgIHByZXBhcmUgKGFjY3Q6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgbGV0IG1hbmFnZXIgPSBhY2N0LmJvcnJvdzwmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm90IGZvdW5kIikKICAgICAgICBtYW5hZ2VyLnJlbW92ZUNoaWxkKGFkZHI6IGNoaWxkKQogICAgfQp9" }, "lostAndFound": { - "claimFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjbGFpbUZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAoKCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcpIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKCiAgICAgICAKCiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKAogICAgICAgICAgICAgICAgPC0gdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwKICAgICAgICAgICAgICAgIHRvOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKQogICAgICAgIH0KCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCksCiAgICAgICAgICAgIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoCiAgICAgICAgKQogICAgICAgICAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQoKICAgICAgICBMb3N0QW5kRm91bmQucmVkZWVtQWxsKHR5cGU6IHZhdWx0VHlwZSwgbWF4OiBuaWwsIHJlY2VpdmVyOiBjYXApCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVyKGJ5Q2FwYWJpbGl0eUlEOiBjYXAuaWQpIS5kZWxldGUoKQogICAgfQp9", - "claimNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjbGFpbU5GVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IExvc3RBbmRGb3VuZCBmcm9tIDB4TG9zdEFuZEZvdW5kCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAKCiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSgKICAgICAgICAgICAgICAgIDwtIGNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLAogICAgICAgICAgICAgICAgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkKICAgICAgICB9CgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnB1Ymxpc2goCiAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCksCiAgICAgICAgICAgIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoCiAgICAgICAgKQogICAgICAgICAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCgogICAgICAgIExvc3RBbmRGb3VuZC5yZWRlZW1BbGwodHlwZTogbmZ0VHlwZSwgbWF4OiBuaWwsIHJlY2VpdmVyOiBjYXApCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVyKGJ5Q2FwYWJpbGl0eUlEOiBjYXAuaWQpIS5kZWxldGUoKQogICAgfQp9", - "queryUnclaimedFTs": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBxdWVyeVVuY2xhaW1lZEZUcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOiBbQW55U3RydWN0P10gewogICAgbGV0IHRpY2tldHMgPSBMb3N0QW5kRm91bmQuYm9ycm93QWxsVGlja2V0cyhhZGRyOiBhZGRyKQogICAgCiAgICBsZXQgZGlzcGxheUFycjogW0FueVN0cnVjdD9dICA9IFtdCiAgICBmb3IgdGlja2V0IGluIHRpY2tldHMgewogICAgICAgIGlmIHRpY2tldC50eXBlLmlzU3VidHlwZShvZjogVHlwZTxAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigpKSB7IAogICAgICAgICAgICBkaXNwbGF5QXJyLmFwcGVuZCh7ImRpc3BsYXkiOiB0aWNrZXQuZGlzcGxheSwgImJhbGFuY2UiOiB0aWNrZXQuZ2V0RnVuZ2libGVUb2tlbkJhbGFuY2UoKX0pCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRpc3BsYXlBcnIKfQ==", - "queryUnclaimedNFTs": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBxdWVyeVVuY2xhaW1lZE5GVHMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IExvc3RBbmRGb3VuZCBmcm9tIDB4TG9zdEFuZEZvdW5kCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzKTogWyZNZXRhZGF0YVZpZXdzLkRpc3BsYXk/XSB7CiAgICBsZXQgdGlja2V0cyA9IExvc3RBbmRGb3VuZC5ib3Jyb3dBbGxUaWNrZXRzKGFkZHI6IGFkZHIpCiAgICAKICAgIGxldCBkaXNwbGF5QXJyOiBbJk1ldGFkYXRhVmlld3MuRGlzcGxheT9dICA9IFtdCiAgICBmb3IgdGlja2V0IGluIHRpY2tldHMgewogICAgICAgIGlmIHRpY2tldC50eXBlLmlzU3VidHlwZShvZjogVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfT4oKSkgeyAKICAgICAgICAgICAgZGlzcGxheUFyci5hcHBlbmQodGlja2V0LmRpc3BsYXkpCiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gZGlzcGxheUFycgp9", - "queryUnclaimedNumber": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBxdWVyeVVuY2xhaW1lZE51bWJlciAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOiBJbnQgewogICAgbGV0IHNoZWxmTWFuYWdlciA9IExvc3RBbmRGb3VuZC5ib3Jyb3dTaGVsZk1hbmFnZXIoKQogICAgbGV0IHNoZWxmID0gc2hlbGZNYW5hZ2VyLmJvcnJvd1NoZWxmKHJlZGVlbWVyOiBhZGRyKQogICAgaWYgc2hlbGYgPT0gbmlsIHsKICAgICAgICByZXR1cm4gMAogICAgfQogICAgCiAgICByZXR1cm4gc2hlbGYhLmdldFJlZGVlbWFibGVUeXBlcygpLmxlbmd0aAp9", - "sendFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kRlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCByZWNpcGllbnQ6IEFkZHJlc3MsIGFtb3VudDogVUZpeDY0LCBtZW1vOiBTdHJpbmcpIHsKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCBmbG93UHJvdmlkZXI6IENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PgogICAgbGV0IGZsb3dSZWNlaXZlcjogQ2FwYWJpbGl0eTwmRmxvd1Rva2VuLlZhdWx0PgogICAgbGV0IHJlY2VpdmVyQ2FwOiBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+CiAgICBsZXQgZGlzcGxheTogTWV0YWRhdGFWaWV3cy5EaXNwbGF5PwoKCiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKCgogICAgICAgIGxldCB2YXVsdERpc3BsYXkgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlREaXNwbGF5PigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZURGlzcGxheT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKICAgICAgICBzZWxmLmRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLkRpc3BsYXkoCiAgICAgICAgICAgIG5hbWU6IHZhdWx0RGlzcGxheS5uYW1lLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogdmF1bHREaXNwbGF5LmRlc2NyaXB0aW9uLAogICAgICAgICAgICB0aHVtYm5haWw6IHZhdWx0RGlzcGxheS5sb2dvcy5pdGVtc1swXS5maWxlCiAgICAgICAgKQoKICAgICAgICBsZXQgdmF1bHQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCgogICAgICAgIHZhciBwcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+PyA9IG5pbAogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZm9yRWFjaENvbnRyb2xsZXIoZm9yUGF0aDogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQsIGZ1bihjOiAmU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyKTogQm9vbCB7CiAgICAgICAgICAgIGlmIGMuYm9ycm93VHlwZSA9PSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oKSB7CiAgICAgICAgICAgICAgICBwcm92aWRlciA9IGMuY2FwYWJpbGl0eSBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9KQoKICAgICAgICBpZiBwcm92aWRlciA9PSBuaWwgewogICAgICAgICAgICBwcm92aWRlciA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pigvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICB9CiAgICAgICAgc2VsZi5mbG93UHJvdmlkZXIgPSBwcm92aWRlciEKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlciA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwmRmxvd1Rva2VuLlZhdWx0PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICBzZWxmLnJlY2VpdmVyQ2FwID0gZ2V0QWNjb3VudChyZWNpcGllbnQpLmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhCiAgICB9CgogICAgZXhlY3V0ZSB7CgogICAgICAgIAogICAgICAgIGxldCBkZXBvc2l0RXN0aW1hdGUgPC0gTG9zdEFuZEZvdW5kLmVzdGltYXRlRGVwb3NpdChyZWRlZW1lcjogcmVjaXBpZW50LCBpdGVtOiA8LXNlbGYuc2VudFZhdWx0LCBtZW1vOiBtZW1vLCBkaXNwbGF5OiBzZWxmLmRpc3BsYXkpCiAgICAgICAgbGV0IHN0b3JhZ2VGZWUgPC0gc2VsZi5mbG93UHJvdmlkZXIuYm9ycm93KCkhLndpdGhkcmF3KGFtb3VudDogZGVwb3NpdEVzdGltYXRlLnN0b3JhZ2VGZWUpCiAgICAgICAgbGV0IGl0ZW0gPC0gZGVwb3NpdEVzdGltYXRlLndpdGhkcmF3KCkKCiAgICAgICAgTG9zdEFuZEZvdW5kLnRyeVNlbmRSZXNvdXJjZSgKICAgICAgICAgICAgaXRlbTogPC1pdGVtLAogICAgICAgICAgICBjYXA6IHNlbGYucmVjZWl2ZXJDYXAsCiAgICAgICAgICAgIG1lbW86IG1lbW8sCiAgICAgICAgICAgIGRpc3BsYXk6IHNlbGYuZGlzcGxheSwKICAgICAgICAgICAgc3RvcmFnZVBheW1lbnQ6ICZzdG9yYWdlRmVlIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fSwKICAgICAgICAgICAgZmxvd1Rva2VuUmVwYXltZW50OiBzZWxmLmZsb3dSZWNlaXZlcgogICAgICAgICkKCiAgICAgICAgc2VsZi5mbG93UmVjZWl2ZXIuYm9ycm93KCkhLmRlcG9zaXQoZnJvbTogPC1zdG9yYWdlRmVlKQogICAgICAgIGRlc3Ryb3kgZGVwb3NpdEVzdGltYXRlCiAgICB9Cn0=", - "sendNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZW5kTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IExvc3RBbmRGb3VuZCBmcm9tIDB4TG9zdEFuZEZvdW5kCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIHJlY2lwaWVudDogQWRkcmVzcywgaWQ6IFVJbnQ2NCwgbWVtbzogU3RyaW5nKSB7CiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IGZsb3dQcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgZmxvd1JlY2VpdmVyOiBDYXBhYmlsaXR5PCZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgcmVjZWl2ZXJDYXA6IENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgoKCiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgICAKCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCgogICAgICAgIHZhciBwcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+PyA9IG5pbAogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZm9yRWFjaENvbnRyb2xsZXIoZm9yUGF0aDogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQsIGZ1bihjOiAmU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyKTogQm9vbCB7CiAgICAgICAgICAgIGlmIGMuYm9ycm93VHlwZSA9PSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oKSB7CiAgICAgICAgICAgICAgICBwcm92aWRlciA9IGMuY2FwYWJpbGl0eSBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9KQoKICAgICAgICBpZiBwcm92aWRlciA9PSBuaWwgewogICAgICAgICAgICBwcm92aWRlciA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pigvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICB9CiAgICAgICAgc2VsZi5mbG93UHJvdmlkZXIgPSBwcm92aWRlciEKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlciA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwmRmxvd1Rva2VuLlZhdWx0PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICBzZWxmLnJlY2VpdmVyQ2FwID0gZ2V0QWNjb3VudChyZWNpcGllbnQpLmNhcGFiaWxpdGllcy5nZXQ8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAKICAgICAgICBsZXQgZGlzcGxheSA9IHNlbGYubmZ0LnJlc29sdmVWaWV3KFR5cGU8TWV0YWRhdGFWaWV3cy5EaXNwbGF5PigpKSBhcyEgTWV0YWRhdGFWaWV3cy5EaXNwbGF5PwoKICAgICAgICBsZXQgZGVwb3NpdEVzdGltYXRlIDwtIExvc3RBbmRGb3VuZC5lc3RpbWF0ZURlcG9zaXQocmVkZWVtZXI6IHJlY2lwaWVudCwgaXRlbTogPC1zZWxmLm5mdCwgbWVtbzogbWVtbywgZGlzcGxheTogZGlzcGxheSkKICAgICAgICBsZXQgc3RvcmFnZUZlZSA8LSBzZWxmLmZsb3dQcm92aWRlci5ib3Jyb3coKSEud2l0aGRyYXcoYW1vdW50OiBkZXBvc2l0RXN0aW1hdGUuc3RvcmFnZUZlZSkKICAgICAgICBsZXQgaXRlbSA8LSBkZXBvc2l0RXN0aW1hdGUud2l0aGRyYXcoKQoKICAgICAgICBMb3N0QW5kRm91bmQudHJ5U2VuZFJlc291cmNlKAogICAgICAgICAgICBpdGVtOiA8LWl0ZW0sCiAgICAgICAgICAgIGNhcDogc2VsZi5yZWNlaXZlckNhcCwKICAgICAgICAgICAgbWVtbzogbWVtbywKICAgICAgICAgICAgZGlzcGxheTogZGlzcGxheSwKICAgICAgICAgICAgc3RvcmFnZVBheW1lbnQ6ICZzdG9yYWdlRmVlIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fSwKICAgICAgICAgICAgZmxvd1Rva2VuUmVwYXltZW50OiBzZWxmLmZsb3dSZWNlaXZlcgogICAgICAgICkKCiAgICAgICAgc2VsZi5mbG93UmVjZWl2ZXIuYm9ycm93KCkhLmRlcG9zaXQoZnJvbTogPC1zdG9yYWdlRmVlKQogICAgICAgIGRlc3Ryb3kgZGVwb3NpdEVzdGltYXRlCiAgICB9Cn0=" + "claimFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2xhaW1GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCgoKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgoKICAgICAgIAoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgYWNjdC5zdG9yYWdlLnNhdmUoCiAgICAgICAgICAgICAgICA8LSB2YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLAogICAgICAgICAgICAgICAgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApCiAgICAgICAgfQoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IHZhdWx0RGF0YS5yZWNlaXZlclBhdGgKICAgICAgICApCiAgICAgICAgICAgICAgICAKICAgICAgICBsZXQgY2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCgogICAgICAgIExvc3RBbmRGb3VuZC5yZWRlZW1BbGwodHlwZTogdmF1bHRUeXBlLCBtYXg6IG5pbCwgcmVjZWl2ZXI6IGNhcCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXIoYnlDYXBhYmlsaXR5SUQ6IGNhcC5pZCkhLmRlbGV0ZSgpCiAgICB9Cn0=", + "claimNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2xhaW1ORlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nKSB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgIAoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKAogICAgICAgICAgICAgICAgPC0gY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksCiAgICAgICAgICAgICAgICB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKQogICAgICAgIH0KCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgKICAgICAgICApCiAgICAgICAgICAgICAgICAKICAgICAgICBsZXQgY2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKCiAgICAgICAgTG9zdEFuZEZvdW5kLnJlZGVlbUFsbCh0eXBlOiBuZnRUeXBlLCBtYXg6IG5pbCwgcmVjZWl2ZXI6IGNhcCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXIoYnlDYXBhYmlsaXR5SUQ6IGNhcC5pZCkhLmRlbGV0ZSgpCiAgICB9Cn0=", + "queryUnclaimedFTs": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcXVlcnlVbmNsYWltZWRGVHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IFtBbnlTdHJ1Y3Q/XSB7CiAgICBsZXQgdGlja2V0cyA9IExvc3RBbmRGb3VuZC5ib3Jyb3dBbGxUaWNrZXRzKGFkZHI6IGFkZHIpCiAgICAKICAgIGxldCBkaXNwbGF5QXJyOiBbQW55U3RydWN0P10gID0gW10KICAgIGZvciB0aWNrZXQgaW4gdGlja2V0cyB7CiAgICAgICAgaWYgdGlja2V0LnR5cGUuaXNTdWJ0eXBlKG9mOiBUeXBlPEB7RnVuZ2libGVUb2tlbi5WYXVsdH0+KCkpIHsgCiAgICAgICAgICAgIGRpc3BsYXlBcnIuYXBwZW5kKHsiZGlzcGxheSI6IHRpY2tldC5kaXNwbGF5LCAiYmFsYW5jZSI6IHRpY2tldC5nZXRGdW5naWJsZVRva2VuQmFsYW5jZSgpfSkKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZGlzcGxheUFycgp9", + "queryUnclaimedNFTs": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcXVlcnlVbmNsYWltZWRORlRzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOiBbJk1ldGFkYXRhVmlld3MuRGlzcGxheT9dIHsKICAgIGxldCB0aWNrZXRzID0gTG9zdEFuZEZvdW5kLmJvcnJvd0FsbFRpY2tldHMoYWRkcjogYWRkcikKICAgIAogICAgbGV0IGRpc3BsYXlBcnI6IFsmTWV0YWRhdGFWaWV3cy5EaXNwbGF5P10gID0gW10KICAgIGZvciB0aWNrZXQgaW4gdGlja2V0cyB7CiAgICAgICAgaWYgdGlja2V0LnR5cGUuaXNTdWJ0eXBlKG9mOiBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9PigpKSB7IAogICAgICAgICAgICBkaXNwbGF5QXJyLmFwcGVuZCh0aWNrZXQuZGlzcGxheSkKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBkaXNwbGF5QXJyCn0=", + "queryUnclaimedNumber": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcXVlcnlVbmNsYWltZWROdW1iZXIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IEludCB7CiAgICBsZXQgc2hlbGZNYW5hZ2VyID0gTG9zdEFuZEZvdW5kLmJvcnJvd1NoZWxmTWFuYWdlcigpCiAgICBsZXQgc2hlbGYgPSBzaGVsZk1hbmFnZXIuYm9ycm93U2hlbGYocmVkZWVtZXI6IGFkZHIpCiAgICBpZiBzaGVsZiA9PSBuaWwgewogICAgICAgIHJldHVybiAwCiAgICB9CiAgICAKICAgIHJldHVybiBzaGVsZiEuZ2V0UmVkZWVtYWJsZVR5cGVzKCkubGVuZ3RoCn0=", + "sendFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZEZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIHJlY2lwaWVudDogQWRkcmVzcywgYW1vdW50OiBVRml4NjQsIG1lbW86IFN0cmluZykgewogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGZsb3dQcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgZmxvd1JlY2VpdmVyOiBDYXBhYmlsaXR5PCZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgcmVjZWl2ZXJDYXA6IENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4KICAgIGxldCBkaXNwbGF5OiBNZXRhZGF0YVZpZXdzLkRpc3BsYXk/CgoKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKCiAgICAgICAgbGV0IHZhdWx0RGlzcGxheSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVERpc3BsYXk+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlREaXNwbGF5PyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgogICAgICAgIHNlbGYuZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuRGlzcGxheSgKICAgICAgICAgICAgbmFtZTogdmF1bHREaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB2YXVsdERpc3BsYXkuZGVzY3JpcHRpb24sCiAgICAgICAgICAgIHRodW1ibmFpbDogdmF1bHREaXNwbGF5LmxvZ29zLml0ZW1zWzBdLmZpbGUKICAgICAgICApCgogICAgICAgIGxldCB2YXVsdCA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKCiAgICAgICAgdmFyIHByb3ZpZGVyOiBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4/ID0gbmlsCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5mb3JFYWNoQ29udHJvbGxlcihmb3JQYXRoOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCwgZnVuKGM6ICZTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIpOiBCb29sIHsKICAgICAgICAgICAgaWYgYy5ib3Jyb3dUeXBlID09IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigpIHsKICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gYy5jYXBhYmlsaXR5IGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIH0pCgogICAgICAgIGlmIHByb3ZpZGVyID09IG5pbCB7CiAgICAgICAgICAgIHByb3ZpZGVyID0gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgIH0KICAgICAgICBzZWxmLmZsb3dQcm92aWRlciA9IHByb3ZpZGVyIQogICAgICAgIHNlbGYuZmxvd1JlY2VpdmVyID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZGbG93VG9rZW4uVmF1bHQ+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHNlbGYucmVjZWl2ZXJDYXAgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih2YXVsdERhdGEucmVjZWl2ZXJQYXRoKSEKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgCiAgICAgICAgbGV0IGRlcG9zaXRFc3RpbWF0ZSA8LSBMb3N0QW5kRm91bmQuZXN0aW1hdGVEZXBvc2l0KHJlZGVlbWVyOiByZWNpcGllbnQsIGl0ZW06IDwtc2VsZi5zZW50VmF1bHQsIG1lbW86IG1lbW8sIGRpc3BsYXk6IHNlbGYuZGlzcGxheSkKICAgICAgICBsZXQgc3RvcmFnZUZlZSA8LSBzZWxmLmZsb3dQcm92aWRlci5ib3Jyb3coKSEud2l0aGRyYXcoYW1vdW50OiBkZXBvc2l0RXN0aW1hdGUuc3RvcmFnZUZlZSkKICAgICAgICBsZXQgaXRlbSA8LSBkZXBvc2l0RXN0aW1hdGUud2l0aGRyYXcoKQoKICAgICAgICBMb3N0QW5kRm91bmQudHJ5U2VuZFJlc291cmNlKAogICAgICAgICAgICBpdGVtOiA8LWl0ZW0sCiAgICAgICAgICAgIGNhcDogc2VsZi5yZWNlaXZlckNhcCwKICAgICAgICAgICAgbWVtbzogbWVtbywKICAgICAgICAgICAgZGlzcGxheTogc2VsZi5kaXNwbGF5LAogICAgICAgICAgICBzdG9yYWdlUGF5bWVudDogJnN0b3JhZ2VGZWUgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9LAogICAgICAgICAgICBmbG93VG9rZW5SZXBheW1lbnQ6IHNlbGYuZmxvd1JlY2VpdmVyCiAgICAgICAgKQoKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlci5ib3Jyb3coKSEuZGVwb3NpdChmcm9tOiA8LXN0b3JhZ2VGZWUpCiAgICAgICAgZGVzdHJveSBkZXBvc2l0RXN0aW1hdGUKICAgIH0KfQ==", + "sendNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2VuZE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgcmVjaXBpZW50OiBBZGRyZXNzLCBpZDogVUludDY0LCBtZW1vOiBTdHJpbmcpIHsKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgZmxvd1Byb3ZpZGVyOiBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4KICAgIGxldCBmbG93UmVjZWl2ZXI6IENhcGFiaWxpdHk8JkZsb3dUb2tlbi5WYXVsdD4KICAgIGxldCByZWNlaXZlckNhcDogQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CgoKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIAogICAgICAgIAoKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKCiAgICAgICAgdmFyIHByb3ZpZGVyOiBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4/ID0gbmlsCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5mb3JFYWNoQ29udHJvbGxlcihmb3JQYXRoOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCwgZnVuKGM6ICZTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIpOiBCb29sIHsKICAgICAgICAgICAgaWYgYy5ib3Jyb3dUeXBlID09IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigpIHsKICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gYy5jYXBhYmlsaXR5IGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIH0pCgogICAgICAgIGlmIHByb3ZpZGVyID09IG5pbCB7CiAgICAgICAgICAgIHByb3ZpZGVyID0gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgIH0KICAgICAgICBzZWxmLmZsb3dQcm92aWRlciA9IHByb3ZpZGVyIQogICAgICAgIHNlbGYuZmxvd1JlY2VpdmVyID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZGbG93VG9rZW4uVmF1bHQ+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHNlbGYucmVjZWl2ZXJDYXAgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIAogICAgICAgIGxldCBkaXNwbGF5ID0gc2VsZi5uZnQucmVzb2x2ZVZpZXcoVHlwZTxNZXRhZGF0YVZpZXdzLkRpc3BsYXk+KCkpIGFzISBNZXRhZGF0YVZpZXdzLkRpc3BsYXk/CgogICAgICAgIGxldCBkZXBvc2l0RXN0aW1hdGUgPC0gTG9zdEFuZEZvdW5kLmVzdGltYXRlRGVwb3NpdChyZWRlZW1lcjogcmVjaXBpZW50LCBpdGVtOiA8LXNlbGYubmZ0LCBtZW1vOiBtZW1vLCBkaXNwbGF5OiBkaXNwbGF5KQogICAgICAgIGxldCBzdG9yYWdlRmVlIDwtIHNlbGYuZmxvd1Byb3ZpZGVyLmJvcnJvdygpIS53aXRoZHJhdyhhbW91bnQ6IGRlcG9zaXRFc3RpbWF0ZS5zdG9yYWdlRmVlKQogICAgICAgIGxldCBpdGVtIDwtIGRlcG9zaXRFc3RpbWF0ZS53aXRoZHJhdygpCgogICAgICAgIExvc3RBbmRGb3VuZC50cnlTZW5kUmVzb3VyY2UoCiAgICAgICAgICAgIGl0ZW06IDwtaXRlbSwKICAgICAgICAgICAgY2FwOiBzZWxmLnJlY2VpdmVyQ2FwLAogICAgICAgICAgICBtZW1vOiBtZW1vLAogICAgICAgICAgICBkaXNwbGF5OiBkaXNwbGF5LAogICAgICAgICAgICBzdG9yYWdlUGF5bWVudDogJnN0b3JhZ2VGZWUgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9LAogICAgICAgICAgICBmbG93VG9rZW5SZXBheW1lbnQ6IHNlbGYuZmxvd1JlY2VpdmVyCiAgICAgICAgKQoKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlci5ib3Jyb3coKSEuZGVwb3NpdChmcm9tOiA8LXN0b3JhZ2VGZWUpCiAgICAgICAgZGVzdHJveSBkZXBvc2l0RXN0aW1hdGUKICAgIH0KfQ==" }, "staking": { - "checkSetup": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja1NldHVwIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBEZXRlcm1pbmVzIGlmIGFuIGFjY291bnQgaXMgc2V0IHVwIHdpdGggYSBTdGFraW5nIENvbGxlY3Rpb24KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBCb29sIHsKICAgIHJldHVybiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWRkcmVzcykKfQ==", - "checkStakingEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjaGVja1N0YWtpbmdFbmFibGVkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKCk6Qm9vbCB7CiAgICByZXR1cm4gRmxvd0lEVGFibGVTdGFraW5nLnN0YWtpbmdFbmFibGVkKCkKfQ==", - "closeStake": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjbG9zZVN0YWtlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweEZsb3dTdGFraW5nQ29sbGVjdGlvbgoKLy8gQ2xvc2VzIG91dCBhIHN0YWtpbmcgb2JqZWN0IGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KLy8gVGhpcyBkb2VzIG5vdCByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHRoZSBpZGVudGl0eSB0YWJsZSwKLy8gYnV0IGl0IGRvZXMgbWVhbiB0aGF0IHRoZSBhY2NvdW50IHRoYXQgY2xvc2VzIGl0IGNhbm5vdCBldmVyIGFjY2VzcyBpdCBhZ2FpbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYuY2xvc2VTdGFrZShub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQogICAgfQp9", - "createDelegator": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjcmVhdGVEZWxlZ2F0b3IgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKLy8vIFJlZ2lzdGVycyBhIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uIHJlc291cmNlCi8vLyBmb3IgdGhlIHNwZWNpZmllZCBub2RlSUQgYW5kIHRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGNvbW1pdAoKdHJhbnNhY3Rpb24oaWQ6IFN0cmluZywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5yZWdpc3RlckRlbGVnYXRvcihub2RlSUQ6IGlkLCBhbW91bnQ6IGFtb3VudCkgICAgICAKICAgIH0KfQ==", - "createStake": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjcmVhdGVTdGFrZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gQ29tbWl0cyBuZXcgdG9rZW5zIHRvIHN0YWtlIGZvciB0aGUgc3BlY2lmaWVkIG5vZGUgb3IgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KLy8vIFRoZSB0b2tlbnMgZnJvbSB0aGUgbG9ja2VkIHZhdWx0IGFyZSB1c2VkIGZpcnN0LCBpZiBpdCBleGlzdHMKLy8vIGZvbGxvd2VkIGJ5IHRoZSB0b2tlbnMgZnJvbSB0aGUgdW5sb2NrZWQgdmF1bHQKCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5zdGFrZU5ld1Rva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==", - "getApr": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBcHIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKTogVUZpeDY0IHsKICAgIGxldCBhcHIgPSBGbG93SURUYWJsZVN0YWtpbmcuZ2V0RXBvY2hUb2tlblBheW91dCgpIC8gRmxvd0lEVGFibGVTdGFraW5nLmdldFRvdGFsU3Rha2VkKCkgLyA3LjAgKiAzNjUuMCAqICgxLjAgLSBGbG93SURUYWJsZVN0YWtpbmcuZ2V0UmV3YXJkQ3V0UGVyY2VudGFnZSgpKQogICAgcmV0dXJuIGFwcgp9", - "getApyWeekly": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRBcHlXZWVrbHkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKTogVUZpeDY0IHsKICAgIGxldCBhcHIgPSBGbG93SURUYWJsZVN0YWtpbmcuZ2V0RXBvY2hUb2tlblBheW91dCgpIC8gRmxvd0lEVGFibGVTdGFraW5nLmdldFRvdGFsU3Rha2VkKCkgKiA1NC4wICogKDEuMCAtIEZsb3dJRFRhYmxlU3Rha2luZy5nZXRSZXdhcmRDdXRQZXJjZW50YWdlKCkpCiAgICByZXR1cm4gYXByCn0=", - "getDelegatesIndo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXREZWxlZ2F0ZXNJbmRvIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKYWNjZXNzKGFsbCkgc3RydWN0IERlbGVnYXRlSW5mbyB7CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9ySUQ6IFVJbnQzMgogICAgYWNjZXNzKGFsbCkgbGV0IG5vZGVJRDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKCiAgICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHJvbGU6IFVJbnQ4CiAgICBhY2Nlc3MoYWxsKSBsZXQgdW5zdGFrYWJsZVRva2VuczogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdGVkTm9kZUluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbwogICAgYWNjZXNzKGFsbCkgbGV0IHJlc3Rha2FibGVVbnN0YWtlZFRva2VuczogVUZpeDY0CgogICAgaW5pdChkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbykgewogICAgICAgIHNlbGYuZGVsZWdhdG9ySUQgPSBkZWxlZ2F0b3JJbmZvLmlkCiAgICAgICAgc2VsZi5ub2RlSUQgPSBkZWxlZ2F0b3JJbmZvLm5vZGVJRAogICAgICAgIHNlbGYudG9rZW5zQ29tbWl0dGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IGRlbGVnYXRvckluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCgogICAgICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgICAgICBsZXQgbm9kZUluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8obm9kZUlEOiBkZWxlZ2F0b3JJbmZvLm5vZGVJRCkKICAgICAgICBzZWxmLmRlbGVnYXRlZE5vZGVJbmZvID0gbm9kZUluZm8KICAgICAgICBzZWxmLmlkID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICAgICAgc2VsZi51bnN0YWthYmxlVG9rZW5zID0gc2VsZi50b2tlbnNTdGFrZWQgKyBzZWxmLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYucmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zID0gc2VsZi50b2tlbnNVbnN0YWtlZCArIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFjY291bnQ6IEFkZHJlc3MpOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fT8gewogICAgbGV0IGRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFjY291bnQpCiAgICBpZiAoIWRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKSB7CiAgICAgICAgcmV0dXJuIG5pbAogICAgfQoKICAgIGxldCBkZWxlZ2F0b3JJRHM6IFtGbG93U3Rha2luZ0NvbGxlY3Rpb24uRGVsZWdhdG9ySURzXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXREZWxlZ2F0b3JJRHMoYWRkcmVzczogYWNjb3VudCkKCiAgICBsZXQgZm9ybWF0dGVkRGVsZWdhdG9ySW5mbzoge1N0cmluZzoge1VJbnQzMjogRGVsZWdhdGVJbmZvfX0gPSB7fQoKICAgIGZvciBkZWxlZ2F0b3JJRCBpbiBkZWxlZ2F0b3JJRHMgewogICAgICAgIGlmIGxldCBfZm9ybWF0dGVkRGVsZWdhdG9ySW5mbyA9IGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvW2RlbGVnYXRvcklELmRlbGVnYXRvcklEXSA9IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSA9IHsgZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQ6IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKX0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGZvcm1hdHRlZERlbGVnYXRvckluZm8KfQo=", - "getDelegatesInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXREZWxlZ2F0ZXNJbmZvIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKYWNjZXNzKGFsbCkgc3RydWN0IERlbGVnYXRlSW5mbyB7CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9ySUQ6IFVJbnQzMgogICAgYWNjZXNzKGFsbCkgbGV0IG5vZGVJRDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKCiAgICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHJvbGU6IFVJbnQ4CiAgICBhY2Nlc3MoYWxsKSBsZXQgdW5zdGFrYWJsZVRva2VuczogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdGVkTm9kZUluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbwogICAgYWNjZXNzKGFsbCkgbGV0IHJlc3Rha2FibGVVbnN0YWtlZFRva2VuczogVUZpeDY0CgogICAgaW5pdChkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbykgewogICAgICAgIHNlbGYuZGVsZWdhdG9ySUQgPSBkZWxlZ2F0b3JJbmZvLmlkCiAgICAgICAgc2VsZi5ub2RlSUQgPSBkZWxlZ2F0b3JJbmZvLm5vZGVJRAogICAgICAgIHNlbGYudG9rZW5zQ29tbWl0dGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IGRlbGVnYXRvckluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCgogICAgICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgICAgICBsZXQgbm9kZUluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8obm9kZUlEOiBkZWxlZ2F0b3JJbmZvLm5vZGVJRCkKICAgICAgICBzZWxmLmRlbGVnYXRlZE5vZGVJbmZvID0gbm9kZUluZm8KICAgICAgICBzZWxmLmlkID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICAgICAgc2VsZi51bnN0YWthYmxlVG9rZW5zID0gc2VsZi50b2tlbnNTdGFrZWQgKyBzZWxmLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYucmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zID0gc2VsZi50b2tlbnNVbnN0YWtlZCArIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFjY291bnQ6IEFkZHJlc3MpOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fT8gewogICAgbGV0IGRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFjY291bnQpCiAgICBpZiAoIWRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKSB7CiAgICAgICAgcmV0dXJuIG5pbAogICAgfQoKICAgIGxldCBkZWxlZ2F0b3JJRHM6IFtGbG93U3Rha2luZ0NvbGxlY3Rpb24uRGVsZWdhdG9ySURzXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXREZWxlZ2F0b3JJRHMoYWRkcmVzczogYWNjb3VudCkKCiAgICBsZXQgZm9ybWF0dGVkRGVsZWdhdG9ySW5mbzoge1N0cmluZzoge1VJbnQzMjogRGVsZWdhdGVJbmZvfX0gPSB7fQoKICAgIGZvciBkZWxlZ2F0b3JJRCBpbiBkZWxlZ2F0b3JJRHMgewogICAgICAgIGlmIGxldCBfZm9ybWF0dGVkRGVsZWdhdG9ySW5mbyA9IGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvW2RlbGVnYXRvcklELmRlbGVnYXRvcklEXSA9IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSA9IHsgZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQ6IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKX0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGZvcm1hdHRlZERlbGVnYXRvckluZm8KfQ==", - "getDelegatesInfoArray": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXREZWxlZ2F0ZXNJbmZvQXJyYXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCiAgICAgICAgCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm9dIHsKICAgIHJldHVybiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsRGVsZWdhdG9ySW5mbyhhZGRyZXNzOiBhZGRyZXNzKQp9", - "getDelegatorInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXREZWxlZ2F0b3JJbmZvIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyKTogRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8gewogIHJldHVybiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQp9", - "getEpochMetadata": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRFcG9jaE1ldGFkYXRhIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93RXBvY2ggZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGVwb2NoQ291bnRlcjogVUludDY0KTogRmxvd0Vwb2NoLkVwb2NoTWV0YWRhdGEgewogICAgcmV0dXJuIEZsb3dFcG9jaC5nZXRFcG9jaE1ldGFkYXRhKGVwb2NoQ291bnRlcikhCn0=", - "getNodeInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXROb2RlSW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihub2RlSUQ6IFN0cmluZyk6IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyB7CiAgcmV0dXJuIEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IG5vZGVJRCkKfQ==", - "getNodesInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXROb2Rlc0luZm8gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgU3VtbWFyeVN0YWtlRGVsZWdhdGVJbmZvIHsKCiAgICBhY2Nlc3MoYWxsKSB2YXIgbm9kZUNvdW50OiBVSW50NjQKICAgIGFjY2VzcyhhbGwpIHZhciBkZWxlZ2F0ZUNvdW50OiBVSW50NjQKCiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHRvdGFsVG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNVbnN0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgc3Rha2VUb2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBkZWxlZ2F0ZVRva2Vuc0NvbW1pdHRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKCiAgICBpbml0KGFsbE5vZGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvXSwgYWxsRGVsZWdhdGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm9dKSB7CgogICAgICAgIHNlbGYubm9kZUNvdW50ID0gVUludDY0KDApCiAgICAgICAgc2VsZi5kZWxlZ2F0ZUNvdW50ID0gVUludDY0KDApCgogICAgICAgIHNlbGYudG90YWxUb2tlbnNTdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2luZyA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBVRml4NjQoMCkKCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1N0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuc3Rha2VUb2tlbnNDb21taXR0ZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFraW5nID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Jld2FyZGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IFVGaXg2NCgwKQoKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zU3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc0NvbW1pdHRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtpbmcgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zVW5zdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmV3YXJkZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gVUZpeDY0KDApCgogICAgICAgIGZvciBub2RlSW5mbyBpbiBhbGxOb2RlSW5mbyB7CiAgICAgICAgICAgIHNlbGYubm9kZUNvdW50ID0gc2VsZi5ub2RlQ291bnQgKyAxCgogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zU3Rha2VkID0gc2VsZi50b3RhbFRva2Vuc1N0YWtlZCArIG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkID0gc2VsZi50b3RhbFRva2Vuc0NvbW1pdHRlZCArIG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nID0gc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2luZyArIG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgKyBub2RlSW5mby50b2tlbnNVbnN0YWtlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zUmV3YXJkZWQgPSBzZWxmLnRvdGFsVG9rZW5zUmV3YXJkZWQgKyBub2RlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi50b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIG5vZGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQoKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1N0YWtlZCA9IHNlbGYuc3Rha2VUb2tlbnNTdGFrZWQgKyBub2RlSW5mby50b2tlbnNTdGFrZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc0NvbW1pdHRlZCA9IHNlbGYuc3Rha2VUb2tlbnNDb21taXR0ZWQgKyBub2RlSW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2luZyA9IHNlbGYuc3Rha2VUb2tlbnNVbnN0YWtpbmcgKyBub2RlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2VkID0gc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2VkICsgbm9kZUluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Jld2FyZGVkID0gc2VsZi5zdGFrZVRva2Vuc1Jld2FyZGVkICsgbm9kZUluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IHNlbGYuc3Rha2VUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgKyBub2RlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgICAgICB9CgogICAgICAgIGZvciBkZWxlZ2F0ZUluZm8gaW4gYWxsRGVsZWdhdGVJbmZvIHsKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZUNvdW50ID0gc2VsZi5kZWxlZ2F0ZUNvdW50ICsgMQoKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc1N0YWtlZCA9IHNlbGYudG90YWxUb2tlbnNTdGFrZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgPSBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkICsgZGVsZWdhdGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nID0gc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2luZyArIGRlbGVnYXRlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2VkID0gc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2VkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCA9IHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCArIGRlbGVnYXRlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi50b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIGRlbGVnYXRlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNTdGFrZWQgPSBzZWxmLmRlbGVnYXRlVG9rZW5zU3Rha2VkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc0NvbW1pdHRlZCArIGRlbGVnYXRlSW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZyA9IHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtpbmcgKyBkZWxlZ2F0ZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtlZCA9IHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtlZCArIGRlbGVnYXRlSW5mby50b2tlbnNVbnN0YWtlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmV3YXJkZWQgPSBzZWxmLmRlbGVnYXRlVG9rZW5zUmV3YXJkZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IHNlbGYuZGVsZWdhdGVUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgKyBkZWxlZ2F0ZUluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICAgICAgfQoKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IFN1bW1hcnlTdGFrZURlbGVnYXRlSW5mbz8gewogICAgbGV0IGRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFjY291bnQpCiAgICBpZiAoIWRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKSB7CiAgICAgICAgcmV0dXJuIG5pbAogICAgfQoKICAgIGxldCBhbGxOb2RlSW5mbzogW0Zsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mb10gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsTm9kZUluZm8oYWRkcmVzczogYWNjb3VudCkKICAgIGxldCBhbGxEZWxlZ2F0ZUluZm86IFtGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mb10gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsRGVsZWdhdG9ySW5mbyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIHJldHVybiBTdW1tYXJ5U3Rha2VEZWxlZ2F0ZUluZm8oYWxsTm9kZUluZm86IGFsbE5vZGVJbmZvLCBhbGxEZWxlZ2F0ZUluZm86IGFsbERlbGVnYXRlSW5mbykKfQo=", - "getStakeInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRTdGFrZUluZm8gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgU3Rha2VJbmZvIHsKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcm9sZTogVUludDgKICAgIGFjY2VzcyhhbGwpIGxldCBuZXR3b3JraW5nQWRkcmVzczogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgbmV0d29ya2luZ0tleTogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgc3Rha2luZ0tleTogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b3RhbFRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgbGV0IGRlbGVnYXRvcnNDbnQ6IEludAogICAgYWNjZXNzKGFsbCkgbGV0IGRlbGVnYXRvcklEQ291bnRlcjogVUludDMyCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCBpbml0aWFsV2VpZ2h0OiBVSW50NjQKCiAgICAvLyBQcm9qZWN0ZWQgVmFsdWVzCiAgICBhY2Nlc3MoYWxsKSBsZXQgbm9kZUlEOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB1bnN0YWthYmxlVG9rZW5zOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNEZWxlZ2F0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHJlc3Rha2FibGVVbnN0YWtlZFRva2VuczogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgbGV0IG1hY2hpbmVBY2NvdW50QWRkcmVzczogQWRkcmVzcz8KICAgIGFjY2VzcyhhbGwpIGxldCBtYWNoaW5lQWNjb3VudEJhbGFuY2U6IFVGaXg2ND8KCiAgICBpbml0KG5vZGVJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8sIG1hY2hpbmVBY2NvdW50SW5mbzogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLk1hY2hpbmVBY2NvdW50SW5mbz8pIHsKICAgICAgICBzZWxmLmlkID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICAgICAgc2VsZi5uZXR3b3JraW5nQWRkcmVzcyA9IG5vZGVJbmZvLm5ldHdvcmtpbmdBZGRyZXNzCiAgICAgICAgc2VsZi5uZXR3b3JraW5nS2V5ID0gbm9kZUluZm8ubmV0d29ya2luZ0tleQogICAgICAgIHNlbGYuc3Rha2luZ0tleSA9IG5vZGVJbmZvLnN0YWtpbmdLZXkKICAgICAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgIHNlbGYudG90YWxUb2tlbnNTdGFrZWQgPSBub2RlSW5mby50b3RhbFN0YWtlZFdpdGhEZWxlZ2F0b3JzKCkKICAgICAgICBzZWxmLnRva2Vuc0NvbW1pdHRlZCA9IG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYudG9rZW5zVW5zdGFraW5nID0gbm9kZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IG5vZGVJbmZvLnRva2Vuc1Jld2FyZGVkCgogICAgICAgIHNlbGYuZGVsZWdhdG9yc0NudCA9IG5vZGVJbmZvLmRlbGVnYXRvcnMubGVuZ3RoIAogICAgICAgIHNlbGYuZGVsZWdhdG9ySURDb3VudGVyID0gbm9kZUluZm8uZGVsZWdhdG9ySURDb3VudGVyCiAgICAgICAgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBub2RlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgICAgICBzZWxmLmluaXRpYWxXZWlnaHQgPSBub2RlSW5mby5pbml0aWFsV2VpZ2h0CgogICAgICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgICAgICBzZWxmLm5vZGVJRCA9IG5vZGVJbmZvLmlkCiAgICAgICAgc2VsZi51bnN0YWthYmxlVG9rZW5zID0gc2VsZi50b2tlbnNTdGFrZWQgKyBzZWxmLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIGxldCBub2RlU3Rha2VkQmFsYW5jZVdpdGhEZWxlZ2F0b3JzID0gbm9kZUluZm8udG90YWxTdGFrZWRXaXRoRGVsZWdhdG9ycygpCiAgICAgICAgc2VsZi50b2tlbnNEZWxlZ2F0ZWQgPSBub2RlU3Rha2VkQmFsYW5jZVdpdGhEZWxlZ2F0b3JzIC0gbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi5yZXN0YWthYmxlVW5zdGFrZWRUb2tlbnMgPSBzZWxmLnRva2Vuc1Vuc3Rha2VkICsgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgaWYgbGV0IF9tYWNoaW5lQWNjb3VudEluZm8gPSBtYWNoaW5lQWNjb3VudEluZm8gewogICAgICAgICAgICBsZXQgX21hY2hpbmVBY2NvdW50QWRkcmVzcyA9IF9tYWNoaW5lQWNjb3VudEluZm8uZ2V0QWRkcmVzcygpCgogICAgICAgICAgICBsZXQgbWFjaGluZUFjY291bnQgPSBnZXRBY2NvdW50KF9tYWNoaW5lQWNjb3VudEFkZHJlc3MpCgogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QWRkcmVzcyA9IF9tYWNoaW5lQWNjb3VudEFkZHJlc3MKICAgICAgICAgICAgc2VsZi5tYWNoaW5lQWNjb3VudEJhbGFuY2UgPSBtYWNoaW5lQWNjb3VudC5iYWxhbmNlCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2VsZi5tYWNoaW5lQWNjb3VudEFkZHJlc3MgPSBuaWwKICAgICAgICAgICAgc2VsZi5tYWNoaW5lQWNjb3VudEJhbGFuY2UgPSBuaWwKICAgICAgICB9CiAgICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFjY291bnQ6IEFkZHJlc3MpOiB7U3RyaW5nOiBTdGFrZUluZm99PyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGZvcm1hdHRlZE5vZGVJbmZvOiB7U3RyaW5nOiBTdGFrZUluZm99ID0ge30KICAgIGxldCBhbGxOb2RlSW5mbzogW0Zsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mb10gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsTm9kZUluZm8oYWRkcmVzczogYWNjb3VudCkKICAgIGxldCBtYWNoaW5lQWNjb3VudHM6IHtTdHJpbmc6IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5NYWNoaW5lQWNjb3VudEluZm99ID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmdldE1hY2hpbmVBY2NvdW50cyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIGZvciBub2RlSW5mbyBpbiBhbGxOb2RlSW5mbyB7CiAgICAgICAgZm9ybWF0dGVkTm9kZUluZm9bbm9kZUluZm8uaWRdID0gU3Rha2VJbmZvKG5vZGVJbmZvOiBub2RlSW5mbywgbWFjaGluZUFjY291bnRJbmZvOiBtYWNoaW5lQWNjb3VudHNbbm9kZUluZm8uaWRdKQogICAgfQoKICAgIHJldHVybiBmb3JtYXR0ZWROb2RlSW5mbwp9Cg==", - "getStakingInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRTdGFraW5nSW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IEZsb3dFcG9jaCBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbClzdHJ1Y3QgRXBvY2hJbmZvIHsKICBhY2Nlc3MoYWxsKWxldCBjdXJyZW50RXBvY2hDb3VudGVyOiBVSW50NjQKICBhY2Nlc3MoYWxsKWxldCBjdXJyZW50RXBvY2hQaGFzZTogVUludDgKCiAgaW5pdCgKICAgICAgY3VycmVudEVwb2NoQ291bnRlcjogVUludDY0LAogICAgICBjdXJyZW50RXBvY2hQaGFzZTogVUludDgKICApIHsKICAgICAgc2VsZi5jdXJyZW50RXBvY2hDb3VudGVyID0gY3VycmVudEVwb2NoQ291bnRlcgogICAgICBzZWxmLmN1cnJlbnRFcG9jaFBoYXNlID0gY3VycmVudEVwb2NoUGhhc2UKICB9Cn0KCmFjY2VzcyhhbGwpc3RydWN0IFJlc3VsdCB7CiAgYWNjZXNzKGFsbClsZXQgc3Rha2luZ0luZm86IFN0YWtpbmdJbmZvPwoKICBpbml0KHN0YWtpbmdJbmZvOiBTdGFraW5nSW5mbz8pIHsKICAgIHNlbGYuc3Rha2luZ0luZm8gPSBzdGFraW5nSW5mbwogIH0KfQoKYWNjZXNzKGFsbClzdHJ1Y3QgU3Rha2luZ0luZm8gewogIGFjY2VzcyhhbGwpbGV0IGVwb2NoSW5mbzogRXBvY2hJbmZvCiAgYWNjZXNzKGFsbClsZXQgbG9ja2VkQWRkcmVzczogQWRkcmVzcyAgIAogIGFjY2VzcyhhbGwpbGV0IGxvY2tlZEJhbGFuY2U6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHVubG9ja0xpbWl0OiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCBub2RlSW5mbzogTm9kZUluZm8/CiAgYWNjZXNzKGFsbClsZXQgZGVsZWdhdG9yTm9kZUluZm86IE5vZGVJbmZvPwogIGFjY2VzcyhhbGwpbGV0IGRlbGVnYXRvckluZm86IERlbGVnYXRvckluZm8/CgogIGluaXQoCiAgICBlcG9jaEluZm86IEVwb2NoSW5mbywKICAgIGxvY2tlZEFkZHJlc3M6IEFkZHJlc3MsCiAgICBsb2NrZWRCYWxhbmNlOiBVRml4NjQsCiAgICB1bmxvY2tMaW1pdDogVUZpeDY0LAogICAgbm9kZUluZm86IE5vZGVJbmZvPywKICAgIGRlbGVnYXRvck5vZGVJbmZvOiBOb2RlSW5mbz8sCiAgICBkZWxlZ2F0b3JJbmZvOiBEZWxlZ2F0b3JJbmZvPywKICApIHsKICAgIHNlbGYuZXBvY2hJbmZvID0gZXBvY2hJbmZvCiAgICBzZWxmLmxvY2tlZEFkZHJlc3MgPSBsb2NrZWRBZGRyZXNzCiAgICBzZWxmLmxvY2tlZEJhbGFuY2UgPSBsb2NrZWRCYWxhbmNlCiAgICBzZWxmLnVubG9ja0xpbWl0ID0gdW5sb2NrTGltaXQKICAgIHNlbGYubm9kZUluZm8gPSBub2RlSW5mbwogICAgc2VsZi5kZWxlZ2F0b3JOb2RlSW5mbyA9IGRlbGVnYXRvck5vZGVJbmZvCiAgICBzZWxmLmRlbGVnYXRvckluZm8gPSBkZWxlZ2F0b3JJbmZvCiAgfQp9CgphY2Nlc3MoYWxsKXN0cnVjdCBOb2RlSW5mbyB7CiAgYWNjZXNzKGFsbClsZXQgaWQ6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IG5ldHdvcmtpbmdBZGRyZXNzOiBTdHJpbmcKICBhY2Nlc3MoYWxsKWxldCByb2xlOiBVSW50OAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgCiAgYWNjZXNzKGFsbClsZXQgZGVsZWdhdG9ySURDb3VudGVyOiBVSW50MzIKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IGluaXRpYWxXZWlnaHQ6IFVJbnQ2NAoKICBpbml0KG5vZGVJRDogU3RyaW5nKSB7CiAgICBsZXQgbm9kZUluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8obm9kZUlEOiBub2RlSUQpIAoKICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgc2VsZi5uZXR3b3JraW5nQWRkcmVzcyA9IG5vZGVJbmZvLm5ldHdvcmtpbmdBZGRyZXNzCiAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBub2RlSW5mby50b2tlbnNDb21taXR0ZWQKICAgIHNlbGYudG9rZW5zVW5zdGFraW5nID0gbm9kZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICBzZWxmLnRva2Vuc1Vuc3Rha2VkID0gbm9kZUluZm8udG9rZW5zVW5zdGFrZWQKICAgIHNlbGYudG9rZW5zUmV3YXJkZWQgPSBub2RlSW5mby50b2tlbnNSZXdhcmRlZAogICAgc2VsZi5kZWxlZ2F0b3JJRENvdW50ZXIgPSBub2RlSW5mby5kZWxlZ2F0b3JJRENvdW50ZXIKICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gbm9kZUluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICBzZWxmLmluaXRpYWxXZWlnaHQgPSBub2RlSW5mby5pbml0aWFsV2VpZ2h0CiAgfQp9CgphY2Nlc3MoYWxsKXN0cnVjdCBEZWxlZ2F0b3JJbmZvIHsKICBhY2Nlc3MoYWxsKWxldCBpZDogVUludDMyCiAgYWNjZXNzKGFsbClsZXQgbm9kZUlEOiBTdHJpbmcKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogIGluaXQobm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzIpIHsKICAgIGxldCBkZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCkKCiAgICBzZWxmLmlkID0gZGVsZWdhdG9ySW5mby5pZAogICAgc2VsZi5ub2RlSUQgPSBkZWxlZ2F0b3JJbmZvLm5vZGVJRAogICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgc2VsZi50b2tlbnNTdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1N0YWtlZAogICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zUmV3YXJkZWQKICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IGRlbGVnYXRvckluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgfQp9CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBSZXN1bHQgewogIGxldCB0b2tlbkhvbGRlclJlZiA9IAogICAgICBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogICAgICAgICAgLmJvcnJvdzwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPihmcm9tOiBMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXJTdG9yYWdlUGF0aCkKCiAgdmFyIHN0YWtpbmdJbmZvOiBTdGFraW5nSW5mbz8gPSBuaWwKICBpZiBsZXQgdG9rZW5Ib2xkZXIgPSB0b2tlbkhvbGRlclJlZiB7CiAgICBsZXQgbG9ja2VkQWRkcmVzcyA9IHRva2VuSG9sZGVyLmdldExvY2tlZEFjY291bnRBZGRyZXNzKCkgICAgICAgCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IHRva2VuSG9sZGVyLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIGxldCB1bmxvY2tMaW1pdCA9IHRva2VuSG9sZGVyLmdldFVubG9ja0xpbWl0KCkKICAgIAogICAgdmFyIG5vZGVJbmZvOiBOb2RlSW5mbz8gPSBuaWwKICAgIGlmIGxldCBub2RlSUQgPSB0b2tlbkhvbGRlci5nZXROb2RlSUQoKSB7CiAgICAgIG5vZGVJbmZvID0gTm9kZUluZm8obm9kZUlEOiBub2RlSUQpCiAgICB9CgogICAgdmFyIGRlbGVnYXRvck5vZGVJbmZvOiBOb2RlSW5mbz8gPSBuaWwKICAgIHZhciBkZWxlZ2F0b3JJbmZvOiBEZWxlZ2F0b3JJbmZvPyA9IG5pbAogICAgaWYgbGV0IGRlbGVnYXRvck5vZGVJRCA9IHRva2VuSG9sZGVyLmdldERlbGVnYXRvck5vZGVJRCgpIHsKICAgICAgaWYgbGV0IGRlbGVnYXRvcklEID0gdG9rZW5Ib2xkZXIuZ2V0RGVsZWdhdG9ySUQoKSB7CiAgICAgICAgZGVsZWdhdG9yTm9kZUluZm8gPSBOb2RlSW5mbyhub2RlSUQ6IGRlbGVnYXRvck5vZGVJRCkKICAgICAgICBkZWxlZ2F0b3JJbmZvID0gRGVsZWdhdG9ySW5mbyhub2RlSUQ6IGRlbGVnYXRvck5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQogICAgICB9IAogICAgfSAKCiAgICBsZXQgZXBvY2hJbmZvOiBFcG9jaEluZm8gPSBFcG9jaEluZm8oCiAgICAgIGN1cnJlbnRFcG9jaENvdW50ZXI6IEZsb3dFcG9jaC5jdXJyZW50RXBvY2hDb3VudGVyLAogICAgICBjdXJyZW50RXBvY2hQaGFzZTogRmxvd0Vwb2NoLmN1cnJlbnRFcG9jaFBoYXNlLnJhd1ZhbHVlCiAgICApCgogICAgc3Rha2luZ0luZm8gPSBTdGFraW5nSW5mbygKICAgICAgZXBvY2hJbmZvOiBlcG9jaEluZm8sCiAgICAgIGxvY2tlZEFkZHJlc3M6IGxvY2tlZEFkZHJlc3MsCiAgICAgIGxvY2tlZEJhbGFuY2U6IGxvY2tlZEJhbGFuY2UsCiAgICAgIHVubG9ja0xpbWl0OiB1bmxvY2tMaW1pdCwKICAgICAgbm9kZUluZm86IG5vZGVJbmZvLAogICAgICBkZWxlZ2F0b3JOb2RlSW5mbzogZGVsZWdhdG9yTm9kZUluZm8sCiAgICAgIGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8gCiAgICApCiAgfQoKICByZXR1cm4gUmVzdWx0KHN0YWtpbmdJbmZvOiBzdGFraW5nSW5mbykKfQ==", - "restakeReward": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICByZXN0YWtlUmV3YXJkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gQ29tbWl0cyByZXdhcmRlZCB0b2tlbnMgdG8gc3Rha2UgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnN0YWtlUmV3YXJkZWRUb2tlbnMobm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCwgYW1vdW50OiBhbW91bnQpCiAgICB9Cn0=", - "restakeUnstaked": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICByZXN0YWtlVW5zdGFrZWQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKLy8vIENvbW1pdHMgdW5zdGFrZWQgdG9rZW5zIHRvIHN0YWtlIGZvciB0aGUgc3BlY2lmaWVkIG5vZGUgb3IgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5zdGFrZVVuc3Rha2VkVG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", - "setup": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZXR1cCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBzZXRzIHVwIGFuIGFjY291bnQgdG8gdXNlIGEgc3Rha2luZyBjb2xsZWN0aW9uCi8vLyBJdCB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgaGF2ZSBhIHJlZ3VsYXIgYWNjb3VudCwgYSB0d28tYWNjb3VudCBsb2NrZWQgdG9rZW5zIHNldHVwLAovLy8gb3Igc3Rha2luZyBvYmplY3RzIHN0b3JlZCBpbiB0aGUgdW5sb2NrZWQgYWNjb3VudAoKdHJhbnNhY3Rpb24gewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKCiAgICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgYWxyZWFkeSBhIHN0YWtpbmcgY29sbGVjdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkgPT0gbmlsIHsKCiAgICAgICAgICAgIC8vIENyZWF0ZSBwcml2YXRlIGNhcGFiaWxpdGllcyBmb3IgdGhlIHRva2VuIGhvbGRlciBhbmQgdW5sb2NrZWQgdmF1bHQKICAgICAgICAgICAgbGV0IGxvY2tlZEhvbGRlciA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcsIExvY2tlZFRva2Vucy5Ub2tlbk9wZXJhdGlvbnMpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKSEKICAgICAgICAgICAgbGV0IGZsb3dUb2tlbiA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KSEKCiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBTdGFraW5nIENvbGxlY3Rpb24gYW5kIHB1dCBpdCBpbiBzdG9yYWdlCiAgICAgICAgICAgIGlmIGxvY2tlZEhvbGRlci5jaGVjaygpIHsKICAgICAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoCiAgICAgICAgICAgICAgICAgICAgPC0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmNyZWF0ZVN0YWtpbmdDb2xsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICB1bmxvY2tlZFZhdWx0OiBmbG93VG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuSG9sZGVyOiBsb2NrZWRIb2xkZXIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIHRvOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSgKICAgICAgICAgICAgICAgICAgICA8LSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uY3JlYXRlU3Rha2luZ0NvbGxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja2VkVmF1bHQ6IGZsb3dUb2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5Ib2xkZXI6IG5pbAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgdG86IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFB1Ymxpc2ggYSBjYXBhYmlsaXR5IHRvIHRoZSBjcmVhdGVkIHN0YWtpbmcgY29sbGVjdGlvbi4KICAgICAgICAgICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KAogICAgICAgICAgICAgICAgRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgKICAgICAgICAgICAgKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICAgICAgc3Rha2luZ0NvbGxlY3Rpb25DYXAsCiAgICAgICAgICAgICAgICBhdDogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uUHVibGljUGF0aAogICAgICAgICAgICApCiAgICAgICAgfQoKICAgICAgICAvLyBib3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBzdGFraW5nIGNvbGxlY3Rpb24gcmVmZXJlbmNlIikKCiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBub2RlIHN0YWtlciBvYmplY3QgaW4gdGhlIGFjY291bnQsIHB1dCBpdCBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93SURUYWJsZVN0YWtpbmcuTm9kZVN0YWtlcj4oZnJvbTogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVTdGFrZXJTdG9yYWdlUGF0aCkgIT0gbmlsIHsKICAgICAgICAgICAgbGV0IG5vZGUgPC0gc2lnbmVyLnN0b3JhZ2UubG9hZDxARmxvd0lEVGFibGVTdGFraW5nLk5vZGVTdGFrZXI+KGZyb206IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlU3Rha2VyU3RvcmFnZVBhdGgpIQogICAgICAgICAgICBjb2xsZWN0aW9uUmVmLmFkZE5vZGVPYmplY3QoPC1ub2RlLCBtYWNoaW5lQWNjb3VudEluZm86IG5pbCkKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZXJlIGlzIGEgZGVsZWdhdG9yIG9iamVjdCBpbiB0aGUgYWNjb3VudCwgcHV0IGl0IGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlRGVsZWdhdG9yPihmcm9tOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9yU3RvcmFnZVBhdGgpICE9IG5pbCB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3IgPC0gc2lnbmVyLnN0b3JhZ2UubG9hZDxARmxvd0lEVGFibGVTdGFraW5nLk5vZGVEZWxlZ2F0b3I+KGZyb206IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JTdG9yYWdlUGF0aCkhCiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWYuYWRkRGVsZWdhdG9yT2JqZWN0KDwtZGVsZWdhdG9yKQogICAgICAgIH0KICAgIH0KfQ==", - "unstake": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB1bnN0YWtlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVxdWVzdHMgdW5zdGFraW5nIGZvciB0aGUgc3BlY2lmaWVkIG5vZGUgb3IgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5yZXF1ZXN0VW5zdGFraW5nKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", - "withdrawLocked": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB3aXRoZHJhd0xvY2tlZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RlVOR0lCTEVUT0tFTkFERFJFU1MKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4RkxPV1RPS0VOQUREUkVTUwppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMT0NLRURUT0tFTkFERFJFU1MKCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0KSB7CgogICAgbGV0IGhvbGRlclJlZjogYXV0aChMb2NrZWRUb2tlbnMuVG9rZW5PcGVyYXRpb25zLCBGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyCiAgICBsZXQgdmF1bHRSZWY6IGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoYWNjdDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmhvbGRlclJlZiA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChMb2NrZWRUb2tlbnMuVG9rZW5PcGVyYXRpb25zLCBGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPihmcm9tOiBMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIlRoZSBwcmltYXJ5IHVzZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgbG9ja2VkIGFjY291bnQiKQoKICAgICAgICBzZWxmLnZhdWx0UmVmID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBmbG93IHRva2VuIHZhdWx0IHJlZiIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi52YXVsdFJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5ob2xkZXJSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpKQogICAgfQp9", - "withdrawReward": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB3aXRoZHJhd1Jld2FyZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVxdWVzdCB0byB3aXRoZHJhdyByZXdhcmRlZCB0b2tlbnMgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLy8gVGhlIHRva2VucyBhcmUgYXV0b21hdGljYWxseSBkZXBvc2l0ZWQgdG8gdGhlIHVubG9ja2VkIGFjY291bnQgdmF1bHQgZmlyc3QsCi8vLyBBbmQgdGhlbiBhbnkgbG9ja2VkIHRva2VucyBhcmUgZGVwb3NpdGVkIGludG8gdGhlIGxvY2tlZCBhY2NvdW50IHZhdWx0Cgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8sIGFtb3VudDogVUZpeDY0KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYud2l0aGRyYXdSZXdhcmRlZFRva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==", - "withdrawUnstaked": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB3aXRoZHJhd1Vuc3Rha2VkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVxdWVzdCB0byB3aXRoZHJhdyB1bnN0YWtlZCB0b2tlbnMgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLy8gVGhlIHRva2VucyBhcmUgYXV0b21hdGljYWxseSBkZXBvc2l0ZWQgdG8gdGhlIHVubG9ja2VkIGFjY291bnQgdmF1bHQgZmlyc3QsCi8vLyBBbmQgdGhlbiBhbnkgbG9ja2VkIHRva2VucyBhcmUgZGVwb3NpdGVkIGludG8gdGhlIGxvY2tlZCBhY2NvdW50IHZhdWx0IGlmIGl0IGlzIHRoZXJlCgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8sIGFtb3VudDogVUZpeDY0KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYud2l0aGRyYXdVbnN0YWtlZFRva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==" + "checkSetup": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2hlY2tTZXR1cCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKLy8vIERldGVybWluZXMgaWYgYW4gYWNjb3VudCBpcyBzZXQgdXAgd2l0aCBhIFN0YWtpbmcgQ29sbGVjdGlvbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IEJvb2wgewogICAgcmV0dXJuIEZsb3dTdGFraW5nQ29sbGVjdGlvbi5kb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbihhZGRyZXNzOiBhZGRyZXNzKQp9", + "checkStakingEnabled": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2hlY2tTdGFraW5nRW5hYmxlZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKTpCb29sIHsKICAgIHJldHVybiBGbG93SURUYWJsZVN0YWtpbmcuc3Rha2luZ0VuYWJsZWQoKQp9", + "closeStake": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY2xvc2VTdGFrZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4Rmxvd1N0YWtpbmdDb2xsZWN0aW9uCgovLyBDbG9zZXMgb3V0IGEgc3Rha2luZyBvYmplY3QgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLyBUaGlzIGRvZXMgbm90IHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gdGhlIGlkZW50aXR5IHRhYmxlLAovLyBidXQgaXQgZG9lcyBtZWFuIHRoYXQgdGhlIGFjY291bnQgdGhhdCBjbG9zZXMgaXQgY2Fubm90IGV2ZXIgYWNjZXNzIGl0IGFnYWluCgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8pIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5jbG9zZVN0YWtlKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQpCiAgICB9Cn0=", + "createDelegator": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY3JlYXRlRGVsZWdhdG9yIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVnaXN0ZXJzIGEgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24gcmVzb3VyY2UKLy8vIGZvciB0aGUgc3BlY2lmaWVkIG5vZGVJRCBhbmQgdGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gY29tbWl0Cgp0cmFuc2FjdGlvbihpZDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnJlZ2lzdGVyRGVsZWdhdG9yKG5vZGVJRDogaWQsIGFtb3VudDogYW1vdW50KSAgICAgIAogICAgfQp9", + "createStake": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY3JlYXRlU3Rha2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBDb21taXRzIG5ldyB0b2tlbnMgdG8gc3Rha2UgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLy8gVGhlIHRva2VucyBmcm9tIHRoZSBsb2NrZWQgdmF1bHQgYXJlIHVzZWQgZmlyc3QsIGlmIGl0IGV4aXN0cwovLy8gZm9sbG93ZWQgYnkgdGhlIHRva2VucyBmcm9tIHRoZSB1bmxvY2tlZCB2YXVsdAoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnN0YWtlTmV3VG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", + "getApr": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QXByIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBmdW4gbWFpbigpOiBVRml4NjQgewogICAgbGV0IGFwciA9IEZsb3dJRFRhYmxlU3Rha2luZy5nZXRFcG9jaFRva2VuUGF5b3V0KCkgLyBGbG93SURUYWJsZVN0YWtpbmcuZ2V0VG90YWxTdGFrZWQoKSAvIDcuMCAqIDM2NS4wICogKDEuMCAtIEZsb3dJRFRhYmxlU3Rha2luZy5nZXRSZXdhcmRDdXRQZXJjZW50YWdlKCkpCiAgICByZXR1cm4gYXByCn0=", + "getApyWeekly": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QXB5V2Vla2x5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBmdW4gbWFpbigpOiBVRml4NjQgewogICAgbGV0IGFwciA9IEZsb3dJRFRhYmxlU3Rha2luZy5nZXRFcG9jaFRva2VuUGF5b3V0KCkgLyBGbG93SURUYWJsZVN0YWtpbmcuZ2V0VG90YWxTdGFrZWQoKSAqIDU0LjAgKiAoMS4wIC0gRmxvd0lEVGFibGVTdGFraW5nLmdldFJld2FyZEN1dFBlcmNlbnRhZ2UoKSkKICAgIHJldHVybiBhcHIKfQ==", + "getDelegatesIndo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5kbyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgRGVsZWdhdGVJbmZvIHsKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0b3JJRDogVUludDMyCiAgICBhY2Nlc3MoYWxsKSBsZXQgbm9kZUlEOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgLy8gUHJvamVjdGVkIFZhbHVlcwoKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcm9sZTogVUludDgKICAgIGFjY2VzcyhhbGwpIGxldCB1bnN0YWthYmxlVG9rZW5zOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0ZWROb2RlSW5mbzogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvCiAgICBhY2Nlc3MoYWxsKSBsZXQgcmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zOiBVRml4NjQKCiAgICBpbml0KGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKSB7CiAgICAgICAgc2VsZi5kZWxlZ2F0b3JJRCA9IGRlbGVnYXRvckluZm8uaWQKICAgICAgICBzZWxmLm5vZGVJRCA9IGRlbGVnYXRvckluZm8ubm9kZUlECiAgICAgICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYudG9rZW5zU3Rha2VkID0gZGVsZWdhdG9ySW5mby50b2tlbnNTdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Vuc3Rha2luZyA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgLy8gUHJvamVjdGVkIFZhbHVlcwogICAgICAgIGxldCBub2RlSW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IGRlbGVnYXRvckluZm8ubm9kZUlEKQogICAgICAgIHNlbGYuZGVsZWdhdGVkTm9kZUluZm8gPSBub2RlSW5mbwogICAgICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgICAgICBzZWxmLnVuc3Rha2FibGVUb2tlbnMgPSBzZWxmLnRva2Vuc1N0YWtlZCArIHNlbGYudG9rZW5zQ29tbWl0dGVkCiAgICAgICAgc2VsZi5yZXN0YWthYmxlVW5zdGFrZWRUb2tlbnMgPSBzZWxmLnRva2Vuc1Vuc3Rha2VkICsgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IHtTdHJpbmc6IHtVSW50MzI6IERlbGVnYXRlSW5mb319PyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGRlbGVnYXRvcklEczogW0Zsb3dTdGFraW5nQ29sbGVjdGlvbi5EZWxlZ2F0b3JJRHNdID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmdldERlbGVnYXRvcklEcyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIGxldCBmb3JtYXR0ZWREZWxlZ2F0b3JJbmZvOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fSA9IHt9CgogICAgZm9yIGRlbGVnYXRvcklEIGluIGRlbGVnYXRvcklEcyB7CiAgICAgICAgaWYgbGV0IF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvID0gZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgX2Zvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9ySURdID0gRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdID0geyBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRDogRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZm9ybWF0dGVkRGVsZWdhdG9ySW5mbwp9Cg==", + "getDelegatesInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5mbyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgRGVsZWdhdGVJbmZvIHsKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0b3JJRDogVUludDMyCiAgICBhY2Nlc3MoYWxsKSBsZXQgbm9kZUlEOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgLy8gUHJvamVjdGVkIFZhbHVlcwoKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcm9sZTogVUludDgKICAgIGFjY2VzcyhhbGwpIGxldCB1bnN0YWthYmxlVG9rZW5zOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0ZWROb2RlSW5mbzogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvCiAgICBhY2Nlc3MoYWxsKSBsZXQgcmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zOiBVRml4NjQKCiAgICBpbml0KGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKSB7CiAgICAgICAgc2VsZi5kZWxlZ2F0b3JJRCA9IGRlbGVnYXRvckluZm8uaWQKICAgICAgICBzZWxmLm5vZGVJRCA9IGRlbGVnYXRvckluZm8ubm9kZUlECiAgICAgICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYudG9rZW5zU3Rha2VkID0gZGVsZWdhdG9ySW5mby50b2tlbnNTdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Vuc3Rha2luZyA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgLy8gUHJvamVjdGVkIFZhbHVlcwogICAgICAgIGxldCBub2RlSW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IGRlbGVnYXRvckluZm8ubm9kZUlEKQogICAgICAgIHNlbGYuZGVsZWdhdGVkTm9kZUluZm8gPSBub2RlSW5mbwogICAgICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgICAgICBzZWxmLnVuc3Rha2FibGVUb2tlbnMgPSBzZWxmLnRva2Vuc1N0YWtlZCArIHNlbGYudG9rZW5zQ29tbWl0dGVkCiAgICAgICAgc2VsZi5yZXN0YWthYmxlVW5zdGFrZWRUb2tlbnMgPSBzZWxmLnRva2Vuc1Vuc3Rha2VkICsgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IHtTdHJpbmc6IHtVSW50MzI6IERlbGVnYXRlSW5mb319PyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGRlbGVnYXRvcklEczogW0Zsb3dTdGFraW5nQ29sbGVjdGlvbi5EZWxlZ2F0b3JJRHNdID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmdldERlbGVnYXRvcklEcyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIGxldCBmb3JtYXR0ZWREZWxlZ2F0b3JJbmZvOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fSA9IHt9CgogICAgZm9yIGRlbGVnYXRvcklEIGluIGRlbGVnYXRvcklEcyB7CiAgICAgICAgaWYgbGV0IF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvID0gZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgX2Zvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9ySURdID0gRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdID0geyBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRDogRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZm9ybWF0dGVkRGVsZWdhdG9ySW5mbwp9", + "getDelegatesInfoArray": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5mb0FycmF5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKICAgICAgICAKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mb10gewogICAgcmV0dXJuIEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxEZWxlZ2F0b3JJbmZvKGFkZHJlc3M6IGFkZHJlc3MpCn0=", + "getDelegatesInfoArrayV2": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5mb0FycmF5VjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwogICAgICAgIAphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW0Zsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvXT8gewogICAgdmFyIHJlczogW0Zsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvXT8gPSBuaWwKCiAgICBsZXQgaW5pdGVkID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFkZHJlc3MpCgogICAgaWYgaW5pdGVkIHsKICAgICAgICByZXMgPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsRGVsZWdhdG9ySW5mbyhhZGRyZXNzOiBhZGRyZXNzKQogICAgfQogICAgcmV0dXJuIHJlcwp9", + "getDelegatorInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RGVsZWdhdG9ySW5mbyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzIpOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyB7CiAgcmV0dXJuIEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQpCn0=", + "getEpochMetadata": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0RXBvY2hNZXRhZGF0YSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dFcG9jaCBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oZXBvY2hDb3VudGVyOiBVSW50NjQpOiBGbG93RXBvY2guRXBvY2hNZXRhZGF0YSB7CiAgICByZXR1cm4gRmxvd0Vwb2NoLmdldEVwb2NoTWV0YWRhdGEoZXBvY2hDb3VudGVyKSEKfQ==", + "getNodeInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Tm9kZUluZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKG5vZGVJRDogU3RyaW5nKTogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvIHsKICByZXR1cm4gRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvKG5vZGVJRDogbm9kZUlEKQp9", + "getNodesInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0Tm9kZXNJbmZvIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIHN0cnVjdCBTdW1tYXJ5U3Rha2VEZWxlZ2F0ZUluZm8gewoKICAgIGFjY2VzcyhhbGwpIHZhciBub2RlQ291bnQ6IFVJbnQ2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlQ291bnQ6IFVJbnQ2NAoKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHRvdGFsVG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc0NvbW1pdHRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgc3Rha2VUb2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKCiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBkZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNVbnN0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIGluaXQoYWxsTm9kZUluZm86IFtGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm9dLCBhbGxEZWxlZ2F0ZUluZm86IFtGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mb10pIHsKCiAgICAgICAgc2VsZi5ub2RlQ291bnQgPSBVSW50NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlQ291bnQgPSBVSW50NjQoMCkKCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1N0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Jld2FyZGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IFVGaXg2NCgwKQoKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zU3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc0NvbW1pdHRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuc3Rha2VUb2tlbnNVbnN0YWtpbmcgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmV3YXJkZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gVUZpeDY0KDApCgogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNTdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZyA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNSZXdhcmRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBVRml4NjQoMCkKCiAgICAgICAgZm9yIG5vZGVJbmZvIGluIGFsbE5vZGVJbmZvIHsKICAgICAgICAgICAgc2VsZi5ub2RlQ291bnQgPSBzZWxmLm5vZGVDb3VudCArIDEKCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNTdGFrZWQgPSBzZWxmLnRvdGFsVG9rZW5zU3Rha2VkICsgbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgPSBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkICsgbm9kZUluZm8udG9rZW5zQ29tbWl0dGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtpbmcgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nICsgbm9kZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtlZCA9IHNlbGYudG90YWxUb2tlbnNVbnN0YWtlZCArIG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCA9IHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCArIG5vZGVJbmZvLnRva2Vuc1Jld2FyZGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlICsgbm9kZUluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCgogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zU3Rha2VkID0gc2VsZi5zdGFrZVRva2Vuc1N0YWtlZCArIG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zQ29tbWl0dGVkID0gc2VsZi5zdGFrZVRva2Vuc0NvbW1pdHRlZCArIG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFraW5nID0gc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2luZyArIG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFrZWQgPSBzZWxmLnN0YWtlVG9rZW5zVW5zdGFrZWQgKyBub2RlSW5mby50b2tlbnNVbnN0YWtlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmV3YXJkZWQgPSBzZWxmLnN0YWtlVG9rZW5zUmV3YXJkZWQgKyBub2RlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi5zdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIG5vZGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQogICAgICAgIH0KCiAgICAgICAgZm9yIGRlbGVnYXRlSW5mbyBpbiBhbGxEZWxlZ2F0ZUluZm8gewogICAgICAgICAgICBzZWxmLmRlbGVnYXRlQ291bnQgPSBzZWxmLmRlbGVnYXRlQ291bnQgKyAxCgogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zU3Rha2VkID0gc2VsZi50b3RhbFRva2Vuc1N0YWtlZCArIGRlbGVnYXRlSW5mby50b2tlbnNTdGFrZWQKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc0NvbW1pdHRlZCA9IHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zQ29tbWl0dGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtpbmcgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Jld2FyZGVkID0gc2VsZi50b3RhbFRva2Vuc1Jld2FyZGVkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Jld2FyZGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlICsgZGVsZWdhdGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQoKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1N0YWtlZCA9IHNlbGYuZGVsZWdhdGVUb2tlbnNTdGFrZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNDb21taXR0ZWQgPSBzZWxmLmRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkICsgZGVsZWdhdGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zVW5zdGFraW5nID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZyArIGRlbGVnYXRlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2VkID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2VkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNSZXdhcmRlZCA9IHNlbGYuZGVsZWdhdGVUb2tlbnNSZXdhcmRlZCArIGRlbGVnYXRlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIGRlbGVnYXRlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgICAgICB9CgogICAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhY2NvdW50OiBBZGRyZXNzKTogU3VtbWFyeVN0YWtlRGVsZWdhdGVJbmZvPyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGFsbE5vZGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxOb2RlSW5mbyhhZGRyZXNzOiBhY2NvdW50KQogICAgbGV0IGFsbERlbGVnYXRlSW5mbzogW0Zsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxEZWxlZ2F0b3JJbmZvKGFkZHJlc3M6IGFjY291bnQpCgogICAgcmV0dXJuIFN1bW1hcnlTdGFrZURlbGVnYXRlSW5mbyhhbGxOb2RlSW5mbzogYWxsTm9kZUluZm8sIGFsbERlbGVnYXRlSW5mbzogYWxsRGVsZWdhdGVJbmZvKQp9Cg==", + "getStakeInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0U3Rha2VJbmZvIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCmFjY2VzcyhhbGwpIHN0cnVjdCBTdGFrZUluZm8gewogICAgYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCByb2xlOiBVSW50OAogICAgYWNjZXNzKGFsbCkgbGV0IG5ldHdvcmtpbmdBZGRyZXNzOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBuZXR3b3JraW5nS2V5OiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBzdGFraW5nS2V5OiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRvdGFsVG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Jld2FyZGVkOiBVRml4NjQKCiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9yc0NudDogSW50CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9ySURDb3VudGVyOiBVSW50MzIKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IGluaXRpYWxXZWlnaHQ6IFVJbnQ2NAoKICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgIGFjY2VzcyhhbGwpIGxldCBub2RlSUQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHVuc3Rha2FibGVUb2tlbnM6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc0RlbGVnYXRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgcmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zOiBVRml4NjQKCiAgICBhY2Nlc3MoYWxsKSBsZXQgbWFjaGluZUFjY291bnRBZGRyZXNzOiBBZGRyZXNzPwogICAgYWNjZXNzKGFsbCkgbGV0IG1hY2hpbmVBY2NvdW50QmFsYW5jZTogVUZpeDY0PwoKICAgIGluaXQobm9kZUluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbywgbWFjaGluZUFjY291bnRJbmZvOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uTWFjaGluZUFjY291bnRJbmZvPykgewogICAgICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgICAgICBzZWxmLm5ldHdvcmtpbmdBZGRyZXNzID0gbm9kZUluZm8ubmV0d29ya2luZ0FkZHJlc3MKICAgICAgICBzZWxmLm5ldHdvcmtpbmdLZXkgPSBub2RlSW5mby5uZXR3b3JraW5nS2V5CiAgICAgICAgc2VsZi5zdGFraW5nS2V5ID0gbm9kZUluZm8uc3Rha2luZ0tleQogICAgICAgIHNlbGYudG9rZW5zU3Rha2VkID0gbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1N0YWtlZCA9IG5vZGVJbmZvLnRvdGFsU3Rha2VkV2l0aERlbGVnYXRvcnMoKQogICAgICAgIHNlbGYudG9rZW5zQ29tbWl0dGVkID0gbm9kZUluZm8udG9rZW5zQ29tbWl0dGVkCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBub2RlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICBzZWxmLnRva2Vuc1Vuc3Rha2VkID0gbm9kZUluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gbm9kZUluZm8udG9rZW5zUmV3YXJkZWQKCiAgICAgICAgc2VsZi5kZWxlZ2F0b3JzQ250ID0gbm9kZUluZm8uZGVsZWdhdG9ycy5sZW5ndGggCiAgICAgICAgc2VsZi5kZWxlZ2F0b3JJRENvdW50ZXIgPSBub2RlSW5mby5kZWxlZ2F0b3JJRENvdW50ZXIKICAgICAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IG5vZGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQogICAgICAgIHNlbGYuaW5pdGlhbFdlaWdodCA9IG5vZGVJbmZvLmluaXRpYWxXZWlnaHQKCiAgICAgICAgLy8gUHJvamVjdGVkIFZhbHVlcwogICAgICAgIHNlbGYubm9kZUlEID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnVuc3Rha2FibGVUb2tlbnMgPSBzZWxmLnRva2Vuc1N0YWtlZCArIHNlbGYudG9rZW5zQ29tbWl0dGVkCiAgICAgICAgbGV0IG5vZGVTdGFrZWRCYWxhbmNlV2l0aERlbGVnYXRvcnMgPSBub2RlSW5mby50b3RhbFN0YWtlZFdpdGhEZWxlZ2F0b3JzKCkKICAgICAgICBzZWxmLnRva2Vuc0RlbGVnYXRlZCA9IG5vZGVTdGFrZWRCYWxhbmNlV2l0aERlbGVnYXRvcnMgLSBub2RlSW5mby50b2tlbnNTdGFrZWQKICAgICAgICBzZWxmLnJlc3Rha2FibGVVbnN0YWtlZFRva2VucyA9IHNlbGYudG9rZW5zVW5zdGFrZWQgKyBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQoKICAgICAgICBpZiBsZXQgX21hY2hpbmVBY2NvdW50SW5mbyA9IG1hY2hpbmVBY2NvdW50SW5mbyB7CiAgICAgICAgICAgIGxldCBfbWFjaGluZUFjY291bnRBZGRyZXNzID0gX21hY2hpbmVBY2NvdW50SW5mby5nZXRBZGRyZXNzKCkKCiAgICAgICAgICAgIGxldCBtYWNoaW5lQWNjb3VudCA9IGdldEFjY291bnQoX21hY2hpbmVBY2NvdW50QWRkcmVzcykKCiAgICAgICAgICAgIHNlbGYubWFjaGluZUFjY291bnRBZGRyZXNzID0gX21hY2hpbmVBY2NvdW50QWRkcmVzcwogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QmFsYW5jZSA9IG1hY2hpbmVBY2NvdW50LmJhbGFuY2UKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QWRkcmVzcyA9IG5pbAogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QmFsYW5jZSA9IG5pbAogICAgICAgIH0KICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IHtTdHJpbmc6IFN0YWtlSW5mb30/IHsKICAgIGxldCBkb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbiA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5kb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbihhZGRyZXNzOiBhY2NvdW50KQogICAgaWYgKCFkb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbikgewogICAgICAgIHJldHVybiBuaWwKICAgIH0KCiAgICBsZXQgZm9ybWF0dGVkTm9kZUluZm86IHtTdHJpbmc6IFN0YWtlSW5mb30gPSB7fQogICAgbGV0IGFsbE5vZGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxOb2RlSW5mbyhhZGRyZXNzOiBhY2NvdW50KQogICAgbGV0IG1hY2hpbmVBY2NvdW50czoge1N0cmluZzogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLk1hY2hpbmVBY2NvdW50SW5mb30gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0TWFjaGluZUFjY291bnRzKGFkZHJlc3M6IGFjY291bnQpCgogICAgZm9yIG5vZGVJbmZvIGluIGFsbE5vZGVJbmZvIHsKICAgICAgICBmb3JtYXR0ZWROb2RlSW5mb1tub2RlSW5mby5pZF0gPSBTdGFrZUluZm8obm9kZUluZm86IG5vZGVJbmZvLCBtYWNoaW5lQWNjb3VudEluZm86IG1hY2hpbmVBY2NvdW50c1tub2RlSW5mby5pZF0pCiAgICB9CgogICAgcmV0dXJuIGZvcm1hdHRlZE5vZGVJbmZvCn0K", + "getStakingInfo": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0U3Rha2luZ0luZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgRmxvd0Vwb2NoIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKXN0cnVjdCBFcG9jaEluZm8gewogIGFjY2VzcyhhbGwpbGV0IGN1cnJlbnRFcG9jaENvdW50ZXI6IFVJbnQ2NAogIGFjY2VzcyhhbGwpbGV0IGN1cnJlbnRFcG9jaFBoYXNlOiBVSW50OAoKICBpbml0KAogICAgICBjdXJyZW50RXBvY2hDb3VudGVyOiBVSW50NjQsCiAgICAgIGN1cnJlbnRFcG9jaFBoYXNlOiBVSW50OAogICkgewogICAgICBzZWxmLmN1cnJlbnRFcG9jaENvdW50ZXIgPSBjdXJyZW50RXBvY2hDb3VudGVyCiAgICAgIHNlbGYuY3VycmVudEVwb2NoUGhhc2UgPSBjdXJyZW50RXBvY2hQaGFzZQogIH0KfQoKYWNjZXNzKGFsbClzdHJ1Y3QgUmVzdWx0IHsKICBhY2Nlc3MoYWxsKWxldCBzdGFraW5nSW5mbzogU3Rha2luZ0luZm8/CgogIGluaXQoc3Rha2luZ0luZm86IFN0YWtpbmdJbmZvPykgewogICAgc2VsZi5zdGFraW5nSW5mbyA9IHN0YWtpbmdJbmZvCiAgfQp9CgphY2Nlc3MoYWxsKXN0cnVjdCBTdGFraW5nSW5mbyB7CiAgYWNjZXNzKGFsbClsZXQgZXBvY2hJbmZvOiBFcG9jaEluZm8KICBhY2Nlc3MoYWxsKWxldCBsb2NrZWRBZGRyZXNzOiBBZGRyZXNzICAgCiAgYWNjZXNzKGFsbClsZXQgbG9ja2VkQmFsYW5jZTogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdW5sb2NrTGltaXQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IG5vZGVJbmZvOiBOb2RlSW5mbz8KICBhY2Nlc3MoYWxsKWxldCBkZWxlZ2F0b3JOb2RlSW5mbzogTm9kZUluZm8/CiAgYWNjZXNzKGFsbClsZXQgZGVsZWdhdG9ySW5mbzogRGVsZWdhdG9ySW5mbz8KCiAgaW5pdCgKICAgIGVwb2NoSW5mbzogRXBvY2hJbmZvLAogICAgbG9ja2VkQWRkcmVzczogQWRkcmVzcywKICAgIGxvY2tlZEJhbGFuY2U6IFVGaXg2NCwKICAgIHVubG9ja0xpbWl0OiBVRml4NjQsCiAgICBub2RlSW5mbzogTm9kZUluZm8/LAogICAgZGVsZWdhdG9yTm9kZUluZm86IE5vZGVJbmZvPywKICAgIGRlbGVnYXRvckluZm86IERlbGVnYXRvckluZm8/LAogICkgewogICAgc2VsZi5lcG9jaEluZm8gPSBlcG9jaEluZm8KICAgIHNlbGYubG9ja2VkQWRkcmVzcyA9IGxvY2tlZEFkZHJlc3MKICAgIHNlbGYubG9ja2VkQmFsYW5jZSA9IGxvY2tlZEJhbGFuY2UKICAgIHNlbGYudW5sb2NrTGltaXQgPSB1bmxvY2tMaW1pdAogICAgc2VsZi5ub2RlSW5mbyA9IG5vZGVJbmZvCiAgICBzZWxmLmRlbGVnYXRvck5vZGVJbmZvID0gZGVsZWdhdG9yTm9kZUluZm8KICAgIHNlbGYuZGVsZWdhdG9ySW5mbyA9IGRlbGVnYXRvckluZm8KICB9Cn0KCmFjY2VzcyhhbGwpc3RydWN0IE5vZGVJbmZvIHsKICBhY2Nlc3MoYWxsKWxldCBpZDogU3RyaW5nCiAgYWNjZXNzKGFsbClsZXQgbmV0d29ya2luZ0FkZHJlc3M6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHJvbGU6IFVJbnQ4CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zU3Rha2VkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICAKICBhY2Nlc3MoYWxsKWxldCBkZWxlZ2F0b3JJRENvdW50ZXI6IFVJbnQzMgogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgaW5pdGlhbFdlaWdodDogVUludDY0CgogIGluaXQobm9kZUlEOiBTdHJpbmcpIHsKICAgIGxldCBub2RlSW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IG5vZGVJRCkgCgogICAgc2VsZi5pZCA9IG5vZGVJbmZvLmlkCiAgICBzZWxmLm5ldHdvcmtpbmdBZGRyZXNzID0gbm9kZUluZm8ubmV0d29ya2luZ0FkZHJlc3MKICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgIHNlbGYudG9rZW5zU3Rha2VkID0gbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICBzZWxmLnRva2Vuc0NvbW1pdHRlZCA9IG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBub2RlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBub2RlSW5mby50b2tlbnNVbnN0YWtlZAogICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IG5vZGVJbmZvLnRva2Vuc1Jld2FyZGVkCiAgICBzZWxmLmRlbGVnYXRvcklEQ291bnRlciA9IG5vZGVJbmZvLmRlbGVnYXRvcklEQ291bnRlcgogICAgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBub2RlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgIHNlbGYuaW5pdGlhbFdlaWdodCA9IG5vZGVJbmZvLmluaXRpYWxXZWlnaHQKICB9Cn0KCmFjY2VzcyhhbGwpc3RydWN0IERlbGVnYXRvckluZm8gewogIGFjY2VzcyhhbGwpbGV0IGlkOiBVSW50MzIKICBhY2Nlc3MoYWxsKWxldCBub2RlSUQ6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc0NvbW1pdHRlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zU3Rha2VkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNVbnN0YWtlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKCiAgaW5pdChub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMikgewogICAgbGV0IGRlbGVnYXRvckluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQoKICAgIHNlbGYuaWQgPSBkZWxlZ2F0b3JJbmZvLmlkCiAgICBzZWxmLm5vZGVJRCA9IGRlbGVnYXRvckluZm8ubm9kZUlECiAgICBzZWxmLnRva2Vuc0NvbW1pdHRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zQ29tbWl0dGVkCiAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zU3Rha2VkCiAgICBzZWxmLnRva2Vuc1Vuc3Rha2luZyA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFraW5nCiAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXdhcmRlZAogICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFrZWQKICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICB9Cn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFJlc3VsdCB7CiAgbGV0IHRva2VuSG9sZGVyUmVmID0gCiAgICAgIGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgICAuYm9ycm93PCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQoKICB2YXIgc3Rha2luZ0luZm86IFN0YWtpbmdJbmZvPyA9IG5pbAogIGlmIGxldCB0b2tlbkhvbGRlciA9IHRva2VuSG9sZGVyUmVmIHsKICAgIGxldCBsb2NrZWRBZGRyZXNzID0gdG9rZW5Ib2xkZXIuZ2V0TG9ja2VkQWNjb3VudEFkZHJlc3MoKSAgICAgICAKICAgIGxldCBsb2NrZWRCYWxhbmNlID0gdG9rZW5Ib2xkZXIuZ2V0TG9ja2VkQWNjb3VudEJhbGFuY2UoKQogICAgbGV0IHVubG9ja0xpbWl0ID0gdG9rZW5Ib2xkZXIuZ2V0VW5sb2NrTGltaXQoKQogICAgCiAgICB2YXIgbm9kZUluZm86IE5vZGVJbmZvPyA9IG5pbAogICAgaWYgbGV0IG5vZGVJRCA9IHRva2VuSG9sZGVyLmdldE5vZGVJRCgpIHsKICAgICAgbm9kZUluZm8gPSBOb2RlSW5mbyhub2RlSUQ6IG5vZGVJRCkKICAgIH0KCiAgICB2YXIgZGVsZWdhdG9yTm9kZUluZm86IE5vZGVJbmZvPyA9IG5pbAogICAgdmFyIGRlbGVnYXRvckluZm86IERlbGVnYXRvckluZm8/ID0gbmlsCiAgICBpZiBsZXQgZGVsZWdhdG9yTm9kZUlEID0gdG9rZW5Ib2xkZXIuZ2V0RGVsZWdhdG9yTm9kZUlEKCkgewogICAgICBpZiBsZXQgZGVsZWdhdG9ySUQgPSB0b2tlbkhvbGRlci5nZXREZWxlZ2F0b3JJRCgpIHsKICAgICAgICBkZWxlZ2F0b3JOb2RlSW5mbyA9IE5vZGVJbmZvKG5vZGVJRDogZGVsZWdhdG9yTm9kZUlEKQogICAgICAgIGRlbGVnYXRvckluZm8gPSBEZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQpCiAgICAgIH0gCiAgICB9IAoKICAgIGxldCBlcG9jaEluZm86IEVwb2NoSW5mbyA9IEVwb2NoSW5mbygKICAgICAgY3VycmVudEVwb2NoQ291bnRlcjogRmxvd0Vwb2NoLmN1cnJlbnRFcG9jaENvdW50ZXIsCiAgICAgIGN1cnJlbnRFcG9jaFBoYXNlOiBGbG93RXBvY2guY3VycmVudEVwb2NoUGhhc2UucmF3VmFsdWUKICAgICkKCiAgICBzdGFraW5nSW5mbyA9IFN0YWtpbmdJbmZvKAogICAgICBlcG9jaEluZm86IGVwb2NoSW5mbywKICAgICAgbG9ja2VkQWRkcmVzczogbG9ja2VkQWRkcmVzcywKICAgICAgbG9ja2VkQmFsYW5jZTogbG9ja2VkQmFsYW5jZSwKICAgICAgdW5sb2NrTGltaXQ6IHVubG9ja0xpbWl0LAogICAgICBub2RlSW5mbzogbm9kZUluZm8sCiAgICAgIGRlbGVnYXRvck5vZGVJbmZvOiBkZWxlZ2F0b3JOb2RlSW5mbywKICAgICAgZGVsZWdhdG9ySW5mbzogZGVsZWdhdG9ySW5mbyAKICAgICkKICB9CgogIHJldHVybiBSZXN1bHQoc3Rha2luZ0luZm86IHN0YWtpbmdJbmZvKQp9", + "restakeReward": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcmVzdGFrZVJld2FyZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBDb21taXRzIHJld2FyZGVkIHRva2VucyB0byBzdGFrZSBmb3IgdGhlIHNwZWNpZmllZCBub2RlIG9yIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8sIGFtb3VudDogVUZpeDY0KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYuc3Rha2VSZXdhcmRlZFRva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==", + "restakeUnstaked": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgcmVzdGFrZVVuc3Rha2VkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gQ29tbWl0cyB1bnN0YWtlZCB0b2tlbnMgdG8gc3Rha2UgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnN0YWtlVW5zdGFrZWRUb2tlbnMobm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCwgYW1vdW50OiBhbW91bnQpCiAgICB9Cn0=", + "setup": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2V0dXAgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIHNldHMgdXAgYW4gYWNjb3VudCB0byB1c2UgYSBzdGFraW5nIGNvbGxlY3Rpb24KLy8vIEl0IHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBoYXZlIGEgcmVndWxhciBhY2NvdW50LCBhIHR3by1hY2NvdW50IGxvY2tlZCB0b2tlbnMgc2V0dXAsCi8vLyBvciBzdGFraW5nIG9iamVjdHMgc3RvcmVkIGluIHRoZSB1bmxvY2tlZCBhY2NvdW50Cgp0cmFuc2FjdGlvbiB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICAvLyBJZiB0aGVyZSBpc24ndCBhbHJlYWR5IGEgc3Rha2luZyBjb2xsZWN0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKSA9PSBuaWwgewoKICAgICAgICAgICAgLy8gQ3JlYXRlIHByaXZhdGUgY2FwYWJpbGl0aWVzIGZvciB0aGUgdG9rZW4gaG9sZGVyIGFuZCB1bmxvY2tlZCB2YXVsdAogICAgICAgICAgICBsZXQgbG9ja2VkSG9sZGVyID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdywgTG9ja2VkVG9rZW5zLlRva2VuT3BlcmF0aW9ucykgJkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcj4oTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyU3RvcmFnZVBhdGgpIQogICAgICAgICAgICBsZXQgZmxvd1Rva2VuID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpIQoKICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IFN0YWtpbmcgQ29sbGVjdGlvbiBhbmQgcHV0IGl0IGluIHN0b3JhZ2UKICAgICAgICAgICAgaWYgbG9ja2VkSG9sZGVyLmNoZWNrKCkgewogICAgICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSgKICAgICAgICAgICAgICAgICAgICA8LSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uY3JlYXRlU3Rha2luZ0NvbGxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja2VkVmF1bHQ6IGZsb3dUb2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5Ib2xkZXI6IGxvY2tlZEhvbGRlcgogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgdG86IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKAogICAgICAgICAgICAgICAgICAgIDwtIEZsb3dTdGFraW5nQ29sbGVjdGlvbi5jcmVhdGVTdGFraW5nQ29sbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrZWRWYXVsdDogZmxvd1Rva2VuLAogICAgICAgICAgICAgICAgICAgICAgICB0b2tlbkhvbGRlcjogbmlsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICB0bzogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUHVibGlzaCBhIGNhcGFiaWxpdHkgdG8gdGhlIGNyZWF0ZWQgc3Rha2luZyBjb2xsZWN0aW9uLgogICAgICAgICAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oCiAgICAgICAgICAgICAgICBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aAogICAgICAgICAgICApCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goCiAgICAgICAgICAgICAgICBzdGFraW5nQ29sbGVjdGlvbkNhcCwKICAgICAgICAgICAgICAgIGF0OiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25QdWJsaWNQYXRoCiAgICAgICAgICAgICkKICAgICAgICB9CgogICAgICAgIC8vIGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCiAgICAgICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHN0YWtpbmcgY29sbGVjdGlvbiByZWZlcmVuY2UiKQoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG5vZGUgc3Rha2VyIG9iamVjdCBpbiB0aGUgYWNjb3VudCwgcHV0IGl0IGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlU3Rha2VyPihmcm9tOiBGbG93SURUYWJsZVN0YWtpbmcuTm9kZVN0YWtlclN0b3JhZ2VQYXRoKSAhPSBuaWwgewogICAgICAgICAgICBsZXQgbm9kZSA8LSBzaWduZXIuc3RvcmFnZS5sb2FkPEBGbG93SURUYWJsZVN0YWtpbmcuTm9kZVN0YWtlcj4oZnJvbTogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVTdGFrZXJTdG9yYWdlUGF0aCkhCiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWYuYWRkTm9kZU9iamVjdCg8LW5vZGUsIG1hY2hpbmVBY2NvdW50SW5mbzogbmlsKQogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWxlZ2F0b3Igb2JqZWN0IGluIHRoZSBhY2NvdW50LCBwdXQgaXQgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRmxvd0lEVGFibGVTdGFraW5nLk5vZGVEZWxlZ2F0b3I+KGZyb206IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JTdG9yYWdlUGF0aCkgIT0gbmlsIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvciA8LSBzaWduZXIuc3RvcmFnZS5sb2FkPEBGbG93SURUYWJsZVN0YWtpbmcuTm9kZURlbGVnYXRvcj4oZnJvbTogRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvclN0b3JhZ2VQYXRoKSEKICAgICAgICAgICAgY29sbGVjdGlvblJlZi5hZGREZWxlZ2F0b3JPYmplY3QoPC1kZWxlZ2F0b3IpCiAgICAgICAgfQogICAgfQp9", + "unstake": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdW5zdGFrZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBSZXF1ZXN0cyB1bnN0YWtpbmcgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnJlcXVlc3RVbnN0YWtpbmcobm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCwgYW1vdW50OiBhbW91bnQpCiAgICB9Cn0=", + "withdrawLocked": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgd2l0aGRyYXdMb2NrZWQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGVU5HSUJMRVRPS0VOQUREUkVTUwppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGTE9XVE9LRU5BRERSRVNTCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweExPQ0tFRFRPS0VOQUREUkVTUwoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKCiAgICBsZXQgaG9sZGVyUmVmOiBhdXRoKExvY2tlZFRva2Vucy5Ub2tlbk9wZXJhdGlvbnMsIEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXIKICAgIGxldCB2YXVsdFJlZjogYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShhY2N0OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuaG9sZGVyUmVmID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKExvY2tlZFRva2Vucy5Ub2tlbk9wZXJhdGlvbnMsIEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiVGhlIHByaW1hcnkgdXNlciBhY2NvdW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBsb2NrZWQgYWNjb3VudCIpCgogICAgICAgIHNlbGYudmF1bHRSZWYgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGZsb3cgdG9rZW4gdmF1bHQgcmVmIikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnZhdWx0UmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLmhvbGRlclJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICB9Cn0=", + "withdrawReward": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgd2l0aGRyYXdSZXdhcmQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBSZXF1ZXN0IHRvIHdpdGhkcmF3IHJld2FyZGVkIHRva2VucyBmb3IgdGhlIHNwZWNpZmllZCBub2RlIG9yIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCi8vLyBUaGUgdG9rZW5zIGFyZSBhdXRvbWF0aWNhbGx5IGRlcG9zaXRlZCB0byB0aGUgdW5sb2NrZWQgYWNjb3VudCB2YXVsdCBmaXJzdCwKLy8vIEFuZCB0aGVuIGFueSBsb2NrZWQgdG9rZW5zIGFyZSBkZXBvc2l0ZWQgaW50byB0aGUgbG9ja2VkIGFjY291bnQgdmF1bHQKCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi53aXRoZHJhd1Jld2FyZGVkVG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", + "withdrawUnstaked": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgd2l0aGRyYXdVbnN0YWtlZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBSZXF1ZXN0IHRvIHdpdGhkcmF3IHVuc3Rha2VkIHRva2VucyBmb3IgdGhlIHNwZWNpZmllZCBub2RlIG9yIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCi8vLyBUaGUgdG9rZW5zIGFyZSBhdXRvbWF0aWNhbGx5IGRlcG9zaXRlZCB0byB0aGUgdW5sb2NrZWQgYWNjb3VudCB2YXVsdCBmaXJzdCwKLy8vIEFuZCB0aGVuIGFueSBsb2NrZWQgdG9rZW5zIGFyZSBkZXBvc2l0ZWQgaW50byB0aGUgbG9ja2VkIGFjY291bnQgdmF1bHQgaWYgaXQgaXMgdGhlcmUKCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi53aXRoZHJhd1Vuc3Rha2VkVG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9" }, "storage": { - "enableTokenStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBlbmFibGVUb2tlblN0b3JhZ2UgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCY8VG9rZW4+LlZhdWx0Pihmcm9tOiA8VG9rZW5TdG9yYWdlUGF0aD4gKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtIDxUb2tlbj4uY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QDxUb2tlbj4uVmF1bHQ+KCkpLCB0bzogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgIH0KCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuUmVjZWl2ZXJQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8VG9rZW4+LlZhdWx0Pig8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcGFiaWxpdHksIGF0OiA8VG9rZW5SZWNlaXZlclBhdGg+KQogICAgICAgIAogICAgICAgIH0KICAgICAgIAogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlbkJhbGFuY2VQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgYmFsYW5jZUNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGJhbGFuY2VDYXBhYmlsaXR5LCBhdDogPFRva2VuQmFsYW5jZVBhdGg+KQogICAgICAgIH0KICAgIAogICAgfQp9", - "getBasicPublicItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRCYXNpY1B1YmxpY0l0ZW1zIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGFjY2VzcyhhbGwpc3RydWN0IEl0ZW0gewogIGFjY2VzcyhhbGwpbGV0IGFkZHJlc3M6IEFkZHJlc3MKICBhY2Nlc3MoYWxsKWxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKWxldCB0YXJnZXRQYXRoOiBTdHJpbmc/CgogIGluaXQoYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCB0YXJnZXRQYXRoOiBTdHJpbmc/KSB7CiAgICBzZWxmLmFkZHJlc3MgPSBhZGRyZXNzCiAgICBzZWxmLnBhdGggPSBwYXRoCiAgICBzZWxmLnRhcmdldFBhdGggPSB0YXJnZXRQYXRoCiAgfQp9CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbSXRlbV0gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBpdGVtczogW0l0ZW1dID0gW10KCgogIGZ1biBlYWNoUGF0aChwYXRoOiBQdWJsaWNQYXRoLCBjYXBUeXBlOiBUeXBlKTogQm9vbCB7CiAgICAvLyB0b2RvCiAgICBsZXQgY2FwID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuZ2V0PCZBbnlTdHJ1Y3Q+KHBhdGgpCiAgICB2YXIgdGFyZ2V0UGF0aCA9ICIiCgogICAgaWYgY2FwICE9IG5pbCB7CiAgICAgIHRhcmdldFBhdGggPSAiMTIiIAogICAgfQogICAgbGV0IGl0ZW0gPSBJdGVtKGFkZHJlc3M6IGFkZHJlc3MsIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwgdGFyZ2V0UGF0aDogdGFyZ2V0UGF0aCkKICAgIGl0ZW1zLmFwcGVuZChpdGVtKQogICAgcmV0dXJuIHRydWUKICB9CiAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hQdWJsaWMoZWFjaFBhdGgpCgogIHJldHVybiBpdGVtcwp9", - "getPrivateItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRQcml2YXRlSXRlbXMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgYWNjZXNzKGFsbClzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbClsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHR5cGU6IFR5cGUKICBhY2Nlc3MoYWxsKWxldCB0YXJnZXRQYXRoOiBTdHJpbmc/CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLCAKICAgIHBhdGg6IFN0cmluZywgCiAgICB0eXBlOiBUeXBlLCAKICAgIHRhcmdldFBhdGg6IFN0cmluZz8KICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudHlwZSA9IHR5cGUKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICB9Cn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aE1hcDoge1N0cmluZzogQm9vbH0pOiBbSXRlbV0gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICBsZXQgaXRlbXM6IFtJdGVtXSA9IFtdCgogIGFjY291bnQuc3RvcmFnZS5mb3JFYWNoUHJpdmF0ZShmdW4gKHBhdGg6IFByaXZhdGVQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICBpZiAhcGF0aE1hcC5jb250YWluc0tleShwYXRoLnRvU3RyaW5nKCkpIHsKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICB2YXIgdGFyZ2V0UGF0aDogU3RyaW5nPyA9IG5pbAogICAgaWYgbGV0IHRhcmdldCA9IGFjY291bnQuZ2V0TGlua1RhcmdldChwYXRoKSB7CiAgICAgIHRhcmdldFBhdGggPSB0YXJnZXQudG9TdHJpbmcoKQogICAgfQoKICAgIGxldCBpdGVtID0gSXRlbSgKICAgICAgYWRkcmVzczogYWRkcmVzcywKICAgICAgcGF0aDogcGF0aC50b1N0cmluZygpLAogICAgICB0eXBlOiB0eXBlLAogICAgICB0YXJnZXRQYXRoOiB0YXJnZXRQYXRoCiAgICApCgogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gdHJ1ZQogIH0pCgogIHJldHVybiBpdGVtcwp9", - "getPrivatePaths": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRQcml2YXRlUGF0aHMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgYWNjZXNzKGFsbClmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW1ByaXZhdGVQYXRoXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCBjbGVhbmRQYXRoczogW1ByaXZhdGVQYXRoXSA9IFtdCiAgZm9yIHBhdGggaW4gYWNjb3VudC5wcml2YXRlUGF0aHMgewogICAgY2xlYW5kUGF0aHMuYXBwZW5kKHBhdGgpCiAgfQogIHJldHVybiBjbGVhbmRQYXRocwp9", - "getPublicItem": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRQdWJsaWNJdGVtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIC8vIEEgd29ya2Fyb3VuZCBtZXRob2QKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KICAKYWNjZXNzKGFsbCkgc3RydWN0IEl0ZW0gewogIGFjY2VzcyhhbGwpIGxldCBhZGRyZXNzOiBBZGRyZXNzCiAgYWNjZXNzKGFsbCkgbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCB0eXBlOiBUeXBlCgogIGFjY2VzcyhhbGwpIGxldCB0YXJnZXRQYXRoOiBTdHJpbmc/CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLCAKICAgIHBhdGg6IFN0cmluZywgCiAgICB0eXBlOiBUeXBlLCAKICAgIHRhcmdldFBhdGg6IFN0cmluZz8KICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudHlwZSA9IHR5cGUKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhNYXA6IHtTdHJpbmc6IEJvb2x9KTogW0l0ZW1dIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCgogIGxldCBpdGVtczogW0l0ZW1dID0gW10KICBhY2NvdW50LmZvckVhY2hQdWJsaWMoZnVuIChwYXRoOiBQdWJsaWNQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICBpZiAhcGF0aE1hcC5jb250YWluc0tleShwYXRoLnRvU3RyaW5nKCkpIHsKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICB2YXIgdGFyZ2V0UGF0aDogU3RyaW5nPyA9IG5pbAoKICAgIGlmIGxldCB0YXJnZXQgPSBhY2NvdW50LmdldExpbmtUYXJnZXQocGF0aCkgewogICAgICB0YXJnZXRQYXRoID0gdGFyZ2V0LnRvU3RyaW5nKCkKICAgIH0KCiAgICBsZXQgaXRlbSA9IEl0ZW0oCiAgICAgIGFkZHJlc3M6IGFkZHJlc3MsCiAgICAgIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwKICAgICAgdHlwZTogdHlwZSwKICAgICAgdGFyZ2V0UGF0aDogdGFyZ2V0UGF0aAogICAgKQoKICAgIGl0ZW1zLmFwcGVuZChpdGVtKQogICAgcmV0dXJuIGZhbHNlCiAgfSkKCiAgcmV0dXJuIGl0ZW1zCn0=", - "getPublicItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRQdWJsaWNJdGVtcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgogIAphY2Nlc3MoYWxsKSBzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbCkgbGV0IGFkZHJlc3M6IEFkZHJlc3MKICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHR5cGU6IFR5cGUKCiAgYWNjZXNzKGFsbCkgbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgYWNjZXNzKGFsbCkgbGV0IGlzQ29sbGVjdGlvbkNhcDogQm9vbAogIGFjY2VzcyhhbGwpIGxldCB0b2tlbklEczogW1VJbnQ2NF0KCiAgYWNjZXNzKGFsbCkgbGV0IGlzQmFsYW5jZUNhcDogQm9vbAogIGFjY2VzcyhhbGwpIGxldCBiYWxhbmNlOiBVRml4NjQ/CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLCAKICAgIHBhdGg6IFN0cmluZywgCiAgICB0eXBlOiBUeXBlLCAKICAgIHRhcmdldFBhdGg6IFN0cmluZz8sIAogICAgaXNDb2xsZWN0aW9uQ2FwOiBCb29sLCAKICAgIHRva2VuSURzOiBbVUludDY0XSwKICAgIGlzQmFsYW5jZUNhcDogQm9vbCwKICAgIGJhbGFuY2U6IFVGaXg2ND8KICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudHlwZSA9IHR5cGUKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICAgIHNlbGYuaXNDb2xsZWN0aW9uQ2FwID0gaXNDb2xsZWN0aW9uQ2FwCiAgICBzZWxmLnRva2VuSURzID0gdG9rZW5JRHMKICAgIHNlbGYuaXNCYWxhbmNlQ2FwID0gaXNCYWxhbmNlQ2FwCiAgICBzZWxmLmJhbGFuY2UgPSBiYWxhbmNlCiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoTWFwOiB7U3RyaW5nOiBCb29sfSk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQoKICBsZXQgaXRlbXM6IFtJdGVtXSA9IFtdCiAgbGV0IGJhbGFuY2VDYXBUeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZBbnlSZXNvdXJjZXtGdW5naWJsZVRva2VuLkJhbGFuY2V9Pj4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8Q2FwYWJpbGl0eTwmQW55UmVzb3VyY2V7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4+KCkKCiAgYWNjb3VudC5mb3JFYWNoUHVibGljKGZ1biAocGF0aDogUHVibGljUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgaWYgIXBhdGhNYXAuY29udGFpbnNLZXkocGF0aC50b1N0cmluZygpKSB7CiAgICAgIHJldHVybiB0cnVlCiAgICB9CgogICAgdmFyIHRhcmdldFBhdGg6IFN0cmluZz8gPSBuaWwKICAgIHZhciBpc0NvbGxlY3Rpb25DYXAgPSBmYWxzZQogICAgdmFyIGlzQmFsYW5jZUNhcCA9IGZhbHNlCiAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgIHZhciBiYWxhbmNlOiBVRml4NjQ/ID0gbmlsCgogICAgaWYgbGV0IHRhcmdldCA9IGFjY291bnQuZ2V0TGlua1RhcmdldChwYXRoKSB7CiAgICAgIHRhcmdldFBhdGggPSB0YXJnZXQudG9TdHJpbmcoKQogICAgfQoKICAgIGlmICh0eXBlLmlzU3VidHlwZShvZjogYmFsYW5jZUNhcFR5cGUpKSB7CiAgICAgIGlzQmFsYW5jZUNhcCA9IHRydWUKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgICAgLmdldENhcGFiaWxpdHkocGF0aCkKICAgICAgICAgIC5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigpCgogICAgICBpZiBsZXQgdmF1bHQgPSB2YXVsdFJlZiB7CiAgICAgICAgICBiYWxhbmNlID0gdmF1bHQuYmFsYW5jZQogICAgICB9CiAgICB9IGVsc2UgaWYgKHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkpIHsKICAgICAgaXNDb2xsZWN0aW9uQ2FwID0gdHJ1ZQogICAgICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQKICAgICAgICAuZ2V0Q2FwYWJpbGl0eShwYXRoKQogICAgICAgIC5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigpCgogICAgICBpZiBsZXQgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25SZWYgewogICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICB9CiAgICB9CgogICAgbGV0IGl0ZW0gPSBJdGVtKAogICAgICBhZGRyZXNzOiBhZGRyZXNzLAogICAgICBwYXRoOiBwYXRoLnRvU3RyaW5nKCksCiAgICAgIHR5cGU6IHR5cGUsCiAgICAgIHRhcmdldFBhdGg6IHRhcmdldFBhdGgsCiAgICAgIGlzQ29sbGVjdGlvbkNhcDogaXNDb2xsZWN0aW9uQ2FwLAogICAgICB0b2tlbklEczogdG9rZW5JRHMsCiAgICAgIGlzQmFsYW5jZUNhcDogaXNCYWxhbmNlQ2FwLAogICAgICBiYWxhbmNlOiBiYWxhbmNlCiAgICApCgogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gdHJ1ZQogIH0pCgogIHJldHVybiBpdGVtcwp9", - "getPublicPaths": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRQdWJsaWNQYXRocyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtQdWJsaWNQYXRoXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCBjbGVhbmRQYXRoczogW1B1YmxpY1BhdGhdID0gW10KICBmb3IgcGF0aCBpbiBhY2NvdW50LnB1YmxpY1BhdGhzIHsKICAgIGNsZWFuZFBhdGhzLmFwcGVuZChwYXRoKQogIH0KICByZXR1cm4gY2xlYW5kUGF0aHMKfQ==", - "getStoragePaths": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRTdG9yYWdlUGF0aHMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgcHViIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbU3RvcmFnZVBhdGhdIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNsZWFuZFBhdGhzOiBbU3RvcmFnZVBhdGhdID0gW10KICBmb3IgcGF0aCBpbiBhY2NvdW50LnN0b3JhZ2VQYXRocyB7CiAgICBjbGVhbmRQYXRocy5hcHBlbmQocGF0aCkKICB9CiAgcmV0dXJuIGNsZWFuZFBhdGhzCn0=", - "getStoredItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRTdG9yZWRJdGVtcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKcHViIHN0cnVjdCBDb2xsZWN0aW9uRGlzcGxheSB7CiAgcHViIGxldCBuYW1lOiBTdHJpbmcKICBwdWIgbGV0IHNxdWFyZUltYWdlOiBNZXRhZGF0YVZpZXdzLk1lZGlhCgogIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogTWV0YWRhdGFWaWV3cy5NZWRpYSkgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgfQp9CgpwdWIgc3RydWN0IEl0ZW0gewogIHB1YiBsZXQgYWRkcmVzczogQWRkcmVzcwogIHB1YiBsZXQgcGF0aDogU3RyaW5nCiAgcHViIGxldCB0eXBlOiBUeXBlCiAgcHViIGxldCBpc1Jlc291cmNlOiBCb29sCiAgcHViIGxldCBpc05GVENvbGxlY3Rpb246IEJvb2wKICBwdWIgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogIHB1YiBsZXQgdG9rZW5JRHM6IFtVSW50NjRdCiAgcHViIGxldCBpc1ZhdWx0OiBCb29sCiAgcHViIGxldCBiYWxhbmNlOiBVRml4NjQ/CgogIGluaXQoYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCB0eXBlOiBUeXBlLCBpc1Jlc291cmNlOiBCb29sLCAKICAgIGlzTkZUQ29sbGVjdGlvbjogQm9vbCwgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LAogICAgdG9rZW5JRHM6IFtVSW50NjRdLCBpc1ZhdWx0OiBCb29sLCBiYWxhbmNlOiBVRml4NjQ/KSB7CiAgICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICBzZWxmLnR5cGUgPSB0eXBlCiAgICAgIHNlbGYuaXNSZXNvdXJjZSA9IGlzUmVzb3VyY2UKICAgICAgc2VsZi5pc05GVENvbGxlY3Rpb24gPSBpc05GVENvbGxlY3Rpb24KICAgICAgc2VsZi5kaXNwbGF5ID0gZGlzcGxheQogICAgICBzZWxmLnRva2VuSURzID0gdG9rZW5JRHMKICAgICAgc2VsZi5pc1ZhdWx0ID0gaXNWYXVsdAogICAgICBzZWxmLmJhbGFuY2UgPSBiYWxhbmNlCiAgfQp9CgpwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aElkZW50aWZpZXJzOiBbU3RyaW5nXSk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogIGxldCB2YXVsdFR5cGUgPSBUeXBlPEBGdW5naWJsZVRva2VuLlZhdWx0PigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxATm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uPigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZXtNZXRhZGF0YVZpZXdzLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICBsZXQgaXRlbXM6IFtJdGVtXSA9IFtdCgogIGZvciBpZGVudGlmaWVyIGluIHBhdGhJZGVudGlmaWVycyB7CiAgICBsZXQgcGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IGlkZW50aWZpZXIpIQoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC50eXBlKGF0OiBwYXRoKSB7CiAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgbGV0IGlzTkZUQ29sbGVjdGlvbiA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkKICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgICB2YXIgY29sbGVjdGlvbkRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PyA9IG5pbAogICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmJvcnJvdzwme01ldGFkYXRhVmlld3MuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihmcm9tOiBwYXRoKSB7CiAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKCiAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvUmFyaWJsZU5GVENvbGxlY3Rpb24gCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKSAKICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgICAgICAgICAgY29sbGVjdGlvbkRpc3BsYXkgPSBDb2xsZWN0aW9uRGlzcGxheSgKICAgICAgICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgaXNORlRDb2xsZWN0aW9uIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuYm9ycm93PCZOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb24+KGZyb206IHBhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQogICAgICAgIH0KICAgICAgfQoKICAgICAgbGV0IGlzVmF1bHQgPSB0eXBlLmlzU3VidHlwZShvZjogdmF1bHRUeXBlKSAKICAgICAgdmFyIGJhbGFuY2U6IFVGaXg2ND8gPSBuaWwKICAgICAgaWYgaXNWYXVsdCB7CiAgICAgICAgaWYgbGV0IHZhdWx0UmVmID0gYWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHBhdGgpIHsKICAgICAgICAgIGJhbGFuY2UgPSB2YXVsdFJlZi5iYWxhbmNlCiAgICAgICAgfQogICAgICB9CgogICAgICBsZXQgaXRlbSA9IEl0ZW0oCiAgICAgICAgYWRkcmVzczogYWRkcmVzcywKICAgICAgICBwYXRoOiBwYXRoLnRvU3RyaW5nKCksCiAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICBpc1Jlc291cmNlOiBpc1Jlc291cmNlLAogICAgICAgIGlzTkZUQ29sbGVjdGlvbjogaXNORlRDb2xsZWN0aW9uLAogICAgICAgIGRpc3BsYXk6IGNvbGxlY3Rpb25EaXNwbGF5LAogICAgICAgIHRva2VuSURzOiB0b2tlbklEcywKICAgICAgICBpc1ZhdWx0OiBpc1ZhdWx0LAogICAgICAgIGJhbGFuY2U6IGJhbGFuY2UKICAgICAgKQoKICAgICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICB9CiAgfQoKICByZXR1cm4gaXRlbXMKfQ==", - "getStoredResource": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRTdG9yZWRSZXNvdXJjZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aFN0cjogU3RyaW5nKTogJkFueVJlc291cmNlPyB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCBwYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aFN0cikhCiAgcmV0dXJuIGFjY291bnQuYm9ycm93PCZBbnlSZXNvdXJjZT4oZnJvbTogcGF0aCkKfQ==", - "getStoredStruct": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBnZXRTdG9yZWRTdHJ1Y3QgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgcHViIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhTdHI6IFN0cmluZyk6ICZBbnlTdHJ1Y3Q/IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoU3RyKSEKICByZXR1cm4gYWNjb3VudC5ib3Jyb3c8JkFueVN0cnVjdD4oZnJvbTogcGF0aCkKfQ==" + "enableTokenStorage": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZW5hYmxlVG9rZW5TdG9yYWdlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPiApID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC0gPFRva2VuPi5jcmVhdGVFbXB0eVZhdWx0KHZhdWx0VHlwZTogVHlwZTxAPFRva2VuPi5WYXVsdD4oKSksIHRvOiA8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgfQoKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICAgICAgCiAgICAgICAgfQogICAgICAgCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCBiYWxhbmNlQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goYmFsYW5jZUNhcGFiaWxpdHksIGF0OiA8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICAgICAgfQogICAgCiAgICB9Cn0=", + "getBasicPublicItems": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0QmFzaWNQdWJsaWNJdGVtcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKYWNjZXNzKGFsbClzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbClsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgaW5pdChhZGRyZXNzOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsIHRhcmdldFBhdGg6IFN0cmluZz8pIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICB9Cn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGl0ZW1zOiBbSXRlbV0gPSBbXQoKCiAgZnVuIGVhY2hQYXRoKHBhdGg6IFB1YmxpY1BhdGgsIGNhcFR5cGU6IFR5cGUpOiBCb29sIHsKICAgIC8vIHRvZG8KICAgIGxldCBjYXAgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5nZXQ8JkFueVN0cnVjdD4ocGF0aCkKICAgIHZhciB0YXJnZXRQYXRoID0gIiIKCiAgICBpZiBjYXAgIT0gbmlsIHsKICAgICAgdGFyZ2V0UGF0aCA9ICIxMiIgCiAgICB9CiAgICBsZXQgaXRlbSA9IEl0ZW0oYWRkcmVzczogYWRkcmVzcywgcGF0aDogcGF0aC50b1N0cmluZygpLCB0YXJnZXRQYXRoOiB0YXJnZXRQYXRoKQogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gdHJ1ZQogIH0KICBhY2NvdW50LnN0b3JhZ2UuZm9yRWFjaFB1YmxpYyhlYWNoUGF0aCkKCiAgcmV0dXJuIGl0ZW1zCn0=", + "getPrivateItems": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0UHJpdmF0ZUl0ZW1zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgphY2Nlc3MoYWxsKXN0cnVjdCBJdGVtIHsKICBhY2Nlc3MoYWxsKWxldCBhZGRyZXNzOiBBZGRyZXNzCiAgYWNjZXNzKGFsbClsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbClsZXQgdHlwZTogVHlwZQogIGFjY2VzcyhhbGwpbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsIAogICAgcGF0aDogU3RyaW5nLCAKICAgIHR5cGU6IFR5cGUsIAogICAgdGFyZ2V0UGF0aDogU3RyaW5nPwogICkgewogICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi50eXBlID0gdHlwZQogICAgc2VsZi50YXJnZXRQYXRoID0gdGFyZ2V0UGF0aAogIH0KfQoKYWNjZXNzKGFsbClmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoTWFwOiB7U3RyaW5nOiBCb29sfSk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogIGxldCBpdGVtczogW0l0ZW1dID0gW10KCiAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hQcml2YXRlKGZ1biAocGF0aDogUHJpdmF0ZVBhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgIGlmICFwYXRoTWFwLmNvbnRhaW5zS2V5KHBhdGgudG9TdHJpbmcoKSkgewogICAgICByZXR1cm4gdHJ1ZQogICAgfQoKICAgIHZhciB0YXJnZXRQYXRoOiBTdHJpbmc/ID0gbmlsCiAgICBpZiBsZXQgdGFyZ2V0ID0gYWNjb3VudC5nZXRMaW5rVGFyZ2V0KHBhdGgpIHsKICAgICAgdGFyZ2V0UGF0aCA9IHRhcmdldC50b1N0cmluZygpCiAgICB9CgogICAgbGV0IGl0ZW0gPSBJdGVtKAogICAgICBhZGRyZXNzOiBhZGRyZXNzLAogICAgICBwYXRoOiBwYXRoLnRvU3RyaW5nKCksCiAgICAgIHR5cGU6IHR5cGUsCiAgICAgIHRhcmdldFBhdGg6IHRhcmdldFBhdGgKICAgICkKCiAgICBpdGVtcy5hcHBlbmQoaXRlbSkKICAgIHJldHVybiB0cnVlCiAgfSkKCiAgcmV0dXJuIGl0ZW1zCn0=", + "getPrivatePaths": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0UHJpdmF0ZVBhdGhzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbUHJpdmF0ZVBhdGhdIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNsZWFuZFBhdGhzOiBbUHJpdmF0ZVBhdGhdID0gW10KICBmb3IgcGF0aCBpbiBhY2NvdW50LnByaXZhdGVQYXRocyB7CiAgICBjbGVhbmRQYXRocy5hcHBlbmQocGF0aCkKICB9CiAgcmV0dXJuIGNsZWFuZFBhdGhzCn0=", + "getPublicItem": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0UHVibGljSXRlbSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKLy8gQSB3b3JrYXJvdW5kIG1ldGhvZAppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgogIAphY2Nlc3MoYWxsKSBzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbCkgbGV0IGFkZHJlc3M6IEFkZHJlc3MKICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHR5cGU6IFR5cGUKCiAgYWNjZXNzKGFsbCkgbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsIAogICAgcGF0aDogU3RyaW5nLCAKICAgIHR5cGU6IFR5cGUsIAogICAgdGFyZ2V0UGF0aDogU3RyaW5nPwogICkgewogICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi50eXBlID0gdHlwZQogICAgc2VsZi50YXJnZXRQYXRoID0gdGFyZ2V0UGF0aAogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aE1hcDoge1N0cmluZzogQm9vbH0pOiBbSXRlbV0gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQoYWRkcmVzcykKCiAgbGV0IGl0ZW1zOiBbSXRlbV0gPSBbXQogIGFjY291bnQuZm9yRWFjaFB1YmxpYyhmdW4gKHBhdGg6IFB1YmxpY1BhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgIGlmICFwYXRoTWFwLmNvbnRhaW5zS2V5KHBhdGgudG9TdHJpbmcoKSkgewogICAgICByZXR1cm4gdHJ1ZQogICAgfQoKICAgIHZhciB0YXJnZXRQYXRoOiBTdHJpbmc/ID0gbmlsCgogICAgaWYgbGV0IHRhcmdldCA9IGFjY291bnQuZ2V0TGlua1RhcmdldChwYXRoKSB7CiAgICAgIHRhcmdldFBhdGggPSB0YXJnZXQudG9TdHJpbmcoKQogICAgfQoKICAgIGxldCBpdGVtID0gSXRlbSgKICAgICAgYWRkcmVzczogYWRkcmVzcywKICAgICAgcGF0aDogcGF0aC50b1N0cmluZygpLAogICAgICB0eXBlOiB0eXBlLAogICAgICB0YXJnZXRQYXRoOiB0YXJnZXRQYXRoCiAgICApCgogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gZmFsc2UKICB9KQoKICByZXR1cm4gaXRlbXMKfQ==", + "getPublicItems": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0UHVibGljSXRlbXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgCmFjY2VzcyhhbGwpIHN0cnVjdCBJdGVtIHsKICBhY2Nlc3MoYWxsKSBsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpIGxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgdHlwZTogVHlwZQoKICBhY2Nlc3MoYWxsKSBsZXQgdGFyZ2V0UGF0aDogU3RyaW5nPwoKICBhY2Nlc3MoYWxsKSBsZXQgaXNDb2xsZWN0aW9uQ2FwOiBCb29sCiAgYWNjZXNzKGFsbCkgbGV0IHRva2VuSURzOiBbVUludDY0XQoKICBhY2Nlc3MoYWxsKSBsZXQgaXNCYWxhbmNlQ2FwOiBCb29sCiAgYWNjZXNzKGFsbCkgbGV0IGJhbGFuY2U6IFVGaXg2ND8KCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsIAogICAgcGF0aDogU3RyaW5nLCAKICAgIHR5cGU6IFR5cGUsIAogICAgdGFyZ2V0UGF0aDogU3RyaW5nPywgCiAgICBpc0NvbGxlY3Rpb25DYXA6IEJvb2wsIAogICAgdG9rZW5JRHM6IFtVSW50NjRdLAogICAgaXNCYWxhbmNlQ2FwOiBCb29sLAogICAgYmFsYW5jZTogVUZpeDY0PwogICkgewogICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi50eXBlID0gdHlwZQogICAgc2VsZi50YXJnZXRQYXRoID0gdGFyZ2V0UGF0aAogICAgc2VsZi5pc0NvbGxlY3Rpb25DYXAgPSBpc0NvbGxlY3Rpb25DYXAKICAgIHNlbGYudG9rZW5JRHMgPSB0b2tlbklEcwogICAgc2VsZi5pc0JhbGFuY2VDYXAgPSBpc0JhbGFuY2VDYXAKICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhNYXA6IHtTdHJpbmc6IEJvb2x9KTogW0l0ZW1dIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCgogIGxldCBpdGVtczogW0l0ZW1dID0gW10KICBsZXQgYmFsYW5jZUNhcFR5cGUgPSBUeXBlPENhcGFiaWxpdHk8JkFueVJlc291cmNle0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+PigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZBbnlSZXNvdXJjZXtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pj4oKQoKICBhY2NvdW50LmZvckVhY2hQdWJsaWMoZnVuIChwYXRoOiBQdWJsaWNQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICBpZiAhcGF0aE1hcC5jb250YWluc0tleShwYXRoLnRvU3RyaW5nKCkpIHsKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICB2YXIgdGFyZ2V0UGF0aDogU3RyaW5nPyA9IG5pbAogICAgdmFyIGlzQ29sbGVjdGlvbkNhcCA9IGZhbHNlCiAgICB2YXIgaXNCYWxhbmNlQ2FwID0gZmFsc2UKICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgdmFyIGJhbGFuY2U6IFVGaXg2ND8gPSBuaWwKCiAgICBpZiBsZXQgdGFyZ2V0ID0gYWNjb3VudC5nZXRMaW5rVGFyZ2V0KHBhdGgpIHsKICAgICAgdGFyZ2V0UGF0aCA9IHRhcmdldC50b1N0cmluZygpCiAgICB9CgogICAgaWYgKHR5cGUuaXNTdWJ0eXBlKG9mOiBiYWxhbmNlQ2FwVHlwZSkpIHsKICAgICAgaXNCYWxhbmNlQ2FwID0gdHJ1ZQogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgICAuZ2V0Q2FwYWJpbGl0eShwYXRoKQogICAgICAgICAgLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KCkKCiAgICAgIGlmIGxldCB2YXVsdCA9IHZhdWx0UmVmIHsKICAgICAgICAgIGJhbGFuY2UgPSB2YXVsdC5iYWxhbmNlCiAgICAgIH0KICAgIH0gZWxzZSBpZiAodHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKSkgewogICAgICBpc0NvbGxlY3Rpb25DYXAgPSB0cnVlCiAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudAogICAgICAgIC5nZXRDYXBhYmlsaXR5KHBhdGgpCiAgICAgICAgLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKCiAgICAgIGlmIGxldCBjb2xsZWN0aW9uID0gY29sbGVjdGlvblJlZiB7CiAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uLmdldElEcygpCiAgICAgIH0KICAgIH0KCiAgICBsZXQgaXRlbSA9IEl0ZW0oCiAgICAgIGFkZHJlc3M6IGFkZHJlc3MsCiAgICAgIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwKICAgICAgdHlwZTogdHlwZSwKICAgICAgdGFyZ2V0UGF0aDogdGFyZ2V0UGF0aCwKICAgICAgaXNDb2xsZWN0aW9uQ2FwOiBpc0NvbGxlY3Rpb25DYXAsCiAgICAgIHRva2VuSURzOiB0b2tlbklEcywKICAgICAgaXNCYWxhbmNlQ2FwOiBpc0JhbGFuY2VDYXAsCiAgICAgIGJhbGFuY2U6IGJhbGFuY2UKICAgICkKCiAgICBpdGVtcy5hcHBlbmQoaXRlbSkKICAgIHJldHVybiB0cnVlCiAgfSkKCiAgcmV0dXJuIGl0ZW1zCn0=", + "getPublicPaths": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0UHVibGljUGF0aHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnB1YiBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW1B1YmxpY1BhdGhdIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNsZWFuZFBhdGhzOiBbUHVibGljUGF0aF0gPSBbXQogIGZvciBwYXRoIGluIGFjY291bnQucHVibGljUGF0aHMgewogICAgY2xlYW5kUGF0aHMuYXBwZW5kKHBhdGgpCiAgfQogIHJldHVybiBjbGVhbmRQYXRocwp9", + "getStoragePaths": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0U3RvcmFnZVBhdGhzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgpwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtTdG9yYWdlUGF0aF0gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQoYWRkcmVzcykKICBsZXQgY2xlYW5kUGF0aHM6IFtTdG9yYWdlUGF0aF0gPSBbXQogIGZvciBwYXRoIGluIGFjY291bnQuc3RvcmFnZVBhdGhzIHsKICAgIGNsZWFuZFBhdGhzLmFwcGVuZChwYXRoKQogIH0KICByZXR1cm4gY2xlYW5kUGF0aHMKfQ==", + "getStoredItems": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0U3RvcmVkSXRlbXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgpwdWIgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICBwdWIgbGV0IG5hbWU6IFN0cmluZwogIHB1YiBsZXQgc3F1YXJlSW1hZ2U6IE1ldGFkYXRhVmlld3MuTWVkaWEKCiAgaW5pdChuYW1lOiBTdHJpbmcsIHNxdWFyZUltYWdlOiBNZXRhZGF0YVZpZXdzLk1lZGlhKSB7CiAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICBzZWxmLnNxdWFyZUltYWdlID0gc3F1YXJlSW1hZ2UKICB9Cn0KCnB1YiBzdHJ1Y3QgSXRlbSB7CiAgcHViIGxldCBhZGRyZXNzOiBBZGRyZXNzCiAgcHViIGxldCBwYXRoOiBTdHJpbmcKICBwdWIgbGV0IHR5cGU6IFR5cGUKICBwdWIgbGV0IGlzUmVzb3VyY2U6IEJvb2wKICBwdWIgbGV0IGlzTkZUQ29sbGVjdGlvbjogQm9vbAogIHB1YiBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgcHViIGxldCB0b2tlbklEczogW1VJbnQ2NF0KICBwdWIgbGV0IGlzVmF1bHQ6IEJvb2wKICBwdWIgbGV0IGJhbGFuY2U6IFVGaXg2ND8KCiAgaW5pdChhZGRyZXNzOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsIHR5cGU6IFR5cGUsIGlzUmVzb3VyY2U6IEJvb2wsIAogICAgaXNORlRDb2xsZWN0aW9uOiBCb29sLCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8sCiAgICB0b2tlbklEczogW1VJbnQ2NF0sIGlzVmF1bHQ6IEJvb2wsIGJhbGFuY2U6IFVGaXg2ND8pIHsKICAgICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgIHNlbGYudHlwZSA9IHR5cGUKICAgICAgc2VsZi5pc1Jlc291cmNlID0gaXNSZXNvdXJjZQogICAgICBzZWxmLmlzTkZUQ29sbGVjdGlvbiA9IGlzTkZUQ29sbGVjdGlvbgogICAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICAgIHNlbGYudG9rZW5JRHMgPSB0b2tlbklEcwogICAgICBzZWxmLmlzVmF1bHQgPSBpc1ZhdWx0CiAgICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICB9Cn0KCnB1YiBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSWRlbnRpZmllcnM6IFtTdHJpbmddKTogW0l0ZW1dIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgbGV0IHZhdWx0VHlwZSA9IFR5cGU8QEZ1bmdpYmxlVG9rZW4uVmF1bHQ+KCkKICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb24+KCkKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8QEFueVJlc291cmNle01ldGFkYXRhVmlld3MuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIGxldCBpdGVtczogW0l0ZW1dID0gW10KCiAgZm9yIGlkZW50aWZpZXIgaW4gcGF0aElkZW50aWZpZXJzIHsKICAgIGxldCBwYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogaWRlbnRpZmllcikhCgogICAgaWYgbGV0IHR5cGUgPSBhY2NvdW50LnR5cGUoYXQ6IHBhdGgpIHsKICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgIHZhciBjb2xsZWN0aW9uRGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gbmlsCiAgICAgIGlmIGlzTkZUQ29sbGVjdGlvbiAmJiBjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuYm9ycm93PCZ7TWV0YWRhdGFWaWV3cy5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGZyb206IHBhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQoKICAgICAgICAgIC8vIFRPRE86IG1vdmUgdG8gYSBsaXN0CiAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIAogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FybGVlU2NlbmUgewogICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pIAogICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIpIHsKICAgICAgICAgICAgICBjb2xsZWN0aW9uRGlzcGxheSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UKICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiBpc05GVENvbGxlY3Rpb24gewogICAgICAgIGlmIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5ib3Jyb3c8Jk5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbj4oZnJvbTogcGF0aCkgewogICAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uUmVmLmdldElEcygpCiAgICAgICAgfQogICAgICB9CgogICAgICBsZXQgaXNWYXVsdCA9IHR5cGUuaXNTdWJ0eXBlKG9mOiB2YXVsdFR5cGUpIAogICAgICB2YXIgYmFsYW5jZTogVUZpeDY0PyA9IG5pbAogICAgICBpZiBpc1ZhdWx0IHsKICAgICAgICBpZiBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LmJvcnJvdzwmRnVuZ2libGVUb2tlbi5WYXVsdD4oZnJvbTogcGF0aCkgewogICAgICAgICAgYmFsYW5jZSA9IHZhdWx0UmVmLmJhbGFuY2UKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGxldCBpdGVtID0gSXRlbSgKICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLAogICAgICAgIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwKICAgICAgICB0eXBlOiB0eXBlLAogICAgICAgIGlzUmVzb3VyY2U6IGlzUmVzb3VyY2UsCiAgICAgICAgaXNORlRDb2xsZWN0aW9uOiBpc05GVENvbGxlY3Rpb24sCiAgICAgICAgZGlzcGxheTogY29sbGVjdGlvbkRpc3BsYXksCiAgICAgICAgdG9rZW5JRHM6IHRva2VuSURzLAogICAgICAgIGlzVmF1bHQ6IGlzVmF1bHQsCiAgICAgICAgYmFsYW5jZTogYmFsYW5jZQogICAgICApCgogICAgICBpdGVtcy5hcHBlbmQoaXRlbSkKICAgIH0KICB9CgogIHJldHVybiBpdGVtcwp9", + "getStoredResource": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0U3RvcmVkUmVzb3VyY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnB1YiBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoU3RyOiBTdHJpbmcpOiAmQW55UmVzb3VyY2U/IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoU3RyKSEKICByZXR1cm4gYWNjb3VudC5ib3Jyb3c8JkFueVJlc291cmNlPihmcm9tOiBwYXRoKQp9", + "getStoredStruct": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgZ2V0U3RvcmVkU3RydWN0IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgpwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aFN0cjogU3RyaW5nKTogJkFueVN0cnVjdD8gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQoYWRkcmVzcykKICBsZXQgcGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhTdHIpIQogIHJldHVybiBhY2NvdW50LmJvcnJvdzwmQW55U3RydWN0Pihmcm9tOiBwYXRoKQp9" }, "temp": { - "addKeys": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBhZGRLZXlzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCnRyYW5zYWN0aW9uKHB1YmxpY0tleTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBrZXkgPSBQdWJsaWNLZXkoCiAgICAgICAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LmRlY29kZUhleCgpLAogICAgICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogMSkhCiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgd2hpbGUgaWR4IDwgOTkgewogICAgICAgICAgICBzaWduZXIua2V5cy5hZGQoCiAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IGtleSwKICAgICAgICAgICAgICAgIGhhc2hBbGdvcml0aG06IEhhc2hBbGdvcml0aG0ocmF3VmFsdWU6IDEpISwKICAgICAgICAgICAgICAgIHdlaWdodDogMTAwMC4wCiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgfQp9", - "createAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBjcmVhdGVBY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCmltcG9ydCBVU0RDRmxvdyBmcm9tIDB4VVNEQ0Zsb3cKaW1wb3J0IHN0Rmxvd1Rva2VuIGZyb20gMHhzdEZsb3dUb2tlbgoKdHJhbnNhY3Rpb24ocHVibGljS2V5czogW0NyeXB0by5LZXlMaXN0RW50cnldLCBjb250cmFjdHM6IHtTdHJpbmc6IFN0cmluZ30pIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICBsZXQgbmV3QWNjb3VudCA9IEFjY291bnQocGF5ZXI6IHNpZ25lcikKCiAgICAgICAgZm9yIGtleSBpbiBwdWJsaWNLZXlzIHsKICAgICAgICAgICAgbmV3QWNjb3VudC5rZXlzLmFkZChwdWJsaWNLZXk6IGtleS5wdWJsaWNLZXksIGhhc2hBbGdvcml0aG06IGtleS5oYXNoQWxnb3JpdGhtLCB3ZWlnaHQ6IGtleS53ZWlnaHQpCiAgICAgICAgfQoKICAgICAgICBmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewogICAgICAgICAgICBuZXdBY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQogICAgICAgIH0KCiAgICAgICAgbGV0IGNvYSA8LSBFVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpCiAgICAgICAgbGV0IGNvYVBhdGggPSAvc3RvcmFnZS9ldm0KICAgICAgICBuZXdBY2NvdW50LnN0b3JhZ2Uuc2F2ZSg8LWNvYSwgdG86IGNvYVBhdGgpCiAgICAgICAgbGV0IGNvYUNhcGFiaWxpdHkgPSBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oY29hUGF0aCkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvYUNhcGFiaWxpdHksIGF0OiAvcHVibGljL2V2bSkKICAgICAgICBsZXQgdXNkY1ZhdWx0IDwtIFVTRENGbG93LmNyZWF0ZUVtcHR5VmF1bHQodmF1bHRUeXBlOiBUeXBlPEBVU0RDRmxvdy5WYXVsdD4oKSkKICAgICAgICBuZXdBY2NvdW50LnN0b3JhZ2Uuc2F2ZSg8LXVzZGNWYXVsdCwgdG86IFVTRENGbG93LlZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KFVTRENGbG93LlZhdWx0U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogVVNEQ0Zsb3cuVmF1bHRQdWJsaWNQYXRoCiAgICAgICAgKQogICAgICAgIG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnB1Ymxpc2goCiAgICAgICAgICAgIG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyLCBGdW5naWJsZVRva2VuLkJhbGFuY2V9PihVU0RDRmxvdy5WYXVsdFN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IFVTRENGbG93LlJlY2VpdmVyUHVibGljUGF0aAogICAgICAgICkKCiAgICAgICAgLy8gc3RGbG93CiAgICAgICAgbGV0IHN0Rmxvd1ZhdWx0IDwtIHN0Rmxvd1Rva2VuLmNyZWF0ZUVtcHR5VmF1bHQodmF1bHRUeXBlOiBUeXBlPEBzdEZsb3dUb2tlbi5WYXVsdD4oKSkKICAgICAgICBuZXdBY2NvdW50LnN0b3JhZ2Uuc2F2ZSg8LXN0Rmxvd1ZhdWx0LCB0bzogc3RGbG93VG9rZW4udG9rZW5WYXVsdFBhdGgpCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHN0Rmxvd1Rva2VuLnRva2VuVmF1bHRQYXRoKSwKICAgICAgICAgICAgYXQ6IHN0Rmxvd1Rva2VuLnRva2VuQmFsYW5jZVBhdGgKICAgICAgICApCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHN0Rmxvd1Rva2VuLnRva2VuVmF1bHRQYXRoKSwKICAgICAgICAgICAgYXQ6IHN0Rmxvd1Rva2VuLnRva2VuUmVjZWl2ZXJQYXRoCiAgICAgICAgKQogICAgfQoKfQ==", - "mintNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBtaW50TkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIC8vLyBUaGlzIHNjcmlwdCB1c2VzIHRoZSBORlRNaW50ZXIgcmVzb3VyY2UgdG8gbWludCBhIG5ldyBORlQKLy8vIEl0IG11c3QgYmUgcnVuIHdpdGggdGhlIGFjY291bnQgdGhhdCBoYXMgdGhlIG1pbnRlciByZXNvdXJjZQovLy8gc3RvcmVkIGluIC9zdG9yYWdlL05GVE1pbnRlcgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweDYzMWU4OGFlN2YxZDdjMjAKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweDYzMWU4OGFlN2YxZDdjMjAKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHg5YTA3NjZkOTNiNjYwOGI3CmltcG9ydCBFeGFtcGxlTkZUIGZyb20gMHgzOTBiNDcwNWRhNjMwNWMzCgp0cmFuc2FjdGlvbigKICAgIHJlY2lwaWVudDogQWRkcmVzcywKICAgIG5hbWU6IFN0cmluZywKICAgIGRlc2NyaXB0aW9uOiBTdHJpbmcsCiAgICB0aHVtYm5haWw6IFN0cmluZywKICAgIGN1dHM6IFtVRml4NjRdLAogICAgcm95YWx0eURlc2NyaXB0aW9uczogW1N0cmluZ10sCiAgICByb3lhbHR5QmVuZWZpY2lhcmllczogW0FkZHJlc3NdCikgewoKICAgIC8vLyBsb2NhbCB2YXJpYWJsZSBmb3Igc3RvcmluZyB0aGUgbWludGVyIHJlZmVyZW5jZQogICAgbGV0IG1pbnRlcjogJkV4YW1wbGVORlQuTkZUTWludGVyCgogICAgLy8vIFJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXIncyBjb2xsZWN0aW9uCiAgICBsZXQgcmVjaXBpZW50Q29sbGVjdGlvblJlZjogJntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfQoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSBFeGFtcGxlTkZULnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICAgICAgPz8gcGFuaWMoIlZpZXdSZXNvbHZlciBkb2VzIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIAogICAgICAgIC8vIGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUTWludGVyIHJlc291cmNlIGluIHN0b3JhZ2UKICAgICAgICBzZWxmLm1pbnRlciA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRXhhbXBsZU5GVC5ORlRNaW50ZXI+KGZyb206IEV4YW1wbGVORlQuTWludGVyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJBY2NvdW50IGRvZXMgbm90IHN0b3JlIGFuIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIHBhdGgiKQoKICAgICAgICAvLyBCb3Jyb3cgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBORlQgY29sbGVjdGlvbiByZWZlcmVuY2UKICAgICAgICBzZWxmLnJlY2lwaWVudENvbGxlY3Rpb25SZWYgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigKICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGdldCByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIE5GVCBDb2xsZWN0aW9uIikKICAgIH0KCiAgICBwcmUgewogICAgICAgIGN1dHMubGVuZ3RoID09IHJveWFsdHlEZXNjcmlwdGlvbnMubGVuZ3RoICYmIGN1dHMubGVuZ3RoID09IHJveWFsdHlCZW5lZmljaWFyaWVzLmxlbmd0aDogIkFycmF5IGxlbmd0aCBzaG91bGQgYmUgZXF1YWwgZm9yIHJveWFsdHkgcmVsYXRlZCBkZXRhaWxzIgogICAgfQoKICAgIGV4ZWN1dGUgewoKICAgICAgICAvLyBDcmVhdGUgdGhlIHJveWFsdHkgZGV0YWlscwogICAgICAgIHZhciBjb3VudCA9IDAKICAgICAgICB2YXIgcm95YWx0aWVzOiBbTWV0YWRhdGFWaWV3cy5Sb3lhbHR5XSA9IFtdCiAgICAgICAgbG9nKHJveWFsdHlCZW5lZmljaWFyaWVzLmxlbmd0aCkKICAgICAgICB3aGlsZSByb3lhbHR5QmVuZWZpY2lhcmllcy5sZW5ndGggPiBjb3VudCB7CiAgICAgICAgICAgIGxldCBiZW5lZmljaWFyeSA9IHJveWFsdHlCZW5lZmljaWFyaWVzW2NvdW50XQogICAgICAgICAgICBsZXQgYmVuZWZpY2lhcnlDYXBhYmlsaXR5ID0gZ2V0QWNjb3VudChiZW5lZmljaWFyeSkuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigKICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVZpZXdzLmdldFJveWFsdHlSZWNlaXZlclB1YmxpY1BhdGgoKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpZiAhYmVuZWZpY2lhcnlDYXBhYmlsaXR5LmNoZWNrKCkgewogICAgICAgICAgICAgICAgcGFuaWMoIkJlbmVmaWNpYXJ5IGRvZXMgbm90IGhhdmUgUmVjZWl2ZXIgY29uZmlndXJlZCBhdCBSb3lhbHR5UmVjZWl2ZXJQdWJsaWNQYXRoIikKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcm95YWx0aWVzLmFwcGVuZCgKICAgICAgICAgICAgICAgIE1ldGFkYXRhVmlld3MuUm95YWx0eSgKICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogYmVuZWZpY2lhcnlDYXBhYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIGN1dDogY3V0c1tjb3VudF0sCiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHJveWFsdHlEZXNjcmlwdGlvbnNbY291bnRdCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICAgICAgY291bnQgPSBjb3VudCArIDEKICAgICAgICB9CgoKICAgICAgICAvLyBNaW50IHRoZSBORlQgYW5kIGRlcG9zaXQgaXQgdG8gdGhlIHJlY2lwaWVudCdzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgbWludGVkTkZUIDwtIHNlbGYubWludGVyLm1pbnRORlQoCiAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgdGh1bWJuYWlsOiB0aHVtYm5haWwsCiAgICAgICAgICAgIHJveWFsdGllczogcm95YWx0aWVzCiAgICAgICAgKQogICAgICAgIHNlbGYucmVjaXBpZW50Q29sbGVjdGlvblJlZi5kZXBvc2l0KHRva2VuOiA8LW1pbnRlZE5GVCkKICAgIH0KCn0=", - "onboardEvmToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBvbmJvYXJkRXZtVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhmMjMzZGNlZTg4ZmUwYWJlCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQoKaW1wb3J0IEVWTSBmcm9tIDB4ZTQ2N2I5ZGQxMWZhMDBkZgoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweDFlNGFhMGI4N2QxMGIxNDEKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweDFlNGFhMGI4N2QxMGIxNDEKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIEVSQzIwL0VSQzcyMSBhc3NldHMgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuCi8vLyBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIE5GVCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gYWRkcmVzc2VzQXNIZXg6IEFycmF5IG9mIEVWTSBjb250cmFjdCBhZGRyZXNzZXMgZGVmaW5pbmcgdGhlIAovLy8gICAgIGJyaWRnZWFibGUgYXNzZXQgdG8gYmUgb25ib2FyZGVkCi8vLwp0cmFuc2FjdGlvbihhZGRyZXNzZXNBc0hleDogW1N0cmluZ10pIHsKbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgIC8vCiAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICkKICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgIH0KICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgIC8vIFNldCBhIHdpdGhkcmF3YWwgbGltaXQgZm9yIHRoZSBwcm92aWRlcgogICAgbGV0IHByb3ZpZGVyTGltaXQgPSBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUgKiBVRml4NjQoYWRkcmVzc2VzQXNIZXgubGVuZ3RoKQogICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAvLyBDcmVhdGUgU2NvcGVkRlRQcm92aWRlciB0byBleHBpcmUganVzdCBhZnRlciB0aGlzIHRyYW5zYWN0aW9uCiAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQp9CmV4ZWN1dGUgewogICAgLy8gSXRlcmF0ZSBvdmVyIHByb3ZpZGVkIGFycmF5CiAgICBmb3IgYWRkcmVzc0hleCBpbiBhZGRyZXNzZXNBc0hleCB7CiAgICAgICAgLy8gQ29udmVydCBoZXggc3RyaW5nIHRvIEVWTUFkZHJlc3MKICAgICAgICBsZXQgYWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhhZGRyZXNzSGV4KQogICAgICAgIC8vIENvbnRpbnVlIGlmIHRoZSBoZXggaXMgbm90IGEgdmFsaWQgRVZNIGFkZHJlc3Mgb3IgaWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSBvbmJvYXJkZWQKICAgICAgICBpZiBhZGRyZXNzID09IG5pbCB8fCBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcyEpICE9IHRydWUgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeUVWTUFkZHJlc3MoCiAgICAgICAgICAgIGFkZHJlc3MhLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgfQogICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCn0KfQ==", - "setupFTProvider": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZXR1cEZUUHJvdmlkZXIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIGxldCB2YXVsdERhdGEgPSBFeGFtcGxlVG9rZW4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgRXhhbXBsZVRva2VuIikKICAgIAogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICB9Cn0KIA==", - "setupNFTFull": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICBzZXR1cE5GVEZ1bGwgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGQgPSBFeGFtcGxlTkZULnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpISBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YQoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZFeGFtcGxlTkZULkNvbGxlY3Rpb24+KGZyb206IGQuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKDwtIEV4YW1wbGVORlQuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBFeGFtcGxlTkZULkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICB9CgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnVucHVibGlzaChkLnB1YmxpY1BhdGgpCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntFeGFtcGxlTkZULkV4YW1wbGVORlRDb2xsZWN0aW9uUHVibGljLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PihkLnN0b3JhZ2VQYXRoKQogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY2FwLCBhdDogZC5wdWJsaWNQYXRoKQoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntFeGFtcGxlTkZULkV4YW1wbGVORlRDb2xsZWN0aW9uUHVibGljLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWMsIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PihkLnN0b3JhZ2VQYXRoKQogICAgfQp9Cg==", - "test": "CiAgICAvLyBGbG93IFdhbGxldCAtIG1haW5uZXQgU2NyaXB0ICB0ZXN0IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIA==" + "addKeys": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgYWRkS2V5cyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEtleXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGtleSA9IFB1YmxpY0tleSgKICAgICAgICAgICAgcHVibGljS2V5OiBwdWJsaWNLZXkuZGVjb2RlSGV4KCksCiAgICAgICAgICAgIHNpZ25hdHVyZUFsZ29yaXRobTogU2lnbmF0dXJlQWxnb3JpdGhtKHJhd1ZhbHVlOiAxKSEKICAgICAgICApCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCA5OSB7CiAgICAgICAgICAgIHNpZ25lci5rZXlzLmFkZCgKICAgICAgICAgICAgICAgIHB1YmxpY0tleToga2V5LAogICAgICAgICAgICAgICAgaGFzaEFsZ29yaXRobTogSGFzaEFsZ29yaXRobShyYXdWYWx1ZTogMSkhLAogICAgICAgICAgICAgICAgd2VpZ2h0OiAxMDAwLjAKICAgICAgICAgICAgKQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICB9Cn0=", + "createAccount": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgY3JlYXRlQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KaW1wb3J0IFVTRENGbG93IGZyb20gMHhVU0RDRmxvdwppbXBvcnQgc3RGbG93VG9rZW4gZnJvbSAweHN0Rmxvd1Rva2VuCgp0cmFuc2FjdGlvbihwdWJsaWNLZXlzOiBbQ3J5cHRvLktleUxpc3RFbnRyeV0sIGNvbnRyYWN0czoge1N0cmluZzogU3RyaW5nfSkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIGxldCBuZXdBY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKICAgICAgICBmb3Iga2V5IGluIHB1YmxpY0tleXMgewogICAgICAgICAgICBuZXdBY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LnB1YmxpY0tleSwgaGFzaEFsZ29yaXRobToga2V5Lmhhc2hBbGdvcml0aG0sIHdlaWdodDoga2V5LndlaWdodCkKICAgICAgICB9CgogICAgICAgIGZvciBjb250cmFjdCBpbiBjb250cmFjdHMua2V5cyB7CiAgICAgICAgICAgIG5ld0FjY291bnQuY29udHJhY3RzLmFkZChuYW1lOiBjb250cmFjdCwgY29kZTogY29udHJhY3RzW2NvbnRyYWN0XSEuZGVjb2RlSGV4KCkpCiAgICAgICAgfQoKICAgICAgICBsZXQgY29hIDwtIEVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCkKICAgICAgICBsZXQgY29hUGF0aCA9IC9zdG9yYWdlL2V2bQogICAgICAgIG5ld0FjY291bnQuc3RvcmFnZS5zYXZlKDwtY29hLCB0bzogY29hUGF0aCkKICAgICAgICBsZXQgY29hQ2FwYWJpbGl0eSA9IG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihjb2FQYXRoKQogICAgICAgIG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29hQ2FwYWJpbGl0eSwgYXQ6IC9wdWJsaWMvZXZtKQogICAgICAgIGxldCB1c2RjVmF1bHQgPC0gVVNEQ0Zsb3cuY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QFVTRENGbG93LlZhdWx0PigpKQogICAgICAgIG5ld0FjY291bnQuc3RvcmFnZS5zYXZlKDwtdXNkY1ZhdWx0LCB0bzogVVNEQ0Zsb3cuVmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oVVNEQ0Zsb3cuVmF1bHRTdG9yYWdlUGF0aCksCiAgICAgICAgICAgIGF0OiBVU0RDRmxvdy5WYXVsdFB1YmxpY1BhdGgKICAgICAgICApCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KFVTRENGbG93LlZhdWx0U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogVVNEQ0Zsb3cuUmVjZWl2ZXJQdWJsaWNQYXRoCiAgICAgICAgKQoKICAgICAgICAvLyBzdEZsb3cKICAgICAgICBsZXQgc3RGbG93VmF1bHQgPC0gc3RGbG93VG9rZW4uY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QHN0Rmxvd1Rva2VuLlZhdWx0PigpKQogICAgICAgIG5ld0FjY291bnQuc3RvcmFnZS5zYXZlKDwtc3RGbG93VmF1bHQsIHRvOiBzdEZsb3dUb2tlbi50b2tlblZhdWx0UGF0aCkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oc3RGbG93VG9rZW4udG9rZW5WYXVsdFBhdGgpLAogICAgICAgICAgICBhdDogc3RGbG93VG9rZW4udG9rZW5CYWxhbmNlUGF0aAogICAgICAgICkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oc3RGbG93VG9rZW4udG9rZW5WYXVsdFBhdGgpLAogICAgICAgICAgICBhdDogc3RGbG93VG9rZW4udG9rZW5SZWNlaXZlclBhdGgKICAgICAgICApCiAgICB9Cgp9", + "mintNFT": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgbWludE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKLy8vIFRoaXMgc2NyaXB0IHVzZXMgdGhlIE5GVE1pbnRlciByZXNvdXJjZSB0byBtaW50IGEgbmV3IE5GVAovLy8gSXQgbXVzdCBiZSBydW4gd2l0aCB0aGUgYWNjb3VudCB0aGF0IGhhcyB0aGUgbWludGVyIHJlc291cmNlCi8vLyBzdG9yZWQgaW4gL3N0b3JhZ2UvTkZUTWludGVyCgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4NjMxZTg4YWU3ZjFkN2MyMAppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4NjMxZTg4YWU3ZjFkN2MyMAoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweDlhMDc2NmQ5M2I2NjA4YjcKaW1wb3J0IEV4YW1wbGVORlQgZnJvbSAweDM5MGI0NzA1ZGE2MzA1YzMKCnRyYW5zYWN0aW9uKAogICAgcmVjaXBpZW50OiBBZGRyZXNzLAogICAgbmFtZTogU3RyaW5nLAogICAgZGVzY3JpcHRpb246IFN0cmluZywKICAgIHRodW1ibmFpbDogU3RyaW5nLAogICAgY3V0czogW1VGaXg2NF0sCiAgICByb3lhbHR5RGVzY3JpcHRpb25zOiBbU3RyaW5nXSwKICAgIHJveWFsdHlCZW5lZmljaWFyaWVzOiBbQWRkcmVzc10KKSB7CgogICAgLy8vIGxvY2FsIHZhcmlhYmxlIGZvciBzdG9yaW5nIHRoZSBtaW50ZXIgcmVmZXJlbmNlCiAgICBsZXQgbWludGVyOiAmRXhhbXBsZU5GVC5ORlRNaW50ZXIKCiAgICAvLy8gUmVmZXJlbmNlIHRvIHRoZSByZWNlaXZlcidzIGNvbGxlY3Rpb24KICAgIGxldCByZWNpcGllbnRDb2xsZWN0aW9uUmVmOiAme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IEV4YW1wbGVORlQucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgICAgICA/PyBwYW5pYygiVmlld1Jlc29sdmVyIGRvZXMgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAgLy8gYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlRNaW50ZXIgcmVzb3VyY2UgaW4gc3RvcmFnZQogICAgICAgIHNlbGYubWludGVyID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZFeGFtcGxlTkZULk5GVE1pbnRlcj4oZnJvbTogRXhhbXBsZU5GVC5NaW50ZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkFjY291bnQgZG9lcyBub3Qgc3RvcmUgYW4gb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgcGF0aCIpCgogICAgICAgIC8vIEJvcnJvdyB0aGUgcmVjaXBpZW50J3MgcHVibGljIE5GVCBjb2xsZWN0aW9uIHJlZmVyZW5jZQogICAgICAgIHNlbGYucmVjaXBpZW50Q29sbGVjdGlvblJlZiA9IGdldEFjY291bnQocmVjaXBpZW50KS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KAogICAgICAgICAgICAgICAgY29sbGVjdGlvbkRhdGEucHVibGljUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgTkZUIENvbGxlY3Rpb24iKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgY3V0cy5sZW5ndGggPT0gcm95YWx0eURlc2NyaXB0aW9ucy5sZW5ndGggJiYgY3V0cy5sZW5ndGggPT0gcm95YWx0eUJlbmVmaWNpYXJpZXMubGVuZ3RoOiAiQXJyYXkgbGVuZ3RoIHNob3VsZCBiZSBlcXVhbCBmb3Igcm95YWx0eSByZWxhdGVkIGRldGFpbHMiCiAgICB9CgogICAgZXhlY3V0ZSB7CgogICAgICAgIC8vIENyZWF0ZSB0aGUgcm95YWx0eSBkZXRhaWxzCiAgICAgICAgdmFyIGNvdW50ID0gMAogICAgICAgIHZhciByb3lhbHRpZXM6IFtNZXRhZGF0YVZpZXdzLlJveWFsdHldID0gW10KICAgICAgICBsb2cocm95YWx0eUJlbmVmaWNpYXJpZXMubGVuZ3RoKQogICAgICAgIHdoaWxlIHJveWFsdHlCZW5lZmljaWFyaWVzLmxlbmd0aCA+IGNvdW50IHsKICAgICAgICAgICAgbGV0IGJlbmVmaWNpYXJ5ID0gcm95YWx0eUJlbmVmaWNpYXJpZXNbY291bnRdCiAgICAgICAgICAgIGxldCBiZW5lZmljaWFyeUNhcGFiaWxpdHkgPSBnZXRBY2NvdW50KGJlbmVmaWNpYXJ5KS5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KAogICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVmlld3MuZ2V0Um95YWx0eVJlY2VpdmVyUHVibGljUGF0aCgpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmICFiZW5lZmljaWFyeUNhcGFiaWxpdHkuY2hlY2soKSB7CiAgICAgICAgICAgICAgICBwYW5pYygiQmVuZWZpY2lhcnkgZG9lcyBub3QgaGF2ZSBSZWNlaXZlciBjb25maWd1cmVkIGF0IFJveWFsdHlSZWNlaXZlclB1YmxpY1BhdGgiKQogICAgICAgICAgICB9CgogICAgICAgICAgICByb3lhbHRpZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgTWV0YWRhdGFWaWV3cy5Sb3lhbHR5KAogICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBiZW5lZmljaWFyeUNhcGFiaWxpdHksCiAgICAgICAgICAgICAgICAgICAgY3V0OiBjdXRzW2NvdW50XSwKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcm95YWx0eURlc2NyaXB0aW9uc1tjb3VudF0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICBjb3VudCA9IGNvdW50ICsgMQogICAgICAgIH0KCgogICAgICAgIC8vIE1pbnQgdGhlIE5GVCBhbmQgZGVwb3NpdCBpdCB0byB0aGUgcmVjaXBpZW50J3MgY29sbGVjdGlvbgogICAgICAgIGxldCBtaW50ZWRORlQgPC0gc2VsZi5taW50ZXIubWludE5GVCgKICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLAogICAgICAgICAgICB0aHVtYm5haWw6IHRodW1ibmFpbCwKICAgICAgICAgICAgcm95YWx0aWVzOiByb3lhbHRpZXMKICAgICAgICApCiAgICAgICAgc2VsZi5yZWNpcGllbnRDb2xsZWN0aW9uUmVmLmRlcG9zaXQodG9rZW46IDwtbWludGVkTkZUKQogICAgfQoKfQ==", + "onboardEvmToFlow": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgb25ib2FyZEV2bVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MTY1NDY1MzM5OTA0MGE2MQoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHgxZTRhYTBiODdkMTBiMTQxCgppbXBvcnQgRVZNIGZyb20gMHhlNDY3YjlkZDExZmEwMGRmCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgRVJDMjAvRVJDNzIxIGFzc2V0cyB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgYXNzZXRzIGJldHdlZW4KLy8vIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgTkZUIHRvIEVWTQovLy8KLy8vIEBwYXJhbSBhZGRyZXNzZXNBc0hleDogQXJyYXkgb2YgRVZNIGNvbnRyYWN0IGFkZHJlc3NlcyBkZWZpbmluZyB0aGUgCi8vLyAgICAgYnJpZGdlYWJsZSBhc3NldCB0byBiZSBvbmJvYXJkZWQKLy8vCnRyYW5zYWN0aW9uKGFkZHJlc3Nlc0FzSGV4OiBbU3RyaW5nXSkgewpsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgpwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgLy8KICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgKQogICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgfQogICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgLy8gU2V0IGEgd2l0aGRyYXdhbCBsaW1pdCBmb3IgdGhlIHByb3ZpZGVyCiAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NChhZGRyZXNzZXNBc0hleC5sZW5ndGgpCiAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIocHJvdmlkZXJMaW1pdCkKICAgIC8vIENyZWF0ZSBTY29wZWRGVFByb3ZpZGVyIHRvIGV4cGlyZSBqdXN0IGFmdGVyIHRoaXMgdHJhbnNhY3Rpb24KICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCn0KZXhlY3V0ZSB7CiAgICAvLyBJdGVyYXRlIG92ZXIgcHJvdmlkZWQgYXJyYXkKICAgIGZvciBhZGRyZXNzSGV4IGluIGFkZHJlc3Nlc0FzSGV4IHsKICAgICAgICAvLyBDb252ZXJ0IGhleCBzdHJpbmcgdG8gRVZNQWRkcmVzcwogICAgICAgIGxldCBhZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKGFkZHJlc3NIZXgpCiAgICAgICAgLy8gQ29udGludWUgaWYgdGhlIGhleCBpcyBub3QgYSB2YWxpZCBFVk0gYWRkcmVzcyBvciBpZiB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IG9uYm9hcmRlZAogICAgICAgIGlmIGFkZHJlc3MgPT0gbmlsIHx8IEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzISkgIT0gdHJ1ZSB7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQogICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5RVZNQWRkcmVzcygKICAgICAgICAgICAgYWRkcmVzcyEsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICB9CiAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKfQp9", + "setupFTProvider": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2V0dXBGVFByb3ZpZGVyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IEV4YW1wbGVUb2tlbi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKSkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPwogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciBFeGFtcGxlVG9rZW4iKQogICAgCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgIH0KfQog", + "setupNFTFull": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgc2V0dXBORlRGdWxsIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24gewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgZCA9IEV4YW1wbGVORlQucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkhIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhCgogICAgICAgIGlmIGFjY3Quc3RvcmFnZS5ib3Jyb3c8JkV4YW1wbGVORlQuQ29sbGVjdGlvbj4oZnJvbTogZC5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgYWNjdC5zdG9yYWdlLnNhdmUoPC0gRXhhbXBsZU5GVC5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IEV4YW1wbGVORlQuQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgIH0KCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGQucHVibGljUGF0aCkKICAgICAgICBsZXQgY2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0V4YW1wbGVORlQuRXhhbXBsZU5GVENvbGxlY3Rpb25QdWJsaWMsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGQuc3RvcmFnZVBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaChjYXAsIGF0OiBkLnB1YmxpY1BhdGgpCgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0V4YW1wbGVORlQuRXhhbXBsZU5GVENvbGxlY3Rpb25QdWJsaWMsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpYywgTm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KGQuc3RvcmFnZVBhdGgpCiAgICB9Cn0K", + "test": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdGVzdCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoK", + "transferTokens": "Ly8gRmxvdyBXYWxsZXQgLSBtYWlubmV0IFNjcmlwdCAgdHJhbnNmZXJUb2tlbnMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhmMjMzZGNlZTg4ZmUwYWJlCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKCnRyYW5zYWN0aW9uKHJlY2lwaWVudDogQWRkcmVzcywgYW1vdW50OiBVRml4NjQpIHsKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJlZAogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvRmxvd1Rva2VuVmF1bHQpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gR2V0IHRoZSByZWNpcGllbnQncyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50QWNjb3VudCA9IGdldEFjY291bnQocmVjaXBpZW50KQoKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFJlY2VpdmVyCiAgICAgICAgbGV0IHJlY2VpdmVyUmVmID0gcmVjaXBpZW50QWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvRmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgICAgICAKICAgICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgIH0KfQ==" } }, "testnet": { "version": "1.0", "ft": { - "isTokenListEnabled": "CiAgICAKICAgIC8vIEZsb3cgV2FsbGV0IC0gdGVzdG5ldCBTY3JpcHQgIGlzVG9rZW5MaXN0RW5hYmxlZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgIAogICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KICAgIGltcG9ydCBGaWF0VG9rZW4gZnJvbSAweGE5ODNmZWNiZWQ2MjExNjMNCmltcG9ydCBGbG92YXRhckR1c3RUb2tlbiBmcm9tIDB4OTM5MmE0YTdjM2Y0OWEwYg0KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4N2U2MGRmMDQyYTljMDg2OA0KaW1wb3J0IFVTRENGbG93IGZyb20gMHg2NGFkZjM5Y2JjMzU0ZmNiDQppbXBvcnQgc3RGbG93VG9rZW4gZnJvbSAweGU0NWM2NGVjZmUzMWU0NjUKCiAgICAKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZpYXRUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9VU0RDVmF1bHRSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9VU0RDVmF1bHRCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG92YXRhckR1c3RUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckR1c3RUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3ZhdGFyRHVzdFRva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zsb3dUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1VTRENGbG93VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3VzZGNGbG93UmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvdXNkY0Zsb3dNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrc3RGbG93VG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3RGbG93VG9rZW5SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9zdEZsb3dUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgCgogICAgYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcykgOiB7U3RyaW5nOiBCb29sfSB7CiAgICAgIHJldHVybiB7CiAgICAiQS5hOTgzZmVjYmVkNjIxMTYzLkZpYXRUb2tlbiIgOgogICAgY2hlY2tGaWF0VG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOTM5MmE0YTdjM2Y0OWEwYi5GbG92YXRhckR1c3RUb2tlbiIgOgogICAgY2hlY2tGbG92YXRhckR1c3RUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS43ZTYwZGYwNDJhOWMwODY4LkZsb3dUb2tlbiIgOgogICAgY2hlY2tGbG93VG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNjRhZGYzOWNiYzM1NGZjYi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lNDVjNjRlY2ZlMzFlNDY1LnN0Rmxvd1Rva2VuIiA6CiAgICBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgIH0KICAgIH0KICA=", - "getTokenListBalance": "CiAgICAKICAgIC8vIEZsb3cgV2FsbGV0IC0gdGVzdG5ldCBTY3JpcHQgIGdldFRva2VuTGlzdEJhbGFuY2VTdGFibGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAKICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRmlhdFRva2VuIGZyb20gMHhhOTgzZmVjYmVkNjIxMTYzDQppbXBvcnQgRmxvdmF0YXJEdXN0VG9rZW4gZnJvbSAweDkzOTJhNGE3YzNmNDlhMGINCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDdlNjBkZjA0MmE5YzA4NjgNCmltcG9ydCBVU0RDRmxvdyBmcm9tIDB4NjRhZGYzOWNiYzM1NGZjYg0KaW1wb3J0IHN0Rmxvd1Rva2VuIGZyb20gMHhlNDVjNjRlY2ZlMzFlNDY1CgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGaWF0VG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL1VTRENWYXVsdEJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG92YXRhckR1c3RUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvRmxvdmF0YXJEdXN0VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVVNEQ0Zsb3dCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL3VzZGNGbG93TWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tzdEZsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvc3RGbG93VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICAKCiAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IHtTdHJpbmc6IFVGaXg2NH0gewogICAgICByZXR1cm4gewogICAgICAiQS5hOTgzZmVjYmVkNjIxMTYzLkZpYXRUb2tlbiIgOgogICAgY2hlY2tGaWF0VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjkzOTJhNGE3YzNmNDlhMGIuRmxvdmF0YXJEdXN0VG9rZW4iIDoKICAgIGNoZWNrRmxvdmF0YXJEdXN0VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjdlNjBkZjA0MmE5YzA4NjguRmxvd1Rva2VuIiA6CiAgICBjaGVja0Zsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuNjRhZGYzOWNiYzM1NGZjYi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZTQ1YzY0ZWNmZTMxZTQ2NS5zdEZsb3dUb2tlbiIgOgogICAgY2hlY2tzdEZsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgIH0KICAgIH0KICA=", - "addToken": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBhZGRUb2tlbiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPiApID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC0gPFRva2VuPi5jcmVhdGVFbXB0eVZhdWx0KHZhdWx0VHlwZTogVHlwZTxAPFRva2VuPi5WYXVsdD4oKSksIHRvOiA8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgfQoKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICAgICAgCiAgICAgICAgfQogICAgICAgCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCBiYWxhbmNlQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goYmFsYW5jZUNhcGFiaWxpdHksIGF0OiA8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICAgICAgfQogICAgCiAgICB9Cn0=", - "enableTokenStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBlbmFibGVUb2tlblN0b3JhZ2UgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCY8VG9rZW4+LlZhdWx0Pihmcm9tOiA8VG9rZW5TdG9yYWdlUGF0aD4gKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtIDxUb2tlbj4uY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QDxUb2tlbj4uVmF1bHQ+KCkpLCB0bzogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgIH0KCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuUmVjZWl2ZXJQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8VG9rZW4+LlZhdWx0Pig8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcGFiaWxpdHksIGF0OiA8VG9rZW5SZWNlaXZlclBhdGg+KQogICAgICAgIAogICAgICAgIH0KICAgICAgIAogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlbkJhbGFuY2VQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgYmFsYW5jZUNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGJhbGFuY2VDYXBhYmlsaXR5LCBhdDogPFRva2VuQmFsYW5jZVBhdGg+KQogICAgICAgIH0KICAgIAogICAgfQp9", - "transferEvmTokens": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2ZlckV2bVRva2VucyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCi8vLyBUcmFuc2ZlcnMgJEZMT1cgZnJvbSB0aGUgc2lnbmVyJ3MgYWNjb3VudCBDYWRlbmNlIEZsb3cgYmFsYW5jZSB0byB0aGUgcmVjaXBpZW50J3MgaGV4LWVuY29kZWQgRVZNIGFkZHJlc3MuCi8vLyBOb3RlIHRoYXQgYSBDT0EgbXVzdCBoYXZlIGEgJEZMT1cgYmFsYW5jZSBpbiBFVk0gYmVmb3JlIHRyYW5zZmVycmluZyB2YWx1ZSB0byBhbm90aGVyIEVWTSBhZGRyZXNzLgovLy8KdHJhbnNhY3Rpb24odG9FVk1BZGRyZXNzSGV4OiBTdHJpbmcsIGFtb3VudDogVUludDI1NiwgZ2FzTGltaXQ6IFVJbnQ2NCkgewoKICAgIGxldCBjb2E6IGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzczogRVZNLkVWTUFkZHJlc3MKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IC9zdG9yYWdlL2V2bSkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LUVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCksIHRvOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgfQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgYnJpZGdlZCBhY2NvdW50IikKCiAgICAgICAgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHRvRVZNQWRkcmVzc0hleCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBpZiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MuYnl0ZXMgPT0gc2VsZi5jb2EuYWRkcmVzcygpLmJ5dGVzIHsKICAgICAgICAvLyAgICAgcmV0dXJuCiAgICAgICAgLy8gfQogICAgICAgIGxldCBkYXRhID0gIiIKICAgICAgICBsZXQgdHhSZXN1bHQgPSBzZWxmLmNvYS5jYWxsKAogICAgICAgICAgICB0bzogc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgICBnYXNMaW1pdDogZ2FzTGltaXQsCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZUJhbGFuY2UKICAgICAgICApCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgIH0KfQ==", - "transferTokens": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2ZlclRva2VucyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgcmVjaXBpZW50OiBBZGRyZXNzKSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcmVkCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnRBY2NvdW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnRBY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oPFRva2VuUmVjZWl2ZXJQYXRoPikhCiAgICAgICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9" + "isTokenListEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBpc1Rva2VuTGlzdEVuYWJsZWQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgogICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KICAgIGltcG9ydCBGaWF0VG9rZW4gZnJvbSAweGE5ODNmZWNiZWQ2MjExNjMNCmltcG9ydCBGbG92YXRhckR1c3RUb2tlbiBmcm9tIDB4OTM5MmE0YTdjM2Y0OWEwYg0KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4N2U2MGRmMDQyYTljMDg2OA0KaW1wb3J0IFVTRENGbG93IGZyb20gMHg2NGFkZjM5Y2JjMzU0ZmNiDQppbXBvcnQgc3RGbG93VG9rZW4gZnJvbSAweGU0NWM2NGVjZmUzMWU0NjUKCiAgICAKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja0ZpYXRUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9VU0RDVmF1bHRSZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9VU0RDVmF1bHRCYWxhbmNlKQoKICAgICAgbGV0IGZsYWcgPSByZWNlaXZlciAmJiBiYWxhbmNlICAgICAgCgogICAgICAgcmV0dXJuIGZsYWcKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG92YXRhckR1c3RUb2tlblZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCByZWNlaXZlcjogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GbG92YXRhckR1c3RUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3ZhdGFyRHVzdFRva2VuQmFsYW5jZSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKQoKICAgICAgbGV0IGJhbGFuY2U6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL2Zsb3dUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja1VTRENGbG93VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IHJlY2VpdmVyOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL3VzZGNGbG93UmVjZWl2ZXIpCgogICAgICBsZXQgYmFsYW5jZTogQm9vbCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvdXNkY0Zsb3dNZXRhZGF0YSkKCiAgICAgIGxldCBmbGFnID0gcmVjZWl2ZXIgJiYgYmFsYW5jZSAgICAgIAoKICAgICAgIHJldHVybiBmbGFnCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrc3RGbG93VG9rZW5WYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgcmVjZWl2ZXI6IEJvb2wgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvc3RGbG93VG9rZW5SZWNlaXZlcikKCiAgICAgIGxldCBiYWxhbmNlOiBCb29sID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9zdEZsb3dUb2tlbkJhbGFuY2UpCgogICAgICBsZXQgZmxhZyA9IHJlY2VpdmVyICYmIGJhbGFuY2UgICAgICAKCiAgICAgICByZXR1cm4gZmxhZwogICAgfQogICAgCgogICAgYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcykgOiB7U3RyaW5nOiBCb29sfSB7CiAgICAgIHJldHVybiB7CiAgICAiQS5hOTgzZmVjYmVkNjIxMTYzLkZpYXRUb2tlbiIgOgogICAgY2hlY2tGaWF0VG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuOTM5MmE0YTdjM2Y0OWEwYi5GbG92YXRhckR1c3RUb2tlbiIgOgogICAgY2hlY2tGbG92YXRhckR1c3RUb2tlblZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS43ZTYwZGYwNDJhOWMwODY4LkZsb3dUb2tlbiIgOgogICAgY2hlY2tGbG93VG9rZW5WYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuNjRhZGYzOWNiYzM1NGZjYi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd1ZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS5lNDVjNjRlY2ZlMzFlNDY1LnN0Rmxvd1Rva2VuIiA6CiAgICBjaGVja3N0Rmxvd1Rva2VuVmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgIH0KICAgIH0KICA=", + "getTokenListBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRUb2tlbkxpc3RCYWxhbmNlU3RhYmxlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRmlhdFRva2VuIGZyb20gMHhhOTgzZmVjYmVkNjIxMTYzDQppbXBvcnQgRmxvdmF0YXJEdXN0VG9rZW4gZnJvbSAweDkzOTJhNGE3YzNmNDlhMGINCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDdlNjBkZjA0MmE5YzA4NjgNCmltcG9ydCBVU0RDRmxvdyBmcm9tIDB4NjRhZGYzOWNiYzM1NGZjYg0KaW1wb3J0IHN0Rmxvd1Rva2VuIGZyb20gMHhlNDVjNjRlY2ZlMzFlNDY1CgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGaWF0VG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL1VTRENWYXVsdEJhbGFuY2UpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG92YXRhckR1c3RUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvRmxvdmF0YXJEdXN0VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgIC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrVVNEQ0Zsb3dCYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgLmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigvcHVibGljL3VzZGNGbG93TWV0YWRhdGEpID8/IG5pbAogICAgICAKICAgICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICAKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgICAgfQogICAgICAKICAgICAgcmV0dXJuIDAuMAogICAgICAKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tzdEZsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogQWRkcmVzcykgOiBVRml4NjQgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgICAuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvc3RGbG93VG9rZW5CYWxhbmNlKSA/PyBuaWwKICAgICAgCiAgICAgIGlmIHZhdWx0UmVmICE9IG5pbCB7CiAgICAgICAgCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmIS5iYWxhbmNlCiAgICAgIH0KICAgICAgCiAgICAgIHJldHVybiAwLjAKICAgICAgCiAgICB9CiAgICAKCiAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IHtTdHJpbmc6IFVGaXg2NH0gewogICAgICByZXR1cm4gewogICAgICAiQS5hOTgzZmVjYmVkNjIxMTYzLkZpYXRUb2tlbiIgOgogICAgY2hlY2tGaWF0VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjkzOTJhNGE3YzNmNDlhMGIuRmxvdmF0YXJEdXN0VG9rZW4iIDoKICAgIGNoZWNrRmxvdmF0YXJEdXN0VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAgICJBLjdlNjBkZjA0MmE5YzA4NjguRmxvd1Rva2VuIiA6CiAgICBjaGVja0Zsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuNjRhZGYzOWNiYzM1NGZjYi5VU0RDRmxvdyIgOgogICAgY2hlY2tVU0RDRmxvd0JhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgICwKICAgICAgIkEuZTQ1YzY0ZWNmZTMxZTQ2NS5zdEZsb3dUb2tlbiIgOgogICAgY2hlY2tzdEZsb3dUb2tlbkJhbGFuY2UoYWRkcmVzczogYWRkcmVzcykKICAgIH0KICAgIH0KICA=", + "addToken": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYWRkVG9rZW4gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uIHsKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmPFRva2VuPi5WYXVsdD4oZnJvbTogPFRva2VuU3RvcmFnZVBhdGg+ICkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LSA8VG9rZW4+LmNyZWF0ZUVtcHR5VmF1bHQodmF1bHRUeXBlOiBUeXBlPEA8VG9rZW4+LlZhdWx0PigpKSwgdG86IDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICB9CgogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlblJlY2VpdmVyUGF0aD4pID09IGZhbHNlIHsKICAgICAgICAgICAgbGV0IHJlY2VpdmVyQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXBhYmlsaXR5LCBhdDogPFRva2VuUmVjZWl2ZXJQYXRoPikKICAgICAgICAKICAgICAgICB9CiAgICAgICAKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5CYWxhbmNlUGF0aD4pID09IGZhbHNlIHsKICAgICAgICAgICAgbGV0IGJhbGFuY2VDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8VG9rZW4+LlZhdWx0Pig8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChiYWxhbmNlQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlbkJhbGFuY2VQYXRoPikKICAgICAgICB9CiAgICAKICAgIH0KfQ==", + "enableTokenStorage": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZW5hYmxlVG9rZW5TdG9yYWdlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPiApID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC0gPFRva2VuPi5jcmVhdGVFbXB0eVZhdWx0KHZhdWx0VHlwZTogVHlwZTxAPFRva2VuPi5WYXVsdD4oKSksIHRvOiA8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgfQoKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICAgICAgCiAgICAgICAgfQogICAgICAgCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCBiYWxhbmNlQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goYmFsYW5jZUNhcGFiaWxpdHksIGF0OiA8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICAgICAgfQogICAgCiAgICB9Cn0=", + "transferEvmTokens": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJFdm1Ub2tlbnMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRyYW5zZmVycyAkRkxPVyBmcm9tIHRoZSBzaWduZXIncyBhY2NvdW50IENhZGVuY2UgRmxvdyBiYWxhbmNlIHRvIHRoZSByZWNpcGllbnQncyBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcy4KLy8vIE5vdGUgdGhhdCBhIENPQSBtdXN0IGhhdmUgYSAkRkxPVyBiYWxhbmNlIGluIEVWTSBiZWZvcmUgdHJhbnNmZXJyaW5nIHZhbHVlIHRvIGFub3RoZXIgRVZNIGFkZHJlc3MuCi8vLwp0cmFuc2FjdGlvbih0b0VWTUFkZHJlc3NIZXg6IFN0cmluZywgYW1vdW50OiBVSW50MjU2LCBnYXNMaW1pdDogVUludDY0KSB7CgogICAgbGV0IGNvYTogYXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzOiBFVk0uRVZNQWRkcmVzcwoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogL3N0b3JhZ2UvZXZtKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKSwgdG86IC9zdG9yYWdlL2V2bSkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBicmlkZ2VkIGFjY291bnQiKQoKICAgICAgICBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcodG9FVk1BZGRyZXNzSGV4KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIGlmIHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcy5ieXRlcyA9PSBzZWxmLmNvYS5hZGRyZXNzKCkuYnl0ZXMgewogICAgICAgIC8vICAgICByZXR1cm4KICAgICAgICAvLyB9CiAgICAgICAgbGV0IGRhdGEgPSAiIgogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQogICAgfQp9", + "transferTokens": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJUb2tlbnMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKCiAgICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVyZWQKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmPFRva2VuPi5WYXVsdD4oZnJvbTogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgICAgbGV0IHJlY2lwaWVudEFjY291bnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudEFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pig8VG9rZW5SZWNlaXZlclBhdGg+KSEKICAgICAgICAgICAgCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0=" }, "nft": { - "checkNFTListEnabledNew": "CiAgICAKICAgIC8vIEZsb3cgV2FsbGV0IC0gdGVzdG5ldCBTY3JpcHQgIGNoZWNrTkZUTGlzdEVuYWJsZWQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAKICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRlJDMjBTZW1pTkZUIGZyb20gMHhiNzI0OGJhYTI0YTk1YzNmDQppbXBvcnQgbmJhX05GVCBmcm9tIDB4MDQ2MjVjMjg1OTNkOTQwOA0KaW1wb3J0IE1vbnN0ZXJNYWtlciBmcm9tIDB4NzI0YTlkYTAwMzQwZjE0Yw0KaW1wb3J0IEV4YW1wbGVORlQgZnJvbSAweDM5MGI0NzA1ZGE2MzA1YzMNCmltcG9ydCBGbG93dHlUZXN0TkZUIGZyb20gMHhkOWMwMmNkYWNjY2IyNWFiCgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGUkMyMFNlbWlORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GUkMyMFNlbWlORlRfMHhiNzI0OGJhYTI0YTk1YzNmY29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja25iYV9ORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9uYmFfTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01vbnN0ZXJNYWtlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01vbnN0ZXJNYWtlckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tFeGFtcGxlTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2FkZW5jZUV4YW1wbGVORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd3R5VGVzdE5GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3d0eVRlc3RORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICAKCiAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IHtTdHJpbmc6IEJvb2x9IHsKICAgICAgcmV0dXJuIHsKICAgICJBLmI3MjQ4YmFhMjRhOTVjM2YuRlJDMjBTZW1pTkZUIiA6CiAgICBjaGVja0ZSQzIwU2VtaU5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wNDYyNWMyODU5M2Q5NDA4Lm5iYV9ORlQiIDoKICAgIGNoZWNrbmJhX05GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS43MjRhOWRhMDAzNDBmMTRjLk1vbnN0ZXJNYWtlciIgOgogICAgY2hlY2tNb25zdGVyTWFrZXJWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzkwYjQ3MDVkYTYzMDVjMy5FeGFtcGxlTkZUIiA6CiAgICBjaGVja0V4YW1wbGVORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZDljMDJjZGFjY2NiMjVhYi5GbG93dHlUZXN0TkZUIiA6CiAgICBjaGVja0Zsb3d0eVRlc3RORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgfQogICAgfQogIA==" + "checkNFTListEnabledNew": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja05GVExpc3RFbmFibGVkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRlJDMjBTZW1pTkZUIGZyb20gMHhiNzI0OGJhYTI0YTk1YzNmDQppbXBvcnQgbmJhX05GVCBmcm9tIDB4MDQ2MjVjMjg1OTNkOTQwOA0KaW1wb3J0IE1vbnN0ZXJNYWtlciBmcm9tIDB4NzI0YTlkYTAwMzQwZjE0Yw0KaW1wb3J0IEV4YW1wbGVORlQgZnJvbSAweDM5MGI0NzA1ZGE2MzA1YzMNCmltcG9ydCBGbG93dHlUZXN0TkZUIGZyb20gMHhkOWMwMmNkYWNjY2IyNWFiCgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGUkMyMFNlbWlORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GUkMyMFNlbWlORlRfMHhiNzI0OGJhYTI0YTk1YzNmY29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja25iYV9ORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9uYmFfTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01vbnN0ZXJNYWtlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01vbnN0ZXJNYWtlckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tFeGFtcGxlTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2FkZW5jZUV4YW1wbGVORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd3R5VGVzdE5GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3d0eVRlc3RORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICAKCiAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IHtTdHJpbmc6IEJvb2x9IHsKICAgICAgcmV0dXJuIHsKICAgICJBLmI3MjQ4YmFhMjRhOTVjM2YuRlJDMjBTZW1pTkZUIiA6CiAgICBjaGVja0ZSQzIwU2VtaU5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wNDYyNWMyODU5M2Q5NDA4Lm5iYV9ORlQiIDoKICAgIGNoZWNrbmJhX05GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS43MjRhOWRhMDAzNDBmMTRjLk1vbnN0ZXJNYWtlciIgOgogICAgY2hlY2tNb25zdGVyTWFrZXJWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzkwYjQ3MDVkYTYzMDVjMy5FeGFtcGxlTkZUIiA6CiAgICBjaGVja0V4YW1wbGVORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZDljMDJjZGFjY2NiMjVhYi5GbG93dHlUZXN0TkZUIiA6CiAgICBjaGVja0Zsb3d0eVRlc3RORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgfQogICAgfQogIA==", + "checkNFTListEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja05GVExpc3RFbmFibGVkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgICBpbXBvcnQgRlJDMjBTZW1pTkZUIGZyb20gMHhiNzI0OGJhYTI0YTk1YzNmDQppbXBvcnQgbmJhX05GVCBmcm9tIDB4MDQ2MjVjMjg1OTNkOTQwOA0KaW1wb3J0IE1vbnN0ZXJNYWtlciBmcm9tIDB4NzI0YTlkYTAwMzQwZjE0Yw0KaW1wb3J0IEV4YW1wbGVORlQgZnJvbSAweDM5MGI0NzA1ZGE2MzA1YzMNCmltcG9ydCBGbG93dHlUZXN0TkZUIGZyb20gMHhkOWMwMmNkYWNjY2IyNWFiCgogICAgCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tGUkMyMFNlbWlORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9GUkMyMFNlbWlORlRfMHhiNzI0OGJhYTI0YTk1YzNmY29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja25iYV9ORlRWYXVsdChhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5leGlzdHMoL3B1YmxpYy9uYmFfTkZUQ29sbGVjdGlvbikKCiAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQogICAgDQoKICAgIGFjY2VzcyhhbGwpIGZ1biBjaGVja01vbnN0ZXJNYWtlclZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL01vbnN0ZXJNYWtlckNvbGxlY3Rpb24pCgogICAgICByZXR1cm4gdmF1bHRSZWYKICAgIH0KICAgIA0KCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2tFeGFtcGxlTkZUVmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZXhpc3RzKC9wdWJsaWMvY2FkZW5jZUV4YW1wbGVORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICANCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd3R5VGVzdE5GVFZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmV4aXN0cygvcHVibGljL0Zsb3d0eVRlc3RORlRDb2xsZWN0aW9uKQoKICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CiAgICAKCiAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IHtTdHJpbmc6IEJvb2x9IHsKICAgICAgcmV0dXJuIHsKICAgICJBLmI3MjQ4YmFhMjRhOTVjM2YuRlJDMjBTZW1pTkZUIiA6CiAgICBjaGVja0ZSQzIwU2VtaU5GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS4wNDYyNWMyODU5M2Q5NDA4Lm5iYV9ORlQiIDoKICAgIGNoZWNrbmJhX05GVFZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICAsCiAgICAiQS43MjRhOWRhMDAzNDBmMTRjLk1vbnN0ZXJNYWtlciIgOgogICAgY2hlY2tNb25zdGVyTWFrZXJWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuMzkwYjQ3MDVkYTYzMDVjMy5FeGFtcGxlTkZUIiA6CiAgICBjaGVja0V4YW1wbGVORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgLAogICAgIkEuZDljMDJjZGFjY2NiMjVhYi5GbG93dHlUZXN0TkZUIiA6CiAgICBjaGVja0Zsb3d0eVRlc3RORlRWYXVsdChhZGRyZXNzOiBhZGRyZXNzKQogICAgfQogICAgfQogIA==" }, "basic": { - "accountStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBhY2NvdW50U3RvcmFnZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAgYWNjZXNzKGFsbCkgc3RydWN0IFN0b3JhZ2VJbmZvIHsKICAgIGFjY2VzcyhhbGwpICBsZXQgY2FwYWNpdHk6IFVJbnQ2NAogICAgYWNjZXNzKGFsbCkgIGxldCB1c2VkOiBVSW50NjQKICAgIGFjY2VzcyhhbGwpICBsZXQgYXZhaWxhYmxlOiBVSW50NjQKCiAgICBpbml0KGNhcGFjaXR5OiBVSW50NjQsIHVzZWQ6IFVJbnQ2NCwgYXZhaWxhYmxlOiBVSW50NjQpIHsKICAgICAgICBzZWxmLmNhcGFjaXR5ID0gY2FwYWNpdHkKICAgICAgICBzZWxmLnVzZWQgPSB1c2VkCiAgICAgICAgc2VsZi5hdmFpbGFibGUgPSBhdmFpbGFibGUKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IFN0b3JhZ2VJbmZvIHsKICAgIGxldCBhY2N0ID0gZ2V0QWNjb3VudChhZGRyKQogICAgcmV0dXJuIFN0b3JhZ2VJbmZvKGNhcGFjaXR5OiBhY2N0LnN0b3JhZ2UuY2FwYWNpdHksCiAgICAgICAgICAgIHVzZWQ6IGFjY3Quc3RvcmFnZS51c2VkLAogICAgICAgICAgICBhdmFpbGFibGU6IGFjY3Quc3RvcmFnZS5jYXBhY2l0eSAtIGFjY3Quc3RvcmFnZS51c2VkKQp9", - "addContractToAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBhZGRDb250cmFjdFRvQWNjb3VudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICB0cmFuc2FjdGlvbihuYW1lOiBTdHJpbmcsIGNvZGU6IFN0cmluZykgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29udHJhY3RzLCBBZGRDb250cmFjdCkgJkFjY291bnQpIHsKICAgICAgICBzaWduZXIuY29udHJhY3RzLmFkZChuYW1lOiBuYW1lLCBjb2RlOiBjb2RlLnV0ZjgpCiAgICB9Cn0=", - "addKey": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBhZGRLZXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcsIHNpZ25hdHVyZUFsZ29yaXRobTogVUludDgsIGhhc2hBbGdvcml0aG06IFVJbnQ4LCB3ZWlnaHQ6IFVGaXg2NCkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoS2V5cykgJkFjY291bnQpIHsKICAgICAgICBsZXQga2V5ID0gUHVibGljS2V5KAogICAgICAgICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25hdHVyZUFsZ29yaXRobSkhCiAgICAgICAgKQoKICAgICAgICBzaWduZXIua2V5cy5hZGQoCiAgICAgICAgICAgIHB1YmxpY0tleToga2V5LAogICAgICAgICAgICBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3JpdGhtKSEsCiAgICAgICAgICAgIHdlaWdodDogd2VpZ2h0CiAgICAgICAgKQogICAgfQp9", - "addKeyTemp": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBhZGRLZXlUZW1wIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCnRyYW5zYWN0aW9uKHB1YmxpY0tleXM6IFtDcnlwdG8uS2V5TGlzdEVudHJ5XSwgY29udHJhY3RzOiB7U3RyaW5nOiBTdHJpbmd9KSB7CglwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSB8IFN0b3JhZ2UpICZBY2NvdW50KSB7CgoJCWxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKCQkvLyBhZGQgYWxsIHRoZSBrZXlzIHRvIHRoZSBhY2NvdW50CgkJZm9yIGtleSBpbiBwdWJsaWNLZXlzIHsKCQkJYWNjb3VudC5rZXlzLmFkZChwdWJsaWNLZXk6IGtleS5wdWJsaWNLZXksIGhhc2hBbGdvcml0aG06IGtleS5oYXNoQWxnb3JpdGhtLCB3ZWlnaHQ6IGtleS53ZWlnaHQpCgkJfQoJCQoJCS8vIGFkZCBjb250cmFjdHMgaWYgcHJvdmlkZWQKCQlmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewoJCQlhY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQoJCX0KCX0KfQ==", - "createAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjcmVhdGVBY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MTY1NDY1MzM5OTA0MGE2MQppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZjIzM2RjZWU4OGZlMGFiZQoKIHRyYW5zYWN0aW9uKHB1YmxpY0tleXM6IFtDcnlwdG8uS2V5TGlzdEVudHJ5XSwgY29udHJhY3RzOiB7U3RyaW5nOiBTdHJpbmd9LCBmdW5kQW1vdW50OiBVRml4NjQpIHsKICAgIGxldCB0b2tlblJlY2VpdmVyOiAme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9CiAgICBsZXQgc2VudFZhdWx0OiBARnVuZ2libGVUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlIHwgU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgYWNjb3VudCA9IEFjY291bnQocGF5ZXI6IHNpZ25lcikKICAgICAgICBmb3Iga2V5IGluIHB1YmxpY0tleXMgewogICAgICAgICAgICBhY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LnB1YmxpY0tleSwgaGFzaEFsZ29yaXRobToga2V5Lmhhc2hBbGdvcml0aG0sIHdlaWdodDoga2V5LndlaWdodCkKICAgICAgICB9CiAgICAgICAgZm9yIGNvbnRyYWN0IGluIGNvbnRyYWN0cy5rZXlzIHsKICAgICAgICAgICAgYWNjb3VudC5jb250cmFjdHMuYWRkKG5hbWU6IGNvbnRyYWN0LCBjb2RlOiBjb250cmFjdHNbY29udHJhY3RdIS5kZWNvZGVIZXgoKSkKICAgICAgICB9CiAgICAgICAgc2VsZi50b2tlblJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpID8/IHBhbmljKCJVbmFibGUgdG8gYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSIpCiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXInJ3MgVmF1bHQhIikKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGZ1bmRBbW91bnQpCiAgICB9CiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnRva2VuUmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQogfQ==", - "createAccountSdk": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjcmVhdGVBY2NvdW50U2RrIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCnRyYW5zYWN0aW9uKHB1YmxpY0tleTogU3RyaW5nLCBzaWduYXR1cmVBbGdvcml0aG06IFVJbnQ4LCBoYXNoQWxnb3JpdGhtOiBVSW50OCwgd2VpZ2h0OiBVRml4NjQsIGNvbnRyYWN0czoge1N0cmluZzogU3RyaW5nfSkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUgfCBTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKICAgICAgICBsZXQga2V5ID0gUHVibGljS2V5KAogICAgICAgICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25hdHVyZUFsZ29yaXRobSkhCiAgICAgICAgKQoKICAgICAgICBhY2NvdW50LmtleXMuYWRkKAogICAgICAgICAgICBwdWJsaWNLZXk6IGtleSwKICAgICAgICAgICAgaGFzaEFsZ29yaXRobTogSGFzaEFsZ29yaXRobShyYXdWYWx1ZTogaGFzaEFsZ29yaXRobSkhLAogICAgICAgICAgICB3ZWlnaHQ6IHdlaWdodAogICAgICAgICkKCiAgICAgICAgZm9yIGNvbnRyYWN0IGluIGNvbnRyYWN0cy5rZXlzIHsKICAgICAgICAgICAgYWNjb3VudC5jb250cmFjdHMuYWRkKG5hbWU6IGNvbnRyYWN0LCBjb2RlOiBjb250cmFjdHNbY29udHJhY3RdIS5kZWNvZGVIZXgoKSkKICAgICAgICB9CiAgICB9Cn0=", - "getAccountInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2NvdW50SW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBhY2Nlc3MoYWxsKSBzdHJ1Y3QgUmVzdWx0IHsKICBhY2Nlc3MoYWxsKSBsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpIGxldCBiYWxhbmNlOiBVRml4NjQKICBhY2Nlc3MoYWxsKSBsZXQgYXZhaWxhYmxlQmFsYW5jZTogVUZpeDY0CiAgYWNjZXNzKGFsbCkgbGV0IHN0b3JhZ2VVc2VkOiBVSW50NjQKICBhY2Nlc3MoYWxsKSBsZXQgc3RvcmFnZUNhcGFjaXR5OiBVSW50NjQKCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsCiAgICBiYWxhbmNlOiBVRml4NjQsCiAgICBhdmFpbGFibGVCYWxhbmNlOiBVRml4NjQsCiAgICBzdG9yYWdlVXNlZDogVUludDY0LAogICAgc3RvcmFnZUNhcGFjaXR5OiBVSW50NjQKICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICAgIHNlbGYuYXZhaWxhYmxlQmFsYW5jZSA9IGF2YWlsYWJsZUJhbGFuY2UKICAgIHNlbGYuc3RvcmFnZVVzZWQgPSBzdG9yYWdlVXNlZAogICAgc2VsZi5zdG9yYWdlQ2FwYWNpdHkgPSBzdG9yYWdlQ2FwYWNpdHkKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBSZXN1bHQgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHJldHVybiBSZXN1bHQoCiAgICBhZGRyZXNzOiBhY2NvdW50LmFkZHJlc3MsCiAgICBiYWxhbmNlOiBhY2NvdW50LmJhbGFuY2UsCiAgICBhdmFpbGFibGVCYWxhbmNlOiBhY2NvdW50LmF2YWlsYWJsZUJhbGFuY2UsCiAgICBzdG9yYWdlVXNlZDogYWNjb3VudC5zdG9yYWdlLnVzZWQsCiAgICBzdG9yYWdlQ2FwYWNpdHk6IGFjY291bnQuc3RvcmFnZS5jYXBhY2l0eQogICkKfQ==", - "getAccountMinFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2NvdW50TWluRmxvdyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICByZXR1cm4gYWNjb3VudC5iYWxhbmNlIC0gYWNjb3VudC5hdmFpbGFibGVCYWxhbmNlCn0=", - "getAccountTotalFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2NvdW50VG90YWxGbG93QmFsYW5jZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2Ci8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCB1bmxvY2tlZFZhdWx0ID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvZmxvd1Rva2VuQmFsYW5jZSkhCiAgICAgIC5ib3Jyb3coKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IEJhbGFuY2UgcmVmZXJlbmNlIHRvIHRoZSBWYXVsdCIpCiAgICBsZXQgdW5sb2NrZWRCYWxhbmNlID0gdW5sb2NrZWRWYXVsdC5iYWxhbmNlCiAgICAgICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0CiAgICAgIDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgcmV0dXJuIHVubG9ja2VkQmFsYW5jZQogICAgfQogICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIAogICAgcmV0dXJuIGxvY2tlZEJhbGFuY2UgKyB1bmxvY2tlZEJhbGFuY2UKfQ==", - "getAccountTotalLockedFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2NvdW50VG90YWxMb2NrZWRGbG93QmFsYW5jZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCgovLyBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZWU4Mjg1NmJmMjBlMmFhNgovLyBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgwYWU1M2NiNmUzZjQyYTc5Ci8vIGltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweGY4ZDZlMDU4NmIwYTIwYzcKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBVRml4NjQgewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogICAgbGV0IGxvY2tlZEFjY291bnRJbmZvQ2FwID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmdldAogICAgICA8JkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcj4KICAgICAgKExvY2tlZFRva2Vucy5Mb2NrZWRBY2NvdW50SW5mb1B1YmxpY1BhdGgpCiAgICBpZiBsb2NrZWRBY2NvdW50SW5mb0NhcCA9PSBuaWwgfHwgIShsb2NrZWRBY2NvdW50SW5mb0NhcCEuY2hlY2soKSkgewogICAgICAgIHJldHVybiBVRml4NjQoMCkKICAgIH0KICAgIAogICAgbGV0IGxvY2tlZEFjY291bnRJbmZvUmVmID0gbG9ja2VkQWNjb3VudEluZm9DYXAhLmJvcnJvdygpIQogICAgbGV0IGxvY2tlZEJhbGFuY2UgPSBsb2NrZWRBY2NvdW50SW5mb1JlZi5nZXRMb2NrZWRBY2NvdW50QmFsYW5jZSgpCiAgICAKICAgIHJldHVybiBsb2NrZWRCYWxhbmNlCn0=", - "getAccountTotalUnlockedFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2NvdW50VG90YWxVbmxvY2tlZEZsb3dCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIC8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCi8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2CmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICBsZXQgdW5sb2NrZWRWYXVsdCA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5nZXQ8JkZsb3dUb2tlbi5WYXVsdD4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKSEKICAgICAgLmJvcnJvdygpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQmFsYW5jZSByZWZlcmVuY2UgdG8gdGhlIFZhdWx0IikKICAgIGxldCB1bmxvY2tlZEJhbGFuY2UgPSB1bmxvY2tlZFZhdWx0LmJhbGFuY2UKCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0CiAgICAgIDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgcmV0dXJuIHVubG9ja2VkQmFsYW5jZQogICAgfQogICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIGxldCBsb2NrZWRCYWxhbmNlVW5sb2NrZWQgPSBsb2NrZWRBY2NvdW50SW5mb1JlZi5nZXRVbmxvY2tMaW1pdCgpCgogICAgaWYgbG9ja2VkQmFsYW5jZSA9PSBVRml4NjQoMCkgewogICAgICAgIHJldHVybiB1bmxvY2tlZEJhbGFuY2UKICAgIH0KCiAgICBpZiBsb2NrZWRCYWxhbmNlVW5sb2NrZWQgPiBsb2NrZWRCYWxhbmNlIHsKICAgICAgICByZXR1cm4gdW5sb2NrZWRCYWxhbmNlICsgbG9ja2VkQmFsYW5jZQogICAgfQoKICAgIHJldHVybiBsb2NrZWRCYWxhbmNlVW5sb2NrZWQgKyB1bmxvY2tlZEJhbGFuY2UKfQ==", - "getFindAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRGaW5kQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRklORCBmcm9tIDB4RmluZAovL0NoZWNrIHRoZSBzdGF0dXMgb2YgYSBmaW4gdXNlcgphY2Nlc3MoYWxsKSBmdW4gbWFpbihuYW1lOiBTdHJpbmcpIDogQWRkcmVzcz8gewogICAgbGV0IHN0YXR1cyA9IEZJTkQuc3RhdHVzKG5hbWUpCiAgICByZXR1cm4gc3RhdHVzLm93bmVyCn0=", - "getFindDomainByAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRGaW5kRG9tYWluQnlBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGSU5EIGZyb20gMHhGaW5kCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IFN0cmluZz97CiAgICByZXR1cm4gRklORC5yZXZlcnNlTG9va3VwKGFkZHJlc3MpCn0=", - "getFlownsAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRGbG93bnNBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93bnMgZnJvbSAweEZsb3ducwppbXBvcnQgRG9tYWlucyBmcm9tIDB4RG9tYWlucwoKYWNjZXNzKGFsbCkgZnVuIG1haW4obmFtZTogU3RyaW5nLCByb290OiBTdHJpbmcpIDogQWRkcmVzcz8gewogICAgbGV0IHByZWZpeCA9ICIweCIKICAgIGxldCByb290SGFoc2ggPSBGbG93bnMuaGFzaChub2RlOiAiIiwgbGFibGU6IHJvb3QpCiAgICBsZXQgbmFtZWhhc2ggPSBwcmVmaXguY29uY2F0KEZsb3ducy5oYXNoKG5vZGU6IHJvb3RIYWhzaCwgbGFibGU6IG5hbWUpKQogICAgdmFyIGFkZHJlc3MgPSBEb21haW5zLmdldFJlY29yZHMobmFtZWhhc2gpCiAgICByZXR1cm4gYWRkcmVzcwp9", - "getFlownsDomainsByAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRGbG93bnNEb21haW5zQnlBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBEb21haW5zIGZyb20gMHhEb21haW5zCi8vIGFkZHJlc3M6IEZsb3cgYWRkcmVzcwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtEb21haW5zLkRvbWFpbkRldGFpbF0gewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICBsZXQgY29sbGVjdGlvbkNhcCA9IGFjY291bnQuZ2V0Q2FwYWJpbGl0eTwme0RvbWFpbnMuQ29sbGVjdGlvblB1YmxpY30+KERvbWFpbnMuQ29sbGVjdGlvblB1YmxpY1BhdGgpCiAgICBsZXQgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25DYXAuYm9ycm93KCkhCiAgICBsZXQgZG9tYWluczpbRG9tYWlucy5Eb21haW5EZXRhaWxdID0gW10KICAgIGxldCBpZHMgPSBjb2xsZWN0aW9uLmdldElEcygpCgogICAgZm9yIGlkIGluIGlkcyB7CiAgICAgICAgbGV0IGRvbWFpbiA9IGNvbGxlY3Rpb24uYm9ycm93RG9tYWluKGlkOiBpZCkKICAgICAgICBsZXQgZGV0YWlsID0gZG9tYWluLmdldERldGFpbCgpCiAgICAgICAgZG9tYWlucy5hcHBlbmQoZGV0YWlsKQogICAgfQoKICAgIHJldHVybiBkb21haW5zCn0=", - "getStorageInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRTdG9yYWdlSW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAgYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IHtTdHJpbmc6IFVJbnQ2NH0gewogICAgbGV0IGFjY3QgPSBnZXRBY2NvdW50KGFkZHIpCiAgICBsZXQgcmV0OiB7U3RyaW5nOiBVSW50NjR9ID0ge30KICAgIHJldFsiY2FwYWNpdHkiXSA9IGFjY3Quc3RvcmFnZS5jYXBhY2l0eQogICAgcmV0WyJ1c2VkIl0gPSBhY2N0LnN0b3JhZ2UudXNlZAogICAgcmV0WyJhdmFpbGFibGUiXSA9IGFjY3Quc3RvcmFnZS5jYXBhY2l0eSAtICBhY2N0LnN0b3JhZ2UudXNlZAogICAgcmV0dXJuIHJldAp9", - "getTokenBalanceWithModel": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRUb2tlbkJhbGFuY2VXaXRoTW9kZWwgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9Pig8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBCYWxhbmNlIGNhcGFiaWxpdHkiKQoKICAgIHJldHVybiB2YXVsdFJlZi5iYWxhbmNlCn0=", - "isKeyHasFullAuth": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBpc0tleUhhc0Z1bGxBdXRoIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwdWJsaWNLZXk6IFN0cmluZyk6IEJvb2wgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHZhciBmbGFnID0gZmFsc2UKICBmdW4gYWNjb3VudEZuKGFjY291bnRLZXk6IEFjY291bnRLZXkpOiBCb29sIHsKICAgIGxldCBrZXkgPSBTdHJpbmcuZW5jb2RlSGV4KGFjY291bnRLZXkucHVibGljS2V5LnB1YmxpY0tleSkKICAgIGlmIHB1YmxpY0tleSA9PSBrZXkgewogICAgICBmbGFnID0gYWNjb3VudEtleS53ZWlnaHQgPj0gVUZpeDY0KDEwMDApICYmICFhY2NvdW50S2V5LmlzUmV2b2tlZAogICAgfQogICAgcmV0dXJuIGZhbHNlCiAgfQogIGFjY291bnQua2V5cy5mb3JFYWNoKGFjY291bnRGbikKCiAgcmV0dXJuIGZsYWcKfQo=", - "isKeysHasFullAuth": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBpc0tleXNIYXNGdWxsQXV0aCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcHVibGljS2V5czogW1N0cmluZ10pOiBCb29sIHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICB2YXIgd2VpZ2h0OiBVRml4NjQgPSAwLjAKICBmdW4gYWNjb3VudEZuKGFjY291bnRLZXk6IEFjY291bnRLZXkpOiBCb29sIHsKICAgIGxldCBrZXkgPSBTdHJpbmcuZW5jb2RlSGV4KGFjY291bnRLZXkucHVibGljS2V5LnB1YmxpY0tleSkKICAgIGlmIHB1YmxpY0tleXMuY29udGFpbnMoa2V5KSAmJiAhYWNjb3VudEtleS5pc1Jldm9rZWQgewogICAgICB3ZWlnaHQgPSB3ZWlnaHQgKyBhY2NvdW50S2V5LndlaWdodCAKICAgIH0KICAgIHJldHVybiBmYWxzZQogIH0KICBhY2NvdW50LmtleXMuZm9yRWFjaChhY2NvdW50Rm4pCgogIHJldHVybiB3ZWlnaHQgPj0gVUZpeDY0KDEwMDApCn0K", - "isLockedFlowEnable": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBpc0xvY2tlZEZsb3dFbmFibGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogQm9vbCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIHJldHVybiBhY2NvdW50LmNhcGFiaWxpdGllcy5leGlzdHMoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKfQ==", - "isTokenStorageEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBpc1Rva2VuU3RvcmFnZUVuYWJsZWQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAKICAgIGxldCByZWNlaXZlciA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KQogICAgbGV0IGJhbGFuY2UgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KQoKICAgIHJldHVybiByZWNlaXZlciAmJiBiYWxhbmNlCn0=", - "queryCustomFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBxdWVyeUN1c3RvbUZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cwoKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgY29udHJhY3ROYW1lOiBTdHJpbmcpOiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YSB7CiAgICAKICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KGNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IGNvbnRyYWN0TmFtZSkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKICAgIHJldHVybiB2YXVsdERhdGEKfQ==", - "queryCustomNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBxdWVyeUN1c3RvbU5GVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhNZXRhZGF0YVZpZXdzCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihjb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIGNvbnRyYWN0TmFtZTogU3RyaW5nKTogTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YSB7CgogICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQoY29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogY29udHJhY3ROYW1lKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAKICAgIHJldHVybiBjb2xsZWN0aW9uRGF0YQp9", - "queryFlowBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBxdWVyeUZsb3dCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBBZGRyZXNzKSA6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KC9wdWJsaWMvZmxvd1Rva2VuQmFsYW5jZSkKICAgID8/IG5pbAoKICAgIAogICAgaWYgdmF1bHRSZWYgIT0gbmlsIHsKICAgICAgICByZXR1cm4gdmF1bHRSZWYhLmJhbGFuY2UKICAgIH0KICAgIAogICAgcmV0dXJuIDAuMAp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyczogW0FkZHJlc3NdKTogW1VGaXg2NF0gewogICAgbGV0IGJhbHM6IFtVRml4NjRdID0gW10KCiAgICBmb3IgYWRkciBpbiBhZGRycyB7CiAgICAgICAgbGV0IGJhbCA9IGNoZWNrRmxvd1Rva2VuQmFsYW5jZShhZGRyZXNzOiBhZGRyKQogICAgICAgIGJhbHMuYXBwZW5kKGJhbCkKICAgIH0KICAgIAogICAgcmV0dXJuIGJhbHMKfQ==", - "removeAccountKeyByIndex": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICByZW1vdmVBY2NvdW50S2V5QnlJbmRleCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICB0cmFuc2FjdGlvbihrZXlJbmRleDogSW50KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIHNpZ25lci5rZXlzLnJldm9rZShrZXlJbmRleDoga2V5SW5kZXgpCiAgICB9Cn0=", - "removeContractFromAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICByZW1vdmVDb250cmFjdEZyb21BY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIHRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZykgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoUmVtb3ZlQ29udHJhY3QpICZBY2NvdW50KSB7CiAgICAgICAgc2lnbmVyLmNvbnRyYWN0cy5yZW1vdmUobmFtZTogbmFtZSkKICAgIH0KfQ==", - "revokeKey": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICByZXZva2VLZXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgdHJhbnNhY3Rpb24oaW5kZXg6IEludCkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoS2V5cykgJkFjY291bnQpIHsKICAgICAgICAvLyBHZXQgYSBrZXkgZnJvbSBhbiBhdXRoIGFjY291bnQuCiAgICAgICAgbGV0IGtleUEgPSBzaWduZXIua2V5cy5yZXZva2Uoa2V5SW5kZXg6IGluZGV4KQogICAgfQp9", - "test": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0ZXN0IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHg5YTA3NjZkOTNiNjYwOGI3CmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDdlNjBkZjA0MmE5YzA4NjgKCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKCiAgICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVyZWQKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnRBY2NvdW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnRBY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikhCiAgICAgICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9", - "updateContractOfAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB1cGRhdGVDb250cmFjdE9mQWNjb3VudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICB0cmFuc2FjdGlvbihuYW1lOiBTdHJpbmcsIGNvZGU6IFN0cmluZykgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoVXBkYXRlQ29udHJhY3QpICZBY2NvdW50KSB7CiAgICAgICAgc2lnbmVyLmNvbnRyYWN0cy51cGRhdGUobmFtZTogbmFtZSwgY29kZTogY29kZS51dGY4KQogICAgfQp9", - "verifyUserSignature": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB2ZXJpZnlVc2VyU2lnbmF0dXJlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCmFjY2VzcyhhbGwpIGZ1biBtYWluKAogICAgbWVzc2FnZTogU3RyaW5nLAogICAgcmF3UHVibGljS2V5czogW1N0cmluZ10sCiAgICB3ZWlnaHRzOiBbVUZpeDY0XSwKICAgIHNpZ25BbGdvczogW1VJbnQ4XSwKICAgIGhhc2hBbGdvczogW1VJbnQ4XSwKICAgIHNpZ25hdHVyZXM6IFtTdHJpbmddLAopOiBCb29sIHsKCiAgICBsZXQga2V5TGlzdCA9IENyeXB0by5LZXlMaXN0KCkKCiAgICB2YXIgaSA9IDAKICAgIGZvciByYXdQdWJsaWNLZXkgaW4gcmF3UHVibGljS2V5cyB7CiAgICBrZXlMaXN0LmFkZCgKICAgICAgICBQdWJsaWNLZXkoCiAgICAgICAgcHVibGljS2V5OiByYXdQdWJsaWNLZXkuZGVjb2RlSGV4KCksCiAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25BbGdvc1tpXSkhCiAgICAgICAgKSwKICAgICAgICBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3NbaV0pISwKICAgICAgICB3ZWlnaHQ6IHdlaWdodHNbaV0sCiAgICApCiAgICBpID0gaSArIDEKICAgIH0KCiAgICBsZXQgc2lnbmF0dXJlU2V0OiBbQ3J5cHRvLktleUxpc3RTaWduYXR1cmVdID0gW10KCiAgICB2YXIgaiA9IDAKICAgIGZvciBzaWduYXR1cmUgaW4gc2lnbmF0dXJlcyB7CiAgICBzaWduYXR1cmVTZXQuYXBwZW5kKAogICAgICAgIENyeXB0by5LZXlMaXN0U2lnbmF0dXJlKAogICAgICAgICAgICBrZXlJbmRleDogaiwKICAgICAgICAgICAgc2lnbmF0dXJlOiBzaWduYXR1cmUuZGVjb2RlSGV4KCkKICAgICAgICApCiAgICApCiAgICAgICAgaiA9IGogKyAxCiAgICB9CgogICAgbGV0IHNpZ25lZERhdGEgPSBtZXNzYWdlLmRlY29kZUhleCgpCgogICAgcmV0dXJuIGtleUxpc3QudmVyaWZ5KAogICAgICAgIHNpZ25hdHVyZVNldDogc2lnbmF0dXJlU2V0LAogICAgICAgIHNpZ25lZERhdGE6IHNpZ25lZERhdGEsCiAgICAgICAgZG9tYWluU2VwYXJhdGlvblRhZzogIkZMT1ctVjAuMC11c2VyIgogICAgKQp9", - "withdrawAllUnlockedFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB3aXRoZHJhd0FsbFVubG9ja2VkRmxvdyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2Ci8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKdHJhbnNhY3Rpb24oKSB7CgogICAgbGV0IGhvbGRlclJlZjogYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyCiAgICBsZXQgdmF1bHRSZWY6ICZGbG93VG9rZW4uVmF1bHQKICAgIGxldCBhbW91bnQ6IFVGaXg2NAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgICBzZWxmLmhvbGRlclJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBUb2tlbkhvbGRlciIpCgoJCQkJc2VsZi52YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgZmxvdyB0b2tlbiB2YXVsdCByZWYiKQoKICAgICAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBzaWduZXIKICAgICAgICAuY2FwYWJpbGl0aWVzLmdldDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAgIChMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQoKICAgICAgICBpZiBsb2NrZWRBY2NvdW50SW5mb0NhcCA9PSBuaWwgfHwgIShsb2NrZWRBY2NvdW50SW5mb0NhcCEuY2hlY2soKSkgewogICAgICAgICAgICBwYW5pYygiQ291bGQgbm90IGdldCBmbG93IGxvY2tlZCB0b2tlbiB2YXVsdCIpCiAgICAgICAgfQoKICAgICAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICAgICAgbGV0IGxvY2tlZEJhbGFuY2UgPSBsb2NrZWRBY2NvdW50SW5mb1JlZi5nZXRMb2NrZWRBY2NvdW50QmFsYW5jZSgpCiAgICAgICAgbGV0IGxvY2tlZEJhbGFuY2VVbmxvY2tlZCA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldFVubG9ja0xpbWl0KCkKCiAgICAgICAgLy8gaWYgbG9ja2VkQmFsYW5jZSA9PSBVRml4NjQoMCkgewogICAgICAgIC8vICAgICBwYW5pYygiTm90IGVub3VnaCBhbW91bnQgdG8gd2l0aGRyYXciKQogICAgICAgIC8vIH0KCiAgICAgICAgc2VsZi5hbW91bnQgPSBsb2NrZWRCYWxhbmNlVW5sb2NrZWQKICAgIAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYudmF1bHRSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuaG9sZGVyUmVmLndpdGhkcmF3KGFtb3VudDogc2VsZi5hbW91bnQpKQogICAgfQp9", - "withdrawUnlockedFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB3aXRoZHJhd1VubG9ja2VkRmxvdyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAvLyBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgovLyBpbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4TG9ja2VkVG9rZW5zCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4ZWU4Mjg1NmJmMjBlMmFhNgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgwYWU1M2NiNmUzZjQyYTc5CmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweGY4ZDZlMDU4NmIwYTIwYzcKCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0KSB7CgogICAgbGV0IGhvbGRlclJlZjogYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAgJkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcgogICAgbGV0IHZhdWx0UmVmOiAmRmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5ob2xkZXJSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPihmcm9tOiBMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gVG9rZW5Ib2xkZXIiKQoKICAgICAgICBzZWxmLnZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBmbG93IHRva2VuIHZhdWx0IHJlZiIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi52YXVsdFJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5ob2xkZXJSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpKQogICAgfQp9" + "accountStorage": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYWNjb3VudFN0b3JhZ2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiBhY2Nlc3MoYWxsKSBzdHJ1Y3QgU3RvcmFnZUluZm8gewogICAgYWNjZXNzKGFsbCkgIGxldCBjYXBhY2l0eTogVUludDY0CiAgICBhY2Nlc3MoYWxsKSAgbGV0IHVzZWQ6IFVJbnQ2NAogICAgYWNjZXNzKGFsbCkgIGxldCBhdmFpbGFibGU6IFVJbnQ2NAoKICAgIGluaXQoY2FwYWNpdHk6IFVJbnQ2NCwgdXNlZDogVUludDY0LCBhdmFpbGFibGU6IFVJbnQ2NCkgewogICAgICAgIHNlbGYuY2FwYWNpdHkgPSBjYXBhY2l0eQogICAgICAgIHNlbGYudXNlZCA9IHVzZWQKICAgICAgICBzZWxmLmF2YWlsYWJsZSA9IGF2YWlsYWJsZQogICAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzKTogU3RvcmFnZUluZm8gewogICAgbGV0IGFjY3QgPSBnZXRBY2NvdW50KGFkZHIpCiAgICByZXR1cm4gU3RvcmFnZUluZm8oY2FwYWNpdHk6IGFjY3Quc3RvcmFnZS5jYXBhY2l0eSwKICAgICAgICAgICAgdXNlZDogYWNjdC5zdG9yYWdlLnVzZWQsCiAgICAgICAgICAgIGF2YWlsYWJsZTogYWNjdC5zdG9yYWdlLmNhcGFjaXR5IC0gYWNjdC5zdG9yYWdlLnVzZWQpCn0=", + "addContractToAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYWRkQ29udHJhY3RUb0FjY291bnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZywgY29kZTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb250cmFjdHMsIEFkZENvbnRyYWN0KSAmQWNjb3VudCkgewogICAgICAgIHNpZ25lci5jb250cmFjdHMuYWRkKG5hbWU6IG5hbWUsIGNvZGU6IGNvZGUudXRmOCkKICAgIH0KfQ==", + "addKey": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYWRkS2V5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgQ3J5cHRvCgp0cmFuc2FjdGlvbihwdWJsaWNLZXk6IFN0cmluZywgc2lnbmF0dXJlQWxnb3JpdGhtOiBVSW50OCwgaGFzaEFsZ29yaXRobTogVUludDgsIHdlaWdodDogVUZpeDY0KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBrZXkgPSBQdWJsaWNLZXkoCiAgICAgICAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LmRlY29kZUhleCgpLAogICAgICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogc2lnbmF0dXJlQWxnb3JpdGhtKSEKICAgICAgICApCgogICAgICAgIHNpZ25lci5rZXlzLmFkZCgKICAgICAgICAgICAgcHVibGljS2V5OiBrZXksCiAgICAgICAgICAgIGhhc2hBbGdvcml0aG06IEhhc2hBbGdvcml0aG0ocmF3VmFsdWU6IGhhc2hBbGdvcml0aG0pISwKICAgICAgICAgICAgd2VpZ2h0OiB3ZWlnaHQKICAgICAgICApCiAgICB9Cn0=", + "addKeyTemp": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYWRkS2V5VGVtcCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5czogW0NyeXB0by5LZXlMaXN0RW50cnldLCBjb250cmFjdHM6IHtTdHJpbmc6IFN0cmluZ30pIHsKCXByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlIHwgU3RvcmFnZSkgJkFjY291bnQpIHsKCgkJbGV0IGFjY291bnQgPSBBY2NvdW50KHBheWVyOiBzaWduZXIpCgoJCS8vIGFkZCBhbGwgdGhlIGtleXMgdG8gdGhlIGFjY291bnQKCQlmb3Iga2V5IGluIHB1YmxpY0tleXMgewoJCQlhY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LnB1YmxpY0tleSwgaGFzaEFsZ29yaXRobToga2V5Lmhhc2hBbGdvcml0aG0sIHdlaWdodDoga2V5LndlaWdodCkKCQl9CgkJCgkJLy8gYWRkIGNvbnRyYWN0cyBpZiBwcm92aWRlZAoJCWZvciBjb250cmFjdCBpbiBjb250cmFjdHMua2V5cyB7CgkJCWFjY291bnQuY29udHJhY3RzLmFkZChuYW1lOiBjb250cmFjdCwgY29kZTogY29udHJhY3RzW2NvbnRyYWN0XSEuZGVjb2RlSGV4KCkpCgkJfQoJfQp9", + "createAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY3JlYXRlQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhmMjMzZGNlZTg4ZmUwYWJlCgogdHJhbnNhY3Rpb24ocHVibGljS2V5czogW0NyeXB0by5LZXlMaXN0RW50cnldLCBjb250cmFjdHM6IHtTdHJpbmc6IFN0cmluZ30sIGZ1bmRBbW91bnQ6IFVGaXg2NCkgewogICAgbGV0IHRva2VuUmVjZWl2ZXI6ICZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzZW50VmF1bHQ6IEBGdW5naWJsZVRva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUgfCBTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQogICAgICAgIGZvciBrZXkgaW4gcHVibGljS2V5cyB7CiAgICAgICAgICAgIGFjY291bnQua2V5cy5hZGQocHVibGljS2V5OiBrZXkucHVibGljS2V5LCBoYXNoQWxnb3JpdGhtOiBrZXkuaGFzaEFsZ29yaXRobSwgd2VpZ2h0OiBrZXkud2VpZ2h0KQogICAgICAgIH0KICAgICAgICBmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewogICAgICAgICAgICBhY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQogICAgICAgIH0KICAgICAgICBzZWxmLnRva2VuUmVjZWl2ZXIgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikgPz8gcGFuaWMoIlVuYWJsZSB0byBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIikKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pihmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcicncyBWYXVsdCEiKQogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogZnVuZEFtb3VudCkKICAgIH0KICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYudG9rZW5SZWNlaXZlci5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9CiB9", + "createAccountSdk": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY3JlYXRlQWNjb3VudFNkayAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcsIHNpZ25hdHVyZUFsZ29yaXRobTogVUludDgsIGhhc2hBbGdvcml0aG06IFVJbnQ4LCB3ZWlnaHQ6IFVGaXg2NCwgY29udHJhY3RzOiB7U3RyaW5nOiBTdHJpbmd9KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSB8IFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGFjY291bnQgPSBBY2NvdW50KHBheWVyOiBzaWduZXIpCgogICAgICAgIGxldCBrZXkgPSBQdWJsaWNLZXkoCiAgICAgICAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LmRlY29kZUhleCgpLAogICAgICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogc2lnbmF0dXJlQWxnb3JpdGhtKSEKICAgICAgICApCgogICAgICAgIGFjY291bnQua2V5cy5hZGQoCiAgICAgICAgICAgIHB1YmxpY0tleToga2V5LAogICAgICAgICAgICBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3JpdGhtKSEsCiAgICAgICAgICAgIHdlaWdodDogd2VpZ2h0CiAgICAgICAgKQoKICAgICAgICBmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewogICAgICAgICAgICBhY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQogICAgICAgIH0KICAgIH0KfQ==", + "getAccountInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjb3VudEluZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmFjY2VzcyhhbGwpIHN0cnVjdCBSZXN1bHQgewogIGFjY2VzcyhhbGwpIGxldCBhZGRyZXNzOiBBZGRyZXNzCiAgYWNjZXNzKGFsbCkgbGV0IGJhbGFuY2U6IFVGaXg2NAogIGFjY2VzcyhhbGwpIGxldCBhdmFpbGFibGVCYWxhbmNlOiBVRml4NjQKICBhY2Nlc3MoYWxsKSBsZXQgc3RvcmFnZVVzZWQ6IFVJbnQ2NAogIGFjY2VzcyhhbGwpIGxldCBzdG9yYWdlQ2FwYWNpdHk6IFVJbnQ2NAogIGFjY2VzcyhhbGwpIGxldCBzdG9yYWdlRmxvdzogVUZpeDY0CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLAogICAgYmFsYW5jZTogVUZpeDY0LAogICAgYXZhaWxhYmxlQmFsYW5jZTogVUZpeDY0LAogICAgc3RvcmFnZVVzZWQ6IFVJbnQ2NCwKICAgIHN0b3JhZ2VDYXBhY2l0eTogVUludDY0LAogICAgc3RvcmFnZUZsb3c6IFVGaXg2NCwKICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICAgIHNlbGYuYXZhaWxhYmxlQmFsYW5jZSA9IGF2YWlsYWJsZUJhbGFuY2UKICAgIHNlbGYuc3RvcmFnZVVzZWQgPSBzdG9yYWdlVXNlZAogICAgc2VsZi5zdG9yYWdlQ2FwYWNpdHkgPSBzdG9yYWdlQ2FwYWNpdHkKICAgIHNlbGYuc3RvcmFnZUZsb3cgPSBzdG9yYWdlRmxvdwogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFJlc3VsdCB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgcmV0dXJuIFJlc3VsdCgKICAgIGFkZHJlc3M6IGFjY291bnQuYWRkcmVzcywKICAgIGJhbGFuY2U6IGFjY291bnQuYmFsYW5jZSwKICAgIGF2YWlsYWJsZUJhbGFuY2U6IGFjY291bnQuYXZhaWxhYmxlQmFsYW5jZSwKICAgIHN0b3JhZ2VVc2VkOiBhY2NvdW50LnN0b3JhZ2UudXNlZCwKICAgIHN0b3JhZ2VDYXBhY2l0eTogYWNjb3VudC5zdG9yYWdlLmNhcGFjaXR5LAogICAgc3RvcmFnZUZsb3c6IGFjY291bnQuYmFsYW5jZSAtIGFjY291bnQuYXZhaWxhYmxlQmFsYW5jZQogICkKfQ==", + "getAccountMinFlow": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjb3VudE1pbkZsb3cgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBVRml4NjQgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHJldHVybiBhY2NvdW50LmJhbGFuY2UgLSBhY2NvdW50LmF2YWlsYWJsZUJhbGFuY2UKfQ==", + "getAccountTotalFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjb3VudFRvdGFsRmxvd0JhbGFuY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKLy8gaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGVlODI4NTZiZjIwZTJhYTYKLy8gaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MGFlNTNjYjZlM2Y0MmE3OQovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhmOGQ2ZTA1ODZiMGEyMGM3CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IHVubG9ja2VkVmF1bHQgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKSEKICAgICAgLmJvcnJvdygpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQmFsYW5jZSByZWZlcmVuY2UgdG8gdGhlIFZhdWx0IikKICAgIGxldCB1bmxvY2tlZEJhbGFuY2UgPSB1bmxvY2tlZFZhdWx0LmJhbGFuY2UKICAgICAgICAKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb0NhcCA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5nZXQKICAgICAgPCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+CiAgICAgIChMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQogICAgaWYgbG9ja2VkQWNjb3VudEluZm9DYXAgPT0gbmlsIHx8ICEobG9ja2VkQWNjb3VudEluZm9DYXAhLmNoZWNrKCkpIHsKICAgICAgICByZXR1cm4gdW5sb2NrZWRCYWxhbmNlCiAgICB9CiAgICAKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb1JlZiA9IGxvY2tlZEFjY291bnRJbmZvQ2FwIS5ib3Jyb3coKSEKICAgIGxldCBsb2NrZWRCYWxhbmNlID0gbG9ja2VkQWNjb3VudEluZm9SZWYuZ2V0TG9ja2VkQWNjb3VudEJhbGFuY2UoKQogICAgCiAgICByZXR1cm4gbG9ja2VkQmFsYW5jZSArIHVubG9ja2VkQmFsYW5jZQp9", + "getAccountTotalLockedFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjb3VudFRvdGFsTG9ja2VkRmxvd0JhbGFuY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2Ci8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKLy8gaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9DYXAgPSBhY2NvdW50CiAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0CiAgICAgIDwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPgogICAgICAoTG9ja2VkVG9rZW5zLkxvY2tlZEFjY291bnRJbmZvUHVibGljUGF0aCkKICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgcmV0dXJuIFVGaXg2NCgwKQogICAgfQogICAgCiAgICBsZXQgbG9ja2VkQWNjb3VudEluZm9SZWYgPSBsb2NrZWRBY2NvdW50SW5mb0NhcCEuYm9ycm93KCkhCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIAogICAgcmV0dXJuIGxvY2tlZEJhbGFuY2UKfQ==", + "getAccountTotalUnlockedFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjb3VudFRvdGFsVW5sb2NrZWRGbG93QmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKLy8gaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KLy8gaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCi8vIGltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweExvY2tlZFRva2VucwoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGVlODI4NTZiZjIwZTJhYTYKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MGFlNTNjYjZlM2Y0MmE3OQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhmOGQ2ZTA1ODZiMGEyMGM3CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgIGxldCB1bmxvY2tlZFZhdWx0ID0gYWNjb3VudAogICAgICAuY2FwYWJpbGl0aWVzLmdldDwmRmxvd1Rva2VuLlZhdWx0PigvcHVibGljL2Zsb3dUb2tlbkJhbGFuY2UpIQogICAgICAuYm9ycm93KCkKICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBCYWxhbmNlIHJlZmVyZW5jZSB0byB0aGUgVmF1bHQiKQogICAgbGV0IHVubG9ja2VkQmFsYW5jZSA9IHVubG9ja2VkVmF1bHQuYmFsYW5jZQoKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb0NhcCA9IGFjY291bnQKICAgICAgLmNhcGFiaWxpdGllcy5nZXQKICAgICAgPCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+CiAgICAgIChMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQogICAgaWYgbG9ja2VkQWNjb3VudEluZm9DYXAgPT0gbmlsIHx8ICEobG9ja2VkQWNjb3VudEluZm9DYXAhLmNoZWNrKCkpIHsKICAgICAgICByZXR1cm4gdW5sb2NrZWRCYWxhbmNlCiAgICB9CiAgICAKICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb1JlZiA9IGxvY2tlZEFjY291bnRJbmZvQ2FwIS5ib3Jyb3coKSEKICAgIGxldCBsb2NrZWRCYWxhbmNlID0gbG9ja2VkQWNjb3VudEluZm9SZWYuZ2V0TG9ja2VkQWNjb3VudEJhbGFuY2UoKQogICAgbGV0IGxvY2tlZEJhbGFuY2VVbmxvY2tlZCA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldFVubG9ja0xpbWl0KCkKCiAgICBpZiBsb2NrZWRCYWxhbmNlID09IFVGaXg2NCgwKSB7CiAgICAgICAgcmV0dXJuIHVubG9ja2VkQmFsYW5jZQogICAgfQoKICAgIGlmIGxvY2tlZEJhbGFuY2VVbmxvY2tlZCA+IGxvY2tlZEJhbGFuY2UgewogICAgICAgIHJldHVybiB1bmxvY2tlZEJhbGFuY2UgKyBsb2NrZWRCYWxhbmNlCiAgICB9CgogICAgcmV0dXJuIGxvY2tlZEJhbGFuY2VVbmxvY2tlZCArIHVubG9ja2VkQmFsYW5jZQp9", + "getFindAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RmluZEFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGSU5EIGZyb20gMHhGaW5kCi8vQ2hlY2sgdGhlIHN0YXR1cyBvZiBhIGZpbiB1c2VyCmFjY2VzcyhhbGwpIGZ1biBtYWluKG5hbWU6IFN0cmluZykgOiBBZGRyZXNzPyB7CiAgICBsZXQgc3RhdHVzID0gRklORC5zdGF0dXMobmFtZSkKICAgIHJldHVybiBzdGF0dXMub3duZXIKfQ==", + "getFindDomainByAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RmluZERvbWFpbkJ5QWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZJTkQgZnJvbSAweEZpbmQKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDogU3RyaW5nP3sKICAgIHJldHVybiBGSU5ELnJldmVyc2VMb29rdXAoYWRkcmVzcykKfQ==", + "getFlownsAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Rmxvd25zQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3ducyBmcm9tIDB4Rmxvd25zCmltcG9ydCBEb21haW5zIGZyb20gMHhEb21haW5zCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihuYW1lOiBTdHJpbmcsIHJvb3Q6IFN0cmluZykgOiBBZGRyZXNzPyB7CiAgICBsZXQgcHJlZml4ID0gIjB4IgogICAgbGV0IHJvb3RIYWhzaCA9IEZsb3ducy5oYXNoKG5vZGU6ICIiLCBsYWJsZTogcm9vdCkKICAgIGxldCBuYW1laGFzaCA9IHByZWZpeC5jb25jYXQoRmxvd25zLmhhc2gobm9kZTogcm9vdEhhaHNoLCBsYWJsZTogbmFtZSkpCiAgICB2YXIgYWRkcmVzcyA9IERvbWFpbnMuZ2V0UmVjb3JkcyhuYW1laGFzaCkKICAgIHJldHVybiBhZGRyZXNzCn0=", + "getFlownsDomainsByAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Rmxvd25zRG9tYWluc0J5QWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IERvbWFpbnMgZnJvbSAweERvbWFpbnMKLy8gYWRkcmVzczogRmxvdyBhZGRyZXNzCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW0RvbWFpbnMuRG9tYWluRGV0YWlsXSB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gYWNjb3VudC5nZXRDYXBhYmlsaXR5PCZ7RG9tYWlucy5Db2xsZWN0aW9uUHVibGljfT4oRG9tYWlucy5Db2xsZWN0aW9uUHVibGljUGF0aCkKICAgIGxldCBjb2xsZWN0aW9uID0gY29sbGVjdGlvbkNhcC5ib3Jyb3coKSEKICAgIGxldCBkb21haW5zOltEb21haW5zLkRvbWFpbkRldGFpbF0gPSBbXQogICAgbGV0IGlkcyA9IGNvbGxlY3Rpb24uZ2V0SURzKCkKCiAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICBsZXQgZG9tYWluID0gY29sbGVjdGlvbi5ib3Jyb3dEb21haW4oaWQ6IGlkKQogICAgICAgIGxldCBkZXRhaWwgPSBkb21haW4uZ2V0RGV0YWlsKCkKICAgICAgICBkb21haW5zLmFwcGVuZChkZXRhaWwpCiAgICB9CgogICAgcmV0dXJuIGRvbWFpbnMKfQ==", + "getStorageInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0U3RvcmFnZUluZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzKToge1N0cmluZzogVUludDY0fSB7CiAgICBsZXQgYWNjdCA9IGdldEFjY291bnQoYWRkcikKICAgIGxldCByZXQ6IHtTdHJpbmc6IFVJbnQ2NH0gPSB7fQogICAgcmV0WyJjYXBhY2l0eSJdID0gYWNjdC5zdG9yYWdlLmNhcGFjaXR5CiAgICByZXRbInVzZWQiXSA9IGFjY3Quc3RvcmFnZS51c2VkCiAgICByZXRbImF2YWlsYWJsZSJdID0gYWNjdC5zdG9yYWdlLmNhcGFjaXR5IC0gIGFjY3Quc3RvcmFnZS51c2VkCiAgICByZXR1cm4gcmV0Cn0=", + "getTokenBalanceWithModel": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0VG9rZW5CYWxhbmNlV2l0aE1vZGVsIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KDxUb2tlbkJhbGFuY2VQYXRoPikKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IEJhbGFuY2UgY2FwYWJpbGl0eSIpCgogICAgcmV0dXJuIHZhdWx0UmVmLmJhbGFuY2UKfQ==", + "isKeyHasFullAuth": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgaXNLZXlIYXNGdWxsQXV0aCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHB1YmxpY0tleTogU3RyaW5nKTogQm9vbCB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgdmFyIGZsYWcgPSBmYWxzZQogIGZ1biBhY2NvdW50Rm4oYWNjb3VudEtleTogQWNjb3VudEtleSk6IEJvb2wgewogICAgbGV0IGtleSA9IFN0cmluZy5lbmNvZGVIZXgoYWNjb3VudEtleS5wdWJsaWNLZXkucHVibGljS2V5KQogICAgaWYgcHVibGljS2V5ID09IGtleSB7CiAgICAgIGZsYWcgPSBhY2NvdW50S2V5LndlaWdodCA+PSBVRml4NjQoMTAwMCkgJiYgIWFjY291bnRLZXkuaXNSZXZva2VkCiAgICB9CiAgICByZXR1cm4gZmFsc2UKICB9CiAgYWNjb3VudC5rZXlzLmZvckVhY2goYWNjb3VudEZuKQoKICByZXR1cm4gZmxhZwp9Cg==", + "isKeysHasFullAuth": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgaXNLZXlzSGFzRnVsbEF1dGggLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwdWJsaWNLZXlzOiBbU3RyaW5nXSk6IEJvb2wgewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHZhciB3ZWlnaHQ6IFVGaXg2NCA9IDAuMAogIGZ1biBhY2NvdW50Rm4oYWNjb3VudEtleTogQWNjb3VudEtleSk6IEJvb2wgewogICAgbGV0IGtleSA9IFN0cmluZy5lbmNvZGVIZXgoYWNjb3VudEtleS5wdWJsaWNLZXkucHVibGljS2V5KQogICAgaWYgcHVibGljS2V5cy5jb250YWlucyhrZXkpICYmICFhY2NvdW50S2V5LmlzUmV2b2tlZCB7CiAgICAgIHdlaWdodCA9IHdlaWdodCArIGFjY291bnRLZXkud2VpZ2h0IAogICAgfQogICAgcmV0dXJuIGZhbHNlCiAgfQogIGFjY291bnQua2V5cy5mb3JFYWNoKGFjY291bnRGbikKCiAgcmV0dXJuIHdlaWdodCA+PSBVRml4NjQoMTAwMCkKfQo=", + "isLockedFlowEnable": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgaXNMb2NrZWRGbG93RW5hYmxlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBCb29sIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgcmV0dXJuIGFjY291bnQuY2FwYWJpbGl0aWVzLmV4aXN0cyhMb2NrZWRUb2tlbnMuTG9ja2VkQWNjb3VudEluZm9QdWJsaWNQYXRoKQp9", + "isTokenStorageEnabled": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgaXNUb2tlblN0b3JhZ2VFbmFibGVkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKSA6IEJvb2wgewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgIAogICAgbGV0IHJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICBsZXQgYmFsYW5jZSA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5CYWxhbmNlUGF0aD4pCgogICAgcmV0dXJuIHJlY2VpdmVyICYmIGJhbGFuY2UKfQ==", + "queryCustomFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcXVlcnlDdXN0b21GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzCgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oY29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBjb250cmFjdE5hbWU6IFN0cmluZyk6IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhIHsKICAgIAogICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQoY29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogY29udHJhY3ROYW1lKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgogICAgcmV0dXJuIHZhdWx0RGF0YQp9", + "queryCustomNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcXVlcnlDdXN0b21ORlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE1ldGFkYXRhVmlld3MKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgY29udHJhY3ROYW1lOiBTdHJpbmcpOiBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhIHsKCiAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChjb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBjb250cmFjdE5hbWUpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgIAogICAgcmV0dXJuIGNvbGxlY3Rpb25EYXRhCn0=", + "queryFlowBalance": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcXVlcnlGbG93QmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgphY2Nlc3MoYWxsKSBmdW4gY2hlY2tGbG93VG9rZW5CYWxhbmNlKGFkZHJlc3M6IEFkZHJlc3MpIDogVUZpeDY0IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oL3B1YmxpYy9mbG93VG9rZW5CYWxhbmNlKQogICAgPz8gbmlsCgogICAgCiAgICBpZiB2YXVsdFJlZiAhPSBuaWwgewogICAgICAgIHJldHVybiB2YXVsdFJlZiEuYmFsYW5jZQogICAgfQogICAgCiAgICByZXR1cm4gMC4wCn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJzOiBbQWRkcmVzc10pOiBbVUZpeDY0XSB7CiAgICBsZXQgYmFsczogW1VGaXg2NF0gPSBbXQoKICAgIGZvciBhZGRyIGluIGFkZHJzIHsKICAgICAgICBsZXQgYmFsID0gY2hlY2tGbG93VG9rZW5CYWxhbmNlKGFkZHJlc3M6IGFkZHIpCiAgICAgICAgYmFscy5hcHBlbmQoYmFsKQogICAgfQogICAgCiAgICByZXR1cm4gYmFscwp9", + "removeAccountKeyByIndex": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcmVtb3ZlQWNjb3VudEtleUJ5SW5kZXggLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnRyYW5zYWN0aW9uKGtleUluZGV4OiBJbnQpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEtleXMpICZBY2NvdW50KSB7CiAgICAgICAgc2lnbmVyLmtleXMucmV2b2tlKGtleUluZGV4OiBrZXlJbmRleCkKICAgIH0KfQ==", + "removeContractFromAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcmVtb3ZlQ29udHJhY3RGcm9tQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKdHJhbnNhY3Rpb24obmFtZTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChSZW1vdmVDb250cmFjdCkgJkFjY291bnQpIHsKICAgICAgICBzaWduZXIuY29udHJhY3RzLnJlbW92ZShuYW1lOiBuYW1lKQogICAgfQp9", + "revokeKey": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcmV2b2tlS2V5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+Cgp0cmFuc2FjdGlvbihpbmRleDogSW50KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIC8vIEdldCBhIGtleSBmcm9tIGFuIGF1dGggYWNjb3VudC4KICAgICAgICBsZXQga2V5QSA9IHNpZ25lci5rZXlzLnJldm9rZShrZXlJbmRleDogaW5kZXgpCiAgICB9Cn0=", + "test": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdGVzdCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweDlhMDc2NmQ5M2I2NjA4YjcKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4N2U2MGRmMDQyYTljMDg2OAoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQsIHJlY2lwaWVudDogQWRkcmVzcykgewoKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJlZAogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCB2YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgICAgbGV0IHJlY2lwaWVudEFjY291bnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudEFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICAgICAgCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0=", + "updateContractOfAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdXBkYXRlQ29udHJhY3RPZkFjY291bnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZywgY29kZTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChVcGRhdGVDb250cmFjdCkgJkFjY291bnQpIHsKICAgICAgICBzaWduZXIuY29udHJhY3RzLnVwZGF0ZShuYW1lOiBuYW1lLCBjb2RlOiBjb2RlLnV0ZjgpCiAgICB9Cn0=", + "verifyUserSignature": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdmVyaWZ5VXNlclNpZ25hdHVyZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oCiAgICBtZXNzYWdlOiBTdHJpbmcsCiAgICByYXdQdWJsaWNLZXlzOiBbU3RyaW5nXSwKICAgIHdlaWdodHM6IFtVRml4NjRdLAogICAgc2lnbkFsZ29zOiBbVUludDhdLAogICAgaGFzaEFsZ29zOiBbVUludDhdLAogICAgc2lnbmF0dXJlczogW1N0cmluZ10sCik6IEJvb2wgewoKICAgIGxldCBrZXlMaXN0ID0gQ3J5cHRvLktleUxpc3QoKQoKICAgIHZhciBpID0gMAogICAgZm9yIHJhd1B1YmxpY0tleSBpbiByYXdQdWJsaWNLZXlzIHsKICAgIGtleUxpc3QuYWRkKAogICAgICAgIFB1YmxpY0tleSgKICAgICAgICBwdWJsaWNLZXk6IHJhd1B1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogc2lnbkFsZ29zW2ldKSEKICAgICAgICApLAogICAgICAgIGhhc2hBbGdvcml0aG06IEhhc2hBbGdvcml0aG0ocmF3VmFsdWU6IGhhc2hBbGdvc1tpXSkhLAogICAgICAgIHdlaWdodDogd2VpZ2h0c1tpXSwKICAgICkKICAgIGkgPSBpICsgMQogICAgfQoKICAgIGxldCBzaWduYXR1cmVTZXQ6IFtDcnlwdG8uS2V5TGlzdFNpZ25hdHVyZV0gPSBbXQoKICAgIHZhciBqID0gMAogICAgZm9yIHNpZ25hdHVyZSBpbiBzaWduYXR1cmVzIHsKICAgIHNpZ25hdHVyZVNldC5hcHBlbmQoCiAgICAgICAgQ3J5cHRvLktleUxpc3RTaWduYXR1cmUoCiAgICAgICAgICAgIGtleUluZGV4OiBqLAogICAgICAgICAgICBzaWduYXR1cmU6IHNpZ25hdHVyZS5kZWNvZGVIZXgoKQogICAgICAgICkKICAgICkKICAgICAgICBqID0gaiArIDEKICAgIH0KCiAgICBsZXQgc2lnbmVkRGF0YSA9IG1lc3NhZ2UuZGVjb2RlSGV4KCkKCiAgICByZXR1cm4ga2V5TGlzdC52ZXJpZnkoCiAgICAgICAgc2lnbmF0dXJlU2V0OiBzaWduYXR1cmVTZXQsCiAgICAgICAgc2lnbmVkRGF0YTogc2lnbmVkRGF0YSwKICAgICAgICBkb21haW5TZXBhcmF0aW9uVGFnOiAiRkxPVy1WMC4wLXVzZXIiCiAgICApCn0=", + "withdrawAllUnlockedFlow": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgd2l0aGRyYXdBbGxVbmxvY2tlZEZsb3cgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKLy8gaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGVlODI4NTZiZjIwZTJhYTYKLy8gaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MGFlNTNjYjZlM2Y0MmE3OQovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhmOGQ2ZTA1ODZiMGEyMGM3Cgp0cmFuc2FjdGlvbigpIHsKCiAgICBsZXQgaG9sZGVyUmVmOiBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXIKICAgIGxldCB2YXVsdFJlZjogJkZsb3dUb2tlbi5WYXVsdAogICAgbGV0IGFtb3VudDogVUZpeDY0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIHNlbGYuaG9sZGVyUmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcj4oZnJvbTogTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIFRva2VuSG9sZGVyIikKCgkJCQlzZWxmLnZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBmbG93IHRva2VuIHZhdWx0IHJlZiIpCgogICAgICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb0NhcCA9IHNpZ25lcgogICAgICAgIC5jYXBhYmlsaXRpZXMuZ2V0PCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+CiAgICAgICAgKExvY2tlZFRva2Vucy5Mb2NrZWRBY2NvdW50SW5mb1B1YmxpY1BhdGgpCgogICAgICAgIGlmIGxvY2tlZEFjY291bnRJbmZvQ2FwID09IG5pbCB8fCAhKGxvY2tlZEFjY291bnRJbmZvQ2FwIS5jaGVjaygpKSB7CiAgICAgICAgICAgIHBhbmljKCJDb3VsZCBub3QgZ2V0IGZsb3cgbG9ja2VkIHRva2VuIHZhdWx0IikKICAgICAgICB9CgogICAgICAgIGxldCBsb2NrZWRBY2NvdW50SW5mb1JlZiA9IGxvY2tlZEFjY291bnRJbmZvQ2FwIS5ib3Jyb3coKSEKICAgICAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IGxvY2tlZEFjY291bnRJbmZvUmVmLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgICAgICBsZXQgbG9ja2VkQmFsYW5jZVVubG9ja2VkID0gbG9ja2VkQWNjb3VudEluZm9SZWYuZ2V0VW5sb2NrTGltaXQoKQoKICAgICAgICAvLyBpZiBsb2NrZWRCYWxhbmNlID09IFVGaXg2NCgwKSB7CiAgICAgICAgLy8gICAgIHBhbmljKCJOb3QgZW5vdWdoIGFtb3VudCB0byB3aXRoZHJhdyIpCiAgICAgICAgLy8gfQoKICAgICAgICBzZWxmLmFtb3VudCA9IGxvY2tlZEJhbGFuY2VVbmxvY2tlZAogICAgCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi52YXVsdFJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5ob2xkZXJSZWYud2l0aGRyYXcoYW1vdW50OiBzZWxmLmFtb3VudCkpCiAgICB9Cn0=", + "withdrawUnlockedFlow": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgd2l0aGRyYXdVbmxvY2tlZEZsb3cgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCi8vIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCi8vIGltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgovLyBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMb2NrZWRUb2tlbnMKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhlZTgyODU2YmYyMGUyYWE2CmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDBhZTUzY2I2ZTNmNDJhNzkKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4ZjhkNmUwNTg2YjBhMjBjNwoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKCiAgICBsZXQgaG9sZGVyUmVmOiBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyCiAgICBsZXQgdmF1bHRSZWY6ICZGbG93VG9rZW4uVmF1bHQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmhvbGRlclJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBUb2tlbkhvbGRlciIpCgogICAgICAgIHNlbGYudmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGZsb3cgdG9rZW4gdmF1bHQgcmVmIikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnZhdWx0UmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLmhvbGRlclJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICB9Cn0=" }, "bridge": { - "batchBridgeNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVEZyb21Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRDb250cmFjdEFkZHJlc3M6IFRoZSBGbG93IGFjY291bnQgYWRkcmVzcyBob3N0aW5nIHRoZSBORlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIG5mdENvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWRzOiBbVUludDI1Nl0pIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkM3MjEgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIE5GVCB0eXBlCiAgICAgICAgc2VsZi5uZnRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IG5mdENvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogbmZ0Q29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiTkZUIgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIikKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24gLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2goY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvbGxlY3Rpb25DYXAsIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgY29sbGVjdGlvbiBmcm9tIHN0b3JhZ2UgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkgKiBVRml4NjQoaWRzLmxlbmd0aCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIH0KICAgICAgICAKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "batchBridgeNFTFromEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVEZyb21Fdm1WMiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgRVJDNzIxIGlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIENhZGVuY2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWRzOiBbVUludDI1Nl0pIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLm5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCBpZHMubGVuZ3RoIHsKICAgICAgICAgICAgbGV0IG5mdElkID0gaWRzW2lkeF0hCiAgICAgICAgICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICBpZDogbmZ0SWQsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgLy8gRW5zdXJlIHRoZSBicmlkZ2VkIG5mdCBpcyB0aGUgY29ycmVjdCB0eXBlCiAgICAgICAgICAgIGFzc2VydCgKICAgICAgICAgICAgICAgIG5mdC5nZXRUeXBlKCkgPT0gc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgbWVzc2FnZTogIkJyaWRnZWQgbmZ0IHR5cGUgbWlzbWF0Y2ggLSByZXF1ZXN3dGVkOiAiLmNvbmNhdChzZWxmLm5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgICApCiAgICAgICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgTkZUIGludG8gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24KICAgICAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "batchBridgeNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVFRvRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdENvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgbmZ0Q29udHJhY3ROYW1lOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICAgIAogICAgbGV0IG5mdHM6IEB7VUludDY0IDoge05vbkZ1bmdpYmxlVG9rZW4uTkZUfX0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBzZWxmLm5mdHMgPC0ge30KICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgZm9yIGlkIGluIGlkcyB7CiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICAgICAgc2VsZi5uZnRzW2lkXSA8LSEgbmZ0CiAgICAgICAgfQogICAgICAgIC8vIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwICogVUZpeDY0KGlkcy5sZW5ndGgpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCBpZHMubGVuZ3RoIHsKICAgICAgICAgICAgbGV0IG5mdElkID0gaWRzW2lkeF0hCiAgICAgICAgICAgIGxldCBuZnQgPC0gc2VsZi5uZnRzLnJlbW92ZShrZXk6IG5mdElkKSEgYXMgQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgICAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCggCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCEsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYubmZ0cwogICAgfQp9Cg==", - "batchBridgeNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVFRvRXZtQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBCcmlkZ2VzIGFuIE5GVCBmcm9tIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uIGluIENhZGVuY2UgdG8gdGhlIHNpZ25lcidzIENPQSBpbiBGbG93RVZNCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBORlQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIENhZGVuY2UgTkZULmlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdLCByZWNpcGllbnQ6IFN0cmluZykgewogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2xsZWN0aW9uOiBhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgeyAgICAgICAgCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBzZWxmLmNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWRzWzBdKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgKEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZSAqIFVGaXg2NChpZHMubGVuZ3RoKSkKCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBORlQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5uZnQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IG5mdElkZW50aWZpZXI6CiAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNlbmQgaW52YWxpZCBuZnQgdHlwZSAtIHJlcXVlc3RlZDogIi5jb25jYXQobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBORlQgdG8gdGhlIGJyaWRnZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICBzZWxmLm5mdC5nZXRUeXBlKCksCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHRyYW5zYWN0aW9uCiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LXNlbGYubmZ0LAogICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICB2YXIgaWR4ID0gMAoKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgaWYgaWR4ID09IDAgewogICAgICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VORlRUb0VWTSgKICAgICAgICAgICAgICAgIHRva2VuOiA8LSBzZWxmLmNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpLAogICAgICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "batchBridgeNFTToEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZU5GVFRvRXZtVjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKCi8vLyBCcmlkZ2VzIGFuIE5GVCBmcm9tIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uIGluIENhZGVuY2UgdG8gdGhlIHNpZ25lcidzIENPQSBpbiBGbG93RVZNCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBORlQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIENhZGVuY2UgTkZULmlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgICAKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgcmVxdWlyZXNPbmJvYXJkaW5nOiBCb29sCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkc1swXSkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHZhciBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSArIChGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUgKiBVRml4NjQoaWRzLmxlbmd0aCkpCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBORlQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcobmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkJyaWRnZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXNzZXQgdHlwZSIpCiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICBhcHByb3hGZWUgPSBhcHByb3hGZWUgKyBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUKICAgICAgICB9CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgbGV0IHNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC0gbmZ0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCBpZHMubGVuZ3RoIHsKICAgICAgICAgICAgIGlmIGlkeCA9PSAwIHsKICAgICAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGV0IG5mdElkID0gaWRzW2lkeF0hCiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBuZnRJZCkhIGFzIEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICAgICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchEvmAddressRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgRVZNIGNvbnRyYWN0IG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBldm1BZGRyZXNzZXM6IEFycmF5IG9mIGhleC1lbmNvZGVkIGFkZHJlc3Mgb2YgdGhlIEVWTSBjb250cmFjdCBhcyBhIFN0cmluZyB3aXRob3V0IDB4IHByZWZpeCB0byBjaGVjayBmb3IKLy8vICAgICBvbmJvYXJkaW5nIHN0YXR1cwovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgY29udHJhY3QgcmVxdWlyZXMgb25ib2FyZGluZyB0byB0aGUgRmxvd0VWTUJyaWRnZSBpZiB0aGUgdHlwZSBpcyBicmlkZ2VhYmxlLCBvdGhlcndpc2UgbmlsCi8vLyAgICAgaW5kZXhlZCBvbiB0aGUgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgRVZNIGNvbnRyYWN0IHdpdGhvdXQgMHggcHJlZml4Ci8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihldm1BZGRyZXNzZXM6IFtTdHJpbmddKToge1N0cmluZzogQm9vbD99IHsKICAgIGxldCByZXN1bHRzOiB7U3RyaW5nOiBCb29sP30gPSB7fQogICAgZm9yIGFkZHJlc3NIZXggaW4gZXZtQWRkcmVzc2VzIHsKICAgICAgICBpZiByZXN1bHRzW2FkZHJlc3NIZXhdICE9IG5pbCB7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQogICAgICAgIGlmIGxldCBhZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogYWRkcmVzc0hleCkgewogICAgICAgICAgICBsZXQgcmVxdWlyZXNPbmJvYXJkaW5nID0gRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3MpCiAgICAgICAgICAgIHJlc3VsdHMuaW5zZXJ0KGtleTogYWRkcmVzc0hleCwgcmVxdWlyZXNPbmJvYXJkaW5nKQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiByZXN1bHRzCn0K", - "batchIdentifierRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaElkZW50aWZpZXJSZXF1aXJlc09uYm9hcmRpbmcgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBUeXBlczogVGhlIGFycmF5IG9mIHR5cGVzIHRvIGNoZWNrIGZvciBvbmJvYXJkaW5nIHN0YXR1cwovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwgaW5kZXhlZAovLy8gICAgIG9uIHRoZSB0eXBlCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihpZGVudGlmaWVyczogW1N0cmluZ10pOiB7U3RyaW5nOiBCb29sP30gewogICAgbGV0IHJlc3VsdHM6IHtTdHJpbmc6IEJvb2w/fSA9IHt9CgogICAgZm9yIGlkZW50aWZpZXIgaW4gaWRlbnRpZmllcnMgewogICAgICAgIGlmIHJlc3VsdHNbaWRlbnRpZmllcl0gIT0gbmlsIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CiAgICAgICAgbGV0IHR5cGU6IFR5cGUgPSBDb21wb3NpdGVUeXBlKGlkZW50aWZpZXIpID8/IHBhbmljKCJJbnZhbGlkIHR5cGUgaWRlbnRpZmllciIpCiAgICAgICAgcmVzdWx0cy5pbnNlcnQoa2V5OiBpZGVudGlmaWVyLCBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcodHlwZSkpCiAgICB9CiAgICByZXR1cm4gcmVzdWx0cwp9Cg==", - "batchOnboardByEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaE9uYm9hcmRCeUV2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgTkZUIHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIE5GVHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIE5GVCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gYWRkcmVzc2VzQXNIZXg6IEFycmF5IG9mIEVWTSBjb250cmFjdCBhZGRyZXNzZXMgKGFzIGhleCBzdHJpbmcgd2l0aG91dCAweCBwcmVmaXgpIGRlZmluaW5nIHRoZSAKLy8vICAgICBicmlkZ2VhYmxlIGFzc2V0IHRvIGJlIG9uYm9hcmRlZAovLy8KdHJhbnNhY3Rpb24oYWRkcmVzc2VzQXNIZXg6IFtTdHJpbmddKSB7CgogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgLy8gU2V0IGEgd2l0aGRyYXdhbCBsaW1pdCBmb3IgdGhlIHByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyTGltaXQgPSBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUgKiBVRml4NjQoYWRkcmVzc2VzQXNIZXgubGVuZ3RoKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihwcm92aWRlckxpbWl0KQogICAgICAgIC8vIENyZWF0ZSBTY29wZWRGVFByb3ZpZGVyIHRvIGV4cGlyZSBqdXN0IGFmdGVyIHRoaXMgdHJhbnNhY3Rpb24KICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBJdGVyYXRlIG92ZXIgcHJvdmlkZWQgYXJyYXkKICAgICAgICBmb3IgYWRkcmVzc0hleCBpbiBhZGRyZXNzZXNBc0hleCB7CiAgICAgICAgICAgIC8vIENvbnZlcnQgaGV4IHN0cmluZyB0byBFVk1BZGRyZXNzCiAgICAgICAgICAgIGxldCBhZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogYWRkcmVzc0hleCkKICAgICAgICAgICAgLy8gQ29udGludWUgaWYgdGhlIGhleCBpcyBub3QgYSB2YWxpZCBFVk0gYWRkcmVzcyBvciBpZiB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IG9uYm9hcmRlZAogICAgICAgICAgICBpZiBhZGRyZXNzID09IG5pbCB8fCBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcyEpICE9IHRydWUgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQoKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlFVk1BZGRyZXNzKAogICAgICAgICAgICAgICAgYWRkcmVzcyEsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchOnboardByIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaE9uYm9hcmRCeUlkZW50aWZpZXIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBhc3NldCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBhc3NldHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIGFzc2V0IHRvIEVWTQovLy8KLy8vIEBwYXJhbSB0eXBlczogVGhlIENhZGVuY2UgdHlwZXMgb2YgdGhlIGJyaWRnZWFibGUgYXNzZXQgdG8gb25ib2FyZCB0byB0aGUgYnJpZGdlCi8vLwp0cmFuc2FjdGlvbihpZGVudGlmaWVyczogW1N0cmluZ10pIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICAvLyBTZXQgYSB3aXRoZHJhd2FsIGxpbWl0IGZvciB0aGUgcHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NCh0eXBlcy5sZW5ndGgpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAgICAgLy8gQ3JlYXRlIFNjb3BlZEZUUHJvdmlkZXIgdG8gZXhwaXJlIGp1c3QgYWZ0ZXIgdGhpcyB0cmFuc2FjdGlvbgogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGZvciBpZGVudGlmaWVycyBpbiBpZGVudGlmaWVycyB7IAogICAgICAgICAgICBsZXQgdHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgPz8gcGFuaWMoIkludmFsaWQgdHlwZSBpZGVudGlmaWVyIikKICAgICAgICAgICAgLy8gQ29udGludWUgb24gaWYgdGhlIHR5cGUgZG9lcyBub3QgcmVxdWlyZSBvbmJvYXJkaW5nCiAgICAgICAgICAgIGlmIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKSAhPSB0cnVlIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgLy8gT25ib2FyZCB0aGUgYXNzZXQgVHlwZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICB0eXBlLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgfQogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "batchOnboardByType": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaE9uYm9hcmRCeVR5cGUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBhc3NldCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBhc3NldHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIGFzc2V0IHRvIEVWTQovLy8KLy8vIEBwYXJhbSB0eXBlczogVGhlIENhZGVuY2UgdHlwZXMgb2YgdGhlIGJyaWRnZWFibGUgYXNzZXQgdG8gb25ib2FyZCB0byB0aGUgYnJpZGdlCi8vLwp0cmFuc2FjdGlvbih0eXBlczogW1R5cGVdKSB7CgogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgLy8gU2V0IGEgd2l0aGRyYXdhbCBsaW1pdCBmb3IgdGhlIHByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyTGltaXQgPSBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUgKiBVRml4NjQodHlwZXMubGVuZ3RoKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihwcm92aWRlckxpbWl0KQogICAgICAgIC8vIENyZWF0ZSBTY29wZWRGVFByb3ZpZGVyIHRvIGV4cGlyZSBqdXN0IGFmdGVyIHRoaXMgdHJhbnNhY3Rpb24KICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBmb3IgdHlwZSBpbiB0eXBlcyB7IAogICAgICAgICAgICAvLyBDb250aW51ZSBvbiBpZiB0aGUgdHlwZSBkb2VzIG5vdCByZXF1aXJlIG9uYm9hcmRpbmcKICAgICAgICAgICAgaWYgRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpICE9IHRydWUgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBhc3NldCBUeXBlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHR5cGUsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchTypeRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaFR5cGVSZXF1aXJlc09uYm9hcmRpbmcgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBUeXBlczogVGhlIGFycmF5IG9mIHR5cGVzIHRvIGNoZWNrIGZvciBvbmJvYXJkaW5nIHN0YXR1cwovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwgaW5kZXhlZAovLy8gICAgIG9uIHRoZSB0eXBlCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbih0eXBlczogW1R5cGVdKToge1R5cGU6IEJvb2w/fSB7CiAgICBsZXQgcmVzdWx0czoge1R5cGU6IEJvb2w/fSA9IHt9CiAgICBmb3IgdHlwZSBpbiB0eXBlcyB7CiAgICAgICAgaWYgcmVzdWx0c1t0eXBlXSAhPSBuaWwgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KICAgICAgICByZXN1bHRzLmluc2VydChrZXk6IHR5cGUsIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKSkKICAgIH0KICAgIHJldHVybiByZXN1bHRzCn0K", - "bridgeNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRDb250cmFjdEFkZHJlc3M6IFRoZSBGbG93IGFjY291bnQgYWRkcmVzcyBob3N0aW5nIHRoZSBORlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIG5mdENvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWQ6IFVJbnQyNTYpIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkM3MjEgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIE5GVCB0eXBlCiAgICAgICAgc2VsZi5uZnRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IG5mdENvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogbmZ0Q29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiTkZUIgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIikKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24gLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2goY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvbGxlY3Rpb25DYXAsIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgY29sbGVjdGlvbiBmcm9tIHN0b3JhZ2UgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCBORlQgaW50byB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbgogICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTFromEvmToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRDb250cmFjdEFkZHJlc3M6IFRoZSBGbG93IGFjY291bnQgYWRkcmVzcyBob3N0aW5nIHRoZSBORlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIG5mdENvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWQ6IFVJbnQyNTYsIHJlY2VpdmVyOiBBZGRyZXNzKSB7CgogICAgbGV0IG5mdFR5cGU6IFR5cGUKICAgIGxldCBjb2xsZWN0aW9uOiAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8vIEdldCB0aGUgRVJDNzIxIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBORlQgdHlwZQogICAgICAgIHNlbGYubmZ0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgICAgICBhZGRyZXNzOiBuZnRDb250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgICAgICBjb250cmFjdE5hbWU6IG5mdENvbnRyYWN0TmFtZSwKICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZTogIk5GVCIKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSIpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CgogICAgICAgIGxldCByZWNlaXZlckFjY3QgPSBnZXRBY2NvdW50KHJlY2VpdmVyKQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHJlY2VpdmVyQWNjdC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgY29sbGVjdGlvbiBjYXBhYmlsaXRpZXMgZnJvbSBwdWJsaWMgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCBORlQgaW50byB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbgogICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTFromEvmToFlowV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtVG9GbG93VjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UuCi8vLyBBbHNvIGtub3cgdGhhdCB0aGUgcmVjaXBpZW50IEZsb3cgYWNjb3VudCBtdXN0IGhhdmUgYSBSZWNlaXZlciBjYXBhYmxlIG9mIHJlY2VpdmluZyB0aGUgdGhpcyBicmlkZ2VkIE5GVCBhY2Nlc3NpYmxlCi8vLyB2aWEgcHVibGlzaGVkIENhcGFiaWxpdHkgYXQgdGhlIHRva2VuJ3Mgc3RhbmRhcmQgcGF0aC4KLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8gQHBhcmFtIHJlY2lwaWVudDogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIHRvIHJlY2VpdmUgdGhlIGJyaWRnZWQgTkZUCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50MjU2LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgcmVjZWl2ZXI6ICZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgc2VsZi5uZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBORlQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBzZWxmLm5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgcmVjaXBpZW50J3MgTkZUIFJlY2VpdmVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAvLyBDb25maWd1cmUgdGhlIHNpZ25lcidzIGFjY291bnQgZm9yIHRoaXMgTkZUCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYucmVjZWl2ZXIgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBSZWNlaXZlciBmcm9tIHJlY2lwaWVudCdzIHB1YmxpYyBjYXBhYmlsaXR5IHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgIHR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCBuZnQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgbmZ0LmdldFR5cGUoKSA9PSBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQoc2VsZi5uZnRUeXBlLmlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "bridgeNFTFromEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRGcm9tRXZtVjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGFuIE5GVCBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgRVJDNzIxIGlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIENhZGVuY2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQyNTYpIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLm5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBFbnN1cmUgdGhlIGJyaWRnZWQgbmZ0IGlzIHRoZSBjb3JyZWN0IHR5cGUKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIG5mdC5nZXRUeXBlKCkgPT0gc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBtZXNzYWdlOiAiQnJpZGdlZCBuZnQgdHlwZSBtaXNtYXRjaCAtIHJlcXVlc3d0ZWQ6ICIuY29uY2F0KHNlbGYubmZ0VHlwZS5pZGVudGlmaWVyKQogICAgICAgICAgICAgICAgLmNvbmNhdCgiLCByZWNlaXZlZDogIikuY29uY2F0KG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCBORlQgaW50byB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbgogICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "bridgeNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC1zZWxmLm5mdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWQ6IFVJbnQ2NCwgY29udHJhY3RFVk1BZGRyZXNzOiBTdHJpbmcsIGRhdGE6IFtVSW50OF0sIGdhc0xpbWl0OiBVSW50NjQpIHsKICAgIAogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LXNlbGYubmZ0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBhZGRyZXNzQnl0ZXM6IFtVSW50OF0gPSBjb250cmFjdEVWTUFkZHJlc3MuZGVjb2RlSGV4KCkKICAgICAgICBsZXQgZXZtVG9rZW5BZGRyID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IFsKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzBdLCBhZGRyZXNzQnl0ZXNbMV0sIGFkZHJlc3NCeXRlc1syXSwgYWRkcmVzc0J5dGVzWzNdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbNF0sIGFkZHJlc3NCeXRlc1s1XSwgYWRkcmVzc0J5dGVzWzZdLCBhZGRyZXNzQnl0ZXNbN10sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1s4XSwgYWRkcmVzc0J5dGVzWzldLCBhZGRyZXNzQnl0ZXNbMTBdLCBhZGRyZXNzQnl0ZXNbMTFdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTJdLCBhZGRyZXNzQnl0ZXNbMTNdLCBhZGRyZXNzQnl0ZXNbMTRdLCBhZGRyZXNzQnl0ZXNbMTVdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTZdLCBhZGRyZXNzQnl0ZXNbMTddLCBhZGRyZXNzQnl0ZXNbMThdLCBhZGRyZXNzQnl0ZXNbMTldCiAgICAgICAgXSkKICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgLy8gbGV0IGRhdGEgPSBkYXRhU3RyLmRlY29kZUhleCgpCgogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBldm1Ub2tlbkFkZHIsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeNFTToEvmAddressV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bUFkZHJlc3NWMiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIEJyaWRnZXMgYW4gTkZUIGZyb20gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24gaW4gQ2FkZW5jZSB0byB0aGUgbmFtZWQgcmVjaXBpZW50IGluIEVWTS4KLy8vCi8vLyBOT1RFOiBUaGlzIHRyYW5zYWN0aW9uIGFsc28gb25ib2FyZHMgdGhlIE5GVCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgQ2FkZW5jZSBORlQuaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gRVZNCi8vLyBAcGFyYW0gcmVjaXBpZW50OiBUaGUgaGV4LWVuY29kZWQgRVZNIGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgTkZUCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50NjQsIHJlY2lwaWVudDogU3RyaW5nKSB7CiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsgICAgICAgIAogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5iYXNlRmVlCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBORlQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5uZnQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IG5mdElkZW50aWZpZXI6CiAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNlbmQgaW52YWxpZCBuZnQgdHlwZSAtIHJlcXVlc3RlZDogIi5jb25jYXQobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBORlQgdG8gdGhlIGJyaWRnZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICBzZWxmLm5mdC5nZXRUeXBlKCksCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHRyYW5zYWN0aW9uCiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LXNlbGYubmZ0LAogICAgICAgICAgICB0bzogRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCksCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "bridgeNFTToEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VORlRUb0V2bVYyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gQnJpZGdlcyBhbiBORlQgZnJvbSB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbiBpbiBDYWRlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EgaW4gRmxvd0VWTQovLy8KLy8vIE5PVEU6IFRoaXMgdHJhbnNhY3Rpb24gYWxzbyBvbmJvYXJkcyB0aGUgTkZUIHRvIHRoZSBicmlkZ2UgaWYgbmVjZXNzYXJ5IHdoaWNoIG1heSBpbmN1ciBhZGRpdGlvbmFsIGZlZXMKLy8vICAgICB0aGFuIGJyaWRnaW5nIGFuIGFzc2V0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQuCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBDYWRlbmNlIE5GVC5pZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBFVk0KLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCkgewogICAgCiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBORlQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkgKyBGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLm5mdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gbmZ0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIG5mdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIE5GVCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "bridgeTokensFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGZ1bmdpYmxlIHRva2VucyBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZQovLy8gRmxvd0VWTUJyaWRnZS4KLy8vCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIEZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIFZhdWx0LWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUludDI1NikgewoKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzIwIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBGdW5naWJsZVRva2VuIFZhdWx0IHR5cGUKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgICAgICBhZGRyZXNzOiB0b2tlbkNvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogdG9rZW5Db250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJWYXVsdCIKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIG9mOiAiIC5jb25jYXQodG9rZW5Db250cmFjdEFkZHJlc3MudG9TdHJpbmcoKSkuY29uY2F0KCIuIikuY29uY2F0KHRva2VuQ29udHJhY3ROYW1lKS5jb25jYXQoIi5WYXVsdCIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBWYXVsdCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgLy8gSWYgdGhlIHZhdWx0IGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgaXQgYW5kIHB1Ymxpc2ggYWNjb3JkaW5nIHRvIHRoZSBjb250cmFjdCdzIGRlZmluZWQgY29uZmlndXJhdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC12YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKCiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxldCBtZXRhZGF0YUNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXAsIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gobWV0YWRhdGFDYXAsIGF0OiB2YXVsdERhdGEubWV0YWRhdGFQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLnJlY2VpdmVyID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmF1bHQgZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIHRva2VuIGludG8gdGhlIHNpZ25lcidzIHZhdWx0CiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeTokensFromEvmToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGZ1bmdpYmxlIHRva2VucyBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZQovLy8gRmxvd0VWTUJyaWRnZS4KLy8vCi8vLyBOT1RFOiBUaGUgRVJDNzIxIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIEZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSB0b2tlbkNvbnRyYWN0TmFtZTogVGhlIG5hbWUgb2YgdGhlIFZhdWx0LWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUludDI1NiwgcmVjZWl2ZXI6IEFkZHJlc3MpIHsKCiAgICBsZXQgdmF1bHRUeXBlOiBUeXBlCiAgICBsZXQgcmVjZWl2ZXI6ICZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkMyMCBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gRnVuZ2libGVUb2tlbiBWYXVsdCB0eXBlCiAgICAgICAgc2VsZi52YXVsdFR5cGUgPSBGbG93RVZNQnJpZGdlVXRpbHMuYnVpbGRDb21wb3NpdGVUeXBlKAogICAgICAgICAgICAgICAgYWRkcmVzczogdG9rZW5Db250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgICAgICBjb250cmFjdE5hbWU6IHRva2VuQ29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiVmF1bHQiCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBvZjogIiAuY29uY2F0KHRva2VuQ29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkpLmNvbmNhdCgiLiIpLmNvbmNhdCh0b2tlbkNvbnRyYWN0TmFtZSkuY29uY2F0KCIuVmF1bHQiKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgVmF1bHQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQsIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIC8vIElmIHRoZSB2YXVsdCBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGl0IGFuZCBwdWJsaXNoIGFjY29yZGluZyB0byB0aGUgY29udHJhY3QncyBkZWZpbmVkIGNvbmZpZ3VyYXRpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCgogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBsZXQgbWV0YWRhdGFDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwLCBhdDogdmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKG1ldGFkYXRhQ2FwLCBhdDogdmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKICAgICAgICB9CiAgICAgICAgbGV0IHJlY2VpdmVyQWNjdCA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICAgICAgc2VsZi5yZWNlaXZlciA9IHJlY2VpdmVyQWNjdC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZhdWx0IHJlY2VpdmVyIGNhcGFiaWxpdGllcyBmcm9tIHB1YmxpYyBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZSByZXF1ZXN0CiAgICAgICAgbGV0IHZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9IDwtIHNlbGYuY29hLndpdGhkcmF3VG9rZW5zKAogICAgICAgICAgICB0eXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgYW1vdW50OiBhbW91bnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCB0b2tlbiBpbnRvIHRoZSBzaWduZXIncyB2YXVsdAogICAgICAgIHNlbGYucmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXZhdWx0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", - "bridgeTokensFromEvmToFlowV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtVG9GbG93VjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKLy8vIFRoaXMgdHJhbnNhY3Rpb24gYnJpZGdlcyBmdW5naWJsZSB0b2tlbnMgZnJvbSBFVk0gdG8gQ2FkZW5jZSBhc3N1bWluZyBpdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZCB0byB0aGUKLy8vIEZsb3dFVk1CcmlkZ2UuIFRoZSBmdWxsIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBpcyBzb3VyY2VkIGZyb20gRVZNLCBzbyBpdCdzIGFzc3VtZWQgdGhlIHNpZ25lciBoYXMgc3VmZmljaWVudAovLy8gYmFsYW5jZSBvZiB0aGUgRVJDMjAgdG8gYnJpZGdpbmcgaW50byBDYWRlbmNlLiBBbHNvIGtub3cgdGhhdCB0aGUgcmVjaXBpZW50IEZsb3cgYWNjb3VudCBtdXN0IGhhdmUgYSBSZWNlaXZlcgovLy8gY2FwYWJsZSBvZiByZWNlaXZpbmcgdGhlIGJyaWRnZWQgdG9rZW5zIGFjY2Vzc2libGUgdmlhIHB1Ymxpc2hlZCBDYXBhYmlsaXR5IGF0IHRoZSB0b2tlbidzIHN0YW5kYXJkIHBhdGguCi8vLwovLy8gTk9URTogVGhlIEVSQzIwIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB2YXVsdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCB0byBicmlkZ2UKLy8vICAgICAtIGUuZy4gdmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTSBhbmQgdHJhbnNmZXIgdG8gdGhlIHJlY2lwaWVudAovLy8gQHBhcmFtIHJlY2lwaWVudDogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIHRvIHJlY2VpdmUgdGhlIGJyaWRnZWQgdG9rZW5zCi8vLwp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZywgYW1vdW50OiBVSW50MjU2LCByZWNpcGllbnQ6IEFkZHJlc3MpIHsKCiAgICBsZXQgdmF1bHRUeXBlOiBUeXBlCiAgICBsZXQgcmVjZWl2ZXI6ICZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0KICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgVmF1bHQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgVmF1bHQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgc2VsZi52YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHNlbGYudmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBzZWxmLnZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIFZhdWx0IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0LCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICAvLyBJZiB0aGUgdmF1bHQgZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBpdCBhbmQgcHVibGlzaCBhY2NvcmRpbmcgdG8gdGhlIGNvbnRyYWN0J3MgZGVmaW5lZCBjb25maWd1cmF0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LXZhdWx0RGF0YS5jcmVhdGVFbXB0eVZhdWx0KCksIHRvOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEubWV0YWRhdGFQYXRoKQoKICAgICAgICAgICAgbGV0IHJlY2VpdmVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgbGV0IG1ldGFkYXRhQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcCwgYXQ6IHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChtZXRhZGF0YUNhcCwgYXQ6IHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYucmVjZWl2ZXIgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWYXVsdCBmcm9tIHJlY2lwaWVudCdzIGFjY291bnQiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBFbnN1cmUgdGhlIGJyaWRnZWQgdmF1bHQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCh2YXVsdC5nZXRUeXBlKCkgPT0gc2VsZi52YXVsdFR5cGUsIG1lc3NhZ2U6ICJCcmlkZ2VkIHZhdWx0IHR5cGUgbWlzbWF0Y2giKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgdG9rZW4gaW50byB0aGUgc2lnbmVyJ3MgdmF1bHQKICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC12YXVsdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", - "bridgeTokensFromEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNGcm9tRXZtVjIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgZnVuZ2libGUgdG9rZW5zIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlCi8vLyBGbG93RVZNQnJpZGdlLgovLy8KLy8vIE5PVEU6IFRoZSBFUkMyMCBtdXN0IGhhdmUgZmlyc3QgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIGJyaWRnZS4gVGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlIG1ldGhvZAovLy8gICAgIEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzOiBzZWxmLmV2bUNvbnRyYWN0QWRkcmVzcykKLy8vCi8vLyBAcGFyYW0gdmF1bHRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQgdG8gYnJpZGdlCi8vLyAgICAgLSBlLmcuIHZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gYW1vdW50OiBUaGUgYW1vdW50IG9mIHRva2VucyB0byBicmlkZ2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVJbnQyNTYpIHsKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi52YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYudmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgVmF1bHQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQsIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIC8vIElmIHRoZSB2YXVsdCBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGl0IGFuZCBwdWJsaXNoIGFjY29yZGluZyB0byB0aGUgY29udHJhY3QncyBkZWZpbmVkIGNvbmZpZ3VyYXRpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCgogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBsZXQgbWV0YWRhdGFDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwLCBhdDogdmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKG1ldGFkYXRhQ2FwLCBhdDogdmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5yZWNlaXZlciA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZhdWx0IGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZSByZXF1ZXN0CiAgICAgICAgbGV0IHZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9IDwtIHNlbGYuY29hLndpdGhkcmF3VG9rZW5zKAogICAgICAgICAgICB0eXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgYW1vdW50OiBhbW91bnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRW5zdXJlIHRoZSBicmlkZ2VkIHZhdWx0IGlzIHRoZSBjb3JyZWN0IHR5cGUKICAgICAgICBhc3NlcnQodmF1bHQuZ2V0VHlwZSgpID09IHNlbGYudmF1bHRUeXBlLCBtZXNzYWdlOiAiQnJpZGdlZCB2YXVsdCB0eXBlIG1pc21hdGNoIikKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIHRva2VuIGludG8gdGhlIHNpZ25lcidzIHZhdWx0CiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "bridgeTokensToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0KSB7CgogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYmFsYW5jZSAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgYnJpZGdlIGZlZSBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiBzdG9yYWdlIHVzYWdlIHdpdGggc29tZSBidWZmZXIKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdFRva2VucygKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeTokensToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKHRva2VuQ29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCB0b2tlbkNvbnRyYWN0TmFtZTogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCwgY29udHJhY3RFVk1BZGRyZXNzOiBTdHJpbmcsIGRhdGE6IFtVSW50OF0sIGdhc0xpbWl0OiBVSW50NjQpIHsKCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UsIEVWTS5DYWxsLCBFVk0uT3duZXIpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgIGFkZHJlc3M6IHRva2VuQ29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICBjb250cmFjdE5hbWU6IHRva2VuQ29udHJhY3ROYW1lLAogICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJWYXVsdCIKICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgb2Y6ICIgLmNvbmNhdCh0b2tlbkNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpKS5jb25jYXQoIi4iKS5jb25jYXQodG9rZW5Db250cmFjdE5hbWUpLmNvbmNhdCgiLlZhdWx0IikpCgogICAgICAgIHNlbGYuY29hLmRlcG9zaXRUb2tlbnMoCiAgICAgICAgICAgIHZhdWx0OiA8LXNlbGYuc2VudFZhdWx0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQoKICAgICAgICB2YXIgYWRkcmVzc0J5dGVzOiBbVUludDhdID0gY29udHJhY3RFVk1BZGRyZXNzLmRlY29kZUhleCgpCiAgICAgICAgbGV0IGV2bVRva2VuQWRkciA9IEVWTS5FVk1BZGRyZXNzKGJ5dGVzOiBbCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1swXSwgYWRkcmVzc0J5dGVzWzFdLCBhZGRyZXNzQnl0ZXNbMl0sIGFkZHJlc3NCeXRlc1szXSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzRdLCBhZGRyZXNzQnl0ZXNbNV0sIGFkZHJlc3NCeXRlc1s2XSwgYWRkcmVzc0J5dGVzWzddLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbOF0sIGFkZHJlc3NCeXRlc1s5XSwgYWRkcmVzc0J5dGVzWzEwXSwgYWRkcmVzc0J5dGVzWzExXSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzEyXSwgYWRkcmVzc0J5dGVzWzEzXSwgYWRkcmVzc0J5dGVzWzE0XSwgYWRkcmVzc0J5dGVzWzE1XSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzE2XSwgYWRkcmVzc0J5dGVzWzE3XSwgYWRkcmVzc0J5dGVzWzE4XSwgYWRkcmVzc0J5dGVzWzE5XQogICAgICAgIF0pCiAgICAgICAgbGV0IHZhbHVlQmFsYW5jZSA9IEVWTS5CYWxhbmNlKGF0dG9mbG93OiAwKQogICAgICAgIC8vIGxldCBkYXRhID0gZGF0YVN0ci5kZWNvZGVIZXgoKQogICAgICAgICBsZXQgdHhSZXN1bHQgPSBzZWxmLmNvYS5jYWxsKAogICAgICAgICAgICB0bzogZXZtVG9rZW5BZGRyLAogICAgICAgICAgICBkYXRhOiBkYXRhLAogICAgICAgICAgICBnYXNMaW1pdDogZ2FzTGltaXQsCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZUJhbGFuY2UKICAgICAgICApCgogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuZmFpbGVkIHx8IHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLnN1Y2Nlc3NmdWwsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeTokensToEvmAddressV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bUFkZHJlc3NWMiAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCwgcmVjaXBpZW50OiBTdHJpbmcpIHsKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAogICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgVmF1bHQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IHZhdWx0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIHZhdWx0IHR5cGUgLSByZXF1ZXN0ZWQ6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgc2VsZi5zZW50VmF1bHQuYmFsYW5jZSA9PSBhbW91bnQ6ICJBbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZG9lcyBub3QgbWF0Y2ggdGhlIHJlcXVlc3RlZCBhbW91bnQiCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBWYXVsdCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgdHJhbnNhY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCiAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VUb2tlbnNUb0VWTSgKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", - "bridgeTokensToEvmV2": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VUb2tlbnNUb0V2bVYyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCi8vLyBCcmlkZ2VzIGEgVmF1bHQgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmFnZSB0byB0aGUgc2lnbmVyJ3MgQ09BIGluIEVWTS5BY2NvdW50LgovLy8KLy8vIE5PVEU6IFRoaXMgdHJhbnNhY3Rpb24gYWxzbyBvbmJvYXJkcyB0aGUgVmF1bHQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gdmF1bHRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQgdG8gYnJpZGdlCi8vLyAgICAgLSBlLmcuIHZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gYW1vdW50OiBUaGUgYW1vdW50IG9mIHRva2VucyB0byBicmlkZ2UgZnJvbSBFVk0KLy8vCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCkgewogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIHZhciBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIFZhdWx0IHJlcXVpcmVzIG9uYm9hcmRpbmcgLSB0aGlzIGltcGFjdHMgdGhlIGZlZSByZXF1aXJlZAogICAgICAgIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nID0gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKSkKICAgICAgICAgICAgPz8gcGFuaWMoIkJyaWRnZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXNzZXQgdHlwZSIpCiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICBhcHByb3hGZWUgPSBhcHByb3hGZWUgKyBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUKICAgICAgICB9CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgcHJlIHsKICAgICAgICBzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCkuaWRlbnRpZmllciA9PSB2YXVsdElkZW50aWZpZXI6CiAgICAgICAgICAgICJBdHRlbXB0aW5nIHRvIHNlbmQgaW52YWxpZCB2YXVsdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgIC5jb25jYXQoIiwgc2VuZGluZzogIikuY29uY2F0KHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgLy8gT25ib2FyZCB0aGUgVmF1bHQgdG8gdGhlIGJyaWRnZQogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgICAgICBzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCksCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdFRva2VucygKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", - "calculateBridgeFee": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjYWxjdWxhdGVCcmlkZ2VGZWUgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgdGhlIGNhbGN1bGF0ZWQgZmVlIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCB0byBlc2Nyb3cgYW4gYXNzZXQgcGx1cyB0aGUgYmFzZSBmZWUuCi8vLwovLy8gQHBhcmFtIGJ5dGVzOiBUaGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgdG8gZXNjcm93IGFuIGFzc2V0LgovLy8KLy8vIEByZXR1cm4gVGhlIGNhbGN1bGF0ZWQgZmVlIHRvIGJlIHBhaWQgaW4gRmxvd1Rva2VuCi8vLwphY2Nlc3MoYWxsKQpmdW4gbWFpbihieXRlcyB1c2VkOiBVSW50NjQpOiBVRml4NjQgewogICAgcmV0dXJuIEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IHVzZWQpCn0K", - "evmAddressRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk1VdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgd2hldGhlciBhIEVWTSBjb250cmFjdCBuZWVkcyB0byBiZSBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcGFyYW0gZXZtQWRkcmVzc0hleDogVGhlIGhleC1lbmNvZGVkIGFkZHJlc3Mgb2YgdGhlIEVWTSBjb250cmFjdCBhcyBhIFN0cmluZyB3aXRob3V0IDB4IHByZWZpeAovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgY29udHJhY3QgcmVxdWlyZXMgb25ib2FyZGluZyB0byB0aGUgRmxvd0VWTUJyaWRnZSBpZiB0aGUgdHlwZSBpcyBicmlkZ2VhYmxlLCBvdGhlcndpc2UgbmlsCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihldm1BZGRyZXNzSGV4OiBTdHJpbmcpOiBCb29sPyB7CiAgICBpZiBsZXQgYWRkcmVzcyA9IEVWTVV0aWxzLmdldEVWTUFkZHJlc3NGcm9tSGV4U3RyaW5nKGFkZHJlc3M6IGV2bUFkZHJlc3NIZXgpIHsKICAgICAgICByZXR1cm4gRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3MpCiAgICB9CiAgICByZXR1cm4gbmlsCn0K", - "getAssociatedEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBc3NvY2lhdGVkRXZtQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBFVk1VdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgdGhlIEVWTSBhZGRyZXNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gQ2FkZW5jZSB0eXBlIChhcyBpdHMgaWRlbnRpZmllciBTdHJpbmcpCi8vLwovLy8gQHBhcmFtIHR5cGVJZGVudGlmaWVyIFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBTdHJpbmcKLy8vCi8vLyBAcmV0dXJuIFRoZSBFVk0gYWRkcmVzcyBhcyBhIGhleCBzdHJpbmcgaWYgdGhlIHR5cGUgaGFzIGFuIGFzc29jaWF0ZWQgRVZNQWRkcmVzcywgb3RoZXJ3aXNlIG5pbAovLy8KYWNjZXNzKGFsbCkKZnVuIG1haW4oaWRlbnRpZmllcjogU3RyaW5nKTogU3RyaW5nPyB7CiAgICBpZiBsZXQgdHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgewogICAgICAgIGlmIGxldCBhZGRyZXNzID0gRmxvd0VWTUJyaWRnZUNvbmZpZy5nZXRFVk1BZGRyZXNzQXNzb2NpYXRlZCh3aXRoOiB0eXBlKSB7CiAgICAgICAgICAgIHJldHVybiBFVk1VdGlscy5nZXRFVk1BZGRyZXNzQXNIZXhTdHJpbmcoYWRkcmVzczogYWRkcmVzcykKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbmlsCn0=", - "getAssociatedFlowIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBc3NvY2lhdGVkRmxvd0lkZW50aWZpZXIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTSBmcm9tIDB4RVZNCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlQ29uZmlnCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihhZGRyZXNzOiBTdHJpbmcpOiBTdHJpbmc/IHsKICAgIGlmIGxldCB0eXBlSW5mbyA9IEZsb3dFVk1CcmlkZ2VDb25maWcuZ2V0VHlwZUFzc29jaWF0ZWQod2l0aDogRVZNLmFkZHJlc3NGcm9tU3RyaW5nKGFkZHJlc3MpKSB7CiAgICAgICAgcmV0dXJuIHR5cGVJbmZvLmlkZW50aWZpZXIKICAgIH0KICAgIHJldHVybiBuaWwKfQ==", - "getBridgeCoaAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRCcmlkZ2VDb2FBZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB0aGUgRVZNIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHJldHVybiBUaGUgRVZNIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBGbG93RVZNQnJpZGdlJ3MgY29vcmRpbmF0aW5nIENhZGVuY2VPd25lZEFjY291bnQKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKCk6IFN0cmluZyB7CiAgICBsZXQgYWRkcmVzczogRVZNLkVWTUFkZHJlc3MgPSBGbG93RVZNQnJpZGdlLmdldEJyaWRnZUNPQUVWTUFkZHJlc3MoKQogICAgcmV0dXJuIEVWTVV0aWxzLmdldEVWTUFkZHJlc3NBc0hleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzKQp9", - "onboardByEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBvbmJvYXJkQnlFdm1BZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBFVk1VdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIE5GVCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBORlRzIGJldHdlZW4gZW52aXJvbm1lbnRzCi8vLyBOT1RFOiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgYnJpZGdpbmcgYSBDYWRlbmNlLW5hdGl2ZSBORlQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIGNvbnRyYWN0QWRkcmVzc0hleDogVGhlIEVWTSBhZGRyZXNzIG9mIHRoZSBjb250cmFjdCAoYXMgaGV4IHN0cmluZyB3aXRob3V0IDB4IHByZWZpeCkgZGVmaW5pbmcgdGhlIAovLy8gICAgIGJyaWRnZWFibGUgYXNzZXQgdG8gYmUgb25ib2FyZGVkCi8vLwp0cmFuc2FjdGlvbihjb250cmFjdEFkZHJlc3NIZXg6IFN0cmluZykgewoKICAgIGxldCBjb250cmFjdEFkZHJlc3M6IEVWTS5FVk1BZGRyZXNzCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgRVZNQWRkcmVzcyBmcm9tIGhleCBzdHJpbmcgKG5vIGxlYWRpbmcgYCIweCJgKSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIHNlbGYuY29udHJhY3RBZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogY29udHJhY3RBZGRyZXNzSGV4KQogICAgICAgICAgICA/PyBwYW5pYygiSW52YWxpZCBFVk0gYWRkcmVzcyBzdHJpbmcgcHJvdmlkZWQiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIE9uYm9hcmQgdGhlIEVWTSBjb250cmFjdAogICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5RVZNQWRkcmVzcygKICAgICAgICAgICAgc2VsZi5jb250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "onboardByType": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBvbmJvYXJkQnlUeXBlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgYXNzZXQgdHlwZSB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgYXNzZXRzIGJldHdlZW4gZW52aXJvbm1lbnRzCi8vLyBOT1RFOiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgYnJpZGdpbmcgYSBDYWRlbmNlLW5hdGl2ZSBhc3NldCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gdHlwZTogVGhlIENhZGVuY2UgdHlwZSBvZiB0aGUgYnJpZGdlYWJsZSBhc3NldCB0byBvbmJvYXJkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKHR5cGU6IFR5cGUpIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIE9uYm9hcmQgdGhlIGFzc2V0IFR5cGUKICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgIHR5cGUsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "onboardByTypeIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBvbmJvYXJkQnlUeXBlSWRlbnRpZmllciAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIGFzc2V0IHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgYXNzZXQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIGlkZW50aWZlcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBicmlkZ2VhYmxlIGFzc2V0IHRvIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlCi8vLwp0cmFuc2FjdGlvbihpZGVudGlmaWVyOiBTdHJpbmcpIHsKCiAgICBsZXQgdHlwZTogVHlwZQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSB0eXBlIGZyb20gaWRlbnRpZmllciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIHNlbGYudHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgPz8gcGFuaWMoIkludmFsaWQgdHlwZSBpZGVudGlmaWVyIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBPbmJvYXJkIHRoZSBhc3NldCBUeXBlCiAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICBzZWxmLnR5cGUsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "typeRequiresOnboarding": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0eXBlUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgdHlwZSBuZWVkcyB0byBiZSBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcGFyYW0gdHlwZTogVGhlIENhZGVuY2UgVHlwZSBpbiBxdWVzdGlvbgovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKHR5cGU6IFR5cGUpOiBCb29sPyB7CiAgICByZXR1cm4gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpCn0K", - "typeRequiresOnboardingByIdentifier": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0eXBlUmVxdWlyZXNPbmJvYXJkaW5nQnlJZGVudGlmaWVyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgdHlwZSBuZWVkcyB0byBiZSBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcGFyYW0gaWRlbnRpZmllcjogVGhlIGlkZW50aWZpZXIgb2YgdGhlIENhZGVuY2UgVHlwZSBpbiBxdWVzdGlvbgovLy8KLy8vIEByZXR1cm4gV2hldGhlciB0aGUgdHlwZSByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGlkZW50aWZpZXI6IFN0cmluZyk6IEJvb2w/IHsKICAgIGlmIGxldCB0eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSB7CiAgICAgICAgcmV0dXJuIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKQogICAgfQogICAgcmV0dXJuIG5pbAp9Cg==" + "batchBridgeNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRGcm9tRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdENvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gbmZ0Q29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgTkZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZHM6IFtVSW50MjU2XSkgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzcyMSBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gTkZUIHR5cGUKICAgICAgICBzZWxmLm5mdFR5cGUgPSBGbG93RVZNQnJpZGdlVXRpbHMuYnVpbGRDb21wb3NpdGVUeXBlKAogICAgICAgICAgICAgICAgYWRkcmVzczogbmZ0Q29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICAgICAgY29udHJhY3ROYW1lOiBuZnRDb250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJORlQiCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUiKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSAqIFVGaXg2NChpZHMubGVuZ3RoKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGZvciBpZCBpbiBpZHMgewogICAgICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgICAgIHR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgICAgICBzZWxmLmNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1uZnQpCiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgTkZUIGludG8gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24KICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "batchBridgeNFTFromEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRGcm9tRXZtVjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50MjU2XSkgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIHNlbGYubmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBzZWxmLm5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGNvbGxlY3Rpb24gZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgKEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZSAqIFVGaXg2NChpZHMubGVuZ3RoKSkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgd2hpbGUgaWR4IDwgaWRzLmxlbmd0aCB7CiAgICAgICAgICAgIGxldCBuZnRJZCA9IGlkc1tpZHhdIQogICAgICAgICAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgaWQ6IG5mdElkLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCBuZnQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQoc2VsZi5uZnRUeXBlLmlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAgICAgLmNvbmNhdCgiLCByZWNlaXZlZDogIikuY29uY2F0KG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICAgICAgKQogICAgICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgICAgIHNlbGYuY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchBridgeNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRUb0V2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24obmZ0Q29udHJhY3RBZGRyZXNzOiBBZGRyZXNzLCBuZnRDb250cmFjdE5hbWU6IFN0cmluZywgaWRzOiBbVUludDY0XSkgewogICAgCiAgICBsZXQgbmZ0czogQHtVSW50NjQgOiB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIHNlbGYubmZ0cyA8LSB7fQogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgICAgICBzZWxmLm5mdHNbaWRdIDwtISBuZnQKICAgICAgICB9CiAgICAgICAgLy8gc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAgKiBVRml4NjQoaWRzLmxlbmd0aCkKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIHdoaWxlIGlkeCA8IGlkcy5sZW5ndGggewogICAgICAgICAgICBsZXQgbmZ0SWQgPSBpZHNbaWR4XSEKICAgICAgICAgICAgbGV0IG5mdCA8LSBzZWxmLm5mdHMucmVtb3ZlKGtleTogbmZ0SWQpISBhcyBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKCAKICAgICAgICAgICAgICAgIG5mdDogPC0gbmZ0ISwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5uZnRzCiAgICB9Cn0K", + "batchBridgeNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRUb0V2bUFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKLy8vIEJyaWRnZXMgYW4gTkZUIGZyb20gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24gaW4gQ2FkZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BIGluIEZsb3dFVk0KLy8vCi8vLyBOT1RFOiBUaGlzIHRyYW5zYWN0aW9uIGFsc28gb25ib2FyZHMgdGhlIE5GVCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgQ2FkZW5jZSBORlQuaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0sIHJlY2lwaWVudDogU3RyaW5nKSB7CiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvbGxlY3Rpb246IGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7ICAgICAgICAKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBORlQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIHNlbGYuY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZHNbMF0pCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkgKyAoRmxvd0VWTUJyaWRnZUNvbmZpZy5iYXNlRmVlICogVUZpeDY0KGlkcy5sZW5ndGgpKQoKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLm5mdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gbmZ0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIG5mdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIE5GVCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgdHJhbnNhY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCiAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VORlRUb0VWTSgKICAgICAgICAgICAgdG9rZW46IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCgogICAgICAgIGZvciBpZCBpbiBpZHMgewogICAgICAgICAgICBpZiBpZHggPT0gMCB7CiAgICAgICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICAgICAgdG9rZW46IDwtIHNlbGYuY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCksCiAgICAgICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "batchBridgeNFTToEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VORlRUb0V2bVYyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgoKLy8vIEJyaWRnZXMgYW4gTkZUIGZyb20gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24gaW4gQ2FkZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BIGluIEZsb3dFVk0KLy8vCi8vLyBOT1RFOiBUaGlzIHRyYW5zYWN0aW9uIGFsc28gb25ib2FyZHMgdGhlIE5GVCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSBuZnRJZGVudGlmaWVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIE5GVCB0byBicmlkZ2UgLSBlLmcuIG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGlkOiBUaGUgQ2FkZW5jZSBORlQuaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICAgIAogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmc6IEJvb2wKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBORlQgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gTkZUIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWRzWzBdKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApICsgKEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZSAqIFVGaXg2NChpZHMubGVuZ3RoKSkKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LSBuZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQoKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIHdoaWxlIGlkeCA8IGlkcy5sZW5ndGggewogICAgICAgICAgICAgaWYgaWR4ID09IDAgewogICAgICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICBsZXQgbmZ0SWQgPSBpZHNbaWR4XSEKICAgICAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IG5mdElkKSEgYXMgQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgICAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgICAgIG5mdDogPC0gbmZ0LAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchEvmAddressRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hFdm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSBFVk0gY29udHJhY3QgbmVlZHMgdG8gYmUgb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHBhcmFtIGV2bUFkZHJlc3NlczogQXJyYXkgb2YgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgRVZNIGNvbnRyYWN0IGFzIGEgU3RyaW5nIHdpdGhvdXQgMHggcHJlZml4IHRvIGNoZWNrIGZvcgovLy8gICAgIG9uYm9hcmRpbmcgc3RhdHVzCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSBjb250cmFjdCByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vICAgICBpbmRleGVkIG9uIHRoZSBoZXgtZW5jb2RlZCBhZGRyZXNzIG9mIHRoZSBFVk0gY29udHJhY3Qgd2l0aG91dCAweCBwcmVmaXgKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGV2bUFkZHJlc3NlczogW1N0cmluZ10pOiB7U3RyaW5nOiBCb29sP30gewogICAgbGV0IHJlc3VsdHM6IHtTdHJpbmc6IEJvb2w/fSA9IHt9CiAgICBmb3IgYWRkcmVzc0hleCBpbiBldm1BZGRyZXNzZXMgewogICAgICAgIGlmIHJlc3VsdHNbYWRkcmVzc0hleF0gIT0gbmlsIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CiAgICAgICAgaWYgbGV0IGFkZHJlc3MgPSBFVk1VdGlscy5nZXRFVk1BZGRyZXNzRnJvbUhleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzSGV4KSB7CiAgICAgICAgICAgIGxldCByZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcykKICAgICAgICAgICAgcmVzdWx0cy5pbnNlcnQoa2V5OiBhZGRyZXNzSGV4LCByZXF1aXJlc09uYm9hcmRpbmcpCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHJlc3VsdHMKfQo=", + "batchIdentifierRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hJZGVudGlmaWVyUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgd2hldGhlciBhIHR5cGUgbmVlZHMgdG8gYmUgb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHBhcmFtIFR5cGVzOiBUaGUgYXJyYXkgb2YgdHlwZXMgdG8gY2hlY2sgZm9yIG9uYm9hcmRpbmcgc3RhdHVzCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbCBpbmRleGVkCi8vLyAgICAgb24gdGhlIHR5cGUKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGlkZW50aWZpZXJzOiBbU3RyaW5nXSk6IHtTdHJpbmc6IEJvb2w/fSB7CiAgICBsZXQgcmVzdWx0czoge1N0cmluZzogQm9vbD99ID0ge30KCiAgICBmb3IgaWRlbnRpZmllciBpbiBpZGVudGlmaWVycyB7CiAgICAgICAgaWYgcmVzdWx0c1tpZGVudGlmaWVyXSAhPSBuaWwgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KICAgICAgICBsZXQgdHlwZTogVHlwZSA9IENvbXBvc2l0ZVR5cGUoaWRlbnRpZmllcikgPz8gcGFuaWMoIkludmFsaWQgdHlwZSBpZGVudGlmaWVyIikKICAgICAgICByZXN1bHRzLmluc2VydChrZXk6IGlkZW50aWZpZXIsIEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyh0eXBlKSkKICAgIH0KICAgIHJldHVybiByZXN1bHRzCn0K", + "batchOnboardByEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hPbmJvYXJkQnlFdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRVZNVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBORlQgdHlwZSB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgTkZUcyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgTkZUIHRvIEVWTQovLy8KLy8vIEBwYXJhbSBhZGRyZXNzZXNBc0hleDogQXJyYXkgb2YgRVZNIGNvbnRyYWN0IGFkZHJlc3NlcyAoYXMgaGV4IHN0cmluZyB3aXRob3V0IDB4IHByZWZpeCkgZGVmaW5pbmcgdGhlIAovLy8gICAgIGJyaWRnZWFibGUgYXNzZXQgdG8gYmUgb25ib2FyZGVkCi8vLwp0cmFuc2FjdGlvbihhZGRyZXNzZXNBc0hleDogW1N0cmluZ10pIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICAvLyBTZXQgYSB3aXRoZHJhd2FsIGxpbWl0IGZvciB0aGUgcHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NChhZGRyZXNzZXNBc0hleC5sZW5ndGgpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAgICAgLy8gQ3JlYXRlIFNjb3BlZEZUUHJvdmlkZXIgdG8gZXhwaXJlIGp1c3QgYWZ0ZXIgdGhpcyB0cmFuc2FjdGlvbgogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBwcm92aWRlZCBhcnJheQogICAgICAgIGZvciBhZGRyZXNzSGV4IGluIGFkZHJlc3Nlc0FzSGV4IHsKICAgICAgICAgICAgLy8gQ29udmVydCBoZXggc3RyaW5nIHRvIEVWTUFkZHJlc3MKICAgICAgICAgICAgbGV0IGFkZHJlc3MgPSBFVk1VdGlscy5nZXRFVk1BZGRyZXNzRnJvbUhleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzSGV4KQogICAgICAgICAgICAvLyBDb250aW51ZSBpZiB0aGUgaGV4IGlzIG5vdCBhIHZhbGlkIEVWTSBhZGRyZXNzIG9yIGlmIHRoZSBhZGRyZXNzIGlzIGFscmVhZHkgb25ib2FyZGVkCiAgICAgICAgICAgIGlmIGFkZHJlc3MgPT0gbmlsIHx8IEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzISkgIT0gdHJ1ZSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeUVWTUFkZHJlc3MoCiAgICAgICAgICAgICAgICBhZGRyZXNzISwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchOnboardByIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hPbmJvYXJkQnlJZGVudGlmaWVyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIGFzc2V0IHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgYXNzZXQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIHR5cGVzOiBUaGUgQ2FkZW5jZSB0eXBlcyBvZiB0aGUgYnJpZGdlYWJsZSBhc3NldCB0byBvbmJvYXJkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKGlkZW50aWZpZXJzOiBbU3RyaW5nXSkgewoKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIC8vIFNldCBhIHdpdGhkcmF3YWwgbGltaXQgZm9yIHRoZSBwcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckxpbWl0ID0gRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlICogVUZpeDY0KHR5cGVzLmxlbmd0aCkKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIocHJvdmlkZXJMaW1pdCkKICAgICAgICAvLyBDcmVhdGUgU2NvcGVkRlRQcm92aWRlciB0byBleHBpcmUganVzdCBhZnRlciB0aGlzIHRyYW5zYWN0aW9uCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgZm9yIGlkZW50aWZpZXJzIGluIGlkZW50aWZpZXJzIHsgCiAgICAgICAgICAgIGxldCB0eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSA/PyBwYW5pYygiSW52YWxpZCB0eXBlIGlkZW50aWZpZXIiKQogICAgICAgICAgICAvLyBDb250aW51ZSBvbiBpZiB0aGUgdHlwZSBkb2VzIG5vdCByZXF1aXJlIG9uYm9hcmRpbmcKICAgICAgICAgICAgaWYgRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpICE9IHRydWUgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBhc3NldCBUeXBlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHR5cGUsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICB9CiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "batchOnboardByType": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hPbmJvYXJkQnlUeXBlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgdGhlIGFzc2V0IHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgYXNzZXQgdG8gRVZNCi8vLwovLy8gQHBhcmFtIHR5cGVzOiBUaGUgQ2FkZW5jZSB0eXBlcyBvZiB0aGUgYnJpZGdlYWJsZSBhc3NldCB0byBvbmJvYXJkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKHR5cGVzOiBbVHlwZV0pIHsKCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICAvLyBTZXQgYSB3aXRoZHJhd2FsIGxpbWl0IGZvciB0aGUgcHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NCh0eXBlcy5sZW5ndGgpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAgICAgLy8gQ3JlYXRlIFNjb3BlZEZUUHJvdmlkZXIgdG8gZXhwaXJlIGp1c3QgYWZ0ZXIgdGhpcyB0cmFuc2FjdGlvbgogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGZvciB0eXBlIGluIHR5cGVzIHsgCiAgICAgICAgICAgIC8vIENvbnRpbnVlIG9uIGlmIHRoZSB0eXBlIGRvZXMgbm90IHJlcXVpcmUgb25ib2FyZGluZwogICAgICAgICAgICBpZiBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcodHlwZSkgIT0gdHJ1ZSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIGFzc2V0IFR5cGUKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICAgICAgdHlwZSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "batchTypeRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hUeXBlUmVxdWlyZXNPbmJvYXJkaW5nIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFJldHVybnMgd2hldGhlciBhIHR5cGUgbmVlZHMgdG8gYmUgb25ib2FyZGVkIHRvIHRoZSBGbG93RVZNQnJpZGdlCi8vLwovLy8gQHBhcmFtIFR5cGVzOiBUaGUgYXJyYXkgb2YgdHlwZXMgdG8gY2hlY2sgZm9yIG9uYm9hcmRpbmcgc3RhdHVzCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbCBpbmRleGVkCi8vLyAgICAgb24gdGhlIHR5cGUKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKHR5cGVzOiBbVHlwZV0pOiB7VHlwZTogQm9vbD99IHsKICAgIGxldCByZXN1bHRzOiB7VHlwZTogQm9vbD99ID0ge30KICAgIGZvciB0eXBlIGluIHR5cGVzIHsKICAgICAgICBpZiByZXN1bHRzW3R5cGVdICE9IG5pbCB7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQogICAgICAgIHJlc3VsdHMuaW5zZXJ0KGtleTogdHlwZSwgRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpKQogICAgfQogICAgcmV0dXJuIHJlc3VsdHMKfQo=", + "bridgeNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdENvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gbmZ0Q29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgTkZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDI1NikgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzcyMSBjb250cmFjdCBhZGRyZXNzIGZvciB0aGUgZ2l2ZW4gTkZUIHR5cGUKICAgICAgICBzZWxmLm5mdFR5cGUgPSBGbG93RVZNQnJpZGdlVXRpbHMuYnVpbGRDb21wb3NpdGVUeXBlKAogICAgICAgICAgICAgICAgYWRkcmVzczogbmZ0Q29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICAgICAgY29udHJhY3ROYW1lOiBuZnRDb250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJORlQiCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUiKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBORlQgQ29sbGVjdGlvbiAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uRGF0YS5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICBsZXQgY29sbGVjdGlvbkNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29sbGVjdGlvbkNhcCwgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYuY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGZyb20gc3RvcmFnZSBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTFromEvmToFlow": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdENvbnRyYWN0QWRkcmVzczogVGhlIEZsb3cgYWNjb3VudCBhZGRyZXNzIGhvc3RpbmcgdGhlIE5GVC1kZWZpbmluZyBDYWRlbmNlIGNvbnRyYWN0Ci8vLyBAcGFyYW0gbmZ0Q29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgTkZULWRlZmluaW5nIENhZGVuY2UgY29udHJhY3QKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDI1NiwgcmVjZWl2ZXI6IEFkZHJlc3MpIHsKCiAgICBsZXQgbmZ0VHlwZTogVHlwZQogICAgbGV0IGNvbGxlY3Rpb246ICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLy8gR2V0IHRoZSBFUkM3MjEgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIE5GVCB0eXBlCiAgICAgICAgc2VsZi5uZnRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IG5mdENvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogbmZ0Q29udHJhY3ROYW1lLAogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lOiAiTkZUIgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIikKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24gLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2goY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICAgICAgbGV0IGNvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvbGxlY3Rpb25DYXAsIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIH0KCiAgICAgICAgbGV0IHJlY2VpdmVyQWNjdCA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gcmVjZWl2ZXJBY2N0LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBjb2xsZWN0aW9uIGNhcGFiaWxpdGllcyBmcm9tIHB1YmxpYyBwYXRoIikKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGJyaWRnZSBmZWUgLSBicmlkZ2luZyBmcm9tIEVWTSBjb25zdW1lcyBubyBzdG9yYWdlLCBzbyBmbGF0IGZlZQogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIHNlbGYuY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICB0eXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTFromEvmToFlowV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bVRvRmxvd1YyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCgoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gYnJpZGdlcyBhbiBORlQgZnJvbSBFVk0gdG8gQ2FkZW5jZSBhc3N1bWluZyBpdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZS4KLy8vIEFsc28ga25vdyB0aGF0IHRoZSByZWNpcGllbnQgRmxvdyBhY2NvdW50IG11c3QgaGF2ZSBhIFJlY2VpdmVyIGNhcGFibGUgb2YgcmVjZWl2aW5nIHRoZSB0aGlzIGJyaWRnZWQgTkZUIGFjY2Vzc2libGUKLy8vIHZpYSBwdWJsaXNoZWQgQ2FwYWJpbGl0eSBhdCB0aGUgdG9rZW4ncyBzdGFuZGFyZCBwYXRoLgovLy8gTk9URTogVGhlIEVSQzcyMSBtdXN0IGhhdmUgZmlyc3QgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIGJyaWRnZS4gVGhpcyBjYW4gYmUgY2hlY2tlZCB2aWEgdGhlIG1ldGhvZAovLy8gICAgIEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzOiBzZWxmLmV2bUNvbnRyYWN0QWRkcmVzcykKLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIEVSQzcyMSBpZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBDYWRlbmNlIGZyb20gRVZNCi8vLyBAcGFyYW0gcmVjaXBpZW50OiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgYnJpZGdlZCBORlQKLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQyNTYsIHJlY2lwaWVudDogQWRkcmVzcykgewogICAgbGV0IG5mdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLm5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYubmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSByZWNpcGllbnQncyBORlQgUmVjZWl2ZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIC8vIENvbmZpZ3VyZSB0aGUgc2lnbmVyJ3MgYWNjb3VudCBmb3IgdGhpcyBORlQKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5yZWNlaXZlciA9IGdldEFjY291bnQocmVjaXBpZW50KS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFJlY2VpdmVyIGZyb20gcmVjaXBpZW50J3MgcHVibGljIGNhcGFiaWxpdHkgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBzZWxmLmNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogc2VsZi5uZnRUeXBlLAogICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRW5zdXJlIHRoZSBicmlkZ2VkIG5mdCBpcyB0aGUgY29ycmVjdCB0eXBlCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgbWVzc2FnZTogIkJyaWRnZWQgbmZ0IHR5cGUgbWlzbWF0Y2ggLSByZXF1ZXN3dGVkOiAiLmNvbmNhdChzZWxmLm5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgIC5jb25jYXQoIiwgcmVjZWl2ZWQ6ICIpLmNvbmNhdChuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgTkZUIGludG8gdGhlIHNpZ25lcidzIGNvbGxlY3Rpb24KICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "bridgeNFTFromEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZURnJvbUV2bVYyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgYW4gTkZUIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlIEZsb3dFVk1CcmlkZ2UKLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBFUkM3MjEgaWQgb2YgdGhlIE5GVCB0byBicmlkZ2UgdG8gQ2FkZW5jZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDI1NikgewoKICAgIGxldCBuZnRUeXBlOiBUeXBlCiAgICBsZXQgY29sbGVjdGlvbjogJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBORlQgdHlwZSAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIHNlbGYubmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBzZWxmLm5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogc2VsZi5uZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LWNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLCB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2xsZWN0aW9uQ2FwLCBhdDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGNvbGxlY3Rpb24gZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgIHR5cGU6IHNlbGYubmZ0VHlwZSwKICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCBuZnQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgbmZ0LmdldFR5cGUoKSA9PSBzZWxmLm5mdFR5cGUsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQoc2VsZi5uZnRUeXBlLmlkZW50aWZpZXIpCiAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIE5GVCBpbnRvIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uCiAgICAgICAgc2VsZi5jb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "bridgeNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdENvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgbmZ0Q29udHJhY3ROYW1lOiBTdHJpbmcsIGlkOiBVSW50NjQpIHsKICAgIAogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LXNlbGYubmZ0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbihuZnRDb250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIG5mdENvbnRyYWN0TmFtZTogU3RyaW5nLCBpZDogVUludDY0LCBjb250cmFjdEVWTUFkZHJlc3M6IFN0cmluZywgZGF0YTogW1VJbnQ4XSwgZ2FzTGltaXQ6IFVJbnQ2NCkgewogICAgCiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlLCBFVk0uQ2FsbCwgRVZNLk93bmVyKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlLCBFVk0uQ2FsbCwgRVZNLk93bmVyKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgdmFyIGFkZHJlc3NCeXRlczogW1VJbnQ4XSA9IGNvbnRyYWN0RVZNQWRkcmVzcy5kZWNvZGVIZXgoKQogICAgICAgIGxldCBldm1Ub2tlbkFkZHIgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogWwogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMF0sIGFkZHJlc3NCeXRlc1sxXSwgYWRkcmVzc0J5dGVzWzJdLCBhZGRyZXNzQnl0ZXNbM10sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1s0XSwgYWRkcmVzc0J5dGVzWzVdLCBhZGRyZXNzQnl0ZXNbNl0sIGFkZHJlc3NCeXRlc1s3XSwKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzhdLCBhZGRyZXNzQnl0ZXNbOV0sIGFkZHJlc3NCeXRlc1sxMF0sIGFkZHJlc3NCeXRlc1sxMV0sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1sxMl0sIGFkZHJlc3NCeXRlc1sxM10sIGFkZHJlc3NCeXRlc1sxNF0sIGFkZHJlc3NCeXRlc1sxNV0sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1sxNl0sIGFkZHJlc3NCeXRlc1sxN10sIGFkZHJlc3NCeXRlc1sxOF0sIGFkZHJlc3NCeXRlc1sxOV0KICAgICAgICBdKQogICAgICAgIGxldCB2YWx1ZUJhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICAvLyBsZXQgZGF0YSA9IGRhdGFTdHIuZGVjb2RlSGV4KCkKCiAgICAgICAgbGV0IHR4UmVzdWx0ID0gc2VsZi5jb2EuY2FsbCgKICAgICAgICAgICAgdG86IGV2bVRva2VuQWRkciwKICAgICAgICAgICAgZGF0YTogZGF0YSwKICAgICAgICAgICAgZ2FzTGltaXQ6IGdhc0xpbWl0LAogICAgICAgICAgICB2YWx1ZTogdmFsdWVCYWxhbmNlCiAgICAgICAgKQoKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "bridgeNFTToEvmAddressV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm1BZGRyZXNzVjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gQnJpZGdlcyBhbiBORlQgZnJvbSB0aGUgc2lnbmVyJ3MgY29sbGVjdGlvbiBpbiBDYWRlbmNlIHRvIHRoZSBuYW1lZCByZWNpcGllbnQgaW4gRVZNLgovLy8KLy8vIE5PVEU6IFRoaXMgdHJhbnNhY3Rpb24gYWxzbyBvbmJvYXJkcyB0aGUgTkZUIHRvIHRoZSBicmlkZ2UgaWYgbmVjZXNzYXJ5IHdoaWNoIG1heSBpbmN1ciBhZGRpdGlvbmFsIGZlZXMKLy8vICAgICB0aGFuIGJyaWRnaW5nIGFuIGFzc2V0IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQuCi8vLwovLy8gQHBhcmFtIG5mdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgTkZUIHRvIGJyaWRnZSAtIGUuZy4gbmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyCi8vLyBAcGFyYW0gaWQ6IFRoZSBDYWRlbmNlIE5GVC5pZCBvZiB0aGUgTkZUIHRvIGJyaWRnZSB0byBFVk0KLy8vIEBwYXJhbSByZWNpcGllbnQ6IFRoZSBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcyB0byByZWNlaXZlIHRoZSBORlQKLy8vCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCwgcmVjaXBpZW50OiBTdHJpbmcpIHsKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgcmVxdWlyZXNPbmJvYXJkaW5nOiBCb29sCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgeyAgICAgICAgCiAgICAgICAgLyogLS0tIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgTkZUIGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIE5GVCAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBORlQgc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkgKyBGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUKICAgICAgICAvLyBEZXRlcm1pbmUgaWYgdGhlIE5GVCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLm5mdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gbmZ0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIG5mdCB0eXBlIC0gcmVxdWVzdGVkOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIE5GVCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYubmZ0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgdHJhbnNhY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCiAgICAgICAgRmxvd0VWTUJyaWRnZS5icmlkZ2VORlRUb0VWTSgKICAgICAgICAgICAgdG9rZW46IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIHRvOiBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KSwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "bridgeNFTToEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlTkZUVG9Fdm1WMiAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBCcmlkZ2VzIGFuIE5GVCBmcm9tIHRoZSBzaWduZXIncyBjb2xsZWN0aW9uIGluIENhZGVuY2UgdG8gdGhlIHNpZ25lcidzIENPQSBpbiBGbG93RVZNCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBORlQgdG8gdGhlIGJyaWRnZSBpZiBuZWNlc3Nhcnkgd2hpY2ggbWF5IGluY3VyIGFkZGl0aW9uYWwgZmVlcwovLy8gICAgIHRoYW4gYnJpZGdpbmcgYW4gYXNzZXQgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZC4KLy8vCi8vLyBAcGFyYW0gbmZ0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBORlQgdG8gYnJpZGdlIC0gZS5nLiBuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBpZDogVGhlIENhZGVuY2UgTkZULmlkIG9mIHRoZSBORlQgdG8gYnJpZGdlIHRvIEVWTQovLy8KdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIE5GVCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuZnRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgTkZUICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIE5GVCBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHZhciBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSArIEZsb3dFVk1CcmlkZ2VDb25maWcuYmFzZUZlZQogICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgTkZUIHJlcXVpcmVzIG9uYm9hcmRpbmcgLSB0aGlzIGltcGFjdHMgdGhlIGZlZSByZXF1aXJlZAogICAgICAgIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nID0gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHNlbGYubmZ0LmdldFR5cGUoKSkKICAgICAgICAgICAgPz8gcGFuaWMoIkJyaWRnZSBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXNzZXQgdHlwZSIpCiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICBhcHByb3hGZWUgPSBhcHByb3hGZWUgKyBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUKICAgICAgICB9CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgcHJlIHsKICAgICAgICBzZWxmLm5mdC5nZXRUeXBlKCkuaWRlbnRpZmllciA9PSBuZnRJZGVudGlmaWVyOgogICAgICAgICAgICAiQXR0ZW1wdGluZyB0byBzZW5kIGludmFsaWQgbmZ0IHR5cGUgLSByZXF1ZXN0ZWQ6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgIC5jb25jYXQoIiwgc2VuZGluZzogIikuY29uY2F0KHNlbGYubmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgLy8gT25ib2FyZCB0aGUgTkZUIHRvIHRoZSBicmlkZ2UKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICAgICAgc2VsZi5uZnQuZ2V0VHlwZSgpLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgfQogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC1zZWxmLm5mdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "bridgeTokensFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgZnVuZ2libGUgdG9rZW5zIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlCi8vLyBGbG93RVZNQnJpZGdlLgovLy8KLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIHRva2VuQ29udHJhY3RBZGRyZXNzOiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgaG9zdGluZyB0aGUgRlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIHRva2VuQ29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgVmF1bHQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIGFtb3VudDogVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYnJpZGdlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbih0b2tlbkNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgdG9rZW5Db250cmFjdE5hbWU6IFN0cmluZywgYW1vdW50OiBVSW50MjU2KSB7CgogICAgbGV0IHZhdWx0VHlwZTogVHlwZQogICAgbGV0IHJlY2VpdmVyOiAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8vIEdldCB0aGUgRVJDMjAgY29udHJhY3QgYWRkcmVzcyBmb3IgdGhlIGdpdmVuIEZ1bmdpYmxlVG9rZW4gVmF1bHQgdHlwZQogICAgICAgIHNlbGYudmF1bHRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgICAgIGFkZHJlc3M6IHRva2VuQ29udHJhY3RBZGRyZXNzLAogICAgICAgICAgICAgICAgY29udHJhY3ROYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSwKICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZTogIlZhdWx0IgogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgb2Y6ICIgLmNvbmNhdCh0b2tlbkNvbnRyYWN0QWRkcmVzcy50b1N0cmluZygpKS5jb25jYXQoIi4iKS5jb25jYXQodG9rZW5Db250cmFjdE5hbWUpLmNvbmNhdCgiLlZhdWx0IikpCgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIFZhdWx0IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0LCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICAvLyBJZiB0aGUgdmF1bHQgZG9lcyBub3QgZXhpc3QsIGNyZWF0ZSBpdCBhbmQgcHVibGlzaCBhY2NvcmRpbmcgdG8gdGhlIGNvbnRyYWN0J3MgZGVmaW5lZCBjb25maWd1cmF0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LXZhdWx0RGF0YS5jcmVhdGVFbXB0eVZhdWx0KCksIHRvOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCh2YXVsdERhdGEubWV0YWRhdGFQYXRoKQoKICAgICAgICAgICAgbGV0IHJlY2VpdmVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgbGV0IG1ldGFkYXRhQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcCwgYXQ6IHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChtZXRhZGF0YUNhcCwgYXQ6IHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCiAgICAgICAgfQogICAgICAgIHNlbGYucmVjZWl2ZXIgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWYXVsdCBmcm9tIHN0b3JhZ2UgcGF0aCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgcmVxdWVzdAogICAgICAgIGxldCB2YXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fSA8LSBzZWxmLmNvYS53aXRoZHJhd1Rva2VucygKICAgICAgICAgICAgdHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgdG9rZW4gaW50byB0aGUgc2lnbmVyJ3MgdmF1bHQKICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC12YXVsdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeTokensFromEvmToFlow": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vLyBUaGlzIHRyYW5zYWN0aW9uIGJyaWRnZXMgZnVuZ2libGUgdG9rZW5zIGZyb20gRVZNIHRvIENhZGVuY2UgYXNzdW1pbmcgaXQgaGFzIGFscmVhZHkgYmVlbiBvbmJvYXJkZWQgdG8gdGhlCi8vLyBGbG93RVZNQnJpZGdlLgovLy8KLy8vIE5PVEU6IFRoZSBFUkM3MjEgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIHRva2VuQ29udHJhY3RBZGRyZXNzOiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgaG9zdGluZyB0aGUgRlQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIHRva2VuQ29udHJhY3ROYW1lOiBUaGUgbmFtZSBvZiB0aGUgVmF1bHQtZGVmaW5pbmcgQ2FkZW5jZSBjb250cmFjdAovLy8gQHBhcmFtIGFtb3VudDogVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYnJpZGdlIGZyb20gRVZNCi8vLwp0cmFuc2FjdGlvbih0b2tlbkNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgdG9rZW5Db250cmFjdE5hbWU6IFN0cmluZywgYW1vdW50OiBVSW50MjU2LCByZWNlaXZlcjogQWRkcmVzcykgewoKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlJlY2VpdmVyfQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvLyBHZXQgdGhlIEVSQzIwIGNvbnRyYWN0IGFkZHJlc3MgZm9yIHRoZSBnaXZlbiBGdW5naWJsZVRva2VuIFZhdWx0IHR5cGUKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5idWlsZENvbXBvc2l0ZVR5cGUoCiAgICAgICAgICAgICAgICBhZGRyZXNzOiB0b2tlbkNvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogdG9rZW5Db250cmFjdE5hbWUsCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6ICJWYXVsdCIKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIG9mOiAiIC5jb25jYXQodG9rZW5Db250cmFjdEFkZHJlc3MudG9TdHJpbmcoKSkuY29uY2F0KCIuIikuY29uY2F0KHRva2VuQ29udHJhY3ROYW1lKS5jb25jYXQoIi5WYXVsdCIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBWYXVsdCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgLy8gSWYgdGhlIHZhdWx0IGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgaXQgYW5kIHB1Ymxpc2ggYWNjb3JkaW5nIHRvIHRoZSBjb250cmFjdCdzIGRlZmluZWQgY29uZmlndXJhdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC12YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKCiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxldCBtZXRhZGF0YUNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXAsIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gobWV0YWRhdGFDYXAsIGF0OiB2YXVsdERhdGEubWV0YWRhdGFQYXRoKQogICAgICAgIH0KICAgICAgICBsZXQgcmVjZWl2ZXJBY2N0ID0gZ2V0QWNjb3VudChyZWNlaXZlcikKICAgICAgICBzZWxmLnJlY2VpdmVyID0gcmVjZWl2ZXJBY2N0LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmF1bHQgcmVjZWl2ZXIgY2FwYWJpbGl0aWVzIGZyb20gcHVibGljIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXBvc2l0IHRoZSBicmlkZ2VkIHRva2VuIGludG8gdGhlIHNpZ25lcidzIHZhdWx0CiAgICAgICAgc2VsZi5yZWNlaXZlci5kZXBvc2l0KGZyb206IDwtdmF1bHQpCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "bridgeTokensFromEvmToFlowV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bVRvRmxvd1YyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQovLy8gVGhpcyB0cmFuc2FjdGlvbiBicmlkZ2VzIGZ1bmdpYmxlIHRva2VucyBmcm9tIEVWTSB0byBDYWRlbmNlIGFzc3VtaW5nIGl0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkIHRvIHRoZQovLy8gRmxvd0VWTUJyaWRnZS4gVGhlIGZ1bGwgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGlzIHNvdXJjZWQgZnJvbSBFVk0sIHNvIGl0J3MgYXNzdW1lZCB0aGUgc2lnbmVyIGhhcyBzdWZmaWNpZW50Ci8vLyBiYWxhbmNlIG9mIHRoZSBFUkMyMCB0byBicmlkZ2luZyBpbnRvIENhZGVuY2UuIEFsc28ga25vdyB0aGF0IHRoZSByZWNpcGllbnQgRmxvdyBhY2NvdW50IG11c3QgaGF2ZSBhIFJlY2VpdmVyCi8vLyBjYXBhYmxlIG9mIHJlY2VpdmluZyB0aGUgYnJpZGdlZCB0b2tlbnMgYWNjZXNzaWJsZSB2aWEgcHVibGlzaGVkIENhcGFiaWxpdHkgYXQgdGhlIHRva2VuJ3Mgc3RhbmRhcmQgcGF0aC4KLy8vCi8vLyBOT1RFOiBUaGUgRVJDMjAgbXVzdCBoYXZlIGZpcnN0IGJlZW4gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UuIFRoaXMgY2FuIGJlIGNoZWNrZWQgdmlhIHRoZSBtZXRob2QKLy8vICAgICBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzczogc2VsZi5ldm1Db250cmFjdEFkZHJlc3MpCi8vLwovLy8gQHBhcmFtIHZhdWx0SWRlbnRpZmllcjogVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIG9mIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0IHRvIGJyaWRnZQovLy8gICAgIC0gZS5nLiB2YXVsdC5nZXRUeXBlKCkuaWRlbnRpZmllcgovLy8gQHBhcmFtIGFtb3VudDogVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYnJpZGdlIGZyb20gRVZNIGFuZCB0cmFuc2ZlciB0byB0aGUgcmVjaXBpZW50Ci8vLyBAcGFyYW0gcmVjaXBpZW50OiBUaGUgRmxvdyBhY2NvdW50IGFkZHJlc3MgdG8gcmVjZWl2ZSB0aGUgYnJpZGdlZCB0b2tlbnMKLy8vCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBhbW91bnQ6IFVJbnQyNTYsIHJlY2lwaWVudDogQWRkcmVzcykgewoKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUKICAgIGxldCByZWNlaXZlcjogJntGdW5naWJsZVRva2VuLlJlY2VpdmVyfQogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBWYXVsdCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBzZWxmLnZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogc2VsZi52YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHNlbGYudmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgVmF1bHQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQsIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIC8vIElmIHRoZSB2YXVsdCBkb2VzIG5vdCBleGlzdCwgY3JlYXRlIGl0IGFuZCBwdWJsaXNoIGFjY29yZGluZyB0byB0aGUgY29udHJhY3QncyBkZWZpbmVkIGNvbmZpZ3VyYXRpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlZhdWx0fT4oZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5tZXRhZGF0YVBhdGgpCgogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICBsZXQgbWV0YWRhdGFDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlZhdWx0fT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwLCBhdDogdmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKG1ldGFkYXRhQ2FwLCBhdDogdmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKICAgICAgICB9CiAgICAgICAgc2VsZi5yZWNlaXZlciA9IGdldEFjY291bnQocmVjaXBpZW50KS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZhdWx0IGZyb20gcmVjaXBpZW50J3MgYWNjb3VudCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBicmlkZ2UgZmVlIC0gYnJpZGdpbmcgZnJvbSBFVk0gY29uc3VtZXMgbm8gc3RvcmFnZSwgc28gZmxhdCBmZWUKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogNDAwXzAwMCkKICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UgcmVxdWVzdAogICAgICAgIGxldCB2YXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fSA8LSBzZWxmLmNvYS53aXRoZHJhd1Rva2VucygKICAgICAgICAgICAgdHlwZTogc2VsZi52YXVsdFR5cGUsCiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIEVuc3VyZSB0aGUgYnJpZGdlZCB2YXVsdCBpcyB0aGUgY29ycmVjdCB0eXBlCiAgICAgICAgYXNzZXJ0KHZhdWx0LmdldFR5cGUoKSA9PSBzZWxmLnZhdWx0VHlwZSwgbWVzc2FnZTogIkJyaWRnZWQgdmF1bHQgdHlwZSBtaXNtYXRjaCIpCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgYnJpZGdlZCB0b2tlbiBpbnRvIHRoZSBzaWduZXIncyB2YXVsdAogICAgICAgIHNlbGYucmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXZhdWx0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQ==", + "bridgeTokensFromEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zRnJvbUV2bVYyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gYnJpZGdlcyBmdW5naWJsZSB0b2tlbnMgZnJvbSBFVk0gdG8gQ2FkZW5jZSBhc3N1bWluZyBpdCBoYXMgYWxyZWFkeSBiZWVuIG9uYm9hcmRlZCB0byB0aGUKLy8vIEZsb3dFVk1CcmlkZ2UuCi8vLwovLy8gTk9URTogVGhlIEVSQzIwIG11c3QgaGF2ZSBmaXJzdCBiZWVuIG9uYm9hcmRlZCB0byB0aGUgYnJpZGdlLiBUaGlzIGNhbiBiZSBjaGVja2VkIHZpYSB0aGUgbWV0aG9kCi8vLyAgICAgRmxvd0VWTUJyaWRnZS5ldm1BZGRyZXNzUmVxdWlyZXNPbmJvYXJkaW5nKGFkZHJlc3M6IHNlbGYuZXZtQ29udHJhY3RBZGRyZXNzKQovLy8KLy8vIEBwYXJhbSB2YXVsdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCB0byBicmlkZ2UKLy8vICAgICAtIGUuZy4gdmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGFtb3VudDogVUludDI1NikgewogICAgbGV0IHZhdWx0VHlwZTogVHlwZQogICAgbGV0IHJlY2VpdmVyOiAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIHNlbGYudmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBzZWxmLnZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogc2VsZi52YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBWYXVsdCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBzZWxmLnZhdWx0VHlwZSwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgLy8gSWYgdGhlIHZhdWx0IGRvZXMgbm90IGV4aXN0LCBjcmVhdGUgaXQgYW5kIHB1Ymxpc2ggYWNjb3JkaW5nIHRvIHRoZSBjb250cmFjdCdzIGRlZmluZWQgY29uZmlndXJhdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC12YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLCB0bzogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLm1ldGFkYXRhUGF0aCkKCiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgIGxldCBtZXRhZGF0YUNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gocmVjZWl2ZXJDYXAsIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2gobWV0YWRhdGFDYXAsIGF0OiB2YXVsdERhdGEubWV0YWRhdGFQYXRoKQogICAgICAgIH0KICAgICAgICBzZWxmLnJlY2VpdmVyID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmF1bHQgZnJvbSBzdG9yYWdlIHBhdGgiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgYnJpZGdlIGZlZSAtIGJyaWRnaW5nIGZyb20gRVZNIGNvbnN1bWVzIG5vIHN0b3JhZ2UsIHNvIGZsYXQgZmVlCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoYnl0ZXM6IDQwMF8wMDApCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlIHJlcXVlc3QKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gc2VsZi5jb2Eud2l0aGRyYXdUb2tlbnMoCiAgICAgICAgICAgIHR5cGU6IHNlbGYudmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBFbnN1cmUgdGhlIGJyaWRnZWQgdmF1bHQgaXMgdGhlIGNvcnJlY3QgdHlwZQogICAgICAgIGFzc2VydCh2YXVsdC5nZXRUeXBlKCkgPT0gc2VsZi52YXVsdFR5cGUsIG1lc3NhZ2U6ICJCcmlkZ2VkIHZhdWx0IHR5cGUgbWlzbWF0Y2giKQogICAgICAgIC8vIERlcG9zaXQgdGhlIGJyaWRnZWQgdG9rZW4gaW50byB0aGUgc2lnbmVyJ3MgdmF1bHQKICAgICAgICBzZWxmLnJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC12YXVsdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "bridgeTokensToEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbih0b2tlbkNvbnRyYWN0QWRkcmVzczogQWRkcmVzcywgdG9rZW5Db250cmFjdE5hbWU6IFN0cmluZywgYW1vdW50OiBVRml4NjQpIHsKCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0VG9rZW5zKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnNlbnRWYXVsdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeTokensToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odG9rZW5Db250cmFjdEFkZHJlc3M6IEFkZHJlc3MsIHRva2VuQ29udHJhY3ROYW1lOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0LCBjb250cmFjdEVWTUFkZHJlc3M6IFN0cmluZywgZGF0YTogW1VJbnQ4XSwgZ2FzTGltaXQ6IFVJbnQ2NCkgewoKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSwgRVZNLkNhbGwsIEVWTS5Pd25lcikgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlLCBFVk0uQ2FsbCwgRVZNLk93bmVyKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewoKICAgICAgICBsZXQgdmF1bHRUeXBlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmJ1aWxkQ29tcG9zaXRlVHlwZSgKICAgICAgICAgICAgYWRkcmVzczogdG9rZW5Db250cmFjdEFkZHJlc3MsCiAgICAgICAgICAgIGNvbnRyYWN0TmFtZTogdG9rZW5Db250cmFjdE5hbWUsCiAgICAgICAgICAgIHJlc291cmNlTmFtZTogIlZhdWx0IgogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBvZjogIiAuY29uY2F0KHRva2VuQ29udHJhY3RBZGRyZXNzLnRvU3RyaW5nKCkpLmNvbmNhdCgiLiIpLmNvbmNhdCh0b2tlbkNvbnRyYWN0TmFtZSkuY29uY2F0KCIuVmF1bHQiKSkKCiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdFRva2VucygKICAgICAgICAgICAgdmF1bHQ6IDwtc2VsZi5zZW50VmF1bHQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCgogICAgICAgIHZhciBhZGRyZXNzQnl0ZXM6IFtVSW50OF0gPSBjb250cmFjdEVWTUFkZHJlc3MuZGVjb2RlSGV4KCkKICAgICAgICBsZXQgZXZtVG9rZW5BZGRyID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IFsKICAgICAgICAgICAgYWRkcmVzc0J5dGVzWzBdLCBhZGRyZXNzQnl0ZXNbMV0sIGFkZHJlc3NCeXRlc1syXSwgYWRkcmVzc0J5dGVzWzNdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbNF0sIGFkZHJlc3NCeXRlc1s1XSwgYWRkcmVzc0J5dGVzWzZdLCBhZGRyZXNzQnl0ZXNbN10sCiAgICAgICAgICAgIGFkZHJlc3NCeXRlc1s4XSwgYWRkcmVzc0J5dGVzWzldLCBhZGRyZXNzQnl0ZXNbMTBdLCBhZGRyZXNzQnl0ZXNbMTFdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTJdLCBhZGRyZXNzQnl0ZXNbMTNdLCBhZGRyZXNzQnl0ZXNbMTRdLCBhZGRyZXNzQnl0ZXNbMTVdLAogICAgICAgICAgICBhZGRyZXNzQnl0ZXNbMTZdLCBhZGRyZXNzQnl0ZXNbMTddLCBhZGRyZXNzQnl0ZXNbMThdLCBhZGRyZXNzQnl0ZXNbMTldCiAgICAgICAgXSkKICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgLy8gbGV0IGRhdGEgPSBkYXRhU3RyLmRlY29kZUhleCgpCiAgICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBldm1Ub2tlbkFkZHIsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeTokensToEvmAddressV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm1BZGRyZXNzVjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0LCByZWNpcGllbnQ6IFN0cmluZykgewogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYmFsYW5jZSAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgYnJpZGdlIGZlZSBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiBzdG9yYWdlIHVzYWdlIHdpdGggc29tZSBidWZmZXIKICAgICAgICB2YXIgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCiAgICAgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBWYXVsdCByZXF1aXJlcyBvbmJvYXJkaW5nIC0gdGhpcyBpbXBhY3RzIHRoZSBmZWUgcmVxdWlyZWQKICAgICAgICBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyA9IEZsb3dFVk1CcmlkZ2UudHlwZVJlcXVpcmVzT25ib2FyZGluZyhzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCkpCiAgICAgICAgICAgID8/IHBhbmljKCJCcmlkZ2UgZG9lcyBub3Qgc3VwcG9ydCB0aGlzIGFzc2V0IHR5cGUiKQogICAgICAgIGlmIHNlbGYucmVxdWlyZXNPbmJvYXJkaW5nIHsKICAgICAgICAgICAgYXBwcm94RmVlID0gYXBwcm94RmVlICsgRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlCiAgICAgICAgfQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIgPT0gdmF1bHRJZGVudGlmaWVyOgogICAgICAgICAgICAiQXR0ZW1wdGluZyB0byBzZW5kIGludmFsaWQgdmF1bHQgdHlwZSAtIHJlcXVlc3RlZDogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICAuY29uY2F0KCIsIHNlbmRpbmc6ICIpLmNvbmNhdChzZWxmLnNlbnRWYXVsdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICBzZWxmLnNlbnRWYXVsdC5iYWxhbmNlID09IGFtb3VudDogIkFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWVzdGVkIGFtb3VudCIKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIC8vIE9uYm9hcmQgdGhlIFZhdWx0IHRvIHRoZSBicmlkZ2UKICAgICAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlUeXBlKAogICAgICAgICAgICAgICAgc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLAogICAgICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgfQogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZSB0cmFuc2FjdGlvbgogICAgICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCkKICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZVRva2Vuc1RvRVZNKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnNlbnRWYXVsdCwKICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9", + "bridgeTokensToEvmV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlVG9rZW5zVG9Fdm1WMiAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKLy8vIEJyaWRnZXMgYSBWYXVsdCBmcm9tIHRoZSBzaWduZXIncyBzdG9yYWdlIHRvIHRoZSBzaWduZXIncyBDT0EgaW4gRVZNLkFjY291bnQuCi8vLwovLy8gTk9URTogVGhpcyB0cmFuc2FjdGlvbiBhbHNvIG9uYm9hcmRzIHRoZSBWYXVsdCB0byB0aGUgYnJpZGdlIGlmIG5lY2Vzc2FyeSB3aGljaCBtYXkgaW5jdXIgYWRkaXRpb25hbCBmZWVzCi8vLyAgICAgdGhhbiBicmlkZ2luZyBhbiBhc3NldCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gb25ib2FyZGVkLgovLy8KLy8vIEBwYXJhbSB2YXVsdElkZW50aWZpZXI6IFRoZSBDYWRlbmNlIHR5cGUgaWRlbnRpZmllciBvZiB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdCB0byBicmlkZ2UKLy8vICAgICAtIGUuZy4gdmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIKLy8vIEBwYXJhbSBhbW91bnQ6IFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJyaWRnZSBmcm9tIEVWTQovLy8KdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0KSB7CiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlcXVpcmVzT25ib2FyZGluZzogQm9vbAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIFZhdWx0IHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogdmF1bHRUeXBlLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgdmFyIGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAogICAgICAgIC8vIERldGVybWluZSBpZiB0aGUgVmF1bHQgcmVxdWlyZXMgb25ib2FyZGluZyAtIHRoaXMgaW1wYWN0cyB0aGUgZmVlIHJlcXVpcmVkCiAgICAgICAgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgPSBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpKQogICAgICAgICAgICA/PyBwYW5pYygiQnJpZGdlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBhc3NldCB0eXBlIikKICAgICAgICBpZiBzZWxmLnJlcXVpcmVzT25ib2FyZGluZyB7CiAgICAgICAgICAgIGFwcHJveEZlZSA9IGFwcHJveEZlZSArIEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZQogICAgICAgIH0KCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBwcmUgewogICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKS5pZGVudGlmaWVyID09IHZhdWx0SWRlbnRpZmllcjoKICAgICAgICAgICAgIkF0dGVtcHRpbmcgdG8gc2VuZCBpbnZhbGlkIHZhdWx0IHR5cGUgLSByZXF1ZXN0ZWQ6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgLmNvbmNhdCgiLCBzZW5kaW5nOiAiKS5jb25jYXQoc2VsZi5zZW50VmF1bHQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZXF1aXJlc09uYm9hcmRpbmcgewogICAgICAgICAgICAvLyBPbmJvYXJkIHRoZSBWYXVsdCB0byB0aGUgYnJpZGdlCiAgICAgICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgICAgIHNlbGYuc2VudFZhdWx0LmdldFR5cGUoKSwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAgICAgKQogICAgICAgIH0KICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0VG9rZW5zKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnNlbnRWYXVsdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0=", + "calculateBridgeFee": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2FsY3VsYXRlQnJpZGdlRmVlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB0aGUgY2FsY3VsYXRlZCBmZWUgYmFzZWQgb24gdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIHRvIGVzY3JvdyBhbiBhc3NldCBwbHVzIHRoZSBiYXNlIGZlZS4KLy8vCi8vLyBAcGFyYW0gYnl0ZXM6IFRoZSBudW1iZXIgb2YgYnl0ZXMgdXNlZCB0byBlc2Nyb3cgYW4gYXNzZXQuCi8vLwovLy8gQHJldHVybiBUaGUgY2FsY3VsYXRlZCBmZWUgdG8gYmUgcGFpZCBpbiBGbG93VG9rZW4KLy8vCmFjY2VzcyhhbGwpCmZ1biBtYWluKGJ5dGVzIHVzZWQ6IFVJbnQ2NCk6IFVGaXg2NCB7CiAgICByZXR1cm4gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogdXNlZCkKfQo=", + "evmAddressRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgRVZNIGNvbnRyYWN0IG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBldm1BZGRyZXNzSGV4OiBUaGUgaGV4LWVuY29kZWQgYWRkcmVzcyBvZiB0aGUgRVZNIGNvbnRyYWN0IGFzIGEgU3RyaW5nIHdpdGhvdXQgMHggcHJlZml4Ci8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSBjb250cmFjdCByZXF1aXJlcyBvbmJvYXJkaW5nIHRvIHRoZSBGbG93RVZNQnJpZGdlIGlmIHRoZSB0eXBlIGlzIGJyaWRnZWFibGUsIG90aGVyd2lzZSBuaWwKLy8vCmFjY2VzcyhhbGwpIGZ1biBtYWluKGV2bUFkZHJlc3NIZXg6IFN0cmluZyk6IEJvb2w/IHsKICAgIGlmIGxldCBhZGRyZXNzID0gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0Zyb21IZXhTdHJpbmcoYWRkcmVzczogZXZtQWRkcmVzc0hleCkgewogICAgICAgIHJldHVybiBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcykKICAgIH0KICAgIHJldHVybiBuaWwKfQo=", + "getAssociatedEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QXNzb2NpYXRlZEV2bUFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gUmV0dXJucyB0aGUgRVZNIGFkZHJlc3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBDYWRlbmNlIHR5cGUgKGFzIGl0cyBpZGVudGlmaWVyIFN0cmluZykKLy8vCi8vLyBAcGFyYW0gdHlwZUlkZW50aWZpZXIgVGhlIENhZGVuY2UgdHlwZSBpZGVudGlmaWVyIFN0cmluZwovLy8KLy8vIEByZXR1cm4gVGhlIEVWTSBhZGRyZXNzIGFzIGEgaGV4IHN0cmluZyBpZiB0aGUgdHlwZSBoYXMgYW4gYXNzb2NpYXRlZCBFVk1BZGRyZXNzLCBvdGhlcndpc2UgbmlsCi8vLwphY2Nlc3MoYWxsKQpmdW4gbWFpbihpZGVudGlmaWVyOiBTdHJpbmcpOiBTdHJpbmc/IHsKICAgIGlmIGxldCB0eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSB7CiAgICAgICAgaWYgbGV0IGFkZHJlc3MgPSBGbG93RVZNQnJpZGdlQ29uZmlnLmdldEVWTUFkZHJlc3NBc3NvY2lhdGVkKHdpdGg6IHR5cGUpIHsKICAgICAgICAgICAgcmV0dXJuIEVWTVV0aWxzLmdldEVWTUFkZHJlc3NBc0hleFN0cmluZyhhZGRyZXNzOiBhZGRyZXNzKQogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBuaWwKfQ==", + "getAssociatedFlowIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QXNzb2NpYXRlZEZsb3dJZGVudGlmaWVyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNIGZyb20gMHhFVk0KaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmFjY2VzcyhhbGwpCmZ1biBtYWluKGFkZHJlc3M6IFN0cmluZyk6IFN0cmluZz8gewogICAgaWYgbGV0IHR5cGVJbmZvID0gRmxvd0VWTUJyaWRnZUNvbmZpZy5nZXRUeXBlQXNzb2NpYXRlZCh3aXRoOiBFVk0uYWRkcmVzc0Zyb21TdHJpbmcoYWRkcmVzcykpIHsKICAgICAgICByZXR1cm4gdHlwZUluZm8uaWRlbnRpZmllcgogICAgfQogICAgcmV0dXJuIG5pbAp9", + "getBridgeCoaAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QnJpZGdlQ29hQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRVZNVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHRoZSBFVk0gYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIEZsb3dFVk1CcmlkZ2UKLy8vCi8vLyBAcmV0dXJuIFRoZSBFVk0gYWRkcmVzcyBhc3NvY2lhdGVkIHdpdGggdGhlIEZsb3dFVk1CcmlkZ2UncyBjb29yZGluYXRpbmcgQ2FkZW5jZU93bmVkQWNjb3VudAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4oKTogU3RyaW5nIHsKICAgIGxldCBhZGRyZXNzOiBFVk0uRVZNQWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2UuZ2V0QnJpZGdlQ09BRVZNQWRkcmVzcygpCiAgICByZXR1cm4gRVZNVXRpbHMuZ2V0RVZNQWRkcmVzc0FzSGV4U3RyaW5nKGFkZHJlc3M6IGFkZHJlc3MpCn0=", + "onboardByEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgb25ib2FyZEJ5RXZtQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEVWTVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgTkZUIHR5cGUgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIE5GVHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIE5GVCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gY29udHJhY3RBZGRyZXNzSGV4OiBUaGUgRVZNIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IChhcyBoZXggc3RyaW5nIHdpdGhvdXQgMHggcHJlZml4KSBkZWZpbmluZyB0aGUgCi8vLyAgICAgYnJpZGdlYWJsZSBhc3NldCB0byBiZSBvbmJvYXJkZWQKLy8vCnRyYW5zYWN0aW9uKGNvbnRyYWN0QWRkcmVzc0hleDogU3RyaW5nKSB7CgogICAgbGV0IGNvbnRyYWN0QWRkcmVzczogRVZNLkVWTUFkZHJlc3MKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIENvbnN0cnVjdCBFVk1BZGRyZXNzIGZyb20gaGV4IHN0cmluZyAobm8gbGVhZGluZyBgIjB4ImApIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgc2VsZi5jb250cmFjdEFkZHJlc3MgPSBFVk1VdGlscy5nZXRFVk1BZGRyZXNzRnJvbUhleFN0cmluZyhhZGRyZXNzOiBjb250cmFjdEFkZHJlc3NIZXgpCiAgICAgICAgICAgID8/IHBhbmljKCJJbnZhbGlkIEVWTSBhZGRyZXNzIHN0cmluZyBwcm92aWRlZCIpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gT25ib2FyZCB0aGUgRVZNIGNvbnRyYWN0CiAgICAgICAgRmxvd0VWTUJyaWRnZS5vbmJvYXJkQnlFVk1BZGRyZXNzKAogICAgICAgICAgICBzZWxmLmNvbnRyYWN0QWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "onboardByType": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgb25ib2FyZEJ5VHlwZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIHRoZSBhc3NldCB0eXBlIHRvIHRoZSBicmlkZ2UsIGNvbmZpZ3VyaW5nIHRoZSBicmlkZ2UgdG8gbW92ZSBhc3NldHMgYmV0d2VlbiBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIGFzc2V0IHRvIEVWTQovLy8KLy8vIEBwYXJhbSB0eXBlOiBUaGUgQ2FkZW5jZSB0eXBlIG9mIHRoZSBicmlkZ2VhYmxlIGFzc2V0IHRvIG9uYm9hcmQgdG8gdGhlIGJyaWRnZQovLy8KdHJhbnNhY3Rpb24odHlwZTogVHlwZSkgewoKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gT25ib2FyZCB0aGUgYXNzZXQgVHlwZQogICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5VHlwZSgKICAgICAgICAgICAgdHlwZSwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "onboardByTypeIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgb25ib2FyZEJ5VHlwZUlkZW50aWZpZXIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBvbmJvYXJkcyB0aGUgYXNzZXQgdHlwZSB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgYXNzZXRzIGJldHdlZW4gZW52aXJvbm1lbnRzCi8vLyBOT1RFOiBUaGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgYnJpZGdpbmcgYSBDYWRlbmNlLW5hdGl2ZSBhc3NldCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gaWRlbnRpZmVyOiBUaGUgQ2FkZW5jZSB0eXBlIGlkZW50aWZpZXIgb2YgdGhlIGJyaWRnZWFibGUgYXNzZXQgdG8gb25ib2FyZGVkIHRvIHRoZSBicmlkZ2UKLy8vCnRyYW5zYWN0aW9uKGlkZW50aWZpZXI6IFN0cmluZykgewoKICAgIGxldCB0eXBlOiBUeXBlCiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBDb25zdHJ1Y3QgdGhlIHR5cGUgZnJvbSBpZGVudGlmaWVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgc2VsZi50eXBlID0gQ29tcG9zaXRlVHlwZShpZGVudGlmaWVyKSA/PyBwYW5pYygiSW52YWxpZCB0eXBlIGlkZW50aWZpZXIiKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoRmxvd0VWTUJyaWRnZUNvbmZpZy5vbmJvYXJkRmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIE9uYm9hcmQgdGhlIGFzc2V0IFR5cGUKICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeVR5cGUoCiAgICAgICAgICAgIHNlbGYudHlwZSwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQo=", + "typeRequiresOnboarding": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHlwZVJlcXVpcmVzT25ib2FyZGluZyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSB0eXBlOiBUaGUgQ2FkZW5jZSBUeXBlIGluIHF1ZXN0aW9uCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4odHlwZTogVHlwZSk6IEJvb2w/IHsKICAgIHJldHVybiBGbG93RVZNQnJpZGdlLnR5cGVSZXF1aXJlc09uYm9hcmRpbmcodHlwZSkKfQo=", + "typeRequiresOnboardingByIdentifier": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHlwZVJlcXVpcmVzT25ib2FyZGluZ0J5SWRlbnRpZmllciAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSB0eXBlIG5lZWRzIHRvIGJlIG9uYm9hcmRlZCB0byB0aGUgRmxvd0VWTUJyaWRnZQovLy8KLy8vIEBwYXJhbSBpZGVudGlmaWVyOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgQ2FkZW5jZSBUeXBlIGluIHF1ZXN0aW9uCi8vLwovLy8gQHJldHVybiBXaGV0aGVyIHRoZSB0eXBlIHJlcXVpcmVzIG9uYm9hcmRpbmcgdG8gdGhlIEZsb3dFVk1CcmlkZ2UgaWYgdGhlIHR5cGUgaXMgYnJpZGdlYWJsZSwgb3RoZXJ3aXNlIG5pbAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4oaWRlbnRpZmllcjogU3RyaW5nKTogQm9vbD8gewogICAgaWYgbGV0IHR5cGUgPSBDb21wb3NpdGVUeXBlKGlkZW50aWZpZXIpIHsKICAgICAgICByZXR1cm4gRmxvd0VWTUJyaWRnZS50eXBlUmVxdWlyZXNPbmJvYXJkaW5nKHR5cGUpCiAgICB9CiAgICByZXR1cm4gbmlsCn0K" }, "collection": { - "checkNFTCollection": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja05GVENvbGxlY3Rpb24gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgICBpbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCiAgICAvLyBUaGlzIHRyYW5zYWN0aW9uIGlzIGZvciB0cmFuc2ZlcnJpbmcgYW5kIE5GVCBmcm9tCiAgICAvLyBvbmUgYWNjb3VudCB0byBhbm90aGVyCgogICAgYWNjZXNzKGFsbCkgZnVuIGNoZWNrPFRva2VuPlZhdWx0KGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuZXhpc3QoPFRva2VuQ29sbGVjdGlvblB1YmxpY1BhdGg+KQogICAgICAgIHJldHVybiB2YXVsdFJlZgogICAgfQoKICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpIDogQm9vbCB7CiAgICAgICAgcmV0dXJuIGNoZWNrPFRva2VuPlZhdWx0KGFkZHJlc3M6IGFkZHJlc3MpCiAgICB9", - "enableNFTStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBlbmFibGVORlRTdG9yYWdlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENhcGFiaWxpdGllcywgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuYm9ycm93PCY8TkZUPi5Db2xsZWN0aW9uPig8Q29sbGVjdGlvblB1YmxpY1BhdGg+KSA9PSBuaWwgewogICAgICAgICAgICBsZXQgY29sbGVjdGlvbiA8LSA8TkZUPi5jcmVhdGVFbXB0eUNvbGxlY3Rpb24obmZ0VHlwZTogVHlwZTxAPE5GVD4uTkZUPigpKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtY29sbGVjdGlvbiwgdG86IDxDb2xsZWN0aW9uU3RvcmFnZVBhdGg+KQogICAgICAgIH0KICAgICAgICBpZiAoc2lnbmVyLmNhcGFiaWxpdGllcy5ib3Jyb3c8JjxORlQ+LkNvbGxlY3Rpb24+KDxDb2xsZWN0aW9uUHVibGljUGF0aD4pID09IG5pbCkgewogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaCg8Q29sbGVjdGlvblB1YmxpY1BhdGg+KQogICAgICAgICAgICBsZXQgY2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8TkZUPi5Db2xsZWN0aW9uPig8Q29sbGVjdGlvblN0b3JhZ2VQYXRoPikgICAgICAgICAgICAKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGNhcCwgYXQ6IDxDb2xsZWN0aW9uUHVibGljUGF0aD4pCgogICAgICAgIH0KICAgIH0KfQ==", - "getCatalogTypeData": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDYXRhbG9nVHlwZURhdGEgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE5GVENhdGFsb2cgZnJvbSAweE5GVENhdGFsb2cKCmFjY2VzcyhhbGwpIGZ1biBtYWluKCk6IHtTdHJpbmcgOiB7U3RyaW5nIDogQm9vbH19IHsKICBsZXQgY2F0YWxvZyA9IE5GVENhdGFsb2cuZ2V0Q2F0YWxvZ1R5cGVEYXRhKCkKICByZXR1cm4gY2F0YWxvZwp9", - "getNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRORlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKCmFjY2VzcyhhbGwpIHN0cnVjdCBWaWV3SW5mbyB7CiAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBkZXNjcmlwdGlvbjogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0KICBhY2Nlc3MoYWxsKSBsZXQgcmFyaXR5OiBTdHJpbmc/CgogIGluaXQobmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nLCB0aHVtYm5haWw6IHtNZXRhZGF0YVZpZXdzLkZpbGV9LCByYXJpdHk6IFN0cmluZz8pIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogICAgc2VsZi50aHVtYm5haWwgPSB0aHVtYm5haWwKICAgIHNlbGYucmFyaXR5ID0gcmFyaXR5CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSWQ6IFN0cmluZywgdG9rZW5JRHM6IFtVSW50NjRdKToge1VJbnQ2NDogVmlld0luZm99IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzOiB7VUludDY0OiBWaWV3SW5mb30gPSB7fQogIHZhciBjb2xsZWN0aW9uRGlzcGxheUZldGNoZWQgPSBmYWxzZQoKICBpZiB0b2tlbklEcy5sZW5ndGggPT0gMCB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgc3RvcmFnZVBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoSWQpIQogIGxldCBwdWJsaWNQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBwYXRoSWQpIQogIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKQogIGlmIHR5cGUgPT0gbmlsIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCgogIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZSEuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQogIGlmICFjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgbmFtZTogcGF0aElkLAogICAgICAgIGRlc2NyaXB0aW9uOiAiIiwKICAgICAgICB0aHVtYm5haWw6IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiAiIiksCiAgICAgICAgcmFyaXR5OiBuaWwKICAgICAgKQogICAgfQogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PihwdWJsaWNQYXRoKQogIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYhLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRCkKICAgIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0RGlzcGxheShyZXNvbHZlciEpIHsKICAgICAgICB2YXIgcmFyaXR5RGVzYzogU3RyaW5nPyA9IG5pbAogICAgICAgIGlmIGxldCByYXJpdHlWaWV3ID0gTWV0YWRhdGFWaWV3cy5nZXRSYXJpdHkocmVzb2x2ZXIhKSB7CiAgICAgICAgICByYXJpdHlEZXNjID0gcmFyaXR5Vmlldy5kZXNjcmlwdGlvbgogICAgICAgIH0KCiAgICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICBkZXNjcmlwdGlvbjogZGlzcGxheS5kZXNjcmlwdGlvbiwKICAgICAgICAgIHRodW1ibmFpbDogZGlzcGxheS50aHVtYm5haWwsCiAgICAgICAgICByYXJpdHk6IHJhcml0eURlc2MKICAgICAgICApCiAgICAgIH0gCiAgICB9CiAgIGVsc2UgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSWQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbAogICAgICApCiAgICB9CiAgfQogIHJldHVybiByZXMKfQ==", - "getNFTCollection": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRORlRDb2xsZWN0aW9uIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCQppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgoKYWNjZXNzKGFsbCkgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICBhY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHNxdWFyZUltYWdlOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgbWVkaWFUeXBlOiBTdHJpbmcKCiAgaW5pdChuYW1lOiBTdHJpbmcsIHNxdWFyZUltYWdlOiBTdHJpbmcsIG1lZGlhVHlwZTogU3RyaW5nKSB7CiAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICBzZWxmLnNxdWFyZUltYWdlID0gc3F1YXJlSW1hZ2UKICAgIHNlbGYubWVkaWFUeXBlID0gbWVkaWFUeXBlCiAgfQp9CgphY2Nlc3MoYWxsKSBzdHJ1Y3QgTkZUQ29sbGVjdGlvbiB7CiAgYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogIGFjY2VzcyhhbGwpIGxldCBpZExpc3Q6IFtVSW50NjRdCgogIGluaXQoaWQ6U3RyaW5nLCBwYXRoOiBTdHJpbmcsIGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PywgaWRMaXN0OiBbVUludDY0XSkgewogICAgc2VsZi5pZCA9IGlkCiAgICBzZWxmLnBhdGggPSBwYXRoCiAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICBzZWxmLmlkTGlzdCA9IGlkTGlzdAogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIGdldERpc3BsYXkoYWRkcmVzczogQWRkcmVzcywgc3RvcmFnZVBhdGg6IFN0b3JhZ2VQYXRoLCBwdWJsaWNQYXRoOiBQdWJsaWNQYXRoKTogQ29sbGVjdGlvbkRpc3BsYXk/IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzb3VyY2VUeXBlID0gVHlwZTxAQW55UmVzb3VyY2U+KCkKICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oKQogIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCiAgdmFyIGl0ZW06IENvbGxlY3Rpb25EaXNwbGF5PyA9ICBuaWwKCiAgICBpZiBsZXQgdHlwZSA9IGFjY291bnQuc3RvcmFnZS50eXBlKGF0OiBzdG9yYWdlUGF0aCkgewogICAgICBsZXQgaXNSZXNvdXJjZSA9IHR5cGUuaXNTdWJ0eXBlKG9mOiByZXNvdXJjZVR5cGUpCiAgICAgIGxldCBpc05GVENvbGxlY3Rpb24gPSB0eXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpCiAgICAgIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCgogICAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgICAgaWYgaXNORlRDb2xsZWN0aW9uICYmIGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgICAgIGlmIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbiwgTm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHB1YmxpY1BhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQoKICAgICAgICAgIC8vIFRPRE86IG1vdmUgdG8gYSBsaXN0CiAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKQogICAgICAgICAgICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICAgICAgaXRlbSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlLmZpbGUudXJpKCksCiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZTogZGlzcGxheS5zcXVhcmVJbWFnZS5tZWRpYVR5cGUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogIHJldHVybiBpdGVtCn0KCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSUQ6IFN0cmluZyk6IE5GVENvbGxlY3Rpb24gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IGNvbGxlY3Rpb24gPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4ocHVibGljUGF0aCkhCiAgcmV0dXJuIE5GVENvbGxlY3Rpb24oCiAgICBpZDogYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSEuaWRlbnRpZmllciwKICAgIHBhdGg6IHN0b3JhZ2VQYXRoLnRvU3RyaW5nKCksCiAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBzdG9yYWdlUGF0aCwgcHVibGljUGF0aDogcHVibGljUGF0aCksCiAgICBpZExpc3Q6IGNvbGxlY3Rpb24uZ2V0SURzKCkKICApCn0=", - "getNFTDisplays": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRORlREaXNwbGF5cyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgVmlld0luZm8gewphY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCmFjY2VzcyhhbGwpIGxldCBkZXNjcmlwdGlvbjogU3RyaW5nCmFjY2VzcyhhbGwpIGxldCB0aHVtYm5haWw6IHtNZXRhZGF0YVZpZXdzLkZpbGV9CmFjY2VzcyhhbGwpIGxldCByYXJpdHk6IFN0cmluZz8KYWNjZXNzKGFsbCkgbGV0IGNvbGxlY3Rpb25EaXNwbGF5OiBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EaXNwbGF5PwoKaW5pdChuYW1lOiBTdHJpbmcsIGRlc2NyaXB0aW9uOiBTdHJpbmcsIHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0sIHJhcml0eTogU3RyaW5nPywgY29sbGVjdGlvbkRpc3BsYXk6IE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRpc3BsYXk/KSB7CiAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICBzZWxmLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24KICAgIHNlbGYudGh1bWJuYWlsID0gdGh1bWJuYWlsCiAgICBzZWxmLnJhcml0eSA9IHJhcml0eQogICAgc2VsZi5jb2xsZWN0aW9uRGlzcGxheSA9IGNvbGxlY3Rpb25EaXNwbGF5CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSUQ6IFN0cmluZywgdG9rZW5JRHM6IFtVSW50NjRdKToge1VJbnQ2NDogVmlld0luZm99IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzOiB7VUludDY0OiBWaWV3SW5mb30gPSB7fQogIHZhciBjb2xsZWN0aW9uRGlzcGxheUZldGNoZWQgPSBmYWxzZQoKICBpZiB0b2tlbklEcy5sZW5ndGggPT0gMCB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgc3RvcmFnZVBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoSUQpIQogIGxldCBwdWJsaWNQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBwYXRoSUQpIQogIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKQogIGlmIHR5cGUgPT0gbmlsIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCgogIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZSEuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQogIGlmICFjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgbmFtZTogcGF0aElELAogICAgICAgIGRlc2NyaXB0aW9uOiAiIiwKICAgICAgICB0aHVtYm5haWw6IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiAiIiksCiAgICAgICAgcmFyaXR5OiBuaWwsCiAgICAgICAgY29sbGVjdGlvbkRpc3BsYXk6IG5pbAogICAgICApCiAgICB9CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihwdWJsaWNQYXRoKQogIGZvciB0b2tlbklEIGluIHRva2VuSURzIHsKICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYhLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRCkKICAgIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXREaXNwbGF5KHJlc29sdmVyISkgewogICAgICB2YXIgcmFyaXR5RGVzYzogU3RyaW5nPyA9IG5pbAogICAgICBpZiBsZXQgcmFyaXR5VmlldyA9IE1ldGFkYXRhVmlld3MuZ2V0UmFyaXR5KHJlc29sdmVyISkgewogICAgICAgICAgcmFyaXR5RGVzYyA9IHJhcml0eVZpZXcuZGVzY3JpcHRpb24KICAgICAgICB9CgogICAgICAgIHZhciBjb2xsZWN0aW9uRGlzcGxheTogTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGlzcGxheT8gPSBuaWwKICAgICAgICBpZiAoIWNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCkgewogICAgICAgICAgaWYgbGV0IGNEaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGlzcGxheShyZXNvbHZlciEpIHsKICAgICAgICAgICAgY29sbGVjdGlvbkRpc3BsYXkgPSBjRGlzcGxheQogICAgICAgICAgICBjb2xsZWN0aW9uRGlzcGxheUZldGNoZWQgPSB0cnVlCiAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgIGRlc2NyaXB0aW9uOiBkaXNwbGF5LmRlc2NyaXB0aW9uLAogICAgICAgICAgdGh1bWJuYWlsOiBkaXNwbGF5LnRodW1ibmFpbCwKICAgICAgICAgIHJhcml0eTogcmFyaXR5RGVzYywKICAgICAgICAgIGNvbGxlY3Rpb25EaXNwbGF5OiBjb2xsZWN0aW9uRGlzcGxheQogICAgICAgICkKICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgcmVzW3Rva2VuSURdID0gVmlld0luZm8oCiAgICAgICAgbmFtZTogcGF0aElELAogICAgICAgIGRlc2NyaXB0aW9uOiAiIiwKICAgICAgICB0aHVtYm5haWw6IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiAiIiksCiAgICAgICAgcmFyaXR5OiBuaWwsCiAgICAgICAgY29sbGVjdGlvbkRpc3BsYXk6IG5pbAogICAgICApCiAgICB9CiAgfQogIHJldHVybiByZXMKfQ==", - "getNFTMetadataViews": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRORlRNZXRhZGF0YVZpZXdzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRhdGEgewogIGFjY2VzcyhhbGwpIGxldCBzdG9yYWdlUGF0aDogU3RvcmFnZVBhdGgKICBhY2Nlc3MoYWxsKSBsZXQgcHVibGljUGF0aDogUHVibGljUGF0aAogIGFjY2VzcyhhbGwpIGxldCBwcm92aWRlclBhdGg6IFByaXZhdGVQYXRoCiAgYWNjZXNzKGFsbCkgbGV0IHB1YmxpY0NvbGxlY3Rpb246IFR5cGUKICBhY2Nlc3MoYWxsKSBsZXQgcHVibGljTGlua2VkVHlwZTogVHlwZQogIGFjY2VzcyhhbGwpIGxldCBwcm92aWRlckxpbmtlZFR5cGU6IFR5cGUKCiAgaW5pdCgKICAgIHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aCwKICAgIHB1YmxpY1BhdGg6IFB1YmxpY1BhdGgsCiAgICBwcm92aWRlclBhdGg6IFByaXZhdGVQYXRoLAogICAgcHVibGljQ29sbGVjdGlvbjogVHlwZSwKICAgIHB1YmxpY0xpbmtlZFR5cGU6IFR5cGUsCiAgICBwcm92aWRlckxpbmtlZFR5cGU6IFR5cGUKICApIHsKICAgIHNlbGYuc3RvcmFnZVBhdGggPSBzdG9yYWdlUGF0aAogICAgc2VsZi5wdWJsaWNQYXRoID0gcHVibGljUGF0aAogICAgc2VsZi5wcm92aWRlclBhdGggPSBwcm92aWRlclBhdGgKICAgIHNlbGYucHVibGljQ29sbGVjdGlvbiA9IHB1YmxpY0NvbGxlY3Rpb24KICAgIHNlbGYucHVibGljTGlua2VkVHlwZSA9IHB1YmxpY0xpbmtlZFR5cGUKICAgIHNlbGYucHJvdmlkZXJMaW5rZWRUeXBlID0gcHJvdmlkZXJMaW5rZWRUeXBlCiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSWQ6IFN0cmluZywgdG9rZW5JRDogVUludDY0KToge1N0cmluZzogQW55U3RydWN0fSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHJlczoge1N0cmluZzogQW55U3RydWN0fSA9IHt9CgogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb24sIFZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PihwdWJsaWNQYXRoKQogIGlmIGNvbGxlY3Rpb25SZWYgPT0gbmlsIHsKICAgIHBhbmljKCJHZXQgQ29sbGVjdGlvbiBGYWlsZWQiKQogIH0KCiAgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpCiAgaWYgdHlwZSA9PSBuaWwgewogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUhLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgaWYgKCFjb25mb3JtZWRNZXRhZGF0YVZpZXdzKSB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBjb2xsZWN0aW9uUmVmIS5ib3Jyb3dORlQodG9rZW5JRCkKCiAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZiEuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEKSEKICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgaWYgbGV0IHJhcml0eSA9IE1ldGFkYXRhVmlld3MuZ2V0UmFyaXR5KHJlc29sdmVyKSB7CiAgICAgIHJlc1sicmFyaXR5Il0gPSByYXJpdHkKICAgIH0KCiAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0RGlzcGxheShyZXNvbHZlcikgewogICAgICByZXNbImRpc3BsYXkiXSA9IGRpc3BsYXkKICAgIH0KCiAgICBpZiBsZXQgZWRpdGlvbnMgPSBNZXRhZGF0YVZpZXdzLmdldEVkaXRpb25zKHJlc29sdmVyKSB7CiAgICAgIHJlc1siZWRpdGlvbnMiXSA9IGVkaXRpb25zCiAgICB9CgogICAgaWYgbGV0IHNlcmlhbCA9IE1ldGFkYXRhVmlld3MuZ2V0U2VyaWFsKHJlc29sdmVyKSB7CiAgICAgIHJlc1sic2VyaWFsIl0gPSBzZXJpYWwKICAgIH0KCiAgICBpZiBsZXQgcm95YWx0aWVzID0gTWV0YWRhdGFWaWV3cy5nZXRSb3lhbHRpZXMocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJyb3lhbHRpZXMiXSA9IHJveWFsdGllcwogICAgfQoKICAgIGlmIGxldCBsaWNlbnNlID0gTWV0YWRhdGFWaWV3cy5nZXRMaWNlbnNlKHJlc29sdmVyKSB7CiAgICAgIHJlc1sibGljZW5zZSJdID0gbGljZW5zZQogICAgfQoKICAgIGlmIGxldCBtZWRpYXMgPSBNZXRhZGF0YVZpZXdzLmdldE1lZGlhcyhyZXNvbHZlcikgewogICAgICByZXNbIm1lZGlhcyJdID0gbWVkaWFzCiAgICB9CgogICAgaWYgbGV0IGV4dGVybmFsVVJMID0gTWV0YWRhdGFWaWV3cy5nZXRFeHRlcm5hbFVSTChyZXNvbHZlcikgewogICAgICByZXNbImV4dGVybmFsVVJMIl0gPSBleHRlcm5hbFVSTAogICAgfQoKICAgIGlmIGxldCB0cmFpdHMgPSBNZXRhZGF0YVZpZXdzLmdldFRyYWl0cyhyZXNvbHZlcikgewogICAgICByZXNbInRyYWl0cyJdID0gdHJhaXRzCiAgICB9CgogICAgaWYgbGV0IGNvbGxlY3Rpb25EaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGlzcGxheShyZXNvbHZlcikgewogICAgICByZXNbImNvbGxlY3Rpb25EaXNwbGF5Il0gPSBjb2xsZWN0aW9uRGlzcGxheQogICAgfQoKICAgIGlmIGxldCBjb2xsZWN0aW9uRGF0YSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRhdGEocmVzb2x2ZXIpIHsKICAgICAgbGV0IGRhdGEgPSBDb2xsZWN0aW9uRGF0YSgKICAgICAgICBzdG9yYWdlUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgsCiAgICAgICAgcHVibGljUGF0aDogY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCwKICAgICAgICBwcm92aWRlclBhdGg6IGNvbGxlY3Rpb25EYXRhLnByb3ZpZGVyUGF0aCwKICAgICAgICBwdWJsaWNDb2xsZWN0aW9uOiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNDb2xsZWN0aW9uLAogICAgICAgIHB1YmxpY0xpbmtlZFR5cGU6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY0xpbmtlZFR5cGUsCiAgICAgICAgcHJvdmlkZXJMaW5rZWRUeXBlOiBjb2xsZWN0aW9uRGF0YS5wcm92aWRlckxpbmtlZFR5cGUKICAgICAgKQogICAgICByZXNbImNvbGxlY3Rpb25EYXRhIl0gPSBkYXRhCiAgICB9CiAgfQogIHJlc1sidG9rZW5JZCJdID0gdG9rZW5JRAoKICByZXR1cm4gcmVzCn0=", - "getUserCollections": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRVc2VyQ29sbGVjdGlvbnMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRpc3BsYXkgewogIGFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgc3F1YXJlSW1hZ2U6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBtZWRpYVR5cGU6IFN0cmluZwoKICBpbml0KG5hbWU6IFN0cmluZywgc3F1YXJlSW1hZ2U6IFN0cmluZywgbWVkaWFUeXBlOiBTdHJpbmcpIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogICAgc2VsZi5tZWRpYVR5cGUgPSBtZWRpYVR5cGUKICB9Cn0KCmFjY2VzcyhhbGwpIHN0cnVjdCBORlRDb2xsZWN0aW9uIHsKICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KCiAgaW5pdChpZDpTdHJpbmcsIHBhdGg6IFN0cmluZywgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LCBpZExpc3Q6IFtVSW50NjRdKSB7CiAgICBzZWxmLmlkID0gaWQKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYuZGlzcGxheSA9IGRpc3BsYXkKICAgIHNlbGYuaWRMaXN0ID0gaWRMaXN0CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gZ2V0RGlzcGxheShhZGRyZXNzOiBBZGRyZXNzLCBzdG9yYWdlUGF0aDogU3RvcmFnZVBhdGgsIHB1YmxpY1BhdGg6IFB1YmxpY1BhdGgpOiBDb2xsZWN0aW9uRGlzcGxheT8gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSB7CiAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgbGV0IGlzTkZUQ29sbGVjdGlvbiA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkKICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4ocHVibGljUGF0aCkgewogICAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uUmVmLmdldElEcygpCgogICAgICAgICAgLy8gVE9ETzogbW92ZSB0byBhIGxpc3QKICAgICAgICAgIGlmIHRva2VuSURzLmxlbmd0aCA+IDAgCiAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvQXJsZWVTY2VuZSB7CiAgICAgICAgICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEc1swXSkKICAgICAgICAgICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgICAgICAgICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGlzcGxheShyZXNvbHZlciEpIHsKICAgICAgICAgICAgICAgIGl0ZW0gPSBDb2xsZWN0aW9uRGlzcGxheSgKICAgICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgICBzcXVhcmVJbWFnZTogZGlzcGxheS5zcXVhcmVJbWFnZS5maWxlLnVyaSgpLAogICAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGRpc3BsYXkuc3F1YXJlSW1hZ2UubWVkaWFUeXBlCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICByZXR1cm4gaXRlbQp9CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbTkZUQ29sbGVjdGlvbl0gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IGNvbGxlY3Rpb25QYXRoczogW1N0b3JhZ2VQYXRoXSA9IFtdCiAgbGV0IGNvbGxlY3Rpb25zOiBbTkZUQ29sbGVjdGlvbl0gPSBbXQoKICBmdW4gZWFjaFBhdGgocGF0aDogU3RvcmFnZVBhdGgsIFR5cGU6IFR5cGUpOiBCb29sIHsKICAgCiAgICBpZiBUeXBlICE9IG5pbCB7CiAgICAgIGlmIFR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkgewogICAgICAgIGNvbGxlY3Rpb25QYXRocy5hcHBlbmQocGF0aCkKICAgICAgfQogICAgICAKICAgIH0KICAgCiAgICByZXR1cm4gdHJ1ZQogIH0KCiAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZWFjaFBhdGgpCgogIGZvciBwYXRoIGluIGNvbGxlY3Rpb25QYXRocyB7CiAgICBsZXQgcGF0aFN0ciA9IHBhdGgudG9TdHJpbmcoKQogICAgbGV0IHNwbGl0QXJyID0gcGF0aFN0ci5zcGxpdChzZXBhcmF0b3I6ICIvIikKICAgIGxldCBpZGVudGlmaWVyID0gc3BsaXRBcnJbMl0KICAgIGxldCBwdWJQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBpZGVudGlmaWVyKSEKICAgIGxldCBjb2xsZWN0aW9uID0gIGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KHB1YlBhdGgpIQoKICAgIGNvbGxlY3Rpb25zLmFwcGVuZCgKICAgICAgTkZUQ29sbGVjdGlvbigKICAgICAgaWQ6IGlkZW50aWZpZXIsCiAgICAgIHBhdGg6IHB1YlBhdGgudG9TdHJpbmcoKSwKICAgICAgZGlzcGxheTogZ2V0RGlzcGxheShhZGRyZXNzOiBhZGRyZXNzLCBzdG9yYWdlUGF0aDogcGF0aCwgcHVibGljUGF0aDogcHViUGF0aCksCiAgICAgIGlkTGlzdDogY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICApCiAgICApCiAgfQoKCiAgcmV0dXJuIGNvbGxlY3Rpb25zCn0=", - "getUserCollectionsPage": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRVc2VyQ29sbGVjdGlvbnNQYWdlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwogIGltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweFZpZXdSZXNvbHZlcgogIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgCiAgYWNjZXNzKGFsbCkgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICAgIGFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBzcXVhcmVJbWFnZTogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgbWVkaWFUeXBlOiBTdHJpbmcKICAKICAgIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogU3RyaW5nLCBtZWRpYVR5cGU6IFN0cmluZykgewogICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogICAgICBzZWxmLm1lZGlhVHlwZSA9IG1lZGlhVHlwZQogICAgfQogIH0KICAKICBhY2Nlc3MoYWxsKSBzdHJ1Y3QgTkZUQ29sbGVjdGlvbiB7CiAgICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHBhdGg6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogICAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KICAKICAgIGluaXQoaWQ6U3RyaW5nLCBwYXRoOiBTdHJpbmcsIGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PywgaWRMaXN0OiBbVUludDY0XSkgewogICAgICBzZWxmLmlkID0gaWQKICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICAgIHNlbGYuaWRMaXN0ID0gaWRMaXN0CiAgICB9CiAgfQogIAogIGFjY2VzcyhhbGwpIGZ1biBnZXREaXNwbGF5KGFkZHJlc3M6IEFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aCwgcHVibGljUGF0aDogUHVibGljUGF0aCk6IENvbGxlY3Rpb25EaXNwbGF5PyB7CiAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogICAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICAgIGxldCBtZXRhZGF0YVZpZXdUeXBlID0gVHlwZTxAe1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PigpCiAgICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAogIAogICAgICBpZiBsZXQgdHlwZSA9IGFjY291bnQuc3RvcmFnZS50eXBlKGF0OiBzdG9yYWdlUGF0aCkgewogICAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICAgIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCiAgCiAgICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgICAgaWYgaXNORlRDb2xsZWN0aW9uICYmIGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4ocHVibGljUGF0aCkgewogICAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKICAKICAgICAgICAgICAgLy8gVE9ETzogbW92ZSB0byBhIGxpc3QKICAgICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvUmFyaWJsZU5GVENvbGxlY3Rpb24gCiAgICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pCiAgICAgICAgICAgICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICAgICAgICBpdGVtID0gQ29sbGVjdGlvbkRpc3BsYXkoCiAgICAgICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlLmZpbGUudXJpKCksCiAgICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBkaXNwbGF5LnNxdWFyZUltYWdlLm1lZGlhVHlwZQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgfQogICAgICAgICAgICAgIAogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgCiAgICByZXR1cm4gaXRlbQogIH0KICAKICBhY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHN0YXJ0OiBJbnQsIGVuZDogSW50KTogW05GVENvbGxlY3Rpb25dIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICAgIGxldCBjb2xsZWN0aW9uUGF0aHM6IFtTdG9yYWdlUGF0aF0gPSBbXQogICAgbGV0IGNvbGxlY3Rpb25zOiBbTkZUQ29sbGVjdGlvbl0gPSBbXQogIAogICAgZnVuIGVhY2hQYXRoKHBhdGg6IFN0b3JhZ2VQYXRoLCBUeXBlOiBUeXBlKTogQm9vbCB7CiAgICAgCiAgICAgIGlmIFR5cGUgIT0gbmlsIHsKICAgICAgICBpZiBUeXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpIHsKICAgICAgICAgIGNvbGxlY3Rpb25QYXRocy5hcHBlbmQocGF0aCkKICAgICAgICB9CiAgICAgICAgCiAgICAgIH0KICAgICAKICAgICAgcmV0dXJuIHRydWUKICAgIH0KICAKICAgIGFjY291bnQuc3RvcmFnZS5mb3JFYWNoU3RvcmVkKGVhY2hQYXRoKQogIAogICAgZm9yIHBhdGggaW4gY29sbGVjdGlvblBhdGhzIHsKICAgICAgbGV0IHBhdGhTdHIgPSBwYXRoLnRvU3RyaW5nKCkKICAgICAgbGV0IHNwbGl0QXJyID0gcGF0aFN0ci5zcGxpdChzZXBhcmF0b3I6ICIvIikKICAgICAgbGV0IGlkZW50aWZpZXIgPSBzcGxpdEFyclsyXQogICAgICBsZXQgcHViUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogaWRlbnRpZmllcikhCiAgICAgIGxldCBjb2xsZWN0aW9uID0gIGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KHB1YlBhdGgpIQogIAogICAgICBjb2xsZWN0aW9ucy5hcHBlbmQoCiAgICAgICAgTkZUQ29sbGVjdGlvbigKICAgICAgICBpZDogaWRlbnRpZmllciwKICAgICAgICBwYXRoOiBwdWJQYXRoLnRvU3RyaW5nKCksCiAgICAgICAgZGlzcGxheTogZ2V0RGlzcGxheShhZGRyZXNzOiBhZGRyZXNzLCBzdG9yYWdlUGF0aDogcGF0aCwgcHVibGljUGF0aDogcHViUGF0aCksCiAgICAgICAgaWRMaXN0OiBjb2xsZWN0aW9uLmdldElEcygpCiAgICAgICAgKQogICAgICApCiAgICAgIAogICAgfQoKICAgIGxldCBsZW4gPSBjb2xsZWN0aW9ucy5sZW5ndGgKICAgIHZhciBlbmROdW4gPSBlbmQKICAgIGlmIGxlbiA8IHN0YXJ0IHsKICAgICAgcmV0dXJuIFtdCiAgICB9IGVsc2UgewogICAgICBpZiBsZW4gPCBlbmQgewogICAgICAgIGVuZE51biA9IGxlbgogICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBjb2xsZWN0aW9ucy5zbGljZShmcm9tOiBzdGFydCwgdXBUbzogZW5kTnVuICkKICB9", - "sendNbaNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kTmJhTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgovLyBUaGlzIHRyYW5zYWN0aW9uIGlzIGZvciB0cmFuc2ZlcnJpbmcgYW5kIE5GVCBmcm9tCi8vIG9uZSBhY2NvdW50IHRvIGFub3RoZXIKdHJhbnNhY3Rpb24ocmVjaXBpZW50OiBBZGRyZXNzLCB3aXRoZHJhd0lEOiBVSW50NjQpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8vIGdldCB0aGUgcmVjaXBpZW50cyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCiAgICAgICAgLy8gYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXInJ3MgTkZUIGNvbGxlY3Rpb24KICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHNpZ25lci5zdG9yYWdlCiAgICAgICAgLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogL3N0b3JhZ2UvTW9tZW50Q29sbGVjdGlvbikKICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgb3duZXInJ3MgY29sbGVjdGlvbiIpCiAgICAgICAgbGV0IHNlbmRlclJlZiA9IHNpZ25lcgogICAgICAgIC5jYXBhYmlsaXRpZXMKICAgICAgICAuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oL3B1YmxpYy9Nb21lbnRDb2xsZWN0aW9uKQogICAgICAgIC8vIGJvcnJvdyBhIHB1YmxpYyByZWZlcmVuY2UgdG8gdGhlIHJlY2VpdmVycyBjb2xsZWN0aW9uCiAgICAgICAgbGV0IHJlY2lwaWVudFJlZiA9IHJlY2lwaWVudAogICAgICAgIC5jYXBhYmlsaXRpZXMKICAgICAgICAuYm9ycm93PCZ7VG9wU2hvdC5Nb21lbnRDb2xsZWN0aW9uUHVibGljfT4oL3B1YmxpYy9Nb21lbnRDb2xsZWN0aW9uKSA/PyBwYW5pYygiVW5hYmxlIHRvIGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UiKQogICAgICAgIAogICAgICAgIC8vIHdpdGhkcmF3IHRoZSBORlQgZnJvbSB0aGUgb3duZXInJ3MgY29sbGVjdGlvbgogICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiB3aXRoZHJhd0lEKQogICAgICAgIC8vIERlcG9zaXQgdGhlIE5GVCBpbiB0aGUgcmVjaXBpZW50JydzIGNvbGxlY3Rpb24KICAgICAgICByZWNpcGllbnRSZWYhLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgfQp9", - "sendNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKLy8gVGhpcyB0cmFuc2FjdGlvbiBpcyBmb3IgdHJhbnNmZXJyaW5nIGFuZCBORlQgZnJvbQovLyBvbmUgYWNjb3VudCB0byBhbm90aGVyCgp0cmFuc2FjdGlvbihyZWNpcGllbnQ6IEFkZHJlc3MsIHdpdGhkcmF3SUQ6IFVJbnQ2NCkgewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8vIGdldCB0aGUgcmVjaXBpZW50cyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgTkZUIGNvbGxlY3Rpb24KICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KGZyb206IDxDb2xsZWN0aW9uU3RvcmFnZVBhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBjb2xsZWN0aW9uIikKCiAgICAgICAgLy8gYm9ycm93IGEgcHVibGljIHJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXJzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgZGVwb3NpdFJlZiA9IHJlY2lwaWVudAogICAgICAgICAgICAuY2FwYWJpbGl0aWVzCiAgICAgICAgICAgIC5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pig8Q29sbGVjdGlvblB1YmxpY1BhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXIncyBjb2xsZWN0aW9uIikKCiAgICAgICAgLy8gd2l0aGRyYXcgdGhlIE5GVCBmcm9tIHRoZSBvd25lcidzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogd2l0aGRyYXdJRCkKCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgTkZUIGluIHRoZSByZWNpcGllbnQncyBjb2xsZWN0aW9uCiAgICAgICAgZGVwb3NpdFJlZi5kZXBvc2l0KHRva2VuOiA8LW5mdCkKICAgIH0KfQ==" + "checkNFTCollection": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2hlY2tORlRDb2xsZWN0aW9uIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgogICAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KICAgIGltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKICAgIC8vIFRoaXMgdHJhbnNhY3Rpb24gaXMgZm9yIHRyYW5zZmVycmluZyBhbmQgTkZUIGZyb20KICAgIC8vIG9uZSBhY2NvdW50IHRvIGFub3RoZXIKCiAgICBhY2Nlc3MoYWxsKSBmdW4gY2hlY2s8VG9rZW4+VmF1bHQoYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5leGlzdCg8VG9rZW5Db2xsZWN0aW9uUHVibGljUGF0aD4pCiAgICAgICAgcmV0dXJuIHZhdWx0UmVmCiAgICB9CgogICAgYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcykgOiBCb29sIHsKICAgICAgICByZXR1cm4gY2hlY2s8VG9rZW4+VmF1bHQoYWRkcmVzczogYWRkcmVzcykKICAgIH0=", + "enableNFTStorage": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZW5hYmxlTkZUU3RvcmFnZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ2FwYWJpbGl0aWVzLCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5ib3Jyb3c8JjxORlQ+LkNvbGxlY3Rpb24+KDxDb2xsZWN0aW9uUHVibGljUGF0aD4pID09IG5pbCB7CiAgICAgICAgICAgIGxldCBjb2xsZWN0aW9uIDwtIDxORlQ+LmNyZWF0ZUVtcHR5Q29sbGVjdGlvbihuZnRUeXBlOiBUeXBlPEA8TkZUPi5ORlQ+KCkpCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1jb2xsZWN0aW9uLCB0bzogPENvbGxlY3Rpb25TdG9yYWdlUGF0aD4pCiAgICAgICAgfQogICAgICAgIGlmIChzaWduZXIuY2FwYWJpbGl0aWVzLmJvcnJvdzwmPE5GVD4uQ29sbGVjdGlvbj4oPENvbGxlY3Rpb25QdWJsaWNQYXRoPikgPT0gbmlsKSB7CiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKDxDb2xsZWN0aW9uUHVibGljUGF0aD4pCiAgICAgICAgICAgIGxldCBjYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxORlQ+LkNvbGxlY3Rpb24+KDxDb2xsZWN0aW9uU3RvcmFnZVBhdGg+KSAgICAgICAgICAgIAogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY2FwLCBhdDogPENvbGxlY3Rpb25QdWJsaWNQYXRoPikKCiAgICAgICAgfQogICAgfQp9", + "getCatalogTypeData": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q2F0YWxvZ1R5cGVEYXRhIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTkZUQ2F0YWxvZyBmcm9tIDB4TkZUQ2F0YWxvZwoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKToge1N0cmluZyA6IHtTdHJpbmcgOiBCb29sfX0gewogIGxldCBjYXRhbG9nID0gTkZUQ2F0YWxvZy5nZXRDYXRhbG9nVHlwZURhdGEoKQogIHJldHVybiBjYXRhbG9nCn0=", + "getNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0TkZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgoKYWNjZXNzKGFsbCkgc3RydWN0IFZpZXdJbmZvIHsKICBhY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IGRlc2NyaXB0aW9uOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgdGh1bWJuYWlsOiB7TWV0YWRhdGFWaWV3cy5GaWxlfQogIGFjY2VzcyhhbGwpIGxldCByYXJpdHk6IFN0cmluZz8KCiAgaW5pdChuYW1lOiBTdHJpbmcsIGRlc2NyaXB0aW9uOiBTdHJpbmcsIHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0sIHJhcml0eTogU3RyaW5nPykgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uCiAgICBzZWxmLnRodW1ibmFpbCA9IHRodW1ibmFpbAogICAgc2VsZi5yYXJpdHkgPSByYXJpdHkKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJZDogU3RyaW5nLCB0b2tlbklEczogW1VJbnQ2NF0pOiB7VUludDY0OiBWaWV3SW5mb30gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXM6IHtVSW50NjQ6IFZpZXdJbmZvfSA9IHt9CiAgdmFyIGNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCA9IGZhbHNlCgogIGlmIHRva2VuSURzLmxlbmd0aCA9PSAwIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJZCkhCiAgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpCiAgaWYgdHlwZSA9PSBuaWwgewogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKCiAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlIS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCiAgaWYgIWNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSWQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbAogICAgICApCiAgICB9CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KHB1YmxpY1BhdGgpCiAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZiEuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEKQogICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXREaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgIHZhciByYXJpdHlEZXNjOiBTdHJpbmc/ID0gbmlsCiAgICAgICAgaWYgbGV0IHJhcml0eVZpZXcgPSBNZXRhZGF0YVZpZXdzLmdldFJhcml0eShyZXNvbHZlciEpIHsKICAgICAgICAgIHJhcml0eURlc2MgPSByYXJpdHlWaWV3LmRlc2NyaXB0aW9uCiAgICAgICAgfQoKICAgICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgIGRlc2NyaXB0aW9uOiBkaXNwbGF5LmRlc2NyaXB0aW9uLAogICAgICAgICAgdGh1bWJuYWlsOiBkaXNwbGF5LnRodW1ibmFpbCwKICAgICAgICAgIHJhcml0eTogcmFyaXR5RGVzYwogICAgICAgICkKICAgICAgfSAKICAgIH0KICAgZWxzZSB7CiAgICAgIHJlc1t0b2tlbklEXSA9IFZpZXdJbmZvKAogICAgICAgIG5hbWU6IHBhdGhJZCwKICAgICAgICBkZXNjcmlwdGlvbjogIiIsCiAgICAgICAgdGh1bWJuYWlsOiBNZXRhZGF0YVZpZXdzLkhUVFBGaWxlKHVybDogIiIpLAogICAgICAgIHJhcml0eTogbmlsCiAgICAgICkKICAgIH0KICB9CiAgcmV0dXJuIHJlcwp9", + "getNFTCollection": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0TkZUQ29sbGVjdGlvbiAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4JCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRpc3BsYXkgewogIGFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgc3F1YXJlSW1hZ2U6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBtZWRpYVR5cGU6IFN0cmluZwoKICBpbml0KG5hbWU6IFN0cmluZywgc3F1YXJlSW1hZ2U6IFN0cmluZywgbWVkaWFUeXBlOiBTdHJpbmcpIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogICAgc2VsZi5tZWRpYVR5cGUgPSBtZWRpYVR5cGUKICB9Cn0KCmFjY2VzcyhhbGwpIHN0cnVjdCBORlRDb2xsZWN0aW9uIHsKICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KCiAgaW5pdChpZDpTdHJpbmcsIHBhdGg6IFN0cmluZywgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LCBpZExpc3Q6IFtVSW50NjRdKSB7CiAgICBzZWxmLmlkID0gaWQKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYuZGlzcGxheSA9IGRpc3BsYXkKICAgIHNlbGYuaWRMaXN0ID0gaWRMaXN0CiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gZ2V0RGlzcGxheShhZGRyZXNzOiBBZGRyZXNzLCBzdG9yYWdlUGF0aDogU3RvcmFnZVBhdGgsIHB1YmxpY1BhdGg6IFB1YmxpY1BhdGgpOiBDb2xsZWN0aW9uRGlzcGxheT8gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSB7CiAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgbGV0IGlzTkZUQ29sbGVjdGlvbiA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkKICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4ocHVibGljUGF0aCkgewogICAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uUmVmLmdldElEcygpCgogICAgICAgICAgLy8gVE9ETzogbW92ZSB0byBhIGxpc3QKICAgICAgICAgIGlmIHRva2VuSURzLmxlbmd0aCA+IDAgewogICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pCiAgICAgICAgICAgIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICAgICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIhKSB7CiAgICAgICAgICAgICAgICBpdGVtID0gQ29sbGVjdGlvbkRpc3BsYXkoCiAgICAgICAgICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UuZmlsZS51cmkoKSwKICAgICAgICAgICAgICAgICAgbWVkaWFUeXBlOiBkaXNwbGF5LnNxdWFyZUltYWdlLm1lZGlhVHlwZQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgcmV0dXJuIGl0ZW0KfQoKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJRDogU3RyaW5nKTogTkZUQ29sbGVjdGlvbiB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHN0b3JhZ2VQYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aElEKSEKICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogcGF0aElEKSEKICBsZXQgY29sbGVjdGlvbiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb259PihwdWJsaWNQYXRoKSEKICByZXR1cm4gTkZUQ29sbGVjdGlvbigKICAgIGlkOiBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpIS5pZGVudGlmaWVyLAogICAgcGF0aDogc3RvcmFnZVBhdGgudG9TdHJpbmcoKSwKICAgIGRpc3BsYXk6IGdldERpc3BsYXkoYWRkcmVzczogYWRkcmVzcywgc3RvcmFnZVBhdGg6IHN0b3JhZ2VQYXRoLCBwdWJsaWNQYXRoOiBwdWJsaWNQYXRoKSwKICAgIGlkTGlzdDogY29sbGVjdGlvbi5nZXRJRHMoKQogICkKfQ==", + "getNFTDisplays": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0TkZURGlzcGxheXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCmFjY2VzcyhhbGwpIHN0cnVjdCBWaWV3SW5mbyB7CmFjY2VzcyhhbGwpIGxldCBuYW1lOiBTdHJpbmcKYWNjZXNzKGFsbCkgbGV0IGRlc2NyaXB0aW9uOiBTdHJpbmcKYWNjZXNzKGFsbCkgbGV0IHRodW1ibmFpbDoge01ldGFkYXRhVmlld3MuRmlsZX0KYWNjZXNzKGFsbCkgbGV0IHJhcml0eTogU3RyaW5nPwphY2Nlc3MoYWxsKSBsZXQgY29sbGVjdGlvbkRpc3BsYXk6IE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRpc3BsYXk/Cgppbml0KG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZywgdGh1bWJuYWlsOiB7TWV0YWRhdGFWaWV3cy5GaWxlfSwgcmFyaXR5OiBTdHJpbmc/LCBjb2xsZWN0aW9uRGlzcGxheTogTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGlzcGxheT8pIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbgogICAgc2VsZi50aHVtYm5haWwgPSB0aHVtYm5haWwKICAgIHNlbGYucmFyaXR5ID0gcmFyaXR5CiAgICBzZWxmLmNvbGxlY3Rpb25EaXNwbGF5ID0gY29sbGVjdGlvbkRpc3BsYXkKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJRDogU3RyaW5nLCB0b2tlbklEczogW1VJbnQ2NF0pOiB7VUludDY0OiBWaWV3SW5mb30gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCByZXM6IHtVSW50NjQ6IFZpZXdJbmZvfSA9IHt9CiAgdmFyIGNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCA9IGZhbHNlCgogIGlmIHRva2VuSURzLmxlbmd0aCA9PSAwIHsKICAgIHJldHVybiByZXMKICB9CgogIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IHBhdGhJRCkhCiAgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpCiAgaWYgdHlwZSA9PSBuaWwgewogICAgcmV0dXJuIHJlcwogIH0KCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKCiAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlIS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCiAgaWYgIWNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSUQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbCwKICAgICAgICBjb2xsZWN0aW9uRGlzcGxheTogbmlsCiAgICAgICkKICAgIH0KICAgIHJldHVybiByZXMKICB9CgogIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbiwgTm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHB1YmxpY1BhdGgpCiAgZm9yIHRva2VuSUQgaW4gdG9rZW5JRHMgewogICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZiEuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEKQogICAgaWYgcmVzb2x2ZXIgIT0gbmlsIHsKICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldERpc3BsYXkocmVzb2x2ZXIhKSB7CiAgICAgIHZhciByYXJpdHlEZXNjOiBTdHJpbmc/ID0gbmlsCiAgICAgIGlmIGxldCByYXJpdHlWaWV3ID0gTWV0YWRhdGFWaWV3cy5nZXRSYXJpdHkocmVzb2x2ZXIhKSB7CiAgICAgICAgICByYXJpdHlEZXNjID0gcmFyaXR5Vmlldy5kZXNjcmlwdGlvbgogICAgICAgIH0KCiAgICAgICAgdmFyIGNvbGxlY3Rpb25EaXNwbGF5OiBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EaXNwbGF5PyA9IG5pbAogICAgICAgIGlmICghY29sbGVjdGlvbkRpc3BsYXlGZXRjaGVkKSB7CiAgICAgICAgICBpZiBsZXQgY0Rpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICBjb2xsZWN0aW9uRGlzcGxheSA9IGNEaXNwbGF5CiAgICAgICAgICAgIGNvbGxlY3Rpb25EaXNwbGF5RmV0Y2hlZCA9IHRydWUKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJlc1t0b2tlbklEXSA9IFZpZXdJbmZvKAogICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgZGVzY3JpcHRpb246IGRpc3BsYXkuZGVzY3JpcHRpb24sCiAgICAgICAgICB0aHVtYm5haWw6IGRpc3BsYXkudGh1bWJuYWlsLAogICAgICAgICAgcmFyaXR5OiByYXJpdHlEZXNjLAogICAgICAgICAgY29sbGVjdGlvbkRpc3BsYXk6IGNvbGxlY3Rpb25EaXNwbGF5CiAgICAgICAgKQogICAgICB9CiAgICB9IGVsc2UgewogICAgICByZXNbdG9rZW5JRF0gPSBWaWV3SW5mbygKICAgICAgICBuYW1lOiBwYXRoSUQsCiAgICAgICAgZGVzY3JpcHRpb246ICIiLAogICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6ICIiKSwKICAgICAgICByYXJpdHk6IG5pbCwKICAgICAgICBjb2xsZWN0aW9uRGlzcGxheTogbmlsCiAgICAgICkKICAgIH0KICB9CiAgcmV0dXJuIHJlcwp9", + "getNFTMetadataViews": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0TkZUTWV0YWRhdGFWaWV3cyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKCmFjY2VzcyhhbGwpIHN0cnVjdCBDb2xsZWN0aW9uRGF0YSB7CiAgYWNjZXNzKGFsbCkgbGV0IHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aAogIGFjY2VzcyhhbGwpIGxldCBwdWJsaWNQYXRoOiBQdWJsaWNQYXRoCiAgYWNjZXNzKGFsbCkgbGV0IHByb3ZpZGVyUGF0aDogUHJpdmF0ZVBhdGgKICBhY2Nlc3MoYWxsKSBsZXQgcHVibGljQ29sbGVjdGlvbjogVHlwZQogIGFjY2VzcyhhbGwpIGxldCBwdWJsaWNMaW5rZWRUeXBlOiBUeXBlCiAgYWNjZXNzKGFsbCkgbGV0IHByb3ZpZGVyTGlua2VkVHlwZTogVHlwZQoKICBpbml0KAogICAgc3RvcmFnZVBhdGg6IFN0b3JhZ2VQYXRoLAogICAgcHVibGljUGF0aDogUHVibGljUGF0aCwKICAgIHByb3ZpZGVyUGF0aDogUHJpdmF0ZVBhdGgsCiAgICBwdWJsaWNDb2xsZWN0aW9uOiBUeXBlLAogICAgcHVibGljTGlua2VkVHlwZTogVHlwZSwKICAgIHByb3ZpZGVyTGlua2VkVHlwZTogVHlwZQogICkgewogICAgc2VsZi5zdG9yYWdlUGF0aCA9IHN0b3JhZ2VQYXRoCiAgICBzZWxmLnB1YmxpY1BhdGggPSBwdWJsaWNQYXRoCiAgICBzZWxmLnByb3ZpZGVyUGF0aCA9IHByb3ZpZGVyUGF0aAogICAgc2VsZi5wdWJsaWNDb2xsZWN0aW9uID0gcHVibGljQ29sbGVjdGlvbgogICAgc2VsZi5wdWJsaWNMaW5rZWRUeXBlID0gcHVibGljTGlua2VkVHlwZQogICAgc2VsZi5wcm92aWRlckxpbmtlZFR5cGUgPSBwcm92aWRlckxpbmtlZFR5cGUKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhJZDogU3RyaW5nLCB0b2tlbklEOiBVSW50NjQpOiB7U3RyaW5nOiBBbnlTdHJ1Y3R9IHsKICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICBsZXQgcmVzOiB7U3RyaW5nOiBBbnlTdHJ1Y3R9ID0ge30KCiAgbGV0IHN0b3JhZ2VQYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aElkKSEKICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogcGF0aElkKSEKICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbiwgVmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KHB1YmxpY1BhdGgpCiAgaWYgY29sbGVjdGlvblJlZiA9PSBuaWwgewogICAgcGFuaWMoIkdldCBDb2xsZWN0aW9uIEZhaWxlZCIpCiAgfQoKICBsZXQgdHlwZSA9IGFjY291bnQuc3RvcmFnZS50eXBlKGF0OiBzdG9yYWdlUGF0aCkKICBpZiB0eXBlID09IG5pbCB7CiAgICByZXR1cm4gcmVzCiAgfQoKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8QHtWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZSEuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICBpZiAoIWNvbmZvcm1lZE1ldGFkYXRhVmlld3MpIHsKICAgIHJldHVybiByZXMKICB9CgogIGNvbGxlY3Rpb25SZWYhLmJvcnJvd05GVCh0b2tlbklEKQoKICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmIS5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSUQpIQogIGlmIHJlc29sdmVyICE9IG5pbCB7CiAgICBpZiBsZXQgcmFyaXR5ID0gTWV0YWRhdGFWaWV3cy5nZXRSYXJpdHkocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJyYXJpdHkiXSA9IHJhcml0eQogICAgfQoKICAgIGlmIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5nZXREaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgIHJlc1siZGlzcGxheSJdID0gZGlzcGxheQogICAgfQoKICAgIGlmIGxldCBlZGl0aW9ucyA9IE1ldGFkYXRhVmlld3MuZ2V0RWRpdGlvbnMocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJlZGl0aW9ucyJdID0gZWRpdGlvbnMKICAgIH0KCiAgICBpZiBsZXQgc2VyaWFsID0gTWV0YWRhdGFWaWV3cy5nZXRTZXJpYWwocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJzZXJpYWwiXSA9IHNlcmlhbAogICAgfQoKICAgIGlmIGxldCByb3lhbHRpZXMgPSBNZXRhZGF0YVZpZXdzLmdldFJveWFsdGllcyhyZXNvbHZlcikgewogICAgICByZXNbInJveWFsdGllcyJdID0gcm95YWx0aWVzCiAgICB9CgogICAgaWYgbGV0IGxpY2Vuc2UgPSBNZXRhZGF0YVZpZXdzLmdldExpY2Vuc2UocmVzb2x2ZXIpIHsKICAgICAgcmVzWyJsaWNlbnNlIl0gPSBsaWNlbnNlCiAgICB9CgogICAgaWYgbGV0IG1lZGlhcyA9IE1ldGFkYXRhVmlld3MuZ2V0TWVkaWFzKHJlc29sdmVyKSB7CiAgICAgIHJlc1sibWVkaWFzIl0gPSBtZWRpYXMKICAgIH0KCiAgICBpZiBsZXQgZXh0ZXJuYWxVUkwgPSBNZXRhZGF0YVZpZXdzLmdldEV4dGVybmFsVVJMKHJlc29sdmVyKSB7CiAgICAgIHJlc1siZXh0ZXJuYWxVUkwiXSA9IGV4dGVybmFsVVJMCiAgICB9CgogICAgaWYgbGV0IHRyYWl0cyA9IE1ldGFkYXRhVmlld3MuZ2V0VHJhaXRzKHJlc29sdmVyKSB7CiAgICAgIHJlc1sidHJhaXRzIl0gPSB0cmFpdHMKICAgIH0KCiAgICBpZiBsZXQgY29sbGVjdGlvbkRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgIHJlc1siY29sbGVjdGlvbkRpc3BsYXkiXSA9IGNvbGxlY3Rpb25EaXNwbGF5CiAgICB9CgogICAgaWYgbGV0IGNvbGxlY3Rpb25EYXRhID0gTWV0YWRhdGFWaWV3cy5nZXRORlRDb2xsZWN0aW9uRGF0YShyZXNvbHZlcikgewogICAgICBsZXQgZGF0YSA9IENvbGxlY3Rpb25EYXRhKAogICAgICAgIHN0b3JhZ2VQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCwKICAgICAgICBwdWJsaWNQYXRoOiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoLAogICAgICAgIHByb3ZpZGVyUGF0aDogY29sbGVjdGlvbkRhdGEucHJvdmlkZXJQYXRoLAogICAgICAgIHB1YmxpY0NvbGxlY3Rpb246IGNvbGxlY3Rpb25EYXRhLnB1YmxpY0NvbGxlY3Rpb24sCiAgICAgICAgcHVibGljTGlua2VkVHlwZTogY29sbGVjdGlvbkRhdGEucHVibGljTGlua2VkVHlwZSwKICAgICAgICBwcm92aWRlckxpbmtlZFR5cGU6IGNvbGxlY3Rpb25EYXRhLnByb3ZpZGVyTGlua2VkVHlwZQogICAgICApCiAgICAgIHJlc1siY29sbGVjdGlvbkRhdGEiXSA9IGRhdGEKICAgIH0KICB9CiAgcmVzWyJ0b2tlbklkIl0gPSB0b2tlbklECgogIHJldHVybiByZXMKfQ==", + "getUserCollections": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0VXNlckNvbGxlY3Rpb25zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhWaWV3UmVzb2x2ZXIKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIHN0cnVjdCBDb2xsZWN0aW9uRGlzcGxheSB7CiAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBzcXVhcmVJbWFnZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IG1lZGlhVHlwZTogU3RyaW5nCgogIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogU3RyaW5nLCBtZWRpYVR5cGU6IFN0cmluZykgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgICBzZWxmLm1lZGlhVHlwZSA9IG1lZGlhVHlwZQogIH0KfQoKYWNjZXNzKGFsbCkgc3RydWN0IE5GVENvbGxlY3Rpb24gewogIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8KICBhY2Nlc3MoYWxsKSBsZXQgaWRMaXN0OiBbVUludDY0XQoKICBpbml0KGlkOlN0cmluZywgcGF0aDogU3RyaW5nLCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8sIGlkTGlzdDogW1VJbnQ2NF0pIHsKICAgIHNlbGYuaWQgPSBpZAogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi5kaXNwbGF5ID0gZGlzcGxheQogICAgc2VsZi5pZExpc3QgPSBpZExpc3QKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBnZXREaXNwbGF5KGFkZHJlc3M6IEFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBTdG9yYWdlUGF0aCwgcHVibGljUGF0aDogUHVibGljUGF0aCk6IENvbGxlY3Rpb25EaXNwbGF5PyB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8QHtWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIHZhciBpdGVtOiBDb2xsZWN0aW9uRGlzcGxheT8gPSAgbmlsCgogICAgaWYgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogc3RvcmFnZVBhdGgpIHsKICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgIGlmIGlzTkZUQ29sbGVjdGlvbiAmJiBjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihwdWJsaWNQYXRoKSB7CiAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKCiAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL1JhcmlibGVORlRDb2xsZWN0aW9uIAogICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKQogICAgICAgICAgICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyISkgewogICAgICAgICAgICAgICAgaXRlbSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlLmZpbGUudXJpKCksCiAgICAgICAgICAgICAgICAgIG1lZGlhVHlwZTogZGlzcGxheS5zcXVhcmVJbWFnZS5tZWRpYVR5cGUKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICB9CgogIHJldHVybiBpdGVtCn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtORlRDb2xsZWN0aW9uXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICBsZXQgY29sbGVjdGlvblBhdGhzOiBbU3RvcmFnZVBhdGhdID0gW10KICBsZXQgY29sbGVjdGlvbnM6IFtORlRDb2xsZWN0aW9uXSA9IFtdCgogIGZ1biBlYWNoUGF0aChwYXRoOiBTdG9yYWdlUGF0aCwgVHlwZTogVHlwZSk6IEJvb2wgewogICAKICAgIGlmIFR5cGUgIT0gbmlsIHsKICAgICAgaWYgVHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKSB7CiAgICAgICAgY29sbGVjdGlvblBhdGhzLmFwcGVuZChwYXRoKQogICAgICB9CiAgICAgIAogICAgfQogICAKICAgIHJldHVybiB0cnVlCiAgfQoKICBhY2NvdW50LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChlYWNoUGF0aCkKCiAgZm9yIHBhdGggaW4gY29sbGVjdGlvblBhdGhzIHsKICAgIGxldCBwYXRoU3RyID0gcGF0aC50b1N0cmluZygpCiAgICBsZXQgc3BsaXRBcnIgPSBwYXRoU3RyLnNwbGl0KHNlcGFyYXRvcjogIi8iKQogICAgbGV0IGlkZW50aWZpZXIgPSBzcGxpdEFyclsyXQogICAgbGV0IHB1YlBhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6IGlkZW50aWZpZXIpIQogICAgbGV0IGNvbGxlY3Rpb24gPSAgYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4ocHViUGF0aCkhCgogICAgY29sbGVjdGlvbnMuYXBwZW5kKAogICAgICBORlRDb2xsZWN0aW9uKAogICAgICBpZDogaWRlbnRpZmllciwKICAgICAgcGF0aDogcHViUGF0aC50b1N0cmluZygpLAogICAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBwYXRoLCBwdWJsaWNQYXRoOiBwdWJQYXRoKSwKICAgICAgaWRMaXN0OiBjb2xsZWN0aW9uLmdldElEcygpCiAgICAgICkKICAgICkKICB9CgoKICByZXR1cm4gY29sbGVjdGlvbnMKfQ==", + "getUserCollectionsPage": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0VXNlckNvbGxlY3Rpb25zUGFnZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCiAgaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCiAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KICAKICBhY2Nlc3MoYWxsKSBzdHJ1Y3QgQ29sbGVjdGlvbkRpc3BsYXkgewogICAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHNxdWFyZUltYWdlOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBtZWRpYVR5cGU6IFN0cmluZwogIAogICAgaW5pdChuYW1lOiBTdHJpbmcsIHNxdWFyZUltYWdlOiBTdHJpbmcsIG1lZGlhVHlwZTogU3RyaW5nKSB7CiAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgICAgIHNlbGYubWVkaWFUeXBlID0gbWVkaWFUeXBlCiAgICB9CiAgfQogIAogIGFjY2VzcyhhbGwpIHN0cnVjdCBORlRDb2xsZWN0aW9uIHsKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgICBhY2Nlc3MoYWxsKSBsZXQgaWRMaXN0OiBbVUludDY0XQogIAogICAgaW5pdChpZDpTdHJpbmcsIHBhdGg6IFN0cmluZywgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LCBpZExpc3Q6IFtVSW50NjRdKSB7CiAgICAgIHNlbGYuaWQgPSBpZAogICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgIHNlbGYuZGlzcGxheSA9IGRpc3BsYXkKICAgICAgc2VsZi5pZExpc3QgPSBpZExpc3QKICAgIH0KICB9CiAgCiAgYWNjZXNzKGFsbCkgZnVuIGdldERpc3BsYXkoYWRkcmVzczogQWRkcmVzcywgc3RvcmFnZVBhdGg6IFN0b3JhZ2VQYXRoLCBwdWJsaWNQYXRoOiBQdWJsaWNQYXRoKTogQ29sbGVjdGlvbkRpc3BsYXk/IHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oKQogICAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEB7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICAgIHZhciBpdGVtOiBDb2xsZWN0aW9uRGlzcGxheT8gPSAgbmlsCiAgCiAgICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHN0b3JhZ2VQYXRoKSB7CiAgICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICAgIGxldCBpc05GVENvbGxlY3Rpb24gPSB0eXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpCiAgICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKICAKICAgICAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihwdWJsaWNQYXRoKSB7CiAgICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQogIAogICAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIAogICAgICAgICAgICAmJiBzdG9yYWdlUGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICAgJiYgc3RvcmFnZVBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAgICYmIHN0b3JhZ2VQYXRoICE9IC9zdG9yYWdlL0FybGVlU2NlbmUgewogICAgICAgICAgICAgIGxldCByZXNvbHZlciA9IGNvbGxlY3Rpb25SZWYuYm9ycm93Vmlld1Jlc29sdmVyKGlkOiB0b2tlbklEc1swXSkKICAgICAgICAgICAgICBpZiByZXNvbHZlciAhPSBuaWwgewogICAgICAgICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIhKSB7CiAgICAgICAgICAgICAgICAgIGl0ZW0gPSBDb2xsZWN0aW9uRGlzcGxheSgKICAgICAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UuZmlsZS51cmkoKSwKICAgICAgICAgICAgICAgICAgICBtZWRpYVR5cGU6IGRpc3BsYXkuc3F1YXJlSW1hZ2UubWVkaWFUeXBlCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAKICAgIHJldHVybiBpdGVtCiAgfQogIAogIGFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgc3RhcnQ6IEludCwgZW5kOiBJbnQpOiBbTkZUQ29sbGVjdGlvbl0gewogICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oKQogICAgbGV0IGNvbGxlY3Rpb25QYXRoczogW1N0b3JhZ2VQYXRoXSA9IFtdCiAgICBsZXQgY29sbGVjdGlvbnM6IFtORlRDb2xsZWN0aW9uXSA9IFtdCiAgCiAgICBmdW4gZWFjaFBhdGgocGF0aDogU3RvcmFnZVBhdGgsIFR5cGU6IFR5cGUpOiBCb29sIHsKICAgICAKICAgICAgaWYgVHlwZSAhPSBuaWwgewogICAgICAgIGlmIFR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkgewogICAgICAgICAgY29sbGVjdGlvblBhdGhzLmFwcGVuZChwYXRoKQogICAgICAgIH0KICAgICAgICAKICAgICAgfQogICAgIAogICAgICByZXR1cm4gdHJ1ZQogICAgfQogIAogICAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZWFjaFBhdGgpCiAgCiAgICBmb3IgcGF0aCBpbiBjb2xsZWN0aW9uUGF0aHMgewogICAgICBsZXQgcGF0aFN0ciA9IHBhdGgudG9TdHJpbmcoKQogICAgICBsZXQgc3BsaXRBcnIgPSBwYXRoU3RyLnNwbGl0KHNlcGFyYXRvcjogIi8iKQogICAgICBsZXQgaWRlbnRpZmllciA9IHNwbGl0QXJyWzJdCiAgICAgIGxldCBwdWJQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiBpZGVudGlmaWVyKSEKICAgICAgbGV0IGNvbGxlY3Rpb24gPSAgYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4ocHViUGF0aCkhCiAgCiAgICAgIGNvbGxlY3Rpb25zLmFwcGVuZCgKICAgICAgICBORlRDb2xsZWN0aW9uKAogICAgICAgIGlkOiBpZGVudGlmaWVyLAogICAgICAgIHBhdGg6IHB1YlBhdGgudG9TdHJpbmcoKSwKICAgICAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGFkZHJlc3MsIHN0b3JhZ2VQYXRoOiBwYXRoLCBwdWJsaWNQYXRoOiBwdWJQYXRoKSwKICAgICAgICBpZExpc3Q6IGNvbGxlY3Rpb24uZ2V0SURzKCkKICAgICAgICApCiAgICAgICkKICAgICAgCiAgICB9CgogICAgbGV0IGxlbiA9IGNvbGxlY3Rpb25zLmxlbmd0aAogICAgdmFyIGVuZE51biA9IGVuZAogICAgaWYgbGVuIDwgc3RhcnQgewogICAgICByZXR1cm4gW10KICAgIH0gZWxzZSB7CiAgICAgIGlmIGxlbiA8IGVuZCB7CiAgICAgICAgZW5kTnVuID0gbGVuCiAgICAgIH0KICAgIH0KICAgIAogICAgcmV0dXJuIGNvbGxlY3Rpb25zLnNsaWNlKGZyb206IHN0YXJ0LCB1cFRvOiBlbmROdW4gKQogIH0=", + "sendNbaNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZE5iYU5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Ci8vIFRoaXMgdHJhbnNhY3Rpb24gaXMgZm9yIHRyYW5zZmVycmluZyBhbmQgTkZUIGZyb20KLy8gb25lIGFjY291bnQgdG8gYW5vdGhlcgp0cmFuc2FjdGlvbihyZWNpcGllbnQ6IEFkZHJlc3MsIHdpdGhkcmF3SUQ6IFVJbnQ2NCkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLy8gZ2V0IHRoZSByZWNpcGllbnRzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKICAgICAgICAvLyBib3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcicncyBORlQgY29sbGVjdGlvbgogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gc2lnbmVyLnN0b3JhZ2UKICAgICAgICAuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259Pihmcm9tOiAvc3RvcmFnZS9Nb21lbnRDb2xsZWN0aW9uKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBvd25lcicncyBjb2xsZWN0aW9uIikKICAgICAgICBsZXQgc2VuZGVyUmVmID0gc2lnbmVyCiAgICAgICAgLmNhcGFiaWxpdGllcwogICAgICAgIC5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigvcHVibGljL01vbWVudENvbGxlY3Rpb24pCiAgICAgICAgLy8gYm9ycm93IGEgcHVibGljIHJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXJzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgcmVjaXBpZW50UmVmID0gcmVjaXBpZW50CiAgICAgICAgLmNhcGFiaWxpdGllcwogICAgICAgIC5ib3Jyb3c8JntUb3BTaG90Lk1vbWVudENvbGxlY3Rpb25QdWJsaWN9PigvcHVibGljL01vbWVudENvbGxlY3Rpb24pID8/IHBhbmljKCJVbmFibGUgdG8gYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSIpCiAgICAgICAgCiAgICAgICAgLy8gd2l0aGRyYXcgdGhlIE5GVCBmcm9tIHRoZSBvd25lcicncyBjb2xsZWN0aW9uCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IHdpdGhkcmF3SUQpCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgTkZUIGluIHRoZSByZWNpcGllbnQnJ3MgY29sbGVjdGlvbgogICAgICAgIHJlY2lwaWVudFJlZiEuZGVwb3NpdCh0b2tlbjogPC1uZnQpCiAgICB9Cn0=", + "sendNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgovLyBUaGlzIHRyYW5zYWN0aW9uIGlzIGZvciB0cmFuc2ZlcnJpbmcgYW5kIE5GVCBmcm9tCi8vIG9uZSBhY2NvdW50IHRvIGFub3RoZXIKCnRyYW5zYWN0aW9uKHJlY2lwaWVudDogQWRkcmVzcywgd2l0aGRyYXdJRDogVUludDY0KSB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLy8gZ2V0IHRoZSByZWNpcGllbnRzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBORlQgY29sbGVjdGlvbgogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oZnJvbTogPENvbGxlY3Rpb25TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIGNvbGxlY3Rpb24iKQoKICAgICAgICAvLyBib3Jyb3cgYSBwdWJsaWMgcmVmZXJlbmNlIHRvIHRoZSByZWNlaXZlcnMgY29sbGVjdGlvbgogICAgICAgIGxldCBkZXBvc2l0UmVmID0gcmVjaXBpZW50CiAgICAgICAgICAgIC5jYXBhYmlsaXRpZXMKICAgICAgICAgICAgLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KDxDb2xsZWN0aW9uUHVibGljUGF0aD4pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNlaXZlcidzIGNvbGxlY3Rpb24iKQoKICAgICAgICAvLyB3aXRoZHJhdyB0aGUgTkZUIGZyb20gdGhlIG93bmVyJ3MgY29sbGVjdGlvbgogICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiB3aXRoZHJhd0lEKQoKICAgICAgICAvLyBEZXBvc2l0IHRoZSBORlQgaW4gdGhlIHJlY2lwaWVudCdzIGNvbGxlY3Rpb24KICAgICAgICBkZXBvc2l0UmVmLmRlcG9zaXQodG9rZW46IDwtbmZ0KQogICAgfQp9" }, "contract": { - "getContractByName": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDb250cmFjdEJ5TmFtZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBhY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBjb250cmFjdE5hbWU6IFN0cmluZyk6IFN0cmluZz8gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBkZXBsb3llZENvbnRyYWN0ID0gYWNjb3VudC5jb250cmFjdHMuZ2V0KG5hbWU6IGNvbnRyYWN0TmFtZSkKCiAgcmV0dXJuIFN0cmluZy5mcm9tVVRGOChkZXBsb3llZENvbnRyYWN0Py5jb2RlISkKfQ==", - "getContractNames": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDb250cmFjdE5hbWVzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiAmW1N0cmluZ10gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIHJldHVybiBhY2NvdW50LmNvbnRyYWN0cy5uYW1lcwp9" + "getContractByName": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q29udHJhY3RCeU5hbWUgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIGNvbnRyYWN0TmFtZTogU3RyaW5nKTogU3RyaW5nPyB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGRlcGxveWVkQ29udHJhY3QgPSBhY2NvdW50LmNvbnRyYWN0cy5nZXQobmFtZTogY29udHJhY3ROYW1lKQoKICByZXR1cm4gU3RyaW5nLmZyb21VVEY4KGRlcGxveWVkQ29udHJhY3Q/LmNvZGUhKQp9", + "getContractNames": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q29udHJhY3ROYW1lcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6ICZbU3RyaW5nXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgcmV0dXJuIGFjY291bnQuY29udHJhY3RzLm5hbWVzCn0=" }, "evm": { - "call": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjYWxsIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZERhdGE6IFN0cmluZywgaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFN0cmluZyB7CiAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KEFkZHJlc3MoMHhDT0EpKQoKICAgIGxldCBjb2EgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQoKICAgIGxldCB0eFJlc3VsdCA9IGNvYS5jYWxsKAogICAgICAgIHRvOiBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKSwKICAgICAgICBkYXRhOiBoZXhFbmNvZGVkRGF0YS5kZWNvZGVIZXgoKSwKICAgICAgICBnYXNMaW1pdDogMTUwMDAwMDAsIC8vIHRvZG8gbWFrZSBpdCBjb25maWd1cmFibGUsIG1heCBmb3Igbm93CiAgICAgICAgdmFsdWU6IEVWTS5CYWxhbmNlKGF0dG9mbG93OiAwKQogICAgKQoKICAgIGFzc2VydCgKICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICApCgogICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoY2FsbFJlc3VsdC5kYXRhKQp9Cg==", - "callContract": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjYWxsQ29udHJhY3QgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRyYW5zZmVycyAkRkxPVyBmcm9tIHRoZSBzaWduZXIncyBhY2NvdW50IENhZGVuY2UgRmxvdyBiYWxhbmNlIHRvIHRoZSByZWNpcGllbnQncyBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcy4KLy8vIE5vdGUgdGhhdCBhIENPQSBtdXN0IGhhdmUgYSAkRkxPVyBiYWxhbmNlIGluIEVWTSBiZWZvcmUgdHJhbnNmZXJyaW5nIHZhbHVlIHRvIGFub3RoZXIgRVZNIGFkZHJlc3MuCi8vLwp0cmFuc2FjdGlvbih0b0VWTUFkZHJlc3NIZXg6IFN0cmluZywgYW1vdW50OiBVRml4NjQsIGRhdGE6IFtVSW50OF0sIGdhc0xpbWl0OiBVSW50NjQpIHsKCiAgICBsZXQgY29hOiBhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3M6IEVWTS5FVk1BZGRyZXNzCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiAvc3RvcmFnZS9ldm0pID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1FVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpLCB0bzogL3N0b3JhZ2UvZXZtKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIGJyaWRnZWQgYWNjb3VudCIpCgogICAgICAgIHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyh0b0VWTUFkZHJlc3NIZXgpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgaWYgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzLmJ5dGVzID09IHNlbGYuY29hLmFkZHJlc3MoKS5ieXRlcyB7CiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgdmFsdWVCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGRhdGE6IGRhdGEsCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQogICAgfQp9", - "checkCoaLink": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja0NvYUxpbmsgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gUmV0dXJucyB3aGV0aGVyIGEgQ09BIGlzIHN0b3JlZCBhbmQgaXRzIHB1YmxpYyBjYXBhYmlsaXR5IGlzIHB1Ymxpc2hlZAovLy8KLy8vIEBwYXJhbSBmbG93QWRkcmVzczogVGhlIEZsb3cgYWRkcmVzcyB0byBjaGVjayBmb3IgYSBDT0EKLy8vCi8vLyBAcmV0dXJuIEJvb2w6IFdoZXRoZXIgYSBDT0EgaXMgc3RvcmVkIGFuZCBpdHMgcHVibGljIGNhcGFiaWxpdHkgaXMgcHVibGlzaGVkLCBuaWwgaWYgbm8gQ09BIGlzIHN0b3JlZAovLy8KYWNjZXNzKGFsbCkgZnVuIG1haW4oZmxvd0FkZHJlc3M6IEFkZHJlc3MpOiBCb29sPyB7CiAgICAvLyBCb3Jyb3cgdGhlIENPQSB0byBjaGVjayBpZiBvbmUgaXMgc3RvcmVkCiAgICBpZiBsZXQgYWRkcmVzczogRVZNLkVWTUFkZHJlc3MgPSBnZXRBdXRoQWNjb3VudDxhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudD4oZmxvd0FkZHJlc3MpCiAgICAgICAgLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKT8uYWRkcmVzcygpIHsKICAgICAgICAvLyBDT0EgZm91bmQgLSBjaGVjayBpZiB0aGUgcHVibGljIGNhcGFiaWxpdHkgaXMgcHVibGlzaGVkCiAgICAgICAgcmV0dXJuIGdldEFjY291bnQoZmxvd0FkZHJlc3MpLmNhcGFiaWxpdGllcy5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigvcHVibGljL2V2bSkgIT0gbmlsCiAgICB9CiAgICAvLyBObyBDT0EgZm91bmQgLSByZXR1cm4gbmlsCiAgICByZXR1cm4gbmlsCn0=", - "coaLink": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjb2FMaW5rIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gcHVibGlzaGVzIGEgcHVibGljICoqdW5lbnRpdGxlZCoqIGNhcGFiaWxpdHkgZm9yIHRoZSBDT0Egc3RvcmVkIGluIHRoZSBzaWduaW5nIGFjY291bnQncyBzdG9yYWdlCi8vLyB3aGVyZSBhIENPQSBoYXMgYWxyZWFkeSBiZWVuIHN0b3JlZC4KLy8vCnRyYW5zYWN0aW9uIHsKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU3RvcmFnZUNhcGFiaWxpdGllcywgUHVibGlzaENhcGFiaWxpdHksIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLy8gRW5zdXJlIGEgQ09BIGlzIHN0b3JlZAogICAgICAgIGxldCBjb2FQYXRoID0gL3N0b3JhZ2UvZXZtCiAgICAgICAgbGV0IGNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoCiAgICAgICAgICAgICAgICAiQ291bGQgbm90IGZpbmQgQ09BIGluIHN0b3JhZ2UgYXQgcGF0aCAiLmNvbmNhdChjb2FQYXRoLnRvU3RyaW5nKCkpCiAgICAgICAgICAgICAgICAuY29uY2F0KCIuIE1ha2Ugc3VyZSB0aGUgc2lnbmluZyBhY2NvdW50IGhhcyBpbml0aWFsaXplZCBhIENPQSBhdCB0aGUgZXhwZWN0ZWQgcGF0aC4iKQogICAgICAgICAgICApCgogICAgICAgIC8vIFB1Ymxpc2ggYSBwdWJsaWMgKip1bmVudGl0bGVkKiogY2FwYWJpbGl0eQogICAgICAgIGxldCBjb2FQdWJsaWNQYXRoID0gL3B1YmxpYy9ldm0KICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2FQdWJsaWNQYXRoKQogICAgICAgIGxldCBjb2FDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oY29hUGF0aCkKICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29hQ2FwYWJpbGl0eSwgYXQ6IGNvYVB1YmxpY1BhdGgpCiAgICB9Cn0=", - "createCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjcmVhdGVDb2EgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKCi8vLyBDcmVhdGVzIGEgQ09BIGFuZCBzYXZlcyBpdCBpbiB0aGUgc2lnbmVyJ3MgRmxvdyBhY2NvdW50ICYgcGFzc2luZyB0aGUgZ2l2ZW4gdmFsdWUgb2YgRmxvdyBpbnRvIEZsb3dFVk0KdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKICAgIGxldCBzZW50VmF1bHQ6IEBGbG93VG9rZW4uVmF1bHQKICAgIGxldCBhdXRoOiBhdXRoKElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oCiAgICAgICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgICAgICBzZWxmLmF1dGggPSBzaWduZXIKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgY29hIDwtIEVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCkKICAgICAgICBjb2EuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQoKICAgICAgICBsb2coY29hLmJhbGFuY2UoKS5pbkZMT1coKSkKICAgICAgICBsZXQgc3RvcmFnZVBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiAiZXZtIikhCiAgICAgICAgbGV0IHB1YmxpY1BhdGggPSBQdWJsaWNQYXRoKGlkZW50aWZpZXI6ICJldm0iKSEKICAgICAgICBzZWxmLmF1dGguc3RvcmFnZS5zYXZlPEBFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oPC1jb2EsIHRvOiBzdG9yYWdlUGF0aCkKICAgICAgICBsZXQgYWRkcmVzc2FibGVDYXAgPSBzZWxmLmF1dGguY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PihzdG9yYWdlUGF0aCkKICAgICAgICBzZWxmLmF1dGguY2FwYWJpbGl0aWVzLnVucHVibGlzaChwdWJsaWNQYXRoKQogICAgICAgIHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMucHVibGlzaChhZGRyZXNzYWJsZUNhcCwgYXQ6IHB1YmxpY1BhdGgpCiAgICB9Cn0=", - "createCoaEmpty": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjcmVhdGVDb2FFbXB0eSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgoKLy8vIENyZWF0ZXMgYSBDT0EgYW5kIHNhdmVzIGl0IGluIHRoZSBzaWduZXIncyBGbG93IGFjY291bnQgJiBwYXNzaW5nIHRoZSBnaXZlbiB2YWx1ZSBvZiBGbG93IGludG8gRmxvd0VWTQp0cmFuc2FjdGlvbigpIHsKICAgIGxldCBhdXRoOiBhdXRoKElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oCiAgICAgICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQogICAgICAgIHNlbGYuYXV0aCA9IHNpZ25lcgogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBjb2EgPC0gRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKQogICAgICAgIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6ICJldm0iKSEKICAgICAgICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogImV2bSIpIQogICAgICAgIHNlbGYuYXV0aC5zdG9yYWdlLnNhdmU8QEVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pig8LWNvYSwgdG86IHN0b3JhZ2VQYXRoKQogICAgICAgIGxldCBhZGRyZXNzYWJsZUNhcCA9IHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KHN0b3JhZ2VQYXRoKQogICAgICAgIHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHB1YmxpY1BhdGgpCiAgICAgICAgc2VsZi5hdXRoLmNhcGFiaWxpdGllcy5wdWJsaXNoKGFkZHJlc3NhYmxlQ2FwLCBhdDogcHVibGljUGF0aCkKICAgIH0KfQ==", - "deployContract": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBkZXBsb3lDb250cmFjdCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHg4YzUzMDNlYWEyNjIwMmQ2CgoKdHJhbnNhY3Rpb24oY29kZTogU3RyaW5nKSB7CiAgICBsZXQgY29hOiBhdXRoKEVWTS5EZXBsb3kpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uRGVwbG95KSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgIGZyb206IC9zdG9yYWdlL2V2bSkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgIHNlbGYuY29hLmRlcGxveShjb2RlOiBjb2RlLmRlY29kZUhleCgpLCAgZ2FzTGltaXQ6IDE1MDAwMDAwLCB2YWx1ZTogRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApKQogICAgfQp9Cg==", - "estimateGas": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBlc3RpbWF0ZUdhcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCmFjY2VzcyhhbGwpCmZ1biBtYWluKGhleEVuY29kZWRUeDogU3RyaW5nLCBhZGRyZXNzOiBBZGRyZXNzKTogW1VJbnQ2NDsgMl0gewogICAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyZXNzKQoKICAgIGxldCBjb2EgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICBsZXQgdHhSZXN1bHQgPSBFVk0ucnVuKHR4OiBoZXhFbmNvZGVkVHguZGVjb2RlSGV4KCksIGNvaW5iYXNlOiBjb2EuYWRkcmVzcygpKQoKICAgIGFzc2VydCgKICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICApCgogICAgcmV0dXJuIFt0eFJlc3VsdC5lcnJvckNvZGUsIHR4UmVzdWx0Lmdhc1VzZWRdCn0K", - "fundCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBmdW5kQ29hIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0KSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CiAgICBsZXQgYXV0aDogYXV0aChTdG9yYWdlKSAmQWNjb3VudAogICAgbGV0IGNvYTogJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKCiAgICAgICAgbGV0IGNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCgogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgICAgIHNlbGYuYXV0aCA9IHNpZ25lcgogICAgICAgIHNlbGYuY29hID0gY29hCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9Cg==", - "fundEvmAddr": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBmdW5kRXZtQWRkciAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihldm1BZGRyOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0KSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcmVkCiAgICBsZXQgc2VudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnRBY2NvdW50ID0gZ2V0QWNjb3VudChyZWNpcGllbnQpCgogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnRBY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oPFRva2VuUmVjZWl2ZXJQYXRoPikhCiAgICAgICAgICAgIAogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9", - "getAddr": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBZGRyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweDhjNTMwM2VhYTI2MjAyZDYKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGZsb3dBZGRyZXNzOiBBZGRyZXNzKTogU3RyaW5nPyB7CiAgICBpZiBsZXQgYWRkcmVzczogRVZNLkVWTUFkZHJlc3MgPSBnZXRBdXRoQWNjb3VudDxhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudD4oZmxvd0FkZHJlc3MpCiAgICAgICAgLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKT8uYWRkcmVzcygpIHsKICAgICAgICBsZXQgYnl0ZXM6IFtVSW50OF0gPSBbXQogICAgICAgIGZvciBieXRlIGluIGFkZHJlc3MuYnl0ZXMgewogICAgICAgICAgICBieXRlcy5hcHBlbmQoYnl0ZSkKICAgICAgICB9CiAgICAgICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoYnl0ZXMpCiAgICB9CiAgICByZXR1cm4gbmlsCn0=", - "getBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFVJbnQgewogICAgbGV0IGFkZHJlc3NCeXRlcyA9IGhleEVuY29kZWRBZGRyZXNzLmRlY29kZUhleCgpLnRvQ29uc3RhbnRTaXplZDxbVUludDg7IDIwXT4oKSEKICAgIGxldCBhZGRyZXNzID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IGFkZHJlc3NCeXRlcykKCiAgICByZXR1cm4gYWRkcmVzcy5iYWxhbmNlKCkuaW5BdHRvRkxPVygpCn0K", - "getCoaAddr": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDb2FBZGRyIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFN0cmluZyB7CiAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHJlc3MpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkKCiAgICBpZiBjb2EgPT0gbmlsIHsgCiAgICAgICAgcmV0dXJuICIiCiAgICB9IGVsc2UgewogICAgICAgIGxldCBjb2FBZGRyID0gY29hPy5hZGRyZXNzKCkgCgogICAgICAgIGxldCBhZGRyQnl0ZTogW1VJbnQ4XSA9IFtdCgogICAgICAgIGZvciBieXRlIGluIGNvYUFkZHI/LmJ5dGVzISB7CiAgICAgICAgICAgIGFkZHJCeXRlLmFwcGVuZChieXRlKQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoYWRkckJ5dGUpCiAgICB9Cn0K", - "getCoaBalance": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDb2FCYWxhbmNlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFVGaXg2NCB7CiAgICAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyZXNzKQoKICAgIGxldCBjb2EgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICAKICAgIHJldHVybiBjb2EuYmFsYW5jZSgpLmluRkxPVygpCn0K", - "getCode": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDb2RlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFN0cmluZyB7CiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQogICAgbGV0IGFkZHJlc3MgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKQoKICAgIHJldHVybiBTdHJpbmcuZW5jb2RlSGV4KGFkZHJlc3MuY29kZSgpKQp9Cg==", - "getNonce": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXROb25jZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRVZNIGZyb20gMHhFVk0KCmFjY2VzcyhhbGwpCmZ1biBtYWluKGhleEVuY29kZWRBZGRyZXNzOiBTdHJpbmcpOiBVSW50NjQgewogICAgbGV0IGFkZHJlc3NCeXRlcyA9IGhleEVuY29kZWRBZGRyZXNzLmRlY29kZUhleCgpLnRvQ29uc3RhbnRTaXplZDxbVUludDg7IDIwXT4oKSEKICAgIGxldCBhZGRyZXNzID0gRVZNLkVWTUFkZHJlc3MoYnl0ZXM6IGFkZHJlc3NCeXRlcykKCiAgICByZXR1cm4gYWRkcmVzcy5ub25jZSgpCn0K", - "newAccountAndCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBuZXdBY2NvdW50QW5kQ29hIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcsIHNpZ25hdHVyZUFsZ29yaXRobTogVUludDgsIGhhc2hBbGdvcml0aG06IFVJbnQ4LCB3ZWlnaHQ6IFVGaXg2NCkgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAogICAgbGV0IGF1dGg6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewoKICAgICAgICBsZXQgYWNjb3VudCA9IEFjY291bnQocGF5ZXI6IHNpZ25lcikKCiAgICAgICAgbGV0IGtleSA9IFB1YmxpY0tleSgKICAgICAgICAgICAgcHVibGljS2V5OiBwdWJsaWNLZXkuZGVjb2RlSGV4KCksCiAgICAgICAgICAgIHNpZ25hdHVyZUFsZ29yaXRobTogU2lnbmF0dXJlQWxnb3JpdGhtKHJhd1ZhbHVlOiBzaWduYXR1cmVBbGdvcml0aG0pIQogICAgICAgICkKCiAgICAgICAgYWNjb3VudC5rZXlzLmFkZChwdWJsaWNLZXk6IGtleSwgaGFzaEFsZ29yaXRobTogSGFzaEFsZ29yaXRobShyYXdWYWx1ZTogaGFzaEFsZ29yaXRobSkhLCB3ZWlnaHQ6IHdlaWdodCkKCQkKICAgICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiAwLjApIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICAgICAgc2VsZi5hdXRoID0gYWNjb3VudAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBhY2NvdW50IDwtIEVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCkKICAgICAgICBsb2coYWNjb3VudC5hZGRyZXNzKCkpCiAgICAgICAgYWNjb3VudC5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCgogICAgICAgIGxvZyhhY2NvdW50LmJhbGFuY2UoKSkKICAgICAgICBzZWxmLmF1dGguc3RvcmFnZS5zYXZlPEBFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oPC1hY2NvdW50LCB0bzogU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogImV2bSIpISkKICAgIH0KfQo=", - "run": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBydW4gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihoZXhFbmNvZGVkVHg6IFN0cmluZykgewogICAgbGV0IGNvYTogJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IHR4UmVzdWx0ID0gRVZNLnJ1bih0eDogaGV4RW5jb2RlZFR4LmRlY29kZUhleCgpLCBjb2luYmFzZTogc2VsZi5jb2EuYWRkcmVzcygpKQogICAgICAgIC8vIHRvZG8gb25seSB0ZW1wb3JhcnkgdW50aWwgd2UgY29ycmVjdGx5IGhhbmRsZSBmYWlsdXJlIGV2ZW50cwogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuZmFpbGVkIHx8IHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLnN1Y2Nlc3NmdWwsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICAgICApCiAgICB9Cn0K", - "transferCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2ZlckNvYSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgYWRkcmVzczogQWRkcmVzcykgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEVWTS5XaXRoZHJhdykgJkFjY291bnQpIHsKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3KSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCgogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIGNvYS53aXRoZHJhdyhiYWxhbmNlOiBFVk0uQmFsYW5jZShhdHRvZmxvdzogVUludChhbW91bnQpICogMTAwMDAwMDAwMDAwMDAwMDAwKSkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgICBsZXQgcmVjZWl2ZXIgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikhCiAgICAgICAgcmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9Cg==", - "transferFlowFromCoaToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2ZlckZsb3dGcm9tQ29hVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCBhZGRyZXNzOiBBZGRyZXNzKSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgRVZNLldpdGhkcmF3KSAmQWNjb3VudCkgewogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgICAgICBsZXQgd2l0aGRyYXdCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgd2l0aGRyYXdCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIGNvYS53aXRoZHJhdyhiYWxhbmNlOiB3aXRoZHJhd0JhbGFuY2UpIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgbGV0IHJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgIH0KfQo=", - "transferFlowToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2ZlckZsb3dUb0V2bUFkZHJlc3MgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKLy8vIFRyYW5zZmVycyAkRkxPVyBmcm9tIHRoZSBzaWduZXIncyBhY2NvdW50IENhZGVuY2UgRmxvdyBiYWxhbmNlIHRvIHRoZSByZWNpcGllbnQncyBoZXgtZW5jb2RlZCBFVk0gYWRkcmVzcy4KLy8vIE5vdGUgdGhhdCBhIENPQSBtdXN0IGhhdmUgYSAkRkxPVyBiYWxhbmNlIGluIEVWTSBiZWZvcmUgdHJhbnNmZXJyaW5nIHZhbHVlIHRvIGFub3RoZXIgRVZNIGFkZHJlc3MuCi8vLwp0cmFuc2FjdGlvbihyZWNpcGllbnRFVk1BZGRyZXNzSGV4OiBTdHJpbmcsIGFtb3VudDogVUZpeDY0LCBnYXNMaW1pdDogVUludDY0KSB7CgogICAgbGV0IGNvYTogYXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzOiBFVk0uRVZNQWRkcmVzcwogICAgdmFyIHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogL3N0b3JhZ2UvZXZtKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKSwgdG86IC9zdG9yYWdlL2V2bSkKICAgICAgICB9CiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcsIEVWTS5DYWxsKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBicmlkZ2VkIGFjY291bnQiKQoKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpIGFzISBARmxvd1Rva2VuLlZhdWx0CgogICAgICAgIHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnRFVk1BZGRyZXNzSGV4KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuY29hLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgICAgICAKICAgICAgICBsZXQgdmFsdWVCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgdmFsdWVCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIGxldCB0eFJlc3VsdCA9IHNlbGYuY29hLmNhbGwoCiAgICAgICAgICAgIHRvOiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGRhdGE6IFtdLAogICAgICAgICAgICBnYXNMaW1pdDogZ2FzTGltaXQsCiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZUJhbGFuY2UKICAgICAgICApCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKCiAgICB9Cn0=", - "withdrawCoa": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB3aXRoZHJhd0NvYSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgYWRkcmVzczogQWRkcmVzcykgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIEVWTS5XaXRoZHJhdykgJkFjY291bnQpIHsKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3KSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgQ09BISIpCiAgICAgICAgbGV0IHdpdGhkcmF3QmFsYW5jZSA9IEVWTS5CYWxhbmNlKGF0dG9mbG93OiAwKQogICAgICAgIHdpdGhkcmF3QmFsYW5jZS5zZXRGTE9XKGZsb3c6IGFtb3VudCkKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSBjb2Eud2l0aGRyYXcoYmFsYW5jZTogd2l0aGRyYXdCYWxhbmNlKSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgIGxldCByZWNlaXZlciA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICByZWNlaXZlci5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0K" + "call": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2FsbCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihoZXhFbmNvZGVkRGF0YTogU3RyaW5nLCBoZXhFbmNvZGVkQWRkcmVzczogU3RyaW5nKTogU3RyaW5nIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oQWRkcmVzcygweENPQSkpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIGxldCBhZGRyZXNzQnl0ZXMgPSBoZXhFbmNvZGVkQWRkcmVzcy5kZWNvZGVIZXgoKS50b0NvbnN0YW50U2l6ZWQ8W1VJbnQ4OyAyMF0+KCkhCgogICAgbGV0IHR4UmVzdWx0ID0gY29hLmNhbGwoCiAgICAgICAgdG86IEVWTS5FVk1BZGRyZXNzKGJ5dGVzOiBhZGRyZXNzQnl0ZXMpLAogICAgICAgIGRhdGE6IGhleEVuY29kZWREYXRhLmRlY29kZUhleCgpLAogICAgICAgIGdhc0xpbWl0OiAxNTAwMDAwMCwgLy8gdG9kbyBtYWtlIGl0IGNvbmZpZ3VyYWJsZSwgbWF4IGZvciBub3cKICAgICAgICB2YWx1ZTogRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICApCgogICAgYXNzZXJ0KAogICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICkKCiAgICByZXR1cm4gU3RyaW5nLmVuY29kZUhleChjYWxsUmVzdWx0LmRhdGEpCn0K", + "callContract": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2FsbENvbnRyYWN0IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gVHJhbnNmZXJzICRGTE9XIGZyb20gdGhlIHNpZ25lcidzIGFjY291bnQgQ2FkZW5jZSBGbG93IGJhbGFuY2UgdG8gdGhlIHJlY2lwaWVudCdzIGhleC1lbmNvZGVkIEVWTSBhZGRyZXNzLgovLy8gTm90ZSB0aGF0IGEgQ09BIG11c3QgaGF2ZSBhICRGTE9XIGJhbGFuY2UgaW4gRVZNIGJlZm9yZSB0cmFuc2ZlcnJpbmcgdmFsdWUgdG8gYW5vdGhlciBFVk0gYWRkcmVzcy4KLy8vCnRyYW5zYWN0aW9uKHRvRVZNQWRkcmVzc0hleDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCwgZGF0YTogW1VJbnQ4XSwgZ2FzTGltaXQ6IFVJbnQ2NCkgewoKICAgIGxldCBjb2E6IGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzczogRVZNLkVWTUFkZHJlc3MKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IC9zdG9yYWdlL2V2bSkgPT0gbmlsIHsKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSg8LUVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCksIHRvOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgfQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLldpdGhkcmF3LCBFVk0uQ2FsbCkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgYnJpZGdlZCBhY2NvdW50IikKCiAgICAgICAgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHRvRVZNQWRkcmVzc0hleCkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBpZiBzZWxmLnJlY2lwaWVudEVWTUFkZHJlc3MuYnl0ZXMgPT0gc2VsZi5jb2EuYWRkcmVzcygpLmJ5dGVzIHsKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQogICAgICAgIGxldCB2YWx1ZUJhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICB2YWx1ZUJhbGFuY2Uuc2V0RkxPVyhmbG93OiBhbW91bnQpCiAgICAgICAgbGV0IHR4UmVzdWx0ID0gc2VsZi5jb2EuY2FsbCgKICAgICAgICAgICAgdG86IHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZGF0YTogZGF0YSwKICAgICAgICAgICAgZ2FzTGltaXQ6IGdhc0xpbWl0LAogICAgICAgICAgICB2YWx1ZTogdmFsdWVCYWxhbmNlCiAgICAgICAgKQogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuZmFpbGVkIHx8IHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLnN1Y2Nlc3NmdWwsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICAgICApCiAgICB9Cn0=", + "checkCoaLink": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2hlY2tDb2FMaW5rIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCi8vLyBSZXR1cm5zIHdoZXRoZXIgYSBDT0EgaXMgc3RvcmVkIGFuZCBpdHMgcHVibGljIGNhcGFiaWxpdHkgaXMgcHVibGlzaGVkCi8vLwovLy8gQHBhcmFtIGZsb3dBZGRyZXNzOiBUaGUgRmxvdyBhZGRyZXNzIHRvIGNoZWNrIGZvciBhIENPQQovLy8KLy8vIEByZXR1cm4gQm9vbDogV2hldGhlciBhIENPQSBpcyBzdG9yZWQgYW5kIGl0cyBwdWJsaWMgY2FwYWJpbGl0eSBpcyBwdWJsaXNoZWQsIG5pbCBpZiBubyBDT0EgaXMgc3RvcmVkCi8vLwphY2Nlc3MoYWxsKSBmdW4gbWFpbihmbG93QWRkcmVzczogQWRkcmVzcyk6IEJvb2w/IHsKICAgIC8vIEJvcnJvdyB0aGUgQ09BIHRvIGNoZWNrIGlmIG9uZSBpcyBzdG9yZWQKICAgIGlmIGxldCBhZGRyZXNzOiBFVk0uRVZNQWRkcmVzcyA9IGdldEF1dGhBY2NvdW50PGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50PihmbG93QWRkcmVzcykKICAgICAgICAuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pPy5hZGRyZXNzKCkgewogICAgICAgIC8vIENPQSBmb3VuZCAtIGNoZWNrIGlmIHRoZSBwdWJsaWMgY2FwYWJpbGl0eSBpcyBwdWJsaXNoZWQKICAgICAgICByZXR1cm4gZ2V0QWNjb3VudChmbG93QWRkcmVzcykuY2FwYWJpbGl0aWVzLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KC9wdWJsaWMvZXZtKSAhPSBuaWwKICAgIH0KICAgIC8vIE5vIENPQSBmb3VuZCAtIHJldHVybiBuaWwKICAgIHJldHVybiBuaWwKfQ==", + "coaLink": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY29hTGluayAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBwdWJsaXNoZXMgYSBwdWJsaWMgKip1bmVudGl0bGVkKiogY2FwYWJpbGl0eSBmb3IgdGhlIENPQSBzdG9yZWQgaW4gdGhlIHNpZ25pbmcgYWNjb3VudCdzIHN0b3JhZ2UKLy8vIHdoZXJlIGEgQ09BIGhhcyBhbHJlYWR5IGJlZW4gc3RvcmVkLgovLy8KdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBTdG9yYWdlQ2FwYWJpbGl0aWVzLCBQdWJsaXNoQ2FwYWJpbGl0eSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvLyBFbnN1cmUgYSBDT0EgaXMgc3RvcmVkCiAgICAgICAgbGV0IGNvYVBhdGggPSAvc3RvcmFnZS9ldm0KICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygKICAgICAgICAgICAgICAgICJDb3VsZCBub3QgZmluZCBDT0EgaW4gc3RvcmFnZSBhdCBwYXRoICIuY29uY2F0KGNvYVBhdGgudG9TdHJpbmcoKSkKICAgICAgICAgICAgICAgIC5jb25jYXQoIi4gTWFrZSBzdXJlIHRoZSBzaWduaW5nIGFjY291bnQgaGFzIGluaXRpYWxpemVkIGEgQ09BIGF0IHRoZSBleHBlY3RlZCBwYXRoLiIpCiAgICAgICAgICAgICkKCiAgICAgICAgLy8gUHVibGlzaCBhIHB1YmxpYyAqKnVuZW50aXRsZWQqKiBjYXBhYmlsaXR5CiAgICAgICAgbGV0IGNvYVB1YmxpY1BhdGggPSAvcHVibGljL2V2bQogICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvYVB1YmxpY1BhdGgpCiAgICAgICAgbGV0IGNvYUNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihjb2FQYXRoKQogICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChjb2FDYXBhYmlsaXR5LCBhdDogY29hUHVibGljUGF0aCkKICAgIH0KfQ==", + "createCoa": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY3JlYXRlQ29hIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgoKLy8vIENyZWF0ZXMgYSBDT0EgYW5kIHNhdmVzIGl0IGluIHRoZSBzaWduZXIncyBGbG93IGFjY291bnQgJiBwYXNzaW5nIHRoZSBnaXZlbiB2YWx1ZSBvZiBGbG93IGludG8gRmxvd0VWTQp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCkgewogICAgbGV0IHNlbnRWYXVsdDogQEZsb3dUb2tlbi5WYXVsdAogICAgbGV0IGF1dGg6IGF1dGgoSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgICAgIHNlbGYuYXV0aCA9IHNpZ25lcgogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBjb2EgPC0gRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKQogICAgICAgIGNvYS5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCgogICAgICAgIGxvZyhjb2EuYmFsYW5jZSgpLmluRkxPVygpKQogICAgICAgIGxldCBzdG9yYWdlUGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6ICJldm0iKSEKICAgICAgICBsZXQgcHVibGljUGF0aCA9IFB1YmxpY1BhdGgoaWRlbnRpZmllcjogImV2bSIpIQogICAgICAgIHNlbGYuYXV0aC5zdG9yYWdlLnNhdmU8QEVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pig8LWNvYSwgdG86IHN0b3JhZ2VQYXRoKQogICAgICAgIGxldCBhZGRyZXNzYWJsZUNhcCA9IHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KHN0b3JhZ2VQYXRoKQogICAgICAgIHNlbGYuYXV0aC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHB1YmxpY1BhdGgpCiAgICAgICAgc2VsZi5hdXRoLmNhcGFiaWxpdGllcy5wdWJsaXNoKGFkZHJlc3NhYmxlQ2FwLCBhdDogcHVibGljUGF0aCkKICAgIH0KfQ==", + "createCoaEmpty": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY3JlYXRlQ29hRW1wdHkgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCgovLy8gQ3JlYXRlcyBhIENPQSBhbmQgc2F2ZXMgaXQgaW4gdGhlIHNpZ25lcidzIEZsb3cgYWNjb3VudCAmIHBhc3NpbmcgdGhlIGdpdmVuIHZhbHVlIG9mIEZsb3cgaW50byBGbG93RVZNCnRyYW5zYWN0aW9uKCkgewogICAgbGV0IGF1dGg6IGF1dGgoSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCiAgICAgICAgc2VsZi5hdXRoID0gc2lnbmVyCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGNvYSA8LSBFVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpCiAgICAgICAgbGV0IHN0b3JhZ2VQYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogImV2bSIpIQogICAgICAgIGxldCBwdWJsaWNQYXRoID0gUHVibGljUGF0aChpZGVudGlmaWVyOiAiZXZtIikhCiAgICAgICAgc2VsZi5hdXRoLnN0b3JhZ2Uuc2F2ZTxARVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KDwtY29hLCB0bzogc3RvcmFnZVBhdGgpCiAgICAgICAgbGV0IGFkZHJlc3NhYmxlQ2FwID0gc2VsZi5hdXRoLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oc3RvcmFnZVBhdGgpCiAgICAgICAgc2VsZi5hdXRoLmNhcGFiaWxpdGllcy51bnB1Ymxpc2gocHVibGljUGF0aCkKICAgICAgICBzZWxmLmF1dGguY2FwYWJpbGl0aWVzLnB1Ymxpc2goYWRkcmVzc2FibGVDYXAsIGF0OiBwdWJsaWNQYXRoKQogICAgfQp9", + "deployContract": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZGVwbG95Q29udHJhY3QgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweDhjNTMwM2VhYTI2MjAyZDYKCgp0cmFuc2FjdGlvbihjb2RlOiBTdHJpbmcpIHsKICAgIGxldCBjb2E6IGF1dGgoRVZNLkRlcGxveSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5EZXBsb3kpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIENPQSEiKQoKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgc2VsZi5jb2EuZGVwbG95KGNvZGU6IGNvZGUuZGVjb2RlSGV4KCksICBnYXNMaW1pdDogMTUwMDAwMDAsIHZhbHVlOiBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkpCiAgICB9Cn0K", + "estimateGas": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZXN0aW1hdGVHYXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZFR4OiBTdHJpbmcsIGFkZHJlc3M6IEFkZHJlc3MpOiBbVUludDY0OyAyXSB7CiAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHJlc3MpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIGxldCB0eFJlc3VsdCA9IEVWTS5ydW4odHg6IGhleEVuY29kZWRUeC5kZWNvZGVIZXgoKSwgY29pbmJhc2U6IGNvYS5hZGRyZXNzKCkpCgogICAgYXNzZXJ0KAogICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgIG1lc3NhZ2U6ICJldm1fZXJyb3I9Ii5jb25jYXQodHhSZXN1bHQuZXJyb3JNZXNzYWdlKS5jb25jYXQoIlxuIikKICAgICkKCiAgICByZXR1cm4gW3R4UmVzdWx0LmVycm9yQ29kZSwgdHhSZXN1bHQuZ2FzVXNlZF0KfQo=", + "fundCoa": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZnVuZENvYSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKICAgIGxldCBzZW50VmF1bHQ6IEBGbG93VG9rZW4uVmF1bHQKICAgIGxldCBhdXRoOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50CiAgICBsZXQgY29hOiAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCB2YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KAogICAgICAgICAgICBmcm9tOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBvd25lcidzIFZhdWx0ISIpCgoKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICAgICAgc2VsZi5hdXRoID0gc2lnbmVyCiAgICAgICAgc2VsZi5jb2EgPSBjb2EKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0K", + "fundEvmAddr": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZnVuZEV2bUFkZHIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGV2bUFkZHI6IFN0cmluZywgYW1vdW50OiBVRml4NjQpIHsKCiAgICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVyZWQKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmPFRva2VuPi5WYXVsdD4oZnJvbTogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgICAgbGV0IHJlY2lwaWVudEFjY291bnQgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudEFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pig8VG9rZW5SZWNlaXZlclBhdGg+KSEKICAgICAgICAgICAgCiAgICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0=", + "getAddr": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWRkciAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4OGM1MzAzZWFhMjYyMDJkNgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oZmxvd0FkZHJlc3M6IEFkZHJlc3MpOiBTdHJpbmc/IHsKICAgIGlmIGxldCBhZGRyZXNzOiBFVk0uRVZNQWRkcmVzcyA9IGdldEF1dGhBY2NvdW50PGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50PihmbG93QWRkcmVzcykKICAgICAgICAuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pPy5hZGRyZXNzKCkgewogICAgICAgIGxldCBieXRlczogW1VJbnQ4XSA9IFtdCiAgICAgICAgZm9yIGJ5dGUgaW4gYWRkcmVzcy5ieXRlcyB7CiAgICAgICAgICAgIGJ5dGVzLmFwcGVuZChieXRlKQogICAgICAgIH0KICAgICAgICByZXR1cm4gU3RyaW5nLmVuY29kZUhleChieXRlcykKICAgIH0KICAgIHJldHVybiBuaWwKfQ==", + "getBalance": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihoZXhFbmNvZGVkQWRkcmVzczogU3RyaW5nKTogVUludCB7CiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQogICAgbGV0IGFkZHJlc3MgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKQoKICAgIHJldHVybiBhZGRyZXNzLmJhbGFuY2UoKS5pbkF0dG9GTE9XKCkKfQo=", + "getCoaAddr": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q29hQWRkciAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogU3RyaW5nIHsKICAgIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcmVzcykKCiAgICBsZXQgY29hID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzwmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KAogICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgKQoKICAgIGlmIGNvYSA9PSBuaWwgeyAKICAgICAgICByZXR1cm4gIiIKICAgIH0gZWxzZSB7CiAgICAgICAgbGV0IGNvYUFkZHIgPSBjb2E/LmFkZHJlc3MoKSAKCiAgICAgICAgbGV0IGFkZHJCeXRlOiBbVUludDhdID0gW10KCiAgICAgICAgZm9yIGJ5dGUgaW4gY29hQWRkcj8uYnl0ZXMhIHsKICAgICAgICAgICAgYWRkckJ5dGUuYXBwZW5kKGJ5dGUpCiAgICAgICAgfQoKICAgICAgICByZXR1cm4gU3RyaW5nLmVuY29kZUhleChhZGRyQnl0ZSkKICAgIH0KfQo=", + "getCoaBalance": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q29hQmFsYW5jZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogVUZpeDY0IHsKICAgICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHJlc3MpCgogICAgbGV0IGNvYSA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICBmcm9tOiAvc3RvcmFnZS9ldm0KICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIAogICAgcmV0dXJuIGNvYS5iYWxhbmNlKCkuaW5GTE9XKCkKfQo=", + "getCode": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q29kZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgphY2Nlc3MoYWxsKQpmdW4gbWFpbihoZXhFbmNvZGVkQWRkcmVzczogU3RyaW5nKTogU3RyaW5nIHsKICAgIGxldCBhZGRyZXNzQnl0ZXMgPSBoZXhFbmNvZGVkQWRkcmVzcy5kZWNvZGVIZXgoKS50b0NvbnN0YW50U2l6ZWQ8W1VJbnQ4OyAyMF0+KCkhCiAgICBsZXQgYWRkcmVzcyA9IEVWTS5FVk1BZGRyZXNzKGJ5dGVzOiBhZGRyZXNzQnl0ZXMpCgogICAgcmV0dXJuIFN0cmluZy5lbmNvZGVIZXgoYWRkcmVzcy5jb2RlKCkpCn0K", + "getNonce": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Tm9uY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKYWNjZXNzKGFsbCkKZnVuIG1haW4oaGV4RW5jb2RlZEFkZHJlc3M6IFN0cmluZyk6IFVJbnQ2NCB7CiAgICBsZXQgYWRkcmVzc0J5dGVzID0gaGV4RW5jb2RlZEFkZHJlc3MuZGVjb2RlSGV4KCkudG9Db25zdGFudFNpemVkPFtVSW50ODsgMjBdPigpIQogICAgbGV0IGFkZHJlc3MgPSBFVk0uRVZNQWRkcmVzcyhieXRlczogYWRkcmVzc0J5dGVzKQoKICAgIHJldHVybiBhZGRyZXNzLm5vbmNlKCkKfQo=", + "newAccountAndCoa": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgbmV3QWNjb3VudEFuZENvYSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgp0cmFuc2FjdGlvbihwdWJsaWNLZXk6IFN0cmluZywgc2lnbmF0dXJlQWxnb3JpdGhtOiBVSW50OCwgaGFzaEFsZ29yaXRobTogVUludDgsIHdlaWdodDogVUZpeDY0KSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CiAgICBsZXQgYXV0aDogYXV0aChTdG9yYWdlKSAmQWNjb3VudAoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CgogICAgICAgIGxldCBhY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKICAgICAgICBsZXQga2V5ID0gUHVibGljS2V5KAogICAgICAgICAgICBwdWJsaWNLZXk6IHB1YmxpY0tleS5kZWNvZGVIZXgoKSwKICAgICAgICAgICAgc2lnbmF0dXJlQWxnb3JpdGhtOiBTaWduYXR1cmVBbGdvcml0aG0ocmF3VmFsdWU6IHNpZ25hdHVyZUFsZ29yaXRobSkhCiAgICAgICAgKQoKICAgICAgICBhY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LCBoYXNoQWxnb3JpdGhtOiBIYXNoQWxnb3JpdGhtKHJhd1ZhbHVlOiBoYXNoQWxnb3JpdGhtKSEsIHdlaWdodDogd2VpZ2h0KQoJCQogICAgICAgIGxldCB2YXVsdFJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigKICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IDAuMCkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgICAgICBzZWxmLmF1dGggPSBhY2NvdW50CiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGFjY291bnQgPC0gRVZNLmNyZWF0ZUNhZGVuY2VPd25lZEFjY291bnQoKQogICAgICAgIGxvZyhhY2NvdW50LmFkZHJlc3MoKSkKICAgICAgICBhY2NvdW50LmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKCiAgICAgICAgbG9nKGFjY291bnQuYmFsYW5jZSgpKQogICAgICAgIHNlbGYuYXV0aC5zdG9yYWdlLnNhdmU8QEVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pig8LWFjY291bnQsIHRvOiBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiAiZXZtIikhKQogICAgfQp9Cg==", + "run": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcnVuIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGhleEVuY29kZWRUeDogU3RyaW5nKSB7CiAgICBsZXQgY29hOiAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgdHhSZXN1bHQgPSBFVk0ucnVuKHR4OiBoZXhFbmNvZGVkVHguZGVjb2RlSGV4KCksIGNvaW5iYXNlOiBzZWxmLmNvYS5hZGRyZXNzKCkpCiAgICAgICAgLy8gdG9kbyBvbmx5IHRlbXBvcmFyeSB1bnRpbCB3ZSBjb3JyZWN0bHkgaGFuZGxlIGZhaWx1cmUgZXZlbnRzCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5mYWlsZWQgfHwgdHhSZXN1bHQuc3RhdHVzID09IEVWTS5TdGF0dXMuc3VjY2Vzc2Z1bCwKICAgICAgICAgICAgbWVzc2FnZTogImV2bV9lcnJvcj0iLmNvbmNhdCh0eFJlc3VsdC5lcnJvck1lc3NhZ2UpLmNvbmNhdCgiXG4iKQogICAgICAgICkKICAgIH0KfQo=", + "transferCoa": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJDb2EgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCBhZGRyZXNzOiBBZGRyZXNzKSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgRVZNLldpdGhkcmF3KSAmQWNjb3VudCkgewogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gY29hLndpdGhkcmF3KGJhbGFuY2U6IEVWTS5CYWxhbmNlKGF0dG9mbG93OiBVSW50KGFtb3VudCkgKiAxMDAwMDAwMDAwMDAwMDAwMDApKSBhcyEgQEZsb3dUb2tlbi5WYXVsdAogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogICAgICAgIGxldCByZWNlaXZlciA9IGFjY291bnQuY2FwYWJpbGl0aWVzLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICByZWNlaXZlci5kZXBvc2l0KGZyb206IDwtc2VsZi5zZW50VmF1bHQpCiAgICB9Cn0K", + "transferFlowFromCoaToFlow": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJGbG93RnJvbUNvYVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQsIGFkZHJlc3M6IEFkZHJlc3MpIHsKICAgIGxldCBzZW50VmF1bHQ6IEBGbG93VG9rZW4uVmF1bHQKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBFVk0uV2l0aGRyYXcpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5XaXRoZHJhdykgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50PigKICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZXZtCiAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIENPQSEiKQogICAgICAgIGxldCB3aXRoZHJhd0JhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICB3aXRoZHJhd0JhbGFuY2Uuc2V0RkxPVyhmbG93OiBhbW91bnQpCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gY29hLndpdGhkcmF3KGJhbGFuY2U6IHdpdGhkcmF3QmFsYW5jZSkgYXMhIEBGbG93VG9rZW4uVmF1bHQKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBsZXQgYWNjb3VudCA9IGdldEFjY291bnQoYWRkcmVzcykKICAgICAgICBsZXQgcmVjZWl2ZXIgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5ib3Jyb3c8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oL3B1YmxpYy9mbG93VG9rZW5SZWNlaXZlcikhCiAgICAgICAgcmVjZWl2ZXIuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgfQp9Cg==", + "transferFlowToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJGbG93VG9Fdm1BZGRyZXNzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgovLy8gVHJhbnNmZXJzICRGTE9XIGZyb20gdGhlIHNpZ25lcidzIGFjY291bnQgQ2FkZW5jZSBGbG93IGJhbGFuY2UgdG8gdGhlIHJlY2lwaWVudCdzIGhleC1lbmNvZGVkIEVWTSBhZGRyZXNzLgovLy8gTm90ZSB0aGF0IGEgQ09BIG11c3QgaGF2ZSBhICRGTE9XIGJhbGFuY2UgaW4gRVZNIGJlZm9yZSB0cmFuc2ZlcnJpbmcgdmFsdWUgdG8gYW5vdGhlciBFVk0gYWRkcmVzcy4KLy8vCnRyYW5zYWN0aW9uKHJlY2lwaWVudEVWTUFkZHJlc3NIZXg6IFN0cmluZywgYW1vdW50OiBVRml4NjQsIGdhc0xpbWl0OiBVSW50NjQpIHsKCiAgICBsZXQgY29hOiBhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3M6IEVWTS5FVk1BZGRyZXNzCiAgICB2YXIgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiAvc3RvcmFnZS9ldm0pID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC1FVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpLCB0bzogL3N0b3JhZ2UvZXZtKQogICAgICAgIH0KICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5XaXRoZHJhdywgRVZNLkNhbGwpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIGJyaWRnZWQgYWNjb3VudCIpCgogICAgICAgIGxldCB2YXVsdFJlZiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KAogICAgICAgICAgICAgICAgZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWZlcmVuY2UgdG8gdGhlIG93bmVyJ3MgVmF1bHQhIikKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkgYXMhIEBGbG93VG9rZW4uVmF1bHQKCiAgICAgICAgc2VsZi5yZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudEVWTUFkZHJlc3NIZXgpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5jb2EuZGVwb3NpdChmcm9tOiA8LXNlbGYuc2VudFZhdWx0KQogICAgICAgIAogICAgICAgIGxldCB2YWx1ZUJhbGFuY2UgPSBFVk0uQmFsYW5jZShhdHRvZmxvdzogMCkKICAgICAgICB2YWx1ZUJhbGFuY2Uuc2V0RkxPVyhmbG93OiBhbW91bnQpCiAgICAgICAgbGV0IHR4UmVzdWx0ID0gc2VsZi5jb2EuY2FsbCgKICAgICAgICAgICAgdG86IHNlbGYucmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZGF0YTogW10sCiAgICAgICAgICAgIGdhc0xpbWl0OiBnYXNMaW1pdCwKICAgICAgICAgICAgdmFsdWU6IHZhbHVlQmFsYW5jZQogICAgICAgICkKICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgIHR4UmVzdWx0LnN0YXR1cyA9PSBFVk0uU3RhdHVzLmZhaWxlZCB8fCB0eFJlc3VsdC5zdGF0dXMgPT0gRVZNLlN0YXR1cy5zdWNjZXNzZnVsLAogICAgICAgICAgICBtZXNzYWdlOiAiZXZtX2Vycm9yPSIuY29uY2F0KHR4UmVzdWx0LmVycm9yTWVzc2FnZSkuY29uY2F0KCJcbiIpCiAgICAgICAgKQoKICAgIH0KfQ==", + "withdrawCoa": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgd2l0aGRyYXdDb2EgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0LCBhZGRyZXNzOiBBZGRyZXNzKSB7CiAgICBsZXQgc2VudFZhdWx0OiBARmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgRVZNLldpdGhkcmF3KSAmQWNjb3VudCkgewogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uV2l0aGRyYXcpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oCiAgICAgICAgICAgIGZyb206IC9zdG9yYWdlL2V2bQogICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVmZXJlbmNlIHRvIHRoZSBDT0EhIikKICAgICAgICBsZXQgd2l0aGRyYXdCYWxhbmNlID0gRVZNLkJhbGFuY2UoYXR0b2Zsb3c6IDApCiAgICAgICAgd2l0aGRyYXdCYWxhbmNlLnNldEZMT1coZmxvdzogYW1vdW50KQogICAgICAgIHNlbGYuc2VudFZhdWx0IDwtIGNvYS53aXRoZHJhdyhiYWxhbmNlOiB3aXRoZHJhd0JhbGFuY2UpIGFzISBARmxvd1Rva2VuLlZhdWx0CiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgbGV0IHJlY2VpdmVyID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHJlY2VpdmVyLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgIH0KfQo=" }, "hybridCustody": { - "addNFTCollectionToDelegator": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBhZGRORlRDb2xsZWN0aW9uVG9EZWxlZ2F0b3IgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uKHBhcmVudDogQWRkcmVzcywgaXNQdWJsaWM6IEJvb2wpIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IG8gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5Pd25lcikgJkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygib3duZWQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIGxldCBjaGlsZDogJkh5YnJpZEN1c3RvZHkuQ2hpbGRBY2NvdW50ID0gby5ib3Jyb3dDaGlsZEFjY291bnQocGFyZW50OiBwYXJlbnQpCiAgICAgICAgICAgID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogICAgICAgIGxldCBjYXAgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFeGFtcGxlTkZULkNvbGxlY3Rpb24+KEV4YW1wbGVORlQuQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgIG8uYWRkQ2FwYWJpbGl0eVRvRGVsZWdhdG9yKHBhcmVudDogcGFyZW50LCBjYXA6IGNhcCwgaXNQdWJsaWM6IGlzUHVibGljKQogICAgfQp9", - "batchBridgeChildNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZUNoaWxkTkZURnJvbUV2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZHM6IFtVSW50MjU2XSkgewogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAgLy8gbGV0IHJlY2VpdmVyID0gZ2V0QWNjb3VudChjaGlsZCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIC8vICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBSZWNlaXZlciBmcm9tIHJlY2lwaWVudCdzIHB1YmxpYyBjYXBhYmlsaXR5IHBhdGgiKQoKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwdWJsaWNDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgICAgIGFzc2VydChwdWJsaWNDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHVibGljIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICAgIAogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAgICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0gPC0gY29hLndpdGhkcmF3TkZUKAogICAgICAgICAgICAgICAgdHlwZTogbmZ0VHlwZSwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKCiAgICAgICAgICAgIGFzc2VydCgKICAgICAgICAgICAgICAgIG5mdC5nZXRUeXBlKCkgPT0gbmZ0VHlwZSwKICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQobmZ0VHlwZS5pZGVudGlmaWVyKQogICAgICAgICAgICAgICAgICAgIC5jb25jYXQoIiwgcmVjZWl2ZWQ6ICIpLmNvbmNhdChuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgICAgIH0KICAgICAgCgogICAgICAgIAogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "batchBridgeChildNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZUNoaWxkTkZUVG9Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZHM6IFtVSW50NjRdKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIGxldCBpZCA9IGlkc1swXQogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgICAgIGxldCBjaGlsZE5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1jaGlsZE5mdCkKICAgICAgICAvLyAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMCAqIFVGaXg2NChpZHMubGVuZ3RoKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBjb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LSBuZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgZm9yIG5mdElkIGluIGlkcyB7CiAgICAgICAgICAgIGlmIGlkeCA9PSAwIHsKICAgICAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBuZnRJZCkKICAgICAgICAgICAgY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQoKfQo=", - "batchBridgeChildNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaEJyaWRnZUNoaWxkTkZUVG9Fdm1BZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZHM6IFtVSW50NjRdLCByZWNpcGllbnQ6U3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICAvLyBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIGxldCBpZCA9IGlkc1swXQogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgICAgIGxldCBjaGlsZE5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1jaGlsZE5mdCkKICAgICAgICAvLyAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMCAqIFVGaXg2NChpZHMubGVuZ3RoKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgICAgICAgICAKICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCgogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LSBuZnQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIGZvciBuZnRJZCBpbiBpZHMgewogICAgICAgICAgICBpZiBpZHggPT0gMCB7CiAgICAgICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICAgICAgdG9rZW46IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogbmZ0SWQpLAogICAgICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICB9CiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2NvcGVkUHJvdmlkZXIKICAgIH0KCn0K", - "batchSendChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaFNlbmRDaGlsZE5GVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAKICAgIGxldCByZWNlaXZlckFjYyA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgcmVjZWl2ZXJBY2MuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQogICAgCiAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgIH0KICB9Cn0=", - "batchSendChildNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaFNlbmRDaGlsZE5GVFRvQ2hpbGQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKCiAgICBsZXQgcmVjZWl2ZXJDaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogcmVjZWl2ZXIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICBsZXQgcmVjZWl2ZXJDb250cm9sbGVySWQgPSByZWNlaXZlckNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIGxldCByZWNlaXZlckNhcCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiByZWNlaXZlckNvbnRyb2xsZXJJZCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpIAogICAgbGV0IHB1YmxpY0NhcCA9IHJlY2VpdmVyQ2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGxldCByZWNlaXZlclJlZiA9ICBwdWJsaWNDYXAuYm9ycm93KCkhCgogICAgZm9yIGlkIGluIGlkcyB7CiAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", - "batchTransferChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaFRyYW5zZmVyQ2hpbGRORlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCAgaWRzOiBbVUludDY0XSApIHsKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgbGV0IHJlY2VpdmVyUmVmID0gIHNpZ25lci5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgZm9yIGlkIGluIGlkcyB7ICAgICAKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgIH0KICB9Cn0=", - "batchTransferNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBiYXRjaFRyYW5zZmVyTkZUVG9DaGlsZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCnRyYW5zYWN0aW9uKGNoaWxkQWRkcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZHM6IFtVSW50NjRdKSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBjaGlsZENhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CiAgICBhc3NlcnQoY2hpbGRDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIGxldCBwYXJlbnRSZWYgPSAgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oZnJvbSA6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSEKICAgIGxldCBjaGlsZFJlZiA9IGNoaWxkQ2FwLmJvcnJvdygpIQoKICAgIGZvciBpZCBpbiBpZHMgeyAgICAgCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBuZnQgPC0gcGFyZW50UmVmIS53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkhCiAgICAgICAgY2hpbGRSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", - "bridgeChildFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VDaGlsZEZURnJvbUV2bSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5Cgp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGFtb3VudDogVUludDI1NikgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIENvcHlWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUsIFVucHVibGlzaENhcGFiaWxpdHkpICZBY2NvdW50KSB7CiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKICAgICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgIAogICAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIGxldCBzY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICkKCiAgICAgICAgbGV0IHZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9IDwtIGNvYS53aXRoZHJhd1Rva2VucygKICAgICAgICAgICAgdHlwZTogdmF1bHRUeXBlLAogICAgICAgICAgICBhbW91bnQ6IGFtb3VudCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCgogICAgICAgIHZhdWx0UmVmLmRlcG9zaXQoZnJvbTogPC0gdmF1bHQpCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQoKfQog", - "bridgeChildFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VDaGlsZEZUVG9Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBhbW91bnQ6IFVGaXg2NCkgewoKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICAgIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKCiAgICAgICAgdmF1bHQuZGVwb3NpdChmcm9tOiA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IGN1cnJlbnRTdG9yYWdlVXNhZ2UgLSB3aXRoZHJhd25TdG9yYWdlVXNhZ2UKICAgICAgICAgICAgKSAqIDEuMTAKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQoKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgIHNlbGYuY29hLmRlcG9zaXRUb2tlbnMoCiAgICAgICAgICAgIHZhdWx0OiA8LXNlbGYucGF5bWVudFZhdWx0LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKICAgIH0KfQog", - "bridgeChildFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VDaGlsZEZUVG9Fdm1BZGRyZXNzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBjaGlsZDogQWRkcmVzcywgYW1vdW50OiBVRml4NjQsIHJlY2lwaWVudDpTdHJpbmcpIHsKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICAgIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIC8vIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIC8vIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKICAgICAgICBsZXQgdmF1bHQgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgIAogICAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCB2YXVsdFJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CgogICAgICAgIHZhdWx0LmRlcG9zaXQoZnJvbTogPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpKQogICAgICAgICAgIC8vIFdpdGhkcmF3IHRoZSByZXF1ZXN0ZWQgYmFsYW5jZSAmIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgYnJpZGdlIGZlZSBiYXNlZCBvbiBzdG9yYWdlIHVzYWdlCiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5wYXltZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICAvLyBBcHByb3hpbWF0ZSB0aGUgYnJpZGdlIGZlZSBiYXNlZCBvbiB0aGUgZGlmZmVyZW5jZSBpbiBzdG9yYWdlIHVzYWdlIHdpdGggc29tZSBidWZmZXIKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICkKCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlVG9rZW5zVG9FVk0oCiAgICAgICAgICAgIHZhdWx0OiA8LXNlbGYucGF5bWVudFZhdWx0LAogICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0KIA==", - "bridgeChildNFTFromEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VDaGlsZE5GVEZyb21Fdm0gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5Cgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZDogVUludDI1NikgewogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBsZXQgY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAgLy8gbGV0IHJlY2VpdmVyID0gZ2V0QWNjb3VudChjaGlsZCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIC8vICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBSZWNlaXZlciBmcm9tIHJlY2lwaWVudCdzIHB1YmxpYyBjYXBhYmlsaXR5IHBhdGgiKQoKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwdWJsaWNDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgICAgIGFzc2VydChwdWJsaWNDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHVibGljIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICAgIAogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZShieXRlczogMCkKCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfSA8LSBjb2Eud2l0aGRyYXdORlQoCiAgICAgICAgICAgIHR5cGU6IG5mdFR5cGUsCiAgICAgICAgICAgIGlkOiBpZCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCgogICAgICAgIGFzc2VydCgKICAgICAgICAgICAgbmZ0LmdldFR5cGUoKSA9PSBuZnRUeXBlLAogICAgICAgICAgICBtZXNzYWdlOiAiQnJpZGdlZCBuZnQgdHlwZSBtaXNtYXRjaCAtIHJlcXVlc3d0ZWQ6ICIuY29uY2F0KG5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgIC5jb25jYXQoIiwgcmVjZWl2ZWQ6ICIpLmNvbmNhdChuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgKQoKICAgICAgICBjb2xsZWN0aW9uUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQp9Cg==", - "bridgeChildNFTToEvm": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VDaGlsZE5GVFRvRXZtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50NjQsIGNoaWxkOiBBZGRyZXNzKSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgoKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKICAgICAgICBsZXQgY2hpbGROZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBjb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtY2hpbGROZnQpCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiBjdXJyZW50U3RvcmFnZVVzYWdlIC0gd2l0aGRyYXduU3RvcmFnZVVzYWdlCiAgICAgICAgICAgICkgKiAxLjEwCiAgICAgICAKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIC8vIEV4ZWN1dGUgdGhlIGJyaWRnZQogICAgICAgIHNlbGYuY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgIG5mdDogPC1zZWxmLm5mdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "bridgeChildNFTToEvmAddress": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBicmlkZ2VDaGlsZE5GVFRvRXZtQWRkcmVzcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCgoKdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nLCBjaGlsZDogQWRkcmVzcywgaWQ6IFVJbnQ2NCwgcmVjaXBpZW50OlN0cmluZykgewogICAgCiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgLy8gbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKICAgIAogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgLy8gc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAvLyAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICAgICAgbGV0IGNoaWxkTmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LWNoaWxkTmZ0KQogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLm5mdCA8LSBjb2xsZWN0aW9uLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogY3VycmVudFN0b3JhZ2VVc2FnZSAtIHdpdGhkcmF3blN0b3JhZ2VVc2FnZQogICAgICAgICAgICApICogMS4xMAogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICAvLyBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgIC8vICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgLy8gICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICAvLyApCiAgICAgICAgbGV0IHJlY2lwaWVudEVWTUFkZHJlc3MgPSBFVk0uYWRkcmVzc0Zyb21TdHJpbmcocmVjaXBpZW50KQogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LXNlbGYubmZ0LAogICAgICAgICAgICB0bzogcmVjaXBpZW50RVZNQWRkcmVzcywKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", - "checkChildLinkedCollections": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja0NoaWxkTGlua2VkQ29sbGVjdGlvbnMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MsIGlkZW50aWZpZXI6IFN0cmluZyk6IEJvb2wgewogICAgbGV0IG1nciA9IGdldEF1dGhBY2NvdW50KHBhcmVudCkuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IG1hbmFnZXIgZnJvbSBwYXJlbnQiKQogICAgbGV0IGNoaWxkID0gbWdyLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJDaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogICAgbGV0IGNhcCA9IGNoaWxkLmdldENhcGFiaWxpdHkoCiAgICAgICAgICAgIHBhdGg6IFByaXZhdGVQYXRoKGlkZW50aWZpZXI6IGlkZW50aWZpZXIpISBhcyBDYXBhYmlsaXR5UGF0aCwKICAgICAgICAgICAgdHlwZTogVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKICAgICAgICApIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlciwgTm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4/CgogICAgCiAgICByZXR1cm4gY2FwICE9IG5pbAp9ICAgCiAgICA=", - "checkChildLinkedVaults": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja0NoaWxkTGlua2VkVmF1bHRzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MsIGNoaWxkOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcpOiBCb29sIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkKICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgCiAgbGV0IHByb3ZpZGVyVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCgogIGxldCBhZGRyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihjaGlsZCkKICAKICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQoKICBsZXQgY29udHJvbGxlcnMgPSBhZGRyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGgpISkKICB2YXIgZmxhZyA9IGZhbHNlCgogIGZvciBjIGluIGNvbnRyb2xsZXJzIHsKICAgIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgY29udGludWUKICAgIH0KCiAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgIGNvbnRpbnVlCiAgICAgIH0KCiAgICAgIGZsYWcgPSB0cnVlCiAgICAgIGJyZWFrCiAgICB9CiAgfQoKICByZXR1cm4gZmxhZwp9IAogICAg", - "checkChildRecieveVaults": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja0NoaWxkUmVjaWV2ZVZhdWx0cyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcywgcGF0aDogU3RyaW5nKTogQm9vbCB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpCiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogIAogIGxldCByZWNlaXZlclR5cGUgPSBUeXBlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KCkKCiAgbGV0IGFkZHIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkKQogIAogIGxldCBjaGlsZEFjY3QgPSBtYW5hZ2VyLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogIGxldCBjb250cm9sbGVycyA9IGFkZHIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aCkhKQogIHZhciBmbGFnID0gZmFsc2UKCiAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHJlY2VpdmVyVHlwZSkgewogICAgICBjb250aW51ZQogICAgfQoKICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiByZWNlaXZlclR5cGUpIHsKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+IAoKICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgZmxhZyA9IHRydWUKICAgICAgYnJlYWsKICAgIH0KICB9CgogIHJldHVybiBmbGFnCn0gCiAgICA=", - "editChildAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBlZGl0Q2hpbGRBY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgp0cmFuc2FjdGlvbihjaGlsZEFkZHJlc3M6IEFkZHJlc3MsIG5hbWU6IFN0cmluZywgZGVzY3JpcHRpb246IFN0cmluZywgdGh1bWJuYWlsOiBTdHJpbmcpIHsKICAgIHByZXBhcmUoYWNjdDogQXV0aEFjY291bnQpIHsKICAgICAgICBsZXQgbSA9IGFjY3QuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIGxldCBkID0gTWV0YWRhdGFWaWV3cy5EaXNwbGF5KAogICAgICAgICAgICBuYW1lOiBuYW1lLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb24sCiAgICAgICAgICAgIHRodW1ibmFpbDogTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6IHRodW1ibmFpbCkKICAgICAgICApCgogICAgICAgIG0uc2V0Q2hpbGRBY2NvdW50RGlzcGxheShhZGRyZXNzOiBjaGlsZEFkZHJlc3MsIGQpCiAgICB9Cn0=", - "getAccessibleChildAccountNFTs": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2Nlc3NpYmxlQ2hpbGRBY2NvdW50TkZUcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IEFueVN0cnVjdCB7CiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKCiAgdmFyIHR5cGVJZHNXaXRoUHJvdmlkZXIgPSB7fSBhcyB7QWRkcmVzczogW1N0cmluZ119CgogIC8vIEFkZHJlc3MgLT4gbmZ0IFVVSUQgLT4gRGlzcGxheQogIHZhciBuZnRWaWV3cyA9IHt9IGFzIHtBZGRyZXNzOiB7VUludDY0OiBNZXRhZGF0YVZpZXdzLkRpc3BsYXl9fSAKCiAgCiAgbGV0IHByb3ZpZGVyVHlwZSA9IFR5cGU8Q2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oKQogIGxldCBjb2xsZWN0aW9uVHlwZTogVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigpCgogIC8vIEl0ZXJhdGUgdGhyb3VnaCBjaGlsZCBhY2NvdW50cwogIGZvciBhZGRyZXNzIGluIG1hbmFnZXIuZ2V0Q2hpbGRBZGRyZXNzZXMoKSB7CiAgICBsZXQgYWNjdCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oYWRkcmVzcykKICAgIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgICBsZXQgdmlld3M6IHtVSW50NjQ6IE1ldGFkYXRhVmlld3MuRGlzcGxheX0gPSB7fQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgIAogICAgLy8gdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CgogICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGghKQogICAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKICAgIAoKICAgIC8vIGl0ZXJhdGUgc3RvcmFnZSwgY2hlY2sgaWYgdHlwZUlkc1dpdGhQcm92aWRlciBjb250YWlucyB0aGUgdHlwZUlkLCBpZiBzbywgYWRkIHRvIHZpZXdzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICAgIAogICAgICBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyW2FkZHJlc3NdID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHRydWUKICAgICAgfQoKICAgICAgZm9yIGtleSBpbiB0eXBlSWRzV2l0aFByb3ZpZGVyLmtleXMgewogICAgICAgIGZvciBpZHgsIHZhbHVlIGluIHR5cGVJZHNXaXRoUHJvdmlkZXJba2V5XSEgewogICAgICAgICAgbGV0IHZhbHVlID0gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldIQoKICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZS5pZGVudGlmaWVyIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIHR5cGUuaXNJbnN0YW5jZShjb2xsZWN0aW9uVHlwZSkgewogICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgSURzICYgcmVzb2x2ZSB0aGUgdmlldwogICAgICAgICAgICAgIGZvciBpZCBpbiBjb2xsZWN0aW9uLmdldElEcygpIHsKICAgICAgICAgICAgICAgIGxldCBuZnQgPSBjb2xsZWN0aW9uLmJvcnJvd05GVChpZCkhCiAgICAgICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogaWQpIQogICAgICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSByZXNvbHZlci5yZXNvbHZlVmlldyhUeXBlPE1ldGFkYXRhVmlld3MuRGlzcGxheT4oKSkhIGFzPyBNZXRhZGF0YVZpZXdzLkRpc3BsYXkgewogICAgICAgICAgICAgICAgICB2aWV3cy5pbnNlcnQoa2V5OiBuZnQudXVpZCwgZGlzcGxheSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCiAgICBuZnRWaWV3c1thZGRyZXNzXSA9IHZpZXdzCiAgfQogIHJldHVybiBuZnRWaWV3cwp9", - "getAccessibleCoinInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2Nlc3NpYmxlQ29pbkluZm8gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgVG9rZW5JbmZvIHsKYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKYWNjZXNzKGFsbCkgbGV0IGJhbGFuY2U6IFVGaXg2NAoKaW5pdChpZDogU3RyaW5nLCBiYWxhbmNlOiBVRml4NjQpIHsKICAgIHNlbGYuaWQgPSBpZAogICAgc2VsZi5iYWxhbmNlID0gYmFsYW5jZQp9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGRBZGRyZXNzOiBBZGRyZXNzKTogW1Rva2VuSW5mb10gewogICAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKICAgIHZhciB0eXBlSWRzV2l0aFByb3ZpZGVyOiB7QWRkcmVzczogW1N0cmluZ119ID0ge30KCiAgICB2YXIgY29pbkluZm9MaXN0OiBbVG9rZW5JbmZvXSA9IFtdCiAgICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigpCiAgICBsZXQgdmF1bHRUeXBlOiBUeXBlID0gVHlwZTxAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigpCgogICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCgogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+IChjaGlsZEFkZHJlc3MpCiAgICBsZXQgZm91bmRUeXBlczogW1N0cmluZ10gPSBbXQogICAgbGV0IHZhdWx0QmFsYW5jZXM6IHtTdHJpbmc6IFVGaXg2NH0gPSB7fQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAvLyBnZXQgYWxsIHByaXZhdGUgcGF0aHMKICAgIGFjY3Quc3RvcmFnZS5mb3JFYWNoU3RvcmVkKGZ1biAocGF0aDogU3RvcmFnZVBhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgICAgICAvLyBDaGVjayB3aGljaCBwcml2YXRlIHBhdGhzIGhhdmUgTkZUIFByb3ZpZGVyIEFORCBjYW4gYmUgYm9ycm93ZWQKICAgICAgICBpZiAhdHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSl7CiAgICAgICAgICAgIHJldHVybiB0cnVlCiAgICAgICAgfQoKICAgICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGgpCgogICAgICAgIC8vIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgICAgICAgICBpZiAhYy5ib3Jyb3dUeXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgICAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZQogICAgfSkKICAgIHR5cGVJZHNXaXRoUHJvdmlkZXJbY2hpbGRBZGRyZXNzXSA9IGZvdW5kVHlwZXMKCiAgICAKICAgIGFjY3Quc3RvcmFnZS5mb3JFYWNoU3RvcmVkKGZ1biAocGF0aDogU3RvcmFnZVBhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgIAogICAgaWYgdHlwZUlkc1dpdGhQcm92aWRlcltjaGlsZEFkZHJlc3NdID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICBmb3Iga2V5IGluIHR5cGVJZHNXaXRoUHJvdmlkZXIua2V5cyB7CiAgICAgICAgZm9yIGlkeCwgdmFsdWUgaW4gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldISB7CiAgICAgICAgICAgIGxldCB2YWx1ZSA9IHR5cGVJZHNXaXRoUHJvdmlkZXJba2V5XSEKCiAgICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZS5pZGVudGlmaWVyIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiB0eXBlLmlzSW5zdGFuY2UodmF1bHRUeXBlKSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgbGV0IHZhdWx0ID0gYWNjdC5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KGZyb206IHBhdGgpIHsgCiAgICAgICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgSURzICYgcmVzb2x2ZSB0aGUgdmlldwogICAgICAgICAgICAgICAgICAgIGNvaW5JbmZvTGlzdC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgVG9rZW5JbmZvKGlkOiB0eXBlLmlkZW50aWZpZXIsIGJhbGFuY2U6IHZhdWx0LmJhbGFuY2UpKQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB9CiAgICAgIHJldHVybiB0cnVlCiAgICB9KQoKICAgIAogICAgcmV0dXJuIGNvaW5JbmZvTGlzdAp9", - "getAccessibleCollectionAndIdsDisplay": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBY2Nlc3NpYmxlQ29sbGVjdGlvbkFuZElkc0Rpc3BsYXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKCmFjY2VzcyhhbGwpIHN0cnVjdCBDb2xsZWN0aW9uRGlzcGxheSB7CiAgYWNjZXNzKGFsbCkgbGV0IG5hbWU6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCBzcXVhcmVJbWFnZTogTWV0YWRhdGFWaWV3cy5NZWRpYQoKICBpbml0KG5hbWU6IFN0cmluZywgc3F1YXJlSW1hZ2U6IE1ldGFkYXRhVmlld3MuTWVkaWEpIHsKICAgIHNlbGYubmFtZSA9IG5hbWUKICAgIHNlbGYuc3F1YXJlSW1hZ2UgPSBzcXVhcmVJbWFnZQogIH0KfQoKYWNjZXNzKGFsbCkgc3RydWN0IE5GVENvbGxlY3Rpb24gewogIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogIGFjY2VzcyhhbGwpIGxldCBpZExpc3Q6IFtVSW50NjRdCgogIGluaXQoaWQ6U3RyaW5nLCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8sIGlkTGlzdDogW1VJbnQ2NF0pIHsKICAgIHNlbGYuaWQgPSBpZAogICAgc2VsZi5kaXNwbGF5ID0gZGlzcGxheQogICAgc2VsZi5pZExpc3QgPSBpZExpc3QKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBnZXREaXNwbGF5KGFkZHJlc3M6IEFkZHJlc3MsIHBhdGg6IFN0b3JhZ2VQYXRoKTogQ29sbGVjdGlvbkRpc3BsYXk/IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oYWRkcmVzcykKCiAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgLy8gbGV0IHZhdWx0VHlwZSA9IFR5cGU8QHtGdW5naWJsZVRva2VuLlZhdWx0fT4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPCZ7Vmlld1Jlc29sdmVyLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICB2YXIgaXRlbTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gIG5pbAoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC5zdG9yYWdlLnR5cGUoYXQ6IHBhdGgpIHsKICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgIGlmIGlzTkZUQ29sbGVjdGlvbiAmJiBjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihmcm9tOiBwYXRoKSB7CiAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKCiAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvUmFyaWJsZU5GVENvbGxlY3Rpb24gCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKSEKICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgICAgICAgICAgaXRlbSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UKICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0KICAgIH0KCiAgcmV0dXJuIGl0ZW0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZEFjY291bnQ6IEFkZHJlc3MpOiBbTkZUQ29sbGVjdGlvbl0gewogICAgbGV0IG1hbmFnZXIgPSAgZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKCiAgICAvLyBBZGRyZXNzIC0+IENvbGxlY3Rpb24gVHlwZSAtPiBvd25lZE5GVHMKCiAgICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigpCiAgICBsZXQgY29sbGVjdGlvblR5cGU6IFR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQoKICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBjaGlsZCBhY2NvdW50cwoKICAgIGxldCBhY2N0ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihjaGlsZEFjY291bnQpCiAgICBsZXQgZm91bmRUeXBlczogW1R5cGVdID0gW10KICAgIGxldCBuZnRzOiB7U3RyaW5nOiBbVUludDY0XX0gPSB7fQogICAgbGV0IGNvbGxlY3Rpb25MaXN0OiBbTkZUQ29sbGVjdGlvbl0gPSBbXQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFjY291bnQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgICAgIC8vIENoZWNrIHdoaWNoIHByaXZhdGUgcGF0aHMgaGF2ZSBORlQgUHJvdmlkZXIgQU5EIGNhbiBiZSBib3Jyb3dlZAogICAgICAgIC8vIGlmICF0eXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKXsKICAgICAgICAvLyAgICAgcmV0dXJuIHRydWUKICAgICAgICAvLyB9CiAgICAgICAgLy8gaWYgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KHBhdGg6IHBhdGgsIHR5cGU6IFR5cGU8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKSkgewogICAgICAgIC8vICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgIC8vICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAvLyAgICAgICAgIC8vIGlmIHRoaXMgaXNuJ3QgYSBwcm92aWRlciBjYXBhYmlsaXR5LCBleGl0IHRoZSBhY2NvdW50IGl0ZXJhdGlvbiBmdW5jdGlvbiBmb3IgdGhpcyBwYXRoCiAgICAgICAgLy8gICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIC8vICAgICB9CiAgICAgICAgLy8gICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkpCiAgICAgICAgLy8gfQoKICAgICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGghKQogICAgICAgIGZvciBjIGluIGNvbnRyb2xsZXJzIHsKICAgICAgICAgIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KCiAgICAgICAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKSkKICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgLy8gaXRlcmF0ZSBzdG9yYWdlLCBjaGVjayBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyIGNvbnRhaW5zIHRoZSB0eXBlSWQsIGlmIHNvLCBhZGQgdG8gbmZ0cwogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewoKICAgICAgICBpZiBmb3VuZFR5cGVzID09IG5pbCB7CiAgICAgICAgICAgIHJldHVybiB0cnVlCiAgICAgICAgfQoKICAgICAgICBmb3IgaWR4LCB2YWx1ZSBpbiBmb3VuZFR5cGVzIHsKICAgICAgICAgICAgbGV0IHZhbHVlID0gZm91bmRUeXBlcyEKCiAgICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaWYgdHlwZS5pc0luc3RhbmNlKGNvbGxlY3Rpb25UeXBlKSB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIGxldCBjb2xsZWN0aW9uID0gYWNjdC5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGZyb206IHBhdGgpIHsgCiAgICAgICAgICAgICAgICAgICAgbmZ0cy5pbnNlcnQoa2V5OiB0eXBlLmlkZW50aWZpZXIsIGNvbGxlY3Rpb24uZ2V0SURzKCkpCiAgICAgICAgICAgICAgICAgICAgY29sbGVjdGlvbkxpc3QuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgTkZUQ29sbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHR5cGUuaWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheTogZ2V0RGlzcGxheShhZGRyZXNzOiBjaGlsZEFjY291bnQsIHBhdGg6IHBhdGgpLAogICAgICAgICAgICAgICAgICAgICAgICBpZExpc3Q6IGNvbGxlY3Rpb24uZ2V0SURzKCkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlCiAgICB9KQoKICAgIHJldHVybiBjb2xsZWN0aW9uTGlzdAp9", - "getChildAccountAllowTypes": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDaGlsZEFjY291bnRBbGxvd1R5cGVzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MpOiBbU3RyaW5nXT8gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcikKICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHIpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKCiAgCiAgbGV0IG5mdFByb3ZpZGVyVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgbGV0IGZ0UHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKCiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCiAgbGV0IGFkZHIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkKQogIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAvLyBnZXQgYWxsIHByaXZhdGUgcGF0aHMKCiAgZm9yIHMgaW4gYWRkci5zdG9yYWdlLnN0b3JhZ2VQYXRocyB7CiAgICBsZXQgY29udHJvbGxlcnMgPSBhZGRyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHMpCiAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgIC8vIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgLy8gICBjb250aW51ZQogICAgICAvLyB9CgogICAgICBpZiBsZXQgbmZ0Q2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogbmZ0UHJvdmlkZXJUeXBlKSB7CiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gbmZ0Q2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKG5mdENhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICBicmVhawogICAgICB9CiAgICAgIGlmIGxldCBmdENhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogYy5jYXBhYmlsaXR5SUQsIHR5cGU6IGZ0UHJvdmlkZXJUeXBlKSB7CiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gZnRDYXAgYXMhIENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGZ0Q2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgIH0KICB9CgogIHJldHVybiBmb3VuZFR5cGVzCn0=", - "getChildAccountFTCapabilities": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDaGlsZEFjY291bnRGVENhcGFiaWxpdGllcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKLy8gVGhpcyBzY3JpcHQgaXRlcmF0ZXMgdGhyb3VnaCBhIHBhcmVudCdzIGNoaWxkIGFjY291bnRzLCAKLy8gaWRlbnRpZmllcyBwcml2YXRlIHBhdGhzIHdpdGggYW4gYWNjZXNzaWJsZSBGdW5naWJsZVRva2VuLlByb3ZpZGVyLCBhbmQgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZyB0eXBlSWRzCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOkFueVN0cnVjdCB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKQogIGxldCBtYW5hZ2VyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcikuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKICB2YXIgdHlwZUlkc1dpdGhQcm92aWRlcjoge0FkZHJlc3M6IFtTdHJpbmddfSA9IHt9CiAgCiAgbGV0IHByb3ZpZGVyVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCgogIC8vIEl0ZXJhdGUgdGhyb3VnaCBjaGlsZCBhY2NvdW50cwogIGZvciBhZGRyZXNzIGluIG1hbmFnZXIuZ2V0Q2hpbGRBZGRyZXNzZXMoKSB7CiAgICBsZXQgYWRkciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oYWRkcmVzcykKICAgIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAvLyBnZXQgYWxsIHByaXZhdGUgcGF0aHMKCiAgICBmb3IgcyBpbiBhZGRyLnN0b3JhZ2Uuc3RvcmFnZVBhdGhzIHsKICAgICAgZm9yIGMgaW4gYWRkci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBzKSB7CiAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSl7CiAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgaWYgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogYy5jYXBhYmlsaXR5SUQsIHR5cGU6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgfQoKICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICAgIHR5cGVJZHNXaXRoUHJvdmlkZXJbYWRkcmVzc10gPSBmb3VuZFR5cGVzCiAgICAgICAgICBicmVhawogICAgICAgIH0KICAgICAgfQogICAgfSAgICAgIAogIH0KCiAgcmV0dXJuIHR5cGVJZHNXaXRoUHJvdmlkZXIKfQog", - "getChildAccountMeta": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDaGlsZEFjY291bnRNZXRhIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MpOiB7QWRkcmVzczogQW55U3RydWN0fSB7CiAgICBsZXQgYWNjdCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkKICAgIGxldCBtID0gYWNjdC5zdG9yYWdlLmJvcnJvdzwmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKCiAgICBpZiBtID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHt9CiAgICB9IGVsc2UgewogICAgICAgIHZhciBkYXRhOiB7QWRkcmVzczogQW55U3RydWN0fSA9IHt9CiAgICAgICAgZm9yIGFkZHJlc3MgaW4gbT8uZ2V0Q2hpbGRBZGRyZXNzZXMoKSEgewogICAgICAgICAgICBsZXQgYyA9IG0/LmdldENoaWxkQWNjb3VudERpc3BsYXkoYWRkcmVzczogYWRkcmVzcykgCiAgICAgICAgICAgIGRhdGEuaW5zZXJ0KGtleTogYWRkcmVzcywgYykKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGRhdGEKICAgIH0KfQ==", - "getChildAddresses": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRDaGlsZEFkZHJlc3NlcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzKTogW0FkZHJlc3NdIHsKICAgIGxldCBhY2N0ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KQogICAgbGV0IG1hbmFnZXIgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vdCBmb3VuZCIpCiAgICByZXR1cm4gIG1hbmFnZXIuZ2V0Q2hpbGRBZGRyZXNzZXMoKQp9", - "getExamplenftCollectionFromDelegator": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRFeGFtcGxlbmZ0Q29sbGVjdGlvbkZyb21EZWxlZ2F0b3IgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweDI4YjgxZjU4ODBkNTU1NGUKCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MsIGlzUHVibGljOiBCb29sKSB7CiAgICBsZXQgbSA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm90IGZvdW5kIikKICAgIGxldCBhY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKQogICAgICAgID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCBpbiBtYW5hZ2VyIikKCiAgICBsZXQgdCA9IFR5cGU8Q2FwYWJpbGl0eTwmRXhhbXBsZU5GVC5Db2xsZWN0aW9uPj4oKQoKICAgIGxldCBjYXAgPSAoaXNQdWJsaWMgPyBhY2N0LmdldFB1YmxpY0NhcEZyb21EZWxlZ2F0b3IodHlwZTogdCkgOiBhY2N0LmdldFByaXZhdGVDYXBGcm9tRGVsZWdhdG9yKHR5cGU6IHQpKQogICAgICAgID8/IHBhbmljKCJjYXBhYmlsaXR5IG5vdCBmb3VuZCIpCiAgICAKICAgIGFzc2VydChjYXAuZ2V0VHlwZSgpID09IHQsIG1lc3NhZ2U6ICJtaXNtYXRjaGVkIGNhcGFiaWxpdHkgdHlwZXMiKQp9", - "publishToParent": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBwdWJsaXNoVG9QYXJlbnQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgI2FsbG93QWNjb3VudExpbmtpbmcKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmFjdG9yeSBmcm9tIDB4Q2FwYWJpbGl0eUZhY3RvcnkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKaW1wb3J0IENhcGFiaWxpdHlEZWxlZ2F0b3IgZnJvbSAweENhcGFiaWxpdHlEZWxlZ2F0b3IKCnRyYW5zYWN0aW9uKHBhcmVudDogQWRkcmVzcywgZmFjdG9yeUFkZHJlc3M6IEFkZHJlc3MsIGZpbHRlckFkZHJlc3M6IEFkZHJlc3MpIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIGxldCBvd25lZCA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk93bmVyKSAmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJvd25lZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogICAgICAgIGxldCBmYWN0b3J5ID0gZ2V0QWNjb3VudChmYWN0b3J5QWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwmQ2FwYWJpbGl0eUZhY3RvcnkuTWFuYWdlcj4oQ2FwYWJpbGl0eUZhY3RvcnkuUHVibGljUGF0aCkKICAgICAgICBhc3NlcnQoZmFjdG9yeS5jaGVjaygpLCBtZXNzYWdlOiAiZmFjdG9yeSBhZGRyZXNzIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgbGV0IGZpbHRlciA9IGdldEFjY291bnQoZmlsdGVyQWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwme0NhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyfT4oQ2FwYWJpbGl0eUZpbHRlci5QdWJsaWNQYXRoKQogICAgICAgIGFzc2VydChmaWx0ZXIuY2hlY2soKSwgbWVzc2FnZTogImNhcGFiaWxpdHkgZmlsdGVyIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgb3duZWQucHVibGlzaFRvUGFyZW50KHBhcmVudEFkZHJlc3M6IHBhcmVudCwgZmFjdG9yeTogZmFjdG9yeSwgZmlsdGVyOiBmaWx0ZXIpCiAgICB9Cn0=", - "redeemAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICByZWRlZW1BY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweFZpZXdSZXNvbHZlcgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCnRyYW5zYWN0aW9uKGNoaWxkQWRkcmVzczogQWRkcmVzcywgZmlsdGVyQWRkcmVzczogQWRkcmVzcz8sIGZpbHRlclBhdGg6IFB1YmxpY1BhdGg/KSB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzLCBJbmJveCkgJkFjY291bnQpIHsKICAgICAgICB2YXIgZmlsdGVyOiBDYXBhYmlsaXR5PCZ7Q2FwYWJpbGl0eUZpbHRlci5GaWx0ZXJ9Pj8gPSBuaWwKICAgICAgICBpZiBmaWx0ZXJBZGRyZXNzICE9IG5pbCAmJiBmaWx0ZXJQYXRoICE9IG5pbCB7CiAgICAgICAgICAgIGZpbHRlciA9IGdldEFjY291bnQoZmlsdGVyQWRkcmVzcyEpLmNhcGFiaWxpdGllcy5nZXQ8JntDYXBhYmlsaXR5RmlsdGVyLkZpbHRlcn0+KGZpbHRlclBhdGghKQogICAgICAgIH0KCiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IG0gPC0gSHlicmlkQ3VzdG9keS5jcmVhdGVNYW5hZ2VyKGZpbHRlcjogZmlsdGVyKQogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSg8LSBtLCB0bzogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCgogICAgICAgICAgICBmb3IgYyBpbiBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSB7CiAgICAgICAgICAgICAgICBjLmRlbGV0ZSgpCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnVucHVibGlzaChIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWNQYXRoKQoKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWN9PihIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCksCiAgICAgICAgICAgICAgICBhdDogSHlicmlkQ3VzdG9keS5NYW5hZ2VyUHVibGljUGF0aAogICAgICAgICAgICApCgogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZ7SHlicmlkQ3VzdG9keS5NYW5hZ2VyUHJpdmF0ZSwgSHlicmlkQ3VzdG9keS5NYW5hZ2VyUHVibGljfT4oSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgfQoKICAgICAgICBsZXQgaW5ib3hOYW1lID0gSHlicmlkQ3VzdG9keS5nZXRDaGlsZEFjY291bnRJZGVudGlmaWVyKGFjY3QuYWRkcmVzcykKICAgICAgICBsZXQgY2FwID0gYWNjdC5pbmJveC5jbGFpbTxhdXRoKEh5YnJpZEN1c3RvZHkuQ2hpbGQpICZ7SHlicmlkQ3VzdG9keS5BY2NvdW50UHJpdmF0ZSwgSHlicmlkQ3VzdG9keS5BY2NvdW50UHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJ9PihpbmJveE5hbWUsIHByb3ZpZGVyOiBjaGlsZEFkZHJlc3MpCiAgICAgICAgICAgID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IGNhcCBub3QgZm91bmQiKQoKICAgICAgICBsZXQgbWFuYWdlciA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vIGZvdW5kIikKCiAgICAgICAgbWFuYWdlci5hZGRBY2NvdW50KGNhcDogY2FwKQogICAgfQp9", - "sendChildFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kQ2hpbGRGVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKLy8gSEMtb3duZWQgaW1wb3J0cwppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihhZGRyZXNzOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgcGF0aDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCApIHsKCiAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICBsZXQgdmF1bHREYXRhOiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YQoKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAKICAgICAgc2VsZi52YXVsdERhdGEgPSA8VG9rZW4+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/CiAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8VG9rZW4+ICIpCgogICAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHNlbGYudmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAKICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgc2VsZi5wYXltZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgfQoKICBleGVjdXRlIHsKCiAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2VpdmVyKQoKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnQuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihzZWxmLnZhdWx0RGF0YS5yZWNlaXZlclBhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5wYXltZW50VmF1bHQpCiAgfQp9CiA=", - "sendChildFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kQ2hpbGRGVFRvQ2hpbGQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCi8vIEhDLW93bmVkIGltcG9ydHMKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcmVjZWl2ZXI6IEFkZHJlc3MsIHBhdGg6IFN0cmluZywgYW1vdW50OiBVRml4NjQgKSB7CgogIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICBsZXQgcGF5bWVudFZhdWx0OiBAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9CiAgbGV0IHZhdWx0RGF0YTogRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGEKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgCiAgICAgIHNlbGYudmF1bHREYXRhID0gPFRva2VuPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKSkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPwogICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPFRva2VuPiAiKQoKICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBzZWxmLnZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgCiAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgCiAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgIHNlbGYucGF5bWVudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogIH0KCiAgZXhlY3V0ZSB7CgogICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudChyZWNlaXZlcikKCiAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgUmVjZWl2ZXIKICAgICAgbGV0IHJlY2VpdmVyUmVmID0gcmVjaXBpZW50LmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oc2VsZi52YXVsdERhdGEucmVjZWl2ZXJQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQoKICAgICAgLy8gRGVwb3NpdCB0aGUgd2l0aGRyYXduIHRva2VucyBpbiB0aGUgcmVjaXBpZW50J3MgcmVjZWl2ZXIKICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYucGF5bWVudFZhdWx0KQogIH0KfQog", - "sendChildFTWithParent": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kQ2hpbGRGVFdpdGhQYXJlbnQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQsIHRvOiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcykgewoKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJyZWQKICAgIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCB2YXVsdERhdGE6IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhCgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIHNlbGYudmF1bHREYXRhID0gRXhhbXBsZVRva2VuLnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/CiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIEV4YW1wbGVUb2tlbiIpCgogICAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHNlbGYudmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgLy8gR2V0IHRoZSByZWNpcGllbnQncyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50ID0gZ2V0QWNjb3VudCh0bykKCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHNlbGYudmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhLmJvcnJvdygpCgkJCT8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQoKICAgICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLnBheW1lbnRWYXVsdCkKICAgIH0KfQog", - "sendChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kQ2hpbGRORlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKCnRyYW5zYWN0aW9uKGNoaWxkQWRkcjogQWRkcmVzcywgcmVjZWl2ZXI6IEFkZHJlc3MsIGlkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCkgewogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGRBZGRyKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgIGxldCByZWNlaXZlckFjYyA9IGdldEFjY291bnQocmVjZWl2ZXIpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgcmVjZWl2ZXJBY2MuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQogICAgCiAgICByZWNlaXZlclJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgfQp9", - "sendChildNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kQ2hpbGRORlRUb0NoaWxkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKCiAgICBsZXQgcmVjZWl2ZXJDaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogcmVjZWl2ZXIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICBsZXQgcmVjZWl2ZXJDb250cm9sbGVySWQgPSByZWNlaXZlckNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIGxldCByZWNlaXZlckNhcCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiByZWNlaXZlckNvbnRyb2xsZXJJZCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpIAogICAgbGV0IHB1YmxpY0NhcCA9IHJlY2VpdmVyQ2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGxldCByZWNlaXZlclJlZiA9ICBwdWJsaWNDYXAuYm9ycm93KCkhCgogICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgCiAgICByZWNlaXZlclJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgfQp9", - "setupOwnedAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZXR1cE93bmVkQWNjb3VudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAjYWxsb3dBY2NvdW50TGlua2luZwoKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5Ci8vLyBUaGlzIHRyYW5zYWN0aW9uIGNvbmZpZ3VyZXMgYW4gT3duZWRBY2NvdW50IGluIHRoZSBzaWduZXIgaWYgbmVlZGVkIGFuZCBjb25maWd1cmVzIGl0cyBDYXBhYmlsaXRpZXMgcGVyCi8vLyBIeWJyaWRDdXN0b2R5J3MgaW50ZW5kZWQgZGVzaWduLiBJZiBEaXNwbGF5IHZhbHVlcyBhcmUgc3BlY2lmaWVkIChhcyByZWNvbW1lbmRlZCksIHRoZXkgd2lsbCBiZSBzZXQgb24gdGhlCi8vLyBzaWduZXIncyBPd25lZEFjY291bnQuCi8vLwp0cmFuc2FjdGlvbihuYW1lOiBTdHJpbmc/LCBkZXNjOiBTdHJpbmc/LCB0aHVtYm5haWxVUkw6IFN0cmluZz8pIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGFjY3RDYXAgPSBhY2N0LmNhcGFiaWxpdGllcy5hY2NvdW50Lmlzc3VlPGF1dGgoU3RvcmFnZSwgQ29udHJhY3RzLCBLZXlzLCBJbmJveCwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oKQoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudD4oZnJvbTogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IG93bmVkQWNjb3VudCA8LSBIeWJyaWRDdXN0b2R5LmNyZWF0ZU93bmVkQWNjb3VudChhY2N0OiBhY2N0Q2FwKQogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSg8LW93bmVkQWNjb3VudCwgdG86IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgfQoKICAgICAgICBsZXQgb3duZWQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5Pd25lcikgJkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygib3duZWQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIC8vIFNldCB0aGUgZGlzcGxheSBtZXRhZGF0YSBmb3IgdGhlIE93bmVkQWNjb3VudAogICAgICAgIGlmIG5hbWUgIT0gbmlsICYmIGRlc2MgIT0gbmlsICYmIHRodW1ibmFpbFVSTCAhPSBuaWwgewogICAgICAgICAgICBsZXQgdGh1bWJuYWlsID0gTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6IHRodW1ibmFpbFVSTCEpCiAgICAgICAgICAgIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5EaXNwbGF5KG5hbWU6IG5hbWUhLCBkZXNjcmlwdGlvbjogZGVzYyEsIHRodW1ibmFpbDogdGh1bWJuYWlsKQogICAgICAgICAgICBvd25lZC5zZXREaXNwbGF5KGRpc3BsYXkpCiAgICAgICAgfQoKICAgICAgICAvLyBjaGVjayB0aGF0IHBhdGhzIGFyZSBhbGwgY29uZmlndXJlZCBwcm9wZXJseQogICAgICAgIGZvciBjIGluIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkgewogICAgICAgICAgICBjLmRlbGV0ZSgpCiAgICAgICAgfQoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Cb3Jyb3dhYmxlQWNjb3VudCwgSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0h5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJ9PihIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljUGF0aAogICAgICAgICkKICAgIH0KfQog", - "setupOwnedAccountAndPublishToParent": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZXR1cE93bmVkQWNjb3VudEFuZFB1Ymxpc2hUb1BhcmVudCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAjYWxsb3dBY2NvdW50TGlua2luZwoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhDYXBhYmlsaXR5RmFjdG9yeQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgppbXBvcnQgQ2FwYWJpbGl0eURlbGVnYXRvciBmcm9tIDB4Q2FwYWJpbGl0eURlbGVnYXRvcgovLy8gVGhpcyB0cmFuc2FjdGlvbiBjb25maWd1cmVzIGFuIE93bmVkQWNjb3VudCBpbiB0aGUgc2lnbmVyIGlmIG5lZWRlZCwgYW5kIHByb2NlZWRzIHRvIGNyZWF0ZSBhIENoaWxkQWNjb3VudCAKLy8vIHVzaW5nIENhcGFiaWxpdHlGYWN0b3J5Lk1hbmFnZXIgYW5kIENhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyIENhcGFiaWxpdGllcyBmcm9tIHRoZSBnaXZlbiBhZGRyZXNzZXMuIEEKLy8vIENhcGFiaWxpdHkgb24gdGhlIENoaWxkQWNjb3VudCBpcyB0aGVuIHB1Ymxpc2hlZCB0byB0aGUgc3BlY2lmaWVkIHBhcmVudCBhY2NvdW50LiAKLy8vCnRyYW5zYWN0aW9uKAogICAgcGFyZW50OiBBZGRyZXNzLAogICAgZmFjdG9yeUFkZHJlc3M6IEFkZHJlc3MsCiAgICBmaWx0ZXJBZGRyZXNzOiBBZGRyZXNzLAogICAgbmFtZTogU3RyaW5nLAogICAgZGVzYzogU3RyaW5nLAogICAgdGh1bWJuYWlsVVJMOiBTdHJpbmcKKSB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIC8vIENvbmZpZ3VyZSBPd25lZEFjY291bnQgaWYgaXQgZG9lc24ndCBleGlzdAogICAgICAgIGlmIGFjY3Quc3RvcmFnZS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICB2YXIgYWNjdENhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmFjY291bnQuaXNzdWU8YXV0aChTdG9yYWdlLCBDb250cmFjdHMsIEtleXMsIEluYm94LCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PigpCiAgICAgICAgICAgIGxldCBvd25lZEFjY291bnQgPC0gSHlicmlkQ3VzdG9keS5jcmVhdGVPd25lZEFjY291bnQoYWNjdDogYWNjdENhcCkKICAgICAgICAgICAgYWNjdC5zdG9yYWdlLnNhdmUoPC1vd25lZEFjY291bnQsIHRvOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgIH0KCiAgICAgICAgZm9yIGMgaW4gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSB7CiAgICAgICAgICAgIGMuZGVsZXRlKCkKICAgICAgICB9CgoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Cb3Jyb3dhYmxlQWNjb3VudCwgSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0h5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJ9PihIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50UHVibGljUGF0aAogICAgICAgICkKCiAgICAgICAgbGV0IG93bmVkID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuT3duZXIpICZIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudD4oZnJvbTogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm93bmVkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgICAvLyBTZXQgdGhlIGRpc3BsYXkgbWV0YWRhdGEgZm9yIHRoZSBPd25lZEFjY291bnQKICAgICAgICBpZiBuYW1lICE9IG5pbCAmJiBkZXNjICE9IG5pbCAmJiB0aHVtYm5haWxVUkwgIT0gbmlsIHsKICAgICAgICAgICAgbGV0IHRodW1ibmFpbCA9IE1ldGFkYXRhVmlld3MuSFRUUEZpbGUodXJsOiB0aHVtYm5haWxVUkwhKQogICAgICAgICAgICBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuRGlzcGxheShuYW1lOiBuYW1lISwgZGVzY3JpcHRpb246IGRlc2MhLCB0aHVtYm5haWw6IHRodW1ibmFpbCkKICAgICAgICAgICAgb3duZWQuc2V0RGlzcGxheShkaXNwbGF5KQogICAgICAgIH0KCiAgICAgICAgLy8gR2V0IENhcGFiaWxpdHlGYWN0b3J5ICYgQ2FwYWJpbGl0eUZpbHRlciBDYXBhYmlsaXRpZXMKICAgICAgICBsZXQgZmFjdG9yeSA9IGdldEFjY291bnQoZmFjdG9yeUFkZHJlc3MpLmNhcGFiaWxpdGllcy5nZXQ8JkNhcGFiaWxpdHlGYWN0b3J5Lk1hbmFnZXI+KENhcGFiaWxpdHlGYWN0b3J5LlB1YmxpY1BhdGgpCiAgICAgICAgYXNzZXJ0KGZhY3RvcnkuY2hlY2soKSwgbWVzc2FnZTogImZhY3RvcnkgYWRkcmVzcyBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSIpCgogICAgICAgIGxldCBmaWx0ZXIgPSBnZXRBY2NvdW50KGZpbHRlckFkZHJlc3MpLmNhcGFiaWxpdGllcy5nZXQ8JntDYXBhYmlsaXR5RmlsdGVyLkZpbHRlcn0+KENhcGFiaWxpdHlGaWx0ZXIuUHVibGljUGF0aCkKICAgICAgICBhc3NlcnQoZmlsdGVyLmNoZWNrKCksIG1lc3NhZ2U6ICJjYXBhYmlsaXR5IGZpbHRlciBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSIpCgogICAgICAgIC8vIEZpbmFsbHkgcHVibGlzaCBhIENoaWxkQWNjb3VudCBjYXBhYmlsaXR5IG9uIHRoZSBzaWduaW5nIGFjY291bnQgdG8gdGhlIHNwZWNpZmllZCBwYXJlbnQKICAgICAgICBvd25lZC5wdWJsaXNoVG9QYXJlbnQocGFyZW50QWRkcmVzczogcGFyZW50LCBmYWN0b3J5OiBmYWN0b3J5LCBmaWx0ZXI6IGZpbHRlcikKICAgIH0KfQ==", - "transferChildFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2ZlckNoaWxkRlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCi8vIEhDLW93bmVkIGltcG9ydHMKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+CgoKCnRyYW5zYWN0aW9uKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGg6IFN0cmluZywgYW1vdW50OiBVRml4NjQgKSB7CgogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IHZhdWx0RGF0YSA9IDxUb2tlbj4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8VG9rZW4+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgcGF5bWVudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgbGV0IHJlY2VpdmVyUmVmID0gIHNpZ25lci5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCiAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtcGF5bWVudFZhdWx0KQogIH0KfQ==", - "transferChildNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2ZlckNoaWxkTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKCnRyYW5zYWN0aW9uKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGg6IFN0cmluZywgIGlkOiBVSW50NjQgKSB7CgogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgc2lnbmVyLmNhcGFiaWxpdGllcy5nZXQ8JntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", - "transferNFTToChild": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0cmFuc2Zlck5GVFRvQ2hpbGQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Cgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIGlkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCkgewogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGRBZGRyKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPiAucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IGNoaWxkQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGFzc2VydChjaGlsZENhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgbGV0IHBhcmVudFJlZiA9ICBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pihmcm9tIDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpIQogICAgbGV0IGNoaWxkUmVmID0gY2hpbGRDYXAuYm9ycm93KCkhCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgbmZ0IDwtIHBhcmVudFJlZiEud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpIQogICAgCiAgICBjaGlsZFJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgfQp9", - "unlinkChildAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB1bmxpbmtDaGlsZEFjY291bnQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKCnRyYW5zYWN0aW9uKGNoaWxkOiBBZGRyZXNzKSB7CiAgICBwcmVwYXJlIChhY2N0OiBBdXRoQWNjb3VudCkgewogICAgICAgIGxldCBtYW5hZ2VyID0gYWNjdC5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vdCBmb3VuZCIpCiAgICAgICAgbWFuYWdlci5yZW1vdmVDaGlsZChhZGRyOiBjaGlsZCkKICAgIH0KfQ==" + "addNFTCollectionToDelegator": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYWRkTkZUQ29sbGVjdGlvblRvRGVsZWdhdG9yIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24ocGFyZW50OiBBZGRyZXNzLCBpc1B1YmxpYzogQm9vbCkgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgbyA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk93bmVyKSAmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJvd25lZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgbGV0IGNoaWxkOiAmSHlicmlkQ3VzdG9keS5DaGlsZEFjY291bnQgPSBvLmJvcnJvd0NoaWxkQWNjb3VudChwYXJlbnQ6IHBhcmVudCkKICAgICAgICAgICAgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkV4YW1wbGVORlQuQ29sbGVjdGlvbj4oRXhhbXBsZU5GVC5Db2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgby5hZGRDYXBhYmlsaXR5VG9EZWxlZ2F0b3IocGFyZW50OiBwYXJlbnQsIGNhcDogY2FwLCBpc1B1YmxpYzogaXNQdWJsaWMpCiAgICB9Cn0=", + "batchBridgeChildNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VDaGlsZE5GVEZyb21Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkczogW1VJbnQyNTZdKSB7CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgICAvLyBsZXQgcmVjZWl2ZXIgPSBnZXRBY2NvdW50KGNoaWxkKS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFJlY2VpdmVyIGZyb20gcmVjaXBpZW50J3MgcHVibGljIGNhcGFiaWxpdHkgcGF0aCIpCgoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHB1YmxpY0NhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CiAgICAgICAgYXNzZXJ0KHB1YmxpY0NhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwdWJsaWMgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHVibGljQ2FwLmJvcnJvdygpIQoKICAgICAgCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKSArIChGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUgKiBVRml4NjQoaWRzLmxlbmd0aCkpCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgbGV0IHNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKCiAgICAgICAgZm9yIGlkIGluIGlkcyB7CiAgICAgICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIGNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgICAgIHR5cGU6IG5mdFR5cGUsCiAgICAgICAgICAgICAgICBpZDogaWQsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCgogICAgICAgICAgICBhc3NlcnQoCiAgICAgICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IG5mdFR5cGUsCiAgICAgICAgICAgICAgICBtZXNzYWdlOiAiQnJpZGdlZCBuZnQgdHlwZSBtaXNtYXRjaCAtIHJlcXVlc3d0ZWQ6ICIuY29uY2F0KG5mdFR5cGUuaWRlbnRpZmllcikKICAgICAgICAgICAgICAgICAgICAuY29uY2F0KCIsIHJlY2VpdmVkOiAiKS5jb25jYXQobmZ0LmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgICApCgogICAgICAgICAgICBjb2xsZWN0aW9uUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICAgICAgICB9CiAgICAgIAoKICAgICAgICAKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "batchBridgeChildNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VDaGlsZE5GVFRvRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkczogW1VJbnQ2NF0pIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgbGV0IGlkID0gaWRzWzBdCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICAgICAgbGV0IGNoaWxkTmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LWNoaWxkTmZ0KQogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiA0MDBfMDAwCiAgICAgICAgICAgICkgKyAoRmxvd0VWTUJyaWRnZUNvbmZpZy5iYXNlRmVlICogVUZpeDY0KGlkcy5sZW5ndGgpKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQoKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBjb2EuZGVwb3NpdE5GVCgKICAgICAgICAgICAgbmZ0OiA8LSBuZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgZm9yIG5mdElkIGluIGlkcyB7CiAgICAgICAgICAgIGlmIGlkeCA9PSAwIHsKICAgICAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBuZnRJZCkKICAgICAgICAgICAgY29hLmRlcG9zaXRORlQoCiAgICAgICAgICAgICAgICBuZnQ6IDwtIG5mdCwKICAgICAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzY29wZWRQcm92aWRlcgogICAgfQoKfQo=", + "batchBridgeChildNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hCcmlkZ2VDaGlsZE5GVFRvRXZtQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkczogW1VJbnQ2NF0sIHJlY2lwaWVudDpTdHJpbmcpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIC8vIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAvLyAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgTkZUIHR5cGUgZnJvbSB0aGUgcHJvdmlkZWQgaWRlbnRpZmllcgogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBORlQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIE5GVCBjb2xsZWN0aW9uLCBjb25maWd1cmluZyBpZiBuZWNlc3NhcnkKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIGxldCBjb2xsZWN0aW9uID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgTkZUIENvbGxlY3Rpb24iKQoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgbGV0IGlkID0gaWRzWzBdCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICAgICAgbGV0IGNoaWxkTmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgY29sbGVjdGlvbi5kZXBvc2l0KHRva2VuOiA8LWNoaWxkTmZ0KQogICAgICAgIC8vIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID1GbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IDQwMF8wMDAKICAgICAgICAgICAgKSArIChGbG93RVZNQnJpZGdlQ29uZmlnLmJhc2VGZWUgKiBVRml4NjQoaWRzLmxlbmd0aCkpCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBsZXQgc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICAgICAgKQogICAgICAgICAgICAKICAgICAgICBsZXQgcmVjaXBpZW50RVZNQWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhyZWNpcGllbnQpCgogICAgICAgIEZsb3dFVk1CcmlkZ2UuYnJpZGdlTkZUVG9FVk0oCiAgICAgICAgICAgIHRva2VuOiA8LSBuZnQsCiAgICAgICAgICAgIHRvOiByZWNpcGllbnRFVk1BZGRyZXNzLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICB2YXIgaWR4ID0gMAogICAgICAgIGZvciBuZnRJZCBpbiBpZHMgewogICAgICAgICAgICBpZiBpZHggPT0gMCB7CiAgICAgICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CgogICAgICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICAgICAgdG9rZW46IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogbmZ0SWQpLAogICAgICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICAgICApCiAgICAgICAgICAgIGlkeCA9IGlkeCArIDEKICAgICAgICB9CiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2NvcGVkUHJvdmlkZXIKICAgIH0KCn0K", + "batchSendChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hTZW5kQ2hpbGRORlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgIAogICAgbGV0IHJlY2VpdmVyQWNjID0gZ2V0QWNjb3VudChyZWNlaXZlcikKICAgIGxldCByZWNlaXZlclJlZiA9ICByZWNlaXZlckFjYy5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCiAgICAKICAgIGZvciBpZCBpbiBpZHMgewogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", + "batchSendChildNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hTZW5kQ2hpbGRORlRUb0NoaWxkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgoKICAgIGxldCByZWNlaXZlckNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiByZWNlaXZlcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIGxldCByZWNlaXZlckNvbnRyb2xsZXJJZCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgbGV0IHJlY2VpdmVyQ2FwID0gcmVjZWl2ZXJDaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IHJlY2VpdmVyQ29udHJvbGxlcklkLCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikgCiAgICBsZXQgcHVibGljQ2FwID0gcmVjZWl2ZXJDYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgbGV0IHJlY2VpdmVyUmVmID0gIHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICBmb3IgaWQgaW4gaWRzIHsKICAgICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICByZWNlaXZlclJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgICB9CiAgfQp9", + "batchTransferChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hUcmFuc2ZlckNoaWxkTkZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsICBpZHM6IFtVSW50NjRdICkgewoKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgc2lnbmVyLmNhcGFiaWxpdGllcy5nZXQ8JntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKCiAgICBmb3IgaWQgaW4gaWRzIHsgICAgIAogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgfQogIH0KfQ==", + "batchTransferNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYmF0Y2hUcmFuc2Zlck5GVFRvQ2hpbGQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCA8TkZUPiBmcm9tIDxORlRBZGRyZXNzPgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkczogW1VJbnQ2NF0pIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IGNoaWxkQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4KICAgIGFzc2VydChjaGlsZENhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIAogICAgbGV0IHBhcmVudFJlZiA9ICBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pihmcm9tIDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpIQogICAgbGV0IGNoaWxkUmVmID0gY2hpbGRDYXAuYm9ycm93KCkhCgogICAgZm9yIGlkIGluIGlkcyB7ICAgICAKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IG5mdCA8LSBwYXJlbnRSZWYhLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKSEKICAgICAgICBjaGlsZFJlZi5kZXBvc2l0KHRva2VuOiA8LSBuZnQpCiAgICB9CiAgfQp9", + "bridgeChildFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRGVEZyb21Fdm0gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCBjaGlsZDogQWRkcmVzcywgYW1vdW50OiBVSW50MjU2KSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgQ29weVZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSwgVW5wdWJsaXNoQ2FwYWJpbGl0eSkgJkFjY291bnQpIHsKICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCgogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgZnVuZHMgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIEZ1bmdpYmxlVG9rZW4gVmF1bHQKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgIAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgbGV0IHNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQoKICAgICAgICBsZXQgdmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0gPC0gY29hLndpdGhkcmF3VG9rZW5zKAogICAgICAgICAgICB0eXBlOiB2YXVsdFR5cGUsCiAgICAgICAgICAgIGFtb3VudDogYW1vdW50LAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKCiAgICAgICAgdmF1bHRSZWYuZGVwb3NpdChmcm9tOiA8LSB2YXVsdCkKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cgp9CiA=", + "bridgeChildFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRGVFRvRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKCgp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGFtb3VudDogVUZpeDY0KSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogICAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAvLyBQYXJzZSB0aGUgVmF1bHQgaWRlbnRpZmllciBpbnRvIGl0cyBjb21wb25lbnRzCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQoKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCiAgICAgICAgbGV0IHZhdWx0ID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAKICAgICAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAoKICAgICAgICB2YXVsdC5kZXBvc2l0KGZyb206IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KSkKICAgICAgICAgICAvLyBXaXRoZHJhdyB0aGUgcmVxdWVzdGVkIGJhbGFuY2UgJiBjYWxjdWxhdGUgdGhlIGFwcHJveGltYXRlIGJyaWRnZSBmZWUgYmFzZWQgb24gc3RvcmFnZSB1c2FnZQogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYucGF5bWVudFZhdWx0IDwtIHZhdWx0LndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgICAgIGxldCB3aXRoZHJhd25TdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgLy8gQXBwcm94aW1hdGUgdGhlIGJyaWRnZSBmZWUgYmFzZWQgb24gdGhlIGRpZmZlcmVuY2UgaW4gc3RvcmFnZSB1c2FnZSB3aXRoIHNvbWUgYnVmZmVyCiAgICAgICAgbGV0IGFwcHJveEZlZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5jYWxjdWxhdGVCcmlkZ2VGZWUoCiAgICAgICAgICAgICAgICBieXRlczogNDAwXzAwMAogICAgICAgICAgICApCgogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICBmaWx0ZXJzOiBbIHByb3ZpZGVyRmlsdGVyIF0sCiAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICkKCiAgICB9CgogICAgZXhlY3V0ZSB7CgogICAgICAgICBzZWxmLmNvYS5kZXBvc2l0VG9rZW5zKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnBheW1lbnRWYXVsdCwKICAgICAgICAgICAgZmVlUHJvdmlkZXI6ICZzZWxmLnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKICAgICAgICAvLyBEZXN0cm95IHRoZSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCiAgICB9Cn0KIA==", + "bridgeChildFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRGVFRvRXZtQWRkcmVzcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBhbW91bnQ6IFVGaXg2NCwgcmVjaXBpZW50OlN0cmluZykgewogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogICAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgLy8gbGV0IGNvYTogYXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQKICAgIGxldCBzY29wZWRQcm92aWRlcjogQFNjb3BlZEZUUHJvdmlkZXJzLlNjb3BlZEZUUHJvdmlkZXIKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlLCBDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKCiAgICAgICAgLyogLS0tIFJlZmVyZW5jZSB0aGUgc2lnbmVyJ3MgQ2FkZW5jZU93bmVkQWNjb3VudCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3MgQ09BCiAgICAgICAgLy8gc2VsZi5jb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAvLyAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQogICAgICAgIGxldCB2YXVsdCA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KAogICAgICAgICAgICAgICAgZnJvbTogdmF1bHREYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKCiAgICAgICAgdmF1bHQuZGVwb3NpdChmcm9tOiA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICAgICAgICAgLy8gV2l0aGRyYXcgdGhlIHJlcXVlc3RlZCBiYWxhbmNlICYgY2FsY3VsYXRlIHRoZSBhcHByb3hpbWF0ZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHN0b3JhZ2UgdXNhZ2UKICAgICAgICBsZXQgY3VycmVudFN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIC8vIEFwcHJveGltYXRlIHRoZSBicmlkZ2UgZmVlIGJhc2VkIG9uIHRoZSBkaWZmZXJlbmNlIGluIHN0b3JhZ2UgdXNhZ2Ugd2l0aCBzb21lIGJ1ZmZlcgogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IDQwMF8wMDAKICAgICAgICAgICAgKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCgogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCkKICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZVRva2Vuc1RvRVZNKAogICAgICAgICAgICB2YXVsdDogPC1zZWxmLnBheW1lbnRWYXVsdCwKICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9CiA=", + "bridgeChildNFTFromEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRORlRGcm9tRXZtIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgppbXBvcnQgU2NvcGVkRlRQcm92aWRlcnMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBFVk0gZnJvbSAweEVWTQoKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4Rmxvd0VWTUJyaWRnZQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgY2hpbGQ6IEFkZHJlc3MsIGlkOiBVSW50MjU2KSB7CiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlLCBDb3B5VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlLCBVbnB1Ymxpc2hDYXBhYmlsaXR5KSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIGxldCBjb2EgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChFVk0uQnJpZGdlKSAmRVZNLkNhZGVuY2VPd25lZEFjY291bnQ+KGZyb206IC9zdG9yYWdlL2V2bSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgQ09BIGZyb20gcHJvdmlkZWQgZ2F0ZXdheSBhZGRyZXNzIikKICAgICAgICAKICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgICAvLyBsZXQgcmVjZWl2ZXIgPSBnZXRBY2NvdW50KGNoaWxkKS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgLy8gICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFJlY2VpdmVyIGZyb20gcmVjaXBpZW50J3MgcHVibGljIGNhcGFiaWxpdHkgcGF0aCIpCgoKCiAgICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQogICAgICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAgIAogICAgICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICAgICAgbGV0IHB1YmxpY0NhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CiAgICAgICAgYXNzZXJ0KHB1YmxpY0NhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwdWJsaWMgY2FwYWJpbGl0eSIpCiAgICAgICAgCiAgICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHVibGljQ2FwLmJvcnJvdygpIQoKICAgICAgCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKGJ5dGVzOiA0MDBfMDAwKQoKICAgICAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigKICAgICAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgICAgICkKICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZShwcm92aWRlckNhcCwgdG86IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpCiAgICAgICAgfQogICAgICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwQ29weSA9IHNpZ25lci5zdG9yYWdlLmNvcHk8Q2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+PigKICAgICAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgICAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIoYXBwcm94RmVlKQogICAgICAgIGxldCBzY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCgogICAgICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9IDwtIGNvYS53aXRoZHJhd05GVCgKICAgICAgICAgICAgdHlwZTogbmZ0VHlwZSwKICAgICAgICAgICAgaWQ6IGlkLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNjb3BlZFByb3ZpZGVyIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfQogICAgICAgICkKCiAgICAgICAgYXNzZXJ0KAogICAgICAgICAgICBuZnQuZ2V0VHlwZSgpID09IG5mdFR5cGUsCiAgICAgICAgICAgIG1lc3NhZ2U6ICJCcmlkZ2VkIG5mdCB0eXBlIG1pc21hdGNoIC0gcmVxdWVzd3RlZDogIi5jb25jYXQobmZ0VHlwZS5pZGVudGlmaWVyKQogICAgICAgICAgICAgICAgLmNvbmNhdCgiLCByZWNlaXZlZDogIikuY29uY2F0KG5mdC5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICApCgogICAgICAgIGNvbGxlY3Rpb25SZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogICAgICAgIC8vIERlc3Ryb3kgdGhlIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBkZXN0cm95IHNjb3BlZFByb3ZpZGVyCiAgICB9Cn0K", + "bridgeChildNFTToEvm": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRORlRUb0V2bSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgRVZNIGZyb20gMHhFVk0KCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweEZsb3dFVk1CcmlkZ2UKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCgoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgaWQ6IFVJbnQ2NCwgY2hpbGQ6IEFkZHJlc3MpIHsKICAgIAogICAgbGV0IG5mdDogQHtOb25GdW5naWJsZVRva2VuLk5GVH0KICAgIGxldCBjb2E6IGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50CiAgICBsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCiAgICAKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKENvcHlWYWx1ZSwgQm9ycm93VmFsdWUsIElzc3VlU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyLCBQdWJsaXNoQ2FwYWJpbGl0eSwgU2F2ZVZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIC8qIC0tLSBSZWZlcmVuY2UgdGhlIHNpZ25lcidzIENhZGVuY2VPd25lZEFjY291bnQgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBCb3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHNpZ25lcidzIENPQQogICAgICAgIHNlbGYuY29hID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRVZNLkJyaWRnZSkgJkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihmcm9tOiAvc3RvcmFnZS9ldm0pCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IENPQSBmcm9tIHByb3ZpZGVkIGdhdGV3YXkgYWRkcmVzcyIpCiAgICAgICAgCiAgICAgICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgICAvLyBDb25zdHJ1Y3QgdGhlIE5GVCB0eXBlIGZyb20gdGhlIHByb3ZpZGVkIGlkZW50aWZpZXIKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIAogICAgICAgIC8qIC0tLSBSZXRyaWV2ZSB0aGUgTkZUIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlQgY29sbGVjdGlvbiwgY29uZmlndXJpbmcgaWYgbmVjZXNzYXJ5CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oCiAgICAgICAgICAgICAgICBmcm9tOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIE5GVCBDb2xsZWN0aW9uIikKCgogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQogICAgICAgIGxldCBjaGlsZE5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgICAgIGNvbGxlY3Rpb24uZGVwb3NpdCh0b2tlbjogPC1jaGlsZE5mdCkKICAgICAgICAvLyAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGN1cnJlbnRTdG9yYWdlVXNhZ2UgPSBzaWduZXIuc3RvcmFnZS51c2VkCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBsZXQgd2l0aGRyYXduU3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIGxldCBhcHByb3hGZWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuY2FsY3VsYXRlQnJpZGdlRmVlKAogICAgICAgICAgICAgICAgYnl0ZXM6IDQwMF8wMDAKICAgICAgICAgICAgKQogICAgICAgCiAgICAgICAgLyogLS0tIENvbmZpZ3VyZSBhIFNjb3BlZEZUUHJvdmlkZXIgLS0tICovCiAgICAgICAgLy8KICAgICAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UudHlwZShhdDogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICAgICApCiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgICAgIH0KICAgICAgICAvLyBDb3B5IHRoZSBzdG9yZWQgUHJvdmlkZXIgY2FwYWJpbGl0eSBhbmQgY3JlYXRlIGEgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkludmFsaWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBmb3VuZCBpbiBzdG9yYWdlLiIpCiAgICAgICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKGFwcHJveEZlZSkKICAgICAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgICAgICBwcm92aWRlcjogcHJvdmlkZXJDYXBDb3B5LAogICAgICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgICAgICkKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAvLyBFeGVjdXRlIHRoZSBicmlkZ2UKICAgICAgICBzZWxmLmNvYS5kZXBvc2l0TkZUKAogICAgICAgICAgICBuZnQ6IDwtc2VsZi5uZnQsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "bridgeChildNFTToEvmAddress": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYnJpZGdlQ2hpbGRORlRUb0V2bUFkZHJlc3MgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKaW1wb3J0IEVWTSBmcm9tIDB4RVZNCgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlIGZyb20gMHhGbG93RVZNQnJpZGdlCmltcG9ydCBGbG93RVZNQnJpZGdlQ29uZmlnIGZyb20gMHhGbG93RVZNQnJpZGdlCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIGNoaWxkOiBBZGRyZXNzLCBpZDogVUludDY0LCByZWNpcGllbnQ6U3RyaW5nKSB7CiAgICAKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICAvLyBsZXQgY29hOiBhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudAogICAgbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgogICAgCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICAvKiAtLS0gUmVmZXJlbmNlIHRoZSBzaWduZXIncyBDYWRlbmNlT3duZWRBY2NvdW50IC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBzaWduZXIncyBDT0EKICAgICAgICAvLyBzZWxmLmNvYSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEVWTS5CcmlkZ2UpICZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oZnJvbTogL3N0b3JhZ2UvZXZtKQogICAgICAgIC8vICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBDT0EgZnJvbSBwcm92aWRlZCBnYXRld2F5IGFkZHJlc3MiKQogICAgICAgIAogICAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgICAgICAKICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBORlQgdHlwZSBmcm9tIHRoZSBwcm92aWRlZCBpZGVudGlmaWVyCiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIE5GVCAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUIGNvbGxlY3Rpb24sIGNvbmZpZ3VyaW5nIGlmIG5lY2Vzc2FyeQogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBORlQgQ29sbGVjdGlvbiIpCgoKICAgICAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgICAgICAKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKICAgICAgICBsZXQgY2hpbGROZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgICAgICBjb2xsZWN0aW9uLmRlcG9zaXQodG9rZW46IDwtY2hpbGROZnQpCiAgICAgICAgLy8gLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIGxldCBjdXJyZW50U3RvcmFnZVVzYWdlID0gc2lnbmVyLnN0b3JhZ2UudXNlZAogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAgICAgbGV0IHdpdGhkcmF3blN0b3JhZ2VVc2FnZSA9IHNpZ25lci5zdG9yYWdlLnVzZWQKICAgICAgICBsZXQgYXBwcm94RmVlID0gRmxvd0VWTUJyaWRnZVV0aWxzLmNhbGN1bGF0ZUJyaWRnZUZlZSgKICAgICAgICAgICAgICAgIGJ5dGVzOiA0MDBfMDAwCiAgICAgICAgICAgICkKICAgICAgIAogICAgICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gSXNzdWUgYW5kIHN0b3JlIGJyaWRnZS1kZWRpY2F0ZWQgUHJvdmlkZXIgQ2FwYWJpbGl0eSBpbiBzdG9yYWdlIGlmIG5lY2Vzc2FyeQogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAgICAgL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQKICAgICAgICAgICAgKQogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgICAgICB9CiAgICAgICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgICAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICAgICAgZnJvbTogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgICAgIGxldCBwcm92aWRlckZpbHRlciA9IFNjb3BlZEZUUHJvdmlkZXJzLkFsbG93YW5jZUZpbHRlcihhcHByb3hGZWUpCiAgICAgICAgc2VsZi5zY29wZWRQcm92aWRlciA8LSBTY29wZWRGVFByb3ZpZGVycy5jcmVhdGVTY29wZWRGVFByb3ZpZGVyKAogICAgICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgICAgIGV4cGlyYXRpb246IGdldEN1cnJlbnRCbG9jaygpLnRpbWVzdGFtcCArIDEuMAogICAgICAgICAgICApCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gRXhlY3V0ZSB0aGUgYnJpZGdlCiAgICAgICAgLy8gc2VsZi5jb2EuZGVwb3NpdE5GVCgKICAgICAgICAvLyAgICAgbmZ0OiA8LXNlbGYubmZ0LAogICAgICAgIC8vICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgLy8gKQogICAgICAgIGxldCByZWNpcGllbnRFVk1BZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKHJlY2lwaWVudCkKICAgICAgICBGbG93RVZNQnJpZGdlLmJyaWRnZU5GVFRvRVZNKAogICAgICAgICAgICB0b2tlbjogPC1zZWxmLm5mdCwKICAgICAgICAgICAgdG86IHJlY2lwaWVudEVWTUFkZHJlc3MsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICAgICAgLy8gRGVzdHJveSB0aGUgU2NvcGVkRlRQcm92aWRlcgogICAgICAgIGRlc3Ryb3kgc2VsZi5zY29wZWRQcm92aWRlcgogICAgfQp9Cg==", + "checkChildLinkedCollections": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2hlY2tDaGlsZExpbmtlZENvbGxlY3Rpb25zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nKTogQm9vbCB7CiAgICBsZXQgbWdyID0gZ2V0QXV0aEFjY291bnQocGFyZW50KS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgbWFuYWdlciBmcm9tIHBhcmVudCIpCiAgICBsZXQgY2hpbGQgPSBtZ3IuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoIkNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKCiAgICBsZXQgY2FwID0gY2hpbGQuZ2V0Q2FwYWJpbGl0eSgKICAgICAgICAgICAgcGF0aDogUHJpdmF0ZVBhdGgoaWRlbnRpZmllcjogaWRlbnRpZmllcikhIGFzIENhcGFiaWxpdHlQYXRoLAogICAgICAgICAgICB0eXBlOiBUeXBlPCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlciwgTm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQogICAgICAgICkgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pj8KCiAgICAKICAgIHJldHVybiBjYXAgIT0gbmlsCn0gICAKICAgIA==", + "checkChildLinkedVaults": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2hlY2tDaGlsZExpbmtlZFZhdWx0cyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweENhcGFiaWxpdHlGaWx0ZXIKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcywgY2hpbGQ6IEFkZHJlc3MsIHBhdGg6IFN0cmluZyk6IEJvb2wgewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KQogIGxldCBtYW5hZ2VyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAKICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKCiAgbGV0IGFkZHIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkKQogIAogIGxldCBjaGlsZEFjY3QgPSBtYW5hZ2VyLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCgogIGxldCBjb250cm9sbGVycyA9IGFkZHIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aCkhKQogIHZhciBmbGFnID0gZmFsc2UKCiAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICBjb250aW51ZQogICAgfQoKICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgY29udGludWUKICAgICAgfQoKICAgICAgZmxhZyA9IHRydWUKICAgICAgYnJlYWsKICAgIH0KICB9CgogIHJldHVybiBmbGFnCn0gCiAgICA=", + "checkChildRecieveVaults": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2hlY2tDaGlsZFJlY2lldmVWYXVsdHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MsIGNoaWxkOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcpOiBCb29sIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkKICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgCiAgbGV0IHJlY2VpdmVyVHlwZSA9IFR5cGU8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oKQoKICBsZXQgYWRkciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oY2hpbGQpCiAgCiAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKCiAgbGV0IGNvbnRyb2xsZXJzID0gYWRkci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoKSEpCiAgdmFyIGZsYWcgPSBmYWxzZQoKICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICBpZiAhYy5ib3Jyb3dUeXBlLmlzU3VidHlwZShvZjogcmVjZWl2ZXJUeXBlKSB7CiAgICAgIGNvbnRpbnVlCiAgICB9CgogICAgaWYgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogYy5jYXBhYmlsaXR5SUQsIHR5cGU6IHJlY2VpdmVyVHlwZSkgewogICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4gCgogICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICBjb250aW51ZQogICAgICB9CgogICAgICBmbGFnID0gdHJ1ZQogICAgICBicmVhawogICAgfQogIH0KCiAgcmV0dXJuIGZsYWcKfSAKICAgIA==", + "editChildAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZWRpdENoaWxkQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCnRyYW5zYWN0aW9uKGNoaWxkQWRkcmVzczogQWRkcmVzcywgbmFtZTogU3RyaW5nLCBkZXNjcmlwdGlvbjogU3RyaW5nLCB0aHVtYm5haWw6IFN0cmluZykgewogICAgcHJlcGFyZShhY2N0OiBBdXRoQWNjb3VudCkgewogICAgICAgIGxldCBtID0gYWNjdC5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgbGV0IGQgPSBNZXRhZGF0YVZpZXdzLkRpc3BsYXkoCiAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgdGh1bWJuYWlsOiBNZXRhZGF0YVZpZXdzLkhUVFBGaWxlKHVybDogdGh1bWJuYWlsKQogICAgICAgICkKCiAgICAgICAgbS5zZXRDaGlsZEFjY291bnREaXNwbGF5KGFkZHJlc3M6IGNoaWxkQWRkcmVzcywgZCkKICAgIH0KfQ==", + "getAccessibleChildAccountNFTs": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjZXNzaWJsZUNoaWxkQWNjb3VudE5GVHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IEFueVN0cnVjdCB7CiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkgPz8gcGFuaWMgKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKCiAgdmFyIHR5cGVJZHNXaXRoUHJvdmlkZXIgPSB7fSBhcyB7QWRkcmVzczogW1N0cmluZ119CgogIC8vIEFkZHJlc3MgLT4gbmZ0IFVVSUQgLT4gRGlzcGxheQogIHZhciBuZnRWaWV3cyA9IHt9IGFzIHtBZGRyZXNzOiB7U3RyaW5nOiBbVUludDY0XX19IAoKICAKICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICBsZXQgY29sbGVjdGlvblR5cGU6IFR5cGUgPSBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oKQoKICAvLyBJdGVyYXRlIHRocm91Z2ggY2hpbGQgYWNjb3VudHMKICBmb3IgYWRkcmVzcyBpbiBtYW5hZ2VyLmdldENoaWxkQWRkcmVzc2VzKCkgewogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGFkZHJlc3MpCiAgICBsZXQgZm91bmRUeXBlczogW1N0cmluZ10gPSBbXQogICAgbGV0IHZpZXdzOiB7U3RyaW5nOiBbVUludDY0XX0gPSB7fQogICAgbGV0IGNoaWxkQWNjdCA9IG1hbmFnZXIuYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgIAogICAgLy8gdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CgogICAgICBsZXQgY29udHJvbGxlcnMgPSBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHBhdGghKQogICAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0KICAgICAgICAgIGZvdW5kVHlwZXMuYXBwZW5kKGNhcC5ib3Jyb3c8JkFueVJlc291cmNlPigpIS5nZXRUeXBlKCkuaWRlbnRpZmllcikKICAgICAgICB9CiAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKICAgIAoKICAgIC8vIGl0ZXJhdGUgc3RvcmFnZSwgY2hlY2sgaWYgdHlwZUlkc1dpdGhQcm92aWRlciBjb250YWlucyB0aGUgdHlwZUlkLCBpZiBzbywgYWRkIHRvIHZpZXdzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICAgIAogICAgICBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyW2FkZHJlc3NdID09IG5pbCB7CiAgICAgICAgcmV0dXJuIHRydWUKICAgICAgfQoKICAgICAgZm9yIGtleSBpbiB0eXBlSWRzV2l0aFByb3ZpZGVyLmtleXMgewogICAgICAgIGZvciBpZHgsIHZhbHVlIGluIHR5cGVJZHNXaXRoUHJvdmlkZXJba2V5XSEgewogICAgICAgICAgbGV0IHZhbHVlID0gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldIQoKICAgICAgICAgIGlmIHZhbHVlW2lkeF0gIT0gdHlwZS5pZGVudGlmaWVyIHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGlmIHR5cGUuaXNJbnN0YW5jZShjb2xsZWN0aW9uVHlwZSkgewogICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljLCBWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAvLyBJdGVyYXRlIG92ZXIgSURzICYgcmVzb2x2ZSB0aGUgdmlldwogICAgICAgICAgICAgCiAgICAgICAgICAgICAgZm9yIGlkIGluIGNvbGxlY3Rpb24uZ2V0SURzKCkgewogICAgICAgICAgICAgICAgbGV0IG5mdCA9IGNvbGxlY3Rpb24uYm9ycm93TkZUKGlkKSEKCiAgICAgICAgICAgICAgICB2aWV3c1tuZnQuZ2V0VHlwZSgpLmlkZW50aWZpZXJdID0gY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9CiAgICAgIHJldHVybiB0cnVlCiAgICB9KQogICAgbmZ0Vmlld3NbYWRkcmVzc10gPSB2aWV3cwogIH0KICByZXR1cm4gbmZ0Vmlld3MKfQ==", + "getAccessibleCoinInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjZXNzaWJsZUNvaW5JbmZvIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgogaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIHN0cnVjdCBUb2tlbkluZm8gewphY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwphY2Nlc3MoYWxsKSBsZXQgYmFsYW5jZTogVUZpeDY0Cgppbml0KGlkOiBTdHJpbmcsIGJhbGFuY2U6IFVGaXg2NCkgewogICAgc2VsZi5pZCA9IGlkCiAgICBzZWxmLmJhbGFuY2UgPSBiYWxhbmNlCn0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZEFkZHJlc3M6IEFkZHJlc3MpOiBbVG9rZW5JbmZvXSB7CiAgICBsZXQgbWFuYWdlciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KHBhcmVudCkuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCgogICAgdmFyIHR5cGVJZHNXaXRoUHJvdmlkZXI6IHtBZGRyZXNzOiBbU3RyaW5nXX0gPSB7fQoKICAgIHZhciBjb2luSW5mb0xpc3Q6IFtUb2tlbkluZm9dID0gW10KICAgIGxldCBwcm92aWRlclR5cGUgPSBUeXBlPENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KCkKICAgIGxldCB2YXVsdFR5cGU6IFR5cGUgPSBUeXBlPEB7RnVuZ2libGVUb2tlbi5WYXVsdH0+KCkKCiAgICAvLyBJdGVyYXRlIHRocm91Z2ggY2hpbGQgYWNjb3VudHMKCiAgICBsZXQgYWNjdCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4gKGNoaWxkQWRkcmVzcykKICAgIGxldCBmb3VuZFR5cGVzOiBbU3RyaW5nXSA9IFtdCiAgICBsZXQgdmF1bHRCYWxhbmNlczoge1N0cmluZzogVUZpeDY0fSA9IHt9CiAgICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgICAgIC8vIENoZWNrIHdoaWNoIHByaXZhdGUgcGF0aHMgaGF2ZSBORlQgUHJvdmlkZXIgQU5EIGNhbiBiZSBib3Jyb3dlZAogICAgICAgIGlmICF0eXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKXsKICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9CgogICAgICAgIGxldCBjb250cm9sbGVycyA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogcGF0aCkKCiAgICAgICAgLy8gbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgICBmb3IgYyBpbiBjb250cm9sbGVycyB7CiAgICAgICAgICAgIGlmICFjLmJvcnJvd1R5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgICAgICAgICBpZiAhcHJvdmlkZXJDYXAuY2hlY2soKXsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiB0cnVlCiAgICB9KQogICAgdHlwZUlkc1dpdGhQcm92aWRlcltjaGlsZEFkZHJlc3NdID0gZm91bmRUeXBlcwoKICAgIAogICAgYWNjdC5zdG9yYWdlLmZvckVhY2hTdG9yZWQoZnVuIChwYXRoOiBTdG9yYWdlUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgCiAgICBpZiB0eXBlSWRzV2l0aFByb3ZpZGVyW2NoaWxkQWRkcmVzc10gPT0gbmlsIHsKICAgICAgICByZXR1cm4gdHJ1ZQogICAgfQoKICAgIGZvciBrZXkgaW4gdHlwZUlkc1dpdGhQcm92aWRlci5rZXlzIHsKICAgICAgICBmb3IgaWR4LCB2YWx1ZSBpbiB0eXBlSWRzV2l0aFByb3ZpZGVyW2tleV0hIHsKICAgICAgICAgICAgbGV0IHZhbHVlID0gdHlwZUlkc1dpdGhQcm92aWRlcltrZXldIQoKICAgICAgICAgICAgaWYgdmFsdWVbaWR4XSAhPSB0eXBlLmlkZW50aWZpZXIgewogICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIHR5cGUuaXNJbnN0YW5jZSh2YXVsdFR5cGUpIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiBsZXQgdmF1bHQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBJRHMgJiByZXNvbHZlIHRoZSB2aWV3CiAgICAgICAgICAgICAgICAgICAgY29pbkluZm9MaXN0LmFwcGVuZCgKICAgICAgICAgICAgICAgICAgICBUb2tlbkluZm8oaWQ6IHR5cGUuaWRlbnRpZmllciwgYmFsYW5jZTogdmF1bHQuYmFsYW5jZSkpCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIH0KICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgCiAgICByZXR1cm4gY29pbkluZm9MaXN0Cn0=", + "getAccessibleCollectionAndIdsDisplay": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QWNjZXNzaWJsZUNvbGxlY3Rpb25BbmRJZHNEaXNwbGF5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgoKYWNjZXNzKGFsbCkgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICBhY2Nlc3MoYWxsKSBsZXQgbmFtZTogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHNxdWFyZUltYWdlOiBNZXRhZGF0YVZpZXdzLk1lZGlhCgogIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogTWV0YWRhdGFWaWV3cy5NZWRpYSkgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgfQp9CgphY2Nlc3MoYWxsKSBzdHJ1Y3QgTkZUQ29sbGVjdGlvbiB7CiAgYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgYWNjZXNzKGFsbCkgbGV0IGlkTGlzdDogW1VJbnQ2NF0KCiAgaW5pdChpZDpTdHJpbmcsIGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PywgaWRMaXN0OiBbVUludDY0XSkgewogICAgc2VsZi5pZCA9IGlkCiAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICBzZWxmLmlkTGlzdCA9IGlkTGlzdAogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIGdldERpc3BsYXkoYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RvcmFnZVBhdGgpOiBDb2xsZWN0aW9uRGlzcGxheT8gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihhZGRyZXNzKQoKICBsZXQgcmVzb3VyY2VUeXBlID0gVHlwZTxAQW55UmVzb3VyY2U+KCkKICAvLyBsZXQgdmF1bHRUeXBlID0gVHlwZTxAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KCkKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8JntWaWV3UmVzb2x2ZXIuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIHZhciBpdGVtOiBDb2xsZWN0aW9uRGlzcGxheT8gPSAgbmlsCgogICAgaWYgbGV0IHR5cGUgPSBhY2NvdW50LnN0b3JhZ2UudHlwZShhdDogcGF0aCkgewogICAgICBsZXQgaXNSZXNvdXJjZSA9IHR5cGUuaXNTdWJ0eXBlKG9mOiByZXNvdXJjZVR5cGUpCiAgICAgIGxldCBpc05GVENvbGxlY3Rpb24gPSB0eXBlLmlzU3VidHlwZShvZjogY29sbGVjdGlvblR5cGUpCiAgICAgIGxldCBjb25mb3JtZWRNZXRhZGF0YVZpZXdzID0gdHlwZS5pc1N1YnR5cGUob2Y6IG1ldGFkYXRhVmlld1R5cGUpCgogICAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgICAgaWYgaXNORlRDb2xsZWN0aW9uICYmIGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgewogICAgICAgIGlmIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzwme1ZpZXdSZXNvbHZlci5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGZyb206IHBhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQoKICAgICAgICAgIC8vIFRPRE86IG1vdmUgdG8gYSBsaXN0CiAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIAogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FybGVlU2NlbmUgewogICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pIQogICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIpIHsKICAgICAgICAgICAgICBpdGVtID0gQ29sbGVjdGlvbkRpc3BsYXkoCiAgICAgICAgICAgICAgICBuYW1lOiBkaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgICAgICBzcXVhcmVJbWFnZTogZGlzcGxheS5zcXVhcmVJbWFnZQogICAgICAgICAgICAgICkKICAgICAgICAgICAgfQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQogICAgfQoKICByZXR1cm4gaXRlbQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MsIGNoaWxkQWNjb3VudDogQWRkcmVzcyk6IFtORlRDb2xsZWN0aW9uXSB7CiAgICBsZXQgbWFuYWdlciA9ICBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA/PyBwYW5pYyAoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQoKICAgIC8vIEFkZHJlc3MgLT4gQ29sbGVjdGlvbiBUeXBlIC0+IG93bmVkTkZUcwoKICAgIGxldCBwcm92aWRlclR5cGUgPSBUeXBlPENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KCkKICAgIGxldCBjb2xsZWN0aW9uVHlwZTogVHlwZSA9IFR5cGU8QHtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigpCgogICAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCgogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KGNoaWxkQWNjb3VudCkKICAgIGxldCBmb3VuZFR5cGVzOiBbVHlwZV0gPSBbXQogICAgbGV0IG5mdHM6IHtTdHJpbmc6IFtVSW50NjRdfSA9IHt9CiAgICBsZXQgY29sbGVjdGlvbkxpc3Q6IFtORlRDb2xsZWN0aW9uXSA9IFtdCiAgICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWNjb3VudCkgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgLy8gZ2V0IGFsbCBwcml2YXRlIHBhdGhzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICAgICAgLy8gQ2hlY2sgd2hpY2ggcHJpdmF0ZSBwYXRocyBoYXZlIE5GVCBQcm92aWRlciBBTkQgY2FuIGJlIGJvcnJvd2VkCiAgICAgICAgLy8gaWYgIXR5cGUuaXNTdWJ0eXBlKG9mOiBwcm92aWRlclR5cGUpewogICAgICAgIC8vICAgICByZXR1cm4gdHJ1ZQogICAgICAgIC8vIH0KICAgICAgICAvLyBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkocGF0aDogcGF0aCwgdHlwZTogVHlwZTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpKSB7CiAgICAgICAgLy8gICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgLy8gICAgIGlmICFwcm92aWRlckNhcC5jaGVjaygpewogICAgICAgIC8vICAgICAgICAgLy8gaWYgdGhpcyBpc24ndCBhIHByb3ZpZGVyIGNhcGFiaWxpdHksIGV4aXQgdGhlIGFjY291bnQgaXRlcmF0aW9uIGZ1bmN0aW9uIGZvciB0aGlzIHBhdGgKICAgICAgICAvLyAgICAgICAgIHJldHVybiB0cnVlCiAgICAgICAgLy8gICAgIH0KICAgICAgICAvLyAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKSkKICAgICAgICAvLyB9CgogICAgICAgIGxldCBjb250cm9sbGVycyA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogcGF0aCEpCiAgICAgICAgZm9yIGMgaW4gY29udHJvbGxlcnMgewogICAgICAgICAgaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgfQoKICAgICAgICAgIGlmIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBwcm92aWRlclR5cGUpIHsKICAgICAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PCZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+IAoKICAgICAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgfQogICAgICAgICAgICBmb3VuZFR5cGVzLmFwcGVuZChjYXAuYm9ycm93PCZBbnlSZXNvdXJjZT4oKSEuZ2V0VHlwZSgpKQogICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gdHJ1ZQogICAgfSkKCiAgICAvLyBpdGVyYXRlIHN0b3JhZ2UsIGNoZWNrIGlmIHR5cGVJZHNXaXRoUHJvdmlkZXIgY29udGFpbnMgdGhlIHR5cGVJZCwgaWYgc28sIGFkZCB0byBuZnRzCiAgICBhY2N0LnN0b3JhZ2UuZm9yRWFjaFN0b3JlZChmdW4gKHBhdGg6IFN0b3JhZ2VQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CgogICAgICAgIGlmIGZvdW5kVHlwZXMgPT0gbmlsIHsKICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9CgogICAgICAgIGZvciBpZHgsIHZhbHVlIGluIGZvdW5kVHlwZXMgewogICAgICAgICAgICBsZXQgdmFsdWUgPSBmb3VuZFR5cGVzIQoKICAgICAgICAgICAgaWYgdmFsdWVbaWR4XSAhPSB0eXBlIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiB0eXBlLmlzSW5zdGFuY2UoY29sbGVjdGlvblR5cGUpIHsKICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oZnJvbTogcGF0aCkgeyAKICAgICAgICAgICAgICAgICAgICBuZnRzLmluc2VydChrZXk6IHR5cGUuaWRlbnRpZmllciwgY29sbGVjdGlvbi5nZXRJRHMoKSkKICAgICAgICAgICAgICAgICAgICBjb2xsZWN0aW9uTGlzdC5hcHBlbmQoCiAgICAgICAgICAgICAgICAgICAgICBORlRDb2xsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICBpZDogdHlwZS5pZGVudGlmaWVyLAogICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiBnZXREaXNwbGF5KGFkZHJlc3M6IGNoaWxkQWNjb3VudCwgcGF0aDogcGF0aCksCiAgICAgICAgICAgICAgICAgICAgICAgIGlkTGlzdDogY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHRydWUKICAgIH0pCgogICAgcmV0dXJuIGNvbGxlY3Rpb25MaXN0Cn0=", + "getChildAccountAllowTypes": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q2hpbGRBY2NvdW50QWxsb3dUeXBlcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCi8vIFRoaXMgc2NyaXB0IGl0ZXJhdGVzIHRocm91Z2ggYSBwYXJlbnQncyBjaGlsZCBhY2NvdW50cywgCi8vIGlkZW50aWZpZXMgcHJpdmF0ZSBwYXRocyB3aXRoIGFuIGFjY2Vzc2libGUgTm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlciwgYW5kIHJldHVybnMgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZUlkcwphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcyk6IFtTdHJpbmddPyB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKQogIGxldCBtYW5hZ2VyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4oYWRkcikuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCgoKICAKICBsZXQgbmZ0UHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICBsZXQgZnRQcm92aWRlclR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQoKICAvLyBJdGVyYXRlIHRocm91Z2ggY2hpbGQgYWNjb3VudHMKICBsZXQgYWRkciA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudD4oY2hpbGQpCiAgbGV0IGZvdW5kVHlwZXM6IFtTdHJpbmddID0gW10KICBsZXQgY2hpbGRBY2N0ID0gbWFuYWdlci5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwoKICBmb3IgcyBpbiBhZGRyLnN0b3JhZ2Uuc3RvcmFnZVBhdGhzIHsKICAgIGxldCBjb250cm9sbGVycyA9IGFkZHIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogcykKICAgIGZvciBjIGluIGNvbnRyb2xsZXJzIHsKICAgICAgLy8gaWYgIWMuYm9ycm93VHlwZS5pc1N1YnR5cGUob2Y6IHByb3ZpZGVyVHlwZSkgewogICAgICAvLyAgIGNvbnRpbnVlCiAgICAgIC8vIH0KCiAgICAgIGlmIGxldCBuZnRDYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGMuY2FwYWJpbGl0eUlELCB0eXBlOiBuZnRQcm92aWRlclR5cGUpIHsKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBuZnRDYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQobmZ0Q2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgIGJyZWFrCiAgICAgIH0KICAgICAgaWYgbGV0IGZ0Q2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogZnRQcm92aWRlclR5cGUpIHsKICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBmdENhcCBhcyEgQ2FwYWJpbGl0eTwme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PiAKCiAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KCiAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoZnRDYXAuYm9ycm93PCZBbnlSZXNvdXJjZT4oKSEuZ2V0VHlwZSgpLmlkZW50aWZpZXIpCiAgICAgICAgYnJlYWsKICAgICAgfQogICAgfQogIH0KCiAgcmV0dXJuIGZvdW5kVHlwZXMKfQ==", + "getChildAccountFTCapabilities": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q2hpbGRBY2NvdW50RlRDYXBhYmlsaXRpZXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCgovLyBUaGlzIHNjcmlwdCBpdGVyYXRlcyB0aHJvdWdoIGEgcGFyZW50J3MgY2hpbGQgYWNjb3VudHMsIAovLyBpZGVudGlmaWVzIHByaXZhdGUgcGF0aHMgd2l0aCBhbiBhY2Nlc3NpYmxlIEZ1bmdpYmxlVG9rZW4uUHJvdmlkZXIsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nIHR5cGVJZHMKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6QW55U3RydWN0IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50PGF1dGgoU3RvcmFnZSkgJkFjY291bnQ+KGFkZHIpCiAgbGV0IG1hbmFnZXIgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihhZGRyKS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgID8/IHBhbmljICgibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCgogIHZhciB0eXBlSWRzV2l0aFByb3ZpZGVyOiB7QWRkcmVzczogW1N0cmluZ119ID0ge30KICAKICBsZXQgcHJvdmlkZXJUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKCiAgLy8gSXRlcmF0ZSB0aHJvdWdoIGNoaWxkIGFjY291bnRzCiAgZm9yIGFkZHJlc3MgaW4gbWFuYWdlci5nZXRDaGlsZEFkZHJlc3NlcygpIHsKICAgIGxldCBhZGRyID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PihhZGRyZXNzKQogICAgbGV0IGZvdW5kVHlwZXM6IFtTdHJpbmddID0gW10KICAgIGxldCBjaGlsZEFjY3QgPSBtYW5hZ2VyLmJvcnJvd0FjY291bnQoYWRkcjogYWRkcmVzcykgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIC8vIGdldCBhbGwgcHJpdmF0ZSBwYXRocwoKICAgIGZvciBzIGluIGFkZHIuc3RvcmFnZS5zdG9yYWdlUGF0aHMgewogICAgICBmb3IgYyBpbiBhZGRyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IHMpIHsKICAgICAgICBpZiAhYy5ib3Jyb3dUeXBlLmlzU3VidHlwZShvZjogcHJvdmlkZXJUeXBlKXsKICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQoKICAgICAgICBpZiBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjLmNhcGFiaWxpdHlJRCwgdHlwZTogcHJvdmlkZXJUeXBlKSB7CiAgICAgICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4gCgogICAgICAgICAgaWYgIXByb3ZpZGVyQ2FwLmNoZWNrKCl7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICB9CgogICAgICAgICAgZm91bmRUeXBlcy5hcHBlbmQoY2FwLmJvcnJvdzwmQW55UmVzb3VyY2U+KCkhLmdldFR5cGUoKS5pZGVudGlmaWVyKQogICAgICAgICAgdHlwZUlkc1dpdGhQcm92aWRlclthZGRyZXNzXSA9IGZvdW5kVHlwZXMKICAgICAgICAgIGJyZWFrCiAgICAgICAgfQogICAgICB9CiAgICB9ICAgICAgCiAgfQoKICByZXR1cm4gdHlwZUlkc1dpdGhQcm92aWRlcgp9CiA=", + "getChildAccountMeta": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q2hpbGRBY2NvdW50TWV0YSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCmFjY2VzcyhhbGwpIGZ1biBtYWluKHBhcmVudDogQWRkcmVzcyk6IHtBZGRyZXNzOiBBbnlTdHJ1Y3R9IHsKICAgIGxldCBhY2N0ID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KQogICAgbGV0IG0gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQoKICAgIGlmIG0gPT0gbmlsIHsKICAgICAgICByZXR1cm4ge30KICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGRhdGE6IHtBZGRyZXNzOiBBbnlTdHJ1Y3R9ID0ge30KICAgICAgICBmb3IgYWRkcmVzcyBpbiBtPy5nZXRDaGlsZEFkZHJlc3NlcygpISB7CiAgICAgICAgICAgIGxldCBjID0gbT8uZ2V0Q2hpbGRBY2NvdW50RGlzcGxheShhZGRyZXNzOiBhZGRyZXNzKSAKICAgICAgICAgICAgZGF0YS5pbnNlcnQoa2V5OiBhZGRyZXNzLCBjKQogICAgICAgIH0KICAgICAgICByZXR1cm4gZGF0YQogICAgfQp9", + "getChildAddresses": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Q2hpbGRBZGRyZXNzZXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihwYXJlbnQ6IEFkZHJlc3MpOiBbQWRkcmVzc10gewogICAgbGV0IGFjY3QgPSBnZXRBdXRoQWNjb3VudDxhdXRoKFN0b3JhZ2UpICZBY2NvdW50PihwYXJlbnQpCiAgICBsZXQgbWFuYWdlciA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm90IGZvdW5kIikKICAgIHJldHVybiAgbWFuYWdlci5nZXRDaGlsZEFkZHJlc3NlcygpCn0=", + "getExamplenftCollectionFromDelegator": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RXhhbXBsZW5mdENvbGxlY3Rpb25Gcm9tRGVsZWdhdG9yIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4MjhiODFmNTg4MGQ1NTU0ZQoKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKYWNjZXNzKGFsbCkgZnVuIG1haW4ocGFyZW50OiBBZGRyZXNzLCBjaGlsZDogQWRkcmVzcywgaXNQdWJsaWM6IEJvb2wpIHsKICAgIGxldCBtID0gZ2V0QXV0aEFjY291bnQ8YXV0aChTdG9yYWdlKSAmQWNjb3VudD4ocGFyZW50KS5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBub3QgZm91bmQiKQogICAgbGV0IGFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpCiAgICAgICAgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIGluIG1hbmFnZXIiKQoKICAgIGxldCB0ID0gVHlwZTxDYXBhYmlsaXR5PCZFeGFtcGxlTkZULkNvbGxlY3Rpb24+PigpCgogICAgbGV0IGNhcCA9IChpc1B1YmxpYyA/IGFjY3QuZ2V0UHVibGljQ2FwRnJvbURlbGVnYXRvcih0eXBlOiB0KSA6IGFjY3QuZ2V0UHJpdmF0ZUNhcEZyb21EZWxlZ2F0b3IodHlwZTogdCkpCiAgICAgICAgPz8gcGFuaWMoImNhcGFiaWxpdHkgbm90IGZvdW5kIikKICAgIAogICAgYXNzZXJ0KGNhcC5nZXRUeXBlKCkgPT0gdCwgbWVzc2FnZTogIm1pc21hdGNoZWQgY2FwYWJpbGl0eSB0eXBlcyIpCn0=", + "publishToParent": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcHVibGlzaFRvUGFyZW50IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgojYWxsb3dBY2NvdW50TGlua2luZwoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGYWN0b3J5IGZyb20gMHhDYXBhYmlsaXR5RmFjdG9yeQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgppbXBvcnQgQ2FwYWJpbGl0eURlbGVnYXRvciBmcm9tIDB4Q2FwYWJpbGl0eURlbGVnYXRvcgoKdHJhbnNhY3Rpb24ocGFyZW50OiBBZGRyZXNzLCBmYWN0b3J5QWRkcmVzczogQWRkcmVzcywgZmlsdGVyQWRkcmVzczogQWRkcmVzcykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IG93bmVkID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuT3duZXIpICZIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudD4oZnJvbTogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm93bmVkIGFjY291bnQgbm90IGZvdW5kIikKCiAgICAgICAgbGV0IGZhY3RvcnkgPSBnZXRBY2NvdW50KGZhY3RvcnlBZGRyZXNzKS5jYXBhYmlsaXRpZXMuZ2V0PCZDYXBhYmlsaXR5RmFjdG9yeS5NYW5hZ2VyPihDYXBhYmlsaXR5RmFjdG9yeS5QdWJsaWNQYXRoKQogICAgICAgIGFzc2VydChmYWN0b3J5LmNoZWNrKCksIG1lc3NhZ2U6ICJmYWN0b3J5IGFkZHJlc3MgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkiKQoKICAgICAgICBsZXQgZmlsdGVyID0gZ2V0QWNjb3VudChmaWx0ZXJBZGRyZXNzKS5jYXBhYmlsaXRpZXMuZ2V0PCZ7Q2FwYWJpbGl0eUZpbHRlci5GaWx0ZXJ9PihDYXBhYmlsaXR5RmlsdGVyLlB1YmxpY1BhdGgpCiAgICAgICAgYXNzZXJ0KGZpbHRlci5jaGVjaygpLCBtZXNzYWdlOiAiY2FwYWJpbGl0eSBmaWx0ZXIgaXMgbm90IGNvbmZpZ3VyZWQgcHJvcGVybHkiKQoKICAgICAgICBvd25lZC5wdWJsaXNoVG9QYXJlbnQocGFyZW50QWRkcmVzczogcGFyZW50LCBmYWN0b3J5OiBmYWN0b3J5LCBmaWx0ZXI6IGZpbHRlcikKICAgIH0KfQ==", + "redeemAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcmVkZWVtQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4Vmlld1Jlc29sdmVyCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4Q2FwYWJpbGl0eUZpbHRlcgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyZXNzOiBBZGRyZXNzLCBmaWx0ZXJBZGRyZXNzOiBBZGRyZXNzPywgZmlsdGVyUGF0aDogUHVibGljUGF0aD8pIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMsIEluYm94KSAmQWNjb3VudCkgewogICAgICAgIHZhciBmaWx0ZXI6IENhcGFiaWxpdHk8JntDYXBhYmlsaXR5RmlsdGVyLkZpbHRlcn0+PyA9IG5pbAogICAgICAgIGlmIGZpbHRlckFkZHJlc3MgIT0gbmlsICYmIGZpbHRlclBhdGggIT0gbmlsIHsKICAgICAgICAgICAgZmlsdGVyID0gZ2V0QWNjb3VudChmaWx0ZXJBZGRyZXNzISkuY2FwYWJpbGl0aWVzLmdldDwme0NhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyfT4oZmlsdGVyUGF0aCEpCiAgICAgICAgfQoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgbSA8LSBIeWJyaWRDdXN0b2R5LmNyZWF0ZU1hbmFnZXIoZmlsdGVyOiBmaWx0ZXIpCiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKDwtIG0sIHRvOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKCiAgICAgICAgICAgIGZvciBjIGluIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZ2V0Q29udHJvbGxlcnMoZm9yUGF0aDogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpIHsKICAgICAgICAgICAgICAgIGMuZGVsZXRlKCkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKEh5YnJpZEN1c3RvZHkuTWFuYWdlclB1YmxpY1BhdGgpCgogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0h5YnJpZEN1c3RvZHkuTWFuYWdlclB1YmxpY30+KEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgICAgIGF0OiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWNQYXRoCiAgICAgICAgICAgICkKCiAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJntIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQcml2YXRlLCBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJQdWJsaWN9PihIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICB9CgogICAgICAgIGxldCBpbmJveE5hbWUgPSBIeWJyaWRDdXN0b2R5LmdldENoaWxkQWNjb3VudElkZW50aWZpZXIoYWNjdC5hZGRyZXNzKQogICAgICAgIGxldCBjYXAgPSBhY2N0LmluYm94LmNsYWltPGF1dGgoSHlicmlkQ3VzdG9keS5DaGlsZCkgJntIeWJyaWRDdXN0b2R5LkFjY291bnRQcml2YXRlLCBIeWJyaWRDdXN0b2R5LkFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KGluYm94TmFtZSwgcHJvdmlkZXI6IGNoaWxkQWRkcmVzcykKICAgICAgICAgICAgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgY2FwIG5vdCBmb3VuZCIpCgogICAgICAgIGxldCBtYW5hZ2VyID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm8gZm91bmQiKQoKICAgICAgICBtYW5hZ2VyLmFkZEFjY291bnQoY2FwOiBjYXApCiAgICB9Cn0=", + "sendChildFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZENoaWxkRlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBIeWJyaWRDdXN0b2R5IGZyb20gMHhIeWJyaWRDdXN0b2R5CgovLyBIQy1vd25lZCBpbXBvcnRzCmltcG9ydCBDYXBhYmlsaXR5RmFjdG9yeSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKCnRyYW5zYWN0aW9uKGFkZHJlc3M6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsIGFtb3VudDogVUZpeDY0ICkgewoKICAvLyBUaGUgVmF1bHQgcmVzb3VyY2UgdGhhdCBob2xkcyB0aGUgdG9rZW5zIHRoYXQgYXJlIGJlaW5nIHRyYW5zZmVycmVkCiAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogIGxldCB2YXVsdERhdGE6IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhCgogIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UpICZBY2NvdW50KSB7CiAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICAgIGxldCBtID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5NYW5hZ2UpICZIeWJyaWRDdXN0b2R5Lk1hbmFnZXI+KGZyb206IEh5YnJpZEN1c3RvZHkuTWFuYWdlclN0b3JhZ2VQYXRoKQogICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGFkZHJlc3MpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgIAogICAgICBzZWxmLnZhdWx0RGF0YSA9IDxUb2tlbj4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxUb2tlbj4gIikKCiAgICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogc2VsZi52YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAgIAogICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAgIAogICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICAgIGxldCB2YXVsdFJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICBzZWxmLnBheW1lbnRWYXVsdCA8LSB2YXVsdFJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKICB9CgogIGV4ZWN1dGUgewoKICAgICAgLy8gR2V0IHRoZSByZWNpcGllbnQncyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgbGV0IHJlY2lwaWVudCA9IGdldEFjY291bnQocmVjZWl2ZXIpCgogICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFJlY2VpdmVyCiAgICAgIGxldCByZWNlaXZlclJlZiA9IHJlY2lwaWVudC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHNlbGYudmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKCiAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLnBheW1lbnRWYXVsdCkKICB9Cn0KIA==", + "sendChildFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZENoaWxkRlRUb0NoaWxkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKLy8gSEMtb3duZWQgaW1wb3J0cwppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCgp0cmFuc2FjdGlvbihhZGRyZXNzOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgcGF0aDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCApIHsKCiAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogIGxldCBwYXltZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICBsZXQgdmF1bHREYXRhOiBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YQoKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAvLyBzaWduZXIgaXMgdGhlIHBhcmVudCBhY2NvdW50CiAgICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgID8/IHBhbmljKCJtYW5hZ2VyIGRvZXMgbm90IGV4aXN0IikKICAgICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAKICAgICAgc2VsZi52YXVsdERhdGEgPSA8VG9rZW4+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/CiAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8VG9rZW4+ICIpCgogICAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IHNlbGYudmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgICAKICAgICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSBjaGlsZCdzIHN0b3JlZCB2YXVsdAogICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgICAgc2VsZi5wYXltZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgfQoKICBleGVjdXRlIHsKCiAgICAgIC8vIEdldCB0aGUgcmVjaXBpZW50J3MgcHVibGljIGFjY291bnQgb2JqZWN0CiAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHJlY2VpdmVyKQoKICAgICAgLy8gR2V0IGEgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBSZWNlaXZlcgogICAgICBsZXQgcmVjZWl2ZXJSZWYgPSByZWNpcGllbnQuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PihzZWxmLnZhdWx0RGF0YS5yZWNlaXZlclBhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICByZWNlaXZlclJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5wYXltZW50VmF1bHQpCiAgfQp9CiA=", + "sendChildFTWithParent": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZENoaWxkRlRXaXRoUGFyZW50IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCgp0cmFuc2FjdGlvbihhbW91bnQ6IFVGaXg2NCwgdG86IEFkZHJlc3MsIGNoaWxkOiBBZGRyZXNzKSB7CgogICAgLy8gVGhlIFZhdWx0IHJlc291cmNlIHRoYXQgaG9sZHMgdGhlIHRva2VucyB0aGF0IGFyZSBiZWluZyB0cmFuc2ZlcnJlZAogICAgbGV0IHBheW1lbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IHZhdWx0RGF0YTogRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGEKCiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgICAgICAvLyBnZXQgdGhlIG1hbmFnZXIgcmVzb3VyY2UgYW5kIGJvcnJvdyBjaGlsZEFjY291bnQKICAgICAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgICAgIGxldCBjaGlsZEFjY3QgPSBtLmJvcnJvd0FjY291bnQoYWRkcjogY2hpbGQpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgc2VsZi52YXVsdERhdGEgPSBFeGFtcGxlVG9rZW4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgRXhhbXBsZVRva2VuIikKCiAgICAgICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgICAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogc2VsZi52YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgICAgICAKICAgICAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICAgICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgICAgIAogICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgICAgICBsZXQgdmF1bHRSZWYgPSBwcm92aWRlckNhcC5ib3Jyb3coKSEKCiAgICAgICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgICAgIHNlbGYucGF5bWVudFZhdWx0IDwtIHZhdWx0UmVmLndpdGhkcmF3KGFtb3VudDogYW1vdW50KQogICAgfQoKICAgIGV4ZWN1dGUgewoKICAgICAgICAvLyBHZXQgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBhY2NvdW50IG9iamVjdAogICAgICAgIGxldCByZWNpcGllbnQgPSBnZXRBY2NvdW50KHRvKQoKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFJlY2VpdmVyCiAgICAgICAgbGV0IHJlY2VpdmVyUmVmID0gcmVjaXBpZW50LmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4oc2VsZi52YXVsdERhdGEucmVjZWl2ZXJQYXRoKSEuYm9ycm93KCkKCQkJPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCgogICAgICAgIC8vIERlcG9zaXQgdGhlIHdpdGhkcmF3biB0b2tlbnMgaW4gdGhlIHJlY2lwaWVudCdzIHJlY2VpdmVyCiAgICAgICAgcmVjZWl2ZXJSZWYuZGVwb3NpdChmcm9tOiA8LXNlbGYucGF5bWVudFZhdWx0KQogICAgfQp9CiA=", + "sendChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZENoaWxkTkZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oY2hpbGRBZGRyOiBBZGRyZXNzLCByZWNlaXZlcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+LnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxORlQ+ICIpCgogICAgLy9nZXQgRnQgY2FwIGZyb20gY2hpbGQgYWNjb3VudAogICAgbGV0IGNhcFR5cGUgPSBUeXBlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oKQogICAgbGV0IGNvbnRyb2xsZXJJRCA9IGNoaWxkQWNjdC5nZXRDb250cm9sbGVySURGb3JUeXBlKHR5cGU6IGNhcFR5cGUsIGZvclBhdGg6IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgogICAgLy8gV2l0aGRyYXcgdG9rZW5zIGZyb20gdGhlIHNpZ25lcidzIHN0b3JlZCB2YXVsdAogICAgbGV0IG5mdCA8LSBjb2xsZWN0aW9uUmVmLndpdGhkcmF3KHdpdGhkcmF3SUQ6IGlkKQogICAgbGV0IHJlY2VpdmVyQWNjID0gZ2V0QWNjb3VudChyZWNlaXZlcikKICAgIGxldCByZWNlaXZlclJlZiA9ICByZWNlaXZlckFjYy5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIS5ib3Jyb3coKQogICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgcmVjZWl2ZXIgcmVmZXJlbmNlIHRvIHRoZSByZWNpcGllbnQncyBWYXVsdCIpCiAgICAKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", + "sendChildNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZENoaWxkTkZUVG9DaGlsZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+Cgp0cmFuc2FjdGlvbihjaGlsZEFkZHI6IEFkZHJlc3MsIHJlY2VpdmVyOiBBZGRyZXNzLCBpZGVudGlmaWVyOiBTdHJpbmcsIGlkOiBVSW50NjQpIHsKICBwcmVwYXJlKHNpZ25lcjogYXV0aChTdG9yYWdlKSAmQWNjb3VudCkgewogICAgLy8gc2lnbmVyIGlzIHRoZSBwYXJlbnQgYWNjb3VudAogICAgLy8gZ2V0IHRoZSBtYW5hZ2VyIHJlc291cmNlIGFuZCBib3Jyb3cgY2hpbGRBY2NvdW50CiAgICBsZXQgbSA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKEh5YnJpZEN1c3RvZHkuTWFuYWdlKSAmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibWFuYWdlciBkb2VzIG5vdCBleGlzdCIpCiAgICBsZXQgY2hpbGRBY2N0ID0gbS5ib3Jyb3dBY2NvdW50KGFkZHI6IGNoaWxkQWRkcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIAogICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gPE5GVD4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/CiAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgPE5GVD4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgCiAgICBsZXQgY2FwID0gY2hpbGRBY2N0LmdldENhcGFiaWxpdHkoY29udHJvbGxlcklEOiBjb250cm9sbGVySUQsIHR5cGU6IGNhcFR5cGUpID8/IHBhbmljKCJubyBjYXAgZm91bmQiKQogICAgbGV0IHByb3ZpZGVyQ2FwID0gY2FwIGFzISBDYXBhYmlsaXR5PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLlByb3ZpZGVyfT4KICAgIGFzc2VydChwcm92aWRlckNhcC5jaGVjaygpLCBtZXNzYWdlOiAiaW52YWxpZCBwcm92aWRlciBjYXBhYmlsaXR5IikKICAgIGxldCBjb2xsZWN0aW9uUmVmID0gcHJvdmlkZXJDYXAuYm9ycm93KCkhCgoKICAgIGxldCByZWNlaXZlckNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiByZWNlaXZlcikgPz8gcGFuaWMoImNoaWxkIGFjY291bnQgbm90IGZvdW5kIikKICAgIGxldCByZWNlaXZlckNvbnRyb2xsZXJJZCA9IHJlY2VpdmVyQ2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm5vIGNvbnRyb2xsZXIgZm91bmQgZm9yIGNhcFR5cGUiKQogICAgbGV0IHJlY2VpdmVyQ2FwID0gcmVjZWl2ZXJDaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IHJlY2VpdmVyQ29udHJvbGxlcklkLCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikgCiAgICBsZXQgcHVibGljQ2FwID0gcmVjZWl2ZXJDYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgbGV0IHJlY2VpdmVyUmVmID0gIHB1YmxpY0NhcC5ib3Jyb3coKSEKCiAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgbmZ0IDwtIGNvbGxlY3Rpb25SZWYud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCiAgICAKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", + "setupOwnedAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2V0dXBPd25lZEFjY291bnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiNhbGxvd0FjY291bnRMaW5raW5nCgppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhWaWV3UmVzb2x2ZXIKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKLy8vIFRoaXMgdHJhbnNhY3Rpb24gY29uZmlndXJlcyBhbiBPd25lZEFjY291bnQgaW4gdGhlIHNpZ25lciBpZiBuZWVkZWQgYW5kIGNvbmZpZ3VyZXMgaXRzIENhcGFiaWxpdGllcyBwZXIKLy8vIEh5YnJpZEN1c3RvZHkncyBpbnRlbmRlZCBkZXNpZ24uIElmIERpc3BsYXkgdmFsdWVzIGFyZSBzcGVjaWZpZWQgKGFzIHJlY29tbWVuZGVkKSwgdGhleSB3aWxsIGJlIHNldCBvbiB0aGUKLy8vIHNpZ25lcidzIE93bmVkQWNjb3VudC4KLy8vCnRyYW5zYWN0aW9uKG5hbWU6IFN0cmluZz8sIGRlc2M6IFN0cmluZz8sIHRodW1ibmFpbFVSTDogU3RyaW5nPykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgYWNjdENhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmFjY291bnQuaXNzdWU8YXV0aChTdG9yYWdlLCBDb250cmFjdHMsIEtleXMsIEluYm94LCBDYXBhYmlsaXRpZXMpICZBY2NvdW50PigpCgogICAgICAgIGlmIGFjY3Quc3RvcmFnZS5ib3Jyb3c8Jkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBsZXQgb3duZWRBY2NvdW50IDwtIEh5YnJpZEN1c3RvZHkuY3JlYXRlT3duZWRBY2NvdW50KGFjY3Q6IGFjY3RDYXApCiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKDwtb3duZWRBY2NvdW50LCB0bzogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICB9CgogICAgICAgIGxldCBvd25lZCA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk93bmVyKSAmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJvd25lZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAgICAgCiAgICAgICAgLy8gU2V0IHRoZSBkaXNwbGF5IG1ldGFkYXRhIGZvciB0aGUgT3duZWRBY2NvdW50CiAgICAgICAgaWYgbmFtZSAhPSBuaWwgJiYgZGVzYyAhPSBuaWwgJiYgdGh1bWJuYWlsVVJMICE9IG5pbCB7CiAgICAgICAgICAgIGxldCB0aHVtYm5haWwgPSBNZXRhZGF0YVZpZXdzLkhUVFBGaWxlKHVybDogdGh1bWJuYWlsVVJMISkKICAgICAgICAgICAgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLkRpc3BsYXkobmFtZTogbmFtZSEsIGRlc2NyaXB0aW9uOiBkZXNjISwgdGh1bWJuYWlsOiB0aHVtYm5haWwpCiAgICAgICAgICAgIG93bmVkLnNldERpc3BsYXkoZGlzcGxheSkKICAgICAgICB9CgogICAgICAgIC8vIGNoZWNrIHRoYXQgcGF0aHMgYXJlIGFsbCBjb25maWd1cmVkIHByb3Blcmx5CiAgICAgICAgZm9yIGMgaW4gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVycyhmb3JQYXRoOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKSB7CiAgICAgICAgICAgIGMuZGVsZXRlKCkKICAgICAgICB9CgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntIeWJyaWRDdXN0b2R5LkJvcnJvd2FibGVBY2NvdW50LCBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFB1YmxpYywgVmlld1Jlc29sdmVyLlJlc29sdmVyfT4oSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWNQYXRoCiAgICAgICAgKQogICAgfQp9CiA=", + "setupOwnedAccountAndPublishToParent": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2V0dXBPd25lZEFjY291bnRBbmRQdWJsaXNoVG9QYXJlbnQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCiNhbGxvd0FjY291bnRMaW5raW5nCgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhWaWV3UmVzb2x2ZXIKCgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweENhcGFiaWxpdHlGYWN0b3J5CmltcG9ydCBDYXBhYmlsaXR5RmlsdGVyIGZyb20gMHhDYXBhYmlsaXR5RmlsdGVyCmltcG9ydCBDYXBhYmlsaXR5RGVsZWdhdG9yIGZyb20gMHhDYXBhYmlsaXR5RGVsZWdhdG9yCi8vLyBUaGlzIHRyYW5zYWN0aW9uIGNvbmZpZ3VyZXMgYW4gT3duZWRBY2NvdW50IGluIHRoZSBzaWduZXIgaWYgbmVlZGVkLCBhbmQgcHJvY2VlZHMgdG8gY3JlYXRlIGEgQ2hpbGRBY2NvdW50IAovLy8gdXNpbmcgQ2FwYWJpbGl0eUZhY3RvcnkuTWFuYWdlciBhbmQgQ2FwYWJpbGl0eUZpbHRlci5GaWx0ZXIgQ2FwYWJpbGl0aWVzIGZyb20gdGhlIGdpdmVuIGFkZHJlc3Nlcy4gQQovLy8gQ2FwYWJpbGl0eSBvbiB0aGUgQ2hpbGRBY2NvdW50IGlzIHRoZW4gcHVibGlzaGVkIHRvIHRoZSBzcGVjaWZpZWQgcGFyZW50IGFjY291bnQuIAovLy8KdHJhbnNhY3Rpb24oCiAgICBwYXJlbnQ6IEFkZHJlc3MsCiAgICBmYWN0b3J5QWRkcmVzczogQWRkcmVzcywKICAgIGZpbHRlckFkZHJlc3M6IEFkZHJlc3MsCiAgICBuYW1lOiBTdHJpbmcsCiAgICBkZXNjOiBTdHJpbmcsCiAgICB0aHVtYm5haWxVUkw6IFN0cmluZwopIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgLy8gQ29uZmlndXJlIE93bmVkQWNjb3VudCBpZiBpdCBkb2Vzbid0IGV4aXN0CiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwmSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnQ+KGZyb206IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIHZhciBhY2N0Q2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuYWNjb3VudC5pc3N1ZTxhdXRoKFN0b3JhZ2UsIENvbnRyYWN0cywgS2V5cywgSW5ib3gsIENhcGFiaWxpdGllcykgJkFjY291bnQ+KCkKICAgICAgICAgICAgbGV0IG93bmVkQWNjb3VudCA8LSBIeWJyaWRDdXN0b2R5LmNyZWF0ZU93bmVkQWNjb3VudChhY2N0OiBhY2N0Q2FwKQogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSg8LW93bmVkQWNjb3VudCwgdG86IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpCiAgICAgICAgfQoKICAgICAgICBmb3IgYyBpbiBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXJzKGZvclBhdGg6IEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpIHsKICAgICAgICAgICAgYy5kZWxldGUoKQogICAgICAgIH0KCgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntIeWJyaWRDdXN0b2R5LkJvcnJvd2FibGVBY2NvdW50LCBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFB1YmxpYywgVmlld1Jlc29sdmVyLlJlc29sdmVyfT4oSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRTdG9yYWdlUGF0aCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7SHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWMsIFZpZXdSZXNvbHZlci5SZXNvbHZlcn0+KEh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogSHlicmlkQ3VzdG9keS5Pd25lZEFjY291bnRQdWJsaWNQYXRoCiAgICAgICAgKQoKICAgICAgICBsZXQgb3duZWQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoSHlicmlkQ3VzdG9keS5Pd25lcikgJkh5YnJpZEN1c3RvZHkuT3duZWRBY2NvdW50Pihmcm9tOiBIeWJyaWRDdXN0b2R5Lk93bmVkQWNjb3VudFN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygib3duZWQgYWNjb3VudCBub3QgZm91bmQiKQogICAgICAgIAogICAgICAgIC8vIFNldCB0aGUgZGlzcGxheSBtZXRhZGF0YSBmb3IgdGhlIE93bmVkQWNjb3VudAogICAgICAgIGlmIG5hbWUgIT0gbmlsICYmIGRlc2MgIT0gbmlsICYmIHRodW1ibmFpbFVSTCAhPSBuaWwgewogICAgICAgICAgICBsZXQgdGh1bWJuYWlsID0gTWV0YWRhdGFWaWV3cy5IVFRQRmlsZSh1cmw6IHRodW1ibmFpbFVSTCEpCiAgICAgICAgICAgIGxldCBkaXNwbGF5ID0gTWV0YWRhdGFWaWV3cy5EaXNwbGF5KG5hbWU6IG5hbWUhLCBkZXNjcmlwdGlvbjogZGVzYyEsIHRodW1ibmFpbDogdGh1bWJuYWlsKQogICAgICAgICAgICBvd25lZC5zZXREaXNwbGF5KGRpc3BsYXkpCiAgICAgICAgfQoKICAgICAgICAvLyBHZXQgQ2FwYWJpbGl0eUZhY3RvcnkgJiBDYXBhYmlsaXR5RmlsdGVyIENhcGFiaWxpdGllcwogICAgICAgIGxldCBmYWN0b3J5ID0gZ2V0QWNjb3VudChmYWN0b3J5QWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwmQ2FwYWJpbGl0eUZhY3RvcnkuTWFuYWdlcj4oQ2FwYWJpbGl0eUZhY3RvcnkuUHVibGljUGF0aCkKICAgICAgICBhc3NlcnQoZmFjdG9yeS5jaGVjaygpLCBtZXNzYWdlOiAiZmFjdG9yeSBhZGRyZXNzIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgbGV0IGZpbHRlciA9IGdldEFjY291bnQoZmlsdGVyQWRkcmVzcykuY2FwYWJpbGl0aWVzLmdldDwme0NhcGFiaWxpdHlGaWx0ZXIuRmlsdGVyfT4oQ2FwYWJpbGl0eUZpbHRlci5QdWJsaWNQYXRoKQogICAgICAgIGFzc2VydChmaWx0ZXIuY2hlY2soKSwgbWVzc2FnZTogImNhcGFiaWxpdHkgZmlsdGVyIGlzIG5vdCBjb25maWd1cmVkIHByb3Blcmx5IikKCiAgICAgICAgLy8gRmluYWxseSBwdWJsaXNoIGEgQ2hpbGRBY2NvdW50IGNhcGFiaWxpdHkgb24gdGhlIHNpZ25pbmcgYWNjb3VudCB0byB0aGUgc3BlY2lmaWVkIHBhcmVudAogICAgICAgIG93bmVkLnB1Ymxpc2hUb1BhcmVudChwYXJlbnRBZGRyZXNzOiBwYXJlbnQsIGZhY3Rvcnk6IGZhY3RvcnksIGZpbHRlcjogZmlsdGVyKQogICAgfQp9", + "transferChildFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJDaGlsZEZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKLy8gSEMtb3duZWQgaW1wb3J0cwppbXBvcnQgQ2FwYWJpbGl0eUZhY3RvcnkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCApIHsKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgdmF1bHREYXRhID0gPFRva2VuPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKSkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPwogICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHRoZSB2YXVsdCBkYXRhIHZpZXcgZm9yIDxUb2tlbj4gIikKCiAgICAvL2dldCBGdCBjYXAgZnJvbSBjaGlsZCBhY2NvdW50CiAgICBsZXQgY2FwVHlwZSA9IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PigpCiAgICBsZXQgY29udHJvbGxlcklEID0gY2hpbGRBY2N0LmdldENvbnRyb2xsZXJJREZvclR5cGUodHlwZTogY2FwVHlwZSwgZm9yUGF0aDogdmF1bHREYXRhLnN0b3JhZ2VQYXRoKQogICAgICAgID8/IHBhbmljKCJubyBjb250cm9sbGVyIGZvdW5kIGZvciBjYXBUeXBlIikKICAgIAogICAgbGV0IGNhcCA9IGNoaWxkQWNjdC5nZXRDYXBhYmlsaXR5KGNvbnRyb2xsZXJJRDogY29udHJvbGxlcklELCB0eXBlOiBjYXBUeXBlKSA/PyBwYW5pYygibm8gY2FwIGZvdW5kIikKICAgIGxldCBwcm92aWRlckNhcCA9IGNhcCBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+CiAgICBhc3NlcnQocHJvdmlkZXJDYXAuY2hlY2soKSwgbWVzc2FnZTogImludmFsaWQgcHJvdmlkZXIgY2FwYWJpbGl0eSIpCiAgICAKICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY2hpbGQncyBzdG9yZWQgdmF1bHQKICAgIGxldCB2YXVsdFJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBwYXltZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICBsZXQgcmVjZWl2ZXJSZWYgPSAgc2lnbmVyLmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhLmJvcnJvdygpCiAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFZhdWx0IikKICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1wYXltZW50VmF1bHQpCiAgfQp9", + "transferChildNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJDaGlsZE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEh5YnJpZEN1c3RvZHkgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IENhcGFiaWxpdHlGaWx0ZXIgZnJvbSAweEh5YnJpZEN1c3RvZHkKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IDxORlQ+IGZyb20gPE5GVEFkZHJlc3M+CgoKdHJhbnNhY3Rpb24oYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCAgaWQ6IFVJbnQ2NCApIHsKCiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBhZGRyZXNzKSA/PyBwYW5pYygiY2hpbGQgYWNjb3VudCBub3QgZm91bmQiKQogICAgCiAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSA8TkZUPi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgcHJvdmlkZXJDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PgogICAgYXNzZXJ0KHByb3ZpZGVyQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIGNoaWxkJ3Mgc3RvcmVkIHZhdWx0CiAgICBsZXQgY29sbGVjdGlvblJlZiA9IHByb3ZpZGVyQ2FwLmJvcnJvdygpIQoKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBuZnQgPC0gY29sbGVjdGlvblJlZi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKICAgIGxldCByZWNlaXZlclJlZiA9ICBzaWduZXIuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEuYm9ycm93KCkKICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgcmVjaXBpZW50J3MgVmF1bHQiKQogICAgcmVjZWl2ZXJSZWYuZGVwb3NpdCh0b2tlbjogPC0gbmZ0KQogIH0KfQ==", + "transferNFTToChild": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJORlRUb0NoaWxkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgQ2FwYWJpbGl0eUZpbHRlciBmcm9tIDB4SHlicmlkQ3VzdG9keQppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgPE5GVD4gZnJvbSA8TkZUQWRkcmVzcz4KCnRyYW5zYWN0aW9uKGNoaWxkQWRkcjogQWRkcmVzcywgaWRlbnRpZmllcjogU3RyaW5nLCBpZDogVUludDY0KSB7CiAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSkgJkFjY291bnQpIHsKICAgIC8vIHNpZ25lciBpcyB0aGUgcGFyZW50IGFjY291bnQKICAgIC8vIGdldCB0aGUgbWFuYWdlciByZXNvdXJjZSBhbmQgYm9ycm93IGNoaWxkQWNjb3VudAogICAgbGV0IG0gPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8YXV0aChIeWJyaWRDdXN0b2R5Lk1hbmFnZSkgJkh5YnJpZEN1c3RvZHkuTWFuYWdlcj4oZnJvbTogSHlicmlkQ3VzdG9keS5NYW5hZ2VyU3RvcmFnZVBhdGgpCiAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgZG9lcyBub3QgZXhpc3QiKQogICAgbGV0IGNoaWxkQWNjdCA9IG0uYm9ycm93QWNjb3VudChhZGRyOiBjaGlsZEFkZHIpID8/IHBhbmljKCJjaGlsZCBhY2NvdW50IG5vdCBmb3VuZCIpCiAgICAKICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IDxORlQ+IC5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciA8TkZUPiAiKQoKICAgIC8vZ2V0IEZ0IGNhcCBmcm9tIGNoaWxkIGFjY291bnQKICAgIGxldCBjYXBUeXBlID0gVHlwZTxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KCkKICAgIGxldCBjb250cm9sbGVySUQgPSBjaGlsZEFjY3QuZ2V0Q29udHJvbGxlcklERm9yVHlwZSh0eXBlOiBjYXBUeXBlLCBmb3JQYXRoOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkKICAgICAgICA/PyBwYW5pYygibm8gY29udHJvbGxlciBmb3VuZCBmb3IgY2FwVHlwZSIpCiAgICAKICAgIGxldCBjYXAgPSBjaGlsZEFjY3QuZ2V0Q2FwYWJpbGl0eShjb250cm9sbGVySUQ6IGNvbnRyb2xsZXJJRCwgdHlwZTogY2FwVHlwZSkgPz8gcGFuaWMoIm5vIGNhcCBmb3VuZCIpCiAgICBsZXQgY2hpbGRDYXAgPSBjYXAgYXMhIENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgogICAgYXNzZXJ0KGNoaWxkQ2FwLmNoZWNrKCksIG1lc3NhZ2U6ICJpbnZhbGlkIHByb3ZpZGVyIGNhcGFiaWxpdHkiKQogICAgCiAgICBsZXQgcGFyZW50UmVmID0gIHNpZ25lci5zdG9yYWdlLmJvcnJvdzxhdXRoKE5vbkZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7Tm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KGZyb20gOiBjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCkhCiAgICBsZXQgY2hpbGRSZWYgPSBjaGlsZENhcC5ib3Jyb3coKSEKICAgIC8vIFdpdGhkcmF3IHRva2VucyBmcm9tIHRoZSBzaWduZXIncyBzdG9yZWQgdmF1bHQKICAgIGxldCBuZnQgPC0gcGFyZW50UmVmIS53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkhCiAgICAKICAgIGNoaWxkUmVmLmRlcG9zaXQodG9rZW46IDwtIG5mdCkKICB9Cn0=", + "unlinkChildAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdW5saW5rQ2hpbGRBY2NvdW50IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgSHlicmlkQ3VzdG9keSBmcm9tIDB4SHlicmlkQ3VzdG9keQoKdHJhbnNhY3Rpb24oY2hpbGQ6IEFkZHJlc3MpIHsKICAgIHByZXBhcmUgKGFjY3Q6IEF1dGhBY2NvdW50KSB7CiAgICAgICAgbGV0IG1hbmFnZXIgPSBhY2N0LmJvcnJvdzwmSHlicmlkQ3VzdG9keS5NYW5hZ2VyPihmcm9tOiBIeWJyaWRDdXN0b2R5Lk1hbmFnZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIm1hbmFnZXIgbm90IGZvdW5kIikKICAgICAgICBtYW5hZ2VyLnJlbW92ZUNoaWxkKGFkZHI6IGNoaWxkKQogICAgfQp9" }, "lostAndFound": { - "claimFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjbGFpbUZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAoKCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcpIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0VHlwZSA9IENvbXBvc2l0ZVR5cGUodmF1bHRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBWYXVsdCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKCiAgICAgICAKCiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uVmF1bHR9Pihmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKAogICAgICAgICAgICAgICAgPC0gdmF1bHREYXRhLmNyZWF0ZUVtcHR5VmF1bHQoKSwKICAgICAgICAgICAgICAgIHRvOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKQogICAgICAgIH0KCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCksCiAgICAgICAgICAgIGF0OiB2YXVsdERhdGEucmVjZWl2ZXJQYXRoCiAgICAgICAgKQogICAgICAgICAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih2YXVsdERhdGEucmVjZWl2ZXJQYXRoKQoKICAgICAgICBMb3N0QW5kRm91bmQucmVkZWVtQWxsKHR5cGU6IHZhdWx0VHlwZSwgbWF4OiBuaWwsIHJlY2VpdmVyOiBjYXApCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVyKGJ5Q2FwYWJpbGl0eUlEOiBjYXAuaWQpIS5kZWxldGUoKQogICAgfQp9", - "claimNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjbGFpbU5GVCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICAKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IExvc3RBbmRGb3VuZCBmcm9tIDB4TG9zdEFuZEZvdW5kCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgbmZ0VHlwZSA9IENvbXBvc2l0ZVR5cGUobmZ0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgTkZUIHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3RBZGRyZXNzID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0QWRkcmVzcyhmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdE5hbWUgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3ROYW1lKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCgogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KG5mdENvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IG5mdENvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gTkZUIGNvbnRyYWN0IikKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAKCiAgICAgICAgaWYgYWNjdC5zdG9yYWdlLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgICAgICBhY2N0LnN0b3JhZ2Uuc2F2ZSgKICAgICAgICAgICAgICAgIDwtIGNvbGxlY3Rpb25EYXRhLmNyZWF0ZUVtcHR5Q29sbGVjdGlvbigpLAogICAgICAgICAgICAgICAgdG86IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkKICAgICAgICB9CgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnVucHVibGlzaChjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKQogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnB1Ymxpc2goCiAgICAgICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihjb2xsZWN0aW9uRGF0YS5zdG9yYWdlUGF0aCksCiAgICAgICAgICAgIGF0OiBjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoCiAgICAgICAgKQogICAgICAgICAgICAgICAgCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCgogICAgICAgIExvc3RBbmRGb3VuZC5yZWRlZW1BbGwodHlwZTogbmZ0VHlwZSwgbWF4OiBuaWwsIHJlY2VpdmVyOiBjYXApCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5nZXRDb250cm9sbGVyKGJ5Q2FwYWJpbGl0eUlEOiBjYXAuaWQpIS5kZWxldGUoKQogICAgfQp9", - "queryUnclaimedFTs": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBxdWVyeVVuY2xhaW1lZEZUcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOiBbQW55U3RydWN0P10gewogICAgbGV0IHRpY2tldHMgPSBMb3N0QW5kRm91bmQuYm9ycm93QWxsVGlja2V0cyhhZGRyOiBhZGRyKQogICAgCiAgICBsZXQgZGlzcGxheUFycjogW0FueVN0cnVjdD9dICA9IFtdCiAgICBmb3IgdGlja2V0IGluIHRpY2tldHMgewogICAgICAgIGlmIHRpY2tldC50eXBlLmlzU3VidHlwZShvZjogVHlwZTxAe0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigpKSB7IAogICAgICAgICAgICBkaXNwbGF5QXJyLmFwcGVuZCh7ImRpc3BsYXkiOiB0aWNrZXQuZGlzcGxheSwgImJhbGFuY2UiOiB0aWNrZXQuZ2V0RnVuZ2libGVUb2tlbkJhbGFuY2UoKX0pCiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIGRpc3BsYXlBcnIKfQ==", - "queryUnclaimedNFTs": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBxdWVyeVVuY2xhaW1lZE5GVHMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IExvc3RBbmRGb3VuZCBmcm9tIDB4TG9zdEFuZEZvdW5kCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyOiBBZGRyZXNzKTogWyZNZXRhZGF0YVZpZXdzLkRpc3BsYXk/XSB7CiAgICBsZXQgdGlja2V0cyA9IExvc3RBbmRGb3VuZC5ib3Jyb3dBbGxUaWNrZXRzKGFkZHI6IGFkZHIpCiAgICAKICAgIGxldCBkaXNwbGF5QXJyOiBbJk1ldGFkYXRhVmlld3MuRGlzcGxheT9dICA9IFtdCiAgICBmb3IgdGlja2V0IGluIHRpY2tldHMgewogICAgICAgIGlmIHRpY2tldC50eXBlLmlzU3VidHlwZShvZjogVHlwZTxAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfT4oKSkgeyAKICAgICAgICAgICAgZGlzcGxheUFyci5hcHBlbmQodGlja2V0LmRpc3BsYXkpCiAgICAgICAgfQogICAgfQogICAgCiAgICByZXR1cm4gZGlzcGxheUFycgp9", - "queryUnclaimedNumber": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBxdWVyeVVuY2xhaW1lZE51bWJlciAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOiBJbnQgewogICAgbGV0IHNoZWxmTWFuYWdlciA9IExvc3RBbmRGb3VuZC5ib3Jyb3dTaGVsZk1hbmFnZXIoKQogICAgbGV0IHNoZWxmID0gc2hlbGZNYW5hZ2VyLmJvcnJvd1NoZWxmKHJlZGVlbWVyOiBhZGRyKQogICAgaWYgc2hlbGYgPT0gbmlsIHsKICAgICAgICByZXR1cm4gMAogICAgfQogICAgCiAgICByZXR1cm4gc2hlbGYhLmdldFJlZGVlbWFibGVUeXBlcygpLmxlbmd0aAp9", - "sendFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kRlQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKHZhdWx0SWRlbnRpZmllcjogU3RyaW5nLCByZWNpcGllbnQ6IEFkZHJlc3MsIGFtb3VudDogVUZpeDY0LCBtZW1vOiBTdHJpbmcpIHsKICAgIGxldCBzZW50VmF1bHQ6IEB7RnVuZ2libGVUb2tlbi5WYXVsdH0KICAgIGxldCBmbG93UHJvdmlkZXI6IENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PgogICAgbGV0IGZsb3dSZWNlaXZlcjogQ2FwYWJpbGl0eTwmRmxvd1Rva2VuLlZhdWx0PgogICAgbGV0IHJlY2VpdmVyQ2FwOiBDYXBhYmlsaXR5PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+CiAgICBsZXQgZGlzcGxheTogTWV0YWRhdGFWaWV3cy5EaXNwbGF5PwoKCiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIC8vIFBhcnNlIHRoZSBWYXVsdCBpZGVudGlmaWVyIGludG8gaXRzIGNvbXBvbmVudHMKICAgICAgICBsZXQgdG9rZW5Db250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiB2YXVsdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgIGxldCB2aWV3UmVzb2x2ZXIgPSBnZXRBY2NvdW50KHRva2VuQ29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogdG9rZW5Db250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIEZ1bmdpYmxlVG9rZW4gY29udHJhY3QiKQogICAgICAgIGxldCB2YXVsdERhdGEgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBGVFZhdWx0RGF0YSB2aWV3IikKCgogICAgICAgIGxldCB2YXVsdERpc3BsYXkgPSB2aWV3UmVzb2x2ZXIucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlREaXNwbGF5PigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZURGlzcGxheT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKICAgICAgICBzZWxmLmRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLkRpc3BsYXkoCiAgICAgICAgICAgIG5hbWU6IHZhdWx0RGlzcGxheS5uYW1lLAogICAgICAgICAgICBkZXNjcmlwdGlvbjogdmF1bHREaXNwbGF5LmRlc2NyaXB0aW9uLAogICAgICAgICAgICB0aHVtYm5haWw6IHZhdWx0RGlzcGxheS5sb2dvcy5pdGVtc1swXS5maWxlCiAgICAgICAgKQoKICAgICAgICBsZXQgdmF1bHQgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fT4oCiAgICAgICAgICAgICAgICBmcm9tOiB2YXVsdERhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHQud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCgogICAgICAgIHZhciBwcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+PyA9IG5pbAogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZm9yRWFjaENvbnRyb2xsZXIoZm9yUGF0aDogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQsIGZ1bihjOiAmU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyKTogQm9vbCB7CiAgICAgICAgICAgIGlmIGMuYm9ycm93VHlwZSA9PSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oKSB7CiAgICAgICAgICAgICAgICBwcm92aWRlciA9IGMuY2FwYWJpbGl0eSBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9KQoKICAgICAgICBpZiBwcm92aWRlciA9PSBuaWwgewogICAgICAgICAgICBwcm92aWRlciA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pigvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICB9CiAgICAgICAgc2VsZi5mbG93UHJvdmlkZXIgPSBwcm92aWRlciEKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlciA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwmRmxvd1Rva2VuLlZhdWx0PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICBzZWxmLnJlY2VpdmVyQ2FwID0gZ2V0QWNjb3VudChyZWNpcGllbnQpLmNhcGFiaWxpdGllcy5nZXQ8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4odmF1bHREYXRhLnJlY2VpdmVyUGF0aCkhCiAgICB9CgogICAgZXhlY3V0ZSB7CgogICAgICAgIAogICAgICAgIGxldCBkZXBvc2l0RXN0aW1hdGUgPC0gTG9zdEFuZEZvdW5kLmVzdGltYXRlRGVwb3NpdChyZWRlZW1lcjogcmVjaXBpZW50LCBpdGVtOiA8LXNlbGYuc2VudFZhdWx0LCBtZW1vOiBtZW1vLCBkaXNwbGF5OiBzZWxmLmRpc3BsYXkpCiAgICAgICAgbGV0IHN0b3JhZ2VGZWUgPC0gc2VsZi5mbG93UHJvdmlkZXIuYm9ycm93KCkhLndpdGhkcmF3KGFtb3VudDogZGVwb3NpdEVzdGltYXRlLnN0b3JhZ2VGZWUpCiAgICAgICAgbGV0IGl0ZW0gPC0gZGVwb3NpdEVzdGltYXRlLndpdGhkcmF3KCkKCiAgICAgICAgTG9zdEFuZEZvdW5kLnRyeVNlbmRSZXNvdXJjZSgKICAgICAgICAgICAgaXRlbTogPC1pdGVtLAogICAgICAgICAgICBjYXA6IHNlbGYucmVjZWl2ZXJDYXAsCiAgICAgICAgICAgIG1lbW86IG1lbW8sCiAgICAgICAgICAgIGRpc3BsYXk6IHNlbGYuZGlzcGxheSwKICAgICAgICAgICAgc3RvcmFnZVBheW1lbnQ6ICZzdG9yYWdlRmVlIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fSwKICAgICAgICAgICAgZmxvd1Rva2VuUmVwYXltZW50OiBzZWxmLmZsb3dSZWNlaXZlcgogICAgICAgICkKCiAgICAgICAgc2VsZi5mbG93UmVjZWl2ZXIuYm9ycm93KCkhLmRlcG9zaXQoZnJvbTogPC1zdG9yYWdlRmVlKQogICAgICAgIGRlc3Ryb3kgZGVwb3NpdEVzdGltYXRlCiAgICB9Cn0=", - "sendNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZW5kTkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGbG93VG9rZW4KaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IExvc3RBbmRGb3VuZCBmcm9tIDB4TG9zdEFuZEZvdW5kCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBWaWV3UmVzb2x2ZXIgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93RVZNQnJpZGdlVXRpbHMgZnJvbSAweEZsb3dFVk1CcmlkZ2UKCgp0cmFuc2FjdGlvbihuZnRJZGVudGlmaWVyOiBTdHJpbmcsIHJlY2lwaWVudDogQWRkcmVzcywgaWQ6IFVJbnQ2NCwgbWVtbzogU3RyaW5nKSB7CiAgICBsZXQgbmZ0OiBAe05vbkZ1bmdpYmxlVG9rZW4uTkZUfQogICAgbGV0IGZsb3dQcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgZmxvd1JlY2VpdmVyOiBDYXBhYmlsaXR5PCZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgcmVjZWl2ZXJDYXA6IENhcGFiaWxpdHk8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PgoKCiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgLyogLS0tIFJldHJpZXZlIHRoZSBmdW5kcyAtLS0gKi8KICAgICAgICAvLwogICAgICAgIC8vIEJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgRnVuZ2libGVUb2tlbiBWYXVsdAogICAgICAgCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgICAKCiAgICAgICAgbGV0IGNvbGxlY3Rpb24gPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb259PigKICAgICAgICAgICAgICAgIGZyb206IGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoCiAgICAgICAgICAgICkgPz8gcGFuaWMoIkNvdWxkIG5vdCBhY2Nlc3Mgc2lnbmVyJ3MgRnVuZ2libGVUb2tlbiBWYXVsdCIpCgogICAgICAgIHNlbGYubmZ0IDwtIGNvbGxlY3Rpb24ud2l0aGRyYXcod2l0aGRyYXdJRDogaWQpCgogICAgICAgIHZhciBwcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+PyA9IG5pbAogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuZm9yRWFjaENvbnRyb2xsZXIoZm9yUGF0aDogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQsIGZ1bihjOiAmU3RvcmFnZUNhcGFiaWxpdHlDb250cm9sbGVyKTogQm9vbCB7CiAgICAgICAgICAgIGlmIGMuYm9ycm93VHlwZSA9PSBUeXBlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oKSB7CiAgICAgICAgICAgICAgICBwcm92aWRlciA9IGMuY2FwYWJpbGl0eSBhcyEgQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHRydWUKICAgICAgICB9KQoKICAgICAgICBpZiBwcm92aWRlciA9PSBuaWwgewogICAgICAgICAgICBwcm92aWRlciA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0Pigvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCkKICAgICAgICB9CiAgICAgICAgc2VsZi5mbG93UHJvdmlkZXIgPSBwcm92aWRlciEKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlciA9IGFjY3QuY2FwYWJpbGl0aWVzLmdldDwmRmxvd1Rva2VuLlZhdWx0PigvcHVibGljL2Zsb3dUb2tlblJlY2VpdmVyKSEKICAgICAgICBzZWxmLnJlY2VpdmVyQ2FwID0gZ2V0QWNjb3VudChyZWNpcGllbnQpLmNhcGFiaWxpdGllcy5nZXQ8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihjb2xsZWN0aW9uRGF0YS5wdWJsaWNQYXRoKSEKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICAKICAgICAgICBsZXQgZGlzcGxheSA9IHNlbGYubmZ0LnJlc29sdmVWaWV3KFR5cGU8TWV0YWRhdGFWaWV3cy5EaXNwbGF5PigpKSBhcyEgTWV0YWRhdGFWaWV3cy5EaXNwbGF5PwoKICAgICAgICBsZXQgZGVwb3NpdEVzdGltYXRlIDwtIExvc3RBbmRGb3VuZC5lc3RpbWF0ZURlcG9zaXQocmVkZWVtZXI6IHJlY2lwaWVudCwgaXRlbTogPC1zZWxmLm5mdCwgbWVtbzogbWVtbywgZGlzcGxheTogZGlzcGxheSkKICAgICAgICBsZXQgc3RvcmFnZUZlZSA8LSBzZWxmLmZsb3dQcm92aWRlci5ib3Jyb3coKSEud2l0aGRyYXcoYW1vdW50OiBkZXBvc2l0RXN0aW1hdGUuc3RvcmFnZUZlZSkKICAgICAgICBsZXQgaXRlbSA8LSBkZXBvc2l0RXN0aW1hdGUud2l0aGRyYXcoKQoKICAgICAgICBMb3N0QW5kRm91bmQudHJ5U2VuZFJlc291cmNlKAogICAgICAgICAgICBpdGVtOiA8LWl0ZW0sCiAgICAgICAgICAgIGNhcDogc2VsZi5yZWNlaXZlckNhcCwKICAgICAgICAgICAgbWVtbzogbWVtbywKICAgICAgICAgICAgZGlzcGxheTogZGlzcGxheSwKICAgICAgICAgICAgc3RvcmFnZVBheW1lbnQ6ICZzdG9yYWdlRmVlIGFzIGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlZhdWx0fSwKICAgICAgICAgICAgZmxvd1Rva2VuUmVwYXltZW50OiBzZWxmLmZsb3dSZWNlaXZlcgogICAgICAgICkKCiAgICAgICAgc2VsZi5mbG93UmVjZWl2ZXIuYm9ycm93KCkhLmRlcG9zaXQoZnJvbTogPC1zdG9yYWdlRmVlKQogICAgICAgIGRlc3Ryb3kgZGVwb3NpdEVzdGltYXRlCiAgICB9Cn0=" + "claimFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2xhaW1GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCgoKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgp0cmFuc2FjdGlvbih2YXVsdElkZW50aWZpZXI6IFN0cmluZykgewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgdmF1bHRUeXBlID0gQ29tcG9zaXRlVHlwZSh2YXVsdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IFZhdWx0IHR5cGUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdCh2YXVsdElkZW50aWZpZXIpKQogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudCh0b2tlbkNvbnRyYWN0QWRkcmVzcykuY29udHJhY3RzLmJvcnJvdzwme1ZpZXdSZXNvbHZlcn0+KG5hbWU6IHRva2VuQ29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBGdW5naWJsZVRva2VuIGNvbnRyYWN0IikKICAgICAgICBsZXQgdmF1bHREYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPigpCiAgICAgICAgICAgICkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgoKICAgICAgIAoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5WYXVsdH0+KGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgYWNjdC5zdG9yYWdlLnNhdmUoCiAgICAgICAgICAgICAgICA8LSB2YXVsdERhdGEuY3JlYXRlRW1wdHlWYXVsdCgpLAogICAgICAgICAgICAgICAgdG86IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApCiAgICAgICAgfQoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy51bnB1Ymxpc2godmF1bHREYXRhLnJlY2VpdmVyUGF0aCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4odmF1bHREYXRhLnN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IHZhdWx0RGF0YS5yZWNlaXZlclBhdGgKICAgICAgICApCiAgICAgICAgICAgICAgICAKICAgICAgICBsZXQgY2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KHZhdWx0RGF0YS5yZWNlaXZlclBhdGgpCgogICAgICAgIExvc3RBbmRGb3VuZC5yZWRlZW1BbGwodHlwZTogdmF1bHRUeXBlLCBtYXg6IG5pbCwgcmVjZWl2ZXI6IGNhcCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXIoYnlDYXBhYmlsaXR5SUQ6IGNhcC5pZCkhLmRlbGV0ZSgpCiAgICB9Cn0=", + "claimNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2xhaW1ORlQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24obmZ0SWRlbnRpZmllcjogU3RyaW5nKSB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBuZnRUeXBlID0gQ29tcG9zaXRlVHlwZShuZnRJZGVudGlmaWVyKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGNvbnN0cnVjdCBORlQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQogICAgICAgIGxldCBuZnRDb250cmFjdEFkZHJlc3MgPSBGbG93RVZNQnJpZGdlVXRpbHMuZ2V0Q29udHJhY3RBZGRyZXNzKGZyb21UeXBlOiBuZnRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBhZGRyZXNzIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0TmFtZSA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdE5hbWUoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IG5hbWUgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKCiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQobmZ0Q29udHJhY3RBZGRyZXNzKS5jb250cmFjdHMuYm9ycm93PCZ7Vmlld1Jlc29sdmVyfT4obmFtZTogbmZ0Q29udHJhY3ROYW1lKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBWaWV3UmVzb2x2ZXIgZnJvbSBORlQgY29udHJhY3QiKQogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPigpCiAgICAgICAgICAgICkgYXMhIE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE/ID8/IHBhbmljKCJDb3VsZCBub3QgcmVzb2x2ZSBORlRDb2xsZWN0aW9uRGF0YSB2aWV3IikKICAgICAgICAKICAgICAgIAoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9ufT4oZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKAogICAgICAgICAgICAgICAgPC0gY29sbGVjdGlvbkRhdGEuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksCiAgICAgICAgICAgICAgICB0bzogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKQogICAgICAgIH0KCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGNvbGxlY3Rpb25EYXRhLnN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgKICAgICAgICApCiAgICAgICAgICAgICAgICAKICAgICAgICBsZXQgY2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZ7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4oY29sbGVjdGlvbkRhdGEucHVibGljUGF0aCkKCiAgICAgICAgTG9zdEFuZEZvdW5kLnJlZGVlbUFsbCh0eXBlOiBuZnRUeXBlLCBtYXg6IG5pbCwgcmVjZWl2ZXI6IGNhcCkKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmdldENvbnRyb2xsZXIoYnlDYXBhYmlsaXR5SUQ6IGNhcC5pZCkhLmRlbGV0ZSgpCiAgICB9Cn0=", + "queryUnclaimedFTs": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcXVlcnlVbmNsYWltZWRGVHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IFtBbnlTdHJ1Y3Q/XSB7CiAgICBsZXQgdGlja2V0cyA9IExvc3RBbmRGb3VuZC5ib3Jyb3dBbGxUaWNrZXRzKGFkZHI6IGFkZHIpCiAgICAKICAgIGxldCBkaXNwbGF5QXJyOiBbQW55U3RydWN0P10gID0gW10KICAgIGZvciB0aWNrZXQgaW4gdGlja2V0cyB7CiAgICAgICAgaWYgdGlja2V0LnR5cGUuaXNTdWJ0eXBlKG9mOiBUeXBlPEB7RnVuZ2libGVUb2tlbi5WYXVsdH0+KCkpIHsgCiAgICAgICAgICAgIGRpc3BsYXlBcnIuYXBwZW5kKHsiZGlzcGxheSI6IHRpY2tldC5kaXNwbGF5LCAiYmFsYW5jZSI6IHRpY2tldC5nZXRGdW5naWJsZVRva2VuQmFsYW5jZSgpfSkKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gZGlzcGxheUFycgp9", + "queryUnclaimedNFTs": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcXVlcnlVbmNsYWltZWRORlRzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHI6IEFkZHJlc3MpOiBbJk1ldGFkYXRhVmlld3MuRGlzcGxheT9dIHsKICAgIGxldCB0aWNrZXRzID0gTG9zdEFuZEZvdW5kLmJvcnJvd0FsbFRpY2tldHMoYWRkcjogYWRkcikKICAgIAogICAgbGV0IGRpc3BsYXlBcnI6IFsmTWV0YWRhdGFWaWV3cy5EaXNwbGF5P10gID0gW10KICAgIGZvciB0aWNrZXQgaW4gdGlja2V0cyB7CiAgICAgICAgaWYgdGlja2V0LnR5cGUuaXNTdWJ0eXBlKG9mOiBUeXBlPEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9PigpKSB7IAogICAgICAgICAgICBkaXNwbGF5QXJyLmFwcGVuZCh0aWNrZXQuZGlzcGxheSkKICAgICAgICB9CiAgICB9CiAgICAKICAgIHJldHVybiBkaXNwbGF5QXJyCn0=", + "queryUnclaimedNumber": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcXVlcnlVbmNsYWltZWROdW1iZXIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcjogQWRkcmVzcyk6IEludCB7CiAgICBsZXQgc2hlbGZNYW5hZ2VyID0gTG9zdEFuZEZvdW5kLmJvcnJvd1NoZWxmTWFuYWdlcigpCiAgICBsZXQgc2hlbGYgPSBzaGVsZk1hbmFnZXIuYm9ycm93U2hlbGYocmVkZWVtZXI6IGFkZHIpCiAgICBpZiBzaGVsZiA9PSBuaWwgewogICAgICAgIHJldHVybiAwCiAgICB9CiAgICAKICAgIHJldHVybiBzaGVsZiEuZ2V0UmVkZWVtYWJsZVR5cGVzKCkubGVuZ3RoCn0=", + "sendFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZEZUIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4Rmxvd1Rva2VuCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBMb3N0QW5kRm91bmQgZnJvbSAweExvc3RBbmRGb3VuZAppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgVmlld1Jlc29sdmVyIGZyb20gMHhNZXRhZGF0YVZpZXdzCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd0VWTUJyaWRnZVV0aWxzIGZyb20gMHhGbG93RVZNQnJpZGdlCgoKdHJhbnNhY3Rpb24odmF1bHRJZGVudGlmaWVyOiBTdHJpbmcsIHJlY2lwaWVudDogQWRkcmVzcywgYW1vdW50OiBVRml4NjQsIG1lbW86IFN0cmluZykgewogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgbGV0IGZsb3dQcm92aWRlcjogQ2FwYWJpbGl0eTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgZmxvd1JlY2VpdmVyOiBDYXBhYmlsaXR5PCZGbG93VG9rZW4uVmF1bHQ+CiAgICBsZXQgcmVjZWl2ZXJDYXA6IENhcGFiaWxpdHk8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyfT4KICAgIGxldCBkaXNwbGF5OiBNZXRhZGF0YVZpZXdzLkRpc3BsYXk/CgoKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgIGxldCB2YXVsdFR5cGUgPSBDb21wb3NpdGVUeXBlKHZhdWx0SWRlbnRpZmllcikKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBjb25zdHJ1Y3QgVmF1bHQgdHlwZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgLy8gUGFyc2UgdGhlIFZhdWx0IGlkZW50aWZpZXIgaW50byBpdHMgY29tcG9uZW50cwogICAgICAgIGxldCB0b2tlbkNvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IHZhdWx0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgYWRkcmVzcyBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KHZhdWx0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IHRva2VuQ29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogdmF1bHRUeXBlKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCBjb250cmFjdCBuYW1lIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQodmF1bHRJZGVudGlmaWVyKSkKICAgICAgICAKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAgbGV0IHZpZXdSZXNvbHZlciA9IGdldEFjY291bnQodG9rZW5Db250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiB0b2tlbkNvbnRyYWN0TmFtZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgVmlld1Jlc29sdmVyIGZyb20gRnVuZ2libGVUb2tlbiBjb250cmFjdCIpCiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKQogICAgICAgICAgICApIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIEZUVmF1bHREYXRhIHZpZXciKQoKCiAgICAgICAgbGV0IHZhdWx0RGlzcGxheSA9IHZpZXdSZXNvbHZlci5yZXNvbHZlQ29udHJhY3RWaWV3KAogICAgICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiBuaWwsCiAgICAgICAgICAgICAgICB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVERpc3BsYXk+KCkKICAgICAgICAgICAgKSBhcyEgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlREaXNwbGF5PyA/PyBwYW5pYygiQ291bGQgbm90IHJlc29sdmUgRlRWYXVsdERhdGEgdmlldyIpCgogICAgICAgIHNlbGYuZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuRGlzcGxheSgKICAgICAgICAgICAgbmFtZTogdmF1bHREaXNwbGF5Lm5hbWUsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiB2YXVsdERpc3BsYXkuZGVzY3JpcHRpb24sCiAgICAgICAgICAgIHRodW1ibmFpbDogdmF1bHREaXNwbGF5LmxvZ29zLml0ZW1zWzBdLmZpbGUKICAgICAgICApCgogICAgICAgIGxldCB2YXVsdCA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9PigKICAgICAgICAgICAgICAgIGZyb206IHZhdWx0RGF0YS5zdG9yYWdlUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgYWNjZXNzIHNpZ25lcidzIEZ1bmdpYmxlVG9rZW4gVmF1bHQiKQoKICAgICAgICBzZWxmLnNlbnRWYXVsdCA8LSB2YXVsdC53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkKCiAgICAgICAgdmFyIHByb3ZpZGVyOiBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4/ID0gbmlsCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5mb3JFYWNoQ29udHJvbGxlcihmb3JQYXRoOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCwgZnVuKGM6ICZTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIpOiBCb29sIHsKICAgICAgICAgICAgaWYgYy5ib3Jyb3dUeXBlID09IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigpIHsKICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gYy5jYXBhYmlsaXR5IGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIH0pCgogICAgICAgIGlmIHByb3ZpZGVyID09IG5pbCB7CiAgICAgICAgICAgIHByb3ZpZGVyID0gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgIH0KICAgICAgICBzZWxmLmZsb3dQcm92aWRlciA9IHByb3ZpZGVyIQogICAgICAgIHNlbGYuZmxvd1JlY2VpdmVyID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZGbG93VG9rZW4uVmF1bHQ+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHNlbGYucmVjZWl2ZXJDYXAgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9Pih2YXVsdERhdGEucmVjZWl2ZXJQYXRoKSEKICAgIH0KCiAgICBleGVjdXRlIHsKCiAgICAgICAgCiAgICAgICAgbGV0IGRlcG9zaXRFc3RpbWF0ZSA8LSBMb3N0QW5kRm91bmQuZXN0aW1hdGVEZXBvc2l0KHJlZGVlbWVyOiByZWNpcGllbnQsIGl0ZW06IDwtc2VsZi5zZW50VmF1bHQsIG1lbW86IG1lbW8sIGRpc3BsYXk6IHNlbGYuZGlzcGxheSkKICAgICAgICBsZXQgc3RvcmFnZUZlZSA8LSBzZWxmLmZsb3dQcm92aWRlci5ib3Jyb3coKSEud2l0aGRyYXcoYW1vdW50OiBkZXBvc2l0RXN0aW1hdGUuc3RvcmFnZUZlZSkKICAgICAgICBsZXQgaXRlbSA8LSBkZXBvc2l0RXN0aW1hdGUud2l0aGRyYXcoKQoKICAgICAgICBMb3N0QW5kRm91bmQudHJ5U2VuZFJlc291cmNlKAogICAgICAgICAgICBpdGVtOiA8LWl0ZW0sCiAgICAgICAgICAgIGNhcDogc2VsZi5yZWNlaXZlckNhcCwKICAgICAgICAgICAgbWVtbzogbWVtbywKICAgICAgICAgICAgZGlzcGxheTogc2VsZi5kaXNwbGF5LAogICAgICAgICAgICBzdG9yYWdlUGF5bWVudDogJnN0b3JhZ2VGZWUgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9LAogICAgICAgICAgICBmbG93VG9rZW5SZXBheW1lbnQ6IHNlbGYuZmxvd1JlY2VpdmVyCiAgICAgICAgKQoKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlci5ib3Jyb3coKSEuZGVwb3NpdChmcm9tOiA8LXN0b3JhZ2VGZWUpCiAgICAgICAgZGVzdHJveSBkZXBvc2l0RXN0aW1hdGUKICAgIH0KfQ==", + "sendNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2VuZE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweEZsb3dUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTG9zdEFuZEZvdW5kIGZyb20gMHhMb3N0QW5kRm91bmQKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKaW1wb3J0IFZpZXdSZXNvbHZlciBmcm9tIDB4TWV0YWRhdGFWaWV3cwppbXBvcnQgRnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MgZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEZsb3dFVk1CcmlkZ2VVdGlscyBmcm9tIDB4Rmxvd0VWTUJyaWRnZQoKCnRyYW5zYWN0aW9uKG5mdElkZW50aWZpZXI6IFN0cmluZywgcmVjaXBpZW50OiBBZGRyZXNzLCBpZDogVUludDY0LCBtZW1vOiBTdHJpbmcpIHsKICAgIGxldCBuZnQ6IEB7Tm9uRnVuZ2libGVUb2tlbi5ORlR9CiAgICBsZXQgZmxvd1Byb3ZpZGVyOiBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4KICAgIGxldCBmbG93UmVjZWl2ZXI6IENhcGFiaWxpdHk8JkZsb3dUb2tlbi5WYXVsdD4KICAgIGxldCByZWNlaXZlckNhcDogQ2FwYWJpbGl0eTwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+CgoKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IG5mdFR5cGUgPSBDb21wb3NpdGVUeXBlKG5mdElkZW50aWZpZXIpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgY29uc3RydWN0IE5GVCB0eXBlIGZyb20gaWRlbnRpZmllcjogIi5jb25jYXQobmZ0SWRlbnRpZmllcikpCiAgICAgICAgbGV0IG5mdENvbnRyYWN0QWRkcmVzcyA9IEZsb3dFVk1CcmlkZ2VVdGlscy5nZXRDb250cmFjdEFkZHJlc3MoZnJvbVR5cGU6IG5mdFR5cGUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IGNvbnRyYWN0IGFkZHJlc3MgZnJvbSBpZGVudGlmaWVyOiAiLmNvbmNhdChuZnRJZGVudGlmaWVyKSkKICAgICAgICBsZXQgbmZ0Q29udHJhY3ROYW1lID0gRmxvd0VWTUJyaWRnZVV0aWxzLmdldENvbnRyYWN0TmFtZShmcm9tVHlwZTogbmZ0VHlwZSkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgY29udHJhY3QgbmFtZSBmcm9tIGlkZW50aWZpZXI6ICIuY29uY2F0KG5mdElkZW50aWZpZXIpKQoKICAgICAgICAvKiAtLS0gUmV0cmlldmUgdGhlIGZ1bmRzIC0tLSAqLwogICAgICAgIC8vCiAgICAgICAgLy8gQm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBGdW5naWJsZVRva2VuIFZhdWx0CiAgICAgICAKICAgICAgICBsZXQgdmlld1Jlc29sdmVyID0gZ2V0QWNjb3VudChuZnRDb250cmFjdEFkZHJlc3MpLmNvbnRyYWN0cy5ib3Jyb3c8JntWaWV3UmVzb2x2ZXJ9PihuYW1lOiBuZnRDb250cmFjdE5hbWUpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IFZpZXdSZXNvbHZlciBmcm9tIE5GVCBjb250cmFjdCIpCiAgICAgICAgbGV0IGNvbGxlY3Rpb25EYXRhID0gdmlld1Jlc29sdmVyLnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8gPz8gcGFuaWMoIkNvdWxkIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIAogICAgICAgIAoKICAgICAgICBsZXQgY29sbGVjdGlvbiA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbn0+KAogICAgICAgICAgICAgICAgZnJvbTogY29sbGVjdGlvbkRhdGEuc3RvcmFnZVBhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGFjY2VzcyBzaWduZXIncyBGdW5naWJsZVRva2VuIFZhdWx0IikKCiAgICAgICAgc2VsZi5uZnQgPC0gY29sbGVjdGlvbi53aXRoZHJhdyh3aXRoZHJhd0lEOiBpZCkKCiAgICAgICAgdmFyIHByb3ZpZGVyOiBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4/ID0gbmlsCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5mb3JFYWNoQ29udHJvbGxlcihmb3JQYXRoOiAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdCwgZnVuKGM6ICZTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIpOiBCb29sIHsKICAgICAgICAgICAgaWYgYy5ib3Jyb3dUeXBlID09IFR5cGU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0PigpIHsKICAgICAgICAgICAgICAgIHByb3ZpZGVyID0gYy5jYXBhYmlsaXR5IGFzISBDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4KICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gdHJ1ZQogICAgICAgIH0pCgogICAgICAgIGlmIHByb3ZpZGVyID09IG5pbCB7CiAgICAgICAgICAgIHByb3ZpZGVyID0gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgIH0KICAgICAgICBzZWxmLmZsb3dQcm92aWRlciA9IHByb3ZpZGVyIQogICAgICAgIHNlbGYuZmxvd1JlY2VpdmVyID0gYWNjdC5jYXBhYmlsaXRpZXMuZ2V0PCZGbG93VG9rZW4uVmF1bHQ+KC9wdWJsaWMvZmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgIHNlbGYucmVjZWl2ZXJDYXAgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmdldDwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgpIQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIAogICAgICAgIGxldCBkaXNwbGF5ID0gc2VsZi5uZnQucmVzb2x2ZVZpZXcoVHlwZTxNZXRhZGF0YVZpZXdzLkRpc3BsYXk+KCkpIGFzISBNZXRhZGF0YVZpZXdzLkRpc3BsYXk/CgogICAgICAgIGxldCBkZXBvc2l0RXN0aW1hdGUgPC0gTG9zdEFuZEZvdW5kLmVzdGltYXRlRGVwb3NpdChyZWRlZW1lcjogcmVjaXBpZW50LCBpdGVtOiA8LXNlbGYubmZ0LCBtZW1vOiBtZW1vLCBkaXNwbGF5OiBkaXNwbGF5KQogICAgICAgIGxldCBzdG9yYWdlRmVlIDwtIHNlbGYuZmxvd1Byb3ZpZGVyLmJvcnJvdygpIS53aXRoZHJhdyhhbW91bnQ6IGRlcG9zaXRFc3RpbWF0ZS5zdG9yYWdlRmVlKQogICAgICAgIGxldCBpdGVtIDwtIGRlcG9zaXRFc3RpbWF0ZS53aXRoZHJhdygpCgogICAgICAgIExvc3RBbmRGb3VuZC50cnlTZW5kUmVzb3VyY2UoCiAgICAgICAgICAgIGl0ZW06IDwtaXRlbSwKICAgICAgICAgICAgY2FwOiBzZWxmLnJlY2VpdmVyQ2FwLAogICAgICAgICAgICBtZW1vOiBtZW1vLAogICAgICAgICAgICBkaXNwbGF5OiBkaXNwbGF5LAogICAgICAgICAgICBzdG9yYWdlUGF5bWVudDogJnN0b3JhZ2VGZWUgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uVmF1bHR9LAogICAgICAgICAgICBmbG93VG9rZW5SZXBheW1lbnQ6IHNlbGYuZmxvd1JlY2VpdmVyCiAgICAgICAgKQoKICAgICAgICBzZWxmLmZsb3dSZWNlaXZlci5ib3Jyb3coKSEuZGVwb3NpdChmcm9tOiA8LXN0b3JhZ2VGZWUpCiAgICAgICAgZGVzdHJveSBkZXBvc2l0RXN0aW1hdGUKICAgIH0KfQ==" }, "staking": { - "checkSetup": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja1NldHVwIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBEZXRlcm1pbmVzIGlmIGFuIGFjY291bnQgaXMgc2V0IHVwIHdpdGggYSBTdGFraW5nIENvbGxlY3Rpb24KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBCb29sIHsKICAgIHJldHVybiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWRkcmVzcykKfQ==", - "checkStakingEnabled": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjaGVja1N0YWtpbmdFbmFibGVkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKCk6Qm9vbCB7CiAgICByZXR1cm4gRmxvd0lEVGFibGVTdGFraW5nLnN0YWtpbmdFbmFibGVkKCkKfQ==", - "closeStake": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjbG9zZVN0YWtlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweEZsb3dTdGFraW5nQ29sbGVjdGlvbgoKLy8gQ2xvc2VzIG91dCBhIHN0YWtpbmcgb2JqZWN0IGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KLy8gVGhpcyBkb2VzIG5vdCByZW1vdmUgdGhlIHJlY29yZCBmcm9tIHRoZSBpZGVudGl0eSB0YWJsZSwKLy8gYnV0IGl0IGRvZXMgbWVhbiB0aGF0IHRoZSBhY2NvdW50IHRoYXQgY2xvc2VzIGl0IGNhbm5vdCBldmVyIGFjY2VzcyBpdCBhZ2FpbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYuY2xvc2VTdGFrZShub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQogICAgfQp9", - "createDelegator": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjcmVhdGVEZWxlZ2F0b3IgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKLy8vIFJlZ2lzdGVycyBhIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uIHJlc291cmNlCi8vLyBmb3IgdGhlIHNwZWNpZmllZCBub2RlSUQgYW5kIHRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGNvbW1pdAoKdHJhbnNhY3Rpb24oaWQ6IFN0cmluZywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5yZWdpc3RlckRlbGVnYXRvcihub2RlSUQ6IGlkLCBhbW91bnQ6IGFtb3VudCkgICAgICAKICAgIH0KfQ==", - "createStake": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjcmVhdGVTdGFrZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gQ29tbWl0cyBuZXcgdG9rZW5zIHRvIHN0YWtlIGZvciB0aGUgc3BlY2lmaWVkIG5vZGUgb3IgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KLy8vIFRoZSB0b2tlbnMgZnJvbSB0aGUgbG9ja2VkIHZhdWx0IGFyZSB1c2VkIGZpcnN0LCBpZiBpdCBleGlzdHMKLy8vIGZvbGxvd2VkIGJ5IHRoZSB0b2tlbnMgZnJvbSB0aGUgdW5sb2NrZWQgdmF1bHQKCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5zdGFrZU5ld1Rva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==", - "getApr": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBcHIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKTogVUZpeDY0IHsKICAgIGxldCBhcHIgPSBGbG93SURUYWJsZVN0YWtpbmcuZ2V0RXBvY2hUb2tlblBheW91dCgpIC8gRmxvd0lEVGFibGVTdGFraW5nLmdldFRvdGFsU3Rha2VkKCkgLyA3LjAgKiAzNjUuMCAqICgxLjAgLSBGbG93SURUYWJsZVN0YWtpbmcuZ2V0UmV3YXJkQ3V0UGVyY2VudGFnZSgpKQogICAgcmV0dXJuIGFwcgp9", - "getApyWeekly": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRBcHlXZWVrbHkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKTogVUZpeDY0IHsKICAgIGxldCBhcHIgPSBGbG93SURUYWJsZVN0YWtpbmcuZ2V0RXBvY2hUb2tlblBheW91dCgpIC8gRmxvd0lEVGFibGVTdGFraW5nLmdldFRvdGFsU3Rha2VkKCkgKiA1NC4wICogKDEuMCAtIEZsb3dJRFRhYmxlU3Rha2luZy5nZXRSZXdhcmRDdXRQZXJjZW50YWdlKCkpCiAgICByZXR1cm4gYXByCn0=", - "getDelegatesIndo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXREZWxlZ2F0ZXNJbmRvIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKYWNjZXNzKGFsbCkgc3RydWN0IERlbGVnYXRlSW5mbyB7CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9ySUQ6IFVJbnQzMgogICAgYWNjZXNzKGFsbCkgbGV0IG5vZGVJRDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKCiAgICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHJvbGU6IFVJbnQ4CiAgICBhY2Nlc3MoYWxsKSBsZXQgdW5zdGFrYWJsZVRva2VuczogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdGVkTm9kZUluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbwogICAgYWNjZXNzKGFsbCkgbGV0IHJlc3Rha2FibGVVbnN0YWtlZFRva2VuczogVUZpeDY0CgogICAgaW5pdChkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbykgewogICAgICAgIHNlbGYuZGVsZWdhdG9ySUQgPSBkZWxlZ2F0b3JJbmZvLmlkCiAgICAgICAgc2VsZi5ub2RlSUQgPSBkZWxlZ2F0b3JJbmZvLm5vZGVJRAogICAgICAgIHNlbGYudG9rZW5zQ29tbWl0dGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IGRlbGVnYXRvckluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCgogICAgICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgICAgICBsZXQgbm9kZUluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8obm9kZUlEOiBkZWxlZ2F0b3JJbmZvLm5vZGVJRCkKICAgICAgICBzZWxmLmRlbGVnYXRlZE5vZGVJbmZvID0gbm9kZUluZm8KICAgICAgICBzZWxmLmlkID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICAgICAgc2VsZi51bnN0YWthYmxlVG9rZW5zID0gc2VsZi50b2tlbnNTdGFrZWQgKyBzZWxmLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYucmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zID0gc2VsZi50b2tlbnNVbnN0YWtlZCArIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFjY291bnQ6IEFkZHJlc3MpOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fT8gewogICAgbGV0IGRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFjY291bnQpCiAgICBpZiAoIWRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKSB7CiAgICAgICAgcmV0dXJuIG5pbAogICAgfQoKICAgIGxldCBkZWxlZ2F0b3JJRHM6IFtGbG93U3Rha2luZ0NvbGxlY3Rpb24uRGVsZWdhdG9ySURzXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXREZWxlZ2F0b3JJRHMoYWRkcmVzczogYWNjb3VudCkKCiAgICBsZXQgZm9ybWF0dGVkRGVsZWdhdG9ySW5mbzoge1N0cmluZzoge1VJbnQzMjogRGVsZWdhdGVJbmZvfX0gPSB7fQoKICAgIGZvciBkZWxlZ2F0b3JJRCBpbiBkZWxlZ2F0b3JJRHMgewogICAgICAgIGlmIGxldCBfZm9ybWF0dGVkRGVsZWdhdG9ySW5mbyA9IGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvW2RlbGVnYXRvcklELmRlbGVnYXRvcklEXSA9IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSA9IHsgZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQ6IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKX0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGZvcm1hdHRlZERlbGVnYXRvckluZm8KfQo=", - "getDelegatesInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXREZWxlZ2F0ZXNJbmZvIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIAppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKYWNjZXNzKGFsbCkgc3RydWN0IERlbGVnYXRlSW5mbyB7CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9ySUQ6IFVJbnQzMgogICAgYWNjZXNzKGFsbCkgbGV0IG5vZGVJRDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKCiAgICBhY2Nlc3MoYWxsKSBsZXQgaWQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHJvbGU6IFVJbnQ4CiAgICBhY2Nlc3MoYWxsKSBsZXQgdW5zdGFrYWJsZVRva2VuczogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdGVkTm9kZUluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbwogICAgYWNjZXNzKGFsbCkgbGV0IHJlc3Rha2FibGVVbnN0YWtlZFRva2VuczogVUZpeDY0CgogICAgaW5pdChkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbykgewogICAgICAgIHNlbGYuZGVsZWdhdG9ySUQgPSBkZWxlZ2F0b3JJbmZvLmlkCiAgICAgICAgc2VsZi5ub2RlSUQgPSBkZWxlZ2F0b3JJbmZvLm5vZGVJRAogICAgICAgIHNlbGYudG9rZW5zQ29tbWl0dGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IGRlbGVnYXRvckluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCgogICAgICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgICAgICBsZXQgbm9kZUluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8obm9kZUlEOiBkZWxlZ2F0b3JJbmZvLm5vZGVJRCkKICAgICAgICBzZWxmLmRlbGVnYXRlZE5vZGVJbmZvID0gbm9kZUluZm8KICAgICAgICBzZWxmLmlkID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICAgICAgc2VsZi51bnN0YWthYmxlVG9rZW5zID0gc2VsZi50b2tlbnNTdGFrZWQgKyBzZWxmLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYucmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zID0gc2VsZi50b2tlbnNVbnN0YWtlZCArIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFjY291bnQ6IEFkZHJlc3MpOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fT8gewogICAgbGV0IGRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFjY291bnQpCiAgICBpZiAoIWRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKSB7CiAgICAgICAgcmV0dXJuIG5pbAogICAgfQoKICAgIGxldCBkZWxlZ2F0b3JJRHM6IFtGbG93U3Rha2luZ0NvbGxlY3Rpb24uRGVsZWdhdG9ySURzXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXREZWxlZ2F0b3JJRHMoYWRkcmVzczogYWNjb3VudCkKCiAgICBsZXQgZm9ybWF0dGVkRGVsZWdhdG9ySW5mbzoge1N0cmluZzoge1VJbnQzMjogRGVsZWdhdGVJbmZvfX0gPSB7fQoKICAgIGZvciBkZWxlZ2F0b3JJRCBpbiBkZWxlZ2F0b3JJRHMgewogICAgICAgIGlmIGxldCBfZm9ybWF0dGVkRGVsZWdhdG9ySW5mbyA9IGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvW2RlbGVnYXRvcklELmRlbGVnYXRvcklEXSA9IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3JJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQpCiAgICAgICAgICAgIGZvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9yTm9kZUlEXSA9IHsgZGVsZWdhdG9ySUQuZGVsZWdhdG9ySUQ6IERlbGVnYXRlSW5mbyhkZWxlZ2F0b3JJbmZvOiBkZWxlZ2F0b3JJbmZvKX0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGZvcm1hdHRlZERlbGVnYXRvckluZm8KfQ==", - "getDelegatesInfoArray": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXREZWxlZ2F0ZXNJbmZvQXJyYXkgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCiAgICAgICAgCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm9dIHsKICAgIHJldHVybiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsRGVsZWdhdG9ySW5mbyhhZGRyZXNzOiBhZGRyZXNzKQp9", - "getDelegatorInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXREZWxlZ2F0b3JJbmZvIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyKTogRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8gewogIHJldHVybiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQp9", - "getEpochMetadata": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRFcG9jaE1ldGFkYXRhIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGbG93RXBvY2ggZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKGVwb2NoQ291bnRlcjogVUludDY0KTogRmxvd0Vwb2NoLkVwb2NoTWV0YWRhdGEgewogICAgcmV0dXJuIEZsb3dFcG9jaC5nZXRFcG9jaE1ldGFkYXRhKGVwb2NoQ291bnRlcikhCn0=", - "getNodeInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXROb2RlSW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBmdW4gbWFpbihub2RlSUQ6IFN0cmluZyk6IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyB7CiAgcmV0dXJuIEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IG5vZGVJRCkKfQ==", - "getNodesInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXROb2Rlc0luZm8gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgU3VtbWFyeVN0YWtlRGVsZWdhdGVJbmZvIHsKCiAgICBhY2Nlc3MoYWxsKSB2YXIgbm9kZUNvdW50OiBVSW50NjQKICAgIGFjY2VzcyhhbGwpIHZhciBkZWxlZ2F0ZUNvdW50OiBVSW50NjQKCiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHRvdGFsVG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNVbnN0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgc3Rha2VUb2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBkZWxlZ2F0ZVRva2Vuc0NvbW1pdHRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKCiAgICBpbml0KGFsbE5vZGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvXSwgYWxsRGVsZWdhdGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm9dKSB7CgogICAgICAgIHNlbGYubm9kZUNvdW50ID0gVUludDY0KDApCiAgICAgICAgc2VsZi5kZWxlZ2F0ZUNvdW50ID0gVUludDY0KDApCgogICAgICAgIHNlbGYudG90YWxUb2tlbnNTdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2luZyA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBVRml4NjQoMCkKCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1N0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuc3Rha2VUb2tlbnNDb21taXR0ZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFraW5nID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Jld2FyZGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IFVGaXg2NCgwKQoKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zU3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc0NvbW1pdHRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtpbmcgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zVW5zdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmV3YXJkZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gVUZpeDY0KDApCgogICAgICAgIGZvciBub2RlSW5mbyBpbiBhbGxOb2RlSW5mbyB7CiAgICAgICAgICAgIHNlbGYubm9kZUNvdW50ID0gc2VsZi5ub2RlQ291bnQgKyAxCgogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zU3Rha2VkID0gc2VsZi50b3RhbFRva2Vuc1N0YWtlZCArIG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkID0gc2VsZi50b3RhbFRva2Vuc0NvbW1pdHRlZCArIG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nID0gc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2luZyArIG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgKyBub2RlSW5mby50b2tlbnNVbnN0YWtlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zUmV3YXJkZWQgPSBzZWxmLnRvdGFsVG9rZW5zUmV3YXJkZWQgKyBub2RlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi50b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIG5vZGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQoKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1N0YWtlZCA9IHNlbGYuc3Rha2VUb2tlbnNTdGFrZWQgKyBub2RlSW5mby50b2tlbnNTdGFrZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc0NvbW1pdHRlZCA9IHNlbGYuc3Rha2VUb2tlbnNDb21taXR0ZWQgKyBub2RlSW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2luZyA9IHNlbGYuc3Rha2VUb2tlbnNVbnN0YWtpbmcgKyBub2RlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2VkID0gc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2VkICsgbm9kZUluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1Jld2FyZGVkID0gc2VsZi5zdGFrZVRva2Vuc1Jld2FyZGVkICsgbm9kZUluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICAgICAgc2VsZi5zdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IHNlbGYuc3Rha2VUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgKyBub2RlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgICAgICB9CgogICAgICAgIGZvciBkZWxlZ2F0ZUluZm8gaW4gYWxsRGVsZWdhdGVJbmZvIHsKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZUNvdW50ID0gc2VsZi5kZWxlZ2F0ZUNvdW50ICsgMQoKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc1N0YWtlZCA9IHNlbGYudG90YWxUb2tlbnNTdGFrZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgPSBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkICsgZGVsZWdhdGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nID0gc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2luZyArIGRlbGVnYXRlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2VkID0gc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2VkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCA9IHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCArIGRlbGVnYXRlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi50b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIGRlbGVnYXRlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNTdGFrZWQgPSBzZWxmLmRlbGVnYXRlVG9rZW5zU3Rha2VkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc0NvbW1pdHRlZCArIGRlbGVnYXRlSW5mby50b2tlbnNDb21taXR0ZWQKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZyA9IHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtpbmcgKyBkZWxlZ2F0ZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtlZCA9IHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtlZCArIGRlbGVnYXRlSW5mby50b2tlbnNVbnN0YWtlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmV3YXJkZWQgPSBzZWxmLmRlbGVnYXRlVG9rZW5zUmV3YXJkZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zUmV3YXJkZWQKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IHNlbGYuZGVsZWdhdGVUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgKyBkZWxlZ2F0ZUluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICAgICAgfQoKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IFN1bW1hcnlTdGFrZURlbGVnYXRlSW5mbz8gewogICAgbGV0IGRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFjY291bnQpCiAgICBpZiAoIWRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKSB7CiAgICAgICAgcmV0dXJuIG5pbAogICAgfQoKICAgIGxldCBhbGxOb2RlSW5mbzogW0Zsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mb10gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsTm9kZUluZm8oYWRkcmVzczogYWNjb3VudCkKICAgIGxldCBhbGxEZWxlZ2F0ZUluZm86IFtGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mb10gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsRGVsZWdhdG9ySW5mbyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIHJldHVybiBTdW1tYXJ5U3Rha2VEZWxlZ2F0ZUluZm8oYWxsTm9kZUluZm86IGFsbE5vZGVJbmZvLCBhbGxEZWxlZ2F0ZUluZm86IGFsbERlbGVnYXRlSW5mbykKfQo=", - "getStakeInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRTdGFrZUluZm8gLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgU3Rha2VJbmZvIHsKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcm9sZTogVUludDgKICAgIGFjY2VzcyhhbGwpIGxldCBuZXR3b3JraW5nQWRkcmVzczogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgbmV0d29ya2luZ0tleTogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgc3Rha2luZ0tleTogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b3RhbFRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgbGV0IGRlbGVnYXRvcnNDbnQ6IEludAogICAgYWNjZXNzKGFsbCkgbGV0IGRlbGVnYXRvcklEQ291bnRlcjogVUludDMyCiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCBpbml0aWFsV2VpZ2h0OiBVSW50NjQKCiAgICAvLyBQcm9qZWN0ZWQgVmFsdWVzCiAgICBhY2Nlc3MoYWxsKSBsZXQgbm9kZUlEOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB1bnN0YWthYmxlVG9rZW5zOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNEZWxlZ2F0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHJlc3Rha2FibGVVbnN0YWtlZFRva2VuczogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgbGV0IG1hY2hpbmVBY2NvdW50QWRkcmVzczogQWRkcmVzcz8KICAgIGFjY2VzcyhhbGwpIGxldCBtYWNoaW5lQWNjb3VudEJhbGFuY2U6IFVGaXg2ND8KCiAgICBpbml0KG5vZGVJbmZvOiBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8sIG1hY2hpbmVBY2NvdW50SW5mbzogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLk1hY2hpbmVBY2NvdW50SW5mbz8pIHsKICAgICAgICBzZWxmLmlkID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICAgICAgc2VsZi5uZXR3b3JraW5nQWRkcmVzcyA9IG5vZGVJbmZvLm5ldHdvcmtpbmdBZGRyZXNzCiAgICAgICAgc2VsZi5uZXR3b3JraW5nS2V5ID0gbm9kZUluZm8ubmV0d29ya2luZ0tleQogICAgICAgIHNlbGYuc3Rha2luZ0tleSA9IG5vZGVJbmZvLnN0YWtpbmdLZXkKICAgICAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgIHNlbGYudG90YWxUb2tlbnNTdGFrZWQgPSBub2RlSW5mby50b3RhbFN0YWtlZFdpdGhEZWxlZ2F0b3JzKCkKICAgICAgICBzZWxmLnRva2Vuc0NvbW1pdHRlZCA9IG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYudG9rZW5zVW5zdGFraW5nID0gbm9kZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IG5vZGVJbmZvLnRva2Vuc1Jld2FyZGVkCgogICAgICAgIHNlbGYuZGVsZWdhdG9yc0NudCA9IG5vZGVJbmZvLmRlbGVnYXRvcnMubGVuZ3RoIAogICAgICAgIHNlbGYuZGVsZWdhdG9ySURDb3VudGVyID0gbm9kZUluZm8uZGVsZWdhdG9ySURDb3VudGVyCiAgICAgICAgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBub2RlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgICAgICBzZWxmLmluaXRpYWxXZWlnaHQgPSBub2RlSW5mby5pbml0aWFsV2VpZ2h0CgogICAgICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgICAgICBzZWxmLm5vZGVJRCA9IG5vZGVJbmZvLmlkCiAgICAgICAgc2VsZi51bnN0YWthYmxlVG9rZW5zID0gc2VsZi50b2tlbnNTdGFrZWQgKyBzZWxmLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIGxldCBub2RlU3Rha2VkQmFsYW5jZVdpdGhEZWxlZ2F0b3JzID0gbm9kZUluZm8udG90YWxTdGFrZWRXaXRoRGVsZWdhdG9ycygpCiAgICAgICAgc2VsZi50b2tlbnNEZWxlZ2F0ZWQgPSBub2RlU3Rha2VkQmFsYW5jZVdpdGhEZWxlZ2F0b3JzIC0gbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi5yZXN0YWthYmxlVW5zdGFrZWRUb2tlbnMgPSBzZWxmLnRva2Vuc1Vuc3Rha2VkICsgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgaWYgbGV0IF9tYWNoaW5lQWNjb3VudEluZm8gPSBtYWNoaW5lQWNjb3VudEluZm8gewogICAgICAgICAgICBsZXQgX21hY2hpbmVBY2NvdW50QWRkcmVzcyA9IF9tYWNoaW5lQWNjb3VudEluZm8uZ2V0QWRkcmVzcygpCgogICAgICAgICAgICBsZXQgbWFjaGluZUFjY291bnQgPSBnZXRBY2NvdW50KF9tYWNoaW5lQWNjb3VudEFkZHJlc3MpCgogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QWRkcmVzcyA9IF9tYWNoaW5lQWNjb3VudEFkZHJlc3MKICAgICAgICAgICAgc2VsZi5tYWNoaW5lQWNjb3VudEJhbGFuY2UgPSBtYWNoaW5lQWNjb3VudC5iYWxhbmNlCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2VsZi5tYWNoaW5lQWNjb3VudEFkZHJlc3MgPSBuaWwKICAgICAgICAgICAgc2VsZi5tYWNoaW5lQWNjb3VudEJhbGFuY2UgPSBuaWwKICAgICAgICB9CiAgICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFjY291bnQ6IEFkZHJlc3MpOiB7U3RyaW5nOiBTdGFrZUluZm99PyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGZvcm1hdHRlZE5vZGVJbmZvOiB7U3RyaW5nOiBTdGFrZUluZm99ID0ge30KICAgIGxldCBhbGxOb2RlSW5mbzogW0Zsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mb10gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsTm9kZUluZm8oYWRkcmVzczogYWNjb3VudCkKICAgIGxldCBtYWNoaW5lQWNjb3VudHM6IHtTdHJpbmc6IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5NYWNoaW5lQWNjb3VudEluZm99ID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmdldE1hY2hpbmVBY2NvdW50cyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIGZvciBub2RlSW5mbyBpbiBhbGxOb2RlSW5mbyB7CiAgICAgICAgZm9ybWF0dGVkTm9kZUluZm9bbm9kZUluZm8uaWRdID0gU3Rha2VJbmZvKG5vZGVJbmZvOiBub2RlSW5mbywgbWFjaGluZUFjY291bnRJbmZvOiBtYWNoaW5lQWNjb3VudHNbbm9kZUluZm8uaWRdKQogICAgfQoKICAgIHJldHVybiBmb3JtYXR0ZWROb2RlSW5mbwp9Cg==", - "getStakingInfo": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRTdGFraW5nSW5mbyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IEZsb3dFcG9jaCBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbClzdHJ1Y3QgRXBvY2hJbmZvIHsKICBhY2Nlc3MoYWxsKWxldCBjdXJyZW50RXBvY2hDb3VudGVyOiBVSW50NjQKICBhY2Nlc3MoYWxsKWxldCBjdXJyZW50RXBvY2hQaGFzZTogVUludDgKCiAgaW5pdCgKICAgICAgY3VycmVudEVwb2NoQ291bnRlcjogVUludDY0LAogICAgICBjdXJyZW50RXBvY2hQaGFzZTogVUludDgKICApIHsKICAgICAgc2VsZi5jdXJyZW50RXBvY2hDb3VudGVyID0gY3VycmVudEVwb2NoQ291bnRlcgogICAgICBzZWxmLmN1cnJlbnRFcG9jaFBoYXNlID0gY3VycmVudEVwb2NoUGhhc2UKICB9Cn0KCmFjY2VzcyhhbGwpc3RydWN0IFJlc3VsdCB7CiAgYWNjZXNzKGFsbClsZXQgc3Rha2luZ0luZm86IFN0YWtpbmdJbmZvPwoKICBpbml0KHN0YWtpbmdJbmZvOiBTdGFraW5nSW5mbz8pIHsKICAgIHNlbGYuc3Rha2luZ0luZm8gPSBzdGFraW5nSW5mbwogIH0KfQoKYWNjZXNzKGFsbClzdHJ1Y3QgU3Rha2luZ0luZm8gewogIGFjY2VzcyhhbGwpbGV0IGVwb2NoSW5mbzogRXBvY2hJbmZvCiAgYWNjZXNzKGFsbClsZXQgbG9ja2VkQWRkcmVzczogQWRkcmVzcyAgIAogIGFjY2VzcyhhbGwpbGV0IGxvY2tlZEJhbGFuY2U6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHVubG9ja0xpbWl0OiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCBub2RlSW5mbzogTm9kZUluZm8/CiAgYWNjZXNzKGFsbClsZXQgZGVsZWdhdG9yTm9kZUluZm86IE5vZGVJbmZvPwogIGFjY2VzcyhhbGwpbGV0IGRlbGVnYXRvckluZm86IERlbGVnYXRvckluZm8/CgogIGluaXQoCiAgICBlcG9jaEluZm86IEVwb2NoSW5mbywKICAgIGxvY2tlZEFkZHJlc3M6IEFkZHJlc3MsCiAgICBsb2NrZWRCYWxhbmNlOiBVRml4NjQsCiAgICB1bmxvY2tMaW1pdDogVUZpeDY0LAogICAgbm9kZUluZm86IE5vZGVJbmZvPywKICAgIGRlbGVnYXRvck5vZGVJbmZvOiBOb2RlSW5mbz8sCiAgICBkZWxlZ2F0b3JJbmZvOiBEZWxlZ2F0b3JJbmZvPywKICApIHsKICAgIHNlbGYuZXBvY2hJbmZvID0gZXBvY2hJbmZvCiAgICBzZWxmLmxvY2tlZEFkZHJlc3MgPSBsb2NrZWRBZGRyZXNzCiAgICBzZWxmLmxvY2tlZEJhbGFuY2UgPSBsb2NrZWRCYWxhbmNlCiAgICBzZWxmLnVubG9ja0xpbWl0ID0gdW5sb2NrTGltaXQKICAgIHNlbGYubm9kZUluZm8gPSBub2RlSW5mbwogICAgc2VsZi5kZWxlZ2F0b3JOb2RlSW5mbyA9IGRlbGVnYXRvck5vZGVJbmZvCiAgICBzZWxmLmRlbGVnYXRvckluZm8gPSBkZWxlZ2F0b3JJbmZvCiAgfQp9CgphY2Nlc3MoYWxsKXN0cnVjdCBOb2RlSW5mbyB7CiAgYWNjZXNzKGFsbClsZXQgaWQ6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IG5ldHdvcmtpbmdBZGRyZXNzOiBTdHJpbmcKICBhY2Nlc3MoYWxsKWxldCByb2xlOiBVSW50OAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgCiAgYWNjZXNzKGFsbClsZXQgZGVsZWdhdG9ySURDb3VudGVyOiBVSW50MzIKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IGluaXRpYWxXZWlnaHQ6IFVJbnQ2NAoKICBpbml0KG5vZGVJRDogU3RyaW5nKSB7CiAgICBsZXQgbm9kZUluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm8obm9kZUlEOiBub2RlSUQpIAoKICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgc2VsZi5uZXR3b3JraW5nQWRkcmVzcyA9IG5vZGVJbmZvLm5ldHdvcmtpbmdBZGRyZXNzCiAgICBzZWxmLnJvbGUgPSBub2RlSW5mby5yb2xlCiAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBub2RlSW5mby50b2tlbnNDb21taXR0ZWQKICAgIHNlbGYudG9rZW5zVW5zdGFraW5nID0gbm9kZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICBzZWxmLnRva2Vuc1Vuc3Rha2VkID0gbm9kZUluZm8udG9rZW5zVW5zdGFrZWQKICAgIHNlbGYudG9rZW5zUmV3YXJkZWQgPSBub2RlSW5mby50b2tlbnNSZXdhcmRlZAogICAgc2VsZi5kZWxlZ2F0b3JJRENvdW50ZXIgPSBub2RlSW5mby5kZWxlZ2F0b3JJRENvdW50ZXIKICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gbm9kZUluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgICBzZWxmLmluaXRpYWxXZWlnaHQgPSBub2RlSW5mby5pbml0aWFsV2VpZ2h0CiAgfQp9CgphY2Nlc3MoYWxsKXN0cnVjdCBEZWxlZ2F0b3JJbmZvIHsKICBhY2Nlc3MoYWxsKWxldCBpZDogVUludDMyCiAgYWNjZXNzKGFsbClsZXQgbm9kZUlEOiBTdHJpbmcKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogIGluaXQobm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzIpIHsKICAgIGxldCBkZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCkKCiAgICBzZWxmLmlkID0gZGVsZWdhdG9ySW5mby5pZAogICAgc2VsZi5ub2RlSUQgPSBkZWxlZ2F0b3JJbmZvLm5vZGVJRAogICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgc2VsZi50b2tlbnNTdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1N0YWtlZAogICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zUmV3YXJkZWQKICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IGRlbGVnYXRvckluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCiAgfQp9CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBSZXN1bHQgewogIGxldCB0b2tlbkhvbGRlclJlZiA9IAogICAgICBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogICAgICAgICAgLmJvcnJvdzwmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPihmcm9tOiBMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXJTdG9yYWdlUGF0aCkKCiAgdmFyIHN0YWtpbmdJbmZvOiBTdGFraW5nSW5mbz8gPSBuaWwKICBpZiBsZXQgdG9rZW5Ib2xkZXIgPSB0b2tlbkhvbGRlclJlZiB7CiAgICBsZXQgbG9ja2VkQWRkcmVzcyA9IHRva2VuSG9sZGVyLmdldExvY2tlZEFjY291bnRBZGRyZXNzKCkgICAgICAgCiAgICBsZXQgbG9ja2VkQmFsYW5jZSA9IHRva2VuSG9sZGVyLmdldExvY2tlZEFjY291bnRCYWxhbmNlKCkKICAgIGxldCB1bmxvY2tMaW1pdCA9IHRva2VuSG9sZGVyLmdldFVubG9ja0xpbWl0KCkKICAgIAogICAgdmFyIG5vZGVJbmZvOiBOb2RlSW5mbz8gPSBuaWwKICAgIGlmIGxldCBub2RlSUQgPSB0b2tlbkhvbGRlci5nZXROb2RlSUQoKSB7CiAgICAgIG5vZGVJbmZvID0gTm9kZUluZm8obm9kZUlEOiBub2RlSUQpCiAgICB9CgogICAgdmFyIGRlbGVnYXRvck5vZGVJbmZvOiBOb2RlSW5mbz8gPSBuaWwKICAgIHZhciBkZWxlZ2F0b3JJbmZvOiBEZWxlZ2F0b3JJbmZvPyA9IG5pbAogICAgaWYgbGV0IGRlbGVnYXRvck5vZGVJRCA9IHRva2VuSG9sZGVyLmdldERlbGVnYXRvck5vZGVJRCgpIHsKICAgICAgaWYgbGV0IGRlbGVnYXRvcklEID0gdG9rZW5Ib2xkZXIuZ2V0RGVsZWdhdG9ySUQoKSB7CiAgICAgICAgZGVsZWdhdG9yTm9kZUluZm8gPSBOb2RlSW5mbyhub2RlSUQ6IGRlbGVnYXRvck5vZGVJRCkKICAgICAgICBkZWxlZ2F0b3JJbmZvID0gRGVsZWdhdG9ySW5mbyhub2RlSUQ6IGRlbGVnYXRvck5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQogICAgICB9IAogICAgfSAKCiAgICBsZXQgZXBvY2hJbmZvOiBFcG9jaEluZm8gPSBFcG9jaEluZm8oCiAgICAgIGN1cnJlbnRFcG9jaENvdW50ZXI6IEZsb3dFcG9jaC5jdXJyZW50RXBvY2hDb3VudGVyLAogICAgICBjdXJyZW50RXBvY2hQaGFzZTogRmxvd0Vwb2NoLmN1cnJlbnRFcG9jaFBoYXNlLnJhd1ZhbHVlCiAgICApCgogICAgc3Rha2luZ0luZm8gPSBTdGFraW5nSW5mbygKICAgICAgZXBvY2hJbmZvOiBlcG9jaEluZm8sCiAgICAgIGxvY2tlZEFkZHJlc3M6IGxvY2tlZEFkZHJlc3MsCiAgICAgIGxvY2tlZEJhbGFuY2U6IGxvY2tlZEJhbGFuY2UsCiAgICAgIHVubG9ja0xpbWl0OiB1bmxvY2tMaW1pdCwKICAgICAgbm9kZUluZm86IG5vZGVJbmZvLAogICAgICBkZWxlZ2F0b3JOb2RlSW5mbzogZGVsZWdhdG9yTm9kZUluZm8sCiAgICAgIGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8gCiAgICApCiAgfQoKICByZXR1cm4gUmVzdWx0KHN0YWtpbmdJbmZvOiBzdGFraW5nSW5mbykKfQ==", - "restakeReward": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICByZXN0YWtlUmV3YXJkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gQ29tbWl0cyByZXdhcmRlZCB0b2tlbnMgdG8gc3Rha2UgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnN0YWtlUmV3YXJkZWRUb2tlbnMobm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCwgYW1vdW50OiBhbW91bnQpCiAgICB9Cn0=", - "restakeUnstaked": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICByZXN0YWtlVW5zdGFrZWQgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKLy8vIENvbW1pdHMgdW5zdGFrZWQgdG9rZW5zIHRvIHN0YWtlIGZvciB0aGUgc3BlY2lmaWVkIG5vZGUgb3IgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5zdGFrZVVuc3Rha2VkVG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", - "setup": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZXR1cCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHgxNjU0NjUzMzk5MDQwYTYxCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gVGhpcyB0cmFuc2FjdGlvbiBzZXRzIHVwIGFuIGFjY291bnQgdG8gdXNlIGEgc3Rha2luZyBjb2xsZWN0aW9uCi8vLyBJdCB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgaGF2ZSBhIHJlZ3VsYXIgYWNjb3VudCwgYSB0d28tYWNjb3VudCBsb2NrZWQgdG9rZW5zIHNldHVwLAovLy8gb3Igc3Rha2luZyBvYmplY3RzIHN0b3JlZCBpbiB0aGUgdW5sb2NrZWQgYWNjb3VudAoKdHJhbnNhY3Rpb24gewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUsIFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKCiAgICAgICAgLy8gSWYgdGhlcmUgaXNuJ3QgYWxyZWFkeSBhIHN0YWtpbmcgY29sbGVjdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkgPT0gbmlsIHsKCiAgICAgICAgICAgIC8vIENyZWF0ZSBwcml2YXRlIGNhcGFiaWxpdGllcyBmb3IgdGhlIHRva2VuIGhvbGRlciBhbmQgdW5sb2NrZWQgdmF1bHQKICAgICAgICAgICAgbGV0IGxvY2tlZEhvbGRlciA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcsIExvY2tlZFRva2Vucy5Ub2tlbk9wZXJhdGlvbnMpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKSEKICAgICAgICAgICAgbGV0IGZsb3dUb2tlbiA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KSEKCiAgICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBTdGFraW5nIENvbGxlY3Rpb24gYW5kIHB1dCBpdCBpbiBzdG9yYWdlCiAgICAgICAgICAgIGlmIGxvY2tlZEhvbGRlci5jaGVjaygpIHsKICAgICAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoCiAgICAgICAgICAgICAgICAgICAgPC0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmNyZWF0ZVN0YWtpbmdDb2xsZWN0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICB1bmxvY2tlZFZhdWx0OiBmbG93VG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuSG9sZGVyOiBsb2NrZWRIb2xkZXIKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIHRvOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSgKICAgICAgICAgICAgICAgICAgICA8LSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uY3JlYXRlU3Rha2luZ0NvbGxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja2VkVmF1bHQ6IGZsb3dUb2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5Ib2xkZXI6IG5pbAogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgdG86IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIC8vIFB1Ymxpc2ggYSBjYXBhYmlsaXR5IHRvIHRoZSBjcmVhdGVkIHN0YWtpbmcgY29sbGVjdGlvbi4KICAgICAgICAgICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KAogICAgICAgICAgICAgICAgRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgKICAgICAgICAgICAgKQoKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICAgICAgc3Rha2luZ0NvbGxlY3Rpb25DYXAsCiAgICAgICAgICAgICAgICBhdDogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uUHVibGljUGF0aAogICAgICAgICAgICApCiAgICAgICAgfQoKICAgICAgICAvLyBib3Jyb3cgYSByZWZlcmVuY2UgdG8gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgogICAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBzdGFraW5nIGNvbGxlY3Rpb24gcmVmZXJlbmNlIikKCiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBub2RlIHN0YWtlciBvYmplY3QgaW4gdGhlIGFjY291bnQsIHB1dCBpdCBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93SURUYWJsZVN0YWtpbmcuTm9kZVN0YWtlcj4oZnJvbTogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVTdGFrZXJTdG9yYWdlUGF0aCkgIT0gbmlsIHsKICAgICAgICAgICAgbGV0IG5vZGUgPC0gc2lnbmVyLnN0b3JhZ2UubG9hZDxARmxvd0lEVGFibGVTdGFraW5nLk5vZGVTdGFrZXI+KGZyb206IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlU3Rha2VyU3RvcmFnZVBhdGgpIQogICAgICAgICAgICBjb2xsZWN0aW9uUmVmLmFkZE5vZGVPYmplY3QoPC1ub2RlLCBtYWNoaW5lQWNjb3VudEluZm86IG5pbCkKICAgICAgICB9CgogICAgICAgIC8vIElmIHRoZXJlIGlzIGEgZGVsZWdhdG9yIG9iamVjdCBpbiB0aGUgYWNjb3VudCwgcHV0IGl0IGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlRGVsZWdhdG9yPihmcm9tOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9yU3RvcmFnZVBhdGgpICE9IG5pbCB7CiAgICAgICAgICAgIGxldCBkZWxlZ2F0b3IgPC0gc2lnbmVyLnN0b3JhZ2UubG9hZDxARmxvd0lEVGFibGVTdGFraW5nLk5vZGVEZWxlZ2F0b3I+KGZyb206IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JTdG9yYWdlUGF0aCkhCiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWYuYWRkRGVsZWdhdG9yT2JqZWN0KDwtZGVsZWdhdG9yKQogICAgICAgIH0KICAgIH0KfQ==", - "unstake": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB1bnN0YWtlIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVxdWVzdHMgdW5zdGFraW5nIGZvciB0aGUgc3BlY2lmaWVkIG5vZGUgb3IgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5yZXF1ZXN0VW5zdGFraW5nKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", - "withdrawLocked": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB3aXRoZHJhd0xvY2tlZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RlVOR0lCTEVUT0tFTkFERFJFU1MKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4RkxPV1RPS0VOQUREUkVTUwppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHhMT0NLRURUT0tFTkFERFJFU1MKCnRyYW5zYWN0aW9uKGFtb3VudDogVUZpeDY0KSB7CgogICAgbGV0IGhvbGRlclJlZjogYXV0aChMb2NrZWRUb2tlbnMuVG9rZW5PcGVyYXRpb25zLCBGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyCiAgICBsZXQgdmF1bHRSZWY6IGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdAoKICAgIHByZXBhcmUoYWNjdDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLmhvbGRlclJlZiA9IGFjY3Quc3RvcmFnZS5ib3Jyb3c8YXV0aChMb2NrZWRUb2tlbnMuVG9rZW5PcGVyYXRpb25zLCBGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyPihmcm9tOiBMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIlRoZSBwcmltYXJ5IHVzZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgbG9ja2VkIGFjY291bnQiKQoKICAgICAgICBzZWxmLnZhdWx0UmVmID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZGbG93VG9rZW4uVmF1bHQ+KGZyb206IC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0KQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBmbG93IHRva2VuIHZhdWx0IHJlZiIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi52YXVsdFJlZi5kZXBvc2l0KGZyb206IDwtc2VsZi5ob2xkZXJSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpKQogICAgfQp9", - "withdrawReward": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB3aXRoZHJhd1Jld2FyZCAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVxdWVzdCB0byB3aXRoZHJhdyByZXdhcmRlZCB0b2tlbnMgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLy8gVGhlIHRva2VucyBhcmUgYXV0b21hdGljYWxseSBkZXBvc2l0ZWQgdG8gdGhlIHVubG9ja2VkIGFjY291bnQgdmF1bHQgZmlyc3QsCi8vLyBBbmQgdGhlbiBhbnkgbG9ja2VkIHRva2VucyBhcmUgZGVwb3NpdGVkIGludG8gdGhlIGxvY2tlZCBhY2NvdW50IHZhdWx0Cgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8sIGFtb3VudDogVUZpeDY0KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYud2l0aGRyYXdSZXdhcmRlZFRva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==", - "withdrawUnstaked": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB3aXRoZHJhd1Vuc3Rha2VkIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgICBpbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVxdWVzdCB0byB3aXRoZHJhdyB1bnN0YWtlZCB0b2tlbnMgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLy8gVGhlIHRva2VucyBhcmUgYXV0b21hdGljYWxseSBkZXBvc2l0ZWQgdG8gdGhlIHVubG9ja2VkIGFjY291bnQgdmF1bHQgZmlyc3QsCi8vLyBBbmQgdGhlbiBhbnkgbG9ja2VkIHRva2VucyBhcmUgZGVwb3NpdGVkIGludG8gdGhlIGxvY2tlZCBhY2NvdW50IHZhdWx0IGlmIGl0IGlzIHRoZXJlCgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8sIGFtb3VudDogVUZpeDY0KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYud2l0aGRyYXdVbnN0YWtlZFRva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==" + "checkSetup": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2hlY2tTZXR1cCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwoKLy8vIERldGVybWluZXMgaWYgYW4gYWNjb3VudCBpcyBzZXQgdXAgd2l0aCBhIFN0YWtpbmcgQ29sbGVjdGlvbgoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IEJvb2wgewogICAgcmV0dXJuIEZsb3dTdGFraW5nQ29sbGVjdGlvbi5kb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbihhZGRyZXNzOiBhZGRyZXNzKQp9", + "checkStakingEnabled": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2hlY2tTdGFraW5nRW5hYmxlZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oKTpCb29sIHsKICAgIHJldHVybiBGbG93SURUYWJsZVN0YWtpbmcuc3Rha2luZ0VuYWJsZWQoKQp9", + "closeStake": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY2xvc2VTdGFrZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4Rmxvd1N0YWtpbmdDb2xsZWN0aW9uCgovLyBDbG9zZXMgb3V0IGEgc3Rha2luZyBvYmplY3QgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLyBUaGlzIGRvZXMgbm90IHJlbW92ZSB0aGUgcmVjb3JkIGZyb20gdGhlIGlkZW50aXR5IHRhYmxlLAovLyBidXQgaXQgZG9lcyBtZWFuIHRoYXQgdGhlIGFjY291bnQgdGhhdCBjbG9zZXMgaXQgY2Fubm90IGV2ZXIgYWNjZXNzIGl0IGFnYWluCgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8pIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi5jbG9zZVN0YWtlKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQpCiAgICB9Cn0=", + "createDelegator": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY3JlYXRlRGVsZWdhdG9yIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gUmVnaXN0ZXJzIGEgZGVsZWdhdG9yIGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24gcmVzb3VyY2UKLy8vIGZvciB0aGUgc3BlY2lmaWVkIG5vZGVJRCBhbmQgdGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gY29tbWl0Cgp0cmFuc2FjdGlvbihpZDogU3RyaW5nLCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnJlZ2lzdGVyRGVsZWdhdG9yKG5vZGVJRDogaWQsIGFtb3VudDogYW1vdW50KSAgICAgIAogICAgfQp9", + "createStake": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY3JlYXRlU3Rha2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBDb21taXRzIG5ldyB0b2tlbnMgdG8gc3Rha2UgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgovLy8gVGhlIHRva2VucyBmcm9tIHRoZSBsb2NrZWQgdmF1bHQgYXJlIHVzZWQgZmlyc3QsIGlmIGl0IGV4aXN0cwovLy8gZm9sbG93ZWQgYnkgdGhlIHRva2VucyBmcm9tIHRoZSB1bmxvY2tlZCB2YXVsdAoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnN0YWtlTmV3VG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", + "getApr": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QXByIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBmdW4gbWFpbigpOiBVRml4NjQgewogICAgbGV0IGFwciA9IEZsb3dJRFRhYmxlU3Rha2luZy5nZXRFcG9jaFRva2VuUGF5b3V0KCkgLyBGbG93SURUYWJsZVN0YWtpbmcuZ2V0VG90YWxTdGFrZWQoKSAvIDcuMCAqIDM2NS4wICogKDEuMCAtIEZsb3dJRFRhYmxlU3Rha2luZy5nZXRSZXdhcmRDdXRQZXJjZW50YWdlKCkpCiAgICByZXR1cm4gYXByCn0=", + "getApyWeekly": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QXB5V2Vla2x5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKSBmdW4gbWFpbigpOiBVRml4NjQgewogICAgbGV0IGFwciA9IEZsb3dJRFRhYmxlU3Rha2luZy5nZXRFcG9jaFRva2VuUGF5b3V0KCkgLyBGbG93SURUYWJsZVN0YWtpbmcuZ2V0VG90YWxTdGFrZWQoKSAqIDU0LjAgKiAoMS4wIC0gRmxvd0lEVGFibGVTdGFraW5nLmdldFJld2FyZEN1dFBlcmNlbnRhZ2UoKSkKICAgIHJldHVybiBhcHIKfQ==", + "getDelegatesIndo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5kbyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgRGVsZWdhdGVJbmZvIHsKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0b3JJRDogVUludDMyCiAgICBhY2Nlc3MoYWxsKSBsZXQgbm9kZUlEOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgLy8gUHJvamVjdGVkIFZhbHVlcwoKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcm9sZTogVUludDgKICAgIGFjY2VzcyhhbGwpIGxldCB1bnN0YWthYmxlVG9rZW5zOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0ZWROb2RlSW5mbzogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvCiAgICBhY2Nlc3MoYWxsKSBsZXQgcmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zOiBVRml4NjQKCiAgICBpbml0KGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKSB7CiAgICAgICAgc2VsZi5kZWxlZ2F0b3JJRCA9IGRlbGVnYXRvckluZm8uaWQKICAgICAgICBzZWxmLm5vZGVJRCA9IGRlbGVnYXRvckluZm8ubm9kZUlECiAgICAgICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYudG9rZW5zU3Rha2VkID0gZGVsZWdhdG9ySW5mby50b2tlbnNTdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Vuc3Rha2luZyA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgLy8gUHJvamVjdGVkIFZhbHVlcwogICAgICAgIGxldCBub2RlSW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IGRlbGVnYXRvckluZm8ubm9kZUlEKQogICAgICAgIHNlbGYuZGVsZWdhdGVkTm9kZUluZm8gPSBub2RlSW5mbwogICAgICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgICAgICBzZWxmLnVuc3Rha2FibGVUb2tlbnMgPSBzZWxmLnRva2Vuc1N0YWtlZCArIHNlbGYudG9rZW5zQ29tbWl0dGVkCiAgICAgICAgc2VsZi5yZXN0YWthYmxlVW5zdGFrZWRUb2tlbnMgPSBzZWxmLnRva2Vuc1Vuc3Rha2VkICsgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IHtTdHJpbmc6IHtVSW50MzI6IERlbGVnYXRlSW5mb319PyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGRlbGVnYXRvcklEczogW0Zsb3dTdGFraW5nQ29sbGVjdGlvbi5EZWxlZ2F0b3JJRHNdID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmdldERlbGVnYXRvcklEcyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIGxldCBmb3JtYXR0ZWREZWxlZ2F0b3JJbmZvOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fSA9IHt9CgogICAgZm9yIGRlbGVnYXRvcklEIGluIGRlbGVnYXRvcklEcyB7CiAgICAgICAgaWYgbGV0IF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvID0gZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgX2Zvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9ySURdID0gRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdID0geyBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRDogRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZm9ybWF0dGVkRGVsZWdhdG9ySW5mbwp9Cg==", + "getDelegatesInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5mbyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgTG9ja2VkVG9rZW5zIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgphY2Nlc3MoYWxsKSBzdHJ1Y3QgRGVsZWdhdGVJbmZvIHsKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0b3JJRDogVUludDMyCiAgICBhY2Nlc3MoYWxsKSBsZXQgbm9kZUlEOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgLy8gUHJvamVjdGVkIFZhbHVlcwoKICAgIGFjY2VzcyhhbGwpIGxldCBpZDogU3RyaW5nCiAgICBhY2Nlc3MoYWxsKSBsZXQgcm9sZTogVUludDgKICAgIGFjY2VzcyhhbGwpIGxldCB1bnN0YWthYmxlVG9rZW5zOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCBkZWxlZ2F0ZWROb2RlSW5mbzogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvCiAgICBhY2Nlc3MoYWxsKSBsZXQgcmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zOiBVRml4NjQKCiAgICBpbml0KGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKSB7CiAgICAgICAgc2VsZi5kZWxlZ2F0b3JJRCA9IGRlbGVnYXRvckluZm8uaWQKICAgICAgICBzZWxmLm5vZGVJRCA9IGRlbGVnYXRvckluZm8ubm9kZUlECiAgICAgICAgc2VsZi50b2tlbnNDb21taXR0ZWQgPSBkZWxlZ2F0b3JJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgIHNlbGYudG9rZW5zU3Rha2VkID0gZGVsZWdhdG9ySW5mby50b2tlbnNTdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Vuc3Rha2luZyA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKCiAgICAgICAgLy8gUHJvamVjdGVkIFZhbHVlcwogICAgICAgIGxldCBub2RlSW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IGRlbGVnYXRvckluZm8ubm9kZUlEKQogICAgICAgIHNlbGYuZGVsZWdhdGVkTm9kZUluZm8gPSBub2RlSW5mbwogICAgICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgICAgICBzZWxmLnVuc3Rha2FibGVUb2tlbnMgPSBzZWxmLnRva2Vuc1N0YWtlZCArIHNlbGYudG9rZW5zQ29tbWl0dGVkCiAgICAgICAgc2VsZi5yZXN0YWthYmxlVW5zdGFrZWRUb2tlbnMgPSBzZWxmLnRva2Vuc1Vuc3Rha2VkICsgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IHtTdHJpbmc6IHtVSW50MzI6IERlbGVnYXRlSW5mb319PyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGRlbGVnYXRvcklEczogW0Zsb3dTdGFraW5nQ29sbGVjdGlvbi5EZWxlZ2F0b3JJRHNdID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmdldERlbGVnYXRvcklEcyhhZGRyZXNzOiBhY2NvdW50KQoKICAgIGxldCBmb3JtYXR0ZWREZWxlZ2F0b3JJbmZvOiB7U3RyaW5nOiB7VUludDMyOiBEZWxlZ2F0ZUluZm99fSA9IHt9CgogICAgZm9yIGRlbGVnYXRvcklEIGluIGRlbGVnYXRvcklEcyB7CiAgICAgICAgaWYgbGV0IF9mb3JtYXR0ZWREZWxlZ2F0b3JJbmZvID0gZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgX2Zvcm1hdHRlZERlbGVnYXRvckluZm9bZGVsZWdhdG9ySUQuZGVsZWdhdG9ySURdID0gRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvckluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvID0gRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvckluZm8obm9kZUlEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRCkKICAgICAgICAgICAgZm9ybWF0dGVkRGVsZWdhdG9ySW5mb1tkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JOb2RlSURdID0geyBkZWxlZ2F0b3JJRC5kZWxlZ2F0b3JJRDogRGVsZWdhdGVJbmZvKGRlbGVnYXRvckluZm86IGRlbGVnYXRvckluZm8pfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gZm9ybWF0dGVkRGVsZWdhdG9ySW5mbwp9", + "getDelegatesInfoArray": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5mb0FycmF5IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKICAgICAgICAKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mb10gewogICAgcmV0dXJuIEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxEZWxlZ2F0b3JJbmZvKGFkZHJlc3M6IGFkZHJlc3MpCn0=", + "getDelegatesInfoArrayV2": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RGVsZWdhdGVzSW5mb0FycmF5VjIgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwogICAgICAgIAphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW0Zsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvXT8gewogICAgdmFyIHJlczogW0Zsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvXT8gPSBuaWwKCiAgICBsZXQgaW5pdGVkID0gRmxvd1N0YWtpbmdDb2xsZWN0aW9uLmRvZXNBY2NvdW50SGF2ZVN0YWtpbmdDb2xsZWN0aW9uKGFkZHJlc3M6IGFkZHJlc3MpCgogICAgaWYgaW5pdGVkIHsKICAgICAgICByZXMgPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0QWxsRGVsZWdhdG9ySW5mbyhhZGRyZXNzOiBhZGRyZXNzKQogICAgfQogICAgcmV0dXJuIHJlcwp9", + "getDelegatorInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RGVsZWdhdG9ySW5mbyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzIpOiBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyB7CiAgcmV0dXJuIEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQpCn0=", + "getEpochMetadata": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0RXBvY2hNZXRhZGF0YSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZsb3dFcG9jaCBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oZXBvY2hDb3VudGVyOiBVSW50NjQpOiBGbG93RXBvY2guRXBvY2hNZXRhZGF0YSB7CiAgICByZXR1cm4gRmxvd0Vwb2NoLmdldEVwb2NoTWV0YWRhdGEoZXBvY2hDb3VudGVyKSEKfQ==", + "getNodeInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Tm9kZUluZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIGZ1biBtYWluKG5vZGVJRDogU3RyaW5nKTogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvIHsKICByZXR1cm4gRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvKG5vZGVJRDogbm9kZUlEKQp9", + "getNodesInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0Tm9kZXNJbmZvIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCmltcG9ydCBGbG93SURUYWJsZVN0YWtpbmcgZnJvbSAweDg2MjRiNTJmOWRkY2QwNGEKCmFjY2VzcyhhbGwpIHN0cnVjdCBTdW1tYXJ5U3Rha2VEZWxlZ2F0ZUluZm8gewoKICAgIGFjY2VzcyhhbGwpIHZhciBub2RlQ291bnQ6IFVJbnQ2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlQ291bnQ6IFVJbnQ2NAoKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1N0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgdG90YWxUb2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHRvdGFsVG9rZW5zVW5zdGFraW5nOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1Vuc3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciB0b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CgogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBzdGFrZVRva2Vuc0NvbW1pdHRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgc3Rha2VUb2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zUmV3YXJkZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIHN0YWtlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKCiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgdmFyIGRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIHZhciBkZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNVbnN0YWtlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNSZXdhcmRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSB2YXIgZGVsZWdhdGVUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAoKICAgIGluaXQoYWxsTm9kZUluZm86IFtGbG93SURUYWJsZVN0YWtpbmcuTm9kZUluZm9dLCBhbGxEZWxlZ2F0ZUluZm86IFtGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mb10pIHsKCiAgICAgICAgc2VsZi5ub2RlQ291bnQgPSBVSW50NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlQ291bnQgPSBVSW50NjQoMCkKCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1N0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Vuc3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Jld2FyZGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IFVGaXg2NCgwKQoKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zU3Rha2VkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5zdGFrZVRva2Vuc0NvbW1pdHRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuc3Rha2VUb2tlbnNVbnN0YWtpbmcgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmV3YXJkZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gVUZpeDY0KDApCgogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNTdGFrZWQgPSBVRml4NjQoMCkKICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkID0gVUZpeDY0KDApCiAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZyA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNVbnN0YWtlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNSZXdhcmRlZCA9IFVGaXg2NCgwKQogICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBVRml4NjQoMCkKCiAgICAgICAgZm9yIG5vZGVJbmZvIGluIGFsbE5vZGVJbmZvIHsKICAgICAgICAgICAgc2VsZi5ub2RlQ291bnQgPSBzZWxmLm5vZGVDb3VudCArIDEKCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNTdGFrZWQgPSBzZWxmLnRvdGFsVG9rZW5zU3Rha2VkICsgbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgPSBzZWxmLnRvdGFsVG9rZW5zQ29tbWl0dGVkICsgbm9kZUluZm8udG9rZW5zQ29tbWl0dGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtpbmcgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nICsgbm9kZUluZm8udG9rZW5zVW5zdGFraW5nCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtlZCA9IHNlbGYudG90YWxUb2tlbnNVbnN0YWtlZCArIG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCA9IHNlbGYudG90YWxUb2tlbnNSZXdhcmRlZCArIG5vZGVJbmZvLnRva2Vuc1Jld2FyZGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlICsgbm9kZUluZm8udG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlCgogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zU3Rha2VkID0gc2VsZi5zdGFrZVRva2Vuc1N0YWtlZCArIG5vZGVJbmZvLnRva2Vuc1N0YWtlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zQ29tbWl0dGVkID0gc2VsZi5zdGFrZVRva2Vuc0NvbW1pdHRlZCArIG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFraW5nID0gc2VsZi5zdGFrZVRva2Vuc1Vuc3Rha2luZyArIG5vZGVJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zVW5zdGFrZWQgPSBzZWxmLnN0YWtlVG9rZW5zVW5zdGFrZWQgKyBub2RlSW5mby50b2tlbnNVbnN0YWtlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmV3YXJkZWQgPSBzZWxmLnN0YWtlVG9rZW5zUmV3YXJkZWQgKyBub2RlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLnN0YWtlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi5zdGFrZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIG5vZGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQogICAgICAgIH0KCiAgICAgICAgZm9yIGRlbGVnYXRlSW5mbyBpbiBhbGxEZWxlZ2F0ZUluZm8gewogICAgICAgICAgICBzZWxmLmRlbGVnYXRlQ291bnQgPSBzZWxmLmRlbGVnYXRlQ291bnQgKyAxCgogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zU3Rha2VkID0gc2VsZi50b3RhbFRva2Vuc1N0YWtlZCArIGRlbGVnYXRlSW5mby50b2tlbnNTdGFrZWQKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc0NvbW1pdHRlZCA9IHNlbGYudG90YWxUb2tlbnNDb21taXR0ZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zQ29tbWl0dGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNVbnN0YWtpbmcgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFraW5nICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Vuc3Rha2luZwogICAgICAgICAgICBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgPSBzZWxmLnRvdGFsVG9rZW5zVW5zdGFrZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICAgICAgc2VsZi50b3RhbFRva2Vuc1Jld2FyZGVkID0gc2VsZi50b3RhbFRva2Vuc1Jld2FyZGVkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Jld2FyZGVkCiAgICAgICAgICAgIHNlbGYudG90YWxUb2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBzZWxmLnRvdGFsVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlICsgZGVsZWdhdGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQoKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1N0YWtlZCA9IHNlbGYuZGVsZWdhdGVUb2tlbnNTdGFrZWQgKyBkZWxlZ2F0ZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNDb21taXR0ZWQgPSBzZWxmLmRlbGVnYXRlVG9rZW5zQ29tbWl0dGVkICsgZGVsZWdhdGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zVW5zdGFraW5nID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2luZyArIGRlbGVnYXRlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICAgICAgc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2VkID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc1Vuc3Rha2VkICsgZGVsZWdhdGVJbmZvLnRva2Vuc1Vuc3Rha2VkCiAgICAgICAgICAgIHNlbGYuZGVsZWdhdGVUb2tlbnNSZXdhcmRlZCA9IHNlbGYuZGVsZWdhdGVUb2tlbnNSZXdhcmRlZCArIGRlbGVnYXRlSW5mby50b2tlbnNSZXdhcmRlZAogICAgICAgICAgICBzZWxmLmRlbGVnYXRlVG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gc2VsZi5kZWxlZ2F0ZVRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSArIGRlbGVnYXRlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgICAgICB9CgogICAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhY2NvdW50OiBBZGRyZXNzKTogU3VtbWFyeVN0YWtlRGVsZWdhdGVJbmZvPyB7CiAgICBsZXQgZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24oYWRkcmVzczogYWNjb3VudCkKICAgIGlmICghZG9lc0FjY291bnRIYXZlU3Rha2luZ0NvbGxlY3Rpb24pIHsKICAgICAgICByZXR1cm4gbmlsCiAgICB9CgogICAgbGV0IGFsbE5vZGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxOb2RlSW5mbyhhZGRyZXNzOiBhY2NvdW50KQogICAgbGV0IGFsbERlbGVnYXRlSW5mbzogW0Zsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JJbmZvXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxEZWxlZ2F0b3JJbmZvKGFkZHJlc3M6IGFjY291bnQpCgogICAgcmV0dXJuIFN1bW1hcnlTdGFrZURlbGVnYXRlSW5mbyhhbGxOb2RlSW5mbzogYWxsTm9kZUluZm8sIGFsbERlbGVnYXRlSW5mbzogYWxsRGVsZWdhdGVJbmZvKQp9Cg==", + "getStakeInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0U3Rha2VJbmZvIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgoKaW1wb3J0IEZsb3dTdGFraW5nQ29sbGVjdGlvbiBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCmFjY2VzcyhhbGwpIHN0cnVjdCBTdGFrZUluZm8gewogICAgYWNjZXNzKGFsbCkgbGV0IGlkOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCByb2xlOiBVSW50OAogICAgYWNjZXNzKGFsbCkgbGV0IG5ldHdvcmtpbmdBZGRyZXNzOiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBuZXR3b3JraW5nS2V5OiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCBzdGFraW5nS2V5OiBTdHJpbmcKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNTdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRvdGFsVG9rZW5zU3Rha2VkOiBVRml4NjQKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc1Jld2FyZGVkOiBVRml4NjQKCiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9yc0NudDogSW50CiAgICBhY2Nlc3MoYWxsKSBsZXQgZGVsZWdhdG9ySURDb3VudGVyOiBVSW50MzIKICAgIGFjY2VzcyhhbGwpIGxldCB0b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2U6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IGluaXRpYWxXZWlnaHQ6IFVJbnQ2NAoKICAgIC8vIFByb2plY3RlZCBWYWx1ZXMKICAgIGFjY2VzcyhhbGwpIGxldCBub2RlSUQ6IFN0cmluZwogICAgYWNjZXNzKGFsbCkgbGV0IHVuc3Rha2FibGVUb2tlbnM6IFVGaXg2NAogICAgYWNjZXNzKGFsbCkgbGV0IHRva2Vuc0RlbGVnYXRlZDogVUZpeDY0CiAgICBhY2Nlc3MoYWxsKSBsZXQgcmVzdGFrYWJsZVVuc3Rha2VkVG9rZW5zOiBVRml4NjQKCiAgICBhY2Nlc3MoYWxsKSBsZXQgbWFjaGluZUFjY291bnRBZGRyZXNzOiBBZGRyZXNzPwogICAgYWNjZXNzKGFsbCkgbGV0IG1hY2hpbmVBY2NvdW50QmFsYW5jZTogVUZpeDY0PwoKICAgIGluaXQobm9kZUluZm86IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbywgbWFjaGluZUFjY291bnRJbmZvOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uTWFjaGluZUFjY291bnRJbmZvPykgewogICAgICAgIHNlbGYuaWQgPSBub2RlSW5mby5pZAogICAgICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgICAgICBzZWxmLm5ldHdvcmtpbmdBZGRyZXNzID0gbm9kZUluZm8ubmV0d29ya2luZ0FkZHJlc3MKICAgICAgICBzZWxmLm5ldHdvcmtpbmdLZXkgPSBub2RlSW5mby5uZXR3b3JraW5nS2V5CiAgICAgICAgc2VsZi5zdGFraW5nS2V5ID0gbm9kZUluZm8uc3Rha2luZ0tleQogICAgICAgIHNlbGYudG9rZW5zU3Rha2VkID0gbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICAgICAgc2VsZi50b3RhbFRva2Vuc1N0YWtlZCA9IG5vZGVJbmZvLnRvdGFsU3Rha2VkV2l0aERlbGVnYXRvcnMoKQogICAgICAgIHNlbGYudG9rZW5zQ29tbWl0dGVkID0gbm9kZUluZm8udG9rZW5zQ29tbWl0dGVkCiAgICAgICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBub2RlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgICAgICBzZWxmLnRva2Vuc1Vuc3Rha2VkID0gbm9kZUluZm8udG9rZW5zVW5zdGFrZWQKICAgICAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gbm9kZUluZm8udG9rZW5zUmV3YXJkZWQKCiAgICAgICAgc2VsZi5kZWxlZ2F0b3JzQ250ID0gbm9kZUluZm8uZGVsZWdhdG9ycy5sZW5ndGggCiAgICAgICAgc2VsZi5kZWxlZ2F0b3JJRENvdW50ZXIgPSBub2RlSW5mby5kZWxlZ2F0b3JJRENvdW50ZXIKICAgICAgICBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZSA9IG5vZGVJbmZvLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQogICAgICAgIHNlbGYuaW5pdGlhbFdlaWdodCA9IG5vZGVJbmZvLmluaXRpYWxXZWlnaHQKCiAgICAgICAgLy8gUHJvamVjdGVkIFZhbHVlcwogICAgICAgIHNlbGYubm9kZUlEID0gbm9kZUluZm8uaWQKICAgICAgICBzZWxmLnVuc3Rha2FibGVUb2tlbnMgPSBzZWxmLnRva2Vuc1N0YWtlZCArIHNlbGYudG9rZW5zQ29tbWl0dGVkCiAgICAgICAgbGV0IG5vZGVTdGFrZWRCYWxhbmNlV2l0aERlbGVnYXRvcnMgPSBub2RlSW5mby50b3RhbFN0YWtlZFdpdGhEZWxlZ2F0b3JzKCkKICAgICAgICBzZWxmLnRva2Vuc0RlbGVnYXRlZCA9IG5vZGVTdGFrZWRCYWxhbmNlV2l0aERlbGVnYXRvcnMgLSBub2RlSW5mby50b2tlbnNTdGFrZWQKICAgICAgICBzZWxmLnJlc3Rha2FibGVVbnN0YWtlZFRva2VucyA9IHNlbGYudG9rZW5zVW5zdGFrZWQgKyBzZWxmLnRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZQoKICAgICAgICBpZiBsZXQgX21hY2hpbmVBY2NvdW50SW5mbyA9IG1hY2hpbmVBY2NvdW50SW5mbyB7CiAgICAgICAgICAgIGxldCBfbWFjaGluZUFjY291bnRBZGRyZXNzID0gX21hY2hpbmVBY2NvdW50SW5mby5nZXRBZGRyZXNzKCkKCiAgICAgICAgICAgIGxldCBtYWNoaW5lQWNjb3VudCA9IGdldEFjY291bnQoX21hY2hpbmVBY2NvdW50QWRkcmVzcykKCiAgICAgICAgICAgIHNlbGYubWFjaGluZUFjY291bnRBZGRyZXNzID0gX21hY2hpbmVBY2NvdW50QWRkcmVzcwogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QmFsYW5jZSA9IG1hY2hpbmVBY2NvdW50LmJhbGFuY2UKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QWRkcmVzcyA9IG5pbAogICAgICAgICAgICBzZWxmLm1hY2hpbmVBY2NvdW50QmFsYW5jZSA9IG5pbAogICAgICAgIH0KICAgIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWNjb3VudDogQWRkcmVzcyk6IHtTdHJpbmc6IFN0YWtlSW5mb30/IHsKICAgIGxldCBkb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbiA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5kb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbihhZGRyZXNzOiBhY2NvdW50KQogICAgaWYgKCFkb2VzQWNjb3VudEhhdmVTdGFraW5nQ29sbGVjdGlvbikgewogICAgICAgIHJldHVybiBuaWwKICAgIH0KCiAgICBsZXQgZm9ybWF0dGVkTm9kZUluZm86IHtTdHJpbmc6IFN0YWtlSW5mb30gPSB7fQogICAgbGV0IGFsbE5vZGVJbmZvOiBbRmxvd0lEVGFibGVTdGFraW5nLk5vZGVJbmZvXSA9IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5nZXRBbGxOb2RlSW5mbyhhZGRyZXNzOiBhY2NvdW50KQogICAgbGV0IG1hY2hpbmVBY2NvdW50czoge1N0cmluZzogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLk1hY2hpbmVBY2NvdW50SW5mb30gPSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uZ2V0TWFjaGluZUFjY291bnRzKGFkZHJlc3M6IGFjY291bnQpCgogICAgZm9yIG5vZGVJbmZvIGluIGFsbE5vZGVJbmZvIHsKICAgICAgICBmb3JtYXR0ZWROb2RlSW5mb1tub2RlSW5mby5pZF0gPSBTdGFrZUluZm8obm9kZUluZm86IG5vZGVJbmZvLCBtYWNoaW5lQWNjb3VudEluZm86IG1hY2hpbmVBY2NvdW50c1tub2RlSW5mby5pZF0pCiAgICB9CgogICAgcmV0dXJuIGZvcm1hdHRlZE5vZGVJbmZvCn0K", + "getStakingInfo": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0U3Rha2luZ0luZm8gLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKaW1wb3J0IEZsb3dJRFRhYmxlU3Rha2luZyBmcm9tIDB4ODYyNGI1MmY5ZGRjZDA0YQppbXBvcnQgRmxvd0Vwb2NoIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCgphY2Nlc3MoYWxsKXN0cnVjdCBFcG9jaEluZm8gewogIGFjY2VzcyhhbGwpbGV0IGN1cnJlbnRFcG9jaENvdW50ZXI6IFVJbnQ2NAogIGFjY2VzcyhhbGwpbGV0IGN1cnJlbnRFcG9jaFBoYXNlOiBVSW50OAoKICBpbml0KAogICAgICBjdXJyZW50RXBvY2hDb3VudGVyOiBVSW50NjQsCiAgICAgIGN1cnJlbnRFcG9jaFBoYXNlOiBVSW50OAogICkgewogICAgICBzZWxmLmN1cnJlbnRFcG9jaENvdW50ZXIgPSBjdXJyZW50RXBvY2hDb3VudGVyCiAgICAgIHNlbGYuY3VycmVudEVwb2NoUGhhc2UgPSBjdXJyZW50RXBvY2hQaGFzZQogIH0KfQoKYWNjZXNzKGFsbClzdHJ1Y3QgUmVzdWx0IHsKICBhY2Nlc3MoYWxsKWxldCBzdGFraW5nSW5mbzogU3Rha2luZ0luZm8/CgogIGluaXQoc3Rha2luZ0luZm86IFN0YWtpbmdJbmZvPykgewogICAgc2VsZi5zdGFraW5nSW5mbyA9IHN0YWtpbmdJbmZvCiAgfQp9CgphY2Nlc3MoYWxsKXN0cnVjdCBTdGFraW5nSW5mbyB7CiAgYWNjZXNzKGFsbClsZXQgZXBvY2hJbmZvOiBFcG9jaEluZm8KICBhY2Nlc3MoYWxsKWxldCBsb2NrZWRBZGRyZXNzOiBBZGRyZXNzICAgCiAgYWNjZXNzKGFsbClsZXQgbG9ja2VkQmFsYW5jZTogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdW5sb2NrTGltaXQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IG5vZGVJbmZvOiBOb2RlSW5mbz8KICBhY2Nlc3MoYWxsKWxldCBkZWxlZ2F0b3JOb2RlSW5mbzogTm9kZUluZm8/CiAgYWNjZXNzKGFsbClsZXQgZGVsZWdhdG9ySW5mbzogRGVsZWdhdG9ySW5mbz8KCiAgaW5pdCgKICAgIGVwb2NoSW5mbzogRXBvY2hJbmZvLAogICAgbG9ja2VkQWRkcmVzczogQWRkcmVzcywKICAgIGxvY2tlZEJhbGFuY2U6IFVGaXg2NCwKICAgIHVubG9ja0xpbWl0OiBVRml4NjQsCiAgICBub2RlSW5mbzogTm9kZUluZm8/LAogICAgZGVsZWdhdG9yTm9kZUluZm86IE5vZGVJbmZvPywKICAgIGRlbGVnYXRvckluZm86IERlbGVnYXRvckluZm8/LAogICkgewogICAgc2VsZi5lcG9jaEluZm8gPSBlcG9jaEluZm8KICAgIHNlbGYubG9ja2VkQWRkcmVzcyA9IGxvY2tlZEFkZHJlc3MKICAgIHNlbGYubG9ja2VkQmFsYW5jZSA9IGxvY2tlZEJhbGFuY2UKICAgIHNlbGYudW5sb2NrTGltaXQgPSB1bmxvY2tMaW1pdAogICAgc2VsZi5ub2RlSW5mbyA9IG5vZGVJbmZvCiAgICBzZWxmLmRlbGVnYXRvck5vZGVJbmZvID0gZGVsZWdhdG9yTm9kZUluZm8KICAgIHNlbGYuZGVsZWdhdG9ySW5mbyA9IGRlbGVnYXRvckluZm8KICB9Cn0KCmFjY2VzcyhhbGwpc3RydWN0IE5vZGVJbmZvIHsKICBhY2Nlc3MoYWxsKWxldCBpZDogU3RyaW5nCiAgYWNjZXNzKGFsbClsZXQgbmV0d29ya2luZ0FkZHJlc3M6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHJvbGU6IFVJbnQ4CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zU3Rha2VkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNDb21taXR0ZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Vuc3Rha2luZzogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zVW5zdGFrZWQ6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICAKICBhY2Nlc3MoYWxsKWxldCBkZWxlZ2F0b3JJRENvdW50ZXI6IFVJbnQzMgogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1JlcXVlc3RlZFRvVW5zdGFrZTogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgaW5pdGlhbFdlaWdodDogVUludDY0CgogIGluaXQobm9kZUlEOiBTdHJpbmcpIHsKICAgIGxldCBub2RlSW5mbyA9IEZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlSW5mbyhub2RlSUQ6IG5vZGVJRCkgCgogICAgc2VsZi5pZCA9IG5vZGVJbmZvLmlkCiAgICBzZWxmLm5ldHdvcmtpbmdBZGRyZXNzID0gbm9kZUluZm8ubmV0d29ya2luZ0FkZHJlc3MKICAgIHNlbGYucm9sZSA9IG5vZGVJbmZvLnJvbGUKICAgIHNlbGYudG9rZW5zU3Rha2VkID0gbm9kZUluZm8udG9rZW5zU3Rha2VkCiAgICBzZWxmLnRva2Vuc0NvbW1pdHRlZCA9IG5vZGVJbmZvLnRva2Vuc0NvbW1pdHRlZAogICAgc2VsZi50b2tlbnNVbnN0YWtpbmcgPSBub2RlSW5mby50b2tlbnNVbnN0YWtpbmcKICAgIHNlbGYudG9rZW5zVW5zdGFrZWQgPSBub2RlSW5mby50b2tlbnNVbnN0YWtlZAogICAgc2VsZi50b2tlbnNSZXdhcmRlZCA9IG5vZGVJbmZvLnRva2Vuc1Jld2FyZGVkCiAgICBzZWxmLmRlbGVnYXRvcklEQ291bnRlciA9IG5vZGVJbmZvLmRlbGVnYXRvcklEQ291bnRlcgogICAgc2VsZi50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UgPSBub2RlSW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICAgIHNlbGYuaW5pdGlhbFdlaWdodCA9IG5vZGVJbmZvLmluaXRpYWxXZWlnaHQKICB9Cn0KCmFjY2VzcyhhbGwpc3RydWN0IERlbGVnYXRvckluZm8gewogIGFjY2VzcyhhbGwpbGV0IGlkOiBVSW50MzIKICBhY2Nlc3MoYWxsKWxldCBub2RlSUQ6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc0NvbW1pdHRlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zU3Rha2VkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNVbnN0YWtpbmc6IFVGaXg2NAogIGFjY2VzcyhhbGwpbGV0IHRva2Vuc1Jld2FyZGVkOiBVRml4NjQKICBhY2Nlc3MoYWxsKWxldCB0b2tlbnNVbnN0YWtlZDogVUZpeDY0CiAgYWNjZXNzKGFsbClsZXQgdG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlOiBVRml4NjQKCiAgaW5pdChub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMikgewogICAgbGV0IGRlbGVnYXRvckluZm8gPSBGbG93SURUYWJsZVN0YWtpbmcuRGVsZWdhdG9ySW5mbyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklEKQoKICAgIHNlbGYuaWQgPSBkZWxlZ2F0b3JJbmZvLmlkCiAgICBzZWxmLm5vZGVJRCA9IGRlbGVnYXRvckluZm8ubm9kZUlECiAgICBzZWxmLnRva2Vuc0NvbW1pdHRlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zQ29tbWl0dGVkCiAgICBzZWxmLnRva2Vuc1N0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zU3Rha2VkCiAgICBzZWxmLnRva2Vuc1Vuc3Rha2luZyA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFraW5nCiAgICBzZWxmLnRva2Vuc1Jld2FyZGVkID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXdhcmRlZAogICAgc2VsZi50b2tlbnNVbnN0YWtlZCA9IGRlbGVnYXRvckluZm8udG9rZW5zVW5zdGFrZWQKICAgIHNlbGYudG9rZW5zUmVxdWVzdGVkVG9VbnN0YWtlID0gZGVsZWdhdG9ySW5mby50b2tlbnNSZXF1ZXN0ZWRUb1Vuc3Rha2UKICB9Cn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFJlc3VsdCB7CiAgbGV0IHRva2VuSG9sZGVyUmVmID0gCiAgICAgIGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgICAgICAgICAuYm9ycm93PCZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQoKICB2YXIgc3Rha2luZ0luZm86IFN0YWtpbmdJbmZvPyA9IG5pbAogIGlmIGxldCB0b2tlbkhvbGRlciA9IHRva2VuSG9sZGVyUmVmIHsKICAgIGxldCBsb2NrZWRBZGRyZXNzID0gdG9rZW5Ib2xkZXIuZ2V0TG9ja2VkQWNjb3VudEFkZHJlc3MoKSAgICAgICAKICAgIGxldCBsb2NrZWRCYWxhbmNlID0gdG9rZW5Ib2xkZXIuZ2V0TG9ja2VkQWNjb3VudEJhbGFuY2UoKQogICAgbGV0IHVubG9ja0xpbWl0ID0gdG9rZW5Ib2xkZXIuZ2V0VW5sb2NrTGltaXQoKQogICAgCiAgICB2YXIgbm9kZUluZm86IE5vZGVJbmZvPyA9IG5pbAogICAgaWYgbGV0IG5vZGVJRCA9IHRva2VuSG9sZGVyLmdldE5vZGVJRCgpIHsKICAgICAgbm9kZUluZm8gPSBOb2RlSW5mbyhub2RlSUQ6IG5vZGVJRCkKICAgIH0KCiAgICB2YXIgZGVsZWdhdG9yTm9kZUluZm86IE5vZGVJbmZvPyA9IG5pbAogICAgdmFyIGRlbGVnYXRvckluZm86IERlbGVnYXRvckluZm8/ID0gbmlsCiAgICBpZiBsZXQgZGVsZWdhdG9yTm9kZUlEID0gdG9rZW5Ib2xkZXIuZ2V0RGVsZWdhdG9yTm9kZUlEKCkgewogICAgICBpZiBsZXQgZGVsZWdhdG9ySUQgPSB0b2tlbkhvbGRlci5nZXREZWxlZ2F0b3JJRCgpIHsKICAgICAgICBkZWxlZ2F0b3JOb2RlSW5mbyA9IE5vZGVJbmZvKG5vZGVJRDogZGVsZWdhdG9yTm9kZUlEKQogICAgICAgIGRlbGVnYXRvckluZm8gPSBEZWxlZ2F0b3JJbmZvKG5vZGVJRDogZGVsZWdhdG9yTm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQpCiAgICAgIH0gCiAgICB9IAoKICAgIGxldCBlcG9jaEluZm86IEVwb2NoSW5mbyA9IEVwb2NoSW5mbygKICAgICAgY3VycmVudEVwb2NoQ291bnRlcjogRmxvd0Vwb2NoLmN1cnJlbnRFcG9jaENvdW50ZXIsCiAgICAgIGN1cnJlbnRFcG9jaFBoYXNlOiBGbG93RXBvY2guY3VycmVudEVwb2NoUGhhc2UucmF3VmFsdWUKICAgICkKCiAgICBzdGFraW5nSW5mbyA9IFN0YWtpbmdJbmZvKAogICAgICBlcG9jaEluZm86IGVwb2NoSW5mbywKICAgICAgbG9ja2VkQWRkcmVzczogbG9ja2VkQWRkcmVzcywKICAgICAgbG9ja2VkQmFsYW5jZTogbG9ja2VkQmFsYW5jZSwKICAgICAgdW5sb2NrTGltaXQ6IHVubG9ja0xpbWl0LAogICAgICBub2RlSW5mbzogbm9kZUluZm8sCiAgICAgIGRlbGVnYXRvck5vZGVJbmZvOiBkZWxlZ2F0b3JOb2RlSW5mbywKICAgICAgZGVsZWdhdG9ySW5mbzogZGVsZWdhdG9ySW5mbyAKICAgICkKICB9CgogIHJldHVybiBSZXN1bHQoc3Rha2luZ0luZm86IHN0YWtpbmdJbmZvKQp9", + "restakeReward": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcmVzdGFrZVJld2FyZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBDb21taXRzIHJld2FyZGVkIHRva2VucyB0byBzdGFrZSBmb3IgdGhlIHNwZWNpZmllZCBub2RlIG9yIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCgp0cmFuc2FjdGlvbihub2RlSUQ6IFN0cmluZywgZGVsZWdhdG9ySUQ6IFVJbnQzMj8sIGFtb3VudDogVUZpeDY0KSB7CiAgICAKICAgIGxldCBzdGFraW5nQ29sbGVjdGlvblJlZjogYXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uCgogICAgcHJlcGFyZShhY2NvdW50OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYgPSBhY2NvdW50LnN0b3JhZ2UuYm9ycm93PGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGEgcmVmZXJlbmNlIHRvIGEgU3Rha2luZ0NvbGxlY3Rpb24gaW4gdGhlIHByaW1hcnkgdXNlcidzIGFjY291bnQiKQogICAgfQoKICAgIGV4ZWN1dGUgewogICAgICAgIHNlbGYuc3Rha2luZ0NvbGxlY3Rpb25SZWYuc3Rha2VSZXdhcmRlZFRva2Vucyhub2RlSUQ6IG5vZGVJRCwgZGVsZWdhdG9ySUQ6IGRlbGVnYXRvcklELCBhbW91bnQ6IGFtb3VudCkKICAgIH0KfQ==", + "restakeUnstaked": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgcmVzdGFrZVVuc3Rha2VkIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRmxvd1N0YWtpbmdDb2xsZWN0aW9uIGZyb20gMHg4ZDBlODdiNjUxNTlhZTYzCgovLy8gQ29tbWl0cyB1bnN0YWtlZCB0b2tlbnMgdG8gc3Rha2UgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnN0YWtlVW5zdGFrZWRUb2tlbnMobm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCwgYW1vdW50OiBhbW91bnQpCiAgICB9Cn0=", + "setup": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2V0dXAgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKaW1wb3J0IExvY2tlZFRva2VucyBmcm9tIDB4OGQwZTg3YjY1MTU5YWU2MwppbXBvcnQgRmxvd0lEVGFibGVTdGFraW5nIGZyb20gMHg4NjI0YjUyZjlkZGNkMDRhCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIHNldHMgdXAgYW4gYWNjb3VudCB0byB1c2UgYSBzdGFraW5nIGNvbGxlY3Rpb24KLy8vIEl0IHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBoYXZlIGEgcmVndWxhciBhY2NvdW50LCBhIHR3by1hY2NvdW50IGxvY2tlZCB0b2tlbnMgc2V0dXAsCi8vLyBvciBzdGFraW5nIG9iamVjdHMgc3RvcmVkIGluIHRoZSB1bmxvY2tlZCBhY2NvdW50Cgp0cmFuc2FjdGlvbiB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChCb3Jyb3dWYWx1ZSwgU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICAvLyBJZiB0aGVyZSBpc24ndCBhbHJlYWR5IGEgc3Rha2luZyBjb2xsZWN0aW9uCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKSA9PSBuaWwgewoKICAgICAgICAgICAgLy8gQ3JlYXRlIHByaXZhdGUgY2FwYWJpbGl0aWVzIGZvciB0aGUgdG9rZW4gaG9sZGVyIGFuZCB1bmxvY2tlZCB2YXVsdAogICAgICAgICAgICBsZXQgbG9ja2VkSG9sZGVyID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdywgTG9ja2VkVG9rZW5zLlRva2VuT3BlcmF0aW9ucykgJkxvY2tlZFRva2Vucy5Ub2tlbkhvbGRlcj4oTG9ja2VkVG9rZW5zLlRva2VuSG9sZGVyU3RvcmFnZVBhdGgpIQogICAgICAgICAgICBsZXQgZmxvd1Rva2VuID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpIQoKICAgICAgICAgICAgLy8gQ3JlYXRlIGEgbmV3IFN0YWtpbmcgQ29sbGVjdGlvbiBhbmQgcHV0IGl0IGluIHN0b3JhZ2UKICAgICAgICAgICAgaWYgbG9ja2VkSG9sZGVyLmNoZWNrKCkgewogICAgICAgICAgICAgICAgc2lnbmVyLnN0b3JhZ2Uuc2F2ZSgKICAgICAgICAgICAgICAgICAgICA8LSBGbG93U3Rha2luZ0NvbGxlY3Rpb24uY3JlYXRlU3Rha2luZ0NvbGxlY3Rpb24oCiAgICAgICAgICAgICAgICAgICAgICAgIHVubG9ja2VkVmF1bHQ6IGZsb3dUb2tlbiwKICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5Ib2xkZXI6IGxvY2tlZEhvbGRlcgogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgdG86IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKAogICAgICAgICAgICAgICAgICAgIDwtIEZsb3dTdGFraW5nQ29sbGVjdGlvbi5jcmVhdGVTdGFraW5nQ29sbGVjdGlvbigKICAgICAgICAgICAgICAgICAgICAgICAgdW5sb2NrZWRWYXVsdDogZmxvd1Rva2VuLAogICAgICAgICAgICAgICAgICAgICAgICB0b2tlbkhvbGRlcjogbmlsCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICB0bzogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgKICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gUHVibGlzaCBhIGNhcGFiaWxpdHkgdG8gdGhlIGNyZWF0ZWQgc3Rha2luZyBjb2xsZWN0aW9uLgogICAgICAgICAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25DYXAgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oCiAgICAgICAgICAgICAgICBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aAogICAgICAgICAgICApCgogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goCiAgICAgICAgICAgICAgICBzdGFraW5nQ29sbGVjdGlvbkNhcCwKICAgICAgICAgICAgICAgIGF0OiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25QdWJsaWNQYXRoCiAgICAgICAgICAgICkKICAgICAgICB9CgogICAgICAgIC8vIGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCiAgICAgICAgbGV0IGNvbGxlY3Rpb25SZWYgPSBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbj4oZnJvbTogRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHN0YWtpbmcgY29sbGVjdGlvbiByZWZlcmVuY2UiKQoKICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG5vZGUgc3Rha2VyIG9iamVjdCBpbiB0aGUgYWNjb3VudCwgcHV0IGl0IGluIHRoZSBzdGFraW5nIGNvbGxlY3Rpb24KICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JkZsb3dJRFRhYmxlU3Rha2luZy5Ob2RlU3Rha2VyPihmcm9tOiBGbG93SURUYWJsZVN0YWtpbmcuTm9kZVN0YWtlclN0b3JhZ2VQYXRoKSAhPSBuaWwgewogICAgICAgICAgICBsZXQgbm9kZSA8LSBzaWduZXIuc3RvcmFnZS5sb2FkPEBGbG93SURUYWJsZVN0YWtpbmcuTm9kZVN0YWtlcj4oZnJvbTogRmxvd0lEVGFibGVTdGFraW5nLk5vZGVTdGFrZXJTdG9yYWdlUGF0aCkhCiAgICAgICAgICAgIGNvbGxlY3Rpb25SZWYuYWRkTm9kZU9iamVjdCg8LW5vZGUsIG1hY2hpbmVBY2NvdW50SW5mbzogbmlsKQogICAgICAgIH0KCiAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBkZWxlZ2F0b3Igb2JqZWN0IGluIHRoZSBhY2NvdW50LCBwdXQgaXQgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgogICAgICAgIGlmIHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRmxvd0lEVGFibGVTdGFraW5nLk5vZGVEZWxlZ2F0b3I+KGZyb206IEZsb3dJRFRhYmxlU3Rha2luZy5EZWxlZ2F0b3JTdG9yYWdlUGF0aCkgIT0gbmlsIHsKICAgICAgICAgICAgbGV0IGRlbGVnYXRvciA8LSBzaWduZXIuc3RvcmFnZS5sb2FkPEBGbG93SURUYWJsZVN0YWtpbmcuTm9kZURlbGVnYXRvcj4oZnJvbTogRmxvd0lEVGFibGVTdGFraW5nLkRlbGVnYXRvclN0b3JhZ2VQYXRoKSEKICAgICAgICAgICAgY29sbGVjdGlvblJlZi5hZGREZWxlZ2F0b3JPYmplY3QoPC1kZWxlZ2F0b3IpCiAgICAgICAgfQogICAgfQp9", + "unstake": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdW5zdGFrZSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBSZXF1ZXN0cyB1bnN0YWtpbmcgZm9yIHRoZSBzcGVjaWZpZWQgbm9kZSBvciBkZWxlZ2F0b3IgaW4gdGhlIHN0YWtpbmcgY29sbGVjdGlvbgoKdHJhbnNhY3Rpb24obm9kZUlEOiBTdHJpbmcsIGRlbGVnYXRvcklEOiBVSW50MzI/LCBhbW91bnQ6IFVGaXg2NCkgewogICAgCiAgICBsZXQgc3Rha2luZ0NvbGxlY3Rpb25SZWY6IGF1dGgoRmxvd1N0YWtpbmdDb2xsZWN0aW9uLkNvbGxlY3Rpb25Pd25lcikgJkZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvbgoKICAgIHByZXBhcmUoYWNjb3VudDogYXV0aChCb3Jyb3dWYWx1ZSkgJkFjY291bnQpIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmID0gYWNjb3VudC5zdG9yYWdlLmJvcnJvdzxhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24+KGZyb206IEZsb3dTdGFraW5nQ29sbGVjdGlvbi5TdGFraW5nQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGJvcnJvdyBhIHJlZmVyZW5jZSB0byBhIFN0YWtpbmdDb2xsZWN0aW9uIGluIHRoZSBwcmltYXJ5IHVzZXIncyBhY2NvdW50IikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnN0YWtpbmdDb2xsZWN0aW9uUmVmLnJlcXVlc3RVbnN0YWtpbmcobm9kZUlEOiBub2RlSUQsIGRlbGVnYXRvcklEOiBkZWxlZ2F0b3JJRCwgYW1vdW50OiBhbW91bnQpCiAgICB9Cn0=", + "withdrawLocked": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgd2l0aGRyYXdMb2NrZWQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGVU5HSUJMRVRPS0VOQUREUkVTUwppbXBvcnQgRmxvd1Rva2VuIGZyb20gMHhGTE9XVE9LRU5BRERSRVNTCmltcG9ydCBMb2NrZWRUb2tlbnMgZnJvbSAweExPQ0tFRFRPS0VOQUREUkVTUwoKdHJhbnNhY3Rpb24oYW1vdW50OiBVRml4NjQpIHsKCiAgICBsZXQgaG9sZGVyUmVmOiBhdXRoKExvY2tlZFRva2Vucy5Ub2tlbk9wZXJhdGlvbnMsIEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXIKICAgIGxldCB2YXVsdFJlZjogYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAmRmxvd1Rva2VuLlZhdWx0CgogICAgcHJlcGFyZShhY2N0OiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewogICAgICAgIHNlbGYuaG9sZGVyUmVmID0gYWNjdC5zdG9yYWdlLmJvcnJvdzxhdXRoKExvY2tlZFRva2Vucy5Ub2tlbk9wZXJhdGlvbnMsIEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZMb2NrZWRUb2tlbnMuVG9rZW5Ib2xkZXI+KGZyb206IExvY2tlZFRva2Vucy5Ub2tlbkhvbGRlclN0b3JhZ2VQYXRoKQogICAgICAgICAgICA/PyBwYW5pYygiVGhlIHByaW1hcnkgdXNlciBhY2NvdW50IGRvZXMgbm90IGhhdmUgYW4gYXNzb2NpYXRlZCBsb2NrZWQgYWNjb3VudCIpCgogICAgICAgIHNlbGYudmF1bHRSZWYgPSBhY2N0LnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvZmxvd1Rva2VuVmF1bHQpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IGZsb3cgdG9rZW4gdmF1bHQgcmVmIikKICAgIH0KCiAgICBleGVjdXRlIHsKICAgICAgICBzZWxmLnZhdWx0UmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLmhvbGRlclJlZi53aXRoZHJhdyhhbW91bnQ6IGFtb3VudCkpCiAgICB9Cn0=", + "withdrawReward": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgd2l0aGRyYXdSZXdhcmQgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBSZXF1ZXN0IHRvIHdpdGhkcmF3IHJld2FyZGVkIHRva2VucyBmb3IgdGhlIHNwZWNpZmllZCBub2RlIG9yIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCi8vLyBUaGUgdG9rZW5zIGFyZSBhdXRvbWF0aWNhbGx5IGRlcG9zaXRlZCB0byB0aGUgdW5sb2NrZWQgYWNjb3VudCB2YXVsdCBmaXJzdCwKLy8vIEFuZCB0aGVuIGFueSBsb2NrZWQgdG9rZW5zIGFyZSBkZXBvc2l0ZWQgaW50byB0aGUgbG9ja2VkIGFjY291bnQgdmF1bHQKCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi53aXRoZHJhd1Jld2FyZGVkVG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9", + "withdrawUnstaked": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgd2l0aGRyYXdVbnN0YWtlZCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKIGltcG9ydCBGbG93U3Rha2luZ0NvbGxlY3Rpb24gZnJvbSAweDhkMGU4N2I2NTE1OWFlNjMKCi8vLyBSZXF1ZXN0IHRvIHdpdGhkcmF3IHVuc3Rha2VkIHRva2VucyBmb3IgdGhlIHNwZWNpZmllZCBub2RlIG9yIGRlbGVnYXRvciBpbiB0aGUgc3Rha2luZyBjb2xsZWN0aW9uCi8vLyBUaGUgdG9rZW5zIGFyZSBhdXRvbWF0aWNhbGx5IGRlcG9zaXRlZCB0byB0aGUgdW5sb2NrZWQgYWNjb3VudCB2YXVsdCBmaXJzdCwKLy8vIEFuZCB0aGVuIGFueSBsb2NrZWQgdG9rZW5zIGFyZSBkZXBvc2l0ZWQgaW50byB0aGUgbG9ja2VkIGFjY291bnQgdmF1bHQgaWYgaXQgaXMgdGhlcmUKCnRyYW5zYWN0aW9uKG5vZGVJRDogU3RyaW5nLCBkZWxlZ2F0b3JJRDogVUludDMyPywgYW1vdW50OiBVRml4NjQpIHsKICAgIAogICAgbGV0IHN0YWtpbmdDb2xsZWN0aW9uUmVmOiBhdXRoKEZsb3dTdGFraW5nQ29sbGVjdGlvbi5Db2xsZWN0aW9uT3duZXIpICZGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb24KCiAgICBwcmVwYXJlKGFjY291bnQ6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZiA9IGFjY291bnQuc3RvcmFnZS5ib3Jyb3c8YXV0aChGbG93U3Rha2luZ0NvbGxlY3Rpb24uQ29sbGVjdGlvbk93bmVyKSAmRmxvd1N0YWtpbmdDb2xsZWN0aW9uLlN0YWtpbmdDb2xsZWN0aW9uPihmcm9tOiBGbG93U3Rha2luZ0NvbGxlY3Rpb24uU3Rha2luZ0NvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBib3Jyb3cgYSByZWZlcmVuY2UgdG8gYSBTdGFraW5nQ29sbGVjdGlvbiBpbiB0aGUgcHJpbWFyeSB1c2VyJ3MgYWNjb3VudCIpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgc2VsZi5zdGFraW5nQ29sbGVjdGlvblJlZi53aXRoZHJhd1Vuc3Rha2VkVG9rZW5zKG5vZGVJRDogbm9kZUlELCBkZWxlZ2F0b3JJRDogZGVsZWdhdG9ySUQsIGFtb3VudDogYW1vdW50KQogICAgfQp9" }, "storage": { - "enableTokenStorage": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBlbmFibGVUb2tlblN0b3JhZ2UgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24gewoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKCiAgICAgICAgaWYgc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCY8VG9rZW4+LlZhdWx0Pihmcm9tOiA8VG9rZW5TdG9yYWdlUGF0aD4gKSA9PSBuaWwgewogICAgICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKDwtIDxUb2tlbj4uY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QDxUb2tlbj4uVmF1bHQ+KCkpLCB0bzogPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgIH0KCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuUmVjZWl2ZXJQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgcmVjZWl2ZXJDYXBhYmlsaXR5ID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCY8VG9rZW4+LlZhdWx0Pig8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgICAgIHNpZ25lci5jYXBhYmlsaXRpZXMucHVibGlzaChyZWNlaXZlckNhcGFiaWxpdHksIGF0OiA8VG9rZW5SZWNlaXZlclBhdGg+KQogICAgICAgIAogICAgICAgIH0KICAgICAgIAogICAgICAgIGlmIHNpZ25lci5jYXBhYmlsaXRpZXMuZXhpc3RzKDxUb2tlbkJhbGFuY2VQYXRoPikgPT0gZmFsc2UgewogICAgICAgICAgICBsZXQgYmFsYW5jZUNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKGJhbGFuY2VDYXBhYmlsaXR5LCBhdDogPFRva2VuQmFsYW5jZVBhdGg+KQogICAgICAgIH0KICAgIAogICAgfQp9", - "getBasicPublicItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRCYXNpY1B1YmxpY0l0ZW1zIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGFjY2VzcyhhbGwpc3RydWN0IEl0ZW0gewogIGFjY2VzcyhhbGwpbGV0IGFkZHJlc3M6IEFkZHJlc3MKICBhY2Nlc3MoYWxsKWxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKWxldCB0YXJnZXRQYXRoOiBTdHJpbmc/CgogIGluaXQoYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCB0YXJnZXRQYXRoOiBTdHJpbmc/KSB7CiAgICBzZWxmLmFkZHJlc3MgPSBhZGRyZXNzCiAgICBzZWxmLnBhdGggPSBwYXRoCiAgICBzZWxmLnRhcmdldFBhdGggPSB0YXJnZXRQYXRoCiAgfQp9CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbSXRlbV0gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQogIGxldCBpdGVtczogW0l0ZW1dID0gW10KCgogIGZ1biBlYWNoUGF0aChwYXRoOiBQdWJsaWNQYXRoLCBjYXBUeXBlOiBUeXBlKTogQm9vbCB7CiAgICAvLyB0b2RvCiAgICBsZXQgY2FwID0gYWNjb3VudC5jYXBhYmlsaXRpZXMuZ2V0PCZBbnlTdHJ1Y3Q+KHBhdGgpCiAgICB2YXIgdGFyZ2V0UGF0aCA9ICIiCgogICAgaWYgY2FwICE9IG5pbCB7CiAgICAgIHRhcmdldFBhdGggPSAiMTIiIAogICAgfQogICAgbGV0IGl0ZW0gPSBJdGVtKGFkZHJlc3M6IGFkZHJlc3MsIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwgdGFyZ2V0UGF0aDogdGFyZ2V0UGF0aCkKICAgIGl0ZW1zLmFwcGVuZChpdGVtKQogICAgcmV0dXJuIHRydWUKICB9CiAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hQdWJsaWMoZWFjaFBhdGgpCgogIHJldHVybiBpdGVtcwp9", - "getPrivateItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRQcml2YXRlSXRlbXMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgYWNjZXNzKGFsbClzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbClsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHR5cGU6IFR5cGUKICBhY2Nlc3MoYWxsKWxldCB0YXJnZXRQYXRoOiBTdHJpbmc/CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLCAKICAgIHBhdGg6IFN0cmluZywgCiAgICB0eXBlOiBUeXBlLCAKICAgIHRhcmdldFBhdGg6IFN0cmluZz8KICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudHlwZSA9IHR5cGUKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICB9Cn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aE1hcDoge1N0cmluZzogQm9vbH0pOiBbSXRlbV0gewogIGxldCBhY2NvdW50ID0gZ2V0QWNjb3VudChhZGRyZXNzKQoKICBsZXQgaXRlbXM6IFtJdGVtXSA9IFtdCgogIGFjY291bnQuc3RvcmFnZS5mb3JFYWNoUHJpdmF0ZShmdW4gKHBhdGg6IFByaXZhdGVQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICBpZiAhcGF0aE1hcC5jb250YWluc0tleShwYXRoLnRvU3RyaW5nKCkpIHsKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICB2YXIgdGFyZ2V0UGF0aDogU3RyaW5nPyA9IG5pbAogICAgaWYgbGV0IHRhcmdldCA9IGFjY291bnQuZ2V0TGlua1RhcmdldChwYXRoKSB7CiAgICAgIHRhcmdldFBhdGggPSB0YXJnZXQudG9TdHJpbmcoKQogICAgfQoKICAgIGxldCBpdGVtID0gSXRlbSgKICAgICAgYWRkcmVzczogYWRkcmVzcywKICAgICAgcGF0aDogcGF0aC50b1N0cmluZygpLAogICAgICB0eXBlOiB0eXBlLAogICAgICB0YXJnZXRQYXRoOiB0YXJnZXRQYXRoCiAgICApCgogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gdHJ1ZQogIH0pCgogIHJldHVybiBpdGVtcwp9", - "getPrivatePaths": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRQcml2YXRlUGF0aHMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgYWNjZXNzKGFsbClmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW1ByaXZhdGVQYXRoXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCBjbGVhbmRQYXRoczogW1ByaXZhdGVQYXRoXSA9IFtdCiAgZm9yIHBhdGggaW4gYWNjb3VudC5wcml2YXRlUGF0aHMgewogICAgY2xlYW5kUGF0aHMuYXBwZW5kKHBhdGgpCiAgfQogIHJldHVybiBjbGVhbmRQYXRocwp9", - "getPublicItem": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRQdWJsaWNJdGVtIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIC8vIEEgd29ya2Fyb3VuZCBtZXRob2QKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KICAKYWNjZXNzKGFsbCkgc3RydWN0IEl0ZW0gewogIGFjY2VzcyhhbGwpIGxldCBhZGRyZXNzOiBBZGRyZXNzCiAgYWNjZXNzKGFsbCkgbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpIGxldCB0eXBlOiBUeXBlCgogIGFjY2VzcyhhbGwpIGxldCB0YXJnZXRQYXRoOiBTdHJpbmc/CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLCAKICAgIHBhdGg6IFN0cmluZywgCiAgICB0eXBlOiBUeXBlLCAKICAgIHRhcmdldFBhdGg6IFN0cmluZz8KICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudHlwZSA9IHR5cGUKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhNYXA6IHtTdHJpbmc6IEJvb2x9KTogW0l0ZW1dIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCgogIGxldCBpdGVtczogW0l0ZW1dID0gW10KICBhY2NvdW50LmZvckVhY2hQdWJsaWMoZnVuIChwYXRoOiBQdWJsaWNQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICBpZiAhcGF0aE1hcC5jb250YWluc0tleShwYXRoLnRvU3RyaW5nKCkpIHsKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICB2YXIgdGFyZ2V0UGF0aDogU3RyaW5nPyA9IG5pbAoKICAgIGlmIGxldCB0YXJnZXQgPSBhY2NvdW50LmdldExpbmtUYXJnZXQocGF0aCkgewogICAgICB0YXJnZXRQYXRoID0gdGFyZ2V0LnRvU3RyaW5nKCkKICAgIH0KCiAgICBsZXQgaXRlbSA9IEl0ZW0oCiAgICAgIGFkZHJlc3M6IGFkZHJlc3MsCiAgICAgIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwKICAgICAgdHlwZTogdHlwZSwKICAgICAgdGFyZ2V0UGF0aDogdGFyZ2V0UGF0aAogICAgKQoKICAgIGl0ZW1zLmFwcGVuZChpdGVtKQogICAgcmV0dXJuIGZhbHNlCiAgfSkKCiAgcmV0dXJuIGl0ZW1zCn0=", - "getPublicItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRQdWJsaWNJdGVtcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgogIAphY2Nlc3MoYWxsKSBzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbCkgbGV0IGFkZHJlc3M6IEFkZHJlc3MKICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHR5cGU6IFR5cGUKCiAgYWNjZXNzKGFsbCkgbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgYWNjZXNzKGFsbCkgbGV0IGlzQ29sbGVjdGlvbkNhcDogQm9vbAogIGFjY2VzcyhhbGwpIGxldCB0b2tlbklEczogW1VJbnQ2NF0KCiAgYWNjZXNzKGFsbCkgbGV0IGlzQmFsYW5jZUNhcDogQm9vbAogIGFjY2VzcyhhbGwpIGxldCBiYWxhbmNlOiBVRml4NjQ/CgogIGluaXQoCiAgICBhZGRyZXNzOiBBZGRyZXNzLCAKICAgIHBhdGg6IFN0cmluZywgCiAgICB0eXBlOiBUeXBlLCAKICAgIHRhcmdldFBhdGg6IFN0cmluZz8sIAogICAgaXNDb2xsZWN0aW9uQ2FwOiBCb29sLCAKICAgIHRva2VuSURzOiBbVUludDY0XSwKICAgIGlzQmFsYW5jZUNhcDogQm9vbCwKICAgIGJhbGFuY2U6IFVGaXg2ND8KICApIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudHlwZSA9IHR5cGUKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICAgIHNlbGYuaXNDb2xsZWN0aW9uQ2FwID0gaXNDb2xsZWN0aW9uQ2FwCiAgICBzZWxmLnRva2VuSURzID0gdG9rZW5JRHMKICAgIHNlbGYuaXNCYWxhbmNlQ2FwID0gaXNCYWxhbmNlQ2FwCiAgICBzZWxmLmJhbGFuY2UgPSBiYWxhbmNlCiAgfQp9CgphY2Nlc3MoYWxsKSBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoTWFwOiB7U3RyaW5nOiBCb29sfSk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQoKICBsZXQgaXRlbXM6IFtJdGVtXSA9IFtdCiAgbGV0IGJhbGFuY2VDYXBUeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZBbnlSZXNvdXJjZXtGdW5naWJsZVRva2VuLkJhbGFuY2V9Pj4oKQogIGxldCBjb2xsZWN0aW9uVHlwZSA9IFR5cGU8Q2FwYWJpbGl0eTwmQW55UmVzb3VyY2V7Tm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uUHVibGljfT4+KCkKCiAgYWNjb3VudC5mb3JFYWNoUHVibGljKGZ1biAocGF0aDogUHVibGljUGF0aCwgdHlwZTogVHlwZSk6IEJvb2wgewogICAgaWYgIXBhdGhNYXAuY29udGFpbnNLZXkocGF0aC50b1N0cmluZygpKSB7CiAgICAgIHJldHVybiB0cnVlCiAgICB9CgogICAgdmFyIHRhcmdldFBhdGg6IFN0cmluZz8gPSBuaWwKICAgIHZhciBpc0NvbGxlY3Rpb25DYXAgPSBmYWxzZQogICAgdmFyIGlzQmFsYW5jZUNhcCA9IGZhbHNlCiAgICB2YXIgdG9rZW5JRHM6IFtVSW50NjRdID0gW10KICAgIHZhciBiYWxhbmNlOiBVRml4NjQ/ID0gbmlsCgogICAgaWYgbGV0IHRhcmdldCA9IGFjY291bnQuZ2V0TGlua1RhcmdldChwYXRoKSB7CiAgICAgIHRhcmdldFBhdGggPSB0YXJnZXQudG9TdHJpbmcoKQogICAgfQoKICAgIGlmICh0eXBlLmlzU3VidHlwZShvZjogYmFsYW5jZUNhcFR5cGUpKSB7CiAgICAgIGlzQmFsYW5jZUNhcCA9IHRydWUKICAgICAgbGV0IHZhdWx0UmVmID0gYWNjb3VudAogICAgICAgICAgLmdldENhcGFiaWxpdHkocGF0aCkKICAgICAgICAgIC5ib3Jyb3c8JntGdW5naWJsZVRva2VuLkJhbGFuY2V9PigpCgogICAgICBpZiBsZXQgdmF1bHQgPSB2YXVsdFJlZiB7CiAgICAgICAgICBiYWxhbmNlID0gdmF1bHQuYmFsYW5jZQogICAgICB9CiAgICB9IGVsc2UgaWYgKHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkpIHsKICAgICAgaXNDb2xsZWN0aW9uQ2FwID0gdHJ1ZQogICAgICBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQKICAgICAgICAuZ2V0Q2FwYWJpbGl0eShwYXRoKQogICAgICAgIC5ib3Jyb3c8JntOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PigpCgogICAgICBpZiBsZXQgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25SZWYgewogICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvbi5nZXRJRHMoKQogICAgICB9CiAgICB9CgogICAgbGV0IGl0ZW0gPSBJdGVtKAogICAgICBhZGRyZXNzOiBhZGRyZXNzLAogICAgICBwYXRoOiBwYXRoLnRvU3RyaW5nKCksCiAgICAgIHR5cGU6IHR5cGUsCiAgICAgIHRhcmdldFBhdGg6IHRhcmdldFBhdGgsCiAgICAgIGlzQ29sbGVjdGlvbkNhcDogaXNDb2xsZWN0aW9uQ2FwLAogICAgICB0b2tlbklEczogdG9rZW5JRHMsCiAgICAgIGlzQmFsYW5jZUNhcDogaXNCYWxhbmNlQ2FwLAogICAgICBiYWxhbmNlOiBiYWxhbmNlCiAgICApCgogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gdHJ1ZQogIH0pCgogIHJldHVybiBpdGVtcwp9", - "getPublicPaths": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRQdWJsaWNQYXRocyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtQdWJsaWNQYXRoXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCBjbGVhbmRQYXRoczogW1B1YmxpY1BhdGhdID0gW10KICBmb3IgcGF0aCBpbiBhY2NvdW50LnB1YmxpY1BhdGhzIHsKICAgIGNsZWFuZFBhdGhzLmFwcGVuZChwYXRoKQogIH0KICByZXR1cm4gY2xlYW5kUGF0aHMKfQ==", - "getStoragePaths": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRTdG9yYWdlUGF0aHMgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgcHViIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbU3RvcmFnZVBhdGhdIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNsZWFuZFBhdGhzOiBbU3RvcmFnZVBhdGhdID0gW10KICBmb3IgcGF0aCBpbiBhY2NvdW50LnN0b3JhZ2VQYXRocyB7CiAgICBjbGVhbmRQYXRocy5hcHBlbmQocGF0aCkKICB9CiAgcmV0dXJuIGNsZWFuZFBhdGhzCn0=", - "getStoredItems": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRTdG9yZWRJdGVtcyAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBpbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKcHViIHN0cnVjdCBDb2xsZWN0aW9uRGlzcGxheSB7CiAgcHViIGxldCBuYW1lOiBTdHJpbmcKICBwdWIgbGV0IHNxdWFyZUltYWdlOiBNZXRhZGF0YVZpZXdzLk1lZGlhCgogIGluaXQobmFtZTogU3RyaW5nLCBzcXVhcmVJbWFnZTogTWV0YWRhdGFWaWV3cy5NZWRpYSkgewogICAgc2VsZi5uYW1lID0gbmFtZQogICAgc2VsZi5zcXVhcmVJbWFnZSA9IHNxdWFyZUltYWdlCiAgfQp9CgpwdWIgc3RydWN0IEl0ZW0gewogIHB1YiBsZXQgYWRkcmVzczogQWRkcmVzcwogIHB1YiBsZXQgcGF0aDogU3RyaW5nCiAgcHViIGxldCB0eXBlOiBUeXBlCiAgcHViIGxldCBpc1Jlc291cmNlOiBCb29sCiAgcHViIGxldCBpc05GVENvbGxlY3Rpb246IEJvb2wKICBwdWIgbGV0IGRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PwogIHB1YiBsZXQgdG9rZW5JRHM6IFtVSW50NjRdCiAgcHViIGxldCBpc1ZhdWx0OiBCb29sCiAgcHViIGxldCBiYWxhbmNlOiBVRml4NjQ/CgogIGluaXQoYWRkcmVzczogQWRkcmVzcywgcGF0aDogU3RyaW5nLCB0eXBlOiBUeXBlLCBpc1Jlc291cmNlOiBCb29sLCAKICAgIGlzTkZUQ29sbGVjdGlvbjogQm9vbCwgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/LAogICAgdG9rZW5JRHM6IFtVSW50NjRdLCBpc1ZhdWx0OiBCb29sLCBiYWxhbmNlOiBVRml4NjQ/KSB7CiAgICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgICAgc2VsZi5wYXRoID0gcGF0aAogICAgICBzZWxmLnR5cGUgPSB0eXBlCiAgICAgIHNlbGYuaXNSZXNvdXJjZSA9IGlzUmVzb3VyY2UKICAgICAgc2VsZi5pc05GVENvbGxlY3Rpb24gPSBpc05GVENvbGxlY3Rpb24KICAgICAgc2VsZi5kaXNwbGF5ID0gZGlzcGxheQogICAgICBzZWxmLnRva2VuSURzID0gdG9rZW5JRHMKICAgICAgc2VsZi5pc1ZhdWx0ID0gaXNWYXVsdAogICAgICBzZWxmLmJhbGFuY2UgPSBiYWxhbmNlCiAgfQp9CgpwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aElkZW50aWZpZXJzOiBbU3RyaW5nXSk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCByZXNvdXJjZVR5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZT4oKQogIGxldCB2YXVsdFR5cGUgPSBUeXBlPEBGdW5naWJsZVRva2VuLlZhdWx0PigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxATm9uRnVuZ2libGVUb2tlbi5Db2xsZWN0aW9uPigpCiAgbGV0IG1ldGFkYXRhVmlld1R5cGUgPSBUeXBlPEBBbnlSZXNvdXJjZXtNZXRhZGF0YVZpZXdzLlJlc29sdmVyQ29sbGVjdGlvbn0+KCkKICBsZXQgaXRlbXM6IFtJdGVtXSA9IFtdCgogIGZvciBpZGVudGlmaWVyIGluIHBhdGhJZGVudGlmaWVycyB7CiAgICBsZXQgcGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IGlkZW50aWZpZXIpIQoKICAgIGlmIGxldCB0eXBlID0gYWNjb3VudC50eXBlKGF0OiBwYXRoKSB7CiAgICAgIGxldCBpc1Jlc291cmNlID0gdHlwZS5pc1N1YnR5cGUob2Y6IHJlc291cmNlVHlwZSkKICAgICAgbGV0IGlzTkZUQ29sbGVjdGlvbiA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBjb2xsZWN0aW9uVHlwZSkKICAgICAgbGV0IGNvbmZvcm1lZE1ldGFkYXRhVmlld3MgPSB0eXBlLmlzU3VidHlwZShvZjogbWV0YWRhdGFWaWV3VHlwZSkKCiAgICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgICB2YXIgY29sbGVjdGlvbkRpc3BsYXk6IENvbGxlY3Rpb25EaXNwbGF5PyA9IG5pbAogICAgICBpZiBpc05GVENvbGxlY3Rpb24gJiYgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyB7CiAgICAgICAgaWYgbGV0IGNvbGxlY3Rpb25SZWYgPSBhY2NvdW50LmJvcnJvdzwme01ldGFkYXRhVmlld3MuUmVzb2x2ZXJDb2xsZWN0aW9uLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pihmcm9tOiBwYXRoKSB7CiAgICAgICAgICB0b2tlbklEcyA9IGNvbGxlY3Rpb25SZWYuZ2V0SURzKCkKCiAgICAgICAgICAvLyBUT0RPOiBtb3ZlIHRvIGEgbGlzdAogICAgICAgICAgaWYgdG9rZW5JRHMubGVuZ3RoID4gMCAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvUmFyaWJsZU5GVENvbGxlY3Rpb24gCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FSVElGQUNUUGFja1YzQ29sbGVjdGlvbgogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9BcmxlZVNjZW5lIHsKICAgICAgICAgICAgbGV0IHJlc29sdmVyID0gY29sbGVjdGlvblJlZi5ib3Jyb3dWaWV3UmVzb2x2ZXIoaWQ6IHRva2VuSURzWzBdKSAKICAgICAgICAgICAgaWYgbGV0IGRpc3BsYXkgPSBNZXRhZGF0YVZpZXdzLmdldE5GVENvbGxlY3Rpb25EaXNwbGF5KHJlc29sdmVyKSB7CiAgICAgICAgICAgICAgY29sbGVjdGlvbkRpc3BsYXkgPSBDb2xsZWN0aW9uRGlzcGxheSgKICAgICAgICAgICAgICAgIG5hbWU6IGRpc3BsYXkubmFtZSwKICAgICAgICAgICAgICAgIHNxdWFyZUltYWdlOiBkaXNwbGF5LnNxdWFyZUltYWdlCiAgICAgICAgICAgICAgKQogICAgICAgICAgICB9CiAgICAgICAgICB9CiAgICAgICAgfQogICAgICB9IGVsc2UgaWYgaXNORlRDb2xsZWN0aW9uIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuYm9ycm93PCZOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb24+KGZyb206IHBhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQogICAgICAgIH0KICAgICAgfQoKICAgICAgbGV0IGlzVmF1bHQgPSB0eXBlLmlzU3VidHlwZShvZjogdmF1bHRUeXBlKSAKICAgICAgdmFyIGJhbGFuY2U6IFVGaXg2ND8gPSBuaWwKICAgICAgaWYgaXNWYXVsdCB7CiAgICAgICAgaWYgbGV0IHZhdWx0UmVmID0gYWNjb3VudC5ib3Jyb3c8JkZ1bmdpYmxlVG9rZW4uVmF1bHQ+KGZyb206IHBhdGgpIHsKICAgICAgICAgIGJhbGFuY2UgPSB2YXVsdFJlZi5iYWxhbmNlCiAgICAgICAgfQogICAgICB9CgogICAgICBsZXQgaXRlbSA9IEl0ZW0oCiAgICAgICAgYWRkcmVzczogYWRkcmVzcywKICAgICAgICBwYXRoOiBwYXRoLnRvU3RyaW5nKCksCiAgICAgICAgdHlwZTogdHlwZSwKICAgICAgICBpc1Jlc291cmNlOiBpc1Jlc291cmNlLAogICAgICAgIGlzTkZUQ29sbGVjdGlvbjogaXNORlRDb2xsZWN0aW9uLAogICAgICAgIGRpc3BsYXk6IGNvbGxlY3Rpb25EaXNwbGF5LAogICAgICAgIHRva2VuSURzOiB0b2tlbklEcywKICAgICAgICBpc1ZhdWx0OiBpc1ZhdWx0LAogICAgICAgIGJhbGFuY2U6IGJhbGFuY2UKICAgICAgKQoKICAgICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICB9CiAgfQoKICByZXR1cm4gaXRlbXMKfQ==", - "getStoredResource": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRTdG9yZWRSZXNvdXJjZSAtIHYyLjI4CiAgICAvLyA8cGxhdGZvcm1faW5mbz4KICAgICBwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aFN0cjogU3RyaW5nKTogJkFueVJlc291cmNlPyB7CiAgbGV0IGFjY291bnQgPSBnZXRBdXRoQWNjb3VudChhZGRyZXNzKQogIGxldCBwYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogcGF0aFN0cikhCiAgcmV0dXJuIGFjY291bnQuYm9ycm93PCZBbnlSZXNvdXJjZT4oZnJvbTogcGF0aCkKfQ==", - "getStoredStruct": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBnZXRTdG9yZWRTdHJ1Y3QgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgcHViIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhTdHI6IFN0cmluZyk6ICZBbnlTdHJ1Y3Q/IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoU3RyKSEKICByZXR1cm4gYWNjb3VudC5ib3Jyb3c8JkFueVN0cnVjdD4oZnJvbTogcGF0aCkKfQ==" + "enableTokenStorage": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZW5hYmxlVG9rZW5TdG9yYWdlIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewoKICAgICAgICBpZiBzaWduZXIuc3RvcmFnZS5ib3Jyb3c8JjxUb2tlbj4uVmF1bHQ+KGZyb206IDxUb2tlblN0b3JhZ2VQYXRoPiApID09IG5pbCB7CiAgICAgICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUoPC0gPFRva2VuPi5jcmVhdGVFbXB0eVZhdWx0KHZhdWx0VHlwZTogVHlwZTxAPFRva2VuPi5WYXVsdD4oKSksIHRvOiA8VG9rZW5TdG9yYWdlUGF0aD4pCiAgICAgICAgfQoKICAgICAgICBpZiBzaWduZXIuY2FwYWJpbGl0aWVzLmV4aXN0cyg8VG9rZW5SZWNlaXZlclBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCByZWNlaXZlckNhcGFiaWxpdHkgPSBzaWduZXIuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JjxUb2tlbj4uVmF1bHQ+KDxUb2tlblN0b3JhZ2VQYXRoPikKICAgICAgICAgICAgc2lnbmVyLmNhcGFiaWxpdGllcy5wdWJsaXNoKHJlY2VpdmVyQ2FwYWJpbGl0eSwgYXQ6IDxUb2tlblJlY2VpdmVyUGF0aD4pCiAgICAgICAgCiAgICAgICAgfQogICAgICAgCiAgICAgICAgaWYgc2lnbmVyLmNhcGFiaWxpdGllcy5leGlzdHMoPFRva2VuQmFsYW5jZVBhdGg+KSA9PSBmYWxzZSB7CiAgICAgICAgICAgIGxldCBiYWxhbmNlQ2FwYWJpbGl0eSA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwmPFRva2VuPi5WYXVsdD4oPFRva2VuU3RvcmFnZVBhdGg+KQogICAgICAgICAgICBzaWduZXIuY2FwYWJpbGl0aWVzLnB1Ymxpc2goYmFsYW5jZUNhcGFiaWxpdHksIGF0OiA8VG9rZW5CYWxhbmNlUGF0aD4pCiAgICAgICAgfQogICAgCiAgICB9Cn0=", + "getBasicPublicItems": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0QmFzaWNQdWJsaWNJdGVtcyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKYWNjZXNzKGFsbClzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbClsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpbGV0IHBhdGg6IFN0cmluZwogIGFjY2VzcyhhbGwpbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgaW5pdChhZGRyZXNzOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsIHRhcmdldFBhdGg6IFN0cmluZz8pIHsKICAgIHNlbGYuYWRkcmVzcyA9IGFkZHJlc3MKICAgIHNlbGYucGF0aCA9IHBhdGgKICAgIHNlbGYudGFyZ2V0UGF0aCA9IHRhcmdldFBhdGgKICB9Cn0KCmFjY2VzcyhhbGwpZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGl0ZW1zOiBbSXRlbV0gPSBbXQoKCiAgZnVuIGVhY2hQYXRoKHBhdGg6IFB1YmxpY1BhdGgsIGNhcFR5cGU6IFR5cGUpOiBCb29sIHsKICAgIC8vIHRvZG8KICAgIGxldCBjYXAgPSBhY2NvdW50LmNhcGFiaWxpdGllcy5nZXQ8JkFueVN0cnVjdD4ocGF0aCkKICAgIHZhciB0YXJnZXRQYXRoID0gIiIKCiAgICBpZiBjYXAgIT0gbmlsIHsKICAgICAgdGFyZ2V0UGF0aCA9ICIxMiIgCiAgICB9CiAgICBsZXQgaXRlbSA9IEl0ZW0oYWRkcmVzczogYWRkcmVzcywgcGF0aDogcGF0aC50b1N0cmluZygpLCB0YXJnZXRQYXRoOiB0YXJnZXRQYXRoKQogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gdHJ1ZQogIH0KICBhY2NvdW50LnN0b3JhZ2UuZm9yRWFjaFB1YmxpYyhlYWNoUGF0aCkKCiAgcmV0dXJuIGl0ZW1zCn0=", + "getPrivateItems": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0UHJpdmF0ZUl0ZW1zIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgphY2Nlc3MoYWxsKXN0cnVjdCBJdGVtIHsKICBhY2Nlc3MoYWxsKWxldCBhZGRyZXNzOiBBZGRyZXNzCiAgYWNjZXNzKGFsbClsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbClsZXQgdHlwZTogVHlwZQogIGFjY2VzcyhhbGwpbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsIAogICAgcGF0aDogU3RyaW5nLCAKICAgIHR5cGU6IFR5cGUsIAogICAgdGFyZ2V0UGF0aDogU3RyaW5nPwogICkgewogICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi50eXBlID0gdHlwZQogICAgc2VsZi50YXJnZXRQYXRoID0gdGFyZ2V0UGF0aAogIH0KfQoKYWNjZXNzKGFsbClmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoTWFwOiB7U3RyaW5nOiBCb29sfSk6IFtJdGVtXSB7CiAgbGV0IGFjY291bnQgPSBnZXRBY2NvdW50KGFkZHJlc3MpCgogIGxldCBpdGVtczogW0l0ZW1dID0gW10KCiAgYWNjb3VudC5zdG9yYWdlLmZvckVhY2hQcml2YXRlKGZ1biAocGF0aDogUHJpdmF0ZVBhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgIGlmICFwYXRoTWFwLmNvbnRhaW5zS2V5KHBhdGgudG9TdHJpbmcoKSkgewogICAgICByZXR1cm4gdHJ1ZQogICAgfQoKICAgIHZhciB0YXJnZXRQYXRoOiBTdHJpbmc/ID0gbmlsCiAgICBpZiBsZXQgdGFyZ2V0ID0gYWNjb3VudC5nZXRMaW5rVGFyZ2V0KHBhdGgpIHsKICAgICAgdGFyZ2V0UGF0aCA9IHRhcmdldC50b1N0cmluZygpCiAgICB9CgogICAgbGV0IGl0ZW0gPSBJdGVtKAogICAgICBhZGRyZXNzOiBhZGRyZXNzLAogICAgICBwYXRoOiBwYXRoLnRvU3RyaW5nKCksCiAgICAgIHR5cGU6IHR5cGUsCiAgICAgIHRhcmdldFBhdGg6IHRhcmdldFBhdGgKICAgICkKCiAgICBpdGVtcy5hcHBlbmQoaXRlbSkKICAgIHJldHVybiB0cnVlCiAgfSkKCiAgcmV0dXJuIGl0ZW1zCn0=", + "getPrivatePaths": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0UHJpdmF0ZVBhdGhzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgphY2Nlc3MoYWxsKWZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MpOiBbUHJpdmF0ZVBhdGhdIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNsZWFuZFBhdGhzOiBbUHJpdmF0ZVBhdGhdID0gW10KICBmb3IgcGF0aCBpbiBhY2NvdW50LnByaXZhdGVQYXRocyB7CiAgICBjbGVhbmRQYXRocy5hcHBlbmQocGF0aCkKICB9CiAgcmV0dXJuIGNsZWFuZFBhdGhzCn0=", + "getPublicItem": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0UHVibGljSXRlbSAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKLy8gQSB3b3JrYXJvdW5kIG1ldGhvZAppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgogIAphY2Nlc3MoYWxsKSBzdHJ1Y3QgSXRlbSB7CiAgYWNjZXNzKGFsbCkgbGV0IGFkZHJlc3M6IEFkZHJlc3MKICBhY2Nlc3MoYWxsKSBsZXQgcGF0aDogU3RyaW5nCiAgYWNjZXNzKGFsbCkgbGV0IHR5cGU6IFR5cGUKCiAgYWNjZXNzKGFsbCkgbGV0IHRhcmdldFBhdGg6IFN0cmluZz8KCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsIAogICAgcGF0aDogU3RyaW5nLCAKICAgIHR5cGU6IFR5cGUsIAogICAgdGFyZ2V0UGF0aDogU3RyaW5nPwogICkgewogICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi50eXBlID0gdHlwZQogICAgc2VsZi50YXJnZXRQYXRoID0gdGFyZ2V0UGF0aAogIH0KfQoKYWNjZXNzKGFsbCkgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aE1hcDoge1N0cmluZzogQm9vbH0pOiBbSXRlbV0gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQoYWRkcmVzcykKCiAgbGV0IGl0ZW1zOiBbSXRlbV0gPSBbXQogIGFjY291bnQuZm9yRWFjaFB1YmxpYyhmdW4gKHBhdGg6IFB1YmxpY1BhdGgsIHR5cGU6IFR5cGUpOiBCb29sIHsKICAgIGlmICFwYXRoTWFwLmNvbnRhaW5zS2V5KHBhdGgudG9TdHJpbmcoKSkgewogICAgICByZXR1cm4gdHJ1ZQogICAgfQoKICAgIHZhciB0YXJnZXRQYXRoOiBTdHJpbmc/ID0gbmlsCgogICAgaWYgbGV0IHRhcmdldCA9IGFjY291bnQuZ2V0TGlua1RhcmdldChwYXRoKSB7CiAgICAgIHRhcmdldFBhdGggPSB0YXJnZXQudG9TdHJpbmcoKQogICAgfQoKICAgIGxldCBpdGVtID0gSXRlbSgKICAgICAgYWRkcmVzczogYWRkcmVzcywKICAgICAgcGF0aDogcGF0aC50b1N0cmluZygpLAogICAgICB0eXBlOiB0eXBlLAogICAgICB0YXJnZXRQYXRoOiB0YXJnZXRQYXRoCiAgICApCgogICAgaXRlbXMuYXBwZW5kKGl0ZW0pCiAgICByZXR1cm4gZmFsc2UKICB9KQoKICByZXR1cm4gaXRlbXMKfQ==", + "getPublicItems": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0UHVibGljSXRlbXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCiAgCmFjY2VzcyhhbGwpIHN0cnVjdCBJdGVtIHsKICBhY2Nlc3MoYWxsKSBsZXQgYWRkcmVzczogQWRkcmVzcwogIGFjY2VzcyhhbGwpIGxldCBwYXRoOiBTdHJpbmcKICBhY2Nlc3MoYWxsKSBsZXQgdHlwZTogVHlwZQoKICBhY2Nlc3MoYWxsKSBsZXQgdGFyZ2V0UGF0aDogU3RyaW5nPwoKICBhY2Nlc3MoYWxsKSBsZXQgaXNDb2xsZWN0aW9uQ2FwOiBCb29sCiAgYWNjZXNzKGFsbCkgbGV0IHRva2VuSURzOiBbVUludDY0XQoKICBhY2Nlc3MoYWxsKSBsZXQgaXNCYWxhbmNlQ2FwOiBCb29sCiAgYWNjZXNzKGFsbCkgbGV0IGJhbGFuY2U6IFVGaXg2ND8KCiAgaW5pdCgKICAgIGFkZHJlc3M6IEFkZHJlc3MsIAogICAgcGF0aDogU3RyaW5nLCAKICAgIHR5cGU6IFR5cGUsIAogICAgdGFyZ2V0UGF0aDogU3RyaW5nPywgCiAgICBpc0NvbGxlY3Rpb25DYXA6IEJvb2wsIAogICAgdG9rZW5JRHM6IFtVSW50NjRdLAogICAgaXNCYWxhbmNlQ2FwOiBCb29sLAogICAgYmFsYW5jZTogVUZpeDY0PwogICkgewogICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgc2VsZi5wYXRoID0gcGF0aAogICAgc2VsZi50eXBlID0gdHlwZQogICAgc2VsZi50YXJnZXRQYXRoID0gdGFyZ2V0UGF0aAogICAgc2VsZi5pc0NvbGxlY3Rpb25DYXAgPSBpc0NvbGxlY3Rpb25DYXAKICAgIHNlbGYudG9rZW5JRHMgPSB0b2tlbklEcwogICAgc2VsZi5pc0JhbGFuY2VDYXAgPSBpc0JhbGFuY2VDYXAKICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICB9Cn0KCmFjY2VzcyhhbGwpIGZ1biBtYWluKGFkZHJlc3M6IEFkZHJlc3MsIHBhdGhNYXA6IHtTdHJpbmc6IEJvb2x9KTogW0l0ZW1dIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCgogIGxldCBpdGVtczogW0l0ZW1dID0gW10KICBsZXQgYmFsYW5jZUNhcFR5cGUgPSBUeXBlPENhcGFiaWxpdHk8JkFueVJlc291cmNle0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+PigpCiAgbGV0IGNvbGxlY3Rpb25UeXBlID0gVHlwZTxDYXBhYmlsaXR5PCZBbnlSZXNvdXJjZXtOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9Pj4oKQoKICBhY2NvdW50LmZvckVhY2hQdWJsaWMoZnVuIChwYXRoOiBQdWJsaWNQYXRoLCB0eXBlOiBUeXBlKTogQm9vbCB7CiAgICBpZiAhcGF0aE1hcC5jb250YWluc0tleShwYXRoLnRvU3RyaW5nKCkpIHsKICAgICAgcmV0dXJuIHRydWUKICAgIH0KCiAgICB2YXIgdGFyZ2V0UGF0aDogU3RyaW5nPyA9IG5pbAogICAgdmFyIGlzQ29sbGVjdGlvbkNhcCA9IGZhbHNlCiAgICB2YXIgaXNCYWxhbmNlQ2FwID0gZmFsc2UKICAgIHZhciB0b2tlbklEczogW1VJbnQ2NF0gPSBbXQogICAgdmFyIGJhbGFuY2U6IFVGaXg2ND8gPSBuaWwKCiAgICBpZiBsZXQgdGFyZ2V0ID0gYWNjb3VudC5nZXRMaW5rVGFyZ2V0KHBhdGgpIHsKICAgICAgdGFyZ2V0UGF0aCA9IHRhcmdldC50b1N0cmluZygpCiAgICB9CgogICAgaWYgKHR5cGUuaXNTdWJ0eXBlKG9mOiBiYWxhbmNlQ2FwVHlwZSkpIHsKICAgICAgaXNCYWxhbmNlQ2FwID0gdHJ1ZQogICAgICBsZXQgdmF1bHRSZWYgPSBhY2NvdW50CiAgICAgICAgICAuZ2V0Q2FwYWJpbGl0eShwYXRoKQogICAgICAgICAgLmJvcnJvdzwme0Z1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KCkKCiAgICAgIGlmIGxldCB2YXVsdCA9IHZhdWx0UmVmIHsKICAgICAgICAgIGJhbGFuY2UgPSB2YXVsdC5iYWxhbmNlCiAgICAgIH0KICAgIH0gZWxzZSBpZiAodHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKSkgewogICAgICBpc0NvbGxlY3Rpb25DYXAgPSB0cnVlCiAgICAgIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudAogICAgICAgIC5nZXRDYXBhYmlsaXR5KHBhdGgpCiAgICAgICAgLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KCkKCiAgICAgIGlmIGxldCBjb2xsZWN0aW9uID0gY29sbGVjdGlvblJlZiB7CiAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uLmdldElEcygpCiAgICAgIH0KICAgIH0KCiAgICBsZXQgaXRlbSA9IEl0ZW0oCiAgICAgIGFkZHJlc3M6IGFkZHJlc3MsCiAgICAgIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwKICAgICAgdHlwZTogdHlwZSwKICAgICAgdGFyZ2V0UGF0aDogdGFyZ2V0UGF0aCwKICAgICAgaXNDb2xsZWN0aW9uQ2FwOiBpc0NvbGxlY3Rpb25DYXAsCiAgICAgIHRva2VuSURzOiB0b2tlbklEcywKICAgICAgaXNCYWxhbmNlQ2FwOiBpc0JhbGFuY2VDYXAsCiAgICAgIGJhbGFuY2U6IGJhbGFuY2UKICAgICkKCiAgICBpdGVtcy5hcHBlbmQoaXRlbSkKICAgIHJldHVybiB0cnVlCiAgfSkKCiAgcmV0dXJuIGl0ZW1zCn0=", + "getPublicPaths": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0UHVibGljUGF0aHMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnB1YiBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzKTogW1B1YmxpY1BhdGhdIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IGNsZWFuZFBhdGhzOiBbUHVibGljUGF0aF0gPSBbXQogIGZvciBwYXRoIGluIGFjY291bnQucHVibGljUGF0aHMgewogICAgY2xlYW5kUGF0aHMuYXBwZW5kKHBhdGgpCiAgfQogIHJldHVybiBjbGVhbmRQYXRocwp9", + "getStoragePaths": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0U3RvcmFnZVBhdGhzIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgpwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcyk6IFtTdG9yYWdlUGF0aF0gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQoYWRkcmVzcykKICBsZXQgY2xlYW5kUGF0aHM6IFtTdG9yYWdlUGF0aF0gPSBbXQogIGZvciBwYXRoIGluIGFjY291bnQuc3RvcmFnZVBhdGhzIHsKICAgIGNsZWFuZFBhdGhzLmFwcGVuZChwYXRoKQogIH0KICByZXR1cm4gY2xlYW5kUGF0aHMKfQ==", + "getStoredItems": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0U3RvcmVkSXRlbXMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCBOb25GdW5naWJsZVRva2VuIGZyb20gMHhOb25GdW5naWJsZVRva2VuCmltcG9ydCBNZXRhZGF0YVZpZXdzIGZyb20gMHhNZXRhZGF0YVZpZXdzCgpwdWIgc3RydWN0IENvbGxlY3Rpb25EaXNwbGF5IHsKICBwdWIgbGV0IG5hbWU6IFN0cmluZwogIHB1YiBsZXQgc3F1YXJlSW1hZ2U6IE1ldGFkYXRhVmlld3MuTWVkaWEKCiAgaW5pdChuYW1lOiBTdHJpbmcsIHNxdWFyZUltYWdlOiBNZXRhZGF0YVZpZXdzLk1lZGlhKSB7CiAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICBzZWxmLnNxdWFyZUltYWdlID0gc3F1YXJlSW1hZ2UKICB9Cn0KCnB1YiBzdHJ1Y3QgSXRlbSB7CiAgcHViIGxldCBhZGRyZXNzOiBBZGRyZXNzCiAgcHViIGxldCBwYXRoOiBTdHJpbmcKICBwdWIgbGV0IHR5cGU6IFR5cGUKICBwdWIgbGV0IGlzUmVzb3VyY2U6IEJvb2wKICBwdWIgbGV0IGlzTkZUQ29sbGVjdGlvbjogQm9vbAogIHB1YiBsZXQgZGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/CiAgcHViIGxldCB0b2tlbklEczogW1VJbnQ2NF0KICBwdWIgbGV0IGlzVmF1bHQ6IEJvb2wKICBwdWIgbGV0IGJhbGFuY2U6IFVGaXg2ND8KCiAgaW5pdChhZGRyZXNzOiBBZGRyZXNzLCBwYXRoOiBTdHJpbmcsIHR5cGU6IFR5cGUsIGlzUmVzb3VyY2U6IEJvb2wsIAogICAgaXNORlRDb2xsZWN0aW9uOiBCb29sLCBkaXNwbGF5OiBDb2xsZWN0aW9uRGlzcGxheT8sCiAgICB0b2tlbklEczogW1VJbnQ2NF0sIGlzVmF1bHQ6IEJvb2wsIGJhbGFuY2U6IFVGaXg2ND8pIHsKICAgICAgc2VsZi5hZGRyZXNzID0gYWRkcmVzcwogICAgICBzZWxmLnBhdGggPSBwYXRoCiAgICAgIHNlbGYudHlwZSA9IHR5cGUKICAgICAgc2VsZi5pc1Jlc291cmNlID0gaXNSZXNvdXJjZQogICAgICBzZWxmLmlzTkZUQ29sbGVjdGlvbiA9IGlzTkZUQ29sbGVjdGlvbgogICAgICBzZWxmLmRpc3BsYXkgPSBkaXNwbGF5CiAgICAgIHNlbGYudG9rZW5JRHMgPSB0b2tlbklEcwogICAgICBzZWxmLmlzVmF1bHQgPSBpc1ZhdWx0CiAgICAgIHNlbGYuYmFsYW5jZSA9IGJhbGFuY2UKICB9Cn0KCnB1YiBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoSWRlbnRpZmllcnM6IFtTdHJpbmddKTogW0l0ZW1dIHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHJlc291cmNlVHlwZSA9IFR5cGU8QEFueVJlc291cmNlPigpCiAgbGV0IHZhdWx0VHlwZSA9IFR5cGU8QEZ1bmdpYmxlVG9rZW4uVmF1bHQ+KCkKICBsZXQgY29sbGVjdGlvblR5cGUgPSBUeXBlPEBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb24+KCkKICBsZXQgbWV0YWRhdGFWaWV3VHlwZSA9IFR5cGU8QEFueVJlc291cmNle01ldGFkYXRhVmlld3MuUmVzb2x2ZXJDb2xsZWN0aW9ufT4oKQogIGxldCBpdGVtczogW0l0ZW1dID0gW10KCiAgZm9yIGlkZW50aWZpZXIgaW4gcGF0aElkZW50aWZpZXJzIHsKICAgIGxldCBwYXRoID0gU3RvcmFnZVBhdGgoaWRlbnRpZmllcjogaWRlbnRpZmllcikhCgogICAgaWYgbGV0IHR5cGUgPSBhY2NvdW50LnR5cGUoYXQ6IHBhdGgpIHsKICAgICAgbGV0IGlzUmVzb3VyY2UgPSB0eXBlLmlzU3VidHlwZShvZjogcmVzb3VyY2VUeXBlKQogICAgICBsZXQgaXNORlRDb2xsZWN0aW9uID0gdHlwZS5pc1N1YnR5cGUob2Y6IGNvbGxlY3Rpb25UeXBlKQogICAgICBsZXQgY29uZm9ybWVkTWV0YWRhdGFWaWV3cyA9IHR5cGUuaXNTdWJ0eXBlKG9mOiBtZXRhZGF0YVZpZXdUeXBlKQoKICAgICAgdmFyIHRva2VuSURzOiBbVUludDY0XSA9IFtdCiAgICAgIHZhciBjb2xsZWN0aW9uRGlzcGxheTogQ29sbGVjdGlvbkRpc3BsYXk/ID0gbmlsCiAgICAgIGlmIGlzTkZUQ29sbGVjdGlvbiAmJiBjb25mb3JtZWRNZXRhZGF0YVZpZXdzIHsKICAgICAgICBpZiBsZXQgY29sbGVjdGlvblJlZiA9IGFjY291bnQuYm9ycm93PCZ7TWV0YWRhdGFWaWV3cy5SZXNvbHZlckNvbGxlY3Rpb24sIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGZyb206IHBhdGgpIHsKICAgICAgICAgIHRva2VuSURzID0gY29sbGVjdGlvblJlZi5nZXRJRHMoKQoKICAgICAgICAgIC8vIFRPRE86IG1vdmUgdG8gYSBsaXN0CiAgICAgICAgICBpZiB0b2tlbklEcy5sZW5ndGggPiAwIAogICAgICAgICAgJiYgcGF0aCAhPSAvc3RvcmFnZS9SYXJpYmxlTkZUQ29sbGVjdGlvbiAKICAgICAgICAgICYmIHBhdGggIT0gL3N0b3JhZ2UvQVJUSUZBQ1RQYWNrVjNDb2xsZWN0aW9uCiAgICAgICAgICAmJiBwYXRoICE9IC9zdG9yYWdlL0FybGVlU2NlbmUgewogICAgICAgICAgICBsZXQgcmVzb2x2ZXIgPSBjb2xsZWN0aW9uUmVmLmJvcnJvd1ZpZXdSZXNvbHZlcihpZDogdG9rZW5JRHNbMF0pIAogICAgICAgICAgICBpZiBsZXQgZGlzcGxheSA9IE1ldGFkYXRhVmlld3MuZ2V0TkZUQ29sbGVjdGlvbkRpc3BsYXkocmVzb2x2ZXIpIHsKICAgICAgICAgICAgICBjb2xsZWN0aW9uRGlzcGxheSA9IENvbGxlY3Rpb25EaXNwbGF5KAogICAgICAgICAgICAgICAgbmFtZTogZGlzcGxheS5uYW1lLAogICAgICAgICAgICAgICAgc3F1YXJlSW1hZ2U6IGRpc3BsYXkuc3F1YXJlSW1hZ2UKICAgICAgICAgICAgICApCiAgICAgICAgICAgIH0KICAgICAgICAgIH0KICAgICAgICB9CiAgICAgIH0gZWxzZSBpZiBpc05GVENvbGxlY3Rpb24gewogICAgICAgIGlmIGxldCBjb2xsZWN0aW9uUmVmID0gYWNjb3VudC5ib3Jyb3c8Jk5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvbj4oZnJvbTogcGF0aCkgewogICAgICAgICAgdG9rZW5JRHMgPSBjb2xsZWN0aW9uUmVmLmdldElEcygpCiAgICAgICAgfQogICAgICB9CgogICAgICBsZXQgaXNWYXVsdCA9IHR5cGUuaXNTdWJ0eXBlKG9mOiB2YXVsdFR5cGUpIAogICAgICB2YXIgYmFsYW5jZTogVUZpeDY0PyA9IG5pbAogICAgICBpZiBpc1ZhdWx0IHsKICAgICAgICBpZiBsZXQgdmF1bHRSZWYgPSBhY2NvdW50LmJvcnJvdzwmRnVuZ2libGVUb2tlbi5WYXVsdD4oZnJvbTogcGF0aCkgewogICAgICAgICAgYmFsYW5jZSA9IHZhdWx0UmVmLmJhbGFuY2UKICAgICAgICB9CiAgICAgIH0KCiAgICAgIGxldCBpdGVtID0gSXRlbSgKICAgICAgICBhZGRyZXNzOiBhZGRyZXNzLAogICAgICAgIHBhdGg6IHBhdGgudG9TdHJpbmcoKSwKICAgICAgICB0eXBlOiB0eXBlLAogICAgICAgIGlzUmVzb3VyY2U6IGlzUmVzb3VyY2UsCiAgICAgICAgaXNORlRDb2xsZWN0aW9uOiBpc05GVENvbGxlY3Rpb24sCiAgICAgICAgZGlzcGxheTogY29sbGVjdGlvbkRpc3BsYXksCiAgICAgICAgdG9rZW5JRHM6IHRva2VuSURzLAogICAgICAgIGlzVmF1bHQ6IGlzVmF1bHQsCiAgICAgICAgYmFsYW5jZTogYmFsYW5jZQogICAgICApCgogICAgICBpdGVtcy5hcHBlbmQoaXRlbSkKICAgIH0KICB9CgogIHJldHVybiBpdGVtcwp9", + "getStoredResource": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0U3RvcmVkUmVzb3VyY2UgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCnB1YiBmdW4gbWFpbihhZGRyZXNzOiBBZGRyZXNzLCBwYXRoU3RyOiBTdHJpbmcpOiAmQW55UmVzb3VyY2U/IHsKICBsZXQgYWNjb3VudCA9IGdldEF1dGhBY2NvdW50KGFkZHJlc3MpCiAgbGV0IHBhdGggPSBTdG9yYWdlUGF0aChpZGVudGlmaWVyOiBwYXRoU3RyKSEKICByZXR1cm4gYWNjb3VudC5ib3Jyb3c8JkFueVJlc291cmNlPihmcm9tOiBwYXRoKQp9", + "getStoredStruct": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgZ2V0U3RvcmVkU3RydWN0IC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgpwdWIgZnVuIG1haW4oYWRkcmVzczogQWRkcmVzcywgcGF0aFN0cjogU3RyaW5nKTogJkFueVN0cnVjdD8gewogIGxldCBhY2NvdW50ID0gZ2V0QXV0aEFjY291bnQoYWRkcmVzcykKICBsZXQgcGF0aCA9IFN0b3JhZ2VQYXRoKGlkZW50aWZpZXI6IHBhdGhTdHIpIQogIHJldHVybiBhY2NvdW50LmJvcnJvdzwmQW55U3RydWN0Pihmcm9tOiBwYXRoKQp9" }, "temp": { - "addKeys": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBhZGRLZXlzIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KCnRyYW5zYWN0aW9uKHB1YmxpY0tleTogU3RyaW5nKSB7CiAgICBwcmVwYXJlKHNpZ25lcjogYXV0aChLZXlzKSAmQWNjb3VudCkgewogICAgICAgIGxldCBrZXkgPSBQdWJsaWNLZXkoCiAgICAgICAgICAgIHB1YmxpY0tleTogcHVibGljS2V5LmRlY29kZUhleCgpLAogICAgICAgICAgICBzaWduYXR1cmVBbGdvcml0aG06IFNpZ25hdHVyZUFsZ29yaXRobShyYXdWYWx1ZTogMSkhCiAgICAgICAgKQogICAgICAgIHZhciBpZHggPSAwCiAgICAgICAgd2hpbGUgaWR4IDwgOTkgewogICAgICAgICAgICBzaWduZXIua2V5cy5hZGQoCiAgICAgICAgICAgICAgICBwdWJsaWNLZXk6IGtleSwKICAgICAgICAgICAgICAgIGhhc2hBbGdvcml0aG06IEhhc2hBbGdvcml0aG0ocmF3VmFsdWU6IDEpISwKICAgICAgICAgICAgICAgIHdlaWdodDogMTAwMC4wCiAgICAgICAgICAgICkKICAgICAgICAgICAgaWR4ID0gaWR4ICsgMQogICAgICAgIH0KICAgICAgIAogICAgfQp9", - "createAccount": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBjcmVhdGVBY2NvdW50IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBDcnlwdG8KaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KaW1wb3J0IEVWTSBmcm9tIDB4RVZNCmltcG9ydCBVU0RDRmxvdyBmcm9tIDB4VVNEQ0Zsb3cKaW1wb3J0IHN0Rmxvd1Rva2VuIGZyb20gMHhzdEZsb3dUb2tlbgoKdHJhbnNhY3Rpb24ocHVibGljS2V5czogW0NyeXB0by5LZXlMaXN0RW50cnldLCBjb250cmFjdHM6IHtTdHJpbmc6IFN0cmluZ30pIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICBsZXQgbmV3QWNjb3VudCA9IEFjY291bnQocGF5ZXI6IHNpZ25lcikKCiAgICAgICAgZm9yIGtleSBpbiBwdWJsaWNLZXlzIHsKICAgICAgICAgICAgbmV3QWNjb3VudC5rZXlzLmFkZChwdWJsaWNLZXk6IGtleS5wdWJsaWNLZXksIGhhc2hBbGdvcml0aG06IGtleS5oYXNoQWxnb3JpdGhtLCB3ZWlnaHQ6IGtleS53ZWlnaHQpCiAgICAgICAgfQoKICAgICAgICBmb3IgY29udHJhY3QgaW4gY29udHJhY3RzLmtleXMgewogICAgICAgICAgICBuZXdBY2NvdW50LmNvbnRyYWN0cy5hZGQobmFtZTogY29udHJhY3QsIGNvZGU6IGNvbnRyYWN0c1tjb250cmFjdF0hLmRlY29kZUhleCgpKQogICAgICAgIH0KCiAgICAgICAgbGV0IGNvYSA8LSBFVk0uY3JlYXRlQ2FkZW5jZU93bmVkQWNjb3VudCgpCiAgICAgICAgbGV0IGNvYVBhdGggPSAvc3RvcmFnZS9ldm0KICAgICAgICBuZXdBY2NvdW50LnN0b3JhZ2Uuc2F2ZSg8LWNvYSwgdG86IGNvYVBhdGgpCiAgICAgICAgbGV0IGNvYUNhcGFiaWxpdHkgPSBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZFVk0uQ2FkZW5jZU93bmVkQWNjb3VudD4oY29hUGF0aCkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKGNvYUNhcGFiaWxpdHksIGF0OiAvcHVibGljL2V2bSkKICAgICAgICBsZXQgdXNkY1ZhdWx0IDwtIFVTRENGbG93LmNyZWF0ZUVtcHR5VmF1bHQodmF1bHRUeXBlOiBUeXBlPEBVU0RDRmxvdy5WYXVsdD4oKSkKICAgICAgICBuZXdBY2NvdW50LnN0b3JhZ2Uuc2F2ZSg8LXVzZGNWYXVsdCwgdG86IFVTRENGbG93LlZhdWx0U3RvcmFnZVBhdGgpCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KFVTRENGbG93LlZhdWx0U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogVVNEQ0Zsb3cuVmF1bHRQdWJsaWNQYXRoCiAgICAgICAgKQogICAgICAgIG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnB1Ymxpc2goCiAgICAgICAgICAgIG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntGdW5naWJsZVRva2VuLlJlY2VpdmVyLCBGdW5naWJsZVRva2VuLkJhbGFuY2V9PihVU0RDRmxvdy5WYXVsdFN0b3JhZ2VQYXRoKSwKICAgICAgICAgICAgYXQ6IFVTRENGbG93LlJlY2VpdmVyUHVibGljUGF0aAogICAgICAgICkKCiAgICAgICAgLy8gc3RGbG93CiAgICAgICAgbGV0IHN0Rmxvd1ZhdWx0IDwtIHN0Rmxvd1Rva2VuLmNyZWF0ZUVtcHR5VmF1bHQodmF1bHRUeXBlOiBUeXBlPEBzdEZsb3dUb2tlbi5WYXVsdD4oKSkKICAgICAgICBuZXdBY2NvdW50LnN0b3JhZ2Uuc2F2ZSg8LXN0Rmxvd1ZhdWx0LCB0bzogc3RGbG93VG9rZW4udG9rZW5WYXVsdFBhdGgpCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHN0Rmxvd1Rva2VuLnRva2VuVmF1bHRQYXRoKSwKICAgICAgICAgICAgYXQ6IHN0Rmxvd1Rva2VuLnRva2VuQmFsYW5jZVBhdGgKICAgICAgICApCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KHN0Rmxvd1Rva2VuLnRva2VuVmF1bHRQYXRoKSwKICAgICAgICAgICAgYXQ6IHN0Rmxvd1Rva2VuLnRva2VuUmVjZWl2ZXJQYXRoCiAgICAgICAgKQogICAgfQoKfQ==", - "mintNFT": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBtaW50TkZUIC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIC8vLyBUaGlzIHNjcmlwdCB1c2VzIHRoZSBORlRNaW50ZXIgcmVzb3VyY2UgdG8gbWludCBhIG5ldyBORlQKLy8vIEl0IG11c3QgYmUgcnVuIHdpdGggdGhlIGFjY291bnQgdGhhdCBoYXMgdGhlIG1pbnRlciByZXNvdXJjZQovLy8gc3RvcmVkIGluIC9zdG9yYWdlL05GVE1pbnRlcgoKaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweDYzMWU4OGFlN2YxZDdjMjAKaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweDYzMWU4OGFlN2YxZDdjMjAKCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHg5YTA3NjZkOTNiNjYwOGI3CmltcG9ydCBFeGFtcGxlTkZUIGZyb20gMHgzOTBiNDcwNWRhNjMwNWMzCgp0cmFuc2FjdGlvbigKICAgIHJlY2lwaWVudDogQWRkcmVzcywKICAgIG5hbWU6IFN0cmluZywKICAgIGRlc2NyaXB0aW9uOiBTdHJpbmcsCiAgICB0aHVtYm5haWw6IFN0cmluZywKICAgIGN1dHM6IFtVRml4NjRdLAogICAgcm95YWx0eURlc2NyaXB0aW9uczogW1N0cmluZ10sCiAgICByb3lhbHR5QmVuZWZpY2lhcmllczogW0FkZHJlc3NdCikgewoKICAgIC8vLyBsb2NhbCB2YXJpYWJsZSBmb3Igc3RvcmluZyB0aGUgbWludGVyIHJlZmVyZW5jZQogICAgbGV0IG1pbnRlcjogJkV4YW1wbGVORlQuTkZUTWludGVyCgogICAgLy8vIFJlZmVyZW5jZSB0byB0aGUgcmVjZWl2ZXIncyBjb2xsZWN0aW9uCiAgICBsZXQgcmVjaXBpZW50Q29sbGVjdGlvblJlZjogJntOb25GdW5naWJsZVRva2VuLlJlY2VpdmVyfQoKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEJvcnJvd1ZhbHVlKSAmQWNjb3VudCkgewoKICAgICAgICBsZXQgY29sbGVjdGlvbkRhdGEgPSBFeGFtcGxlTkZULnJlc29sdmVDb250cmFjdFZpZXcoCiAgICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IG5pbCwKICAgICAgICAgICAgICAgIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkKICAgICAgICAgICAgKSBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT8KICAgICAgICAgICAgPz8gcGFuaWMoIlZpZXdSZXNvbHZlciBkb2VzIG5vdCByZXNvbHZlIE5GVENvbGxlY3Rpb25EYXRhIHZpZXciKQogICAgICAgIAogICAgICAgIC8vIGJvcnJvdyBhIHJlZmVyZW5jZSB0byB0aGUgTkZUTWludGVyIHJlc291cmNlIGluIHN0b3JhZ2UKICAgICAgICBzZWxmLm1pbnRlciA9IHNpZ25lci5zdG9yYWdlLmJvcnJvdzwmRXhhbXBsZU5GVC5ORlRNaW50ZXI+KGZyb206IEV4YW1wbGVORlQuTWludGVyU3RvcmFnZVBhdGgpCiAgICAgICAgICAgID8/IHBhbmljKCJBY2NvdW50IGRvZXMgbm90IHN0b3JlIGFuIG9iamVjdCBhdCB0aGUgc3BlY2lmaWVkIHBhdGgiKQoKICAgICAgICAvLyBCb3Jyb3cgdGhlIHJlY2lwaWVudCdzIHB1YmxpYyBORlQgY29sbGVjdGlvbiByZWZlcmVuY2UKICAgICAgICBzZWxmLnJlY2lwaWVudENvbGxlY3Rpb25SZWYgPSBnZXRBY2NvdW50KHJlY2lwaWVudCkuY2FwYWJpbGl0aWVzLmJvcnJvdzwme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigKICAgICAgICAgICAgICAgIGNvbGxlY3Rpb25EYXRhLnB1YmxpY1BhdGgKICAgICAgICAgICAgKSA/PyBwYW5pYygiQ291bGQgbm90IGdldCByZWNlaXZlciByZWZlcmVuY2UgdG8gdGhlIE5GVCBDb2xsZWN0aW9uIikKICAgIH0KCiAgICBwcmUgewogICAgICAgIGN1dHMubGVuZ3RoID09IHJveWFsdHlEZXNjcmlwdGlvbnMubGVuZ3RoICYmIGN1dHMubGVuZ3RoID09IHJveWFsdHlCZW5lZmljaWFyaWVzLmxlbmd0aDogIkFycmF5IGxlbmd0aCBzaG91bGQgYmUgZXF1YWwgZm9yIHJveWFsdHkgcmVsYXRlZCBkZXRhaWxzIgogICAgfQoKICAgIGV4ZWN1dGUgewoKICAgICAgICAvLyBDcmVhdGUgdGhlIHJveWFsdHkgZGV0YWlscwogICAgICAgIHZhciBjb3VudCA9IDAKICAgICAgICB2YXIgcm95YWx0aWVzOiBbTWV0YWRhdGFWaWV3cy5Sb3lhbHR5XSA9IFtdCiAgICAgICAgbG9nKHJveWFsdHlCZW5lZmljaWFyaWVzLmxlbmd0aCkKICAgICAgICB3aGlsZSByb3lhbHR5QmVuZWZpY2lhcmllcy5sZW5ndGggPiBjb3VudCB7CiAgICAgICAgICAgIGxldCBiZW5lZmljaWFyeSA9IHJveWFsdHlCZW5lZmljaWFyaWVzW2NvdW50XQogICAgICAgICAgICBsZXQgYmVuZWZpY2lhcnlDYXBhYmlsaXR5ID0gZ2V0QWNjb3VudChiZW5lZmljaWFyeSkuY2FwYWJpbGl0aWVzLmdldDwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9PigKICAgICAgICAgICAgICAgICAgICBNZXRhZGF0YVZpZXdzLmdldFJveWFsdHlSZWNlaXZlclB1YmxpY1BhdGgoKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICBpZiAhYmVuZWZpY2lhcnlDYXBhYmlsaXR5LmNoZWNrKCkgewogICAgICAgICAgICAgICAgcGFuaWMoIkJlbmVmaWNpYXJ5IGRvZXMgbm90IGhhdmUgUmVjZWl2ZXIgY29uZmlndXJlZCBhdCBSb3lhbHR5UmVjZWl2ZXJQdWJsaWNQYXRoIikKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcm95YWx0aWVzLmFwcGVuZCgKICAgICAgICAgICAgICAgIE1ldGFkYXRhVmlld3MuUm95YWx0eSgKICAgICAgICAgICAgICAgICAgICByZWNlaXZlcjogYmVuZWZpY2lhcnlDYXBhYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIGN1dDogY3V0c1tjb3VudF0sCiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb246IHJveWFsdHlEZXNjcmlwdGlvbnNbY291bnRdCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICAgICAgY291bnQgPSBjb3VudCArIDEKICAgICAgICB9CgoKICAgICAgICAvLyBNaW50IHRoZSBORlQgYW5kIGRlcG9zaXQgaXQgdG8gdGhlIHJlY2lwaWVudCdzIGNvbGxlY3Rpb24KICAgICAgICBsZXQgbWludGVkTkZUIDwtIHNlbGYubWludGVyLm1pbnRORlQoCiAgICAgICAgICAgIG5hbWU6IG5hbWUsCiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiwKICAgICAgICAgICAgdGh1bWJuYWlsOiB0aHVtYm5haWwsCiAgICAgICAgICAgIHJveWFsdGllczogcm95YWx0aWVzCiAgICAgICAgKQogICAgICAgIHNlbGYucmVjaXBpZW50Q29sbGVjdGlvblJlZi5kZXBvc2l0KHRva2VuOiA8LW1pbnRlZE5GVCkKICAgIH0KCn0=", - "onboardEvmToFlow": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBvbmJvYXJkRXZtVG9GbG93IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIGltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhmMjMzZGNlZTg4ZmUwYWJlCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKCmltcG9ydCBTY29wZWRGVFByb3ZpZGVycyBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQoKaW1wb3J0IEVWTSBmcm9tIDB4ZTQ2N2I5ZGQxMWZhMDBkZgoKaW1wb3J0IEZsb3dFVk1CcmlkZ2UgZnJvbSAweDFlNGFhMGI4N2QxMGIxNDEKaW1wb3J0IEZsb3dFVk1CcmlkZ2VDb25maWcgZnJvbSAweDFlNGFhMGI4N2QxMGIxNDEKCi8vLyBUaGlzIHRyYW5zYWN0aW9uIG9uYm9hcmRzIEVSQzIwL0VSQzcyMSBhc3NldHMgdG8gdGhlIGJyaWRnZSwgY29uZmlndXJpbmcgdGhlIGJyaWRnZSB0byBtb3ZlIGFzc2V0cyBiZXR3ZWVuCi8vLyBlbnZpcm9ubWVudHMKLy8vIE5PVEU6IFRoaXMgbXVzdCBiZSBkb25lIGJlZm9yZSBicmlkZ2luZyBhIENhZGVuY2UtbmF0aXZlIE5GVCB0byBFVk0KLy8vCi8vLyBAcGFyYW0gYWRkcmVzc2VzQXNIZXg6IEFycmF5IG9mIEVWTSBjb250cmFjdCBhZGRyZXNzZXMgZGVmaW5pbmcgdGhlIAovLy8gICAgIGJyaWRnZWFibGUgYXNzZXQgdG8gYmUgb25ib2FyZGVkCi8vLwp0cmFuc2FjdGlvbihhZGRyZXNzZXNBc0hleDogW1N0cmluZ10pIHsKbGV0IHNjb3BlZFByb3ZpZGVyOiBAU2NvcGVkRlRQcm92aWRlcnMuU2NvcGVkRlRQcm92aWRlcgoKcHJlcGFyZShzaWduZXI6IGF1dGgoQ29weVZhbHVlLCBCb3Jyb3dWYWx1ZSwgSXNzdWVTdG9yYWdlQ2FwYWJpbGl0eUNvbnRyb2xsZXIsIFB1Ymxpc2hDYXBhYmlsaXR5LCBTYXZlVmFsdWUpICZBY2NvdW50KSB7CiAgICAvKiAtLS0gQ29uZmlndXJlIGEgU2NvcGVkRlRQcm92aWRlciAtLS0gKi8KICAgIC8vCiAgICAvLyBJc3N1ZSBhbmQgc3RvcmUgYnJpZGdlLWRlZGljYXRlZCBQcm92aWRlciBDYXBhYmlsaXR5IGluIHN0b3JhZ2UgaWYgbmVjZXNzYXJ5CiAgICBpZiBzaWduZXIuc3RvcmFnZS50eXBlKGF0OiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKSA9PSBuaWwgewogICAgICAgIGxldCBwcm92aWRlckNhcCA9IHNpZ25lci5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KAogICAgICAgICAgICAvc3RvcmFnZS9mbG93VG9rZW5WYXVsdAogICAgICAgICkKICAgICAgICBzaWduZXIuc3RvcmFnZS5zYXZlKHByb3ZpZGVyQ2FwLCB0bzogRmxvd0VWTUJyaWRnZUNvbmZpZy5wcm92aWRlckNhcGFiaWxpdHlTdG9yYWdlUGF0aCkKICAgIH0KICAgIC8vIENvcHkgdGhlIHN0b3JlZCBQcm92aWRlciBjYXBhYmlsaXR5IGFuZCBjcmVhdGUgYSBTY29wZWRGVFByb3ZpZGVyCiAgICBsZXQgcHJvdmlkZXJDYXBDb3B5ID0gc2lnbmVyLnN0b3JhZ2UuY29weTxDYXBhYmlsaXR5PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4+KAogICAgICAgICAgICBmcm9tOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoCiAgICAgICAgKSA/PyBwYW5pYygiSW52YWxpZCBQcm92aWRlciBDYXBhYmlsaXR5IGZvdW5kIGluIHN0b3JhZ2UuIikKICAgIC8vIFNldCBhIHdpdGhkcmF3YWwgbGltaXQgZm9yIHRoZSBwcm92aWRlcgogICAgbGV0IHByb3ZpZGVyTGltaXQgPSBGbG93RVZNQnJpZGdlQ29uZmlnLm9uYm9hcmRGZWUgKiBVRml4NjQoYWRkcmVzc2VzQXNIZXgubGVuZ3RoKQogICAgbGV0IHByb3ZpZGVyRmlsdGVyID0gU2NvcGVkRlRQcm92aWRlcnMuQWxsb3dhbmNlRmlsdGVyKHByb3ZpZGVyTGltaXQpCiAgICAvLyBDcmVhdGUgU2NvcGVkRlRQcm92aWRlciB0byBleHBpcmUganVzdCBhZnRlciB0aGlzIHRyYW5zYWN0aW9uCiAgICBzZWxmLnNjb3BlZFByb3ZpZGVyIDwtIFNjb3BlZEZUUHJvdmlkZXJzLmNyZWF0ZVNjb3BlZEZUUHJvdmlkZXIoCiAgICAgICAgICAgIHByb3ZpZGVyOiBwcm92aWRlckNhcENvcHksCiAgICAgICAgICAgIGZpbHRlcnM6IFsgcHJvdmlkZXJGaWx0ZXIgXSwKICAgICAgICAgICAgZXhwaXJhdGlvbjogZ2V0Q3VycmVudEJsb2NrKCkudGltZXN0YW1wICsgMS4wCiAgICAgICAgKQp9CmV4ZWN1dGUgewogICAgLy8gSXRlcmF0ZSBvdmVyIHByb3ZpZGVkIGFycmF5CiAgICBmb3IgYWRkcmVzc0hleCBpbiBhZGRyZXNzZXNBc0hleCB7CiAgICAgICAgLy8gQ29udmVydCBoZXggc3RyaW5nIHRvIEVWTUFkZHJlc3MKICAgICAgICBsZXQgYWRkcmVzcyA9IEVWTS5hZGRyZXNzRnJvbVN0cmluZyhhZGRyZXNzSGV4KQogICAgICAgIC8vIENvbnRpbnVlIGlmIHRoZSBoZXggaXMgbm90IGEgdmFsaWQgRVZNIGFkZHJlc3Mgb3IgaWYgdGhlIGFkZHJlc3MgaXMgYWxyZWFkeSBvbmJvYXJkZWQKICAgICAgICBpZiBhZGRyZXNzID09IG5pbCB8fCBGbG93RVZNQnJpZGdlLmV2bUFkZHJlc3NSZXF1aXJlc09uYm9hcmRpbmcoYWRkcmVzcyEpICE9IHRydWUgewogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KICAgICAgICBGbG93RVZNQnJpZGdlLm9uYm9hcmRCeUVWTUFkZHJlc3MoCiAgICAgICAgICAgIGFkZHJlc3MhLAogICAgICAgICAgICBmZWVQcm92aWRlcjogJnNlbGYuc2NvcGVkUHJvdmlkZXIgYXMgYXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9CiAgICAgICAgKQogICAgfQogICAgZGVzdHJveSBzZWxmLnNjb3BlZFByb3ZpZGVyCn0KfQ==", - "setupFTProvider": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZXR1cEZUUHJvdmlkZXIgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweEZ1bmdpYmxlVG9rZW4KCmltcG9ydCBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cyBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgPFRva2VuPiBmcm9tIDxUb2tlbkFkZHJlc3M+Cgp0cmFuc2FjdGlvbiB7CiAgICBwcmVwYXJlKGFjY3Q6IGF1dGgoQ2FwYWJpbGl0aWVzKSAmQWNjb3VudCkgewogICAgICAgIGxldCB2YXVsdERhdGEgPSBFeGFtcGxlVG9rZW4ucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8RnVuZ2libGVUb2tlbk1ldGFkYXRhVmlld3MuRlRWYXVsdERhdGE+KCkpIGFzISBGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT8KICAgICAgICAgICAgPz8gcGFuaWMoIkNvdWxkIG5vdCBnZXQgdGhlIHZhdWx0IGRhdGEgdmlldyBmb3IgRXhhbXBsZVRva2VuIikKICAgIAogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pih2YXVsdERhdGEuc3RvcmFnZVBhdGgpCiAgICB9Cn0KIA==", - "setupNFTFull": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICBzZXR1cE5GVEZ1bGwgLSB2Mi4yOAogICAgLy8gPHBsYXRmb3JtX2luZm8+CiAgICAgaW1wb3J0IE5vbkZ1bmdpYmxlVG9rZW4gZnJvbSAweE5vbkZ1bmdpYmxlVG9rZW4KaW1wb3J0IE1ldGFkYXRhVmlld3MgZnJvbSAweE1ldGFkYXRhVmlld3MKCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChTdG9yYWdlLCBDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGQgPSBFeGFtcGxlTkZULnJlc29sdmVDb250cmFjdFZpZXcocmVzb3VyY2VUeXBlOiBuaWwsIHZpZXdUeXBlOiBUeXBlPE1ldGFkYXRhVmlld3MuTkZUQ29sbGVjdGlvbkRhdGE+KCkpISBhcyEgTWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YQoKICAgICAgICBpZiBhY2N0LnN0b3JhZ2UuYm9ycm93PCZFeGFtcGxlTkZULkNvbGxlY3Rpb24+KGZyb206IGQuc3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgICAgIGFjY3Quc3RvcmFnZS5zYXZlKDwtIEV4YW1wbGVORlQuY3JlYXRlRW1wdHlDb2xsZWN0aW9uKCksIHRvOiBFeGFtcGxlTkZULkNvbGxlY3Rpb25TdG9yYWdlUGF0aCkKICAgICAgICB9CgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnVucHVibGlzaChkLnB1YmxpY1BhdGgpCiAgICAgICAgbGV0IGNhcCA9IGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JntFeGFtcGxlTkZULkV4YW1wbGVORlRDb2xsZWN0aW9uUHVibGljLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWN9PihkLnN0b3JhZ2VQYXRoKQogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY2FwLCBhdDogZC5wdWJsaWNQYXRoKQoKICAgICAgICBhY2N0LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoTm9uRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntFeGFtcGxlTkZULkV4YW1wbGVORlRDb2xsZWN0aW9uUHVibGljLCBOb25GdW5naWJsZVRva2VuLkNvbGxlY3Rpb25QdWJsaWMsIE5vbkZ1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9PihkLnN0b3JhZ2VQYXRoKQogICAgfQp9Cg==", - "test": "CiAgICAvLyBGbG93IFdhbGxldCAtIHRlc3RuZXQgU2NyaXB0ICB0ZXN0IC0gdjIuMjgKICAgIC8vIDxwbGF0Zm9ybV9pbmZvPgogICAgIA==" + "addKeys": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgYWRkS2V5cyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwoKdHJhbnNhY3Rpb24ocHVibGljS2V5OiBTdHJpbmcpIHsKICAgIHByZXBhcmUoc2lnbmVyOiBhdXRoKEtleXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IGtleSA9IFB1YmxpY0tleSgKICAgICAgICAgICAgcHVibGljS2V5OiBwdWJsaWNLZXkuZGVjb2RlSGV4KCksCiAgICAgICAgICAgIHNpZ25hdHVyZUFsZ29yaXRobTogU2lnbmF0dXJlQWxnb3JpdGhtKHJhd1ZhbHVlOiAxKSEKICAgICAgICApCiAgICAgICAgdmFyIGlkeCA9IDAKICAgICAgICB3aGlsZSBpZHggPCA5OSB7CiAgICAgICAgICAgIHNpZ25lci5rZXlzLmFkZCgKICAgICAgICAgICAgICAgIHB1YmxpY0tleToga2V5LAogICAgICAgICAgICAgICAgaGFzaEFsZ29yaXRobTogSGFzaEFsZ29yaXRobShyYXdWYWx1ZTogMSkhLAogICAgICAgICAgICAgICAgd2VpZ2h0OiAxMDAwLjAKICAgICAgICAgICAgKQogICAgICAgICAgICBpZHggPSBpZHggKyAxCiAgICAgICAgfQogICAgICAgCiAgICB9Cn0=", + "createAccount": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgY3JlYXRlQWNjb3VudCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IENyeXB0bwppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgppbXBvcnQgRVZNIGZyb20gMHhFVk0KaW1wb3J0IFVTRENGbG93IGZyb20gMHhVU0RDRmxvdwppbXBvcnQgc3RGbG93VG9rZW4gZnJvbSAweHN0Rmxvd1Rva2VuCgp0cmFuc2FjdGlvbihwdWJsaWNLZXlzOiBbQ3J5cHRvLktleUxpc3RFbnRyeV0sIGNvbnRyYWN0czoge1N0cmluZzogU3RyaW5nfSkgewogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIGxldCBuZXdBY2NvdW50ID0gQWNjb3VudChwYXllcjogc2lnbmVyKQoKICAgICAgICBmb3Iga2V5IGluIHB1YmxpY0tleXMgewogICAgICAgICAgICBuZXdBY2NvdW50LmtleXMuYWRkKHB1YmxpY0tleToga2V5LnB1YmxpY0tleSwgaGFzaEFsZ29yaXRobToga2V5Lmhhc2hBbGdvcml0aG0sIHdlaWdodDoga2V5LndlaWdodCkKICAgICAgICB9CgogICAgICAgIGZvciBjb250cmFjdCBpbiBjb250cmFjdHMua2V5cyB7CiAgICAgICAgICAgIG5ld0FjY291bnQuY29udHJhY3RzLmFkZChuYW1lOiBjb250cmFjdCwgY29kZTogY29udHJhY3RzW2NvbnRyYWN0XSEuZGVjb2RlSGV4KCkpCiAgICAgICAgfQoKICAgICAgICBsZXQgY29hIDwtIEVWTS5jcmVhdGVDYWRlbmNlT3duZWRBY2NvdW50KCkKICAgICAgICBsZXQgY29hUGF0aCA9IC9zdG9yYWdlL2V2bQogICAgICAgIG5ld0FjY291bnQuc3RvcmFnZS5zYXZlKDwtY29hLCB0bzogY29hUGF0aCkKICAgICAgICBsZXQgY29hQ2FwYWJpbGl0eSA9IG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8JkVWTS5DYWRlbmNlT3duZWRBY2NvdW50Pihjb2FQYXRoKQogICAgICAgIG5ld0FjY291bnQuY2FwYWJpbGl0aWVzLnB1Ymxpc2goY29hQ2FwYWJpbGl0eSwgYXQ6IC9wdWJsaWMvZXZtKQogICAgICAgIGxldCB1c2RjVmF1bHQgPC0gVVNEQ0Zsb3cuY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QFVTRENGbG93LlZhdWx0PigpKQogICAgICAgIG5ld0FjY291bnQuc3RvcmFnZS5zYXZlKDwtdXNkY1ZhdWx0LCB0bzogVVNEQ0Zsb3cuVmF1bHRTdG9yYWdlUGF0aCkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oVVNEQ0Zsb3cuVmF1bHRTdG9yYWdlUGF0aCksCiAgICAgICAgICAgIGF0OiBVU0RDRmxvdy5WYXVsdFB1YmxpY1BhdGgKICAgICAgICApCiAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMucHVibGlzaCgKICAgICAgICAgICAgbmV3QWNjb3VudC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0Z1bmdpYmxlVG9rZW4uUmVjZWl2ZXIsIEZ1bmdpYmxlVG9rZW4uQmFsYW5jZX0+KFVTRENGbG93LlZhdWx0U3RvcmFnZVBhdGgpLAogICAgICAgICAgICBhdDogVVNEQ0Zsb3cuUmVjZWl2ZXJQdWJsaWNQYXRoCiAgICAgICAgKQoKICAgICAgICAvLyBzdEZsb3cKICAgICAgICBsZXQgc3RGbG93VmF1bHQgPC0gc3RGbG93VG9rZW4uY3JlYXRlRW1wdHlWYXVsdCh2YXVsdFR5cGU6IFR5cGU8QHN0Rmxvd1Rva2VuLlZhdWx0PigpKQogICAgICAgIG5ld0FjY291bnQuc3RvcmFnZS5zYXZlKDwtc3RGbG93VmF1bHQsIHRvOiBzdEZsb3dUb2tlbi50b2tlblZhdWx0UGF0aCkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oc3RGbG93VG9rZW4udG9rZW5WYXVsdFBhdGgpLAogICAgICAgICAgICBhdDogc3RGbG93VG9rZW4udG9rZW5CYWxhbmNlUGF0aAogICAgICAgICkKICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5wdWJsaXNoKAogICAgICAgICAgICBuZXdBY2NvdW50LmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlciwgRnVuZ2libGVUb2tlbi5CYWxhbmNlfT4oc3RGbG93VG9rZW4udG9rZW5WYXVsdFBhdGgpLAogICAgICAgICAgICBhdDogc3RGbG93VG9rZW4udG9rZW5SZWNlaXZlclBhdGgKICAgICAgICApCiAgICB9Cgp9", + "mintNFT": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgbWludE5GVCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKLy8vIFRoaXMgc2NyaXB0IHVzZXMgdGhlIE5GVE1pbnRlciByZXNvdXJjZSB0byBtaW50IGEgbmV3IE5GVAovLy8gSXQgbXVzdCBiZSBydW4gd2l0aCB0aGUgYWNjb3VudCB0aGF0IGhhcyB0aGUgbWludGVyIHJlc291cmNlCi8vLyBzdG9yZWQgaW4gL3N0b3JhZ2UvTkZUTWludGVyCgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4NjMxZTg4YWU3ZjFkN2MyMAppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4NjMxZTg4YWU3ZjFkN2MyMAoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweDlhMDc2NmQ5M2I2NjA4YjcKaW1wb3J0IEV4YW1wbGVORlQgZnJvbSAweDM5MGI0NzA1ZGE2MzA1YzMKCnRyYW5zYWN0aW9uKAogICAgcmVjaXBpZW50OiBBZGRyZXNzLAogICAgbmFtZTogU3RyaW5nLAogICAgZGVzY3JpcHRpb246IFN0cmluZywKICAgIHRodW1ibmFpbDogU3RyaW5nLAogICAgY3V0czogW1VGaXg2NF0sCiAgICByb3lhbHR5RGVzY3JpcHRpb25zOiBbU3RyaW5nXSwKICAgIHJveWFsdHlCZW5lZmljaWFyaWVzOiBbQWRkcmVzc10KKSB7CgogICAgLy8vIGxvY2FsIHZhcmlhYmxlIGZvciBzdG9yaW5nIHRoZSBtaW50ZXIgcmVmZXJlbmNlCiAgICBsZXQgbWludGVyOiAmRXhhbXBsZU5GVC5ORlRNaW50ZXIKCiAgICAvLy8gUmVmZXJlbmNlIHRvIHRoZSByZWNlaXZlcidzIGNvbGxlY3Rpb24KICAgIGxldCByZWNpcGllbnRDb2xsZWN0aW9uUmVmOiAme05vbkZ1bmdpYmxlVG9rZW4uUmVjZWl2ZXJ9CgogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CgogICAgICAgIGxldCBjb2xsZWN0aW9uRGF0YSA9IEV4YW1wbGVORlQucmVzb2x2ZUNvbnRyYWN0VmlldygKICAgICAgICAgICAgICAgIHJlc291cmNlVHlwZTogbmlsLAogICAgICAgICAgICAgICAgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKQogICAgICAgICAgICApIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhPwogICAgICAgICAgICA/PyBwYW5pYygiVmlld1Jlc29sdmVyIGRvZXMgbm90IHJlc29sdmUgTkZUQ29sbGVjdGlvbkRhdGEgdmlldyIpCiAgICAgICAgCiAgICAgICAgLy8gYm9ycm93IGEgcmVmZXJlbmNlIHRvIHRoZSBORlRNaW50ZXIgcmVzb3VyY2UgaW4gc3RvcmFnZQogICAgICAgIHNlbGYubWludGVyID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PCZFeGFtcGxlTkZULk5GVE1pbnRlcj4oZnJvbTogRXhhbXBsZU5GVC5NaW50ZXJTdG9yYWdlUGF0aCkKICAgICAgICAgICAgPz8gcGFuaWMoIkFjY291bnQgZG9lcyBub3Qgc3RvcmUgYW4gb2JqZWN0IGF0IHRoZSBzcGVjaWZpZWQgcGF0aCIpCgogICAgICAgIC8vIEJvcnJvdyB0aGUgcmVjaXBpZW50J3MgcHVibGljIE5GVCBjb2xsZWN0aW9uIHJlZmVyZW5jZQogICAgICAgIHNlbGYucmVjaXBpZW50Q29sbGVjdGlvblJlZiA9IGdldEFjY291bnQocmVjaXBpZW50KS5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7Tm9uRnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KAogICAgICAgICAgICAgICAgY29sbGVjdGlvbkRhdGEucHVibGljUGF0aAogICAgICAgICAgICApID8/IHBhbmljKCJDb3VsZCBub3QgZ2V0IHJlY2VpdmVyIHJlZmVyZW5jZSB0byB0aGUgTkZUIENvbGxlY3Rpb24iKQogICAgfQoKICAgIHByZSB7CiAgICAgICAgY3V0cy5sZW5ndGggPT0gcm95YWx0eURlc2NyaXB0aW9ucy5sZW5ndGggJiYgY3V0cy5sZW5ndGggPT0gcm95YWx0eUJlbmVmaWNpYXJpZXMubGVuZ3RoOiAiQXJyYXkgbGVuZ3RoIHNob3VsZCBiZSBlcXVhbCBmb3Igcm95YWx0eSByZWxhdGVkIGRldGFpbHMiCiAgICB9CgogICAgZXhlY3V0ZSB7CgogICAgICAgIC8vIENyZWF0ZSB0aGUgcm95YWx0eSBkZXRhaWxzCiAgICAgICAgdmFyIGNvdW50ID0gMAogICAgICAgIHZhciByb3lhbHRpZXM6IFtNZXRhZGF0YVZpZXdzLlJveWFsdHldID0gW10KICAgICAgICBsb2cocm95YWx0eUJlbmVmaWNpYXJpZXMubGVuZ3RoKQogICAgICAgIHdoaWxlIHJveWFsdHlCZW5lZmljaWFyaWVzLmxlbmd0aCA+IGNvdW50IHsKICAgICAgICAgICAgbGV0IGJlbmVmaWNpYXJ5ID0gcm95YWx0eUJlbmVmaWNpYXJpZXNbY291bnRdCiAgICAgICAgICAgIGxldCBiZW5lZmljaWFyeUNhcGFiaWxpdHkgPSBnZXRBY2NvdW50KGJlbmVmaWNpYXJ5KS5jYXBhYmlsaXRpZXMuZ2V0PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KAogICAgICAgICAgICAgICAgICAgIE1ldGFkYXRhVmlld3MuZ2V0Um95YWx0eVJlY2VpdmVyUHVibGljUGF0aCgpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIGlmICFiZW5lZmljaWFyeUNhcGFiaWxpdHkuY2hlY2soKSB7CiAgICAgICAgICAgICAgICBwYW5pYygiQmVuZWZpY2lhcnkgZG9lcyBub3QgaGF2ZSBSZWNlaXZlciBjb25maWd1cmVkIGF0IFJveWFsdHlSZWNlaXZlclB1YmxpY1BhdGgiKQogICAgICAgICAgICB9CgogICAgICAgICAgICByb3lhbHRpZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgTWV0YWRhdGFWaWV3cy5Sb3lhbHR5KAogICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyOiBiZW5lZmljaWFyeUNhcGFiaWxpdHksCiAgICAgICAgICAgICAgICAgICAgY3V0OiBjdXRzW2NvdW50XSwKICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogcm95YWx0eURlc2NyaXB0aW9uc1tjb3VudF0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgICAgICBjb3VudCA9IGNvdW50ICsgMQogICAgICAgIH0KCgogICAgICAgIC8vIE1pbnQgdGhlIE5GVCBhbmQgZGVwb3NpdCBpdCB0byB0aGUgcmVjaXBpZW50J3MgY29sbGVjdGlvbgogICAgICAgIGxldCBtaW50ZWRORlQgPC0gc2VsZi5taW50ZXIubWludE5GVCgKICAgICAgICAgICAgbmFtZTogbmFtZSwKICAgICAgICAgICAgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uLAogICAgICAgICAgICB0aHVtYm5haWw6IHRodW1ibmFpbCwKICAgICAgICAgICAgcm95YWx0aWVzOiByb3lhbHRpZXMKICAgICAgICApCiAgICAgICAgc2VsZi5yZWNpcGllbnRDb2xsZWN0aW9uUmVmLmRlcG9zaXQodG9rZW46IDwtbWludGVkTkZUKQogICAgfQoKfQ==", + "onboardEvmToFlow": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgb25ib2FyZEV2bVRvRmxvdyAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW4gZnJvbSAweGYyMzNkY2VlODhmZTBhYmUKaW1wb3J0IEZsb3dUb2tlbiBmcm9tIDB4MTY1NDY1MzM5OTA0MGE2MQoKaW1wb3J0IFNjb3BlZEZUUHJvdmlkZXJzIGZyb20gMHgxZTRhYTBiODdkMTBiMTQxCgppbXBvcnQgRVZNIGZyb20gMHhlNDY3YjlkZDExZmEwMGRmCgppbXBvcnQgRmxvd0VWTUJyaWRnZSBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQppbXBvcnQgRmxvd0VWTUJyaWRnZUNvbmZpZyBmcm9tIDB4MWU0YWEwYjg3ZDEwYjE0MQoKLy8vIFRoaXMgdHJhbnNhY3Rpb24gb25ib2FyZHMgRVJDMjAvRVJDNzIxIGFzc2V0cyB0byB0aGUgYnJpZGdlLCBjb25maWd1cmluZyB0aGUgYnJpZGdlIHRvIG1vdmUgYXNzZXRzIGJldHdlZW4KLy8vIGVudmlyb25tZW50cwovLy8gTk9URTogVGhpcyBtdXN0IGJlIGRvbmUgYmVmb3JlIGJyaWRnaW5nIGEgQ2FkZW5jZS1uYXRpdmUgTkZUIHRvIEVWTQovLy8KLy8vIEBwYXJhbSBhZGRyZXNzZXNBc0hleDogQXJyYXkgb2YgRVZNIGNvbnRyYWN0IGFkZHJlc3NlcyBkZWZpbmluZyB0aGUgCi8vLyAgICAgYnJpZGdlYWJsZSBhc3NldCB0byBiZSBvbmJvYXJkZWQKLy8vCnRyYW5zYWN0aW9uKGFkZHJlc3Nlc0FzSGV4OiBbU3RyaW5nXSkgewpsZXQgc2NvcGVkUHJvdmlkZXI6IEBTY29wZWRGVFByb3ZpZGVycy5TY29wZWRGVFByb3ZpZGVyCgpwcmVwYXJlKHNpZ25lcjogYXV0aChDb3B5VmFsdWUsIEJvcnJvd1ZhbHVlLCBJc3N1ZVN0b3JhZ2VDYXBhYmlsaXR5Q29udHJvbGxlciwgUHVibGlzaENhcGFiaWxpdHksIFNhdmVWYWx1ZSkgJkFjY291bnQpIHsKICAgIC8qIC0tLSBDb25maWd1cmUgYSBTY29wZWRGVFByb3ZpZGVyIC0tLSAqLwogICAgLy8KICAgIC8vIElzc3VlIGFuZCBzdG9yZSBicmlkZ2UtZGVkaWNhdGVkIFByb3ZpZGVyIENhcGFiaWxpdHkgaW4gc3RvcmFnZSBpZiBuZWNlc3NhcnkKICAgIGlmIHNpZ25lci5zdG9yYWdlLnR5cGUoYXQ6IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgpID09IG5pbCB7CiAgICAgICAgbGV0IHByb3ZpZGVyQ2FwID0gc2lnbmVyLmNhcGFiaWxpdGllcy5zdG9yYWdlLmlzc3VlPGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJntGdW5naWJsZVRva2VuLlByb3ZpZGVyfT4oCiAgICAgICAgICAgIC9zdG9yYWdlL2Zsb3dUb2tlblZhdWx0CiAgICAgICAgKQogICAgICAgIHNpZ25lci5zdG9yYWdlLnNhdmUocHJvdmlkZXJDYXAsIHRvOiBGbG93RVZNQnJpZGdlQ29uZmlnLnByb3ZpZGVyQ2FwYWJpbGl0eVN0b3JhZ2VQYXRoKQogICAgfQogICAgLy8gQ29weSB0aGUgc3RvcmVkIFByb3ZpZGVyIGNhcGFiaWxpdHkgYW5kIGNyZWF0ZSBhIFNjb3BlZEZUUHJvdmlkZXIKICAgIGxldCBwcm92aWRlckNhcENvcHkgPSBzaWduZXIuc3RvcmFnZS5jb3B5PENhcGFiaWxpdHk8YXV0aChGdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0Z1bmdpYmxlVG9rZW4uUHJvdmlkZXJ9Pj4oCiAgICAgICAgICAgIGZyb206IEZsb3dFVk1CcmlkZ2VDb25maWcucHJvdmlkZXJDYXBhYmlsaXR5U3RvcmFnZVBhdGgKICAgICAgICApID8/IHBhbmljKCJJbnZhbGlkIFByb3ZpZGVyIENhcGFiaWxpdHkgZm91bmQgaW4gc3RvcmFnZS4iKQogICAgLy8gU2V0IGEgd2l0aGRyYXdhbCBsaW1pdCBmb3IgdGhlIHByb3ZpZGVyCiAgICBsZXQgcHJvdmlkZXJMaW1pdCA9IEZsb3dFVk1CcmlkZ2VDb25maWcub25ib2FyZEZlZSAqIFVGaXg2NChhZGRyZXNzZXNBc0hleC5sZW5ndGgpCiAgICBsZXQgcHJvdmlkZXJGaWx0ZXIgPSBTY29wZWRGVFByb3ZpZGVycy5BbGxvd2FuY2VGaWx0ZXIocHJvdmlkZXJMaW1pdCkKICAgIC8vIENyZWF0ZSBTY29wZWRGVFByb3ZpZGVyIHRvIGV4cGlyZSBqdXN0IGFmdGVyIHRoaXMgdHJhbnNhY3Rpb24KICAgIHNlbGYuc2NvcGVkUHJvdmlkZXIgPC0gU2NvcGVkRlRQcm92aWRlcnMuY3JlYXRlU2NvcGVkRlRQcm92aWRlcigKICAgICAgICAgICAgcHJvdmlkZXI6IHByb3ZpZGVyQ2FwQ29weSwKICAgICAgICAgICAgZmlsdGVyczogWyBwcm92aWRlckZpbHRlciBdLAogICAgICAgICAgICBleHBpcmF0aW9uOiBnZXRDdXJyZW50QmxvY2soKS50aW1lc3RhbXAgKyAxLjAKICAgICAgICApCn0KZXhlY3V0ZSB7CiAgICAvLyBJdGVyYXRlIG92ZXIgcHJvdmlkZWQgYXJyYXkKICAgIGZvciBhZGRyZXNzSGV4IGluIGFkZHJlc3Nlc0FzSGV4IHsKICAgICAgICAvLyBDb252ZXJ0IGhleCBzdHJpbmcgdG8gRVZNQWRkcmVzcwogICAgICAgIGxldCBhZGRyZXNzID0gRVZNLmFkZHJlc3NGcm9tU3RyaW5nKGFkZHJlc3NIZXgpCiAgICAgICAgLy8gQ29udGludWUgaWYgdGhlIGhleCBpcyBub3QgYSB2YWxpZCBFVk0gYWRkcmVzcyBvciBpZiB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IG9uYm9hcmRlZAogICAgICAgIGlmIGFkZHJlc3MgPT0gbmlsIHx8IEZsb3dFVk1CcmlkZ2UuZXZtQWRkcmVzc1JlcXVpcmVzT25ib2FyZGluZyhhZGRyZXNzISkgIT0gdHJ1ZSB7CiAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgfQogICAgICAgIEZsb3dFVk1CcmlkZ2Uub25ib2FyZEJ5RVZNQWRkcmVzcygKICAgICAgICAgICAgYWRkcmVzcyEsCiAgICAgICAgICAgIGZlZVByb3ZpZGVyOiAmc2VsZi5zY29wZWRQcm92aWRlciBhcyBhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0KICAgICAgICApCiAgICB9CiAgICBkZXN0cm95IHNlbGYuc2NvcGVkUHJvdmlkZXIKfQp9", + "setupFTProvider": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2V0dXBGVFByb3ZpZGVyIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgRnVuZ2libGVUb2tlbiBmcm9tIDB4RnVuZ2libGVUb2tlbgoKaW1wb3J0IEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzIGZyb20gMHhGdW5naWJsZVRva2VuCmltcG9ydCA8VG9rZW4+IGZyb20gPFRva2VuQWRkcmVzcz4KCnRyYW5zYWN0aW9uIHsKICAgIHByZXBhcmUoYWNjdDogYXV0aChDYXBhYmlsaXRpZXMpICZBY2NvdW50KSB7CiAgICAgICAgbGV0IHZhdWx0RGF0YSA9IEV4YW1wbGVUb2tlbi5yZXNvbHZlQ29udHJhY3RWaWV3KHJlc291cmNlVHlwZTogbmlsLCB2aWV3VHlwZTogVHlwZTxGdW5naWJsZVRva2VuTWV0YWRhdGFWaWV3cy5GVFZhdWx0RGF0YT4oKSkgYXMhIEZ1bmdpYmxlVG9rZW5NZXRhZGF0YVZpZXdzLkZUVmF1bHREYXRhPwogICAgICAgICAgICA/PyBwYW5pYygiQ291bGQgbm90IGdldCB0aGUgdmF1bHQgZGF0YSB2aWV3IGZvciBFeGFtcGxlVG9rZW4iKQogICAgCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTxhdXRoKEZ1bmdpYmxlVG9rZW4uV2l0aGRyYXcpICZ7RnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KHZhdWx0RGF0YS5zdG9yYWdlUGF0aCkKICAgIH0KfQog", + "setupNFTFull": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgc2V0dXBORlRGdWxsIC0gdjIuMzkKLy8gPHBsYXRmb3JtX2luZm8+CgppbXBvcnQgTm9uRnVuZ2libGVUb2tlbiBmcm9tIDB4Tm9uRnVuZ2libGVUb2tlbgppbXBvcnQgTWV0YWRhdGFWaWV3cyBmcm9tIDB4TWV0YWRhdGFWaWV3cwoKaW1wb3J0IDxUb2tlbj4gZnJvbSA8VG9rZW5BZGRyZXNzPgoKdHJhbnNhY3Rpb24gewogICAgcHJlcGFyZShhY2N0OiBhdXRoKFN0b3JhZ2UsIENhcGFiaWxpdGllcykgJkFjY291bnQpIHsKICAgICAgICBsZXQgZCA9IEV4YW1wbGVORlQucmVzb2x2ZUNvbnRyYWN0VmlldyhyZXNvdXJjZVR5cGU6IG5pbCwgdmlld1R5cGU6IFR5cGU8TWV0YWRhdGFWaWV3cy5ORlRDb2xsZWN0aW9uRGF0YT4oKSkhIGFzISBNZXRhZGF0YVZpZXdzLk5GVENvbGxlY3Rpb25EYXRhCgogICAgICAgIGlmIGFjY3Quc3RvcmFnZS5ib3Jyb3c8JkV4YW1wbGVORlQuQ29sbGVjdGlvbj4oZnJvbTogZC5zdG9yYWdlUGF0aCkgPT0gbmlsIHsKICAgICAgICAgICAgYWNjdC5zdG9yYWdlLnNhdmUoPC0gRXhhbXBsZU5GVC5jcmVhdGVFbXB0eUNvbGxlY3Rpb24oKSwgdG86IEV4YW1wbGVORlQuQ29sbGVjdGlvblN0b3JhZ2VQYXRoKQogICAgICAgIH0KCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMudW5wdWJsaXNoKGQucHVibGljUGF0aCkKICAgICAgICBsZXQgY2FwID0gYWNjdC5jYXBhYmlsaXRpZXMuc3RvcmFnZS5pc3N1ZTwme0V4YW1wbGVORlQuRXhhbXBsZU5GVENvbGxlY3Rpb25QdWJsaWMsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpY30+KGQuc3RvcmFnZVBhdGgpCiAgICAgICAgYWNjdC5jYXBhYmlsaXRpZXMucHVibGlzaChjYXAsIGF0OiBkLnB1YmxpY1BhdGgpCgogICAgICAgIGFjY3QuY2FwYWJpbGl0aWVzLnN0b3JhZ2UuaXNzdWU8YXV0aChOb25GdW5naWJsZVRva2VuLldpdGhkcmF3KSAme0V4YW1wbGVORlQuRXhhbXBsZU5GVENvbGxlY3Rpb25QdWJsaWMsIE5vbkZ1bmdpYmxlVG9rZW4uQ29sbGVjdGlvblB1YmxpYywgTm9uRnVuZ2libGVUb2tlbi5Qcm92aWRlcn0+KGQuc3RvcmFnZVBhdGgpCiAgICB9Cn0K", + "test": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdGVzdCAtIHYyLjM5Ci8vIDxwbGF0Zm9ybV9pbmZvPgoK", + "transferTokens": "Ly8gRmxvdyBXYWxsZXQgLSB0ZXN0bmV0IFNjcmlwdCAgdHJhbnNmZXJUb2tlbnMgLSB2Mi4zOQovLyA8cGxhdGZvcm1faW5mbz4KCmltcG9ydCBGdW5naWJsZVRva2VuIGZyb20gMHhmMjMzZGNlZTg4ZmUwYWJlCmltcG9ydCBGbG93VG9rZW4gZnJvbSAweDE2NTQ2NTMzOTkwNDBhNjEKCnRyYW5zYWN0aW9uKHJlY2lwaWVudDogQWRkcmVzcywgYW1vdW50OiBVRml4NjQpIHsKICAgIC8vIFRoZSBWYXVsdCByZXNvdXJjZSB0aGF0IGhvbGRzIHRoZSB0b2tlbnMgdGhhdCBhcmUgYmVpbmcgdHJhbnNmZXJlZAogICAgbGV0IHNlbnRWYXVsdDogQHtGdW5naWJsZVRva2VuLlZhdWx0fQogICAgcHJlcGFyZShzaWduZXI6IGF1dGgoU3RvcmFnZSwgQm9ycm93VmFsdWUpICZBY2NvdW50KSB7CiAgICAgICAgIC8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgbGV0IHZhdWx0UmVmID0gc2lnbmVyLnN0b3JhZ2UuYm9ycm93PGF1dGgoRnVuZ2libGVUb2tlbi5XaXRoZHJhdykgJkZsb3dUb2tlbi5WYXVsdD4oZnJvbTogL3N0b3JhZ2UvRmxvd1Rva2VuVmF1bHQpCiAgICAgICAgICAgID8/IHBhbmljKCJDb3VsZCBub3QgYm9ycm93IHJlZmVyZW5jZSB0byB0aGUgb3duZXIncyBWYXVsdCEiKQoKICAgICAgICAvLyBXaXRoZHJhdyB0b2tlbnMgZnJvbSB0aGUgc2lnbmVyJ3Mgc3RvcmVkIHZhdWx0CiAgICAgICAgc2VsZi5zZW50VmF1bHQgPC0gdmF1bHRSZWYud2l0aGRyYXcoYW1vdW50OiBhbW91bnQpCiAgICB9CgogICAgZXhlY3V0ZSB7CiAgICAgICAgLy8gR2V0IHRoZSByZWNpcGllbnQncyBwdWJsaWMgYWNjb3VudCBvYmplY3QKICAgICAgICBsZXQgcmVjaXBpZW50QWNjb3VudCA9IGdldEFjY291bnQocmVjaXBpZW50KQoKICAgICAgICAvLyBHZXQgYSByZWZlcmVuY2UgdG8gdGhlIHJlY2lwaWVudCdzIFJlY2VpdmVyCiAgICAgICAgbGV0IHJlY2VpdmVyUmVmID0gcmVjaXBpZW50QWNjb3VudC5jYXBhYmlsaXRpZXMuYm9ycm93PCZ7RnVuZ2libGVUb2tlbi5SZWNlaXZlcn0+KC9wdWJsaWMvRmxvd1Rva2VuUmVjZWl2ZXIpIQogICAgICAgICAgICAKICAgICAgICAvLyBEZXBvc2l0IHRoZSB3aXRoZHJhd24gdG9rZW5zIGluIHRoZSByZWNpcGllbnQncyByZWNlaXZlcgogICAgICAgIHJlY2VpdmVyUmVmLmRlcG9zaXQoZnJvbTogPC1zZWxmLnNlbnRWYXVsdCkKICAgIH0KfQ==" } } }, - "version": "2.28" + "version": "2.39" } diff --git a/FRW/Resource/en.lproj/Localizable.strings b/FRW/Resource/en.lproj/Localizable.strings index d2a3842e..d9cffefd 100644 --- a/FRW/Resource/en.lproj/Localizable.strings +++ b/FRW/Resource/en.lproj/Localizable.strings @@ -430,7 +430,7 @@ "Incorrect__decrypt__password__please__try__again::message" = "Incorrect decrypt password, please try again."; "restore" = "Restore"; "The__decrypt__password__should__be__8__characters__long::message" = "The decrypt password should be at least 8 characters long."; -"restore_with_words_desc" = "Restore your wallet with the 12 word \nrecovery phrase that you have written down."; +"restore_with_words_desc" = "From Flow Wallet legacy backup, Seed Phrase, Key Store and Private Key."; "We__ve__found::message" = "We've found"; "restore_with_icloud" = "Restore with iCloud"; "matching__accounts::message" = "matching accounts"; @@ -910,8 +910,8 @@ "restore_device_desc" = "Restore from another mobile or extension wallet"; "restore_multi_title" = "From Multi Backup"; "restore_multi_desc" = "Google Drive/ Passkey/ iCloud/ Recovery Phrase"; -"restore_phrase_title" = "From Recovery Phrase (legacy)"; -"restore_phrase_desc" = "Restore using a legacy recovery phrase (not multi-backup)"; +"restore_phrase_title" = "From Raw Key"; +"restore_phrase_desc" = "Support legacy Google Drive, iCloud, Seed Phrase, Key Store and Private Key"; "from_multi_backup" = "From Multi-Backup"; "from_multi_backup_desc" = "Please Select 2 or More Backup Options"; "connect_to_x" = "Connect to %@"; @@ -992,6 +992,19 @@ "my_accounts" = "My Accounts"; "Inaccessible" = "Inaccessible"; "View Recovery Phrase" = "View Recovery Phrase"; +"import_google_desc" = "Retrieve the legacy backup from Google Drive."; +"import_icloud_desc" = "Retrieve the legacy backup from iCloud."; +"import_phrase_desc" = "Support 12 words seed phrase."; +"import_keystore_desc" = "Import keystore file (Blocto Backup)."; +"import_privatekey_desc" = "Import with raw hex key."; +"keystore_json" = "You can import the json file from other wallet (eg. Blockto)"; +"keystore_password" = "Enter password for json file"; +"keystore_address" = "Enter your flow address (Optional)"; +"x_account_found_title" = "%@ Accounts Found"; +"no_account_found" = "No Account Found"; +"import_x_wallet" = "Import %@ Wallet"; +"import_no_account_found" = "Sorry, we can not find your address on flow with this key.\nPlease check your input and try again."; +"private_key_placeholder" = "Enter your Private key"; "take_mins" = "It might take 1-2 mins"; "what_is" = "What is a"; "multi_backup_detail" = "A multi-backup stores multiple partial-weight keys across your accounts on trusted providers like Google Drive and iCloud, or a Recovery Phrase. @@ -1034,6 +1047,14 @@ Please create backups for your wallet to ensure you retain access to your Flow a "create_phrase_backup_note" = "Create a 12 word recovery phrase"; "Recommended" = "Recommended"; + +"seedphrase_hint" = "12 or 24 words split with whitespace"; +"Seed Phrase" = "Seed Phrase"; +"advanced" = "Advanced"; +"Derivation Path" = "Derivation Path"; +"Passphrase" = "Passphrase"; +"Optional" = "(Optional)"; + "move_fee_hint_cost" = "It appears when moving between VM accounts"; "move_fee_hint_free" = "No fee between your Flow accounts 🤟"; "move_fee_cost" = "~ 0.001"; @@ -1056,3 +1077,15 @@ Please create backups for your wallet to ensure you retain access to your Flow a "Add Suggested Token" = "Add Suggested Token"; "like_import_token" = "Would you like to import this token?"; "invalid_erc20" = "Invalid ERC20 address"; +"choose_account_import" = "Choose an account you want to import"; + +"restore_device_desc_2" = "Mobile or Extension Devices"; +"restore_phrase_title_2" = "From Raw Key"; +"restore_phrase_desc_2" = "Support legacy Google Drive, Seed Phrase, Key Store and Private Key"; +"import_desc" = "From Flow Wallet legacy backup, Seed Phrase, +Key Store and Private Key."; +"invalid_data" = "Invalid Data"; +"invalid_json" = "Key decryption failed - possibly wrong keystore file"; +"invalid_password" = "Key decryption failed - possibly wrong password"; +"not_find_address" = "cannot find this key under this address"; +"required_info_not" = "Required information has not been entered."; diff --git a/FRW/Services/Cache/CoinRateCache.swift b/FRW/Services/Cache/CoinRateCache.swift index 87e11c4d..f192883f 100644 --- a/FRW/Services/Cache/CoinRateCache.swift +++ b/FRW/Services/Cache/CoinRateCache.swift @@ -204,7 +204,8 @@ extension CoinRateCache { await set(summary: response, forContractId: contractId) case let .mirror(token): guard let mirrorTokenModel = WalletManager.shared.supportedCoins? - .first(where: { $0.symbol == token.rawValue }) else { + .first(where: { $0.symbol == token.rawValue }) + else { break } diff --git a/FRW/Services/FlowCoin/CadenceManager.swift b/FRW/Services/FlowCoin/CadenceManager.swift index 026b230d..801cf90a 100644 --- a/FRW/Services/FlowCoin/CadenceManager.swift +++ b/FRW/Services/FlowCoin/CadenceManager.swift @@ -15,8 +15,6 @@ class CadenceManager { private init() { loadLocalCache() fetchScript() - - log.info("[Cadence] current version is \(String(describing: version))") } // MARK: Internal @@ -54,7 +52,8 @@ class CadenceManager { } else { do { guard let filePath = Bundle.main - .path(forResource: "cloudfunctions", ofType: "json") else { + .path(forResource: "cloudfunctions", ofType: "json") + else { log.error("CadenceManager -> loadFromLocalFile error: no local file") return } @@ -86,6 +85,7 @@ class CadenceManager { self.scripts = response.data.scripts if let version = response.data.version { self.version = version + log.info("[Cadence] remote version is \(String(describing: version))") } EventTrack.shared .registerCadence( @@ -301,7 +301,7 @@ extension CadenceModel { let getNodeInfo: String? let getNodesInfo: String? - let getDelegatesInfoArray: String? + let getDelegatesInfoArrayV2: String? let getApyWeekly: String? let getStakeInfo: String? diff --git a/FRW/Services/Manager/Account/MultiAccountStorage.swift b/FRW/Services/Manager/Account/MultiAccountStorage.swift index 732c46ab..ac130d83 100644 --- a/FRW/Services/Manager/Account/MultiAccountStorage.swift +++ b/FRW/Services/Manager/Account/MultiAccountStorage.swift @@ -147,7 +147,6 @@ extension MultiAccountStorage { extension MultiAccountStorage { func getUserInfo(_ uid: String) -> UserInfo? { if !UserStorageFileType.userInfo(uid).isExist { - log.warning("user info cache is not exist") return nil } @@ -163,7 +162,6 @@ extension MultiAccountStorage { func getWalletInfo(_ uid: String) -> UserWalletResponse? { if !UserStorageFileType.walletInfo(uid).isExist { - log.warning("wallet info cache is not exist") return nil } @@ -179,7 +177,6 @@ extension MultiAccountStorage { func getUserDefaults(_ uid: String) -> MultiAccountStorage.UserDefaults? { if !UserStorageFileType.userDefaults(uid).isExist { - log.warning("user defaults cache is not exist") return nil } diff --git a/FRW/Services/Manager/Backup/Helper/iCloudAPI.swift b/FRW/Services/Manager/Backup/Helper/iCloudAPI.swift index fb50c018..983da423 100644 --- a/FRW/Services/Manager/Backup/Helper/iCloudAPI.swift +++ b/FRW/Services/Manager/Backup/Helper/iCloudAPI.swift @@ -71,7 +71,8 @@ class iCloudAPI: UIDocument { self?.cancelSets.removeAll() guard let results = query.results as? [NSMetadataItem], - let item = results.first else { + let item = results.first + else { debugPrint("iCloudAPI -> isExist: results or item is nil") config.resume(returning: false) return @@ -119,7 +120,8 @@ class iCloudAPI: UIDocument { self?.cancelSets.removeAll() guard let results = query.results as? [NSMetadataItem], - let item = results.first else { + let item = results.first + else { debugPrint("iCloudAPI -> isExist: results or item is nil") config.resume(returning: false) return diff --git a/FRW/Services/Manager/Backup/Target/BackupGDTarget.swift b/FRW/Services/Manager/Backup/Target/BackupGDTarget.swift index a44642c8..a70c34a3 100644 --- a/FRW/Services/Manager/Backup/Target/BackupGDTarget.swift +++ b/FRW/Services/Manager/Backup/Target/BackupGDTarget.swift @@ -177,7 +177,8 @@ extension BackupGDTarget { } guard let scopes = grantedUser.grantedScopes, - scopes.contains(driveScope) else { + scopes.contains(driveScope) + else { continuation.resume(throwing: GoogleBackupError.noDriveScope) return } diff --git a/FRW/Services/Manager/Backup/Target/BackupiCloudTarget.swift b/FRW/Services/Manager/Backup/Target/BackupiCloudTarget.swift index 3dd6029c..8aa7d67e 100644 --- a/FRW/Services/Manager/Backup/Target/BackupiCloudTarget.swift +++ b/FRW/Services/Manager/Backup/Target/BackupiCloudTarget.swift @@ -68,7 +68,8 @@ extension BackupiCloudTarget { } guard let id = containerID, - let url = FileManager.default.url(forUbiquityContainerIdentifier: id) else { + let url = FileManager.default.url(forUbiquityContainerIdentifier: id) + else { throw iCloudBackupError.initError } diff --git a/FRW/Services/Manager/BalanceProvider.swift b/FRW/Services/Manager/BalanceProvider.swift index 57a4d22b..d329b0b0 100644 --- a/FRW/Services/Manager/BalanceProvider.swift +++ b/FRW/Services/Manager/BalanceProvider.swift @@ -38,7 +38,8 @@ class BalanceProvider: ObservableObject { do { let balanceList = try await FlowNetwork.fetchBalance(at: Flow.Address(hex: address)) guard let model = balanceList - .first(where: { $0.key.lowercased().hasSuffix(".FlowToken".lowercased()) }) else { + .first(where: { $0.key.lowercased().hasSuffix(".FlowToken".lowercased()) }) + else { return } balances[address] = model.value.formatCurrencyString() diff --git a/FRW/Services/Manager/ChildAccountManager.swift b/FRW/Services/Manager/ChildAccountManager.swift index 7c6bba92..7bfb9fa9 100644 --- a/FRW/Services/Manager/ChildAccountManager.swift +++ b/FRW/Services/Manager/ChildAccountManager.swift @@ -165,7 +165,8 @@ class ChildAccountManager: ObservableObject { func refresh() { guard let uid = UserManager.shared.activatedUID, - let address = WalletManager.shared.getPrimaryWalletAddress() else { + let address = WalletManager.shared.getPrimaryWalletAddress() + else { log.warning("uid or address is nil") clean() return @@ -226,7 +227,8 @@ class ChildAccountManager: ObservableObject { @objc private func onTransactionStatusChanged(_ noti: Notification) { guard let obj = noti.object as? TransactionManager.TransactionHolder, - obj.type == .editChildAccount else { + obj.type == .editChildAccount + else { return } @@ -250,7 +252,8 @@ class ChildAccountManager: ObservableObject { cacheLoaded = true guard let uid = UserManager.shared.activatedUID, - let address = WalletManager.shared.getPrimaryWalletAddress() else { + let address = WalletManager.shared.getPrimaryWalletAddress() + else { log.warning("uid or address is nil") return } @@ -309,7 +312,8 @@ extension ChildAccountManager { childAccounts = oldList guard let uid = UserManager.shared.activatedUID, - let address = WalletManager.shared.getPrimaryWalletAddress() else { + let address = WalletManager.shared.getPrimaryWalletAddress() + else { log.error("uid or address is nil") return } @@ -323,7 +327,8 @@ extension ChildAccountManager { childAccounts = oldList guard let uid = UserManager.shared.activatedUID, - let address = WalletManager.shared.getPrimaryWalletAddress() else { + let address = WalletManager.shared.getPrimaryWalletAddress() + else { log.error("uid or address is nil") return } diff --git a/FRW/Services/Manager/EVMAccountManager.swift b/FRW/Services/Manager/EVMAccountManager.swift index de28f438..f8e45a1c 100644 --- a/FRW/Services/Manager/EVMAccountManager.swift +++ b/FRW/Services/Manager/EVMAccountManager.swift @@ -134,7 +134,8 @@ class EVMAccountManager: ObservableObject { @objc private func onTransactionStatusChanged(_ noti: Notification) { guard let obj = noti.object as? TransactionManager.TransactionHolder, - obj.type == .editChildAccount else { + obj.type == .editChildAccount + else { return } diff --git a/FRW/Services/Manager/LocalUserDefaults.swift b/FRW/Services/Manager/LocalUserDefaults.swift index e16284d6..6c5aebe0 100644 --- a/FRW/Services/Manager/LocalUserDefaults.swift +++ b/FRW/Services/Manager/LocalUserDefaults.swift @@ -48,9 +48,12 @@ extension LocalUserDefaults { case whatIsBack case backupSheetNotAsk + + case userList case checkCoa case customToken + case migrationFinished } enum FlowNetworkType: String, CaseIterable, Codable { @@ -377,6 +380,27 @@ class LocalUserDefaults: ObservableObject { } } + var userList: [UserManager.StoreUser] { + set { + if let data = try? JSONEncoder().encode(newValue) { + UserDefaults.standard.set(data, forKey: Keys.userList.rawValue) + } else { + UserDefaults.standard.removeObject(forKey: Keys.userList.rawValue) + } + } + get { + guard let data = UserDefaults.standard.data(forKey: Keys.userList.rawValue) else { + return [] + } + do { + let model = try JSONDecoder().decode([UserManager.StoreUser].self, from: data) + return model + } catch { + return [] + } + } + } + var checkCoa: [String] { set { UserDefaults.standard.setValue(newValue, forKey: Keys.checkCoa.rawValue) @@ -400,11 +424,50 @@ class LocalUserDefaults: ObservableObject { if let data = UserDefaults.standard.data(forKey: Keys.customToken.rawValue), let list = try? JSONDecoder().decode([CustomToken].self, from: data) { return list + } else { return [] } } } + + func addUser(user: UserManager.StoreUser) { + var list = userList + let index = list.lastIndex { $0.publicKey == user.publicKey && $0.keyType == user.keyType } + if let result = index { + list[result] = user + } else { + list.append(user) + } + self.userList = list + } + + func updateUser(by userId: String, publicKey: String ,address: String? = nil, account: UserManager.Accountkey? = nil) { + var users = userList + let index = users.lastIndex(where: { $0.userId == userId && $0.publicKey == publicKey }) + guard let index = index else { + return + } + let user = users[index] + let newUser = user.copy(address: address, account: account) + users[index] = newUser + self.userList = users + } + + func updateSEUser(by userId: String, address: String) { + var users = userList + let index = users.lastIndex(where: { $0.userId == userId && $0.keyType == .secureEnclave }) + guard let index = index else { + return + } + let user = users[index] + let newUser = user.copy(address: address, account: nil) + users[index] = newUser + self.userList = users + } + + @AppStorage(Keys.migrationFinished.rawValue) + var migrationFinished: Bool = false } extension LocalUserDefaults { diff --git a/FRW/Services/Manager/PushHandler.swift b/FRW/Services/Manager/PushHandler.swift index 8c6b90f7..78fb051b 100644 --- a/FRW/Services/Manager/PushHandler.swift +++ b/FRW/Services/Manager/PushHandler.swift @@ -105,7 +105,8 @@ extension PushHandler { private func uploadCurrentToken() { guard let address = WalletManager.shared .getWatchAddressOrChildAccountAddressOrPrimaryAddress(), - let fcmToken = fcmToken else { + let fcmToken = fcmToken + else { return } @@ -127,7 +128,8 @@ extension PushHandler { func uploadWhenAppUpgrade() { guard let address = WalletManager.shared .getWatchAddressOrChildAccountAddressOrPrimaryAddress(), - let fcmToken = Messaging.messaging().fcmToken else { + let fcmToken = Messaging.messaging().fcmToken + else { return } diff --git a/FRW/Services/Manager/TransactionManager.swift b/FRW/Services/Manager/TransactionManager.swift index 1893251a..f5699f6b 100644 --- a/FRW/Services/Manager/TransactionManager.swift +++ b/FRW/Services/Manager/TransactionManager.swift @@ -140,6 +140,7 @@ extension TransactionManager { self.createTime = createTime self.type = type self.data = data + log.info("[Cadence] txi:\(id.hex)") } // MARK: Internal diff --git a/FRW/Services/Manager/UserManager.swift b/FRW/Services/Manager/UserManager.swift index 9b60c19f..b5fa19f2 100644 --- a/FRW/Services/Manager/UserManager.swift +++ b/FRW/Services/Manager/UserManager.swift @@ -10,15 +10,19 @@ import Combine import Firebase import FirebaseAuth import Flow -import FlowWalletCore +import FlowWalletKit import Foundation +import Alamofire +import WalletCore + // MARK: - UserManager.UserType extension UserManager { enum UserType: Codable { case phrase case secure + case fromImport } } @@ -183,7 +187,7 @@ extension UserManager { // MARK: - Register extension UserManager { - func register(_ username: String, mnemonic _: String? = nil) async throws -> String? { + func register(_ userName: String) async throws -> String? { if Auth.auth().currentUser?.isAnonymous != true { try await Auth.auth().signInAnonymously() DispatchQueue.main.async { @@ -192,35 +196,36 @@ extension UserManager { } } - let sec = try WallectSecureEnclave() - let key = try sec.accountKey() - + let secureKey = try SecureEnclaveKey.create() + let key = try secureKey.flowAccountKey(index: 0) if IPManager.shared.info == nil { await IPManager.shared.fetch() } let request = RegisterRequest( - username: username, + username: userName, accountKey: key.toCodableModel(), deviceInfo: IPManager.shared.toParams() ) - let model: RegisterResponse = try await Network.request(FRWAPI.User.register(request)) + try secureKey.store(id: model.id) + let store = UserManager.StoreUser( + publicKey: key.publicKey.description, + address: nil, + userId: model.id, + keyType: .secureEnclave, + account: key.toStoreKey() + ) + WalletManager.shared.updateKeyProvider(provider: secureKey, storeUser: store) + LocalUserDefaults.shared.addUser(user: store) + try await finishLogin(mnemonic: "", customToken: model.customToken, isRegiter: true) WalletManager.shared.asyncCreateWalletAddressFromServer() userType = .secure - if let privateKey = sec.key.privateKey { - try WallectSecureEnclave.Store.store( - key: model.id, - value: privateKey.dataRepresentation - ) - } else { - log.error("store public key on iPhone failed") - } EventTrack.Account .create( - key: sec.key.publickeyValue ?? "", + key: key.publicKey.description, signAlgo: key.signAlgo.id, hashAlgo: key.hashAlgo.id ) @@ -243,40 +248,44 @@ extension UserManager { HUD.loading() Task { do { - var list = try WallectSecureEnclave.Store.fetch() - list = list.filter { $0.isShow ?? true } var addressList: [String: String] = [:] - for item in list { - do { - let sec = try WallectSecureEnclave(privateKey: item.publicKey) - guard let publicKey = sec.key.publickeyValue else { continue } + //Secure Enclave Key + let seKeylist = SecureEnclaveKey.KeychainStorage.allKeys + for userId in seKeylist { + if let se = try? SecureEnclaveKey.wallet(id: userId), + let publicKey = try? se.publicKey()?.hexValue { let response: AccountResponse = try await Network .requestWithRawModel(FRWAPI.Utils.flowAddress(publicKey)) let account = response.accounts? .filter { ($0.weight ?? 0) >= 1000 && $0.address != nil }.first if let model = account { - addressList[item.uniq] = model.address ?? "0x" + addressList[userId] = model.address ?? "0x" } - } catch { - log.error("[Launch] first login check failed:\(item.uniq)", context: error) + } else { + log.error("[Launch] first login check failed:\(userId)") } } - - let uidList = addressList.map { $0.key } - let userAddress = addressList + // FIXME: all key type + var result: [String: String] = [:] + for (key,value) in addressList { + if key.contains(".key."), let newKey = key.components(separatedBy: ".key.").first { + result[newKey] = value + }else { + result[key] = value + } + } + let uidList = result.map { $0.key } + let userAddress = result DispatchQueue.main.async { - self.loginUIDList = uidList LocalUserDefaults.shared.userAddressOfDeletedApp = userAddress LocalUserDefaults.shared.tryToRestoreAccountFlag = true + self.loginUIDList = uidList } HUD.dismissLoading() } catch { HUD.dismissLoading() - log.info("restore_account_failed".localized) -// HUD.showAlert(title: "", msg: "restore_account_failed".localized, cancelAction: {}, confirmTitle: "retry".localized) { -// self.tryToRestoreOldAccountOnFirstLaunch() -// } + log.info("restore old failed:\(error)") } } } @@ -341,7 +350,7 @@ extension UserManager { try await finishLogin(mnemonic: mnemonicStr, customToken: customToken) } - func restoreLogin(userId: String) async throws { + func restoreLogin(with userId: String) async throws { if Auth.auth().currentUser?.isAnonymous != true { try await Auth.auth().signInAnonymously() DispatchQueue.main.async { @@ -354,23 +363,81 @@ extension UserManager { loginAnonymousIfNeeded() throw LLError.restoreLoginFailed } + guard let keyProvider = WalletManager.shared.keyProvider(with: userId) else { + throw LLError.restoreLoginFailed + } + let accountKey = await WalletManager.shared.accountKey(with: userId) + + guard let signData = token.addUserMessage(), + let signAlgo = accountKey?.signAlgo, + let hashAlgo = accountKey?.hashAlgo, + let publicKey = try keyProvider.publicKey(signAlgo: signAlgo)?.hexValue, + !publicKey.isEmpty + else { + throw LLError.signFailed + } + + let signature = try keyProvider.sign(data: signData, signAlgo: signAlgo, hashAlgo: hashAlgo) - guard let publicData = try WallectSecureEnclave.Store.fetchModel(by: userId)?.publicKey, - !publicData.isEmpty else { + await IPManager.shared.fetch() + let key = AccountKey( + hashAlgo: hashAlgo.index, + publicKey: publicKey, + signAlgo: signAlgo.index + ) + + let request = LoginRequest( + signature: signature.hexValue, + accountKey: key, + deviceInfo: IPManager.shared.toParams() + ) + let response: Network.Response = try await Network + .requestWithRawModel(FRWAPI.User.login(request)) + if response.httpCode == 404 { + throw LLError.accountNotFound + } + guard let customToken = response.data?.customToken, !customToken.isEmpty else { throw LLError.restoreLoginFailed } + + let storeUser = StoreUser( + publicKey: publicKey, + address: nil, + userId: userId, + keyType: keyProvider.keyType, + account: accountKey + ) + WalletManager.shared.updateKeyProvider(provider: keyProvider, storeUser: storeUser) - let sec = try WallectSecureEnclave(privateKey: publicData) + try await finishLogin(mnemonic: "", customToken: customToken) + } - guard let signData = token.AddUserMessage(), - let publicKey = sec.key.publickeyValue, + func restoreLogin(userId: String) async throws { + EventTrack.Dev.restoreLogin(userId: userId) + if Auth.auth().currentUser?.isAnonymous != true { + try await Auth.auth().signInAnonymously() + DispatchQueue.main.async { + self.activatedUID = nil + self.userInfo = nil + } + } + + guard let token = try? await getIDToken(), !token.isEmpty else { + loginAnonymousIfNeeded() + throw LLError.restoreLoginFailed + } + let secureKey = try SecureEnclaveKey.wallet(id: userId) + + guard let signData = token.addUserMessage(), + let publicKey = try secureKey.publicKey()?.hexValue, !publicKey.isEmpty else { throw LLError.signFailed } - let signature = try sec.sign(data: signData).hexValue + + let signature = try secureKey.sign(data: signData, hashAlgo: .SHA2_256) + await IPManager.shared.fetch() - // TODO: hash & sign algo let key = AccountKey( hashAlgo: Flow.HashAlgorithm.SHA2_256.index, publicKey: publicKey, @@ -378,10 +445,11 @@ extension UserManager { ) let request = LoginRequest( - signature: signature, + signature: signature.hexValue, accountKey: key, deviceInfo: IPManager.shared.toParams() ) + let response: Network.Response = try await Network .requestWithRawModel(FRWAPI.User.login(request)) if response.httpCode == 404 { @@ -391,8 +459,97 @@ extension UserManager { guard let customToken = response.data?.customToken, !customToken.isEmpty else { throw LLError.restoreLoginFailed } + try await finishLogin(mnemonic: "", customToken: customToken) + } + + func importLogin( + by address: String, + userName: String, + flowKey: Flow.AccountKey, + privateKey: any KeyProtocol, + isImport: Bool = false + ) async throws { + if Auth.auth().currentUser?.isAnonymous != true { + try await Auth.auth().signInAnonymously() + DispatchQueue.main.async { + self.activatedUID = nil + self.userInfo = nil + } + } + + guard let token = try? await getIDToken(), !token.isEmpty else { + loginAnonymousIfNeeded() + throw LLError.restoreLoginFailed + } + + guard let signData = token.addUserMessage() + else { + throw LLError.signFailed + } + let publicKey = flowKey.publicKey.description + let signature = try privateKey.sign( + data: signData, + signAlgo: flowKey.signAlgo, + hashAlgo: flowKey.hashAlgo + ).hexValue + + await IPManager.shared.fetch() + let key = AccountKey( + hashAlgo: flowKey.hashAlgo.index, + publicKey: publicKey, + signAlgo: flowKey.signAlgo.index + ) + + var loginResponse: LoginResponse? + if isImport { + let request = RestoreImportRequest( + username: userName, + accountKey: key, + deviceInfo: IPManager.shared.toParams(), + address: address + ) + let response: Network.Response = try await Network + .requestWithRawModel(FRWAPI.User.loginWithImport(request)) + if response.httpCode == 404 { + throw LLError.accountNotFound + } + loginResponse = response.data + } else { + let request = LoginRequest( + signature: signature, + accountKey: key, + deviceInfo: IPManager.shared.toParams(), + address: address + ) + let response: Network.Response = try await Network + .requestWithRawModel(FRWAPI.User.login(request)) + if response.httpCode == 404 { + throw LLError.accountNotFound + } + loginResponse = response.data + } + + userType = .fromImport + guard let customToken = loginResponse?.customToken, let uid = loginResponse?.id, + !customToken.isEmpty + else { + throw LLError.restoreLoginFailed + } + try privateKey.store(id: privateKey.createKey(uid: uid), password: KeyProvider.password(with: uid)) + log.debug("[user] \(flowKey)") + let store = StoreUser( + publicKey: publicKey, + address: address, + userId: uid, + keyType: privateKey.keyType, + account: flowKey.toStoreKey() + ) + LocalUserDefaults.shared.addUser(user: store) + WalletManager.shared.updateKeyProvider(provider: privateKey, storeUser: store) + log.debug("[user] \(store)") try await finishLogin(mnemonic: "", customToken: customToken) + } } @@ -429,19 +586,25 @@ extension UserManager { return } } - let allModel = try WallectSecureEnclave.Store.fetchAllModel(by: uid) - let model = try WallectSecureEnclave.Store.fetchModel(by: uid) - - if model != nil { - try await restoreLogin(userId: uid) - return - } - if model == nil, !allModel.isEmpty { - WalletManager.shared.warningIfKeyIsInvalid(userId: uid, markHide: true) + if WalletManager.shared.keyProvider(with: uid) != nil { + try await restoreLogin(with: uid) return } - - throw WalletError.mnemonicMissing + try await restoreLogin(userId: uid) + // FIXME: data migrate from device to other device,the private key is destructive +// let allModel = try WallectSecureEnclave.Store.fetchAllModel(by: uid) +// let model = try WallectSecureEnclave.Store.fetchModel(by: uid) +// +// if model != nil { +// try await restoreLogin(userId: uid) +// return +// } +// if model == nil && allModel.count > 0 { +// WalletManager.shared.warningIfKeyIsInvalid(userId: uid, markHide: true) +// return +// } +// +// throw WalletError.mnemonicMissing } } @@ -644,7 +807,7 @@ extension UserManager { extension UserManager { struct AccountResponse: Codable { let publicKey: String? - let accounts: [AccountInfo]? + var accounts: [AccountInfo]? } struct AccountInfo: Codable { @@ -653,3 +816,38 @@ extension UserManager { let keyId: Int? } } + +// MARK: UserManager.StoreUser + +extension UserManager { + + struct Accountkey: Codable { + public var index: Int + public let signAlgo: Flow.SignatureAlgorithm + public let hashAlgo: Flow.HashAlgorithm + public let weight: Int + } + + struct StoreUser: Codable { + let publicKey: String + let address: String? + let userId: String + let keyType: FlowWalletKit.KeyType + let account: UserManager.Accountkey? + var updateAt: TimeInterval = ceil(Date().timeIntervalSince1970) + + func copy(address: String? = nil, account: UserManager.Accountkey? = nil) -> StoreUser { + return StoreUser(publicKey: publicKey, + address: address ?? self.address, + userId: userId, + keyType: keyType, + account: account ?? self.account) + } + } +} +extension Flow.AccountKey { + func toStoreKey() -> UserManager.Accountkey { + UserManager.Accountkey(index: index, signAlgo: signAlgo, hashAlgo: hashAlgo, weight: weight) + } +} + diff --git a/FRW/Services/Manager/WalletConnect/WalletConnect+SyncDevice.swift b/FRW/Services/Manager/WalletConnect/WalletConnect+SyncDevice.swift index 7f57c10d..d0117dce 100644 --- a/FRW/Services/Manager/WalletConnect/WalletConnect+SyncDevice.swift +++ b/FRW/Services/Manager/WalletConnect/WalletConnect+SyncDevice.swift @@ -5,7 +5,8 @@ // Created by cat on 2023/12/5. // -import FlowWalletCore +import Flow +import FlowWalletKit import Foundation import WalletConnectPairing import WalletConnectSign @@ -115,14 +116,12 @@ extension WalletConnectSyncDevice { (request.topic == response.topic) } - static func packageDeviceInfo(userId: String) async throws -> AnyCodable { + static func packageDeviceInfo(userId: String, address: String?) async throws -> AnyCodable { if IPManager.shared.info == nil { await IPManager.shared.fetch() } - - let sec = try WallectSecureEnclave() - let key = try sec.accountKey() - + let secureKey = try SecureEnclaveKey.create() + let key = try secureKey.flowAccountKey() let requestParam = RegisterRequest( username: "", accountKey: key.toCodableModel(), @@ -132,11 +131,10 @@ extension WalletConnectSyncDevice { method: FCLWalletConnectMethod.addDeviceInfo.rawValue, data: requestParam ) - try WallectSecureEnclave.Store.store( - key: userId, - value: sec.key.privateKey!.dataRepresentation - ) - log.debug("[Sync] public: \(sec.key.publickeyValue ?? "")") + try secureKey.store(id: userId) + let storeUser = UserManager.StoreUser(publicKey: key.publicKey.description, address: address, userId: userId, keyType: .secureEnclave, account: nil) + LocalUserDefaults.shared.addUser(user: storeUser) + log.debug("[Sync] Public Key: \(key.publicKey.data.hexString)") return AnyCodable(response) } } diff --git a/FRW/Services/Manager/WalletConnect/WalletConnectEVMHandler.swift b/FRW/Services/Manager/WalletConnect/WalletConnectEVMHandler.swift index 5abfbac2..425dff39 100644 --- a/FRW/Services/Manager/WalletConnect/WalletConnectEVMHandler.swift +++ b/FRW/Services/Manager/WalletConnect/WalletConnectEVMHandler.swift @@ -326,7 +326,8 @@ struct WalletConnectEVMHandler: WalletConnectChildHandlerProtocol { cancel: @escaping () -> Void ) { guard let model = try? request.params.get(WalletConnectEVMHandler.WatchAsset.self), - let address = model.options?.address else { + let address = model.options?.address + else { cancel() return } diff --git a/FRW/Services/Manager/WalletManager.swift b/FRW/Services/Manager/WalletManager.swift index 8aa12325..5a3d369b 100644 --- a/FRW/Services/Manager/WalletManager.swift +++ b/FRW/Services/Manager/WalletManager.swift @@ -8,7 +8,7 @@ import BigInt import Combine import Flow -import FlowWalletCore +import FlowWalletKit import Foundation import KeychainAccess import Kingfisher @@ -63,6 +63,7 @@ class WalletManager: ObservableObject { .receive(on: DispatchQueue.main) .map { $0 } .sink { _ in + self.reloadWallet() self.clearFlowAccount() self.reloadWalletInfo() }.store(in: &cancellableSet) @@ -103,6 +104,13 @@ class WalletManager: ObservableObject { @Published var balanceProvider = BalanceProvider() + var walletEntity: FlowWalletKit.Wallet? = nil + var accountKey: UserManager.Accountkey? + var keyProvider: (any KeyProtocol)? = nil + // rename to currentAccount + +// @Published var account: FlowWalletKit.Account? = nil + var customTokenManager: CustomTokenManager = .init() @Published @@ -211,6 +219,119 @@ class WalletManager: ObservableObject { } } +// MARK: Key Protocol + +extension WalletManager { + private func reloadWallet() { + if let uid = UserManager.shared.activatedUID { + keyProvider = keyProvider(with: uid) + if let provider = keyProvider, let user = userStore(with: uid) { + updateKeyProvider(provider: provider, storeUser: user) + } else { + log.error("[Wallet] not found provider or user at \(uid)") + } + } + } + + func updateKeyProvider(provider: any KeyProtocol, storeUser: UserManager.StoreUser) { + keyProvider = provider + self.accountKey = storeUser.account + log.debug("[user] \(String(describing: self.accountKey))") + guard self.accountKey == nil else { + return + } + Task { + if let address = storeUser.address { + do { + let accountKey = try await findKey(address: address, with: storeUser.publicKey) + self.accountKey = accountKey?.toStoreKey() + LocalUserDefaults.shared.updateUser(by: storeUser.userId,publicKey: storeUser.publicKey, account: self.accountKey) + }catch { + log.error("[Wallet] not find account key by \(address) with \(storeUser.publicKey)") + } + } + if self.accountKey == nil { + do { + let result = try await findKey(provider: provider, with: storeUser.publicKey) + self.accountKey = result.1?.toStoreKey() + let address = result.0?.address.description + LocalUserDefaults.shared.updateUser(by: storeUser.userId, publicKey: storeUser.publicKey, address: address,account: accountKey) + } catch { + log.error("[Wallet] not find account key by \(provider.keyType) with \(storeUser.publicKey)") + } + } + } + + } + + func accountKey(with uid: String) async -> UserManager.Accountkey? { + guard let user = userStore(with: uid) else { + return nil + } + var accountKey = user.account + log.debug("[user] \(String(describing: self.accountKey))") + if accountKey == nil, let address = user.address { + accountKey = try? await findKey(address: address, with: user.publicKey)?.toStoreKey() + } + if accountKey == nil, let keyProvider = keyProvider(with: uid) { + accountKey = try? await findKey(provider: keyProvider, with: user.publicKey).1?.toStoreKey() + } + + return accountKey + } + + private func findKey(address: String, with publicKey: String) async throws -> Flow.AccountKey? { + let account = try await FlowNetwork.getAccountAtLatestBlock(address: address) + let sortedAccount = account.keys.filter { $0.weight >= 1000 } + let accountKey = sortedAccount.filter { $0.publicKey.description == publicKey }.first + log.debug("[user] \(String(describing: accountKey))") + return accountKey + } + + private func findKey(provider: any KeyProtocol, with publicKey: String) async throws -> (Flow.Account?,Flow.AccountKey?) { + let chainId = LocalUserDefaults.shared.flowNetwork.toFlowType() + let walletEntity = FlowWalletKit.Wallet(type: .key(provider), networks: [chainId]) + _ = try? await walletEntity.fetchAllNetworkAccounts() + let list = walletEntity.flowAccounts?[chainId] + var flowAccount: Flow.Account? = nil + var accountKey: Flow.AccountKey? = nil + list?.forEach { account in + for key in account.keys { + if key.publicKey.description == publicKey { + flowAccount = account + accountKey = key + break + } + } + } + log.debug("[user] \(String(describing: accountKey))") + return (flowAccount,accountKey) + } + + func userStore(with uid: String) -> UserManager.StoreUser? { + LocalUserDefaults.shared.userList.last { $0.userId == uid } + } + + func keyProvider(with uid: String) -> (any KeyProtocol)? { + guard let userStore = userStore(with: uid) else { + return nil + } + log.debug("[user] \(userStore)") + var provider: (any KeyProtocol)? + switch userStore.keyType { + case .secureEnclave: + provider = try? SecureEnclaveKey.wallet(id: uid) + case .seedPhrase: + provider = try? SeedPhraseKey.wallet(id: uid) + case .privateKey: + provider = try? PrivateKey.wallet(id: uid) + case .keyStore: + provider = try? PrivateKey.wallet(id: uid) + } + return provider + } +} + // MARK: - Child Account extension WalletManager { @@ -327,7 +448,8 @@ extension WalletManager { func isMain() -> Bool { guard let currentAddress = getWatchAddressOrChildAccountAddressOrPrimaryAddress(), - !currentAddress.isEmpty else { + !currentAddress.isEmpty + else { return false } guard let primaryAddress = getPrimaryWalletAddress() else { @@ -387,6 +509,10 @@ extension WalletManager { } func getCurrentPublicKey() -> String? { + if let provider = keyProvider, let key = accountKey { + let publicKey = try? provider.publicKey(signAlgo: key.signAlgo) + return publicKey?.hexString + } if let accountkey = flowAccountKey { return accountkey.publicKey.description } @@ -651,6 +777,7 @@ extension WalletManager { if !restoreMnemonicFromKeychain(uid: uid), UserManager.shared.userType == .phrase { HUD.error(title: "no_private_key".localized) } + reloadWallet() if let hdWallet = hdWallet { // TODO: } @@ -1054,7 +1181,9 @@ extension WalletManager: FlowSigner { } public var hashAlgo: Flow.HashAlgorithm { - // TODO: FIX ME, make it dynamic + if let key = accountKey { + return key.hashAlgo + } if userSecretSign() { return flowAccountKey?.hashAlgo ?? .SHA2_256 } @@ -1062,15 +1191,20 @@ extension WalletManager: FlowSigner { } public var signatureAlgo: Flow.SignatureAlgorithm { - // TODO: FIX ME, make it dynamic + if let key = accountKey { + return key.signAlgo + } + if userSecretSign() { - return flowAccountKey?.signAlgo ?? .ECDSA_SECP256k1 + return flowAccountKey?.signAlgo ?? .ECDSA_P256 } return phraseAccountkey?.signAlgo ?? .ECDSA_SECP256k1 } public var keyIndex: Int { - // TODO: FIX ME, make it dynamic + if let key = accountKey { + return key.index + } if userSecretSign() { return flowAccountKey?.index ?? 0 } @@ -1088,11 +1222,19 @@ extension WalletManager: FlowSigner { try await findFlowAccount() } + if let provider = keyProvider, let key = accountKey { + let signature = try provider.sign( + data: signableData, + signAlgo: key.signAlgo, + hashAlgo: key.hashAlgo + ) + return signature + } + // TODO: Ready to delete below if userSecretSign() { - if let userId = walletInfo?.id, - let data = try WallectSecureEnclave.Store.fetchModel(by: userId)?.publicKey { - let sec = try WallectSecureEnclave(privateKey: data) - let signature = try sec.sign(data: signableData) + if let userId = walletInfo?.id { + let secureKey = try SecureEnclaveKey.wallet(id: userId) + let signature = try secureKey.sign(data: signableData, hashAlgo: .SHA2_256) return signature } } @@ -1129,11 +1271,18 @@ extension WalletManager: FlowSigner { if flowAccountKey == nil { try await findFlowAccount() } + if let provider = keyProvider, let key = accountKey { + let signature = try provider.sign( + data: signableData, + signAlgo: key.signAlgo, + hashAlgo: key.hashAlgo + ) + return signature + } if userSecretSign() { - if let userId = walletInfo?.id, - let data = try WallectSecureEnclave.Store.fetchModel(by: userId)?.publicKey { - let sec = try WallectSecureEnclave(privateKey: data) - let signature = try sec.sign(data: signableData) + if let userId = walletInfo?.id { + let secureKey = try SecureEnclaveKey.wallet(id: userId) + let signature = try secureKey.sign(data: signableData, hashAlgo: .SHA2_256) return signature } } @@ -1162,12 +1311,24 @@ extension WalletManager: FlowSigner { } public func signSync(signableData: Data) -> Data? { + if let provider = keyProvider, let key = accountKey { + do { + let signature = try provider.sign( + data: signableData, + signAlgo: key.signAlgo, + hashAlgo: key.hashAlgo + ) + return signature + } catch { + return nil + } + } + if userSecretSign() { do { - if let userId = walletInfo?.id, - let data = try WallectSecureEnclave.Store.fetchModel(by: userId)?.publicKey { - let sec = try WallectSecureEnclave(privateKey: data) - let signature = try sec.sign(data: signableData) + if let userId = walletInfo?.id { + let secureKey = try SecureEnclaveKey.wallet(id: userId) + let signature = try secureKey.sign(data: signableData, hashAlgo: .SHA2_256) return signature } } catch { @@ -1211,15 +1372,14 @@ extension WalletManager: FlowSigner { try await findFlowAccount(with: userId, at: address) } - func findFlowAccount(with userId: String, at address: String) async throws { - guard let data = try WallectSecureEnclave.Store.fetchModel(by: userId)?.publicKey else { + func findFlowAccount(with _: String, at address: String) async throws { + guard let provider = keyProvider, + let key = accountKey, + let publicKey = try? provider.publicKey(signAlgo: key.signAlgo)?.hexValue + else { return } - let sec = try WallectSecureEnclave(privateKey: data) - guard let publicKey = sec.key.publickeyValue else { - return - } let account = try await FlowNetwork.getAccountAtLatestBlock(address: address) let sortedAccount = account.keys.sorted { $0.weight > $1.weight } flowAccountKey = sortedAccount.filter { @@ -1254,72 +1414,60 @@ extension WalletManager: FlowSigner { } @discardableResult - func warningIfKeyIsInvalid(userId: String, markHide: Bool = false) -> Bool { + func warningIfKeyIsInvalid(userId: String, markHide _: Bool = false) -> Bool { if let mnemonic = WalletManager.shared.getMnemonicFromKeychain(uid: userId), !mnemonic.isEmpty, mnemonic.split(separator: " ").count != 15 { return false } - do { - let model = try WallectSecureEnclave.Store.fetchModel(by: userId) - let list = try WallectSecureEnclave.Store.fetchAllModel(by: userId) - if model == nil && !list.isEmpty { - DispatchQueue.main.async { - if self.isShow { - return - } - self.isShow = true - let alertVC = BetterAlertController( - title: "Something__is__wrong::message".localized, - message: "profile_key_invalid".localized, - preferredStyle: .alert - ) - - let cancelAction = UIAlertAction( - title: "action_cancel".localized, - style: .cancel - ) { _ in - self.isShow = false - } - - let restoreAction = UIAlertAction( - title: "Restore Profile".localized, - style: .default - ) { _ in - self.isShow = false - Router.route(to: RouteMap.RestoreLogin.restoreList) - } - alertVC.modalPresentationStyle = .overFullScreen - alertVC.addAction(cancelAction) - alertVC.addAction(restoreAction) - - if markHide { - let hideAction = UIAlertAction( - title: "Hide Profile".localized, - style: .default - ) { _ in - self.isShow = false - do { - try WallectSecureEnclave.Store.hideInvalidKey(by: userId) - UserManager.shared.deleteLoginUID(userId) - } catch { - log - .error( - "[SecureEnclave] hide key for \(userId) failed. \(error.localizedDescription)" - ) - } - } - alertVC.addAction(hideAction) - } - Router.topNavigationController()?.present(alertVC, animated: true) - } - - return true - } - } catch { - return true - } - + // FIXME: private key migrate from device to device, it's destructive, this only for fix bugs, move to migrate return false + /* + do { + let model = try WallectSecureEnclave.Store.fetchModel(by: userId) + let list = try WallectSecureEnclave.Store.fetchAllModel(by: userId) + if model == nil && list.count > 0 { + DispatchQueue.main.async { + if self.isShow { + return + } + self.isShow = true + let alertVC = BetterAlertController(title: "Something__is__wrong::message".localized, message: "profile_key_invalid".localized, preferredStyle: .alert) + + let cancelAction = UIAlertAction(title: "action_cancel".localized, style: .cancel) { _ in + self.isShow = false + } + + let restoreAction = UIAlertAction(title: "Restore Profile".localized, style: .default) { _ in + self.isShow = false + Router.route(to: RouteMap.RestoreLogin.restoreList) + } + alertVC.modalPresentationStyle = .overFullScreen + alertVC.addAction(cancelAction) + alertVC.addAction(restoreAction) + + if markHide { + let hideAction = UIAlertAction(title: "Hide Profile".localized, style: .default) { _ in + self.isShow = false + do { + try WallectSecureEnclave.Store.hideInvalidKey(by: userId) + UserManager.shared.deleteLoginUID(userId) + }catch { + log.error("[SecureEnclave] hide key for \(userId) failed. \(error.localizedDescription)") + } + } + alertVC.addAction(hideAction) + } + Router.topNavigationController()?.present(alertVC, animated: true) + } + + return true + } + }catch { + return true + } + + return false + */ } } diff --git a/FRW/Services/Network/ErrorStatus.swift b/FRW/Services/Network/ErrorStatus.swift new file mode 100644 index 00000000..77a274d0 --- /dev/null +++ b/FRW/Services/Network/ErrorStatus.swift @@ -0,0 +1,23 @@ +// +// ErrorStatus.swift +// FRW +// +// Created by cat on 2024/9/10. +// + +import Foundation +import Moya + +extension Error { + func moyaCode() -> Int? { + guard let error = self as? MoyaError else { + return nil + } + switch error { + case let .statusCode(response): + return response.statusCode + default: + return nil + } + } +} diff --git a/FRW/Services/Network/FRW/FRWAPI+User.swift b/FRW/Services/Network/FRW/FRWAPI+User.swift index 55429f1e..c8e17a70 100644 --- a/FRW/Services/Network/FRW/FRWAPI+User.swift +++ b/FRW/Services/Network/FRW/FRWAPI+User.swift @@ -27,6 +27,8 @@ extension FRWAPI { case syncDevice(SyncInfo.DeviceInfo) case addSigned(SignedRequest) case updateDevice(String) + case checkimport(String) + case loginWithImport(RestoreImportRequest) } } @@ -73,15 +75,19 @@ extension FRWAPI.User: TargetType, AccessTokenAuthorizable { return "/v1/user/address/network" case .updateDevice: return "/v1/user/device" + case .checkimport: + return "/v3/checkimport" + case .loginWithImport: + return "/v3/import" } } var method: Moya.Method { switch self { - case .checkUsername, .userInfo, .userWallet, .search, .keys, .devices: + case .checkUsername, .userInfo, .userWallet, .search, .keys, .devices, .checkimport: return .get case .login, .register, .userAddress, .manualCheck, .crescendo, .syncDevice, .addSigned, - .previewnet, .updateDevice: + .previewnet, .updateDevice, .loginWithImport: return .post } } @@ -119,6 +125,10 @@ extension FRWAPI.User: TargetType, AccessTokenAuthorizable { return .requestCustomJSONEncodable(request, encoder: FRWAPI.jsonEncoder) case let .updateDevice(uuid): return .requestJSONEncodable(["device_id": uuid]) + case let .checkimport(key): + return .requestParameters(parameters: ["key": key], encoding: URLEncoding.queryString) + case let .loginWithImport(request): + return .requestCustomJSONEncodable(request, encoder: FRWAPI.jsonEncoder) } } diff --git a/FRW/Services/Network/FRW/Model/Request/UserRequests.swift b/FRW/Services/Network/FRW/Model/Request/UserRequests.swift index 47a0d945..c4e961d6 100644 --- a/FRW/Services/Network/FRW/Model/Request/UserRequests.swift +++ b/FRW/Services/Network/FRW/Model/Request/UserRequests.swift @@ -32,6 +32,16 @@ struct LoginRequest: Codable { let signature: String let accountKey: AccountKey let deviceInfo: DeviceInfoRequest + var address: String? = nil +} + +// MARK: - RestoreImportRequest + +struct RestoreImportRequest: Codable { + let username: String? + let accountKey: AccountKey + let deviceInfo: DeviceInfoRequest + let address: String } // MARK: - DeviceInfoRequest diff --git a/FRW/Services/Network/FlowNetwork.swift b/FRW/Services/Network/FlowNetwork.swift index 895213ea..44cfa660 100644 --- a/FRW/Services/Network/FlowNetwork.swift +++ b/FRW/Services/Network/FlowNetwork.swift @@ -10,6 +10,7 @@ import Combine import Flow import Foundation import Web3Core +import CryptoKit // MARK: - FlowNetwork @@ -355,7 +356,7 @@ extension FlowNetwork { static func queryStakeInfo() async throws -> [StakingNode]? { let address = Flow.Address(hex: WalletManager.shared.getPrimaryWalletAddress() ?? "") let response: [StakingNode] = try await fetch( - by: \.staking?.getDelegatesInfoArray, + by: \.staking?.getDelegatesInfoArrayV2, arguments: [.address(address)] ) debugPrint("FlowNetwork -> queryStakeInfo, response = \(response)") @@ -863,6 +864,7 @@ extension FlowNetwork { gas: UInt64 ) async throws -> Flow.ID { guard let amountParse = Decimal(string: amount) else { + EventTrack.Transaction.evmSigned(txId: "", success: false) throw WalletError.insufficientBalance } @@ -870,12 +872,20 @@ extension FlowNetwork { if let toValue = data?.cadenceValue { argData = toValue } - return try await sendTransaction(by: \.evm?.callContract, argumentList: [ - .string(toAddress), - .ufix64(amountParse), - argData, - .uint64(gas), - ]) + do { + let txid = try await sendTransaction(by: \.evm?.callContract, argumentList: [ + .string(toAddress), + .ufix64(amountParse), + argData, + .uint64(gas), + ]) + EventTrack.Transaction.evmSigned(txId: txid.hex, success: true) + return txid + }catch { + EventTrack.Transaction.evmSigned(txId: "", success: false) + throw error + } + } static func fetchEVMTransactionResult(txid: String) async throws -> EVMTransactionExecuted { @@ -1273,14 +1283,17 @@ extension FlowNetwork { cadenceStr: String, argumentList: [Flow.Cadence.FValue] ) async throws -> Flow.ID { + guard let fromAddress = WalletManager.shared.getPrimaryWalletAddress() else { + log.error("[Cadence] transaction invalid address on \(funcName)") + throw LLError.invalidAddress + } do { let fromKeyIndex = WalletManager.shared.keyIndex guard let fromAddress = WalletManager.shared.getPrimaryWalletAddress() else { log.error("[Cadence] transaction invalid address on \(funcName)") throw LLError.invalidAddress } - let tranId = try await flow - .sendTransaction(signers: WalletManager.shared.defaultSigners) { + let tranId = try await flow.sendTransaction(signers: WalletManager.shared.defaultSigners) { cadence { cadenceStr } @@ -1307,6 +1320,15 @@ extension FlowNetwork { } } log.info("[Flow] transaction Id:\(tranId.description)") + EventTrack.Transaction + .flowSigned( + cadence: hashCadence(cadence: cadenceStr.toHexEncodedString()), + txId: tranId.hex, + authorizers: [fromAddress], + proposer: fromAddress, + payer: RemoteConfigManager.shared.payer, + success: true + ) return tranId } catch { EventTrack.General @@ -1314,10 +1336,29 @@ extension FlowNetwork { error: error.localizedDescription, scriptId: funcName ) + EventTrack.Transaction + .flowSigned( + cadence: hashCadence(cadence: cadenceStr.toHexEncodedString()), + txId: "", + authorizers: [fromAddress], + proposer: fromAddress, + payer: RemoteConfigManager.shared.payer, + success: false + ) log.error("[Cadence] transaction error:\(error.localizedDescription)") throw error } } + + private static func hashCadence(cadence: String) -> String { + guard !cadence.isEmpty else { + return "" + } + let data = Data(cadence.utf8) + let hash = SHA256.hash(data: data) + let hashString = hash.compactMap { String(format: "%02x", $0) }.joined() + return hashString + } } // MARK: - Helper Category diff --git a/FRW/Services/Router/RouteMap.swift b/FRW/Services/Router/RouteMap.swift index ef787bcf..5e519c50 100644 --- a/FRW/Services/Router/RouteMap.swift +++ b/FRW/Services/Router/RouteMap.swift @@ -39,6 +39,12 @@ extension RouteMap { case createProfile(CreateProfileWaitingViewModel) case restoreErrorView(RestoreErrorView.RestoreError) + + case keystore + case importAddress(ImportAccountsViewModel) + case importUserName(ImportUserNameViewModel) + case privateKey + case seedPhrase } } @@ -76,6 +82,17 @@ extension RouteMap.RestoreLogin: RouterTarget { navi.push(content: CreateProfileWaitingView(vm)) case let .restoreErrorView(error): navi.push(content: RestoreErrorView(error: error)) + case .keystore: + navi.push(content: KeyStoreLoginView()) + case let .importAddress(viewModel): + let vc = PresentHostingController(rootView: ImportAccountsView(viewModel: viewModel)) + navi.present(vc, animated: true, completion: nil) + case let .importUserName(viewModel): + navi.push(content: ImportUserNameView(viewModel: viewModel)) + case .privateKey: + navi.push(content: PrivateKeyLoginView()) + case .seedPhrase: + navi.push(content: SeedPhraseLoginView()) } } } diff --git a/FRW/Services/Track/EventTrack+Dev.swift b/FRW/Services/Track/EventTrack+Dev.swift new file mode 100644 index 00000000..3a1f9944 --- /dev/null +++ b/FRW/Services/Track/EventTrack+Dev.swift @@ -0,0 +1,14 @@ +// +// EventTrack+Dev.swift +// FRW +// +// Created by cat on 12/9/24. +// + +import Foundation + +extension EventTrack.Dev { + static func restoreLogin(userId: String) { + EventTrack.send(event: EventTrack.Dev.restoreLogin, properties: ["user_id": userId]) + } +} diff --git a/FRW/Services/Track/EventTrackName.swift b/FRW/Services/Track/EventTrackName.swift index 76aaf54c..e94e08b3 100644 --- a/FRW/Services/Track/EventTrackName.swift +++ b/FRW/Services/Track/EventTrackName.swift @@ -79,3 +79,13 @@ extension EventTrack { } } } + +extension EventTrack { + enum Dev: String,EventTrackNameProtocol { + case restoreLogin = "restore_login" + + var name: String { + rawValue + } + } +} diff --git a/FRW/Tools/Helper+Extensions.swift b/FRW/Tools/Helper+Extensions.swift index d0990367..5755a153 100644 --- a/FRW/Tools/Helper+Extensions.swift +++ b/FRW/Tools/Helper+Extensions.swift @@ -9,13 +9,13 @@ import Foundation extension Optional { var isNotNullNorEmpty: Bool { - // An optional bool is a 3-state variable: nil, false, true, so this expression evaluates to true only if self is - return self?.isEmpty == false + // An optional bool is a 3-state variable: nil, false, true, so this expression evaluates to true only if self is + self?.isEmpty == false } } extension Optional { var isNotNullNorEmpty: Bool { - return self?.absoluteString.isEmpty == false + self?.absoluteString.isEmpty == false } } diff --git a/FRW/UI/Component/SectionItem.swift b/FRW/UI/Component/SectionItem.swift index 1c3bd944..1da6ad98 100644 --- a/FRW/UI/Component/SectionItem.swift +++ b/FRW/UI/Component/SectionItem.swift @@ -80,124 +80,10 @@ struct SingleInputView: View { } } -// MARK: - AnimatedSecureTextField - -public struct AnimatedSecureTextField: View { - // MARK: Lifecycle - - public init( - placeholder: String, - text: Binding, - textDidChange: @escaping (String) -> Void - ) { - self.placeholder = placeholder - _text = text - self.textDidChange = textDidChange - self.field = .password - } - - // MARK: Public - - public let placeholder: String - - public var body: some View { - ZStack(alignment: .leading) { - if text.isEmpty { - HStack { - Text(placeholder) - .font(.inter(size: 14)) - .foregroundStyle(Color.Theme.Text.black3) - Spacer() - } - // .padding(.horizontal, 16.0) - .frame(maxWidth: .infinity) - .layoutPriority(1) - .onTapGesture { - withAnimation(.easeInOut(duration: 0.3)) { - field = .password - } - } - } - - if isSecure { - SecureField("", text: $text) - .disableAutocorrection(true) - .foregroundStyle(Color.Theme.Text.black) - .autocapitalization(.none) - .frame(maxWidth: .infinity) - .focused($field, equals: .password) - .font(.inter(size: 14)) - .contentShape(Rectangle()) - .onChange(of: text) { text in - textDidChange(text) - } - - } else { - TextField("", text: $text) - .disableAutocorrection(true) - .foregroundStyle(Color.Theme.Text.black) - .autocapitalization(.none) - .frame(maxWidth: .infinity) - .focused($field, equals: .password) - .font(.inter(size: 14)) - .contentShape(Rectangle()) - .onChange(of: text) { text in - textDidChange(text) - } - } - - HStack { - Spacer() - - if !text.isEmpty { - Button { - isSecure.toggle() - } label: { - if isSecure { - Image(systemName: "eye") - .resizable() - .foregroundStyle(Color.Theme.Text.black) - .frame(width: 20, height: 12) - } else { - Image(systemName: "eye.slash") - .resizable() - .foregroundStyle(Color.Theme.Text.black) - .frame(width: 20, height: 12) - } - } - } - } - } - .padding(.horizontal, 20) - .frame(height: 64) - .background { - RoundedRectangle(cornerRadius: 16.0) - .foregroundColor(.Theme.Background.bg2) - } - } - - // MARK: Internal - - @State - var isSecure = false - @Binding - var text: String - - var textDidChange: (String) -> Void - - // MARK: Private - - private enum FocusedField: Int, Hashable { - case password - } - - @FocusState - private var field: FocusedField? -} - #Preview { TitleView(title: "Hello", isStar: false) - SingleInputView(content: .constant("abc")) { _ in - } + SingleInputView(content: .constant("abc"), onChange: { _ in + + }) } diff --git a/FRW/UI/Extension/String.swift b/FRW/UI/Extension/String.swift index 8552b137..ac482351 100644 --- a/FRW/UI/Extension/String.swift +++ b/FRW/UI/Extension/String.swift @@ -19,7 +19,8 @@ extension String { } guard let path = Bundle.main.path(forResource: "en", ofType: "lproj"), - let bundle = Bundle(path: path) else { + let bundle = Bundle(path: path) + else { return value } @@ -217,7 +218,8 @@ extension String { } guard let encodedString = trim() - .addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else { + .addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) + else { return nil } @@ -343,13 +345,12 @@ extension String { extension String { var toFlowScanAccountDetailURL: URL? { - var string = "https://flowscan.org/account/\(self)" + var string = "https://flowscan.io/account/\(self)" if LocalUserDefaults.shared.flowNetwork == .testnet { - string = "https://testnet.flowscan.org/account/\(self)" + string = "https://testnet.flowscan.io/account/\(self)" } else if LocalUserDefaults.shared.flowNetwork == .previewnet { - string = "https://previewnet.flowscan.org/account/\(self)" + string = "https://previewnet.flowscan.io/account/\(self)" } - return URL(string: string) } @@ -360,7 +361,6 @@ extension String { } else if LocalUserDefaults.shared.flowNetwork == .previewnet { string = "https://previewnet.flowscan.io/tx/\(self)" } - return URL(string: string) } } diff --git a/FRW/UI/Extension/TextView.swift b/FRW/UI/Extension/TextView.swift new file mode 100644 index 00000000..c7c414f0 --- /dev/null +++ b/FRW/UI/Extension/TextView.swift @@ -0,0 +1,21 @@ +// +// TextView.swift +// FRW +// +// Created by cat on 2024/8/19. +// + +import SwiftUI + +extension View { + func textEditorBackground(_ content: Color) -> some View { + if #available(iOS 16.0, *) { + return self + .scrollContentBackground(.hidden) + .background(content) + } else { + UITextView.appearance().backgroundColor = .clear + return background(content) + } + } +}