From 48078393f9ff5fb3efa7a97c07c653802a13789a Mon Sep 17 00:00:00 2001 From: IvanBelyakoff Date: Mon, 6 Mar 2023 16:26:46 +0300 Subject: [PATCH] feat: Update saved addresses DB to store ENS, isTest flag and chains (#3183) prefixes. Changed primary keys and API methods. Fixed tests and added new ones. Fixed saved addresses and transaction tests to use ':memory:' sqlite DB instead of a tmp file to speed up testing by hundred of times. Fixes #8599 --- appdatabase/migrations/bindata.go | 124 +++--- ...hains_ens_istest_to_saved_addresses.up.sql | 16 + appdatabase/migrationsprevnodecfg/bindata.go | 108 +++--- multiaccounts/settings/database.go | 8 - protocol/messenger_saved_address.go | 43 +- .../messenger_sync_saved_addresses_test.go | 99 +++-- protocol/protobuf/pairing.pb.go | 366 +++++++++--------- protocol/protobuf/pairing.proto | 5 +- services/ext/api.go | 12 +- services/wallet/api.go | 9 +- services/wallet/saved_addresses.go | 89 ++--- services/wallet/saved_addresses_test.go | 225 +++++++++-- services/wallet/transfer/transaction_test.go | 7 +- sqlite/sqlite.go | 4 +- 14 files changed, 681 insertions(+), 434 deletions(-) create mode 100644 appdatabase/migrations/sql/1677674090_add_chains_ens_istest_to_saved_addresses.up.sql diff --git a/appdatabase/migrations/bindata.go b/appdatabase/migrations/bindata.go index e738acf94..f37ec9157 100644 --- a/appdatabase/migrations/bindata.go +++ b/appdatabase/migrations/bindata.go @@ -49,6 +49,7 @@ // 1676951398_add_currency_format_cache.up.sql (291B) // 1676968196_keycards_add_clock_column.up.sql (73B) // 1676968197_add_fallback_rpc_to_networks.up.sql (112B) +// 1677674090_add_chains_ens_istest_to_saved_addresses.up.sql (638B) // doc.go (74B) package migrations @@ -133,7 +134,7 @@ func _1640111208_dummyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xf0, 0xae, 0x20, 0x6e, 0x75, 0xd1, 0x36, 0x14, 0xf2, 0x40, 0xe5, 0xd6, 0x7a, 0xc4, 0xa5, 0x72, 0xaa, 0xb5, 0x4d, 0x71, 0x97, 0xb8, 0xe8, 0x95, 0x22, 0x95, 0xa2, 0xac, 0xaf, 0x48, 0x58}} return a, nil } @@ -153,7 +154,7 @@ func _1642666031_add_removed_clock_to_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x4e, 0x38, 0x99, 0x7a, 0xc, 0x90, 0x13, 0xec, 0xfe, 0x2f, 0x55, 0xff, 0xb7, 0xb6, 0xaa, 0x96, 0xc6, 0x92, 0x79, 0xcc, 0xee, 0x4e, 0x99, 0x53, 0xfe, 0x1c, 0xbb, 0x32, 0x2, 0xa4, 0x27}} return a, nil } @@ -173,7 +174,7 @@ func _1643644541_gif_api_key_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x94, 0x28, 0xfb, 0x66, 0xd1, 0x7c, 0xb8, 0x89, 0xe2, 0xb4, 0x71, 0x65, 0x24, 0x57, 0x22, 0x95, 0x38, 0x97, 0x3, 0x9b, 0xc6, 0xa4, 0x41, 0x7b, 0xba, 0xf7, 0xdb, 0x70, 0xf7, 0x20, 0x3a}} return a, nil } @@ -193,7 +194,7 @@ func _1644188994_recent_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0xad, 0xaa, 0x30, 0xbf, 0x4, 0x7, 0xf8, 0xc3, 0x3, 0xb8, 0x97, 0x23, 0x2b, 0xbd, 0x1c, 0x60, 0x69, 0xb0, 0x42, 0x5e, 0x6b, 0xd, 0xa7, 0xa3, 0x6b, 0x2e, 0xdc, 0x70, 0x13, 0x72, 0x7}} return a, nil } @@ -213,7 +214,7 @@ func _1646659233_add_address_to_dapp_permisssionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0xb0, 0x35, 0xcc, 0x2e, 0x16, 0xe6, 0x15, 0x86, 0x2c, 0x37, 0x80, 0xae, 0xa3, 0xc5, 0x31, 0x78, 0x5, 0x9d, 0xcd, 0x7b, 0xeb, 0x5f, 0xf2, 0xb3, 0x74, 0x72, 0xdf, 0xcf, 0x88, 0xb, 0x40}} return a, nil } @@ -233,7 +234,7 @@ func _1646841105_add_emoji_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe6, 0x77, 0x29, 0x95, 0x18, 0x64, 0x82, 0x63, 0xe7, 0xaf, 0x6c, 0xa9, 0x15, 0x7d, 0x46, 0xa6, 0xbc, 0xdf, 0xa7, 0xd, 0x2b, 0xd2, 0x2d, 0x97, 0x4d, 0xa, 0x6b, 0xd, 0x6e, 0x90, 0x42, 0x5c}} return a, nil } @@ -253,7 +254,7 @@ func _1647278782_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa1, 0x1f, 0x3e, 0x61, 0x65, 0x8d, 0xff, 0xee, 0xde, 0xc5, 0x91, 0xd9, 0x5c, 0xb5, 0xe2, 0xf0, 0xb7, 0xe7, 0x5c, 0x5c, 0x16, 0x25, 0x89, 0xee, 0x78, 0x12, 0xea, 0x3e, 0x48, 0x41, 0xa6}} return a, nil } @@ -273,7 +274,7 @@ func _1647862838_reset_last_backupUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1647862838_reset_last_backup.up.sql", size: 37, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x21, 0xe3, 0xd5, 0xf6, 0x5f, 0xfe, 0x65, 0xfa, 0x1d, 0x88, 0xf8, 0x5f, 0x24, 0x71, 0x34, 0x68, 0x96, 0x2a, 0x60, 0x87, 0x15, 0x82, 0x4d, 0x8a, 0x59, 0x3d, 0x1f, 0xd8, 0x56, 0xd4, 0xfb, 0xda}} return a, nil } @@ -293,7 +294,7 @@ func _1647871652_add_settings_sync_clock_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1647871652_add_settings_sync_clock_table.up.sql", size: 1044, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd8, 0x58, 0xec, 0x85, 0x90, 0xfa, 0x30, 0x98, 0x98, 0x9a, 0xa6, 0xa8, 0x96, 0x2b, 0x38, 0x93, 0xf3, 0xae, 0x46, 0x74, 0xa4, 0x41, 0x62, 0x9b, 0x2, 0x86, 0xbf, 0xe5, 0x2a, 0xce, 0xe2, 0xc0}} return a, nil } @@ -313,7 +314,7 @@ func _1647880168_add_torrent_configUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1647880168_add_torrent_config.up.sql", size: 211, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0x92, 0x22, 0x37, 0x96, 0xf3, 0xb5, 0x5b, 0x27, 0xd0, 0x7d, 0x43, 0x5, 0x4e, 0x9d, 0xe2, 0x49, 0xbe, 0x86, 0x31, 0xa1, 0x89, 0xff, 0xd6, 0x51, 0xe0, 0x9c, 0xb, 0xda, 0xfc, 0xf2, 0x93}} return a, nil } @@ -333,7 +334,7 @@ func _1647882837_add_communities_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1647882837_add_communities_settings_table.up.sql", size: 206, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbd, 0x87, 0x78, 0x99, 0xd9, 0x5d, 0xbd, 0xf7, 0x57, 0x9c, 0xca, 0x97, 0xbd, 0xb3, 0xe9, 0xb5, 0x89, 0x31, 0x3f, 0xf6, 0x5c, 0x13, 0xb, 0xc3, 0x54, 0x93, 0x18, 0x40, 0x7, 0x82, 0xfe, 0x7e}} return a, nil } @@ -353,7 +354,7 @@ func _1647956635_add_waku_messages_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1647956635_add_waku_messages_table.up.sql", size: 266, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0xe, 0xe1, 0xdc, 0xda, 0x2e, 0x89, 0x8d, 0xdc, 0x2a, 0x1c, 0x13, 0xa1, 0xfc, 0xfe, 0xf, 0xb2, 0xb9, 0x85, 0xc8, 0x45, 0xd6, 0xd1, 0x7, 0x5c, 0xa3, 0x8, 0x47, 0x44, 0x6d, 0x96, 0xe0}} return a, nil } @@ -373,7 +374,7 @@ func _1648554928_network_testUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1648554928_network_test.up.sql", size: 132, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0xc5, 0x7f, 0x87, 0xf3, 0x2c, 0xf7, 0xbb, 0xd3, 0x3a, 0x4e, 0x76, 0x88, 0xca, 0xaf, 0x73, 0xce, 0x8f, 0xa1, 0xf6, 0x3d, 0x4d, 0xed, 0x6f, 0x49, 0xf2, 0xfe, 0x56, 0x2a, 0x60, 0x68, 0xca}} return a, nil } @@ -393,7 +394,7 @@ func _1649174829_add_visitble_tokenUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1649174829_add_visitble_token.up.sql", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x22, 0xc0, 0x2b, 0x3f, 0x4f, 0x3d, 0x5e, 0x4c, 0x68, 0x7c, 0xd0, 0x15, 0x36, 0x9f, 0xec, 0xa1, 0x2a, 0x7b, 0xb4, 0xe3, 0xc6, 0xc9, 0xb4, 0x81, 0x50, 0x4a, 0x11, 0x3b, 0x35, 0x7, 0xcf}} return a, nil } @@ -413,7 +414,7 @@ func _1649882262_add_derived_from_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1649882262_add_derived_from_accounts.up.sql", size: 110, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0xb9, 0x44, 0x4d, 0x85, 0x8d, 0x7f, 0xb4, 0xae, 0x4f, 0x5c, 0x66, 0x64, 0xb6, 0xe2, 0xe, 0x3d, 0xad, 0x9d, 0x8, 0x4f, 0xab, 0x6e, 0xa8, 0x7d, 0x76, 0x3, 0xad, 0x96, 0x1, 0xee, 0x5c}} return a, nil } @@ -433,7 +434,7 @@ func _1650612625_add_community_message_archive_hashes_tableUpSql() (*asset, erro return nil, err } - info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1650612625_add_community_message_archive_hashes_table.up.sql", size: 130, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x48, 0x31, 0xb3, 0x75, 0x23, 0xe2, 0x45, 0xe, 0x47, 0x1b, 0x35, 0xa5, 0x6e, 0x83, 0x4e, 0x64, 0x7d, 0xd7, 0xa2, 0xda, 0xe9, 0x53, 0xf1, 0x16, 0x86, 0x2c, 0x57, 0xad, 0xfa, 0xca, 0x39, 0xde}} return a, nil } @@ -453,7 +454,7 @@ func _1650616788_add_communities_archives_info_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1650616788_add_communities_archives_info_table.up.sql", size: 208, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x4f, 0x80, 0x45, 0xb9, 0xd9, 0x15, 0xe2, 0x78, 0xd0, 0xcb, 0x71, 0xc1, 0x1b, 0xb7, 0x1b, 0x1b, 0x97, 0xfe, 0x47, 0x53, 0x3c, 0x62, 0xbc, 0xdd, 0x3a, 0x94, 0x1a, 0xc, 0x48, 0x76, 0xe}} return a, nil } @@ -473,7 +474,7 @@ func _1652715604_add_clock_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1652715604_add_clock_accounts.up.sql", size: 62, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb6, 0xd9, 0x8d, 0x73, 0xc9, 0xef, 0xfa, 0xb1, 0x4b, 0xa5, 0xf3, 0x5, 0x19, 0x26, 0x46, 0xf8, 0x47, 0x93, 0xdb, 0xac, 0x2, 0xef, 0xf9, 0x71, 0x56, 0x83, 0xe6, 0x2d, 0xb0, 0xd7, 0x83, 0x5c}} return a, nil } @@ -493,7 +494,7 @@ func _1653037334_add_notifications_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1653037334_add_notifications_settings_table.up.sql", size: 1276, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4b, 0xc4, 0x65, 0xac, 0xa, 0xf2, 0xef, 0xb6, 0x39, 0x3c, 0xc5, 0xb1, 0xb2, 0x9c, 0x86, 0x58, 0xe0, 0x38, 0xcb, 0x57, 0x3c, 0x76, 0x73, 0x87, 0x79, 0x4e, 0xf6, 0xed, 0xb0, 0x8e, 0x9e, 0xa}} return a, nil } @@ -513,7 +514,7 @@ func _1654702119_add_mutual_contact_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1654702119_add_mutual_contact_settings.up.sql", size: 78, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0x66, 0x67, 0x50, 0xfe, 0xd7, 0xe3, 0x29, 0x8b, 0xff, 0x9d, 0x5a, 0x87, 0xa7, 0x99, 0x6e, 0xd6, 0xcd, 0x2e, 0xbb, 0x17, 0xdf, 0x7f, 0xf7, 0xa3, 0xfa, 0x32, 0x7c, 0x2d, 0x92, 0xc8, 0x74}} return a, nil } @@ -533,7 +534,7 @@ func _1655375270_add_clock_field_to_communities_settings_tableUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1655375270_add_clock_field_to_communities_settings_table.up.sql", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x19, 0xc5, 0xc0, 0xf9, 0x84, 0x53, 0xdf, 0x83, 0xcf, 0xb6, 0x40, 0x6d, 0xf5, 0xdc, 0x77, 0x37, 0xb7, 0xe3, 0xa, 0x75, 0xe7, 0x6, 0x11, 0xca, 0x2b, 0x51, 0x92, 0xdd, 0x7d, 0xdb, 0xc3, 0xf5}} return a, nil } @@ -553,7 +554,7 @@ func _1655385721_drop_networks_configUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1655385721_drop_networks_config.up.sql", size: 27, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfc, 0xa7, 0x20, 0xbb, 0x67, 0x21, 0xe, 0xc6, 0xc8, 0x21, 0x74, 0xe0, 0xce, 0xc8, 0xe2, 0x2, 0xb4, 0xea, 0xf0, 0xe5, 0xc4, 0x4d, 0xdd, 0xd4, 0x52, 0x31, 0xa9, 0x3d, 0xcd, 0xd8, 0x9b, 0xab}} return a, nil } @@ -573,7 +574,7 @@ func _1655385724_networks_chaincolor_shortnameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1655385724_networks_chainColor_shortName.up.sql", size: 220, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd9, 0xe7, 0x84, 0xbb, 0x5f, 0xd2, 0x2c, 0x42, 0x88, 0x62, 0x52, 0xb6, 0x58, 0x31, 0xac, 0xc, 0x96, 0x2b, 0x1b, 0xe5, 0x4e, 0x9a, 0x3a, 0xf6, 0xf6, 0xfc, 0xa9, 0x1a, 0x35, 0x62, 0x28, 0x88}} return a, nil } @@ -593,7 +594,7 @@ func _1655456688_add_deleted_at_field_to_bookmarks_tableUpSql() (*asset, error) return nil, err } - info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1655456688_add_deleted_at_field_to_bookmarks_table.up.sql", size: 69, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe7, 0x9a, 0xbd, 0x9a, 0xc9, 0xf, 0xdf, 0x90, 0x0, 0x5d, 0xea, 0x6e, 0x7d, 0x51, 0x95, 0xcd, 0x90, 0xd3, 0x1a, 0x36, 0x6c, 0xf4, 0xbd, 0xa7, 0x6b, 0xbf, 0xe5, 0xdb, 0xa3, 0x88, 0xe3, 0x50}} return a, nil } @@ -613,7 +614,7 @@ func _1655462032_create_bookmarks_deleted_at_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1655462032_create_bookmarks_deleted_at_index.up.sql", size: 81, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x8e, 0x20, 0x6b, 0x14, 0x9e, 0xcd, 0x97, 0xd3, 0xfe, 0x62, 0x3, 0x26, 0x59, 0x1, 0x6c, 0x99, 0xef, 0x6d, 0x21, 0xd4, 0xb5, 0xa3, 0xf4, 0x39, 0x40, 0x54, 0x6, 0xd, 0x60, 0x13, 0x38}} return a, nil } @@ -633,7 +634,7 @@ func _1657617291_add_multi_transactions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1657617291_add_multi_transactions_table.up.sql", size: 412, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x86, 0xb0, 0x4e, 0x8c, 0x4, 0x82, 0xb4, 0x43, 0xaa, 0xd0, 0x16, 0xdd, 0xcb, 0x88, 0x81, 0xac, 0x4, 0x34, 0x1a, 0x8f, 0x2e, 0xc5, 0x69, 0xb, 0xf0, 0x17, 0xf7, 0xe3, 0x9, 0xe, 0x54, 0xe0}} return a, nil } @@ -653,7 +654,7 @@ func _1660134042_add_social_links_settings_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1660134042_add_social_links_settings_table.up.sql", size: 334, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x73, 0xb6, 0xe7, 0x3f, 0xaa, 0x39, 0x9a, 0x56, 0x56, 0x31, 0xf1, 0x8e, 0x26, 0x23, 0x1, 0xe4, 0xfa, 0x98, 0xfe, 0x78, 0x87, 0x20, 0xcb, 0x52, 0xf4, 0x38, 0x7f, 0xc4, 0x1c, 0x4, 0x22}} return a, nil } @@ -673,7 +674,7 @@ func _1660134060_settings_bioUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1660134060_settings_bio.up.sql", size: 91, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x46, 0x25, 0xa0, 0xa6, 0x47, 0xff, 0xbc, 0x2a, 0x0, 0xff, 0x59, 0x4b, 0xb0, 0xc9, 0x4e, 0x15, 0xe4, 0xd9, 0xda, 0xeb, 0xfe, 0x55, 0x98, 0xc3, 0x9d, 0x96, 0xe7, 0xf, 0xd1, 0x5c, 0x93, 0x73}} return a, nil } @@ -693,7 +694,7 @@ func _1660134070_add_wakuv2_storeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1660134070_add_wakuv2_store.up.sql", size: 269, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xe6, 0xc3, 0x9, 0xef, 0xdc, 0xae, 0x49, 0x30, 0x78, 0x54, 0xd6, 0xdb, 0xbf, 0xc0, 0x8e, 0x25, 0x8f, 0xfc, 0x67, 0x80, 0x39, 0x37, 0xd4, 0x86, 0xc1, 0x85, 0xc8, 0x99, 0xc4, 0x59, 0xd4}} return a, nil } @@ -713,7 +714,7 @@ func _1660134072_waku2_store_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1660134072_waku2_store_messages.up.sql", size: 497, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xeb, 0xb4, 0xa0, 0xa1, 0x2b, 0xcb, 0x4c, 0x3c, 0xc6, 0xd0, 0xe8, 0x96, 0xe3, 0x96, 0xf1, 0x4f, 0x1f, 0xe0, 0xe7, 0x1f, 0x85, 0xa3, 0xe, 0xf7, 0x52, 0x56, 0x63, 0x2b, 0xb0, 0x87, 0x7b}} return a, nil } @@ -733,7 +734,7 @@ func _1662365868_add_key_uid_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1662365868_add_key_uid_accounts.up.sql", size: 68, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc6, 0xd8, 0x2f, 0x2f, 0x3b, 0xa8, 0xbd, 0x6d, 0xf6, 0x87, 0x7e, 0xd2, 0xf1, 0xa2, 0xf7, 0x81, 0x6a, 0x23, 0x10, 0xbc, 0xbf, 0x5b, 0xe7, 0x2b, 0x9c, 0xa9, 0x8a, 0x18, 0xbb, 0xd0, 0x86, 0x91}} return a, nil } @@ -753,7 +754,7 @@ func _1662447680_add_keypairs_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1662447680_add_keypairs_table.up.sql", size: 218, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdc, 0x25, 0xa9, 0xc7, 0x63, 0x27, 0x97, 0x35, 0x5f, 0x6b, 0xab, 0x26, 0xcb, 0xf9, 0xbd, 0x5e, 0xac, 0x3, 0xa0, 0x5e, 0xb9, 0x71, 0xa3, 0x1f, 0xb3, 0x4f, 0x7f, 0x79, 0x28, 0x48, 0xbe, 0xc}} return a, nil } @@ -773,7 +774,7 @@ func _1662460056_move_favourites_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1662460056_move_favourites_to_saved_addresses.up.sql", size: 233, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xa2, 0x8c, 0xa3, 0xec, 0xad, 0xdf, 0xc3, 0x48, 0x5, 0x9b, 0x50, 0x25, 0x59, 0xae, 0x7d, 0xee, 0x58, 0xd2, 0x41, 0x27, 0xf2, 0x22, 0x2e, 0x9a, 0xb9, 0x4a, 0xcc, 0x38, 0x6e, 0x3a, 0xb2}} return a, nil } @@ -793,7 +794,7 @@ func _1662738097_add_base_fee_transactionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1662738097_add_base_fee_transaction.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6b, 0xfb, 0x10, 0xae, 0xfc, 0x77, 0x70, 0x98, 0x6f, 0xec, 0xaa, 0xcd, 0x7, 0xc7, 0x74, 0x23, 0xc, 0xd5, 0x1e, 0x82, 0xdd, 0xfe, 0xff, 0x3b, 0xd2, 0x49, 0x10, 0x5b, 0x30, 0xc, 0x2d, 0xb0}} return a, nil } @@ -813,7 +814,7 @@ func _1662972194_add_keypairs_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1662972194_add_keypairs_table.up.sql", size: 345, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x76, 0xf2, 0x86, 0xe1, 0x7e, 0xe9, 0x47, 0x32, 0x48, 0xd5, 0x6b, 0xe5, 0xd, 0xab, 0xb7, 0xf1, 0xd4, 0xf1, 0xad, 0x38, 0xa6, 0x11, 0xe7, 0xce, 0x5c, 0x11, 0x11, 0xf, 0x47, 0xb2, 0x4}} return a, nil } @@ -833,7 +834,7 @@ func _1664392661_add_third_party_id_to_waku_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1664392661_add_third_party_id_to_waku_messages.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x67, 0x66, 0x9e, 0x66, 0x74, 0xce, 0x1c, 0xb, 0x1b, 0x9d, 0xd5, 0xfc, 0x65, 0xe, 0x83, 0x90, 0x4c, 0x61, 0x4e, 0x6b, 0xe7, 0x86, 0xbe, 0x36, 0x4f, 0x91, 0x36, 0x4, 0x47, 0x7b, 0x82}} return a, nil } @@ -853,7 +854,7 @@ func _1664783660_add_sync_info_to_saved_addressesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1664783660_add_sync_info_to_saved_addresses.up.sql", size: 388, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x67, 0x7c, 0x3a, 0x95, 0x4e, 0x55, 0xb2, 0xbd, 0xb4, 0x18, 0x93, 0xc1, 0xcf, 0x9f, 0x12, 0xbb, 0x49, 0x8a, 0x2a, 0x6a, 0x2a, 0x7f, 0xad, 0x44, 0xc3, 0xf, 0x3a, 0x79, 0x18, 0xb9, 0x4c, 0x64}} return a, nil } @@ -873,7 +874,7 @@ func _1668109917_wakunodesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1668109917_wakunodes.up.sql", size: 99, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x29, 0xaa, 0x9e, 0x2, 0x66, 0x85, 0x69, 0xa8, 0xd9, 0xe2, 0x4b, 0x8d, 0x2a, 0x9c, 0xdf, 0xd2, 0xef, 0x64, 0x58, 0xe3, 0xa6, 0xe7, 0xc1, 0xd1, 0xc8, 0x9c, 0xc0, 0x2c, 0x1, 0xa8, 0x7b, 0x81}} return a, nil } @@ -893,7 +894,7 @@ func _1670249678_display_name_to_settings_sync_clock_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1670249678_display_name_to_settings_sync_clock_table.up.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0x18, 0xdc, 0xc4, 0x1f, 0x79, 0x22, 0x16, 0x4d, 0xdf, 0x6c, 0x66, 0xd5, 0xa4, 0x88, 0x5d, 0x5, 0x37, 0xa7, 0x41, 0x5, 0x50, 0xae, 0x12, 0xfa, 0x7e, 0x89, 0x24, 0x5c, 0xae, 0x30, 0xfc}} return a, nil } @@ -913,7 +914,7 @@ func _1670836810_add_imported_flag_to_community_archive_hashesUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1670836810_add_imported_flag_to_community_archive_hashes.up.sql", size: 144, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6f, 0xf, 0xf0, 0xbd, 0xfe, 0x63, 0x25, 0x8f, 0x5e, 0x46, 0x4b, 0x45, 0x31, 0x8b, 0x3e, 0xd8, 0x6b, 0x5d, 0x9d, 0x6d, 0x10, 0x9a, 0x87, 0x4b, 0x18, 0xc6, 0x39, 0x81, 0x6e, 0xe4, 0x75, 0xfb}} return a, nil } @@ -933,7 +934,7 @@ func _1671438731_add_magnetlink_uri_to_communities_archive_infoUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1671438731_add_magnetlink_uri_to_communities_archive_info.up.sql", size: 86, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xda, 0x8b, 0x4b, 0xd6, 0xd8, 0xe2, 0x3d, 0xf7, 0x6b, 0xcd, 0x1e, 0x70, 0x9, 0x2e, 0x35, 0x4, 0x61, 0xc3, 0xb5, 0x9d, 0xc5, 0x27, 0x21, 0xa, 0x5a, 0xd6, 0x3e, 0xa6, 0x24, 0xa2, 0x12, 0xdf}} return a, nil } @@ -953,7 +954,7 @@ func _1672933930_switcher_cardUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1672933930_switcher_card.up.sql", size: 162, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x39, 0xba, 0xdc, 0xbb, 0x40, 0x4, 0xf2, 0x10, 0xdf, 0xb4, 0xd2, 0x80, 0x8a, 0x74, 0x4d, 0xf6, 0xbc, 0x50, 0x7, 0xd, 0x22, 0x7f, 0xc4, 0xaf, 0xaa, 0xde, 0xdc, 0x71, 0xe9, 0x42, 0x98, 0x36}} return a, nil } @@ -973,7 +974,7 @@ func _1674056187_add_price_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1674056187_add_price_cache.up.sql", size: 255, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x79, 0x6a, 0x9b, 0x28, 0xd1, 0x22, 0xf0, 0x84, 0x76, 0x40, 0x39, 0x49, 0x15, 0x5d, 0xaa, 0xfd, 0x11, 0xff, 0x13, 0x27, 0x42, 0x12, 0xfa, 0x82, 0xe6, 0x7a, 0xf0, 0x5e, 0x1f, 0xe3, 0xba}} return a, nil } @@ -993,7 +994,7 @@ func _1674136690_ens_usernamesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1674136690_ens_usernames.up.sql", size: 98, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x7a, 0xf3, 0xa8, 0x88, 0x99, 0xd6, 0x9c, 0x69, 0x48, 0x3c, 0x10, 0xda, 0x72, 0xdc, 0x14, 0xd, 0x6e, 0x8c, 0x82, 0x92, 0x2d, 0x2c, 0xee, 0x4c, 0x70, 0xa4, 0xdc, 0x5c, 0x5, 0x2, 0xc3}} return a, nil } @@ -1013,7 +1014,7 @@ func _1674232431_add_balance_historyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1674232431_add_balance_history.up.sql", size: 698, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0xb5, 0x18, 0xca, 0x4a, 0x93, 0xbb, 0x6f, 0xa4, 0xee, 0xe4, 0x3e, 0xff, 0x6a, 0x4b, 0xe2, 0xe1, 0x61, 0x28, 0xee, 0xc5, 0x26, 0x57, 0x61, 0x5e, 0x6d, 0x44, 0x1e, 0x85, 0x43, 0x70, 0xa2}} return a, nil } @@ -1033,7 +1034,7 @@ func _1676368933_keypairs_to_keycardsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1676368933_keypairs_to_keycards.up.sql", size: 639, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x93, 0x27, 0x2, 0xf0, 0x37, 0x81, 0x65, 0xa4, 0xb3, 0x5b, 0x60, 0x36, 0x95, 0xfc, 0x81, 0xf0, 0x3b, 0x7c, 0xc3, 0x2c, 0x85, 0xbd, 0x38, 0x46, 0xa4, 0x95, 0x4a, 0x6, 0x3e, 0x74, 0xd5}} return a, nil } @@ -1053,7 +1054,7 @@ func _1676951398_add_currency_format_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "1676951398_add_currency_format_cache.up.sql", size: 291, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xa3, 0x76, 0x35, 0xca, 0xf, 0xe8, 0xdf, 0xd9, 0x61, 0xf9, 0xed, 0xfc, 0x6d, 0xf5, 0xe, 0x11, 0x88, 0xbd, 0x14, 0x92, 0xc6, 0x57, 0x53, 0xe, 0xcd, 0x52, 0xf4, 0xa9, 0xb1, 0xdd, 0xfd}} return a, nil } @@ -1073,7 +1074,7 @@ func _1676968196_keycards_add_clock_columnUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0664), modTime: time.Unix(1677517539, 0)} + info := bindataFileInfo{name: "1676968196_keycards_add_clock_column.up.sql", size: 73, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4c, 0xf, 0x1c, 0x28, 0x41, 0x57, 0x57, 0x6c, 0xe, 0x75, 0x6b, 0x75, 0x12, 0x0, 0x18, 0x1e, 0x88, 0x1e, 0x45, 0xe0, 0x32, 0xb9, 0xd4, 0xd9, 0x2e, 0xc8, 0xb, 0x80, 0x6, 0x51, 0x3d, 0x28}} return a, nil } @@ -1093,11 +1094,31 @@ func _1676968197_add_fallback_rpc_to_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677517540, 0)} + info := bindataFileInfo{name: "1676968197_add_fallback_rpc_to_networks.up.sql", size: 112, mode: os.FileMode(0664), modTime: time.Unix(1677673850, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6a, 0xc6, 0x45, 0xfa, 0x62, 0x84, 0x74, 0x6d, 0x7c, 0xd7, 0x1d, 0x79, 0xb6, 0x38, 0x43, 0xa8, 0x8, 0x6b, 0x75, 0x3d, 0x9, 0x2, 0xc5, 0x9f, 0xbb, 0x45, 0x56, 0x4c, 0x4e, 0x17, 0x89}} return a, nil } +var __1677674090_add_chains_ens_istest_to_saved_addressesUpSql = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x94\x92\xc1\x6e\xf2\x30\x10\x84\xef\x7e\x8a\x11\x27\x90\x72\xf8\xef\x9c\x0c\x6c\x84\xf5\x9b\x18\x39\x4b\x81\x93\x65\x11\x57\xa0\x96\xa4\x8a\x03\x7d\xfd\x2a\x14\x52\xd1\x50\xa9\xbd\xee\xcc\x8e\xbe\x1d\xed\xd4\x92\x64\x02\xcb\x89\x26\xa8\x14\x99\x61\xd0\x46\xe5\x9c\x23\xfa\x73\x28\x9c\x2f\x8a\x3a\xc4\x18\xa2\x2b\xc3\x3b\x86\x02\xb8\x4e\xf0\x24\xed\x74\x2e\xed\x65\x25\x5b\x69\x9d\x08\xa0\xf4\xc7\x00\xa6\x0d\xdf\x4d\x9f\xfd\xb9\x3a\xd5\x87\x26\x60\x62\x8c\x26\x99\x75\x2a\x66\x94\xca\x95\x66\xa4\x52\xe7\xd4\x7a\xeb\x70\xac\xce\xa1\xf8\x85\xf3\xf4\x56\xf8\x26\xb8\xdd\x6b\xb5\x7b\x81\xca\xb8\x6f\xfd\xd7\xda\x76\x7b\x7f\x28\x5d\xdc\x57\x75\xe3\x5a\xbc\x2f\xf0\x9b\x6d\x30\x68\x7d\xa1\x8c\x17\xfd\x07\xf9\x10\x5d\x13\x62\xd3\x71\xf5\x70\x96\x56\x2d\xa4\xdd\xe2\x3f\x6d\x31\xbc\x76\x94\x74\xa9\xc9\x2d\x60\x24\x46\x58\x2b\x9e\x9b\x15\xc3\x9a\xb5\x9a\x8d\x85\x50\x59\x4e\x96\xdb\x1b\xcc\xe3\xd6\xbb\xb8\xcf\xa8\xae\xcf\xe4\x56\x57\x72\xd7\xc6\x48\x00\xc8\x49\xd3\x94\xf1\xc7\x55\xa4\xd6\x2c\xbe\x43\x8c\xc5\xcc\x9a\xe5\xf5\x49\x7a\x9a\xd4\x4c\xf6\xb1\x78\xa1\xb7\x94\xc9\x05\xa1\x7f\xdb\x58\x7c\x04\x00\x00\xff\xff\x4b\x7d\x7a\x1a\x7e\x02\x00\x00") + +func _1677674090_add_chains_ens_istest_to_saved_addressesUpSqlBytes() ([]byte, error) { + return bindataRead( + __1677674090_add_chains_ens_istest_to_saved_addressesUpSql, + "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", + ) +} + +func _1677674090_add_chains_ens_istest_to_saved_addressesUpSql() (*asset, error) { + bytes, err := _1677674090_add_chains_ens_istest_to_saved_addressesUpSqlBytes() + if err != nil { + return nil, err + } + + info := bindataFileInfo{name: "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql", size: 638, mode: os.FileMode(0664), modTime: time.Unix(1677674113, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0x2d, 0xa4, 0x1b, 0xf6, 0x6a, 0x13, 0x7b, 0xe, 0x59, 0xcd, 0xe2, 0x4e, 0x81, 0x99, 0xc4, 0x33, 0x84, 0xde, 0x66, 0xca, 0xac, 0x2f, 0x5, 0x90, 0xac, 0xfd, 0x4e, 0xfc, 0x55, 0x44, 0xe5}} + return a, nil +} + var _docGo = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\x2c\xc9\xb1\x0d\xc4\x20\x0c\x05\xd0\x9e\x29\xfe\x02\xd8\xfd\x6d\xe3\x4b\xac\x2f\x44\x82\x09\x78\x7f\xa5\x49\xfd\xa6\x1d\xdd\xe8\xd8\xcf\x55\x8a\x2a\xe3\x47\x1f\xbe\x2c\x1d\x8c\xfa\x6f\xe3\xb4\x34\xd4\xd9\x89\xbb\x71\x59\xb6\x18\x1b\x35\x20\xa2\x9f\x0a\x03\xa2\xe5\x0d\x00\x00\xff\xff\x60\xcd\x06\xbe\x4a\x00\x00\x00") func docGoBytes() ([]byte, error) { @@ -1113,7 +1134,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677517511, 0)} + info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0664), modTime: time.Unix(1677556450, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}} return a, nil } @@ -1307,6 +1328,8 @@ var _bindata = map[string]func() (*asset, error){ "1676968197_add_fallback_rpc_to_networks.up.sql": _1676968197_add_fallback_rpc_to_networksUpSql, + "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": _1677674090_add_chains_ens_istest_to_saved_addressesUpSql, + "doc.go": docGo, } @@ -1400,6 +1423,7 @@ var _bintree = &bintree{nil, map[string]*bintree{ "1676951398_add_currency_format_cache.up.sql": &bintree{_1676951398_add_currency_format_cacheUpSql, map[string]*bintree{}}, "1676968196_keycards_add_clock_column.up.sql": &bintree{_1676968196_keycards_add_clock_columnUpSql, map[string]*bintree{}}, "1676968197_add_fallback_rpc_to_networks.up.sql": &bintree{_1676968197_add_fallback_rpc_to_networksUpSql, map[string]*bintree{}}, + "1677674090_add_chains_ens_istest_to_saved_addresses.up.sql": &bintree{_1677674090_add_chains_ens_istest_to_saved_addressesUpSql, map[string]*bintree{}}, "doc.go": &bintree{docGo, map[string]*bintree{}}, }} diff --git a/appdatabase/migrations/sql/1677674090_add_chains_ens_istest_to_saved_addresses.up.sql b/appdatabase/migrations/sql/1677674090_add_chains_ens_istest_to_saved_addresses.up.sql new file mode 100644 index 000000000..aa653ab04 --- /dev/null +++ b/appdatabase/migrations/sql/1677674090_add_chains_ens_istest_to_saved_addresses.up.sql @@ -0,0 +1,16 @@ +CREATE TABLE IF NOT EXISTS saved_addresses_new ( + address VARCHAR NOT NULL, + name TEXT NOT NULL, + favourite BOOLEAN NOT NULL DEFAULT FALSE, + removed BOOLEAN NOT NULL DEFAULT FALSE, + update_clock INT NOT NULL DEFAULT 0, + chain_short_names VARCHAR DEFAULT "", + ens_name VARCHAR DEFAULT "", + is_test BOOLEAN DEFAULT FALSE, + PRIMARY KEY (address, ens_name, is_test) +) WITHOUT ROWID; + +INSERT INTO saved_addresses_new (address, name, favourite, removed, update_clock) + SELECT address, name, favourite, removed, update_clock FROM saved_addresses; +DROP TABLE saved_addresses; +ALTER TABLE saved_addresses_new RENAME TO saved_addresses; diff --git a/appdatabase/migrationsprevnodecfg/bindata.go b/appdatabase/migrationsprevnodecfg/bindata.go index a01bf7fc9..79bbac1f8 100644 --- a/appdatabase/migrationsprevnodecfg/bindata.go +++ b/appdatabase/migrationsprevnodecfg/bindata.go @@ -137,7 +137,7 @@ func _0001_appDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0x25, 0xa0, 0xf8, 0x7d, 0x2d, 0xd, 0xcf, 0x18, 0xe4, 0x73, 0xc3, 0x95, 0xf5, 0x24, 0x20, 0xa9, 0xe6, 0x9e, 0x1d, 0x93, 0xe5, 0xc5, 0xad, 0x93, 0x8f, 0x5e, 0x40, 0xb5, 0x30, 0xaa, 0x25}} return a, nil } @@ -157,7 +157,7 @@ func _0001_appUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x3a, 0xa7, 0xf2, 0x8f, 0xfa, 0x82, 0x7c, 0xc5, 0x49, 0xac, 0xac, 0xf, 0xc, 0x77, 0xe2, 0xba, 0xe8, 0x4d, 0xe, 0x6f, 0x5d, 0x2c, 0x2c, 0x18, 0x80, 0xc2, 0x1d, 0xe, 0x25, 0xe, 0x18}} return a, nil } @@ -177,7 +177,7 @@ func _0002_tokensDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x31, 0x2, 0xcc, 0x2f, 0x38, 0x90, 0xf7, 0x58, 0x37, 0x47, 0xf4, 0x18, 0xf7, 0x72, 0x74, 0x67, 0x14, 0x7e, 0xf3, 0xb1, 0xd6, 0x5f, 0xb0, 0xd5, 0xe7, 0x91, 0xf4, 0x26, 0x77, 0x8e, 0x68}} return a, nil } @@ -197,7 +197,7 @@ func _0002_tokensUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xd6, 0xde, 0xd3, 0x7b, 0xee, 0x92, 0x11, 0x38, 0xa4, 0xeb, 0x84, 0xca, 0xcb, 0x37, 0x75, 0x5, 0x77, 0x7f, 0x14, 0x39, 0xee, 0xa1, 0x8b, 0xd4, 0x5c, 0x6e, 0x55, 0x6, 0x50, 0x16, 0xd4}} return a, nil } @@ -217,7 +217,7 @@ func _0003_settingsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xa6, 0xf5, 0xc0, 0x60, 0x64, 0x77, 0xe2, 0xe7, 0x3c, 0x9b, 0xb1, 0x52, 0xa9, 0x95, 0x16, 0xf8, 0x60, 0x2f, 0xa5, 0xeb, 0x46, 0xb9, 0xb9, 0x8f, 0x4c, 0xf4, 0xfd, 0xbb, 0xe7, 0xe5, 0xe5}} return a, nil } @@ -237,7 +237,7 @@ func _0003_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x35, 0x0, 0xeb, 0xe2, 0x33, 0x68, 0xb9, 0xf4, 0xf6, 0x8e, 0x9e, 0x10, 0xe9, 0x58, 0x68, 0x28, 0xb, 0xcd, 0xec, 0x74, 0x71, 0xa7, 0x9a, 0x5a, 0x77, 0x59, 0xb1, 0x13, 0x1c, 0xa1, 0x5b}} return a, nil } @@ -257,7 +257,7 @@ func _0004_pending_stickersDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -277,7 +277,7 @@ func _0004_pending_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xed, 0x25, 0xdf, 0x75, 0x2, 0x6c, 0xf0, 0xa2, 0xa8, 0x37, 0x62, 0x65, 0xad, 0xfd, 0x98, 0xa0, 0x9d, 0x63, 0x94, 0xdf, 0x6b, 0x46, 0xe0, 0x68, 0xec, 0x9c, 0x7f, 0x77, 0xdd, 0xb3, 0x6}} return a, nil } @@ -297,7 +297,7 @@ func _0005_waku_modeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -317,7 +317,7 @@ func _0005_waku_modeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x91, 0xc, 0xd7, 0x89, 0x61, 0x2e, 0x4c, 0x5a, 0xb6, 0x67, 0xd1, 0xc1, 0x42, 0x24, 0x38, 0xd6, 0x1b, 0x75, 0x41, 0x9c, 0x23, 0xb0, 0xca, 0x5c, 0xf1, 0x5c, 0xd0, 0x13, 0x92, 0x3e, 0xe1}} return a, nil } @@ -337,7 +337,7 @@ func _0006_appearanceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x6, 0x25, 0x6c, 0xe4, 0x9d, 0xa7, 0x72, 0xe8, 0xbc, 0xe4, 0x1f, 0x1e, 0x2d, 0x7c, 0xb7, 0xf6, 0xa3, 0xec, 0x3b, 0x4e, 0x93, 0x2e, 0xa4, 0xec, 0x6f, 0xe5, 0x95, 0x94, 0xe8, 0x4, 0xfb}} return a, nil } @@ -357,7 +357,7 @@ func _0007_enable_waku_defaultUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x42, 0xb6, 0xe5, 0x48, 0x41, 0xeb, 0xc0, 0x7e, 0x3b, 0xe6, 0x8e, 0x96, 0x33, 0x20, 0x92, 0x24, 0x5a, 0x60, 0xfa, 0xa0, 0x3, 0x5e, 0x76, 0x4b, 0x89, 0xaa, 0x37, 0x66, 0xbc, 0x26, 0x11}} return a, nil } @@ -377,7 +377,7 @@ func _0008_add_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x0, 0xbf, 0xd0, 0xdd, 0xcd, 0x73, 0xe0, 0x7c, 0x56, 0xef, 0xdc, 0x57, 0x61, 0x94, 0x64, 0x70, 0xb9, 0xfa, 0xa1, 0x2a, 0x36, 0xc, 0x2f, 0xf8, 0x95, 0xa, 0x57, 0x3e, 0x7a, 0xd7, 0x12}} return a, nil } @@ -397,7 +397,7 @@ func _0009_enable_sending_push_notificationsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xae, 0x1b, 0x41, 0xcb, 0x9c, 0x2c, 0x93, 0xc6, 0x2a, 0x77, 0x3, 0xb9, 0x51, 0xe0, 0x68, 0x68, 0x0, 0xf7, 0x5b, 0xb3, 0x1e, 0x94, 0x44, 0xba, 0x9c, 0xd0, 0x3b, 0x80, 0x21, 0x6f, 0xb5}} return a, nil } @@ -417,7 +417,7 @@ func _0009_enable_sending_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x80, 0xe4, 0x9c, 0xc8, 0xb8, 0xd5, 0xef, 0xce, 0x74, 0x9b, 0x7b, 0xdd, 0xa, 0x99, 0x1e, 0xef, 0x7f, 0xb8, 0x99, 0x84, 0x4, 0x0, 0x6b, 0x1d, 0x2c, 0xa, 0xf8, 0x2c, 0x4f, 0xb5, 0x44}} return a, nil } @@ -437,7 +437,7 @@ func _0010_add_block_mentionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0x9e, 0x27, 0x1e, 0xba, 0x9f, 0xca, 0xae, 0x98, 0x2e, 0x6e, 0xe3, 0xdd, 0xac, 0x73, 0x34, 0x4e, 0x69, 0x92, 0xb5, 0xf6, 0x9, 0xab, 0x50, 0x35, 0xd, 0xee, 0xeb, 0x3e, 0xcc, 0x7e, 0xce}} return a, nil } @@ -457,7 +457,7 @@ func _0010_add_block_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x23, 0x85, 0xa2, 0xb5, 0xb6, 0xb4, 0x3f, 0xdc, 0x4e, 0xff, 0xe2, 0x6b, 0x66, 0x68, 0x5e, 0xb2, 0xb4, 0x14, 0xb2, 0x1b, 0x4d, 0xb1, 0xce, 0xf7, 0x6, 0x58, 0xa7, 0xaf, 0x93, 0x3f, 0x25}} return a, nil } @@ -477,7 +477,7 @@ func _0011_allow_webview_permission_requestsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -497,7 +497,7 @@ func _0011_allow_webview_permission_requestsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0x5f, 0x22, 0x4c, 0x98, 0x1d, 0xc6, 0xf4, 0x89, 0xaf, 0xf4, 0x44, 0xba, 0xf8, 0x28, 0xa7, 0xb5, 0xb9, 0xf0, 0xf2, 0xcb, 0x5, 0x59, 0x7a, 0xc, 0xdf, 0xd3, 0x38, 0xa4, 0xb8, 0x98, 0xc2}} return a, nil } @@ -517,7 +517,7 @@ func _0012_pending_transactionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0x41, 0xfe, 0x5c, 0xd8, 0xc3, 0x29, 0xfd, 0x31, 0x78, 0x99, 0x7a, 0xeb, 0x17, 0x62, 0x88, 0x41, 0xb3, 0xe7, 0xb5, 0x5, 0x0, 0x90, 0xa1, 0x7, 0x1a, 0x23, 0x88, 0x81, 0xba, 0x56, 0x9d}} return a, nil } @@ -537,7 +537,7 @@ func _0012_pending_transactionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd, 0x17, 0xff, 0xd7, 0xa7, 0x49, 0x1e, 0x7b, 0x34, 0x63, 0x7c, 0x53, 0xaa, 0x6b, 0x2d, 0xc8, 0xe0, 0x82, 0x21, 0x90, 0x3a, 0x94, 0xf1, 0xa6, 0xe4, 0x70, 0xe5, 0x85, 0x1a, 0x48, 0x25, 0xb}} return a, nil } @@ -557,7 +557,7 @@ func _0013_favouritesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf8, 0x55, 0x13, 0x4f, 0x4a, 0x19, 0x83, 0x9c, 0xda, 0x34, 0xb8, 0x3, 0x54, 0x82, 0x1e, 0x99, 0x36, 0x6b, 0x42, 0x3, 0xf6, 0x43, 0xde, 0xe6, 0x32, 0xb6, 0xdf, 0xe2, 0x59, 0x8c, 0x84}} return a, nil } @@ -577,7 +577,7 @@ func _0013_favouritesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbe, 0x1, 0x27, 0x38, 0x76, 0xf5, 0xcb, 0x61, 0xda, 0x5b, 0xce, 0xd9, 0x8b, 0x18, 0x77, 0x61, 0x84, 0xe7, 0x22, 0xe2, 0x13, 0x99, 0xab, 0x32, 0xbc, 0xbe, 0xed, 0x1f, 0x2f, 0xb0, 0xe4, 0x8d}} return a, nil } @@ -597,7 +597,7 @@ func _0014_add_use_mailserversDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -617,7 +617,7 @@ func _0014_add_use_mailserversUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xba, 0x65, 0xbf, 0x1b, 0xc9, 0x6d, 0x45, 0xf2, 0xf5, 0x30, 0x7c, 0xc1, 0xde, 0xb8, 0xe3, 0x3f, 0xa9, 0x2f, 0x9f, 0xea, 0x1, 0x29, 0x29, 0x65, 0xe7, 0x38, 0xab, 0xa4, 0x62, 0xf, 0xd0}} return a, nil } @@ -637,7 +637,7 @@ func _0015_link_previewsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -657,7 +657,7 @@ func _0015_link_previewsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf7, 0x38, 0x25, 0xa6, 0xfc, 0x6b, 0x9, 0xe4, 0xd9, 0xbf, 0x58, 0x7b, 0x80, 0xd8, 0x48, 0x63, 0xde, 0xa5, 0x5e, 0x30, 0xa3, 0xeb, 0x68, 0x8e, 0x6a, 0x9f, 0xfd, 0xf4, 0x46, 0x41, 0x34}} return a, nil } @@ -677,7 +677,7 @@ func _0016_local_notifications_preferencesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x50, 0xc7, 0xdd, 0x53, 0x9c, 0x5d, 0x1e, 0xb5, 0x71, 0x25, 0x50, 0x58, 0xcf, 0x6d, 0xbe, 0x5a, 0x8, 0x12, 0xc9, 0x13, 0xd, 0x9a, 0x3d, 0x4b, 0x7a, 0x2f, 0x1b, 0xe5, 0x23, 0x52, 0x78}} return a, nil } @@ -697,7 +697,7 @@ func _0016_local_notifications_preferencesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x3a, 0x16, 0x25, 0xdf, 0xba, 0x62, 0xd3, 0x81, 0x73, 0xc, 0x10, 0x85, 0xbc, 0x8d, 0xe, 0x1d, 0x62, 0xcb, 0xb, 0x6d, 0x8c, 0x4f, 0x63, 0x5f, 0xe2, 0xd, 0xc5, 0x46, 0xa8, 0x35, 0x5b}} return a, nil } @@ -717,7 +717,7 @@ func _0017_bookmarksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0x13, 0x2a, 0x44, 0xb0, 0x3, 0x18, 0x63, 0xb8, 0x33, 0xda, 0x3a, 0xeb, 0xb8, 0xcb, 0xd1, 0x98, 0x29, 0xa7, 0xf0, 0x6, 0x9d, 0xc9, 0x62, 0xe7, 0x89, 0x7f, 0x77, 0xaf, 0xec, 0x6b, 0x8f}} return a, nil } @@ -737,7 +737,7 @@ func _0017_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x47, 0xe1, 0xe3, 0xd8, 0xc6, 0x4, 0x6d, 0x5f, 0x2f, 0xa, 0x51, 0xa6, 0x8c, 0x6a, 0xe0, 0x3d, 0x8c, 0x91, 0x47, 0xbc, 0x1, 0x75, 0x46, 0x92, 0x2, 0x18, 0x6e, 0xe3, 0x4f, 0x18, 0x57}} return a, nil } @@ -757,7 +757,7 @@ func _0018_profile_pictures_visibilityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xe3, 0xc5, 0xec, 0x83, 0x55, 0x45, 0x57, 0x7a, 0xaa, 0xd2, 0xa7, 0x59, 0xa7, 0x87, 0xef, 0x63, 0x19, 0x9c, 0x46, 0x9c, 0xc5, 0x32, 0x89, 0xa4, 0x68, 0x70, 0xd8, 0x83, 0x43, 0xa4, 0x72}} return a, nil } @@ -777,7 +777,7 @@ func _0019_blocks_ranges_extra_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x96, 0x32, 0x58, 0xf0, 0xb9, 0xe1, 0x70, 0x81, 0xca, 0x8d, 0x45, 0x57, 0x8a, 0x7, 0x5d, 0x9e, 0x2a, 0x30, 0xb, 0xad, 0x5f, 0xf8, 0xd4, 0x30, 0x94, 0x73, 0x37, 0x8d, 0xc1, 0x9a, 0xed}} return a, nil } @@ -797,7 +797,7 @@ func _0020_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0x32, 0xbc, 0xb6, 0x9b, 0x5a, 0x8f, 0x9f, 0x4c, 0x90, 0x81, 0x3e, 0x2e, 0xd1, 0x23, 0xcd, 0xf1, 0x83, 0x35, 0xca, 0x66, 0x87, 0x52, 0x4e, 0x30, 0x3e, 0x4f, 0xa8, 0xfd, 0x30, 0x16, 0xbd}} return a, nil } @@ -817,7 +817,7 @@ func _0021_add_session_id_to_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x81, 0xfc, 0x97, 0xd1, 0x8b, 0xea, 0x8e, 0xd7, 0xc2, 0x53, 0x62, 0xe9, 0xbc, 0xf, 0x8c, 0x46, 0x41, 0x41, 0xb7, 0x6, 0x35, 0xf5, 0xba, 0xbb, 0x28, 0x50, 0x48, 0xbf, 0x36, 0x90, 0x5c}} return a, nil } @@ -837,7 +837,7 @@ func _0022_pending_transfersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x9, 0xe6, 0x6, 0xae, 0x60, 0xdd, 0xbb, 0x76, 0xac, 0xe0, 0x57, 0x30, 0x67, 0x37, 0x93, 0x40, 0x13, 0xec, 0xf2, 0x6e, 0x61, 0xa, 0x14, 0xb2, 0xb1, 0xbd, 0x91, 0xf8, 0x89, 0xb3, 0xe3}} return a, nil } @@ -857,7 +857,7 @@ func _1618237885_settings_anon_metrics_should_sendUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x6c, 0x1d, 0x1f, 0x54, 0x62, 0x18, 0x22, 0x5c, 0xa7, 0x8c, 0x59, 0x24, 0xd3, 0x4d, 0x55, 0xc4, 0x2a, 0x9e, 0x4c, 0x37, 0x6b, 0xfd, 0xac, 0xec, 0xb7, 0x68, 0x21, 0x26, 0x26, 0xf3, 0x92}} return a, nil } @@ -877,7 +877,7 @@ func _1618395756_contacts_onlyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xe3, 0xd0, 0xe7, 0xf2, 0x6e, 0xbf, 0x27, 0xf6, 0xe2, 0x2e, 0x16, 0x4b, 0x52, 0x3b, 0xcf, 0x63, 0x52, 0xfc, 0x1d, 0x43, 0xba, 0x42, 0xf9, 0x1e, 0x1e, 0x39, 0x40, 0xed, 0x0, 0x20, 0xa8}} return a, nil } @@ -897,7 +897,7 @@ func _1622184614_add_default_sync_periodUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0x39, 0xeb, 0x8f, 0xdc, 0x1, 0x56, 0xc1, 0x9b, 0xaa, 0xda, 0x44, 0xe0, 0xdb, 0xda, 0x2c, 0xe7, 0x71, 0x8d, 0xbc, 0xc1, 0x9a, 0x4f, 0x48, 0xe0, 0x5e, 0x81, 0x1e, 0x8e, 0x6a, 0x4d, 0x3}} return a, nil } @@ -917,7 +917,7 @@ func _1625872445_user_statusUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xa, 0xfe, 0x7a, 0xcc, 0x9e, 0x35, 0x26, 0xb, 0xc8, 0xf2, 0x7d, 0xfa, 0x4b, 0xcf, 0x53, 0x20, 0x76, 0xc7, 0xd, 0xbc, 0x78, 0x4f, 0x74, 0x2d, 0x2e, 0x2e, 0x7e, 0x62, 0xae, 0x78, 0x1f}} return a, nil } @@ -937,7 +937,7 @@ func _1627983977_add_gif_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0xe6, 0xe1, 0x97, 0x64, 0x4c, 0xe2, 0x14, 0xb1, 0x96, 0x3a, 0xb0, 0xb9, 0xb7, 0xb5, 0x78, 0x4a, 0x39, 0x69, 0x89, 0xb7, 0x89, 0x19, 0xb8, 0x89, 0x1, 0xc5, 0xc2, 0x85, 0x53, 0xe2, 0x83}} return a, nil } @@ -957,7 +957,7 @@ func _1628580203_add_hidden_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x30, 0xf1, 0xd4, 0x60, 0xe2, 0x28, 0x14, 0xcb, 0x16, 0xb, 0x9, 0xea, 0x17, 0xa, 0x9e, 0x89, 0xa8, 0x32, 0x32, 0xf8, 0x4d, 0xa0, 0xe1, 0xe5, 0x79, 0xbd, 0x7d, 0x79, 0xe9, 0x4c, 0x9e}} return a, nil } @@ -977,7 +977,7 @@ func _1629123384_add_id_to_app_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x66, 0xc0, 0x69, 0xb, 0xad, 0x49, 0x7c, 0x8c, 0x67, 0xb8, 0xd6, 0x8d, 0x5d, 0x86, 0x1f, 0xa4, 0x53, 0xf5, 0x8, 0x1, 0xfd, 0x38, 0x49, 0xee, 0x84, 0xc0, 0xd8, 0x17, 0x72, 0x3, 0xb3}} return a, nil } @@ -997,7 +997,7 @@ func _1630401853_add_opensea_enabled_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x91, 0x86, 0x15, 0xc8, 0x99, 0xe3, 0xae, 0xa, 0x6e, 0x94, 0x48, 0x51, 0x5b, 0x18, 0xe0, 0xbc, 0xaf, 0x34, 0x75, 0x55, 0x61, 0xd4, 0xc1, 0x85, 0xc7, 0x3d, 0x99, 0x9e, 0x1f, 0x37, 0x56}} return a, nil } @@ -1017,7 +1017,7 @@ func _1630464455_createSaved_addressesTableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x52, 0x39, 0xb5, 0x42, 0xac, 0xcb, 0xa1, 0x44, 0xb7, 0x94, 0x26, 0x24, 0xb2, 0x12, 0xc, 0xc5, 0xbf, 0x63, 0x13, 0x6f, 0x3c, 0x4, 0x7b, 0xf0, 0xd, 0xfa, 0x55, 0x9e, 0x51, 0xf9, 0x7a}} return a, nil } @@ -1037,7 +1037,7 @@ func _1630464455_createSaved_addressesTableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf, 0x56, 0x18, 0xeb, 0x4e, 0xac, 0xd8, 0xd6, 0x91, 0xae, 0x83, 0xcf, 0x91, 0x9e, 0x4, 0x4b, 0x2, 0x1f, 0x6d, 0xba, 0xf6, 0x3, 0xf2, 0x98, 0x72, 0xf6, 0x91, 0x29, 0x96, 0x0, 0x35}} return a, nil } @@ -1057,7 +1057,7 @@ func _1630485153_networksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x3e, 0x57, 0xb7, 0xf7, 0x8, 0xbd, 0xb5, 0xc2, 0xea, 0xc, 0x45, 0xb7, 0x7, 0x9, 0xca, 0xe7, 0x48, 0x7e, 0x56, 0x4e, 0x44, 0x78, 0x8e, 0xe3, 0x87, 0x63, 0xaf, 0x16, 0x3f, 0xf9, 0x71}} return a, nil } @@ -1077,7 +1077,7 @@ func _1630485153_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x9, 0x1d, 0x3, 0x86, 0xbd, 0xc5, 0xde, 0x3c, 0x1b, 0x40, 0x41, 0x7c, 0x61, 0x8, 0x80, 0x53, 0x87, 0x1b, 0x5a, 0x56, 0xd, 0x88, 0x1d, 0x60, 0x24, 0xce, 0x7b, 0x8f, 0xff, 0xaf, 0x36}} return a, nil } @@ -1097,7 +1097,7 @@ func _1632262444_profile_pictures_show_toUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xa2, 0x5a, 0x94, 0xde, 0x86, 0x2a, 0x29, 0xf5, 0xb3, 0x36, 0xe7, 0x53, 0x81, 0x55, 0xc9, 0xb5, 0xc3, 0xf4, 0x8c, 0x65, 0x2c, 0x4c, 0x48, 0xfd, 0x3c, 0xb7, 0x14, 0xb4, 0xea, 0x7a, 0x13}} return a, nil } @@ -1117,7 +1117,7 @@ func _1635942153_add_telemetry_server_url_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6e, 0x9b, 0x1d, 0x39, 0x9c, 0x8d, 0x50, 0x86, 0xdf, 0xe5, 0x81, 0x55, 0xdc, 0x31, 0xcd, 0xb7, 0xc7, 0x5a, 0x67, 0x3b, 0x21, 0x99, 0xa5, 0x74, 0xb8, 0xd3, 0x58, 0xae, 0x29, 0x68, 0x2a, 0x8d}} return a, nil } @@ -1137,7 +1137,7 @@ func _1635942154_add_backup_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe7, 0xfb, 0x70, 0x80, 0x5, 0xb4, 0x7b, 0x67, 0x8, 0x6e, 0x5f, 0x45, 0x17, 0xd9, 0x5f, 0x18, 0x66, 0x2f, 0x8a, 0x4f, 0xd4, 0x15, 0xe5, 0x2b, 0xbb, 0x25, 0x7a, 0x30, 0xad, 0x4c, 0x1a}} return a, nil } @@ -1157,7 +1157,7 @@ func _1637745568_add_auto_message_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xd8, 0xd2, 0xc2, 0x3a, 0xd7, 0xf1, 0x96, 0x6a, 0x35, 0xe5, 0x5c, 0xb9, 0xed, 0x4b, 0xf2, 0x5f, 0x80, 0x43, 0xca, 0x40, 0x57, 0x7e, 0xd7, 0x41, 0x9f, 0x70, 0x9f, 0xaf, 0x2a, 0xfc, 0x8f}} return a, nil } @@ -1177,7 +1177,7 @@ func _1640111208_nodeconfigUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x5a, 0xc6, 0xed, 0x6, 0xcb, 0x51, 0x8b, 0x78, 0xe9, 0x10, 0x37, 0xd1, 0xad, 0x9b, 0x76, 0x9a, 0xb9, 0x72, 0x85, 0xe7, 0x8a, 0x7f, 0xf0, 0x81, 0xf8, 0x33, 0x59, 0x67, 0x8e, 0xeb, 0xb1}} return a, nil } @@ -1197,7 +1197,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1662753054, 0)} + info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0664), modTime: time.Unix(1674204953, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xd2, 0xea, 0xc5, 0xd, 0xc4, 0x7f, 0x95, 0x8e, 0xd5, 0xf5, 0x96, 0xf2, 0x1b, 0xcb, 0xc7, 0xc2, 0x46, 0x1, 0x78, 0x1d, 0x5d, 0x59, 0x19, 0x99, 0xdd, 0x5b, 0xf5, 0x63, 0xa5, 0x25, 0xb8}} return a, nil } diff --git a/multiaccounts/settings/database.go b/multiaccounts/settings/database.go index fe93d8031..c069712f2 100644 --- a/multiaccounts/settings/database.go +++ b/multiaccounts/settings/database.go @@ -603,14 +603,6 @@ func (db *Database) GetMasterAddress() (rst types.Address, err error) { return } -func (db *Database) TestNetworksEnabled() (rst bool, err error) { - err = db.makeSelectRow(TestNetworksEnabled).Scan(&rst) - if err == sql.ErrNoRows { - return rst, nil - } - return -} - func (db *Database) GetTestNetworksEnabled() (result bool, err error) { err = db.makeSelectRow(TestNetworksEnabled).Scan(&result) if err == sql.ErrNoRows { diff --git a/protocol/messenger_saved_address.go b/protocol/messenger_saved_address.go index d55e8ceb9..98134d396 100644 --- a/protocol/messenger_saved_address.go +++ b/protocol/messenger_saved_address.go @@ -20,12 +20,13 @@ func (m *Messenger) UpsertSavedAddress(ctx context.Context, sa wallet.SavedAddre return m.syncNewSavedAddress(ctx, &sa, updatedClock, m.dispatchMessage) } -func (m *Messenger) DeleteSavedAddress(ctx context.Context, chainID uint64, address gethcommon.Address) error { - updatedClock, err := m.savedAddressesManager.DeleteSavedAddress(chainID, address) +func (m *Messenger) DeleteSavedAddress(ctx context.Context, address gethcommon.Address, ens string, isTest bool) error { + updateClock := uint64(time.Now().Unix()) + _, err := m.savedAddressesManager.DeleteSavedAddress(address, ens, isTest, updateClock) if err != nil { return err } - return m.syncDeletedSavedAddress(ctx, chainID, address, updatedClock, m.dispatchMessage) + return m.syncDeletedSavedAddress(ctx, address, ens, isTest, updateClock, m.dispatchMessage) } func (m *Messenger) garbageCollectRemovedSavedAddresses() error { @@ -62,26 +63,30 @@ func (m *Messenger) dispatchSyncSavedAddress(ctx context.Context, syncMessage pr func (m *Messenger) syncNewSavedAddress(ctx context.Context, savedAddress *wallet.SavedAddress, updateClock uint64, rawMessageHandler RawMessageHandler) error { return m.dispatchSyncSavedAddress(ctx, protobuf.SyncSavedAddress{ - Address: savedAddress.Address.Bytes(), - Name: savedAddress.Name, - Favourite: savedAddress.Favourite, - ChainId: savedAddress.ChainID, - UpdateClock: updateClock, + Address: savedAddress.Address.Bytes(), + Name: savedAddress.Name, + Favourite: savedAddress.Favourite, + Removed: savedAddress.Removed, + UpdateClock: savedAddress.UpdateClock, + ChainShortNames: savedAddress.ChainShortNames, + Ens: savedAddress.ENSName, + IsTest: savedAddress.IsTest, }, rawMessageHandler) } -func (m *Messenger) syncDeletedSavedAddress(ctx context.Context, chainID uint64, address gethcommon.Address, updateClock uint64, rawMessageHandler RawMessageHandler) error { +func (m *Messenger) syncDeletedSavedAddress(ctx context.Context, address gethcommon.Address, ens string, isTest bool, updateClock uint64, rawMessageHandler RawMessageHandler) error { return m.dispatchSyncSavedAddress(ctx, protobuf.SyncSavedAddress{ Address: address.Bytes(), - ChainId: chainID, UpdateClock: updateClock, Removed: true, + IsTest: isTest, + Ens: ens, }, rawMessageHandler) } func (m *Messenger) syncSavedAddress(ctx context.Context, savedAddress wallet.SavedAddress, rawMessageHandler RawMessageHandler) (err error) { if savedAddress.Removed { - if err = m.syncDeletedSavedAddress(ctx, savedAddress.ChainID, savedAddress.Address, savedAddress.UpdateClock, rawMessageHandler); err != nil { + if err = m.syncDeletedSavedAddress(ctx, savedAddress.Address, savedAddress.ENSName, savedAddress.IsTest, savedAddress.UpdateClock, rawMessageHandler); err != nil { return err } } else { @@ -95,18 +100,20 @@ func (m *Messenger) syncSavedAddress(ctx context.Context, savedAddress wallet.Sa func (m *Messenger) handleSyncSavedAddress(state *ReceivedMessageState, syncMessage protobuf.SyncSavedAddress) (err error) { address := gethcommon.BytesToAddress(syncMessage.Address) if syncMessage.Removed { - _, err = m.savedAddressesManager.DeleteSavedAddressIfNewerUpdate(syncMessage.ChainId, - address, syncMessage.UpdateClock) + _, err = m.savedAddressesManager.DeleteSavedAddress( + address, syncMessage.Ens, syncMessage.IsTest, syncMessage.UpdateClock) if err != nil { return err } - state.Response.AddSavedAddress(&wallet.SavedAddress{ChainID: syncMessage.ChainId, Address: address}) + state.Response.AddSavedAddress(&wallet.SavedAddress{Address: address, ENSName: syncMessage.Ens, IsTest: syncMessage.IsTest}) } else { sa := wallet.SavedAddress{ - Address: address, - Name: syncMessage.Name, - Favourite: syncMessage.Favourite, - ChainID: syncMessage.ChainId, + Address: address, + Name: syncMessage.Name, + Favourite: syncMessage.Favourite, + ChainShortNames: syncMessage.ChainShortNames, + ENSName: syncMessage.Ens, + IsTest: syncMessage.IsTest, } _, err = m.savedAddressesManager.AddSavedAddressIfNewerUpdate(sa, syncMessage.UpdateClock) diff --git a/protocol/messenger_sync_saved_addresses_test.go b/protocol/messenger_sync_saved_addresses_test.go index 88e993984..4217cb173 100644 --- a/protocol/messenger_sync_saved_addresses_test.go +++ b/protocol/messenger_sync_saved_addresses_test.go @@ -13,6 +13,7 @@ import ( gethbridge "github.com/status-im/status-go/eth-node/bridge/geth" "github.com/status-im/status-go/eth-node/crypto" "github.com/status-im/status-go/eth-node/types" + "github.com/status-im/status-go/multiaccounts/settings" "github.com/status-im/status-go/protocol/encryption/multidevice" "github.com/status-im/status-go/protocol/tt" "github.com/status-im/status-go/services/wallet" @@ -113,12 +114,13 @@ func haveSameElements[T comparable](a []T, b []T, isEqual func(T, T) bool) bool } func savedAddressDataIsEqual(a, b wallet.SavedAddress) bool { - return a.Address == b.Address && a.ChainID == b.ChainID && a.Name == b.Name && a.Favourite == b.Favourite + return a.Address == b.Address && a.IsTest == b.IsTest && a.Name == b.Name && + a.Favourite == b.Favourite && a.ENSName == b.ENSName && a.ChainShortNames == b.ChainShortNames } func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() { - var testChainID1 uint64 = 1 - var testChainID2 uint64 = 2 + var isTestChain1 bool = false + var isTestChain2 bool = true var testAddress1 = common.Address{1} // Add saved addresses to main device @@ -126,13 +128,13 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() { Address: testAddress1, Name: "TestC1A1", Favourite: false, - ChainID: testChainID1, + IsTest: isTestChain1, } sa2 := wallet.SavedAddress{ - Address: testAddress1, + ENSName: "test.ens.eth", Name: "TestC2A1", Favourite: true, - ChainID: testChainID2, + IsTest: isTestChain2, } savedAddressesManager := wallet.NewSavedAddressesManager(s.main.persistence.db) @@ -169,22 +171,21 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncExistingSavedAddresses() { } func (s *MessengerSyncSavedAddressesSuite) TestSyncSavedAddresses() { - var testChainID1 uint64 = 1 + var isTestChain1 bool = true var testAddress1 = common.Address{1} - var testAddress2 = common.Address{2} // Add saved addresses to main device sa1 := wallet.SavedAddress{ Address: testAddress1, Name: "TestC1A1", Favourite: false, - ChainID: testChainID1, + IsTest: isTestChain1, } sa2 := wallet.SavedAddress{ - Address: testAddress2, + ENSName: "test.ens.eth", Name: "TestC1A2", Favourite: true, - ChainID: testChainID1, + IsTest: isTestChain1, } err := s.main.UpsertSavedAddress(context.Background(), sa1) @@ -213,26 +214,32 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncSavedAddresses() { s.Require().True(haveSameElements([]wallet.SavedAddress{sa1, sa2}, savedAddresses, savedAddressDataIsEqual)) } -func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() { - var testChainID1 uint64 = 1 +func (s *MessengerSyncSavedAddressesSuite) testSyncDeletesOfSavedAddressesWithTestModes(testModeMain bool, testModeOther bool) { + var isTestChain1 bool = true + var isTestChain2 bool = false var testAddress1 = common.Address{1} - var testAddress2 = common.Address{2} // Add saved addresses to main device sa1 := wallet.SavedAddress{ Address: testAddress1, Name: "TestC1A1", Favourite: false, - ChainID: testChainID1, + IsTest: isTestChain1, } sa2 := wallet.SavedAddress{ - Address: testAddress2, + ENSName: "test.ens.eth", Name: "TestC1A2", Favourite: true, - ChainID: testChainID1, + IsTest: isTestChain2, } - err := s.main.UpsertSavedAddress(context.Background(), sa1) + err := s.main.settings.SaveSettingField(settings.TestNetworksEnabled, testModeMain) + s.Require().NoError(err) + err = s.other.settings.SaveSettingField(settings.TestNetworksEnabled, testModeOther) + s.Require().NoError(err) + + s.Require().NoError(err) + err = s.main.UpsertSavedAddress(context.Background(), sa1) s.Require().NoError(err) err = s.main.UpsertSavedAddress(context.Background(), sa2) s.Require().NoError(err) @@ -256,8 +263,8 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() { s.Require().NoError(err) s.Require().Equal(2, len(savedAddresses)) - // Delete saved addresses from the other device - err = s.main.DeleteSavedAddress(context.Background(), sa1.ChainID, sa1.Address) + // Delete saved addresses with test mode = true and sync with the other device + err = s.main.DeleteSavedAddress(context.Background(), sa1.Address, sa1.ENSName, sa1.IsTest) s.Require().NoError(err) // Wait and check that saved addresses are synced @@ -265,11 +272,13 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() { s.other, func(r *MessengerResponse) bool { if len(r.SavedAddresses()) == 1 { - // We expect the deleted event to report only address and chain ID - s.Require().Equal(sa1.Address, r.SavedAddresses()[0].Address) - s.Require().Equal(sa1.ChainID, r.SavedAddresses()[0].ChainID) - s.Require().Equal("", r.SavedAddresses()[0].Name) - s.Require().Equal(false, r.SavedAddresses()[0].Favourite) + sa := r.SavedAddresses()[0] + // We expect the deleted event to report address, ens, isTest + s.Require().Equal(sa1.Address, sa.Address) + s.Require().Equal(sa1.ENSName, sa.ENSName) + s.Require().Equal(sa1.IsTest, sa.IsTest) + s.Require().Equal("", sa.Name) + s.Require().Equal(false, sa.Favourite) return true } return false @@ -282,4 +291,44 @@ func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddresses() { s.Require().NoError(err) s.Require().Equal(1, len(savedAddresses)) s.Require().True(haveSameElements([]wallet.SavedAddress{sa2}, savedAddresses, savedAddressDataIsEqual)) + + // Delete saved addresses with test mode = false and sync with the other device + err = s.main.DeleteSavedAddress(context.Background(), sa2.Address, sa2.ENSName, sa2.IsTest) + s.Require().NoError(err) + + // Wait and check that saved addresses are synced + _, err = WaitOnMessengerResponse( + s.other, + func(r *MessengerResponse) bool { + if len(r.SavedAddresses()) == 1 { + sa := r.SavedAddresses()[0] + // We expect the deleted event to report address, ens, isTest + s.Require().Equal(sa2.Address, sa.Address) + s.Require().Equal(sa2.ENSName, sa.ENSName) + s.Require().Equal(sa2.IsTest, sa.IsTest) + s.Require().Equal("", sa.Name) + s.Require().Equal(false, sa.Favourite) + return true + } + return false + }, + "expected to receive one change", + ) + s.Require().NoError(err) + + savedAddresses, err = s.other.savedAddressesManager.GetSavedAddresses() + s.Require().NoError(err) + s.Require().Equal(0, len(savedAddresses)) +} + +func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddressesSameTestModeOnBothDevices() { + testModeMain := true + testModeOther := testModeMain + s.testSyncDeletesOfSavedAddressesWithTestModes(testModeMain, testModeOther) +} + +func (s *MessengerSyncSavedAddressesSuite) TestSyncDeletesOfSavedAddressesDifferentTestModeOnDevices() { + testModeMain := true + testModeOther := !testModeMain + s.testSyncDeletesOfSavedAddressesWithTestModes(testModeMain, testModeOther) } diff --git a/protocol/protobuf/pairing.pb.go b/protocol/protobuf/pairing.pb.go index 38dddcadc..d838d0606 100644 --- a/protocol/protobuf/pairing.pb.go +++ b/protocol/protobuf/pairing.pb.go @@ -2044,9 +2044,11 @@ type SyncSavedAddress struct { Address []byte `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Favourite bool `protobuf:"varint,3,opt,name=favourite,proto3" json:"favourite,omitempty"` - ChainId uint64 `protobuf:"varint,4,opt,name=chain_id,json=chainId,proto3" json:"chain_id,omitempty"` Removed bool `protobuf:"varint,5,opt,name=removed,proto3" json:"removed,omitempty"` UpdateClock uint64 `protobuf:"varint,7,opt,name=update_clock,json=updateClock,proto3" json:"update_clock,omitempty"` + ChainShortNames string `protobuf:"bytes,8,opt,name=chain_short_names,json=chainShortNames,proto3" json:"chain_short_names,omitempty"` + Ens string `protobuf:"bytes,9,opt,name=ens,proto3" json:"ens,omitempty"` + IsTest bool `protobuf:"varint,10,opt,name=is_test,json=isTest,proto3" json:"is_test,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -2098,13 +2100,6 @@ func (m *SyncSavedAddress) GetFavourite() bool { return false } -func (m *SyncSavedAddress) GetChainId() uint64 { - if m != nil { - return m.ChainId - } - return 0 -} - func (m *SyncSavedAddress) GetRemoved() bool { if m != nil { return m.Removed @@ -2119,6 +2114,27 @@ func (m *SyncSavedAddress) GetUpdateClock() uint64 { return 0 } +func (m *SyncSavedAddress) GetChainShortNames() string { + if m != nil { + return m.ChainShortNames + } + return "" +} + +func (m *SyncSavedAddress) GetEns() string { + if m != nil { + return m.Ens + } + return "" +} + +func (m *SyncSavedAddress) GetIsTest() bool { + if m != nil { + return m.IsTest + } + return false +} + type SyncCommunitySettings struct { Clock uint64 `protobuf:"varint,1,opt,name=clock,proto3" json:"clock,omitempty"` CommunityId string `protobuf:"bytes,2,opt,name=community_id,json=communityId,proto3" json:"community_id,omitempty"` @@ -2784,170 +2800,172 @@ func init() { } var fileDescriptor_d61ab7221f0b5518 = []byte{ - // 2631 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x39, 0x4d, 0x73, 0x1b, 0xc7, - 0xb1, 0x5e, 0x00, 0xc4, 0x47, 0x03, 0x04, 0xa1, 0x11, 0x2d, 0x41, 0x14, 0x5d, 0x92, 0xd6, 0x76, - 0x59, 0xaf, 0xca, 0x8f, 0x7e, 0x4f, 0x8e, 0xe3, 0xc4, 0x1f, 0x65, 0x43, 0x00, 0x62, 0xd1, 0x14, - 0x41, 0xd6, 0x90, 0x90, 0x63, 0x57, 0xaa, 0xb6, 0x86, 0xbb, 0x23, 0x62, 0xc3, 0xc5, 0xee, 0x66, - 0x67, 0x40, 0x05, 0xb9, 0xe5, 0x2f, 0xe4, 0x92, 0x1c, 0x7d, 0x4e, 0x6e, 0xa9, 0x72, 0x4e, 0x39, - 0xe4, 0x98, 0x5b, 0x0e, 0x39, 0x26, 0x87, 0x9c, 0xf3, 0x2b, 0x52, 0xd3, 0x33, 0xbb, 0xd8, 0x05, - 0x01, 0x46, 0xaa, 0x9c, 0x72, 0xc2, 0x74, 0x6f, 0x77, 0x6f, 0x4f, 0x7f, 0x37, 0x16, 0x36, 0x63, - 0xe6, 0x27, 0x7e, 0x78, 0xbe, 0x17, 0x27, 0x91, 0x8c, 0x48, 0x1d, 0x7f, 0xce, 0x66, 0xcf, 0x77, - 0x6e, 0x8a, 0x79, 0xe8, 0x3a, 0x82, 0x4b, 0xe9, 0x87, 0xe7, 0x42, 0x3f, 0xde, 0xb1, 0x59, 0x1c, - 0x07, 0xbe, 0xcb, 0xa4, 0x1f, 0x85, 0xce, 0x94, 0x4b, 0xe6, 0x31, 0xc9, 0x9c, 0x29, 0x17, 0x82, - 0x9d, 0x73, 0x4d, 0x63, 0x33, 0xb8, 0xfb, 0x23, 0x2e, 0xdd, 0x89, 0x1f, 0x9e, 0x3f, 0x66, 0xee, - 0x05, 0xf7, 0xc6, 0xf1, 0x80, 0x49, 0x36, 0xe0, 0x92, 0xf9, 0x81, 0x20, 0xf7, 0xa0, 0x89, 0x4c, - 0xe1, 0x6c, 0x7a, 0xc6, 0x93, 0xae, 0x75, 0xdf, 0x7a, 0xb8, 0x49, 0x41, 0xa1, 0x46, 0x88, 0x21, - 0x0f, 0xa0, 0x25, 0x23, 0xc9, 0x82, 0x94, 0xa2, 0x84, 0x14, 0x4d, 0xc4, 0x69, 0x12, 0xfb, 0x1f, - 0x1b, 0x50, 0x55, 0xb2, 0x67, 0x31, 0xd9, 0x86, 0x0d, 0x37, 0x88, 0xdc, 0x0b, 0x14, 0x54, 0xa1, - 0x1a, 0x20, 0x6d, 0x28, 0xf9, 0x1e, 0x72, 0x36, 0x68, 0xc9, 0xf7, 0xc8, 0x67, 0x50, 0x77, 0xa3, - 0x50, 0x32, 0x57, 0x8a, 0x6e, 0xf9, 0x7e, 0xf9, 0x61, 0xf3, 0xd1, 0x9b, 0x7b, 0xe9, 0x4d, 0xf7, - 0x4e, 0xe6, 0xa1, 0xbb, 0x1f, 0x0a, 0xc9, 0x82, 0x00, 0x2f, 0xd6, 0xd7, 0x94, 0xcf, 0x1e, 0xd1, - 0x8c, 0x89, 0xfc, 0x10, 0x9a, 0x6e, 0x34, 0x9d, 0xce, 0x42, 0x5f, 0xfa, 0x5c, 0x74, 0x2b, 0x28, - 0xe3, 0x76, 0x51, 0x46, 0xdf, 0x10, 0xcc, 0x69, 0x9e, 0x96, 0x1c, 0xc1, 0x56, 0x2a, 0xc6, 0xd8, - 0xa0, 0xbb, 0x71, 0xdf, 0x7a, 0xd8, 0x7c, 0xf4, 0xf6, 0x82, 0xfd, 0x1a, 0x83, 0xd1, 0x65, 0x6e, - 0x32, 0x06, 0x92, 0x93, 0x9f, 0xca, 0xac, 0xbe, 0x8a, 0xcc, 0x15, 0x02, 0xc8, 0xfb, 0x50, 0x8b, - 0x93, 0xe8, 0xb9, 0x1f, 0xf0, 0x6e, 0x0d, 0x65, 0xdd, 0x59, 0xc8, 0x4a, 0x65, 0x1c, 0x6b, 0x02, - 0x9a, 0x52, 0x92, 0x43, 0x68, 0x9b, 0x63, 0xaa, 0x47, 0xfd, 0x55, 0xf4, 0x58, 0x62, 0x26, 0xef, - 0x41, 0xcd, 0x44, 0x5c, 0xb7, 0x81, 0x72, 0x5e, 0x2f, 0x9a, 0xf8, 0x44, 0x3f, 0xa4, 0x29, 0x95, - 0x32, 0x6e, 0x1a, 0xa2, 0xa9, 0x02, 0xf0, 0x4a, 0xc6, 0x5d, 0xe2, 0x26, 0x1f, 0x40, 0xfd, 0x82, - 0xcf, 0x5d, 0x96, 0x78, 0xa2, 0xdb, 0x5c, 0x36, 0x83, 0x52, 0xa1, 0x17, 0x04, 0x07, 0x86, 0x80, - 0x66, 0xa4, 0x4a, 0x8f, 0xf4, 0x9c, 0xea, 0xd1, 0x7a, 0x25, 0x3d, 0x96, 0xb8, 0xed, 0x3f, 0x56, - 0xa0, 0x75, 0x38, 0x0b, 0xa4, 0xdf, 0x73, 0xdd, 0x68, 0x16, 0x4a, 0x42, 0xa0, 0x12, 0xb2, 0x29, - 0xc7, 0x38, 0x6f, 0x50, 0x3c, 0x93, 0x5d, 0x68, 0x48, 0x7f, 0xca, 0x85, 0x64, 0xd3, 0x18, 0xa3, - 0xbd, 0x4c, 0x17, 0x08, 0xf5, 0xd4, 0xf7, 0x78, 0x28, 0x7d, 0x37, 0x0a, 0xbb, 0x65, 0x64, 0x5b, - 0x20, 0xc8, 0xe7, 0x00, 0x6e, 0x14, 0x44, 0x89, 0x33, 0x61, 0x62, 0x62, 0x02, 0xfa, 0xc1, 0x42, - 0xd9, 0xfc, 0xbb, 0xf7, 0xfa, 0x51, 0x10, 0xcd, 0x92, 0x27, 0x4c, 0x4c, 0x68, 0x03, 0x99, 0xd4, - 0x91, 0x74, 0xa1, 0x86, 0xc0, 0xbe, 0x87, 0x01, 0x5d, 0xa6, 0x29, 0x48, 0xde, 0xc9, 0xac, 0xe1, - 0x98, 0xf2, 0x82, 0xe1, 0xd9, 0xa0, 0x6d, 0x83, 0x3e, 0xd6, 0x58, 0x72, 0x1b, 0x6a, 0x17, 0x7c, - 0xee, 0xcc, 0x7c, 0x0f, 0x63, 0xae, 0x41, 0xab, 0x17, 0x7c, 0x3e, 0xf6, 0x3d, 0xf2, 0x09, 0x54, - 0xfd, 0x29, 0x3b, 0xe7, 0x2a, 0x9e, 0x94, 0x66, 0x6f, 0xad, 0xd1, 0x6c, 0x1f, 0xef, 0x23, 0xe7, - 0xfb, 0x8a, 0x98, 0x1a, 0x9e, 0x1d, 0x1b, 0x60, 0xa1, 0xb2, 0x2a, 0x11, 0x7e, 0xe8, 0xf1, 0x9f, - 0x77, 0xad, 0xfb, 0xe5, 0x87, 0x65, 0xaa, 0x81, 0x9d, 0xbf, 0x59, 0xb0, 0x59, 0xe0, 0xce, 0x2b, - 0x63, 0x15, 0x94, 0x49, 0x4d, 0x5f, 0xca, 0x99, 0xbe, 0x0b, 0xb5, 0x98, 0xcd, 0x83, 0x88, 0x79, - 0x68, 0xda, 0x16, 0x4d, 0x41, 0xf5, 0xba, 0x17, 0xbe, 0x27, 0x95, 0x4d, 0x95, 0x51, 0x34, 0x40, - 0x6e, 0x41, 0x75, 0xc2, 0xfd, 0xf3, 0x89, 0x34, 0xb6, 0x32, 0x10, 0xd9, 0x81, 0xba, 0x4a, 0x00, - 0xe1, 0xff, 0x82, 0xa3, 0x8d, 0xca, 0x34, 0x83, 0xc9, 0x9b, 0xb0, 0x99, 0xe0, 0xc9, 0x91, 0x2c, - 0x39, 0xe7, 0x12, 0x6d, 0x54, 0xa6, 0x2d, 0x8d, 0x3c, 0x45, 0xdc, 0xa2, 0x00, 0xd6, 0x73, 0x05, - 0xd0, 0xfe, 0xab, 0x05, 0x37, 0x9f, 0x46, 0x2e, 0x0b, 0x8c, 0xa5, 0x8f, 0x8d, 0x72, 0x1f, 0x40, - 0xe5, 0x82, 0xcf, 0x05, 0x9a, 0xa2, 0xe0, 0xef, 0x15, 0xc4, 0x7b, 0x07, 0x7c, 0x4e, 0x91, 0x9c, - 0x7c, 0x04, 0xad, 0xa9, 0x32, 0x3b, 0xd3, 0x66, 0x47, 0x4b, 0x34, 0x1f, 0xdd, 0x5a, 0xed, 0x14, - 0x5a, 0xa0, 0x55, 0x37, 0x8c, 0x99, 0x10, 0x2f, 0xa2, 0xc4, 0x33, 0x51, 0x98, 0xc1, 0x3b, 0xff, - 0x0b, 0xe5, 0x03, 0x3e, 0x5f, 0x19, 0xdb, 0x04, 0x2a, 0xaa, 0x29, 0xe0, 0xab, 0x5a, 0x14, 0xcf, - 0xf6, 0xb7, 0x16, 0x74, 0x94, 0x8e, 0xf9, 0x6a, 0xbd, 0xa6, 0x03, 0xbc, 0x03, 0x5b, 0x7e, 0x8e, - 0xca, 0xc9, 0xda, 0x41, 0x3b, 0x8f, 0xde, 0xf7, 0xb0, 0x1f, 0xf1, 0x4b, 0xdf, 0xe5, 0x8e, 0x9c, - 0xc7, 0xdc, 0x68, 0x08, 0x1a, 0x75, 0x3a, 0x8f, 0x79, 0xa6, 0x5c, 0xa5, 0xe8, 0xfd, 0x4b, 0x9e, - 0x08, 0x3f, 0x0a, 0xd1, 0x9d, 0x9b, 0x34, 0x05, 0xed, 0x7f, 0x5a, 0x70, 0x7b, 0x4d, 0x43, 0x79, - 0xc9, 0x5e, 0xf5, 0x26, 0x6c, 0x9a, 0xaa, 0xe8, 0x60, 0x38, 0x1b, 0x95, 0x5a, 0x06, 0xa9, 0x63, - 0xf5, 0x0e, 0xd4, 0x79, 0x28, 0x9c, 0x9c, 0x62, 0x35, 0x1e, 0x8a, 0x91, 0xd2, 0xed, 0x01, 0xb4, - 0x02, 0x26, 0xa4, 0x33, 0x8b, 0x3d, 0x26, 0xb9, 0xce, 0xcd, 0x0a, 0x6d, 0x2a, 0xdc, 0x58, 0xa3, - 0xd4, 0x9d, 0xc5, 0x5c, 0x48, 0x3e, 0x75, 0x24, 0x3b, 0x57, 0xad, 0xa3, 0xac, 0xee, 0xac, 0x51, - 0xa7, 0xec, 0x5c, 0x90, 0xb7, 0xa1, 0x1d, 0xa8, 0x80, 0x70, 0x42, 0xdf, 0xbd, 0xc0, 0x97, 0xe8, - 0xf4, 0xdc, 0x44, 0xec, 0xc8, 0x20, 0xed, 0x5f, 0x56, 0xe1, 0xce, 0xda, 0xee, 0x49, 0xfe, 0x0f, - 0xb6, 0xf3, 0x8a, 0x38, 0xc8, 0x1b, 0xcc, 0xcd, 0xed, 0x49, 0x4e, 0xa1, 0xa7, 0xfa, 0xc9, 0x7f, - 0xb1, 0x29, 0x94, 0x6f, 0x99, 0xe7, 0x71, 0x0f, 0xfb, 0x56, 0x9d, 0x6a, 0x40, 0xc5, 0xc9, 0x99, - 0x72, 0x32, 0xf7, 0xb0, 0x2d, 0xd5, 0x69, 0x0a, 0x2a, 0xfa, 0xe9, 0x4c, 0xe9, 0xd4, 0xd4, 0xf4, - 0x08, 0x28, 0xfa, 0x84, 0x4f, 0xa3, 0x4b, 0xee, 0x61, 0xfb, 0xa8, 0xd3, 0x14, 0x24, 0xf7, 0xa1, - 0x35, 0x61, 0xc2, 0x41, 0xb1, 0xce, 0x4c, 0x74, 0x37, 0xf1, 0x31, 0x4c, 0x98, 0xe8, 0x29, 0xd4, - 0x58, 0xf5, 0xce, 0x9b, 0x97, 0x3c, 0xf1, 0x9f, 0xa7, 0xe3, 0x99, 0x90, 0x4c, 0xce, 0x44, 0xb7, - 0x8d, 0x35, 0x83, 0xe4, 0x1f, 0x9d, 0xe0, 0x13, 0x1c, 0xb4, 0x92, 0x99, 0x90, 0x29, 0xe5, 0x16, - 0x52, 0x36, 0x11, 0x67, 0x48, 0x3e, 0x85, 0xbb, 0x66, 0xfa, 0x70, 0x12, 0xfe, 0xb3, 0x19, 0x17, - 0x52, 0x7b, 0x11, 0x59, 0x78, 0xb7, 0x83, 0x1c, 0x5d, 0x43, 0x42, 0x35, 0x05, 0x3a, 0x53, 0xf1, - 0xf3, 0xf5, 0xec, 0x3a, 0x0d, 0x6e, 0xac, 0x65, 0xef, 0x63, 0x66, 0x7c, 0x06, 0xbb, 0xcb, 0xec, - 0xca, 0x1c, 0x92, 0x9b, 0xd7, 0x13, 0xe4, 0xbf, 0x53, 0xe4, 0xa7, 0x48, 0xa1, 0xdf, 0xbf, 0x5e, - 0x80, 0x56, 0xe0, 0xe6, 0x7a, 0x01, 0x5a, 0x83, 0x07, 0xd0, 0xf2, 0x7c, 0x11, 0x07, 0x6c, 0xae, - 0xe3, 0x6b, 0x1b, 0x5d, 0xdf, 0x34, 0x38, 0x15, 0x63, 0xf6, 0x8b, 0xab, 0xf9, 0x9e, 0xb6, 0xec, - 0xd5, 0xf9, 0x7e, 0x25, 0xa8, 0x4b, 0x2b, 0x82, 0x7a, 0x39, 0x72, 0xcb, 0x57, 0x22, 0xd7, 0x7e, - 0x0c, 0x3b, 0xcb, 0x2f, 0x3e, 0x9e, 0x9d, 0x05, 0xbe, 0xdb, 0x9f, 0xb0, 0x97, 0xac, 0x35, 0xf6, - 0x77, 0x65, 0xd8, 0x2c, 0x8c, 0xae, 0xff, 0x96, 0xaf, 0x85, 0x89, 0x79, 0x0f, 0x9a, 0x71, 0xe2, - 0x5f, 0x32, 0xc9, 0x9d, 0x0b, 0x3e, 0x37, 0x1d, 0x10, 0x0c, 0x4a, 0x55, 0xf4, 0xfb, 0xaa, 0xaa, - 0x0a, 0x37, 0xf1, 0x63, 0xa5, 0x17, 0xe6, 0x65, 0x8b, 0xe6, 0x51, 0xaa, 0x21, 0xfe, 0x34, 0xf2, - 0x43, 0x93, 0x95, 0x75, 0x6a, 0x20, 0xd5, 0x2e, 0x74, 0xac, 0x72, 0x0f, 0x1b, 0x62, 0x9d, 0x66, - 0xf0, 0x22, 0x69, 0x6a, 0xf9, 0xa4, 0x39, 0x82, 0x8e, 0xf1, 0xae, 0x70, 0x64, 0xe4, 0x28, 0x39, - 0x66, 0x6a, 0x78, 0x7b, 0xdd, 0x80, 0x6e, 0xc8, 0x4f, 0xa3, 0x2f, 0x23, 0x3f, 0xa4, 0xed, 0xa4, - 0x00, 0x93, 0x8f, 0xa1, 0x9e, 0x8e, 0x85, 0x66, 0x0c, 0xbd, 0xb7, 0x46, 0x90, 0x99, 0x47, 0x05, - 0xcd, 0x18, 0xd4, 0xd4, 0xc5, 0x43, 0x37, 0x99, 0xc7, 0x32, 0x4b, 0xfa, 0x05, 0x42, 0x3d, 0x15, - 0x31, 0x77, 0x25, 0x5b, 0xa4, 0xfe, 0x02, 0xa1, 0x9a, 0x96, 0x21, 0x55, 0x09, 0x8c, 0x8d, 0xba, - 0x85, 0x96, 0x6b, 0x2f, 0xd0, 0x07, 0x7c, 0x2e, 0xec, 0xbf, 0x58, 0x70, 0xf7, 0x9a, 0x1b, 0x19, - 0x7f, 0x59, 0x99, 0xbf, 0xde, 0x00, 0x88, 0x31, 0x36, 0xd0, 0x5d, 0xda, 0xff, 0x0d, 0x8d, 0x51, - 0xde, 0xca, 0x9c, 0x5e, 0xce, 0x3b, 0xfd, 0x9a, 0xc2, 0x7a, 0x1b, 0x6a, 0xee, 0x84, 0x49, 0xd5, - 0x55, 0x37, 0xf4, 0xa8, 0xa4, 0xc0, 0x7d, 0x4f, 0xc5, 0x6d, 0xba, 0x5a, 0xcc, 0xd5, 0xd3, 0xaa, - 0x76, 0x7c, 0x86, 0xdb, 0x47, 0x27, 0xea, 0xf4, 0xad, 0xe9, 0x97, 0x21, 0x60, 0xff, 0xaa, 0x04, - 0x9d, 0xe5, 0x70, 0x26, 0x9f, 0xe6, 0xd6, 0xb6, 0x2b, 0x13, 0xcb, 0x9a, 0xc6, 0x93, 0x5b, 0xda, - 0xbe, 0x80, 0x96, 0xb9, 0xb5, 0xd2, 0x4e, 0x74, 0x4b, 0xcb, 0xa3, 0xe4, 0xfa, 0xfc, 0xa1, 0xcd, - 0x38, 0x3b, 0x0b, 0xf2, 0x31, 0xd4, 0xd2, 0xc9, 0xa7, 0x8c, 0xf1, 0x70, 0x8d, 0x1a, 0xe9, 0x10, - 0x94, 0x72, 0xfc, 0x07, 0xab, 0xa3, 0xfd, 0x21, 0x6c, 0xe1, 0x53, 0xa5, 0x90, 0xe9, 0x03, 0x2f, - 0x97, 0xd7, 0x9f, 0xc0, 0x76, 0xca, 0x78, 0xa8, 0x97, 0x73, 0x41, 0x39, 0x7b, 0x59, 0xee, 0xcf, - 0xe1, 0x16, 0x6e, 0x3a, 0xae, 0xf4, 0x2f, 0x7d, 0x39, 0xef, 0xf3, 0x50, 0xf2, 0xe4, 0x1a, 0xfe, - 0x0e, 0x94, 0x7d, 0x4f, 0x9b, 0xb7, 0x45, 0xd5, 0xd1, 0x1e, 0xe8, 0xda, 0x54, 0x94, 0xd0, 0x73, - 0x5d, 0x8e, 0x49, 0xf0, 0xb2, 0x52, 0x86, 0x3a, 0xc8, 0x8b, 0x52, 0x06, 0xbe, 0x98, 0xfa, 0x42, - 0xbc, 0x82, 0x98, 0x6f, 0x2d, 0x68, 0x29, 0x39, 0x8f, 0xa3, 0xe8, 0x62, 0xca, 0x92, 0x8b, 0xf5, - 0x8c, 0xb3, 0x24, 0x30, 0x66, 0x50, 0xc7, 0x6c, 0xf2, 0x2b, 0xe7, 0x26, 0xbf, 0xbb, 0xd0, 0xc0, - 0xaa, 0xed, 0x28, 0x5a, 0x9d, 0x15, 0x75, 0x44, 0x8c, 0x93, 0x20, 0xdf, 0xbe, 0x37, 0x8a, 0xed, - 0xfb, 0x0d, 0x00, 0x8f, 0x07, 0x5c, 0x8d, 0x41, 0x4c, 0x62, 0x56, 0x54, 0x68, 0xc3, 0x60, 0x7a, - 0xd2, 0xfe, 0x52, 0x07, 0x7f, 0x3f, 0xe0, 0x2c, 0x79, 0xe2, 0x0b, 0x19, 0x25, 0xf3, 0x7c, 0x8e, - 0x59, 0x85, 0x1c, 0x7b, 0x03, 0xc0, 0x55, 0x84, 0x5a, 0x56, 0x49, 0xcb, 0x32, 0x98, 0x9e, 0xb4, - 0xff, 0x6c, 0x01, 0x51, 0xc2, 0xcc, 0xae, 0x7e, 0xec, 0xbb, 0x72, 0x96, 0xf0, 0x95, 0x33, 0x76, - 0x6e, 0x89, 0x29, 0xad, 0x59, 0x62, 0xca, 0x38, 0xde, 0x5e, 0x59, 0x62, 0x2a, 0x88, 0x4e, 0x97, - 0x98, 0xbb, 0xd0, 0xc0, 0x7e, 0x86, 0x5b, 0x8c, 0x1e, 0x88, 0x71, 0x8b, 0x39, 0x59, 0xb9, 0xc5, - 0x54, 0x91, 0x60, 0xcd, 0x16, 0x53, 0xcb, 0x6f, 0x31, 0x13, 0xb8, 0x79, 0xf5, 0x26, 0x62, 0xfd, - 0xa2, 0xf6, 0x03, 0xa8, 0xc7, 0x86, 0xc8, 0x24, 0xfb, 0x6e, 0x31, 0xcf, 0x8a, 0x92, 0x68, 0x46, - 0x6d, 0xff, 0xae, 0x04, 0x37, 0x14, 0xc1, 0x57, 0x2c, 0x08, 0xb8, 0xbc, 0xbe, 0x81, 0x77, 0xa1, - 0xc6, 0x3c, 0x2f, 0xe1, 0x42, 0xa4, 0x56, 0x33, 0xa0, 0xb2, 0xcf, 0x0b, 0x14, 0x80, 0x66, 0xab, - 0x53, 0x03, 0x29, 0xdb, 0x2b, 0xdf, 0xa1, 0xd5, 0xea, 0x14, 0xcf, 0x0a, 0x87, 0x0b, 0x87, 0xae, - 0x9f, 0x78, 0x56, 0x92, 0x95, 0xef, 0xd5, 0x50, 0xa0, 0xf7, 0xe5, 0x14, 0x54, 0xd4, 0x31, 0x93, - 0x13, 0x33, 0x7b, 0xe2, 0x59, 0xf5, 0x92, 0xac, 0x84, 0xe3, 0xf6, 0xd7, 0xca, 0xd7, 0xf4, 0xd4, - 0xdf, 0x8d, 0x9c, 0xbf, 0xd5, 0x7d, 0xd4, 0x8a, 0x8e, 0x7d, 0xa9, 0x41, 0x35, 0x80, 0x5e, 0xf5, - 0x3d, 0x8f, 0x87, 0xa6, 0x21, 0x19, 0x68, 0xfd, 0x30, 0x6a, 0x1f, 0xea, 0x08, 0x2b, 0x18, 0x4b, - 0x90, 0x0f, 0xa1, 0x6e, 0x6a, 0x5e, 0x5a, 0xad, 0xef, 0x16, 0xad, 0x5f, 0xa0, 0xa7, 0x19, 0xb1, - 0xfd, 0x07, 0x4b, 0x87, 0xff, 0x09, 0xbb, 0xe4, 0x5e, 0xcf, 0xd8, 0x32, 0x67, 0x65, 0xab, 0x68, - 0xe5, 0x55, 0xeb, 0xf8, 0x2e, 0x34, 0x9e, 0xb3, 0xcb, 0x68, 0x96, 0xf8, 0x92, 0x1b, 0xe3, 0x2f, - 0x10, 0xaa, 0x93, 0xb9, 0x13, 0xe6, 0xe3, 0x16, 0x58, 0x41, 0x57, 0xd6, 0x10, 0xde, 0xf7, 0xae, - 0x49, 0xd9, 0x07, 0xd0, 0xd2, 0xd3, 0x97, 0x93, 0x8f, 0xcc, 0xa6, 0xc6, 0xe1, 0x78, 0x68, 0xff, - 0xda, 0x82, 0xd7, 0x57, 0xce, 0x03, 0x6b, 0x22, 0x67, 0xb9, 0x3b, 0xea, 0x1b, 0x14, 0xba, 0xe3, - 0x10, 0xee, 0x4d, 0x74, 0x01, 0x70, 0x58, 0xe2, 0x4e, 0xfc, 0x4b, 0xee, 0x88, 0x59, 0x1c, 0x47, - 0x89, 0x74, 0x78, 0xc8, 0xce, 0x02, 0x33, 0x0b, 0xd6, 0xe9, 0xae, 0x21, 0xeb, 0x69, 0xaa, 0x13, - 0x4d, 0x34, 0xd4, 0x34, 0xf6, 0xef, 0x2d, 0xdd, 0x3a, 0x4e, 0xd5, 0x30, 0xaf, 0xd6, 0x03, 0x9e, - 0xbc, 0xe4, 0xfa, 0xf9, 0x29, 0x54, 0xcd, 0x3e, 0xa0, 0xde, 0xd3, 0x5e, 0x9e, 0xa1, 0x72, 0x02, - 0xf7, 0x4e, 0x17, 0x9b, 0x02, 0x35, 0x4c, 0xf6, 0x47, 0xd0, 0xcc, 0xa1, 0x49, 0x13, 0x6a, 0xe3, - 0xd1, 0xc1, 0xe8, 0xe8, 0xab, 0x51, 0xe7, 0x35, 0x05, 0x9c, 0xd2, 0xf1, 0xc9, 0xe9, 0x70, 0xd0, - 0xb1, 0xc8, 0x0d, 0xd8, 0x1c, 0x8f, 0x10, 0xfc, 0xea, 0x88, 0x9e, 0x3e, 0xf9, 0xba, 0x53, 0xb2, - 0xbf, 0x2d, 0xeb, 0x59, 0xfa, 0x59, 0x6e, 0x57, 0x31, 0x83, 0xcd, 0x1a, 0xe5, 0x09, 0x54, 0x9e, - 0x27, 0xd1, 0x34, 0x0d, 0x05, 0x75, 0x56, 0x17, 0x92, 0x91, 0xa9, 0xd9, 0x25, 0x19, 0xa9, 0xd0, - 0x70, 0x27, 0x2a, 0xf2, 0xc2, 0xf3, 0x74, 0x8e, 0x59, 0x20, 0x94, 0x4b, 0xcc, 0xf4, 0xa7, 0xcb, - 0xa9, 0x59, 0x11, 0x33, 0x5c, 0x0f, 0xff, 0xc0, 0x48, 0xb8, 0x88, 0xa3, 0x50, 0xa4, 0x69, 0x99, - 0xc1, 0xaa, 0x16, 0x27, 0x3c, 0x0e, 0x7c, 0xcd, 0xac, 0x43, 0xa4, 0x61, 0x30, 0x3d, 0x49, 0xf8, - 0xea, 0x9d, 0xac, 0x8e, 0x96, 0xfd, 0x5e, 0xd1, 0xb2, 0x2b, 0x6e, 0xbd, 0xf7, 0xec, 0xca, 0xd6, - 0xb6, 0x72, 0x93, 0xd3, 0x3e, 0x6c, 0x64, 0x0d, 0xfc, 0xc7, 0x40, 0xae, 0x72, 0x5e, 0xf1, 0xc5, - 0xf1, 0x70, 0x34, 0xd8, 0x1f, 0x7d, 0xd1, 0xb1, 0x48, 0x0b, 0xea, 0xbd, 0x7e, 0x7f, 0x78, 0xac, - 0x3c, 0x53, 0x52, 0xd0, 0x60, 0xd8, 0x7f, 0xba, 0x3f, 0x1a, 0x0e, 0x3a, 0x65, 0x05, 0xf5, 0x7b, - 0xa3, 0xfe, 0xf0, 0xe9, 0x70, 0xd0, 0xa9, 0xd8, 0x7f, 0xb7, 0x74, 0x67, 0xef, 0x17, 0x56, 0xa6, - 0x01, 0x77, 0x7d, 0xb1, 0xfe, 0xbf, 0x98, 0x5d, 0x68, 0x18, 0x7b, 0xee, 0xa7, 0x91, 0xb6, 0x40, - 0x90, 0x9f, 0xc0, 0x96, 0x67, 0xf8, 0x9d, 0x42, 0xe4, 0xbd, 0xbf, 0x3c, 0x23, 0xad, 0x7a, 0xe5, - 0x5e, 0x7a, 0x30, 0xe6, 0x69, 0x7b, 0x05, 0xd8, 0x7e, 0x17, 0xda, 0x45, 0x8a, 0xc2, 0x65, 0x5f, - 0x2b, 0x5c, 0xd6, 0xb2, 0xbf, 0xb3, 0x60, 0x6b, 0xe9, 0xbf, 0xee, 0xf5, 0xdd, 0x66, 0x79, 0x39, - 0x2c, 0x5d, 0x59, 0x0e, 0xc9, 0xbb, 0x40, 0xf2, 0x24, 0x4e, 0x7e, 0xca, 0xee, 0xe4, 0x08, 0xf5, - 0xb6, 0x99, 0x6f, 0x5f, 0x95, 0x57, 0x6a, 0x5f, 0x02, 0x80, 0xb2, 0x17, 0x66, 0xd4, 0xcb, 0xb7, - 0x75, 0xab, 0xd8, 0xd6, 0x0f, 0xa0, 0x69, 0x3e, 0xd6, 0x9c, 0xaa, 0xde, 0x53, 0x42, 0x3b, 0xff, - 0xcf, 0xe2, 0x25, 0xbd, 0xc5, 0xe7, 0x9d, 0x43, 0xf3, 0x75, 0xc7, 0x08, 0xdd, 0x53, 0x0c, 0x34, - 0xcf, 0x6d, 0xff, 0xd6, 0x82, 0xb6, 0xd2, 0x2a, 0xf7, 0xe6, 0xef, 0x43, 0x33, 0xc9, 0xa0, 0xb4, - 0x0b, 0x6c, 0x2f, 0xe4, 0x2f, 0x48, 0x69, 0x9e, 0x90, 0x3c, 0x82, 0x6d, 0x31, 0x3b, 0x4b, 0x3b, - 0xc9, 0x97, 0x22, 0x0a, 0x1f, 0xcf, 0x25, 0x4f, 0xfb, 0xeb, 0xca, 0x67, 0xe4, 0x5d, 0xb8, 0x91, - 0x2e, 0x5d, 0x0b, 0x06, 0xbd, 0x89, 0x5e, 0x7d, 0x60, 0xff, 0xc6, 0x82, 0xa6, 0x52, 0xd6, 0xfc, - 0x77, 0x8f, 0xd3, 0x5e, 0xe6, 0x51, 0x75, 0x5c, 0xd9, 0x56, 0x6e, 0x41, 0xd5, 0xfc, 0x7d, 0x63, - 0x1a, 0xba, 0xf9, 0xf7, 0x26, 0x17, 0x13, 0x95, 0x42, 0x4c, 0xec, 0x42, 0xc3, 0xb4, 0x29, 0x2e, - 0xba, 0x1b, 0x38, 0x83, 0x2e, 0x10, 0x8b, 0xf4, 0xa8, 0xe6, 0xa7, 0x9c, 0x3f, 0x99, 0xd9, 0xc3, - 0xa8, 0xa6, 0xc6, 0xdd, 0x28, 0x24, 0x1f, 0x41, 0x95, 0xe1, 0x09, 0x75, 0x6c, 0x3f, 0xb2, 0x8b, - 0xa1, 0x50, 0x20, 0xde, 0xd3, 0x3f, 0xd4, 0x70, 0x90, 0xb7, 0x60, 0x33, 0x0a, 0x3c, 0x43, 0x32, - 0xce, 0xca, 0x7b, 0x11, 0x49, 0xde, 0xc3, 0x4b, 0x28, 0xc8, 0x6c, 0x35, 0xaf, 0xaf, 0x7c, 0x05, - 0x4d, 0xa9, 0x54, 0xbb, 0xab, 0x1a, 0xed, 0x6e, 0xc0, 0xe6, 0xc1, 0xf0, 0xeb, 0x7e, 0x8f, 0x0e, - 0x9c, 0xde, 0x60, 0x80, 0x99, 0x44, 0xa0, 0xdd, 0xeb, 0xf7, 0x8f, 0xc6, 0xa3, 0xd3, 0x13, 0x83, - 0xb3, 0xc8, 0x4d, 0xd8, 0x4a, 0xc9, 0x06, 0xc3, 0xa7, 0x43, 0x5d, 0x5f, 0xb6, 0xa1, 0x93, 0x11, - 0xd2, 0xe1, 0xe1, 0xd1, 0x33, 0xac, 0x33, 0x00, 0xd5, 0xa7, 0x47, 0xfd, 0x03, 0x55, 0x65, 0x54, - 0x52, 0x8e, 0x47, 0x06, 0xda, 0x20, 0x5b, 0xd0, 0x1c, 0xef, 0x0f, 0x9c, 0xf1, 0xf1, 0xa0, 0xa7, - 0x04, 0x54, 0x49, 0x07, 0x5a, 0xa3, 0xde, 0xe1, 0xd0, 0xe9, 0x3f, 0xe9, 0x8d, 0xbe, 0x18, 0x0e, - 0x3a, 0x35, 0xfb, 0x1b, 0xdd, 0xed, 0x72, 0xdf, 0x66, 0xc8, 0xff, 0xe7, 0x3e, 0xe4, 0xe8, 0x38, - 0x5c, 0x73, 0xbd, 0xc5, 0x47, 0x9c, 0xcc, 0x3d, 0xa5, 0x9c, 0x7b, 0x1e, 0x6f, 0x7e, 0xd3, 0xdc, - 0x7b, 0xef, 0xe3, 0x94, 0xf5, 0xac, 0x8a, 0xa7, 0xf7, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0x0a, - 0x4f, 0x5b, 0xfc, 0x39, 0x1d, 0x00, 0x00, + // 2670 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x39, 0xcd, 0x73, 0xdb, 0xc6, + 0xf5, 0x01, 0x49, 0xf1, 0xe3, 0x91, 0xa2, 0xe8, 0xb5, 0x63, 0xd3, 0xb2, 0x32, 0xb6, 0x91, 0x64, + 0xe2, 0xdf, 0x6f, 0x52, 0xa5, 0x75, 0x9a, 0xa6, 0xcd, 0xc7, 0x24, 0x34, 0xc9, 0xc6, 0xb2, 0x2c, + 0x4a, 0xb3, 0x12, 0x9d, 0x26, 0xd3, 0x19, 0xcc, 0x0a, 0x58, 0x8b, 0xa8, 0x40, 0x00, 0xc5, 0x2e, + 0xe5, 0xb2, 0xb7, 0xfe, 0x0b, 0xbd, 0xb4, 0xc7, 0x9c, 0xdb, 0x5b, 0x67, 0x72, 0xeb, 0xa1, 0xc7, + 0xde, 0x7a, 0xe8, 0xb1, 0x3d, 0xf4, 0xdc, 0xbf, 0xa0, 0xc7, 0xce, 0xdb, 0x5d, 0x80, 0x00, 0x45, + 0xaa, 0xf6, 0xf4, 0xd4, 0x13, 0xf7, 0x3d, 0xbc, 0xf7, 0xf0, 0xf6, 0x7d, 0x3f, 0x10, 0x36, 0x63, + 0xe6, 0x27, 0x7e, 0x78, 0xb6, 0x1b, 0x27, 0x91, 0x8c, 0x48, 0x5d, 0xfd, 0x9c, 0xce, 0x9e, 0x6f, + 0x5f, 0x17, 0xf3, 0xd0, 0x75, 0x04, 0x97, 0xd2, 0x0f, 0xcf, 0x84, 0x7e, 0xbc, 0x6d, 0xb3, 0x38, + 0x0e, 0x7c, 0x97, 0x49, 0x3f, 0x0a, 0x9d, 0x29, 0x97, 0xcc, 0x63, 0x92, 0x39, 0x53, 0x2e, 0x04, + 0x3b, 0xe3, 0x9a, 0xc6, 0x66, 0x70, 0xe7, 0xc7, 0x5c, 0xba, 0x13, 0x3f, 0x3c, 0x7b, 0xc4, 0xdc, + 0x73, 0xee, 0x8d, 0xe3, 0x01, 0x93, 0x6c, 0xc0, 0x25, 0xf3, 0x03, 0x41, 0xee, 0x42, 0x53, 0x31, + 0x85, 0xb3, 0xe9, 0x29, 0x4f, 0xba, 0xd6, 0x3d, 0xeb, 0xc1, 0x26, 0x05, 0x44, 0x8d, 0x14, 0x86, + 0xdc, 0x87, 0x96, 0x8c, 0x24, 0x0b, 0x52, 0x8a, 0x92, 0xa2, 0x68, 0x2a, 0x9c, 0x26, 0xb1, 0xff, + 0xb1, 0x01, 0x55, 0x94, 0x3d, 0x8b, 0xc9, 0x0d, 0xd8, 0x70, 0x83, 0xc8, 0x3d, 0x57, 0x82, 0x2a, + 0x54, 0x03, 0xa4, 0x0d, 0x25, 0xdf, 0x53, 0x9c, 0x0d, 0x5a, 0xf2, 0x3d, 0xf2, 0x19, 0xd4, 0xdd, + 0x28, 0x94, 0xcc, 0x95, 0xa2, 0x5b, 0xbe, 0x57, 0x7e, 0xd0, 0x7c, 0xf8, 0xe6, 0x6e, 0x7a, 0xd3, + 0xdd, 0xe3, 0x79, 0xe8, 0xee, 0x85, 0x42, 0xb2, 0x20, 0x50, 0x17, 0xeb, 0x6b, 0xca, 0x67, 0x0f, + 0x69, 0xc6, 0x44, 0x7e, 0x04, 0x4d, 0x37, 0x9a, 0x4e, 0x67, 0xa1, 0x2f, 0x7d, 0x2e, 0xba, 0x15, + 0x25, 0xe3, 0x56, 0x51, 0x46, 0xdf, 0x10, 0xcc, 0x69, 0x9e, 0x96, 0x1c, 0xc2, 0x56, 0x2a, 0xc6, + 0xd8, 0xa0, 0xbb, 0x71, 0xcf, 0x7a, 0xd0, 0x7c, 0xf8, 0xf6, 0x82, 0xfd, 0x0a, 0x83, 0xd1, 0x65, + 0x6e, 0x32, 0x06, 0x92, 0x93, 0x9f, 0xca, 0xac, 0xbe, 0x8a, 0xcc, 0x15, 0x02, 0xc8, 0xfb, 0x50, + 0x8b, 0x93, 0xe8, 0xb9, 0x1f, 0xf0, 0x6e, 0x4d, 0xc9, 0xba, 0xbd, 0x90, 0x95, 0xca, 0x38, 0xd2, + 0x04, 0x34, 0xa5, 0x24, 0x07, 0xd0, 0x36, 0xc7, 0x54, 0x8f, 0xfa, 0xab, 0xe8, 0xb1, 0xc4, 0x4c, + 0xde, 0x83, 0x9a, 0x89, 0xb8, 0x6e, 0x43, 0xc9, 0x79, 0xbd, 0x68, 0xe2, 0x63, 0xfd, 0x90, 0xa6, + 0x54, 0x68, 0xdc, 0x34, 0x44, 0x53, 0x05, 0xe0, 0x95, 0x8c, 0xbb, 0xc4, 0x4d, 0x3e, 0x80, 0xfa, + 0x39, 0x9f, 0xbb, 0x2c, 0xf1, 0x44, 0xb7, 0xb9, 0x6c, 0x06, 0x54, 0xa1, 0x17, 0x04, 0xfb, 0x86, + 0x80, 0x66, 0xa4, 0xa8, 0x47, 0x7a, 0x4e, 0xf5, 0x68, 0xbd, 0x92, 0x1e, 0x4b, 0xdc, 0xf6, 0x1f, + 0x2b, 0xd0, 0x3a, 0x98, 0x05, 0xd2, 0xef, 0xb9, 0x6e, 0x34, 0x0b, 0x25, 0x21, 0x50, 0x09, 0xd9, + 0x94, 0xab, 0x38, 0x6f, 0x50, 0x75, 0x26, 0x3b, 0xd0, 0x90, 0xfe, 0x94, 0x0b, 0xc9, 0xa6, 0xb1, + 0x8a, 0xf6, 0x32, 0x5d, 0x20, 0xf0, 0xa9, 0xef, 0xf1, 0x50, 0xfa, 0x6e, 0x14, 0x76, 0xcb, 0x8a, + 0x6d, 0x81, 0x20, 0x9f, 0x03, 0xb8, 0x51, 0x10, 0x25, 0xce, 0x84, 0x89, 0x89, 0x09, 0xe8, 0xfb, + 0x0b, 0x65, 0xf3, 0xef, 0xde, 0xed, 0x47, 0x41, 0x34, 0x4b, 0x1e, 0x33, 0x31, 0xa1, 0x0d, 0xc5, + 0x84, 0x47, 0xd2, 0x85, 0x9a, 0x02, 0xf6, 0x3c, 0x15, 0xd0, 0x65, 0x9a, 0x82, 0xe4, 0x9d, 0xcc, + 0x1a, 0x8e, 0x29, 0x2f, 0x2a, 0x3c, 0x1b, 0xb4, 0x6d, 0xd0, 0x47, 0x1a, 0x4b, 0x6e, 0x41, 0xed, + 0x9c, 0xcf, 0x9d, 0x99, 0xef, 0xa9, 0x98, 0x6b, 0xd0, 0xea, 0x39, 0x9f, 0x8f, 0x7d, 0x8f, 0x7c, + 0x02, 0x55, 0x7f, 0xca, 0xce, 0x38, 0xc6, 0x13, 0x6a, 0xf6, 0xd6, 0x1a, 0xcd, 0xf6, 0xd4, 0x7d, + 0xe4, 0x7c, 0x0f, 0x89, 0xa9, 0xe1, 0xd9, 0xb6, 0x01, 0x16, 0x2a, 0x63, 0x89, 0xf0, 0x43, 0x8f, + 0xff, 0xa2, 0x6b, 0xdd, 0x2b, 0x3f, 0x28, 0x53, 0x0d, 0x6c, 0xff, 0xcd, 0x82, 0xcd, 0x02, 0x77, + 0x5e, 0x19, 0xab, 0xa0, 0x4c, 0x6a, 0xfa, 0x52, 0xce, 0xf4, 0x5d, 0xa8, 0xc5, 0x6c, 0x1e, 0x44, + 0xcc, 0x53, 0xa6, 0x6d, 0xd1, 0x14, 0xc4, 0xd7, 0xbd, 0xf0, 0x3d, 0x89, 0x36, 0x45, 0xa3, 0x68, + 0x80, 0xdc, 0x84, 0xea, 0x84, 0xfb, 0x67, 0x13, 0x69, 0x6c, 0x65, 0x20, 0xb2, 0x0d, 0x75, 0x4c, + 0x00, 0xe1, 0xff, 0x92, 0x2b, 0x1b, 0x95, 0x69, 0x06, 0x93, 0x37, 0x61, 0x33, 0x51, 0x27, 0x47, + 0xb2, 0xe4, 0x8c, 0x4b, 0x65, 0xa3, 0x32, 0x6d, 0x69, 0xe4, 0x89, 0xc2, 0x2d, 0x0a, 0x60, 0x3d, + 0x57, 0x00, 0xed, 0xbf, 0x5a, 0x70, 0xfd, 0x69, 0xe4, 0xb2, 0xc0, 0x58, 0xfa, 0xc8, 0x28, 0xf7, + 0x01, 0x54, 0xce, 0xf9, 0x5c, 0x28, 0x53, 0x14, 0xfc, 0xbd, 0x82, 0x78, 0x77, 0x9f, 0xcf, 0xa9, + 0x22, 0x27, 0x1f, 0x41, 0x6b, 0x8a, 0x66, 0x67, 0xda, 0xec, 0xca, 0x12, 0xcd, 0x87, 0x37, 0x57, + 0x3b, 0x85, 0x16, 0x68, 0xf1, 0x86, 0x31, 0x13, 0xe2, 0x45, 0x94, 0x78, 0x26, 0x0a, 0x33, 0x78, + 0xfb, 0x3b, 0x50, 0xde, 0xe7, 0xf3, 0x95, 0xb1, 0x4d, 0xa0, 0x82, 0x4d, 0x41, 0xbd, 0xaa, 0x45, + 0xd5, 0xd9, 0xfe, 0xc6, 0x82, 0x0e, 0xea, 0x98, 0xaf, 0xd6, 0x6b, 0x3a, 0xc0, 0x3b, 0xb0, 0xe5, + 0xe7, 0xa8, 0x9c, 0xac, 0x1d, 0xb4, 0xf3, 0xe8, 0x3d, 0x4f, 0xf5, 0x23, 0x7e, 0xe1, 0xbb, 0xdc, + 0x91, 0xf3, 0x98, 0x1b, 0x0d, 0x41, 0xa3, 0x4e, 0xe6, 0x31, 0xcf, 0x94, 0xab, 0x14, 0xbd, 0x7f, + 0xc1, 0x13, 0xe1, 0x47, 0xa1, 0x72, 0xe7, 0x26, 0x4d, 0x41, 0xfb, 0x9f, 0x16, 0xdc, 0x5a, 0xd3, + 0x50, 0x5e, 0xb2, 0x57, 0xbd, 0x09, 0x9b, 0xa6, 0x2a, 0x3a, 0x2a, 0x9c, 0x8d, 0x4a, 0x2d, 0x83, + 0xd4, 0xb1, 0x7a, 0x1b, 0xea, 0x3c, 0x14, 0x4e, 0x4e, 0xb1, 0x1a, 0x0f, 0xc5, 0x08, 0x75, 0xbb, + 0x0f, 0xad, 0x80, 0x09, 0xe9, 0xcc, 0x62, 0x8f, 0x49, 0xae, 0x73, 0xb3, 0x42, 0x9b, 0x88, 0x1b, + 0x6b, 0x14, 0xde, 0x59, 0xcc, 0x85, 0xe4, 0x53, 0x47, 0xb2, 0x33, 0x6c, 0x1d, 0x65, 0xbc, 0xb3, + 0x46, 0x9d, 0xb0, 0x33, 0x41, 0xde, 0x86, 0x76, 0x80, 0x01, 0xe1, 0x84, 0xbe, 0x7b, 0xae, 0x5e, + 0xa2, 0xd3, 0x73, 0x53, 0x61, 0x47, 0x06, 0x69, 0xff, 0xaa, 0x0a, 0xb7, 0xd7, 0x76, 0x4f, 0xf2, + 0x5d, 0xb8, 0x91, 0x57, 0xc4, 0x51, 0xbc, 0xc1, 0xdc, 0xdc, 0x9e, 0xe4, 0x14, 0x7a, 0xaa, 0x9f, + 0xfc, 0x0f, 0x9b, 0x02, 0x7d, 0xcb, 0x3c, 0x8f, 0x7b, 0xaa, 0x6f, 0xd5, 0xa9, 0x06, 0x30, 0x4e, + 0x4e, 0xd1, 0xc9, 0xdc, 0x53, 0x6d, 0xa9, 0x4e, 0x53, 0x10, 0xe9, 0xa7, 0x33, 0xd4, 0xa9, 0xa9, + 0xe9, 0x15, 0x80, 0xf4, 0x09, 0x9f, 0x46, 0x17, 0xdc, 0x53, 0xed, 0xa3, 0x4e, 0x53, 0x90, 0xdc, + 0x83, 0xd6, 0x84, 0x09, 0x47, 0x89, 0x75, 0x66, 0xa2, 0xbb, 0xa9, 0x1e, 0xc3, 0x84, 0x89, 0x1e, + 0xa2, 0xc6, 0xd8, 0x3b, 0xaf, 0x5f, 0xf0, 0xc4, 0x7f, 0x9e, 0x8e, 0x67, 0x42, 0x32, 0x39, 0x13, + 0xdd, 0xb6, 0xaa, 0x19, 0x24, 0xff, 0xe8, 0x58, 0x3d, 0x51, 0x83, 0x56, 0x32, 0x13, 0x32, 0xa5, + 0xdc, 0x52, 0x94, 0x4d, 0x85, 0x33, 0x24, 0x9f, 0xc2, 0x1d, 0x33, 0x7d, 0x38, 0x09, 0xff, 0xf9, + 0x8c, 0x0b, 0xa9, 0xbd, 0xa8, 0x58, 0x78, 0xb7, 0xa3, 0x38, 0xba, 0x86, 0x84, 0x6a, 0x0a, 0xe5, + 0x4c, 0xe4, 0xe7, 0xeb, 0xd9, 0x75, 0x1a, 0x5c, 0x5b, 0xcb, 0xde, 0x57, 0x99, 0xf1, 0x19, 0xec, + 0x2c, 0xb3, 0xa3, 0x39, 0x24, 0x37, 0xaf, 0x27, 0x8a, 0xff, 0x76, 0x91, 0x9f, 0x2a, 0x0a, 0xfd, + 0xfe, 0xf5, 0x02, 0xb4, 0x02, 0xd7, 0xd7, 0x0b, 0xd0, 0x1a, 0xdc, 0x87, 0x96, 0xe7, 0x8b, 0x38, + 0x60, 0x73, 0x1d, 0x5f, 0x37, 0x94, 0xeb, 0x9b, 0x06, 0x87, 0x31, 0x66, 0xbf, 0xb8, 0x9c, 0xef, + 0x69, 0xcb, 0x5e, 0x9d, 0xef, 0x97, 0x82, 0xba, 0xb4, 0x22, 0xa8, 0x97, 0x23, 0xb7, 0x7c, 0x29, + 0x72, 0xed, 0x47, 0xb0, 0xbd, 0xfc, 0xe2, 0xa3, 0xd9, 0x69, 0xe0, 0xbb, 0xfd, 0x09, 0x7b, 0xc9, + 0x5a, 0x63, 0x7f, 0x5b, 0x86, 0xcd, 0xc2, 0xe8, 0xfa, 0x1f, 0xf9, 0x5a, 0x2a, 0x31, 0xef, 0x42, + 0x33, 0x4e, 0xfc, 0x0b, 0x26, 0xb9, 0x73, 0xce, 0xe7, 0xa6, 0x03, 0x82, 0x41, 0x61, 0x45, 0xbf, + 0x87, 0x55, 0x55, 0xb8, 0x89, 0x1f, 0xa3, 0x5e, 0x2a, 0x2f, 0x5b, 0x34, 0x8f, 0xc2, 0x86, 0xf8, + 0xb3, 0xc8, 0x0f, 0x4d, 0x56, 0xd6, 0xa9, 0x81, 0xb0, 0x5d, 0xe8, 0x58, 0xe5, 0x9e, 0x6a, 0x88, + 0x75, 0x9a, 0xc1, 0x8b, 0xa4, 0xa9, 0xe5, 0x93, 0xe6, 0x10, 0x3a, 0xc6, 0xbb, 0xc2, 0x91, 0x91, + 0x83, 0x72, 0xcc, 0xd4, 0xf0, 0xf6, 0xba, 0x01, 0xdd, 0x90, 0x9f, 0x44, 0x4f, 0x22, 0x3f, 0xa4, + 0xed, 0xa4, 0x00, 0x93, 0x8f, 0xa1, 0x9e, 0x8e, 0x85, 0x66, 0x0c, 0xbd, 0xbb, 0x46, 0x90, 0x99, + 0x47, 0x05, 0xcd, 0x18, 0x70, 0xea, 0xe2, 0xa1, 0x9b, 0xcc, 0x63, 0x99, 0x25, 0xfd, 0x02, 0x81, + 0x4f, 0x45, 0xcc, 0x5d, 0xc9, 0x16, 0xa9, 0xbf, 0x40, 0x60, 0xd3, 0x32, 0xa4, 0x98, 0xc0, 0xaa, + 0x51, 0xb7, 0x94, 0xe5, 0xda, 0x0b, 0xf4, 0x3e, 0x9f, 0x0b, 0xfb, 0x2f, 0x16, 0xdc, 0xb9, 0xe2, + 0x46, 0xc6, 0x5f, 0x56, 0xe6, 0xaf, 0x37, 0x00, 0x62, 0x15, 0x1b, 0xca, 0x5d, 0xda, 0xff, 0x0d, + 0x8d, 0x41, 0x6f, 0x65, 0x4e, 0x2f, 0xe7, 0x9d, 0x7e, 0x45, 0x61, 0xbd, 0x05, 0x35, 0x77, 0xc2, + 0x24, 0x76, 0xd5, 0x0d, 0x3d, 0x2a, 0x21, 0xb8, 0xe7, 0x61, 0xdc, 0xa6, 0xab, 0xc5, 0x1c, 0x9f, + 0x56, 0xb5, 0xe3, 0x33, 0xdc, 0x9e, 0x72, 0xa2, 0x4e, 0xdf, 0x9a, 0x7e, 0x99, 0x02, 0xec, 0x5f, + 0x97, 0xa0, 0xb3, 0x1c, 0xce, 0xe4, 0xd3, 0xdc, 0xda, 0x76, 0x69, 0x62, 0x59, 0xd3, 0x78, 0x72, + 0x4b, 0xdb, 0x17, 0xd0, 0x32, 0xb7, 0x46, 0xed, 0x44, 0xb7, 0xb4, 0x3c, 0x4a, 0xae, 0xcf, 0x1f, + 0xda, 0x8c, 0xb3, 0xb3, 0x20, 0x1f, 0x43, 0x2d, 0x9d, 0x7c, 0xca, 0x2a, 0x1e, 0xae, 0x50, 0x23, + 0x1d, 0x82, 0x52, 0x8e, 0xff, 0x62, 0x75, 0xb4, 0x3f, 0x84, 0x2d, 0xf5, 0x14, 0x15, 0x32, 0x7d, + 0xe0, 0xe5, 0xf2, 0xfa, 0x13, 0xb8, 0x91, 0x32, 0x1e, 0xe8, 0xe5, 0x5c, 0x50, 0xce, 0x5e, 0x96, + 0xfb, 0x73, 0xb8, 0xa9, 0x36, 0x1d, 0x57, 0xfa, 0x17, 0xbe, 0x9c, 0xf7, 0x79, 0x28, 0x79, 0x72, + 0x05, 0x7f, 0x07, 0xca, 0xbe, 0xa7, 0xcd, 0xdb, 0xa2, 0x78, 0xb4, 0x07, 0xba, 0x36, 0x15, 0x25, + 0xf4, 0x5c, 0x97, 0xab, 0x24, 0x78, 0x59, 0x29, 0x43, 0x1d, 0xe4, 0x45, 0x29, 0x03, 0x5f, 0x4c, + 0x7d, 0x21, 0x5e, 0x41, 0xcc, 0x37, 0x16, 0xb4, 0x50, 0xce, 0xa3, 0x28, 0x3a, 0x9f, 0xb2, 0xe4, + 0x7c, 0x3d, 0xe3, 0x2c, 0x09, 0x8c, 0x19, 0xf0, 0x98, 0x4d, 0x7e, 0xe5, 0xdc, 0xe4, 0x77, 0x07, + 0x1a, 0xaa, 0x6a, 0x3b, 0x48, 0xab, 0xb3, 0xa2, 0xae, 0x10, 0xe3, 0x24, 0xc8, 0xb7, 0xef, 0x8d, + 0x62, 0xfb, 0x7e, 0x03, 0xc0, 0xe3, 0x01, 0xc7, 0x31, 0x88, 0x49, 0x95, 0x15, 0x15, 0xda, 0x30, + 0x98, 0x9e, 0xb4, 0x9f, 0xe8, 0xe0, 0xef, 0x07, 0x9c, 0x25, 0x8f, 0x7d, 0x21, 0xa3, 0x64, 0x9e, + 0xcf, 0x31, 0xab, 0x90, 0x63, 0x6f, 0x00, 0xb8, 0x48, 0xa8, 0x65, 0x95, 0xb4, 0x2c, 0x83, 0xe9, + 0x49, 0xfb, 0xcf, 0x16, 0x10, 0x14, 0x66, 0x76, 0xf5, 0x23, 0xdf, 0x95, 0xb3, 0x84, 0xaf, 0x9c, + 0xb1, 0x73, 0x4b, 0x4c, 0x69, 0xcd, 0x12, 0x53, 0x56, 0xe3, 0xed, 0xa5, 0x25, 0xa6, 0xa2, 0xd0, + 0xe9, 0x12, 0x73, 0x07, 0x1a, 0xaa, 0x9f, 0xa9, 0x2d, 0x46, 0x0f, 0xc4, 0x6a, 0x8b, 0x39, 0x5e, + 0xb9, 0xc5, 0x54, 0x15, 0xc1, 0x9a, 0x2d, 0xa6, 0x96, 0xdf, 0x62, 0x26, 0x70, 0xfd, 0xf2, 0x4d, + 0xc4, 0xfa, 0x45, 0xed, 0x87, 0x50, 0x8f, 0x0d, 0x91, 0x49, 0xf6, 0x9d, 0x62, 0x9e, 0x15, 0x25, + 0xd1, 0x8c, 0xda, 0xfe, 0x7d, 0x09, 0xae, 0x21, 0xc1, 0x97, 0x2c, 0x08, 0xb8, 0xbc, 0xba, 0x81, + 0x77, 0xa1, 0xc6, 0x3c, 0x2f, 0xe1, 0x42, 0xa4, 0x56, 0x33, 0x20, 0xda, 0xe7, 0x85, 0x12, 0xa0, + 0xcc, 0x56, 0xa7, 0x06, 0x42, 0xdb, 0xa3, 0xef, 0x94, 0xd5, 0xea, 0x54, 0x9d, 0x11, 0xa7, 0x16, + 0x0e, 0x5d, 0x3f, 0xd5, 0x19, 0x25, 0xa3, 0xef, 0x71, 0x28, 0xd0, 0xfb, 0x72, 0x0a, 0x22, 0x75, + 0xcc, 0xe4, 0xc4, 0xcc, 0x9e, 0xea, 0x8c, 0xbd, 0x24, 0x2b, 0xe1, 0x6a, 0xfb, 0x6b, 0xe5, 0x6b, + 0x7a, 0xea, 0xef, 0x46, 0xce, 0xdf, 0x78, 0x1f, 0x5c, 0xd1, 0x55, 0x5f, 0x6a, 0x50, 0x0d, 0x28, + 0xaf, 0xfa, 0x9e, 0xc7, 0x43, 0xd3, 0x90, 0x0c, 0xb4, 0x7e, 0x18, 0xb5, 0x0f, 0x74, 0x84, 0x15, + 0x8c, 0x25, 0xc8, 0x87, 0x50, 0x37, 0x35, 0x2f, 0xad, 0xd6, 0x77, 0x8a, 0xd6, 0x2f, 0xd0, 0xd3, + 0x8c, 0xd8, 0xfe, 0x97, 0xa5, 0xc3, 0xff, 0x98, 0x5d, 0x70, 0xaf, 0x67, 0x6c, 0x99, 0xb3, 0xb2, + 0x55, 0xb4, 0xf2, 0xaa, 0x75, 0x7c, 0x07, 0x1a, 0xcf, 0xd9, 0x45, 0x34, 0x4b, 0x7c, 0xc9, 0x8d, + 0xf1, 0x17, 0x88, 0x2b, 0xf2, 0xf2, 0x3e, 0xb4, 0xf4, 0x88, 0xe5, 0xe4, 0xc3, 0xaf, 0xa9, 0x71, + 0x7a, 0x06, 0xfc, 0x7f, 0xb8, 0xe6, 0x4e, 0x98, 0x1f, 0x3a, 0x62, 0x12, 0x25, 0x52, 0xb5, 0x43, + 0xfd, 0x95, 0xab, 0x41, 0xb7, 0xd4, 0x83, 0x63, 0xc4, 0x63, 0x5b, 0x14, 0x58, 0x43, 0x78, 0x28, + 0x8c, 0xcd, 0xf1, 0x88, 0xb1, 0xea, 0x0b, 0x47, 0x72, 0x21, 0xcd, 0x30, 0x50, 0xf5, 0xc5, 0x09, + 0x17, 0xf2, 0x49, 0xa5, 0x5e, 0xe9, 0x6c, 0xd8, 0xbf, 0xb1, 0xe0, 0xf5, 0x95, 0x13, 0xc5, 0x9a, + 0xd8, 0x5b, 0xee, 0xaf, 0xda, 0x06, 0x85, 0xfe, 0x3a, 0x84, 0xbb, 0x13, 0x5d, 0x42, 0x1c, 0x96, + 0xb8, 0x13, 0xff, 0x82, 0x3b, 0x62, 0x16, 0xc7, 0xa8, 0x3b, 0x0f, 0xd9, 0x69, 0x60, 0xa6, 0xc9, + 0x3a, 0xdd, 0x31, 0x64, 0x3d, 0x4d, 0x75, 0xac, 0x89, 0x86, 0x9a, 0xc6, 0xfe, 0x83, 0xa5, 0x9b, + 0xcf, 0x09, 0xae, 0x03, 0xb8, 0x60, 0xf0, 0xe4, 0x25, 0x17, 0xd8, 0x4f, 0xa1, 0x6a, 0x36, 0x0a, + 0x7c, 0x4f, 0x7b, 0x79, 0x0a, 0xcb, 0x09, 0xdc, 0x3d, 0x59, 0xec, 0x1a, 0xd4, 0x30, 0xd9, 0x1f, + 0x41, 0x33, 0x87, 0x26, 0x4d, 0xa8, 0x8d, 0x47, 0xfb, 0xa3, 0xc3, 0x2f, 0x47, 0x9d, 0xd7, 0x10, + 0x38, 0xa1, 0xe3, 0xe3, 0x93, 0xe1, 0xa0, 0x63, 0x91, 0x6b, 0xb0, 0x39, 0x1e, 0x29, 0xf0, 0xcb, + 0x43, 0x7a, 0xf2, 0xf8, 0xab, 0x4e, 0xc9, 0xfe, 0xa6, 0xac, 0xa7, 0xf1, 0x67, 0xb9, 0x6d, 0xc7, + 0x8c, 0x46, 0x6b, 0x94, 0x27, 0x50, 0x79, 0x9e, 0x44, 0xd3, 0x34, 0x98, 0xf0, 0x8c, 0x17, 0x92, + 0x91, 0xa9, 0xfa, 0x25, 0x19, 0x61, 0x70, 0xb9, 0x13, 0x8c, 0xdd, 0xf0, 0x2c, 0x9d, 0x84, 0x16, + 0x08, 0x74, 0x89, 0x99, 0x1f, 0x75, 0x41, 0x36, 0x4b, 0x66, 0x86, 0xeb, 0xa9, 0x4f, 0x20, 0x09, + 0x17, 0x71, 0x14, 0x8a, 0x34, 0xb1, 0x33, 0x18, 0xab, 0x79, 0xc2, 0xe3, 0xc0, 0xd7, 0xcc, 0x3a, + 0xfe, 0x1a, 0x06, 0xd3, 0x93, 0x84, 0xaf, 0xde, 0xea, 0xea, 0xca, 0xb2, 0xdf, 0x2f, 0x5a, 0x76, + 0xc5, 0xad, 0x77, 0x9f, 0x5d, 0xda, 0xfb, 0x56, 0xee, 0x82, 0xda, 0x87, 0x8d, 0x6c, 0x04, 0xf8, + 0x09, 0x90, 0xcb, 0x9c, 0x97, 0x7c, 0x71, 0x34, 0x1c, 0x0d, 0xf6, 0x46, 0x5f, 0x74, 0x2c, 0xd2, + 0x82, 0x7a, 0xaf, 0xdf, 0x1f, 0x1e, 0xa1, 0x67, 0x4a, 0x08, 0x0d, 0x86, 0xfd, 0xa7, 0x7b, 0xa3, + 0xe1, 0xa0, 0x53, 0x46, 0xa8, 0xdf, 0x1b, 0xf5, 0x87, 0x4f, 0x87, 0x83, 0x4e, 0xc5, 0xfe, 0xbb, + 0xa5, 0x67, 0x83, 0x7e, 0x61, 0xe9, 0x1a, 0x70, 0xd7, 0x17, 0xeb, 0xbf, 0xe6, 0xec, 0x40, 0xc3, + 0xd8, 0x73, 0x2f, 0x8d, 0xb4, 0x05, 0x82, 0xfc, 0x14, 0xb6, 0x3c, 0xc3, 0xef, 0x14, 0x22, 0xef, + 0xfd, 0xe5, 0x29, 0x6b, 0xd5, 0x2b, 0x77, 0xd3, 0x83, 0x31, 0x4f, 0xdb, 0x2b, 0xc0, 0xf6, 0xbb, + 0xd0, 0x2e, 0x52, 0x14, 0x2e, 0xfb, 0x5a, 0xe1, 0xb2, 0x96, 0xfd, 0xad, 0x05, 0x5b, 0x4b, 0x5f, + 0xcb, 0xd7, 0xf7, 0xab, 0xe5, 0xf5, 0xb2, 0x74, 0x69, 0xbd, 0x24, 0xef, 0x02, 0xc9, 0x93, 0x38, + 0xf9, 0x39, 0xbd, 0x93, 0x23, 0xd4, 0xb5, 0x2a, 0xdf, 0x00, 0x2b, 0xaf, 0xd4, 0x00, 0x05, 0x00, + 0x65, 0x2f, 0xcc, 0xb0, 0x98, 0x1f, 0x0c, 0xac, 0xe2, 0x60, 0xb0, 0x0f, 0x4d, 0xf3, 0x77, 0xcf, + 0x09, 0x76, 0xaf, 0x92, 0xb2, 0xf3, 0xff, 0x2d, 0x5e, 0xd2, 0x5b, 0xfc, 0x41, 0x74, 0x60, 0xfe, + 0x1f, 0x32, 0x42, 0x77, 0x91, 0x81, 0xe6, 0xb9, 0xed, 0xdf, 0x59, 0xd0, 0x46, 0xad, 0x72, 0x6f, + 0xfe, 0x01, 0x34, 0x93, 0x0c, 0x4a, 0xfb, 0xc8, 0x8d, 0x85, 0xfc, 0x05, 0x29, 0xcd, 0x13, 0x92, + 0x87, 0x70, 0x43, 0xcc, 0x4e, 0xd3, 0x5e, 0xf4, 0x44, 0x44, 0xe1, 0xa3, 0xb9, 0xe4, 0x69, 0x87, + 0x5e, 0xf9, 0x8c, 0xbc, 0x0b, 0xd7, 0xd2, 0xb5, 0x6d, 0xc1, 0xa0, 0x77, 0xd9, 0xcb, 0x0f, 0xec, + 0xdf, 0x5a, 0xd0, 0x44, 0x65, 0xcd, 0xd7, 0x7f, 0x35, 0x2f, 0x66, 0x1e, 0xc5, 0xe3, 0xca, 0xc6, + 0x74, 0x13, 0xaa, 0xe6, 0x03, 0x90, 0x19, 0x09, 0xcc, 0xf7, 0x9f, 0x5c, 0x4c, 0x54, 0x0a, 0x31, + 0xb1, 0x03, 0x0d, 0xd3, 0xe8, 0xb8, 0xe8, 0x6e, 0xa8, 0x29, 0x76, 0x81, 0x58, 0xa4, 0x47, 0x35, + 0x3f, 0x27, 0xfd, 0xc9, 0x4c, 0x2f, 0x46, 0x35, 0x1c, 0x98, 0xa3, 0x90, 0x7c, 0x04, 0x55, 0xa6, + 0x4e, 0x4a, 0xc7, 0xf6, 0x43, 0xbb, 0x18, 0x0a, 0x05, 0xe2, 0x5d, 0xfd, 0x43, 0x0d, 0x07, 0x79, + 0x0b, 0x36, 0xa3, 0xc0, 0x33, 0x24, 0xe3, 0xac, 0xbc, 0x17, 0x91, 0xe4, 0x3d, 0x75, 0x09, 0x84, + 0xcc, 0x5e, 0xf4, 0xfa, 0xca, 0x57, 0xd0, 0x94, 0x0a, 0xdb, 0x5d, 0xd5, 0x68, 0x77, 0x0d, 0x36, + 0xf7, 0x87, 0x5f, 0xf5, 0x7b, 0x74, 0xe0, 0xf4, 0x06, 0x03, 0x95, 0x49, 0x04, 0xda, 0xbd, 0x7e, + 0xff, 0x70, 0x3c, 0x3a, 0x39, 0x36, 0x38, 0x8b, 0x5c, 0x87, 0xad, 0x94, 0x6c, 0x30, 0x7c, 0x3a, + 0xd4, 0xf5, 0xe5, 0x06, 0x74, 0x32, 0x42, 0x3a, 0x3c, 0x38, 0x7c, 0xa6, 0xea, 0x0c, 0x40, 0xf5, + 0xe9, 0x61, 0x7f, 0x1f, 0xab, 0x0c, 0x26, 0xe5, 0x78, 0x64, 0xa0, 0x0d, 0xb2, 0x05, 0xcd, 0xf1, + 0xde, 0xc0, 0x19, 0x1f, 0x0d, 0x7a, 0x28, 0xa0, 0x4a, 0x3a, 0xd0, 0x1a, 0xf5, 0x0e, 0x86, 0x4e, + 0xff, 0x71, 0x6f, 0xf4, 0xc5, 0x70, 0xd0, 0xa9, 0xd9, 0x5f, 0xeb, 0x6e, 0x97, 0xfb, 0x77, 0x87, + 0x7c, 0x2f, 0xf7, 0x57, 0x90, 0x8e, 0xc3, 0x35, 0xd7, 0x5b, 0xfc, 0x0d, 0x94, 0xb9, 0xa7, 0x94, + 0x73, 0xcf, 0xa3, 0xcd, 0xaf, 0x9b, 0xbb, 0xef, 0x7d, 0x9c, 0xb2, 0x9e, 0x56, 0xd5, 0xe9, 0xfd, + 0x7f, 0x07, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x13, 0x2d, 0x88, 0x7b, 0x1d, 0x00, 0x00, } diff --git a/protocol/protobuf/pairing.proto b/protocol/protobuf/pairing.proto index 8cf7691dd..51d67009b 100644 --- a/protocol/protobuf/pairing.proto +++ b/protocol/protobuf/pairing.proto @@ -225,12 +225,15 @@ message SyncWalletAccounts { } message SyncSavedAddress { + reserved 4; bytes address = 1; string name = 2; bool favourite = 3; - uint64 chain_id = 4; bool removed = 5; uint64 update_clock = 7; + string chain_short_names = 8; + string ens = 9; + bool is_test= 10; } message SyncCommunitySettings { diff --git a/services/ext/api.go b/services/ext/api.go index 7066bbcca..4666629a8 100644 --- a/services/ext/api.go +++ b/services/ext/api.go @@ -930,19 +930,11 @@ func (api *PublicAPI) DestroyWalletConnectSession(ctx context.Context, PeerID st // Saved Addresses APIs func (api *PublicAPI) UpsertSavedAddress(ctx context.Context, sa wallet.SavedAddress) error { - if sa.ChainID == 0 { - sa.ChainID = api.service.rpcClient.UpstreamChainID - } - return api.service.messenger.UpsertSavedAddress(ctx, sa) } -func (api *PublicAPI) DeleteSavedAddress(ctx context.Context, chainID uint64, address ethcommon.Address) error { - if chainID == 0 { - chainID = api.service.rpcClient.UpstreamChainID - } - - return api.service.messenger.DeleteSavedAddress(ctx, chainID, address) +func (api *PublicAPI) DeleteSavedAddress(ctx context.Context, address ethcommon.Address, ens string, isTest bool) error { + return api.service.messenger.DeleteSavedAddress(ctx, address, ens, isTest) } // PushNotifications server endpoints diff --git a/services/wallet/api.go b/services/wallet/api.go index 131badaf5..c321714bb 100644 --- a/services/wallet/api.go +++ b/services/wallet/api.go @@ -202,24 +202,21 @@ func (api *API) DeleteCustomTokenByChainID(ctx context.Context, chainID uint64, func (api *API) GetSavedAddresses(ctx context.Context) ([]SavedAddress, error) { log.Debug("call to get saved addresses") - rst, err := api.s.savedAddressesManager.GetSavedAddressesForChainID(api.s.rpcClient.UpstreamChainID) + rst, err := api.s.savedAddressesManager.GetSavedAddresses() log.Debug("result from database for saved addresses", "len", len(rst)) return rst, err } func (api *API) AddSavedAddress(ctx context.Context, sa SavedAddress) error { log.Debug("call to create or edit saved address") - if sa.ChainID == 0 { - sa.ChainID = api.s.rpcClient.UpstreamChainID - } _, err := api.s.savedAddressesManager.UpdateMetadataAndUpsertSavedAddress(sa) log.Debug("result from database for create or edit saved address", "err", err) return err } -func (api *API) DeleteSavedAddress(ctx context.Context, address common.Address) error { +func (api *API) DeleteSavedAddress(ctx context.Context, address common.Address, ens string, isTest bool) error { log.Debug("call to remove saved address") - _, err := api.s.savedAddressesManager.DeleteSavedAddress(api.s.rpcClient.UpstreamChainID, address) + _, err := api.s.savedAddressesManager.DeleteSavedAddress(address, ens, isTest, uint64(time.Now().Unix())) log.Debug("result from database for remove saved address", "err", err) return err } diff --git a/services/wallet/saved_addresses.go b/services/wallet/saved_addresses.go index 3b8e3ed6b..7dbd422ca 100644 --- a/services/wallet/saved_addresses.go +++ b/services/wallet/saved_addresses.go @@ -15,16 +15,18 @@ type savedAddressMeta struct { type SavedAddress struct { Address common.Address `json:"address"` - // TODO: Add Emoji and Networks - // Emoji string `json:"emoji"` - Name string `json:"name"` - Favourite bool `json:"favourite"` - ChainID uint64 `json:"chainId"` + // TODO: Add Emoji + // Emoji string `json:"emoji"` + Name string `json:"name"` + Favourite bool `json:"favourite"` + ChainShortNames string `json:"chainShortNames"` // used with address only, not with ENSName + ENSName string `json:"ens"` + IsTest bool `json:"isTest"` savedAddressMeta } func (s *SavedAddress) ID() string { - return fmt.Sprintf("%s-%d", s.Address.Hex(), s.ChainID) + return fmt.Sprintf("%s-%s-%t", s.Address.Hex(), s.ENSName, s.IsTest) } type SavedAddressesManager struct { @@ -35,7 +37,7 @@ func NewSavedAddressesManager(db *sql.DB) *SavedAddressesManager { return &SavedAddressesManager{db: db} } -const rawQueryColumnsOrder = "address, name, favourite, network_id, removed, update_clock" +const rawQueryColumnsOrder = "address, name, favourite, removed, update_clock, chain_short_names, ens_name, is_test" // getSavedAddressesFromDBRows retrieves all data based on SELECT Query using rawQueryColumnsOrder func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) { @@ -43,7 +45,7 @@ func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) { for rows.Next() { sa := SavedAddress{} // based on rawQueryColumnsOrder - err := rows.Scan(&sa.Address, &sa.Name, &sa.Favourite, &sa.ChainID, &sa.Removed, &sa.UpdateClock) + err := rows.Scan(&sa.Address, &sa.Name, &sa.Favourite, &sa.Removed, &sa.UpdateClock, &sa.ChainShortNames, &sa.ENSName, &sa.IsTest) if err != nil { return nil, err } @@ -54,8 +56,13 @@ func getSavedAddressesFromDBRows(rows *sql.Rows) ([]SavedAddress, error) { return addresses, nil } -func (sam *SavedAddressesManager) GetSavedAddressesForChainID(chainID uint64) ([]SavedAddress, error) { - rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses WHERE network_id = ? AND removed != 1", rawQueryColumnsOrder), chainID) +func (sam *SavedAddressesManager) getSavedAddresses(condition string) ([]SavedAddress, error) { + var whereCondition string + if condition != "" { + whereCondition = fmt.Sprintf("WHERE %s", condition) + } + + rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses %s", rawQueryColumnsOrder, whereCondition)) if err != nil { return nil, err } @@ -66,29 +73,16 @@ func (sam *SavedAddressesManager) GetSavedAddressesForChainID(chainID uint64) ([ } func (sam *SavedAddressesManager) GetSavedAddresses() ([]SavedAddress, error) { - rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses WHERE removed != 1", rawQueryColumnsOrder)) - if err != nil { - return nil, err - } - defer rows.Close() - - addresses, err := getSavedAddressesFromDBRows(rows) - return addresses, err + return sam.getSavedAddresses("removed != 1") } // GetRawSavedAddresses provides access to the soft-delete and sync metadata func (sam *SavedAddressesManager) GetRawSavedAddresses() ([]SavedAddress, error) { - rows, err := sam.db.Query(fmt.Sprintf("SELECT %s FROM saved_addresses", rawQueryColumnsOrder)) - if err != nil { - return nil, err - } - defer rows.Close() - - return getSavedAddressesFromDBRows(rows) + return sam.getSavedAddresses("") } func (sam *SavedAddressesManager) upsertSavedAddress(sa SavedAddress, tx *sql.Tx) error { - sqlStatement := "INSERT OR REPLACE INTO saved_addresses (network_id, address, name, favourite, removed, update_clock) VALUES (?, ?, ?, ?, ?, ?)" + sqlStatement := "INSERT OR REPLACE INTO saved_addresses (address, name, favourite, removed, update_clock, chain_short_names, ens_name, is_test) VALUES (?, ?, ?, ?, ?, ?, ?, ?)" var err error var insert *sql.Stmt if tx != nil { @@ -100,7 +94,7 @@ func (sam *SavedAddressesManager) upsertSavedAddress(sa SavedAddress, tx *sql.Tx return err } defer insert.Close() - _, err = insert.Exec(sa.ChainID, sa.Address, sa.Name, sa.Favourite, sa.Removed, sa.UpdateClock) + _, err = insert.Exec(sa.Address, sa.Name, sa.Favourite, sa.Removed, sa.UpdateClock, sa.ChainShortNames, sa.ENSName, sa.IsTest) return err } @@ -113,12 +107,12 @@ func (sam *SavedAddressesManager) UpdateMetadataAndUpsertSavedAddress(sa SavedAd return sa.UpdateClock, nil } -func (sam *SavedAddressesManager) startTransactionAndCheckIfNewerChange(ChainID uint64, Address common.Address, updateClock uint64) (newer bool, tx *sql.Tx, err error) { +func (sam *SavedAddressesManager) startTransactionAndCheckIfNewerChange(address common.Address, ens string, isTest bool, updateClock uint64) (newer bool, tx *sql.Tx, err error) { tx, err = sam.db.Begin() if err != nil { return false, nil, err } - row := tx.QueryRow("SELECT update_clock FROM saved_addresses WHERE network_id = ? AND address = ?", ChainID, Address) + row := tx.QueryRow("SELECT update_clock FROM saved_addresses WHERE address = ? AND is_test = ? AND ens_name = ?", address, isTest, ens) if err != nil { return false, tx, err } @@ -128,11 +122,11 @@ func (sam *SavedAddressesManager) startTransactionAndCheckIfNewerChange(ChainID if err != nil { return err == sql.ErrNoRows, tx, err } - return dbUpdateClock <= updateClock, tx, nil + return dbUpdateClock < updateClock, tx, nil } func (sam *SavedAddressesManager) AddSavedAddressIfNewerUpdate(sa SavedAddress, updateClock uint64) (insertedOrUpdated bool, err error) { - newer, tx, err := sam.startTransactionAndCheckIfNewerChange(sa.ChainID, sa.Address, updateClock) + newer, tx, err := sam.startTransactionAndCheckIfNewerChange(sa.Address, sa.ENSName, sa.IsTest, updateClock) defer func() { if err == nil { err = tx.Commit() @@ -153,8 +147,11 @@ func (sam *SavedAddressesManager) AddSavedAddressIfNewerUpdate(sa SavedAddress, return true, err } -func (sam *SavedAddressesManager) DeleteSavedAddressIfNewerUpdate(chainID uint64, address common.Address, updateClock uint64) (deleted bool, err error) { - newer, tx, err := sam.startTransactionAndCheckIfNewerChange(chainID, address, updateClock) +func (sam *SavedAddressesManager) DeleteSavedAddress(address common.Address, ens string, isTest bool, updateClock uint64) (deleted bool, err error) { + if err != nil { + return false, err + } + newer, tx, err := sam.startTransactionAndCheckIfNewerChange(address, ens, isTest, updateClock) defer func() { if err == nil { err = tx.Commit() @@ -166,32 +163,22 @@ func (sam *SavedAddressesManager) DeleteSavedAddressIfNewerUpdate(chainID uint64 return false, err } - var insert *sql.Stmt - insert, err = tx.Prepare(`INSERT OR REPLACE INTO saved_addresses (network_id, address, name, favourite, removed, update_clock) VALUES (?, ?, "", 0, 1, ?)`) + update, err := tx.Prepare(`UPDATE saved_addresses SET removed = 1, update_clock = ? WHERE address = ? AND is_test = ? AND ens_name = ?`) if err != nil { return false, err } - defer insert.Close() - _, err = insert.Exec(chainID, address, updateClock) + defer update.Close() + res, err := update.Exec(updateClock, address, isTest, ens) if err != nil { return false, err } - return true, nil -} + nRows, err := res.RowsAffected() + if err != nil { + return false, err + } -func (sam *SavedAddressesManager) DeleteSavedAddress(chainID uint64, address common.Address) (updatedClock uint64, err error) { - insert, err := sam.db.Prepare(`INSERT OR REPLACE INTO saved_addresses (network_id, address, name, favourite, removed, update_clock) VALUES (?, ?, "", 0, 1, ?)`) - if err != nil { - return 0, err - } - defer insert.Close() - updateClock := uint64(time.Now().Unix()) - _, err = insert.Exec(chainID, address, updateClock) - if err != nil { - return 0, err - } - return updateClock, nil + return nRows > 0, nil } func (sam *SavedAddressesManager) DeleteSoftRemovedSavedAddresses(threshold uint64) error { diff --git a/services/wallet/saved_addresses_test.go b/services/wallet/saved_addresses_test.go index b52e66175..90c4a1c5d 100644 --- a/services/wallet/saved_addresses_test.go +++ b/services/wallet/saved_addresses_test.go @@ -1,10 +1,9 @@ package wallet import ( - "io/ioutil" - "os" "strconv" "testing" + "time" "github.com/stretchr/testify/require" @@ -14,49 +13,50 @@ import ( "github.com/status-im/status-go/sqlite" ) +const ( + ensMember int = iota + isTestMember + addressMember +) + func setupTestSavedAddressesDB(t *testing.T) (*SavedAddressesManager, func()) { - tmpfile, err := ioutil.TempFile("", "wallet-saved_addresses-tests-") - require.NoError(t, err) - db, err := appdatabase.InitializeDB(tmpfile.Name(), "wallet-saved_addresses-tests", sqlite.ReducedKDFIterationsNumber) + db, err := appdatabase.InitializeDB(sqlite.InMemoryPath, "wallet-saved_addresses-tests", sqlite.ReducedKDFIterationsNumber) require.NoError(t, err) + return &SavedAddressesManager{db}, func() { require.NoError(t, db.Close()) - require.NoError(t, os.Remove(tmpfile.Name())) } } -func TestSavedAddresses(t *testing.T) { +func TestSavedAddressesAdd(t *testing.T) { manager, stop := setupTestSavedAddressesDB(t) defer stop() - rst, err := manager.GetSavedAddressesForChainID(777) + rst, err := manager.GetRawSavedAddresses() require.NoError(t, err) require.Nil(t, rst) sa := SavedAddress{ - Address: common.Address{1}, - Name: "Zilliqa", - Favourite: true, - ChainID: 777, + Address: common.Address{1}, + Name: "Zilliqa", + Favourite: true, + ChainShortNames: "eth:arb:", + ENSName: "test.stateofus.eth", + IsTest: false, } _, err = manager.UpdateMetadataAndUpsertSavedAddress(sa) require.NoError(t, err) - rst, err = manager.GetSavedAddressesForChainID(777) + rst, err = manager.GetRawSavedAddresses() require.NoError(t, err) require.Equal(t, 1, len(rst)) require.Equal(t, sa.Address, rst[0].Address) require.Equal(t, sa.Name, rst[0].Name) require.Equal(t, sa.Favourite, rst[0].Favourite) - require.Equal(t, sa.ChainID, rst[0].ChainID) - - _, err = manager.DeleteSavedAddress(777, sa.Address) - require.NoError(t, err) - - rst, err = manager.GetSavedAddressesForChainID(777) - require.NoError(t, err) - require.Equal(t, 0, len(rst)) + require.Equal(t, sa.ChainShortNames, rst[0].ChainShortNames) + require.Equal(t, sa.ENSName, rst[0].ENSName) + require.Equal(t, sa.IsTest, rst[0].IsTest) } func contains[T comparable](container []T, element T, isEqual func(T, T) bool) bool { @@ -78,7 +78,8 @@ func haveSameElements[T comparable](a []T, b []T, isEqual func(T, T) bool) bool } func savedAddressDataIsEqual(a, b SavedAddress) bool { - return a.Address == b.Address && a.ChainID == b.ChainID && a.Name == b.Name && a.Favourite == b.Favourite + return a.Address == b.Address && a.Name == b.Name && a.Favourite == b.Favourite && + a.ChainShortNames == b.ChainShortNames && a.ENSName == b.ENSName && a.IsTest == b.IsTest } func TestSavedAddressesMetadata(t *testing.T) { @@ -92,13 +93,15 @@ func TestSavedAddressesMetadata(t *testing.T) { // Add raw saved addresses sa1 := SavedAddress{ Address: common.Address{1}, - ChainID: 777, Name: "Raw", Favourite: true, savedAddressMeta: savedAddressMeta{ Removed: false, UpdateClock: 234, }, + ChainShortNames: "eth:arb:", + ENSName: "test.stateofus.eth", + IsTest: false, } err = manager.upsertSavedAddress(sa1, nil) @@ -112,9 +115,9 @@ func TestSavedAddressesMetadata(t *testing.T) { // Add simple saved address without sync metadata sa2 := SavedAddress{ Address: common.Address{2}, - ChainID: 777, Name: "Simple", Favourite: false, + IsTest: false, } var sa2UpdatedClock uint64 @@ -133,9 +136,9 @@ func TestSavedAddressesMetadata(t *testing.T) { } require.Equal(t, sa1, dbSavedAddresses[rawIndex]) require.Equal(t, sa2.Address, dbSavedAddresses[simpleIndex].Address) - require.Equal(t, sa2.ChainID, dbSavedAddresses[simpleIndex].ChainID) require.Equal(t, sa2.Name, dbSavedAddresses[simpleIndex].Name) require.Equal(t, sa2.Favourite, dbSavedAddresses[simpleIndex].Favourite) + require.Equal(t, sa2.IsTest, dbSavedAddresses[simpleIndex].IsTest) // Check the default values require.False(t, dbSavedAddresses[simpleIndex].Removed) @@ -143,12 +146,12 @@ func TestSavedAddressesMetadata(t *testing.T) { require.Greater(t, dbSavedAddresses[simpleIndex].UpdateClock, uint64(0)) sa2Older := sa2 - sa2Older.Name = "Conditional, NOT updated" sa2Older.Favourite = true + sa2Older.IsTest = false sa2Newer := sa2 - sa2Newer.Name = "Conditional, updated" sa2Newer.Favourite = false + sa2Newer.IsTest = false // Try to add an older entry updated := false @@ -190,7 +193,7 @@ func TestSavedAddressesMetadata(t *testing.T) { // Try to delete the sa2 newer entry updatedDeleteClock := updatedClock + 1 - updated, err = manager.DeleteSavedAddressIfNewerUpdate(sa2Newer.ChainID, sa2Newer.Address, updatedDeleteClock) + updated, err = manager.DeleteSavedAddress(sa2Newer.Address, sa2Newer.ENSName, sa2Newer.IsTest, updatedDeleteClock) require.NoError(t, err) require.True(t, updated) @@ -219,7 +222,6 @@ func TestSavedAddressesCleanSoftDeletes(t *testing.T) { for i := 0; i < 5; i++ { sa := SavedAddress{ Address: common.Address{byte(i)}, - ChainID: 777, Name: "Test" + strconv.Itoa(i), Favourite: false, savedAddressMeta: savedAddressMeta{ @@ -245,3 +247,168 @@ func TestSavedAddressesCleanSoftDeletes(t *testing.T) { }, )) } + +func TestSavedAddressesGet(t *testing.T) { + manager, stop := setupTestSavedAddressesDB(t) + defer stop() + + sa := SavedAddress{ + Address: common.Address{1}, + ENSName: "test.ens.eth", + IsTest: false, + savedAddressMeta: savedAddressMeta{ + Removed: true, + }, + } + + err := manager.upsertSavedAddress(sa, nil) + require.NoError(t, err) + + dbSavedAddresses, err := manager.GetRawSavedAddresses() + require.NoError(t, err) + require.Equal(t, 1, len(dbSavedAddresses)) + + require.True(t, savedAddressDataIsEqual(sa, dbSavedAddresses[0])) + + dbSavedAddresses, err = manager.GetSavedAddresses() + require.NoError(t, err) + require.Equal(t, 0, len(dbSavedAddresses)) +} + +func TestSavedAddressesDelete(t *testing.T) { + manager, stop := setupTestSavedAddressesDB(t) + defer stop() + + sa0 := SavedAddress{ + Address: common.Address{1}, + IsTest: false, + } + + err := manager.upsertSavedAddress(sa0, nil) + require.NoError(t, err) + + rst, err := manager.GetRawSavedAddresses() + require.NoError(t, err) + require.Equal(t, 1, len(rst)) + + require.True(t, savedAddressDataIsEqual(sa0, rst[0])) + + // Modify IsTest flag, insert + sa1 := sa0 + sa1.IsTest = !sa1.IsTest + + err = manager.upsertSavedAddress(sa1, nil) + require.NoError(t, err) + + // Delete s0, test that only s1 is left + updateClock := uint64(time.Now().Unix()) + _, err = manager.DeleteSavedAddress(sa0.Address, sa0.ENSName, sa0.IsTest, updateClock) + require.NoError(t, err) + + rst, err = manager.GetSavedAddresses() + require.NoError(t, err) + require.Equal(t, 1, len(rst)) + require.True(t, savedAddressDataIsEqual(sa1, rst[0])) + + // Test that we still have both addresses + rst, err = manager.GetRawSavedAddresses() + require.NoError(t, err) + require.Equal(t, 2, len(rst)) + + // Delete s0 one more time with the same timestamp + deleted, err := manager.DeleteSavedAddress(sa0.Address, sa0.ENSName, sa0.IsTest, updateClock) + require.NoError(t, err) + require.False(t, deleted) +} + +func testInsertSameAddressWithOneChange(t *testing.T, member int) { + manager, stop := setupTestSavedAddressesDB(t) + defer stop() + + // Insert one address + sa := SavedAddress{ + Address: common.Address{1}, + ENSName: "test.ens.eth", + IsTest: true, + } + + err := manager.upsertSavedAddress(sa, nil) + require.NoError(t, err) + + rst, err := manager.GetRawSavedAddresses() + require.NoError(t, err) + require.Equal(t, 1, len(rst)) + + require.True(t, savedAddressDataIsEqual(sa, rst[0])) + + sa2 := sa + + if member == isTestMember { + sa2.IsTest = !sa2.IsTest + } else if member == addressMember { + sa2.Address = common.Address{7} + } else if member == ensMember { + sa2.ENSName += "_" + } else { + t.Error("Unsupported member change. Please add it to the list") + } + + err = manager.upsertSavedAddress(sa2, nil) + require.NoError(t, err) + + rst, err = manager.GetRawSavedAddresses() + require.NoError(t, err) + require.Equal(t, 2, len(rst)) + + // The order of records returned by GetRawSavedAddresses is not + // guaranteed to be the same as insertions, so swap indices if first record does not match + firstIndex := 0 + secondIndex := 1 + if rst[firstIndex] != sa { + firstIndex = 1 + secondIndex = 0 + } + require.True(t, savedAddressDataIsEqual(sa, rst[firstIndex])) + require.True(t, savedAddressDataIsEqual(sa2, rst[secondIndex])) +} + +func TestSavedAddressesAddDifferentAddress(t *testing.T) { + testInsertSameAddressWithOneChange(t, addressMember) +} + +func TestSavedAddressesAddDifferentIsTest(t *testing.T) { + testInsertSameAddressWithOneChange(t, isTestMember) +} + +func TestSavedAddressesAddDifferentEns(t *testing.T) { + testInsertSameAddressWithOneChange(t, ensMember) +} + +func TestSavedAddressesAddSame(t *testing.T) { + manager, stop := setupTestSavedAddressesDB(t) + defer stop() + + // Insert one address + sa := SavedAddress{ + Address: common.Address{1}, + ENSName: "test.ens.eth", + IsTest: true, + } + + err := manager.upsertSavedAddress(sa, nil) + require.NoError(t, err) + + rst, err := manager.GetRawSavedAddresses() + require.NoError(t, err) + require.Equal(t, 1, len(rst)) + + require.True(t, savedAddressDataIsEqual(sa, rst[0])) + + sa2 := sa + err = manager.upsertSavedAddress(sa2, nil) + require.NoError(t, err) + + rst, err = manager.GetRawSavedAddresses() + require.NoError(t, err) + require.Equal(t, 1, len(rst)) +} diff --git a/services/wallet/transfer/transaction_test.go b/services/wallet/transfer/transaction_test.go index 0d4f05947..741482e8d 100644 --- a/services/wallet/transfer/transaction_test.go +++ b/services/wallet/transfer/transaction_test.go @@ -1,9 +1,7 @@ package transfer import ( - "io/ioutil" "math/big" - "os" "testing" "github.com/stretchr/testify/require" @@ -16,13 +14,10 @@ import ( ) func setupTestTransactionDB(t *testing.T) (*TransactionManager, func()) { - tmpfile, err := ioutil.TempFile("", "wallet-transactions-tests-") - require.NoError(t, err) - db, err := appdatabase.InitializeDB(tmpfile.Name(), "wallet-tests", sqlite.ReducedKDFIterationsNumber) + db, err := appdatabase.InitializeDB(sqlite.InMemoryPath, "wallet-tests", sqlite.ReducedKDFIterationsNumber) require.NoError(t, err) return &TransactionManager{db, nil, nil, nil, nil}, func() { require.NoError(t, db.Close()) - require.NoError(t, os.Remove(tmpfile.Name())) } } diff --git a/sqlite/sqlite.go b/sqlite/sqlite.go index 8e7623ff9..0a93d6a17 100644 --- a/sqlite/sqlite.go +++ b/sqlite/sqlite.go @@ -20,7 +20,7 @@ const ( // WALMode for sqlite. WALMode = "wal" - inMemoryPath = ":memory:" + InMemoryPath = ":memory:" ) // DecryptDB completely removes the encryption from the db @@ -108,7 +108,7 @@ func openDB(path string, key string, kdfIterationsNumber int) (*sql.DB, error) { if err != nil { return nil, err } - if mode != WALMode && path != inMemoryPath { + if mode != WALMode && path != InMemoryPath { return nil, fmt.Errorf("unable to set journal_mode to WAL. actual mode %s", mode) }