diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 8 | ||||
-rw-r--r-- | src/crypto/electrum-words.cpp | 138 | ||||
-rw-r--r-- | src/crypto/electrum-words.h | 3308 | ||||
-rw-r--r-- | src/mnemonics/electrum-words.cpp | 347 | ||||
-rw-r--r-- | src/mnemonics/electrum-words.h | 100 | ||||
-rw-r--r-- | src/mnemonics/wordlists/languages/english | 2048 | ||||
-rw-r--r-- | src/mnemonics/wordlists/languages/japanese | 2048 | ||||
-rw-r--r-- | src/mnemonics/wordlists/languages/portuguese | 1626 | ||||
-rw-r--r-- | src/mnemonics/wordlists/languages/spanish | 2048 | ||||
-rw-r--r-- | src/mnemonics/wordlists/old-word-list | 1626 | ||||
-rw-r--r-- | src/simplewallet/simplewallet.cpp | 99 | ||||
-rw-r--r-- | src/simplewallet/simplewallet.h | 25 | ||||
-rw-r--r-- | src/wallet/wallet2.cpp | 2 |
13 files changed, 9966 insertions, 3457 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e5502cdb9..32115c8f6 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -41,6 +41,9 @@ file(GLOB_RECURSE SIMPLEWALLET simplewallet/*) file(GLOB_RECURSE CONN_TOOL connectivity_tool/*) file(GLOB_RECURSE WALLET wallet/*) file(GLOB_RECURSE MINER miner/*) +file(GLOB MNEMONICS mnemonics/*) + +file(COPY "mnemonics/wordlists/" DESTINATION "${CMAKE_SOURCE_DIR}/build/release/src/wordlists") source_group(common FILES ${COMMON}) source_group(crypto FILES ${CRYPTO}) @@ -53,10 +56,12 @@ source_group(simplewallet FILES ${SIMPLEWALLET}) source_group(connectivity-tool FILES ${CONN_TOOL}) source_group(wallet FILES ${WALLET}) source_group(simpleminer FILES ${MINER}) +source_group(mnemonics FILES ${MNEMONICS}) add_library(common ${COMMON}) add_library(crypto ${CRYPTO}) add_library(cryptonote_core ${CRYPTONOTE_CORE}) +add_library(mnemonics ${MNEMONICS}) add_executable(daemon ${DAEMON} ${P2P} ${CRYPTONOTE_PROTOCOL}) add_executable(connectivity_tool ${CONN_TOOL}) add_executable(simpleminer ${MINER}) @@ -65,8 +70,9 @@ target_link_libraries(connectivity_tool cryptonote_core crypto common ${UNBOUND_ target_link_libraries(simpleminer cryptonote_core crypto common ${UNBOUND_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) add_library(rpc ${RPC}) add_library(wallet ${WALLET}) +target_link_libraries(wallet mnemonics) add_executable(simplewallet ${SIMPLEWALLET} ) -target_link_libraries(simplewallet wallet rpc cryptonote_core crypto common ${UNBOUND_LIBRARIES} ${UPNP_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) +target_link_libraries(simplewallet wallet rpc cryptonote_core crypto common mnemonics ${UNBOUND_LIBRARIES} ${UPNP_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} ${Boost_LIBRARIES}) add_dependencies(daemon version) add_dependencies(rpc version) add_dependencies(simplewallet version) diff --git a/src/crypto/electrum-words.cpp b/src/crypto/electrum-words.cpp deleted file mode 100644 index add71808a..000000000 --- a/src/crypto/electrum-words.cpp +++ /dev/null @@ -1,138 +0,0 @@ -// Copyright (c) 2014, The Monero Project -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are -// permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, this list -// of conditions and the following disclaimer in the documentation and/or other -// materials provided with the distribution. -// -// 3. Neither the name of the copyright holder nor the names of its contributors may be -// used to endorse or promote products derived from this software without specific -// prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* - * This file and its header file are for translating Electrum-style word lists - * into their equivalent byte representations for cross-compatibility with - * that method of "backing up" one's wallet keys. - */ - -#include <string> -#include <cassert> -#include <map> -#include <cstdint> -#include <vector> -#include <boost/algorithm/string.hpp> -#include "crypto/crypto.h" // for declaration of crypto::secret_key - -#include "crypto/electrum-words.h" - -namespace crypto -{ - namespace ElectrumWords - { - - /* convert words to bytes, 3 words -> 4 bytes - * returns: - * false if not a multiple of 3 words, or if a words is not in the - * words list - * - * true otherwise - */ - bool words_to_bytes(const std::string& words, crypto::secret_key& dst) - { - int n = NUMWORDS; // hardcoded because this is what electrum uses - - std::vector<std::string> wlist; - - boost::split(wlist, words, boost::is_any_of(" ")); - - // error on non-compliant word list - if (wlist.size() != 12 && wlist.size() != 24) return false; - - for (unsigned int i=0; i < wlist.size() / 3; i++) - { - uint32_t val; - uint32_t w1, w2, w3; - - // verify all three words exist in the word list - if (wordsMap.count(wlist[i*3]) == 0 || - wordsMap.count(wlist[i*3 + 1]) == 0 || - wordsMap.count(wlist[i*3 + 2]) == 0) - { - return false; - } - - w1 = wordsMap.at(wlist[i*3]); - w2 = wordsMap.at(wlist[i*3 + 1]); - w3 = wordsMap.at(wlist[i*3 + 2]); - - val = w1 + n * (((n - w1) + w2) % n) + n * n * (((n - w2) + w3) % n); - - if (!(val % n == w1)) return false; - - memcpy(dst.data + i * 4, &val, 4); // copy 4 bytes to position - } - - std::string wlist_copy = words; - if (wlist.size() == 12) - { - memcpy(dst.data, dst.data + 16, 16); // if electrum 12-word seed, duplicate - wlist_copy += ' '; - wlist_copy += words; - } - - return true; - } - - /* convert bytes to words, 4 bytes-> 3 words - * returns: - * false if wrong number of bytes (shouldn't be possible) - * true otherwise - */ - bool bytes_to_words(const crypto::secret_key& src, std::string& words) - { - int n = NUMWORDS; // hardcoded because this is what electrum uses - - if (sizeof(src.data) % 4 != 0) return false; - - // 8 bytes -> 3 words. 8 digits base 16 -> 3 digits base 1626 - for (unsigned int i=0; i < sizeof(src.data)/4; i++, words += ' ') - { - uint32_t w1, w2, w3; - - uint32_t val; - - memcpy(&val, (src.data) + (i * 4), 4); - - w1 = val % n; - w2 = ((val / n) + w1) % n; - w3 = (((val / n) / n) + w2) % n; - - words += wordsArray[w1]; - words += ' '; - words += wordsArray[w2]; - words += ' '; - words += wordsArray[w3]; - } - return false; - } - - } // namespace ElectrumWords - -} // namespace crypto diff --git a/src/crypto/electrum-words.h b/src/crypto/electrum-words.h deleted file mode 100644 index d9e28ada1..000000000 --- a/src/crypto/electrum-words.h +++ /dev/null @@ -1,3308 +0,0 @@ -// Copyright (c) 2014, The Monero Project -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without modification, are -// permitted provided that the following conditions are met: -// -// 1. Redistributions of source code must retain the above copyright notice, this list of -// conditions and the following disclaimer. -// -// 2. Redistributions in binary form must reproduce the above copyright notice, this list -// of conditions and the following disclaimer in the documentation and/or other -// materials provided with the distribution. -// -// 3. Neither the name of the copyright holder nor the names of its contributors may be -// used to endorse or promote products derived from this software without specific -// prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY -// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, -// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF -// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -/* - * This file and its cpp file are for translating Electrum-style word lists - * into their equivalent byte representations for cross-compatibility with - * that method of "backing up" one's wallet keys. - */ - -#include <string> -#include <cstdint> -#include <map> -#include "crypto/crypto.h" // for declaration of crypto::secret_key - -namespace crypto -{ - namespace ElectrumWords - { - - const int NUMWORDS = 1626; - - bool words_to_bytes(const std::string& words, crypto::secret_key& dst); - bool bytes_to_words(const crypto::secret_key& src, std::string& words); - - const std::map<std::string,uint32_t> wordsMap = { - {"like", 0}, - {"just", 1}, - {"love", 2}, - {"know", 3}, - {"never", 4}, - {"want", 5}, - {"time", 6}, - {"out", 7}, - {"there", 8}, - {"make", 9}, - {"look", 10}, - {"eye", 11}, - {"down", 12}, - {"only", 13}, - {"think", 14}, - {"heart", 15}, - {"back", 16}, - {"then", 17}, - {"into", 18}, - {"about", 19}, - {"more", 20}, - {"away", 21}, - {"still", 22}, - {"them", 23}, - {"take", 24}, - {"thing", 25}, - {"even", 26}, - {"through", 27}, - {"long", 28}, - {"always", 29}, - {"world", 30}, - {"too", 31}, - {"friend", 32}, - {"tell", 33}, - {"try", 34}, - {"hand", 35}, - {"thought", 36}, - {"over", 37}, - {"here", 38}, - {"other", 39}, - {"need", 40}, - {"smile", 41}, - {"again", 42}, - {"much", 43}, - {"cry", 44}, - {"been", 45}, - {"night", 46}, - {"ever", 47}, - {"little", 48}, - {"said", 49}, - {"end", 50}, - {"some", 51}, - {"those", 52}, - {"around", 53}, - {"mind", 54}, - {"people", 55}, - {"girl", 56}, - {"leave", 57}, - {"dream", 58}, - {"left", 59}, - {"turn", 60}, - {"myself", 61}, - {"give", 62}, - {"nothing", 63}, - {"really", 64}, - {"off", 65}, - {"before", 66}, - {"something", 67}, - {"find", 68}, - {"walk", 69}, - {"wish", 70}, - {"good", 71}, - {"once", 72}, - {"place", 73}, - {"ask", 74}, - {"stop", 75}, - {"keep", 76}, - {"watch", 77}, - {"seem", 78}, - {"everything", 79}, - {"wait", 80}, - {"got", 81}, - {"yet", 82}, - {"made", 83}, - {"remember", 84}, - {"start", 85}, - {"alone", 86}, - {"run", 87}, - {"hope", 88}, - {"maybe", 89}, - {"believe", 90}, - {"body", 91}, - {"hate", 92}, - {"after", 93}, - {"close", 94}, - {"talk", 95}, - {"stand", 96}, - {"own", 97}, - {"each", 98}, - {"hurt", 99}, - {"help", 100}, - {"home", 101}, - {"god", 102}, - {"soul", 103}, - {"new", 104}, - {"many", 105}, - {"two", 106}, - {"inside", 107}, - {"should", 108}, - {"true", 109}, - {"first", 110}, - {"fear", 111}, - {"mean", 112}, - {"better", 113}, - {"play", 114}, - {"another", 115}, - {"gone", 116}, - {"change", 117}, - {"use", 118}, - {"wonder", 119}, - {"someone", 120}, - {"hair", 121}, - {"cold", 122}, - {"open", 123}, - {"best", 124}, - {"any", 125}, - {"behind", 126}, - {"happen", 127}, - {"water", 128}, - {"dark", 129}, - {"laugh", 130}, - {"stay", 131}, - {"forever", 132}, - {"name", 133}, - {"work", 134}, - {"show", 135}, - {"sky", 136}, - {"break", 137}, - {"came", 138}, - {"deep", 139}, - {"door", 140}, - {"put", 141}, - {"black", 142}, - {"together", 143}, - {"upon", 144}, - {"happy", 145}, - {"such", 146}, - {"great", 147}, - {"white", 148}, - {"matter", 149}, - {"fill", 150}, - {"past", 151}, - {"please", 152}, - {"burn", 153}, - {"cause", 154}, - {"enough", 155}, - {"touch", 156}, - {"moment", 157}, - {"soon", 158}, - {"voice", 159}, - {"scream", 160}, - {"anything", 161}, - {"stare", 162}, - {"sound", 163}, - {"red", 164}, - {"everyone", 165}, - {"hide", 166}, - {"kiss", 167}, - {"truth", 168}, - {"death", 169}, - {"beautiful", 170}, - {"mine", 171}, - {"blood", 172}, - {"broken", 173}, - {"very", 174}, - {"pass", 175}, - {"next", 176}, - {"forget", 177}, - {"tree", 178}, - {"wrong", 179}, - {"air", 180}, - {"mother", 181}, - {"understand", 182}, - {"lip", 183}, - {"hit", 184}, - {"wall", 185}, - {"memory", 186}, - {"sleep", 187}, - {"free", 188}, - {"high", 189}, - {"realize", 190}, - {"school", 191}, - {"might", 192}, - {"skin", 193}, - {"sweet", 194}, - {"perfect", 195}, - {"blue", 196}, - {"kill", 197}, - {"breath", 198}, - {"dance", 199}, - {"against", 200}, - {"fly", 201}, - {"between", 202}, - {"grow", 203}, - {"strong", 204}, - {"under", 205}, - {"listen", 206}, - {"bring", 207}, - {"sometimes", 208}, - {"speak", 209}, - {"pull", 210}, - {"person", 211}, - {"become", 212}, - {"family", 213}, - {"begin", 214}, - {"ground", 215}, - {"real", 216}, - {"small", 217}, - {"father", 218}, - {"sure", 219}, - {"feet", 220}, - {"rest", 221}, - {"young", 222}, - {"finally", 223}, - {"land", 224}, - {"across", 225}, - {"today", 226}, - {"different", 227}, - {"guy", 228}, - {"line", 229}, - {"fire", 230}, - {"reason", 231}, - {"reach", 232}, - {"second", 233}, - {"slowly", 234}, - {"write", 235}, - {"eat", 236}, - {"smell", 237}, - {"mouth", 238}, - {"step", 239}, - {"learn", 240}, - {"three", 241}, - {"floor", 242}, - {"promise", 243}, - {"breathe", 244}, - {"darkness", 245}, - {"push", 246}, - {"earth", 247}, - {"guess", 248}, - {"save", 249}, - {"song", 250}, - {"above", 251}, - {"along", 252}, - {"both", 253}, - {"color", 254}, - {"house", 255}, - {"almost", 256}, - {"sorry", 257}, - {"anymore", 258}, - {"brother", 259}, - {"okay", 260}, - {"dear", 261}, - {"game", 262}, - {"fade", 263}, - {"already", 264}, - {"apart", 265}, - {"warm", 266}, - {"beauty", 267}, - {"heard", 268}, - {"notice", 269}, - {"question", 270}, - {"shine", 271}, - {"began", 272}, - {"piece", 273}, - {"whole", 274}, - {"shadow", 275}, - {"secret", 276}, - {"street", 277}, - {"within", 278}, - {"finger", 279}, - {"point", 280}, - {"morning", 281}, - {"whisper", 282}, - {"child", 283}, - {"moon", 284}, - {"green", 285}, - {"story", 286}, - {"glass", 287}, - {"kid", 288}, - {"silence", 289}, - {"since", 290}, - {"soft", 291}, - {"yourself", 292}, - {"empty", 293}, - {"shall", 294}, - {"angel", 295}, - {"answer", 296}, - {"baby", 297}, - {"bright", 298}, - {"dad", 299}, - {"path", 300}, - {"worry", 301}, - {"hour", 302}, - {"drop", 303}, - {"follow", 304}, - {"power", 305}, - {"war", 306}, - {"half", 307}, - {"flow", 308}, - {"heaven", 309}, - {"act", 310}, - {"chance", 311}, - {"fact", 312}, - {"least", 313}, - {"tired", 314}, - {"children", 315}, - {"near", 316}, - {"quite", 317}, - {"afraid", 318}, - {"rise", 319}, - {"sea", 320}, - {"taste", 321}, - {"window", 322}, - {"cover", 323}, - {"nice", 324}, - {"trust", 325}, - {"lot", 326}, - {"sad", 327}, - {"cool", 328}, - {"force", 329}, - {"peace", 330}, - {"return", 331}, - {"blind", 332}, - {"easy", 333}, - {"ready", 334}, - {"roll", 335}, - {"rose", 336}, - {"drive", 337}, - {"held", 338}, - {"music", 339}, - {"beneath", 340}, - {"hang", 341}, - {"mom", 342}, - {"paint", 343}, - {"emotion", 344}, - {"quiet", 345}, - {"clear", 346}, - {"cloud", 347}, - {"few", 348}, - {"pretty", 349}, - {"bird", 350}, - {"outside", 351}, - {"paper", 352}, - {"picture", 353}, - {"front", 354}, - {"rock", 355}, - {"simple", 356}, - {"anyone", 357}, - {"meant", 358}, - {"reality", 359}, - {"road", 360}, - {"sense", 361}, - {"waste", 362}, - {"bit", 363}, - {"leaf", 364}, - {"thank", 365}, - {"happiness", 366}, - {"meet", 367}, - {"men", 368}, - {"smoke", 369}, - {"truly", 370}, - {"decide", 371}, - {"self", 372}, - {"age", 373}, - {"book", 374}, - {"form", 375}, - {"alive", 376}, - {"carry", 377}, - {"escape", 378}, - {"damn", 379}, - {"instead", 380}, - {"able", 381}, - {"ice", 382}, - {"minute", 383}, - {"throw", 384}, - {"catch", 385}, - {"leg", 386}, - {"ring", 387}, - {"course", 388}, - {"goodbye", 389}, - {"lead", 390}, - {"poem", 391}, - {"sick", 392}, - {"corner", 393}, - {"desire", 394}, - {"known", 395}, - {"problem", 396}, - {"remind", 397}, - {"shoulder", 398}, - {"suppose", 399}, - {"toward", 400}, - {"wave", 401}, - {"drink", 402}, - {"jump", 403}, - {"woman", 404}, - {"pretend", 405}, - {"sister", 406}, - {"week", 407}, - {"human", 408}, - {"joy", 409}, - {"crack", 410}, - {"grey", 411}, - {"pray", 412}, - {"surprise", 413}, - {"dry", 414}, - {"knee", 415}, - {"less", 416}, - {"search", 417}, - {"bleed", 418}, - {"caught", 419}, - {"clean", 420}, - {"embrace", 421}, - {"future", 422}, - {"king", 423}, - {"son", 424}, - {"sorrow", 425}, - {"chest", 426}, - {"hug", 427}, - {"remain", 428}, - {"sat", 429}, - {"worth", 430}, - {"blow", 431}, - {"daddy", 432}, - {"final", 433}, - {"parent", 434}, - {"tight", 435}, - {"also", 436}, - {"create", 437}, - {"lonely", 438}, - {"safe", 439}, - {"cross", 440}, - {"dress", 441}, - {"evil", 442}, - {"silent", 443}, - {"bone", 444}, - {"fate", 445}, - {"perhaps", 446}, - {"anger", 447}, - {"class", 448}, - {"scar", 449}, - {"snow", 450}, - {"tiny", 451}, - {"tonight", 452}, - {"continue", 453}, - {"control", 454}, - {"dog", 455}, - {"edge", 456}, - {"mirror", 457}, - {"month", 458}, - {"suddenly", 459}, - {"comfort", 460}, - {"given", 461}, - {"loud", 462}, - {"quickly", 463}, - {"gaze", 464}, - {"plan", 465}, - {"rush", 466}, - {"stone", 467}, - {"town", 468}, - {"battle", 469}, - {"ignore", 470}, - {"spirit", 471}, - {"stood", 472}, - {"stupid", 473}, - {"yours", 474}, - {"brown", 475}, - {"build", 476}, - {"dust", 477}, - {"hey", 478}, - {"kept", 479}, - {"pay", 480}, - {"phone", 481}, - {"twist", 482}, - {"although", 483}, - {"ball", 484}, - {"beyond", 485}, - {"hidden", 486}, - {"nose", 487}, - {"taken", 488}, - {"fail", 489}, - {"float", 490}, - {"pure", 491}, - {"somehow", 492}, - {"wash", 493}, - {"wrap", 494}, - {"angry", 495}, - {"cheek", 496}, - {"creature", 497}, - {"forgotten", 498}, - {"heat", 499}, - {"rip", 500}, - {"single", 501}, - {"space", 502}, - {"special", 503}, - {"weak", 504}, - {"whatever", 505}, - {"yell", 506}, - {"anyway", 507}, - {"blame", 508}, - {"job", 509}, - {"choose", 510}, - {"country", 511}, - {"curse", 512}, - {"drift", 513}, - {"echo", 514}, - {"figure", 515}, - {"grew", 516}, - {"laughter", 517}, - {"neck", 518}, - {"suffer", 519}, - {"worse", 520}, - {"yeah", 521}, - {"disappear", 522}, - {"foot", 523}, - {"forward", 524}, - {"knife", 525}, - {"mess", 526}, - {"somewhere", 527}, - {"stomach", 528}, - {"storm", 529}, - {"beg", 530}, - {"idea", 531}, - {"lift", 532}, - {"offer", 533}, - {"breeze", 534}, - {"field", 535}, - {"five", 536}, - {"often", 537}, - {"simply", 538}, - {"stuck", 539}, - {"win", 540}, - {"allow", 541}, - {"confuse", 542}, - {"enjoy", 543}, - {"except", 544}, - {"flower", 545}, - {"seek", 546}, - {"strength", 547}, - {"calm", 548}, - {"grin", 549}, - {"gun", 550}, - {"heavy", 551}, - {"hill", 552}, - {"large", 553}, - {"ocean", 554}, - {"shoe", 555}, - {"sigh", 556}, - {"straight", 557}, - {"summer", 558}, - {"tongue", 559}, - {"accept", 560}, - {"crazy", 561}, - {"everyday", 562}, - {"exist", 563}, - {"grass", 564}, - {"mistake", 565}, - {"sent", 566}, - {"shut", 567}, - {"surround", 568}, - {"table", 569}, - {"ache", 570}, - {"brain", 571}, - {"destroy", 572}, - {"heal", 573}, - {"nature", 574}, - {"shout", 575}, - {"sign", 576}, - {"stain", 577}, - {"choice", 578}, - {"doubt", 579}, - {"glance", 580}, - {"glow", 581}, - {"mountain", 582}, - {"queen", 583}, - {"stranger", 584}, - {"throat", 585}, - {"tomorrow", 586}, - {"city", 587}, - {"either", 588}, - {"fish", 589}, - {"flame", 590}, - {"rather", 591}, - {"shape", 592}, - {"spin", 593}, - {"spread", 594}, - {"ash", 595}, - {"distance", 596}, - {"finish", 597}, - {"image", 598}, - {"imagine", 599}, - {"important", 600}, - {"nobody", 601}, - {"shatter", 602}, - {"warmth", 603}, - {"became", 604}, - {"feed", 605}, - {"flesh", 606}, - {"funny", 607}, - {"lust", 608}, - {"shirt", 609}, - {"trouble", 610}, - {"yellow", 611}, - {"attention", 612}, - {"bare", 613}, - {"bite", 614}, - {"money", 615}, - {"protect", 616}, - {"amaze", 617}, - {"appear", 618}, - {"born", 619}, - {"choke", 620}, - {"completely", 621}, - {"daughter", 622}, - {"fresh", 623}, - {"friendship", 624}, - {"gentle", 625}, - {"probably", 626}, - {"six", 627}, - {"deserve", 628}, - {"expect", 629}, - {"grab", 630}, - {"middle", 631}, - {"nightmare", 632}, - {"river", 633}, - {"thousand", 634}, - {"weight", 635}, - {"worst", 636}, - {"wound", 637}, - {"barely", 638}, - {"bottle", 639}, - {"cream", 640}, - {"regret", 641}, - {"relationship", 642}, - {"stick", 643}, - {"test", 644}, - {"crush", 645}, - {"endless", 646}, - {"fault", 647}, - {"itself", 648}, - {"rule", 649}, - {"spill", 650}, - {"art", 651}, - {"circle", 652}, - {"join", 653}, - {"kick", 654}, - {"mask", 655}, - {"master", 656}, - {"passion", 657}, - {"quick", 658}, - {"raise", 659}, - {"smooth", 660}, - {"unless", 661}, - {"wander", 662}, - {"actually", 663}, - {"broke", 664}, - {"chair", 665}, - {"deal", 666}, - {"favorite", 667}, - {"gift", 668}, - {"note", 669}, - {"number", 670}, - {"sweat", 671}, - {"box", 672}, - {"chill", 673}, - {"clothes", 674}, - {"lady", 675}, - {"mark", 676}, - {"park", 677}, - {"poor", 678}, - {"sadness", 679}, - {"tie", 680}, - {"animal", 681}, - {"belong", 682}, - {"brush", 683}, - {"consume", 684}, - {"dawn", 685}, - {"forest", 686}, - {"innocent", 687}, - {"pen", 688}, - {"pride", 689}, - {"stream", 690}, - {"thick", 691}, - {"clay", 692}, - {"complete", 693}, - {"count", 694}, - {"draw", 695}, - {"faith", 696}, - {"press", 697}, - {"silver", 698}, - {"struggle", 699}, - {"surface", 700}, - {"taught", 701}, - {"teach", 702}, - {"wet", 703}, - {"bless", 704}, - {"chase", 705}, - {"climb", 706}, - {"enter", 707}, - {"letter", 708}, - {"melt", 709}, - {"metal", 710}, - {"movie", 711}, - {"stretch", 712}, - {"swing", 713}, - {"vision", 714}, - {"wife", 715}, - {"beside", 716}, - {"crash", 717}, - {"forgot", 718}, - {"guide", 719}, - {"haunt", 720}, - {"joke", 721}, - {"knock", 722}, - {"plant", 723}, - {"pour", 724}, - {"prove", 725}, - {"reveal", 726}, - {"steal", 727}, - {"stuff", 728}, - {"trip", 729}, - {"wood", 730}, - {"wrist", 731}, - {"bother", 732}, - {"bottom", 733}, - {"crawl", 734}, - {"crowd", 735}, - {"fix", 736}, - {"forgive", 737}, - {"frown", 738}, - {"grace", 739}, - {"loose", 740}, - {"lucky", 741}, - {"party", 742}, - {"release", 743}, - {"surely", 744}, - {"survive", 745}, - {"teacher", 746}, - {"gently", 747}, - {"grip", 748}, - {"speed", 749}, - {"suicide", 750}, - {"travel", 751}, - {"treat", 752}, - {"vein", 753}, - {"written", 754}, - {"cage", 755}, - {"chain", 756}, - {"conversation", 757}, - {"date", 758}, - {"enemy", 759}, - {"however", 760}, - {"interest", 761}, - {"million", 762}, - {"page", 763}, - {"pink", 764}, - {"proud", 765}, - {"sway", 766}, - {"themselves", 767}, - {"winter", 768}, - {"church", 769}, - {"cruel", 770}, - {"cup", 771}, - {"demon", 772}, - {"experience", 773}, - {"freedom", 774}, - {"pair", 775}, - {"pop", 776}, - {"purpose", 777}, - {"respect", 778}, - {"shoot", 779}, - {"softly", 780}, - {"state", 781}, - {"strange", 782}, - {"bar", 783}, - {"birth", 784}, - {"curl", 785}, - {"dirt", 786}, - {"excuse", 787}, - {"lord", 788}, - {"lovely", 789}, - {"monster", 790}, - {"order", 791}, - {"pack", 792}, - {"pants", 793}, - {"pool", 794}, - {"scene", 795}, - {"seven", 796}, - {"shame", 797}, - {"slide", 798}, - {"ugly", 799}, - {"among", 800}, - {"blade", 801}, - {"blonde", 802}, - {"closet", 803}, - {"creek", 804}, - {"deny", 805}, - {"drug", 806}, - {"eternity", 807}, - {"gain", 808}, - {"grade", 809}, - {"handle", 810}, - {"key", 811}, - {"linger", 812}, - {"pale", 813}, - {"prepare", 814}, - {"swallow", 815}, - {"swim", 816}, - {"tremble", 817}, - {"wheel", 818}, - {"won", 819}, - {"cast", 820}, - {"cigarette", 821}, - {"claim", 822}, - {"college", 823}, - {"direction", 824}, - {"dirty", 825}, - {"gather", 826}, - {"ghost", 827}, - {"hundred", 828}, - {"loss", 829}, - {"lung", 830}, - {"orange", 831}, - {"present", 832}, - {"swear", 833}, - {"swirl", 834}, - {"twice", 835}, - {"wild", 836}, - {"bitter", 837}, - {"blanket", 838}, - {"doctor", 839}, - {"everywhere", 840}, - {"flash", 841}, - {"grown", 842}, - {"knowledge", 843}, - {"numb", 844}, - {"pressure", 845}, - {"radio", 846}, - {"repeat", 847}, - {"ruin", 848}, - {"spend", 849}, - {"unknown", 850}, - {"buy", 851}, - {"clock", 852}, - {"devil", 853}, - {"early", 854}, - {"false", 855}, - {"fantasy", 856}, - {"pound", 857}, - {"precious", 858}, - {"refuse", 859}, - {"sheet", 860}, - {"teeth", 861}, - {"welcome", 862}, - {"add", 863}, - {"ahead", 864}, - {"block", 865}, - {"bury", 866}, - {"caress", 867}, - {"content", 868}, - {"depth", 869}, - {"despite", 870}, - {"distant", 871}, - {"marry", 872}, - {"purple", 873}, - {"threw", 874}, - {"whenever", 875}, - {"bomb", 876}, - {"dull", 877}, - {"easily", 878}, - {"grasp", 879}, - {"hospital", 880}, - {"innocence", 881}, - {"normal", 882}, - {"receive", 883}, - {"reply", 884}, - {"rhyme", 885}, - {"shade", 886}, - {"someday", 887}, - {"sword", 888}, - {"toe", 889}, - {"visit", 890}, - {"asleep", 891}, - {"bought", 892}, - {"center", 893}, - {"consider", 894}, - {"flat", 895}, - {"hero", 896}, - {"history", 897}, - {"ink", 898}, - {"insane", 899}, - {"muscle", 900}, - {"mystery", 901}, - {"pocket", 902}, - {"reflection", 903}, - {"shove", 904}, - {"silently", 905}, - {"smart", 906}, - {"soldier", 907}, - {"spot", 908}, - {"stress", 909}, - {"train", 910}, - {"type", 911}, - {"view", 912}, - {"whether", 913}, - {"bus", 914}, - {"energy", 915}, - {"explain", 916}, - {"holy", 917}, - {"hunger", 918}, - {"inch", 919}, - {"magic", 920}, - {"mix", 921}, - {"noise", 922}, - {"nowhere", 923}, - {"prayer", 924}, - {"presence", 925}, - {"shock", 926}, - {"snap", 927}, - {"spider", 928}, - {"study", 929}, - {"thunder", 930}, - {"trail", 931}, - {"admit", 932}, - {"agree", 933}, - {"bag", 934}, - {"bang", 935}, - {"bound", 936}, - {"butterfly", 937}, - {"cute", 938}, - {"exactly", 939}, - {"explode", 940}, - {"familiar", 941}, - {"fold", 942}, - {"further", 943}, - {"pierce", 944}, - {"reflect", 945}, - {"scent", 946}, - {"selfish", 947}, - {"sharp", 948}, - {"sink", 949}, - {"spring", 950}, - {"stumble", 951}, - {"universe", 952}, - {"weep", 953}, - {"women", 954}, - {"wonderful", 955}, - {"action", 956}, - {"ancient", 957}, - {"attempt", 958}, - {"avoid", 959}, - {"birthday", 960}, - {"branch", 961}, - {"chocolate", 962}, - {"core", 963}, - {"depress", 964}, - {"drunk", 965}, - {"especially", 966}, - {"focus", 967}, - {"fruit", 968}, - {"honest", 969}, - {"match", 970}, - {"palm", 971}, - {"perfectly", 972}, - {"pillow", 973}, - {"pity", 974}, - {"poison", 975}, - {"roar", 976}, - {"shift", 977}, - {"slightly", 978}, - {"thump", 979}, - {"truck", 980}, - {"tune", 981}, - {"twenty", 982}, - {"unable", 983}, - {"wipe", 984}, - {"wrote", 985}, - {"coat", 986}, - {"constant", 987}, - {"dinner", 988}, - {"drove", 989}, - {"egg", 990}, - {"eternal", 991}, - {"flight", 992}, - {"flood", 993}, - {"frame", 994}, - {"freak", 995}, - {"gasp", 996}, - {"glad", 997}, - {"hollow", 998}, - {"motion", 999}, - {"peer", 1000}, - {"plastic", 1001}, - {"root", 1002}, - {"screen", 1003}, - {"season", 1004}, - {"sting", 1005}, - {"strike", 1006}, - {"team", 1007}, - {"unlike", 1008}, - {"victim", 1009}, - {"volume", 1010}, - {"warn", 1011}, - {"weird", 1012}, - {"attack", 1013}, - {"await", 1014}, - {"awake", 1015}, - {"built", 1016}, - {"charm", 1017}, - {"crave", 1018}, - {"despair", 1019}, - {"fought", 1020}, - {"grant", 1021}, - {"grief", 1022}, - {"horse", 1023}, - {"limit", 1024}, - {"message", 1025}, - {"ripple", 1026}, - {"sanity", 1027}, - {"scatter", 1028}, - {"serve", 1029}, - {"split", 1030}, - {"string", 1031}, - {"trick", 1032}, - {"annoy", 1033}, - {"blur", 1034}, - {"boat", 1035}, - {"brave", 1036}, - {"clearly", 1037}, - {"cling", 1038}, - {"connect", 1039}, - {"fist", 1040}, - {"forth", 1041}, - {"imagination", 1042}, - {"iron", 1043}, - {"jock", 1044}, - {"judge", 1045}, - {"lesson", 1046}, - {"milk", 1047}, - {"misery", 1048}, - {"nail", 1049}, - {"naked", 1050}, - {"ourselves", 1051}, - {"poet", 1052}, - {"possible", 1053}, - {"princess", 1054}, - {"sail", 1055}, - {"size", 1056}, - {"snake", 1057}, - {"society", 1058}, - {"stroke", 1059}, - {"torture", 1060}, - {"toss", 1061}, - {"trace", 1062}, - {"wise", 1063}, - {"bloom", 1064}, - {"bullet", 1065}, - {"cell", 1066}, - {"check", 1067}, - {"cost", 1068}, - {"darling", 1069}, - {"during", 1070}, - {"footstep", 1071}, - {"fragile", 1072}, - {"hallway", 1073}, - {"hardly", 1074}, - {"horizon", 1075}, - {"invisible", 1076}, - {"journey", 1077}, - {"midnight", 1078}, - {"mud", 1079}, - {"nod", 1080}, - {"pause", 1081}, - {"relax", 1082}, - {"shiver", 1083}, - {"sudden", 1084}, - {"value", 1085}, - {"youth", 1086}, - {"abuse", 1087}, - {"admire", 1088}, - {"blink", 1089}, - {"breast", 1090}, - {"bruise", 1091}, - {"constantly", 1092}, - {"couple", 1093}, - {"creep", 1094}, - {"curve", 1095}, - {"difference", 1096}, - {"dumb", 1097}, - {"emptiness", 1098}, - {"gotta", 1099}, - {"honor", 1100}, - {"plain", 1101}, - {"planet", 1102}, - {"recall", 1103}, - {"rub", 1104}, - {"ship", 1105}, - {"slam", 1106}, - {"soar", 1107}, - {"somebody", 1108}, - {"tightly", 1109}, - {"weather", 1110}, - {"adore", 1111}, - {"approach", 1112}, - {"bond", 1113}, - {"bread", 1114}, - {"burst", 1115}, - {"candle", 1116}, - {"coffee", 1117}, - {"cousin", 1118}, - {"crime", 1119}, - {"desert", 1120}, - {"flutter", 1121}, - {"frozen", 1122}, - {"grand", 1123}, - {"heel", 1124}, - {"hello", 1125}, - {"language", 1126}, - {"level", 1127}, - {"movement", 1128}, - {"pleasure", 1129}, - {"powerful", 1130}, - {"random", 1131}, - {"rhythm", 1132}, - {"settle", 1133}, - {"silly", 1134}, - {"slap", 1135}, - {"sort", 1136}, - {"spoken", 1137}, - {"steel", 1138}, - {"threaten", 1139}, - {"tumble", 1140}, - {"upset", 1141}, - {"aside", 1142}, - {"awkward", 1143}, - {"bee", 1144}, - {"blank", 1145}, - {"board", 1146}, - {"button", 1147}, - {"card", 1148}, - {"carefully", 1149}, - {"complain", 1150}, - {"crap", 1151}, - {"deeply", 1152}, - {"discover", 1153}, - {"drag", 1154}, - {"dread", 1155}, - {"effort", 1156}, - {"entire", 1157}, - {"fairy", 1158}, - {"giant", 1159}, - {"gotten", 1160}, - {"greet", 1161}, - {"illusion", 1162}, - {"jeans", 1163}, - {"leap", 1164}, - {"liquid", 1165}, - {"march", 1166}, - {"mend", 1167}, - {"nervous", 1168}, - {"nine", 1169}, - {"replace", 1170}, - {"rope", 1171}, - {"spine", 1172}, - {"stole", 1173}, - {"terror", 1174}, - {"accident", 1175}, - {"apple", 1176}, - {"balance", 1177}, - {"boom", 1178}, - {"childhood", 1179}, - {"collect", 1180}, - {"demand", 1181}, - {"depression", 1182}, - {"eventually", 1183}, - {"faint", 1184}, - {"glare", 1185}, - {"goal", 1186}, - {"group", 1187}, - {"honey", 1188}, - {"kitchen", 1189}, - {"laid", 1190}, - {"limb", 1191}, - {"machine", 1192}, - {"mere", 1193}, - {"mold", 1194}, - {"murder", 1195}, - {"nerve", 1196}, - {"painful", 1197}, - {"poetry", 1198}, - {"prince", 1199}, - {"rabbit", 1200}, - {"shelter", 1201}, - {"shore", 1202}, - {"shower", 1203}, - {"soothe", 1204}, - {"stair", 1205}, - {"steady", 1206}, - {"sunlight", 1207}, - {"tangle", 1208}, - {"tease", 1209}, - {"treasure", 1210}, - {"uncle", 1211}, - {"begun", 1212}, - {"bliss", 1213}, - {"canvas", 1214}, - {"cheer", 1215}, - {"claw", 1216}, - {"clutch", 1217}, - {"commit", 1218}, - {"crimson", 1219}, - {"crystal", 1220}, - {"delight", 1221}, - {"doll", 1222}, - {"existence", 1223}, - {"express", 1224}, - {"fog", 1225}, - {"football", 1226}, - {"gay", 1227}, - {"goose", 1228}, - {"guard", 1229}, - {"hatred", 1230}, - {"illuminate", 1231}, - {"mass", 1232}, - {"math", 1233}, - {"mourn", 1234}, - {"rich", 1235}, - {"rough", 1236}, - {"skip", 1237}, - {"stir", 1238}, - {"student", 1239}, - {"style", 1240}, - {"support", 1241}, - {"thorn", 1242}, - {"tough", 1243}, - {"yard", 1244}, - {"yearn", 1245}, - {"yesterday", 1246}, - {"advice", 1247}, - {"appreciate", 1248}, - {"autumn", 1249}, - {"bank", 1250}, - {"beam", 1251}, - {"bowl", 1252}, - {"capture", 1253}, - {"carve", 1254}, - {"collapse", 1255}, - {"confusion", 1256}, - {"creation", 1257}, - {"dove", 1258}, - {"feather", 1259}, - {"girlfriend", 1260}, - {"glory", 1261}, - {"government", 1262}, - {"harsh", 1263}, - {"hop", 1264}, - {"inner", 1265}, - {"loser", 1266}, - {"moonlight", 1267}, - {"neighbor", 1268}, - {"neither", 1269}, - {"peach", 1270}, - {"pig", 1271}, - {"praise", 1272}, - {"screw", 1273}, - {"shield", 1274}, - {"shimmer", 1275}, - {"sneak", 1276}, - {"stab", 1277}, - {"subject", 1278}, - {"throughout", 1279}, - {"thrown", 1280}, - {"tower", 1281}, - {"twirl", 1282}, - {"wow", 1283}, - {"army", 1284}, - {"arrive", 1285}, - {"bathroom", 1286}, - {"bump", 1287}, - {"cease", 1288}, - {"cookie", 1289}, - {"couch", 1290}, - {"courage", 1291}, - {"dim", 1292}, - {"guilt", 1293}, - {"howl", 1294}, - {"hum", 1295}, - {"husband", 1296}, - {"insult", 1297}, - {"led", 1298}, - {"lunch", 1299}, - {"mock", 1300}, - {"mostly", 1301}, - {"natural", 1302}, - {"nearly", 1303}, - {"needle", 1304}, - {"nerd", 1305}, - {"peaceful", 1306}, - {"perfection", 1307}, - {"pile", 1308}, - {"price", 1309}, - {"remove", 1310}, - {"roam", 1311}, - {"sanctuary", 1312}, - {"serious", 1313}, - {"shiny", 1314}, - {"shook", 1315}, - {"sob", 1316}, - {"stolen", 1317}, - {"tap", 1318}, - {"vain", 1319}, - {"void", 1320}, - {"warrior", 1321}, - {"wrinkle", 1322}, - {"affection", 1323}, - {"apologize", 1324}, - {"blossom", 1325}, - {"bounce", 1326}, - {"bridge", 1327}, - {"cheap", 1328}, - {"crumble", 1329}, - {"decision", 1330}, - {"descend", 1331}, - {"desperately", 1332}, - {"dig", 1333}, - {"dot", 1334}, - {"flip", 1335}, - {"frighten", 1336}, - {"heartbeat", 1337}, - {"huge", 1338}, - {"lazy", 1339}, - {"lick", 1340}, - {"odd", 1341}, - {"opinion", 1342}, - {"process", 1343}, - {"puzzle", 1344}, - {"quietly", 1345}, - {"retreat", 1346}, - {"score", 1347}, - {"sentence", 1348}, - {"separate", 1349}, - {"situation", 1350}, - {"skill", 1351}, - {"soak", 1352}, - {"square", 1353}, - {"stray", 1354}, - {"taint", 1355}, - {"task", 1356}, - {"tide", 1357}, - {"underneath", 1358}, - {"veil", 1359}, - {"whistle", 1360}, - {"anywhere", 1361}, - {"bedroom", 1362}, - {"bid", 1363}, - {"bloody", 1364}, - {"burden", 1365}, - {"careful", 1366}, - {"compare", 1367}, - {"concern", 1368}, - {"curtain", 1369}, - {"decay", 1370}, - {"defeat", 1371}, - {"describe", 1372}, - {"double", 1373}, - {"dreamer", 1374}, - {"driver", 1375}, - {"dwell", 1376}, - {"evening", 1377}, - {"flare", 1378}, - {"flicker", 1379}, - {"grandma", 1380}, - {"guitar", 1381}, - {"harm", 1382}, - {"horrible", 1383}, - {"hungry", 1384}, - {"indeed", 1385}, - {"lace", 1386}, - {"melody", 1387}, - {"monkey", 1388}, - {"nation", 1389}, - {"object", 1390}, - {"obviously", 1391}, - {"rainbow", 1392}, - {"salt", 1393}, - {"scratch", 1394}, - {"shown", 1395}, - {"shy", 1396}, - {"stage", 1397}, - {"stun", 1398}, - {"third", 1399}, - {"tickle", 1400}, - {"useless", 1401}, - {"weakness", 1402}, - {"worship", 1403}, - {"worthless", 1404}, - {"afternoon", 1405}, - {"beard", 1406}, - {"boyfriend", 1407}, - {"bubble", 1408}, - {"busy", 1409}, - {"certain", 1410}, - {"chin", 1411}, - {"concrete", 1412}, - {"desk", 1413}, - {"diamond", 1414}, - {"doom", 1415}, - {"drawn", 1416}, - {"due", 1417}, - {"felicity", 1418}, - {"freeze", 1419}, - {"frost", 1420}, - {"garden", 1421}, - {"glide", 1422}, - {"harmony", 1423}, - {"hopefully", 1424}, - {"hunt", 1425}, - {"jealous", 1426}, - {"lightning", 1427}, - {"mama", 1428}, - {"mercy", 1429}, - {"peel", 1430}, - {"physical", 1431}, - {"position", 1432}, - {"pulse", 1433}, - {"punch", 1434}, - {"quit", 1435}, - {"rant", 1436}, - {"respond", 1437}, - {"salty", 1438}, - {"sane", 1439}, - {"satisfy", 1440}, - {"savior", 1441}, - {"sheep", 1442}, - {"slept", 1443}, - {"social", 1444}, - {"sport", 1445}, - {"tuck", 1446}, - {"utter", 1447}, - {"valley", 1448}, - {"wolf", 1449}, - {"aim", 1450}, - {"alas", 1451}, - {"alter", 1452}, - {"arrow", 1453}, - {"awaken", 1454}, - {"beaten", 1455}, - {"belief", 1456}, - {"brand", 1457}, - {"ceiling", 1458}, - {"cheese", 1459}, - {"clue", 1460}, - {"confidence", 1461}, - {"connection", 1462}, - {"daily", 1463}, - {"disguise", 1464}, - {"eager", 1465}, - {"erase", 1466}, - {"essence", 1467}, - {"everytime", 1468}, - {"expression", 1469}, - {"fan", 1470}, - {"flag", 1471}, - {"flirt", 1472}, - {"foul", 1473}, - {"fur", 1474}, - {"giggle", 1475}, - {"glorious", 1476}, - {"ignorance", 1477}, - {"law", 1478}, - {"lifeless", 1479}, - {"measure", 1480}, - {"mighty", 1481}, - {"muse", 1482}, - {"north", 1483}, - {"opposite", 1484}, - {"paradise", 1485}, - {"patience", 1486}, - {"patient", 1487}, - {"pencil", 1488}, - {"petal", 1489}, - {"plate", 1490}, - {"ponder", 1491}, - {"possibly", 1492}, - {"practice", 1493}, - {"slice", 1494}, - {"spell", 1495}, - {"stock", 1496}, - {"strife", 1497}, - {"strip", 1498}, - {"suffocate", 1499}, - {"suit", 1500}, - {"tender", 1501}, - {"tool", 1502}, - {"trade", 1503}, - {"velvet", 1504}, - {"verse", 1505}, - {"waist", 1506}, - {"witch", 1507}, - {"aunt", 1508}, - {"bench", 1509}, - {"bold", 1510}, - {"cap", 1511}, - {"certainly", 1512}, - {"click", 1513}, - {"companion", 1514}, - {"creator", 1515}, - {"dart", 1516}, - {"delicate", 1517}, - {"determine", 1518}, - {"dish", 1519}, - {"dragon", 1520}, - {"drama", 1521}, - {"drum", 1522}, - {"dude", 1523}, - {"everybody", 1524}, - {"feast", 1525}, - {"forehead", 1526}, - {"former", 1527}, - {"fright", 1528}, - {"fully", 1529}, - {"gas", 1530}, - {"hook", 1531}, - {"hurl", 1532}, - {"invite", 1533}, - {"juice", 1534}, - {"manage", 1535}, - {"moral", 1536}, - {"possess", 1537}, - {"raw", 1538}, - {"rebel", 1539}, - {"royal", 1540}, - {"scale", 1541}, - {"scary", 1542}, - {"several", 1543}, - {"slight", 1544}, - {"stubborn", 1545}, - {"swell", 1546}, - {"talent", 1547}, - {"tea", 1548}, - {"terrible", 1549}, - {"thread", 1550}, - {"torment", 1551}, - {"trickle", 1552}, - {"usually", 1553}, - {"vast", 1554}, - {"violence", 1555}, - {"weave", 1556}, - {"acid", 1557}, - {"agony", 1558}, - {"ashamed", 1559}, - {"awe", 1560}, - {"belly", 1561}, - {"blend", 1562}, - {"blush", 1563}, - {"character", 1564}, - {"cheat", 1565}, - {"common", 1566}, - {"company", 1567}, - {"coward", 1568}, - {"creak", 1569}, - {"danger", 1570}, - {"deadly", 1571}, - {"defense", 1572}, - {"define", 1573}, - {"depend", 1574}, - {"desperate", 1575}, - {"destination", 1576}, - {"dew", 1577}, - {"duck", 1578}, - {"dusty", 1579}, - {"embarrass", 1580}, - {"engine", 1581}, - {"example", 1582}, - {"explore", 1583}, - {"foe", 1584}, - {"freely", 1585}, - {"frustrate", 1586}, - {"generation", 1587}, - {"glove", 1588}, - {"guilty", 1589}, - {"health", 1590}, - {"hurry", 1591}, - {"idiot", 1592}, - {"impossible", 1593}, - {"inhale", 1594}, - {"jaw", 1595}, - {"kingdom", 1596}, - {"mention", 1597}, - {"mist", 1598}, - {"moan", 1599}, - {"mumble", 1600}, - {"mutter", 1601}, - {"observe", 1602}, - {"ode", 1603}, - {"pathetic", 1604}, - {"pattern", 1605}, - {"pie", 1606}, - {"prefer", 1607}, - {"puff", 1608}, - {"rape", 1609}, - {"rare", 1610}, - {"revenge", 1611}, - {"rude", 1612}, - {"scrape", 1613}, - {"spiral", 1614}, - {"squeeze", 1615}, - {"strain", 1616}, - {"sunset", 1617}, - {"suspend", 1618}, - {"sympathy", 1619}, - {"thigh", 1620}, - {"throne", 1621}, - {"total", 1622}, - {"unseen", 1623}, - {"weapon", 1624}, - {"weary", 1625} - }; - - const std::string wordsArray[] = { - "like", - "just", - "love", - "know", - "never", - "want", - "time", - "out", - "there", - "make", - "look", - "eye", - "down", - "only", - "think", - "heart", - "back", - "then", - "into", - "about", - "more", - "away", - "still", - "them", - "take", - "thing", - "even", - "through", - "long", - "always", - "world", - "too", - "friend", - "tell", - "try", - "hand", - "thought", - "over", - "here", - "other", - "need", - "smile", - "again", - "much", - "cry", - "been", - "night", - "ever", - "little", - "said", - "end", - "some", - "those", - "around", - "mind", - "people", - "girl", - "leave", - "dream", - "left", - "turn", - "myself", - "give", - "nothing", - "really", - "off", - "before", - "something", - "find", - "walk", - "wish", - "good", - "once", - "place", - "ask", - "stop", - "keep", - "watch", - "seem", - "everything", - "wait", - "got", - "yet", - "made", - "remember", - "start", - "alone", - "run", - "hope", - "maybe", - "believe", - "body", - "hate", - "after", - "close", - "talk", - "stand", - "own", - "each", - "hurt", - "help", - "home", - "god", - "soul", - "new", - "many", - "two", - "inside", - "should", - "true", - "first", - "fear", - "mean", - "better", - "play", - "another", - "gone", - "change", - "use", - "wonder", - "someone", - "hair", - "cold", - "open", - "best", - "any", - "behind", - "happen", - "water", - "dark", - "laugh", - "stay", - "forever", - "name", - "work", - "show", - "sky", - "break", - "came", - "deep", - "door", - "put", - "black", - "together", - "upon", - "happy", - "such", - "great", - "white", - "matter", - "fill", - "past", - "please", - "burn", - "cause", - "enough", - "touch", - "moment", - "soon", - "voice", - "scream", - "anything", - "stare", - "sound", - "red", - "everyone", - "hide", - "kiss", - "truth", - "death", - "beautiful", - "mine", - "blood", - "broken", - "very", - "pass", - "next", - "forget", - "tree", - "wrong", - "air", - "mother", - "understand", - "lip", - "hit", - "wall", - "memory", - "sleep", - "free", - "high", - "realize", - "school", - "might", - "skin", - "sweet", - "perfect", - "blue", - "kill", - "breath", - "dance", - "against", - "fly", - "between", - "grow", - "strong", - "under", - "listen", - "bring", - "sometimes", - "speak", - "pull", - "person", - "become", - "family", - "begin", - "ground", - "real", - "small", - "father", - "sure", - "feet", - "rest", - "young", - "finally", - "land", - "across", - "today", - "different", - "guy", - "line", - "fire", - "reason", - "reach", - "second", - "slowly", - "write", - "eat", - "smell", - "mouth", - "step", - "learn", - "three", - "floor", - "promise", - "breathe", - "darkness", - "push", - "earth", - "guess", - "save", - "song", - "above", - "along", - "both", - "color", - "house", - "almost", - "sorry", - "anymore", - "brother", - "okay", - "dear", - "game", - "fade", - "already", - "apart", - "warm", - "beauty", - "heard", - "notice", - "question", - "shine", - "began", - "piece", - "whole", - "shadow", - "secret", - "street", - "within", - "finger", - "point", - "morning", - "whisper", - "child", - "moon", - "green", - "story", - "glass", - "kid", - "silence", - "since", - "soft", - "yourself", - "empty", - "shall", - "angel", - "answer", - "baby", - "bright", - "dad", - "path", - "worry", - "hour", - "drop", - "follow", - "power", - "war", - "half", - "flow", - "heaven", - "act", - "chance", - "fact", - "least", - "tired", - "children", - "near", - "quite", - "afraid", - "rise", - "sea", - "taste", - "window", - "cover", - "nice", - "trust", - "lot", - "sad", - "cool", - "force", - "peace", - "return", - "blind", - "easy", - "ready", - "roll", - "rose", - "drive", - "held", - "music", - "beneath", - "hang", - "mom", - "paint", - "emotion", - "quiet", - "clear", - "cloud", - "few", - "pretty", - "bird", - "outside", - "paper", - "picture", - "front", - "rock", - "simple", - "anyone", - "meant", - "reality", - "road", - "sense", - "waste", - "bit", - "leaf", - "thank", - "happiness", - "meet", - "men", - "smoke", - "truly", - "decide", - "self", - "age", - "book", - "form", - "alive", - "carry", - "escape", - "damn", - "instead", - "able", - "ice", - "minute", - "throw", - "catch", - "leg", - "ring", - "course", - "goodbye", - "lead", - "poem", - "sick", - "corner", - "desire", - "known", - "problem", - "remind", - "shoulder", - "suppose", - "toward", - "wave", - "drink", - "jump", - "woman", - "pretend", - "sister", - "week", - "human", - "joy", - "crack", - "grey", - "pray", - "surprise", - "dry", - "knee", - "less", - "search", - "bleed", - "caught", - "clean", - "embrace", - "future", - "king", - "son", - "sorrow", - "chest", - "hug", - "remain", - "sat", - "worth", - "blow", - "daddy", - "final", - "parent", - "tight", - "also", - "create", - "lonely", - "safe", - "cross", - "dress", - "evil", - "silent", - "bone", - "fate", - "perhaps", - "anger", - "class", - "scar", - "snow", - "tiny", - "tonight", - "continue", - "control", - "dog", - "edge", - "mirror", - "month", - "suddenly", - "comfort", - "given", - "loud", - "quickly", - "gaze", - "plan", - "rush", - "stone", - "town", - "battle", - "ignore", - "spirit", - "stood", - "stupid", - "yours", - "brown", - "build", - "dust", - "hey", - "kept", - "pay", - "phone", - "twist", - "although", - "ball", - "beyond", - "hidden", - "nose", - "taken", - "fail", - "float", - "pure", - "somehow", - "wash", - "wrap", - "angry", - "cheek", - "creature", - "forgotten", - "heat", - "rip", - "single", - "space", - "special", - "weak", - "whatever", - "yell", - "anyway", - "blame", - "job", - "choose", - "country", - "curse", - "drift", - "echo", - "figure", - "grew", - "laughter", - "neck", - "suffer", - "worse", - "yeah", - "disappear", - "foot", - "forward", - "knife", - "mess", - "somewhere", - "stomach", - "storm", - "beg", - "idea", - "lift", - "offer", - "breeze", - "field", - "five", - "often", - "simply", - "stuck", - "win", - "allow", - "confuse", - "enjoy", - "except", - "flower", - "seek", - "strength", - "calm", - "grin", - "gun", - "heavy", - "hill", - "large", - "ocean", - "shoe", - "sigh", - "straight", - "summer", - "tongue", - "accept", - "crazy", - "everyday", - "exist", - "grass", - "mistake", - "sent", - "shut", - "surround", - "table", - "ache", - "brain", - "destroy", - "heal", - "nature", - "shout", - "sign", - "stain", - "choice", - "doubt", - "glance", - "glow", - "mountain", - "queen", - "stranger", - "throat", - "tomorrow", - "city", - "either", - "fish", - "flame", - "rather", - "shape", - "spin", - "spread", - "ash", - "distance", - "finish", - "image", - "imagine", - "important", - "nobody", - "shatter", - "warmth", - "became", - "feed", - "flesh", - "funny", - "lust", - "shirt", - "trouble", - "yellow", - "attention", - "bare", - "bite", - "money", - "protect", - "amaze", - "appear", - "born", - "choke", - "completely", - "daughter", - "fresh", - "friendship", - "gentle", - "probably", - "six", - "deserve", - "expect", - "grab", - "middle", - "nightmare", - "river", - "thousand", - "weight", - "worst", - "wound", - "barely", - "bottle", - "cream", - "regret", - "relationship", - "stick", - "test", - "crush", - "endless", - "fault", - "itself", - "rule", - "spill", - "art", - "circle", - "join", - "kick", - "mask", - "master", - "passion", - "quick", - "raise", - "smooth", - "unless", - "wander", - "actually", - "broke", - "chair", - "deal", - "favorite", - "gift", - "note", - "number", - "sweat", - "box", - "chill", - "clothes", - "lady", - "mark", - "park", - "poor", - "sadness", - "tie", - "animal", - "belong", - "brush", - "consume", - "dawn", - "forest", - "innocent", - "pen", - "pride", - "stream", - "thick", - "clay", - "complete", - "count", - "draw", - "faith", - "press", - "silver", - "struggle", - "surface", - "taught", - "teach", - "wet", - "bless", - "chase", - "climb", - "enter", - "letter", - "melt", - "metal", - "movie", - "stretch", - "swing", - "vision", - "wife", - "beside", - "crash", - "forgot", - "guide", - "haunt", - "joke", - "knock", - "plant", - "pour", - "prove", - "reveal", - "steal", - "stuff", - "trip", - "wood", - "wrist", - "bother", - "bottom", - "crawl", - "crowd", - "fix", - "forgive", - "frown", - "grace", - "loose", - "lucky", - "party", - "release", - "surely", - "survive", - "teacher", - "gently", - "grip", - "speed", - "suicide", - "travel", - "treat", - "vein", - "written", - "cage", - "chain", - "conversation", - "date", - "enemy", - "however", - "interest", - "million", - "page", - "pink", - "proud", - "sway", - "themselves", - "winter", - "church", - "cruel", - "cup", - "demon", - "experience", - "freedom", - "pair", - "pop", - "purpose", - "respect", - "shoot", - "softly", - "state", - "strange", - "bar", - "birth", - "curl", - "dirt", - "excuse", - "lord", - "lovely", - "monster", - "order", - "pack", - "pants", - "pool", - "scene", - "seven", - "shame", - "slide", - "ugly", - "among", - "blade", - "blonde", - "closet", - "creek", - "deny", - "drug", - "eternity", - "gain", - "grade", - "handle", - "key", - "linger", - "pale", - "prepare", - "swallow", - "swim", - "tremble", - "wheel", - "won", - "cast", - "cigarette", - "claim", - "college", - "direction", - "dirty", - "gather", - "ghost", - "hundred", - "loss", - "lung", - "orange", - "present", - "swear", - "swirl", - "twice", - "wild", - "bitter", - "blanket", - "doctor", - "everywhere", - "flash", - "grown", - "knowledge", - "numb", - "pressure", - "radio", - "repeat", - "ruin", - "spend", - "unknown", - "buy", - "clock", - "devil", - "early", - "false", - "fantasy", - "pound", - "precious", - "refuse", - "sheet", - "teeth", - "welcome", - "add", - "ahead", - "block", - "bury", - "caress", - "content", - "depth", - "despite", - "distant", - "marry", - "purple", - "threw", - "whenever", - "bomb", - "dull", - "easily", - "grasp", - "hospital", - "innocence", - "normal", - "receive", - "reply", - "rhyme", - "shade", - "someday", - "sword", - "toe", - "visit", - "asleep", - "bought", - "center", - "consider", - "flat", - "hero", - "history", - "ink", - "insane", - "muscle", - "mystery", - "pocket", - "reflection", - "shove", - "silently", - "smart", - "soldier", - "spot", - "stress", - "train", - "type", - "view", - "whether", - "bus", - "energy", - "explain", - "holy", - "hunger", - "inch", - "magic", - "mix", - "noise", - "nowhere", - "prayer", - "presence", - "shock", - "snap", - "spider", - "study", - "thunder", - "trail", - "admit", - "agree", - "bag", - "bang", - "bound", - "butterfly", - "cute", - "exactly", - "explode", - "familiar", - "fold", - "further", - "pierce", - "reflect", - "scent", - "selfish", - "sharp", - "sink", - "spring", - "stumble", - "universe", - "weep", - "women", - "wonderful", - "action", - "ancient", - "attempt", - "avoid", - "birthday", - "branch", - "chocolate", - "core", - "depress", - "drunk", - "especially", - "focus", - "fruit", - "honest", - "match", - "palm", - "perfectly", - "pillow", - "pity", - "poison", - "roar", - "shift", - "slightly", - "thump", - "truck", - "tune", - "twenty", - "unable", - "wipe", - "wrote", - "coat", - "constant", - "dinner", - "drove", - "egg", - "eternal", - "flight", - "flood", - "frame", - "freak", - "gasp", - "glad", - "hollow", - "motion", - "peer", - "plastic", - "root", - "screen", - "season", - "sting", - "strike", - "team", - "unlike", - "victim", - "volume", - "warn", - "weird", - "attack", - "await", - "awake", - "built", - "charm", - "crave", - "despair", - "fought", - "grant", - "grief", - "horse", - "limit", - "message", - "ripple", - "sanity", - "scatter", - "serve", - "split", - "string", - "trick", - "annoy", - "blur", - "boat", - "brave", - "clearly", - "cling", - "connect", - "fist", - "forth", - "imagination", - "iron", - "jock", - "judge", - "lesson", - "milk", - "misery", - "nail", - "naked", - "ourselves", - "poet", - "possible", - "princess", - "sail", - "size", - "snake", - "society", - "stroke", - "torture", - "toss", - "trace", - "wise", - "bloom", - "bullet", - "cell", - "check", - "cost", - "darling", - "during", - "footstep", - "fragile", - "hallway", - "hardly", - "horizon", - "invisible", - "journey", - "midnight", - "mud", - "nod", - "pause", - "relax", - "shiver", - "sudden", - "value", - "youth", - "abuse", - "admire", - "blink", - "breast", - "bruise", - "constantly", - "couple", - "creep", - "curve", - "difference", - "dumb", - "emptiness", - "gotta", - "honor", - "plain", - "planet", - "recall", - "rub", - "ship", - "slam", - "soar", - "somebody", - "tightly", - "weather", - "adore", - "approach", - "bond", - "bread", - "burst", - "candle", - "coffee", - "cousin", - "crime", - "desert", - "flutter", - "frozen", - "grand", - "heel", - "hello", - "language", - "level", - "movement", - "pleasure", - "powerful", - "random", - "rhythm", - "settle", - "silly", - "slap", - "sort", - "spoken", - "steel", - "threaten", - "tumble", - "upset", - "aside", - "awkward", - "bee", - "blank", - "board", - "button", - "card", - "carefully", - "complain", - "crap", - "deeply", - "discover", - "drag", - "dread", - "effort", - "entire", - "fairy", - "giant", - "gotten", - "greet", - "illusion", - "jeans", - "leap", - "liquid", - "march", - "mend", - "nervous", - "nine", - "replace", - "rope", - "spine", - "stole", - "terror", - "accident", - "apple", - "balance", - "boom", - "childhood", - "collect", - "demand", - "depression", - "eventually", - "faint", - "glare", - "goal", - "group", - "honey", - "kitchen", - "laid", - "limb", - "machine", - "mere", - "mold", - "murder", - "nerve", - "painful", - "poetry", - "prince", - "rabbit", - "shelter", - "shore", - "shower", - "soothe", - "stair", - "steady", - "sunlight", - "tangle", - "tease", - "treasure", - "uncle", - "begun", - "bliss", - "canvas", - "cheer", - "claw", - "clutch", - "commit", - "crimson", - "crystal", - "delight", - "doll", - "existence", - "express", - "fog", - "football", - "gay", - "goose", - "guard", - "hatred", - "illuminate", - "mass", - "math", - "mourn", - "rich", - "rough", - "skip", - "stir", - "student", - "style", - "support", - "thorn", - "tough", - "yard", - "yearn", - "yesterday", - "advice", - "appreciate", - "autumn", - "bank", - "beam", - "bowl", - "capture", - "carve", - "collapse", - "confusion", - "creation", - "dove", - "feather", - "girlfriend", - "glory", - "government", - "harsh", - "hop", - "inner", - "loser", - "moonlight", - "neighbor", - "neither", - "peach", - "pig", - "praise", - "screw", - "shield", - "shimmer", - "sneak", - "stab", - "subject", - "throughout", - "thrown", - "tower", - "twirl", - "wow", - "army", - "arrive", - "bathroom", - "bump", - "cease", - "cookie", - "couch", - "courage", - "dim", - "guilt", - "howl", - "hum", - "husband", - "insult", - "led", - "lunch", - "mock", - "mostly", - "natural", - "nearly", - "needle", - "nerd", - "peaceful", - "perfection", - "pile", - "price", - "remove", - "roam", - "sanctuary", - "serious", - "shiny", - "shook", - "sob", - "stolen", - "tap", - "vain", - "void", - "warrior", - "wrinkle", - "affection", - "apologize", - "blossom", - "bounce", - "bridge", - "cheap", - "crumble", - "decision", - "descend", - "desperately", - "dig", - "dot", - "flip", - "frighten", - "heartbeat", - "huge", - "lazy", - "lick", - "odd", - "opinion", - "process", - "puzzle", - "quietly", - "retreat", - "score", - "sentence", - "separate", - "situation", - "skill", - "soak", - "square", - "stray", - "taint", - "task", - "tide", - "underneath", - "veil", - "whistle", - "anywhere", - "bedroom", - "bid", - "bloody", - "burden", - "careful", - "compare", - "concern", - "curtain", - "decay", - "defeat", - "describe", - "double", - "dreamer", - "driver", - "dwell", - "evening", - "flare", - "flicker", - "grandma", - "guitar", - "harm", - "horrible", - "hungry", - "indeed", - "lace", - "melody", - "monkey", - "nation", - "object", - "obviously", - "rainbow", - "salt", - "scratch", - "shown", - "shy", - "stage", - "stun", - "third", - "tickle", - "useless", - "weakness", - "worship", - "worthless", - "afternoon", - "beard", - "boyfriend", - "bubble", - "busy", - "certain", - "chin", - "concrete", - "desk", - "diamond", - "doom", - "drawn", - "due", - "felicity", - "freeze", - "frost", - "garden", - "glide", - "harmony", - "hopefully", - "hunt", - "jealous", - "lightning", - "mama", - "mercy", - "peel", - "physical", - "position", - "pulse", - "punch", - "quit", - "rant", - "respond", - "salty", - "sane", - "satisfy", - "savior", - "sheep", - "slept", - "social", - "sport", - "tuck", - "utter", - "valley", - "wolf", - "aim", - "alas", - "alter", - "arrow", - "awaken", - "beaten", - "belief", - "brand", - "ceiling", - "cheese", - "clue", - "confidence", - "connection", - "daily", - "disguise", - "eager", - "erase", - "essence", - "everytime", - "expression", - "fan", - "flag", - "flirt", - "foul", - "fur", - "giggle", - "glorious", - "ignorance", - "law", - "lifeless", - "measure", - "mighty", - "muse", - "north", - "opposite", - "paradise", - "patience", - "patient", - "pencil", - "petal", - "plate", - "ponder", - "possibly", - "practice", - "slice", - "spell", - "stock", - "strife", - "strip", - "suffocate", - "suit", - "tender", - "tool", - "trade", - "velvet", - "verse", - "waist", - "witch", - "aunt", - "bench", - "bold", - "cap", - "certainly", - "click", - "companion", - "creator", - "dart", - "delicate", - "determine", - "dish", - "dragon", - "drama", - "drum", - "dude", - "everybody", - "feast", - "forehead", - "former", - "fright", - "fully", - "gas", - "hook", - "hurl", - "invite", - "juice", - "manage", - "moral", - "possess", - "raw", - "rebel", - "royal", - "scale", - "scary", - "several", - "slight", - "stubborn", - "swell", - "talent", - "tea", - "terrible", - "thread", - "torment", - "trickle", - "usually", - "vast", - "violence", - "weave", - "acid", - "agony", - "ashamed", - "awe", - "belly", - "blend", - "blush", - "character", - "cheat", - "common", - "company", - "coward", - "creak", - "danger", - "deadly", - "defense", - "define", - "depend", - "desperate", - "destination", - "dew", - "duck", - "dusty", - "embarrass", - "engine", - "example", - "explore", - "foe", - "freely", - "frustrate", - "generation", - "glove", - "guilty", - "health", - "hurry", - "idiot", - "impossible", - "inhale", - "jaw", - "kingdom", - "mention", - "mist", - "moan", - "mumble", - "mutter", - "observe", - "ode", - "pathetic", - "pattern", - "pie", - "prefer", - "puff", - "rape", - "rare", - "revenge", - "rude", - "scrape", - "spiral", - "squeeze", - "strain", - "sunset", - "suspend", - "sympathy", - "thigh", - "throne", - "total", - "unseen", - "weapon", - "weary" - }; - } -} diff --git a/src/mnemonics/electrum-words.cpp b/src/mnemonics/electrum-words.cpp new file mode 100644 index 000000000..d1fae84cb --- /dev/null +++ b/src/mnemonics/electrum-words.cpp @@ -0,0 +1,347 @@ +// Copyright (c) 2014, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/*! + * \file electrum-words.cpp + * + * \brief Mnemonic seed generation and wallet restoration from them. + * + * This file and its header file are for translating Electrum-style word lists + * into their equivalent byte representations for cross-compatibility with + * that method of "backing up" one's wallet keys. + */ + +#include <string> +#include <cassert> +#include <map> +#include <cstdint> +#include <vector> +#include <boost/algorithm/string.hpp> +#include "crypto/crypto.h" // for declaration of crypto::secret_key +#include <fstream> +#include "mnemonics/electrum-words.h" +#include <stdexcept> +#include <boost/filesystem.hpp> +#include <boost/crc.hpp> +#include <boost/algorithm/string/join.hpp> + +namespace +{ + int num_words = 0; + const int seed_length = 24; + + std::map<std::string,uint32_t> words_map; + std::vector<std::string> words_array; + + bool is_old_style_word_list = false; + + const std::string WORD_LISTS_DIRECTORY = "wordlists"; + const std::string LANGUAGES_DIRECTORY = "languages"; + const std::string OLD_WORD_FILE = "old-word-list"; + + /*! + * \brief Tells if the module hasn't been initialized with a word list file. + * \return true if the module hasn't been initialized with a word list file false otherwise. + */ + bool is_uninitialized() + { + return num_words == 0 ? true : false; + } + + /*! + * \brief Create word list map and array data structres for use during inter-conversion between + * words and secret key. + * \param word_file Path to the word list file from pwd. + */ + void create_data_structures(const std::string &word_file) + { + words_array.clear(); + words_map.clear(); + num_words = 0; + std::ifstream input_stream; + input_stream.open(word_file.c_str(), std::ifstream::in); + + if (!input_stream) + throw std::runtime_error("Word list file couldn't be opened."); + + std::string word; + while (input_stream >> word) + { + words_array.push_back(word); + words_map[word] = num_words; + num_words++; + } + input_stream.close(); + } + + /*! + * \brief Tells if all the words passed in wlist was present in current word list file. + * \param wlist List of words to match. + * \return true if all the words were present false if not. + */ + bool word_list_file_match(const std::vector<std::string> &wlist) + { + for (std::vector<std::string>::const_iterator it = wlist.begin(); it != wlist.end(); it++) + { + if (words_map.count(*it) == 0) + { + return false; + } + } + return true; + } + + /*! + * \brief Creates a checksum index in the word list array on the list of words. + * \param words Space separated list of words + * \return Checksum index + */ + uint32_t create_checksum_index(const std::string &words) + { + boost::crc_32_type result; + result.process_bytes(words.data(), words.length()); + return result.checksum() % seed_length; + } +} + +/*! + * \namespace crypto + * + * \brief crypto namespace. + */ +namespace crypto +{ + /*! + * \namespace crypto::ElectrumWords + * + * \brief Mnemonic seed word generation and wallet restoration helper functions. + */ + namespace ElectrumWords + { + /*! + * \brief Called to initialize it work with a word list file. + * \param language Language of the word list file. + * \param old_word_list true it is to use the old style word list file false if not. + */ + void init(const std::string &language, bool old_word_list) + { + if (old_word_list) + { + // Use the old word list file if told to. + create_data_structures(WORD_LISTS_DIRECTORY + '/' + OLD_WORD_FILE); + is_old_style_word_list = true; + } + else + { + create_data_structures(WORD_LISTS_DIRECTORY + '/' + LANGUAGES_DIRECTORY + '/' + language); + is_old_style_word_list = false; + } + if (num_words == 0) + { + throw std::runtime_error(std::string("Word list file is empty: ") + + (old_word_list ? OLD_WORD_FILE : (LANGUAGES_DIRECTORY + '/' + language))); + } + } + + /*! + * \brief Converts seed words to bytes (secret key). + * \param words String containing the words separated by spaces. + * \param dst To put the secret key restored from the words. + * \return false if not a multiple of 3 words, or if word is not in the words list + */ + bool words_to_bytes(const std::string& words, crypto::secret_key& dst) + { + std::vector<std::string> wlist; + + boost::split(wlist, words, boost::is_any_of(" ")); + + // If it is seed with a checksum. + if (wlist.size() == seed_length + 1) + { + // The last word is the checksum. + std::string last_word = wlist.back(); + wlist.pop_back(); + + std::string checksum = wlist[create_checksum_index(boost::algorithm::join(wlist, " "))]; + + if (checksum != last_word) + { + // Checksum fail + return false; + } + } + // Try to find a word list file that contains all the words in the word list. + std::vector<std::string> languages; + get_language_list(languages); + + std::vector<std::string>::iterator it; + for (it = languages.begin(); it != languages.end(); it++) + { + init(*it); + if (word_list_file_match(wlist)) + { + break; + } + } + // If no such file was found, see if the old style word list file has them all. + if (it == languages.end()) + { + init("", true); + if (!word_list_file_match(wlist)) + { + return false; + } + } + int n = num_words; + + // error on non-compliant word list + if (wlist.size() != 12 && wlist.size() != 24) return false; + + for (unsigned int i=0; i < wlist.size() / 3; i++) + { + uint32_t val; + uint32_t w1, w2, w3; + + w1 = words_map.at(wlist[i*3]); + w2 = words_map.at(wlist[i*3 + 1]); + w3 = words_map.at(wlist[i*3 + 2]); + + val = w1 + n * (((n - w1) + w2) % n) + n * n * (((n - w2) + w3) % n); + + if (!(val % n == w1)) return false; + + memcpy(dst.data + i * 4, &val, 4); // copy 4 bytes to position + } + + std::string wlist_copy = words; + if (wlist.size() == 12) + { + memcpy(dst.data, dst.data + 16, 16); // if electrum 12-word seed, duplicate + wlist_copy += ' '; + wlist_copy += words; + } + + return true; + } + + /*! + * \brief Converts bytes (secret key) to seed words. + * \param src Secret key + * \param words Space delimited concatenated words get written here. + * \return true if successful false if not. Unsuccessful if wrong key size. + */ + bool bytes_to_words(const crypto::secret_key& src, std::string& words) + { + if (is_uninitialized()) + { + init("english", true); + } + + // To store the words for random access to add the checksum word later. + std::vector<std::string> words_store; + int n = num_words; + + if (sizeof(src.data) % 4 != 0 || sizeof(src.data) == 0) return false; + + // 8 bytes -> 3 words. 8 digits base 16 -> 3 digits base 1626 + for (unsigned int i=0; i < sizeof(src.data)/4; i++, words += ' ') + { + uint32_t w1, w2, w3; + + uint32_t val; + + memcpy(&val, (src.data) + (i * 4), 4); + + w1 = val % n; + w2 = ((val / n) + w1) % n; + w3 = (((val / n) / n) + w2) % n; + + words += words_array[w1]; + words += ' '; + words += words_array[w2]; + words += ' '; + words += words_array[w3]; + + words_store.push_back(words_array[w1]); + words_store.push_back(words_array[w2]); + words_store.push_back(words_array[w3]); + } + + words.pop_back(); + words += (' ' + words_store[create_checksum_index(words)]); + return false; + } + + /*! + * \brief Gets a list of seed languages that are supported. + * \param languages The vector is set to the list of languages. + */ + void get_language_list(std::vector<std::string> &languages) + { + languages.clear(); + boost::filesystem::path languages_directory("wordlists/languages"); + if (!boost::filesystem::exists(languages_directory) || + !boost::filesystem::is_directory(languages_directory)) + { + throw std::runtime_error("Word list languages directory is missing."); + } + boost::filesystem::directory_iterator end; + for (boost::filesystem::directory_iterator it(languages_directory); it != end; it++) + { + languages.push_back(it->path().filename().string()); + } + } + + /*! + * \brief Tells if the module is currenly using an old style word list. + * \return true if it is currenly using an old style word list false if not. + */ + bool get_is_old_style_word_list() + { + if (is_uninitialized()) + { + throw std::runtime_error("ElectrumWords hasn't been initialized with a word list yet."); + } + return is_old_style_word_list; + } + + /*! + * \brief Tells if the seed passed is an old style seed or not. + * \param seed The seed to check (a space delimited concatenated word list) + * \return true if the seed passed is a old style seed false if not. + */ + bool get_is_old_style_seed(const std::string &seed) + { + std::vector<std::string> wlist; + boost::split(wlist, seed, boost::is_any_of(" ")); + return wlist.size() != (seed_length + 1); + } + + } + +} diff --git a/src/mnemonics/electrum-words.h b/src/mnemonics/electrum-words.h new file mode 100644 index 000000000..c10e216e8 --- /dev/null +++ b/src/mnemonics/electrum-words.h @@ -0,0 +1,100 @@ +// Copyright (c) 2014, The Monero Project +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, are +// permitted provided that the following conditions are met: +// +// 1. Redistributions of source code must retain the above copyright notice, this list of +// conditions and the following disclaimer. +// +// 2. Redistributions in binary form must reproduce the above copyright notice, this list +// of conditions and the following disclaimer in the documentation and/or other +// materials provided with the distribution. +// +// 3. Neither the name of the copyright holder nor the names of its contributors may be +// used to endorse or promote products derived from this software without specific +// prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY +// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL +// THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +// STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF +// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +/*! + * \file electrum-words.h + * + * \brief Mnemonic seed generation and wallet restoration from them. + * + * This file and its cpp file are for translating Electrum-style word lists + * into their equivalent byte representations for cross-compatibility with + * that method of "backing up" one's wallet keys. + */ + +#include <string> +#include <cstdint> +#include <map> +#include "crypto/crypto.h" // for declaration of crypto::secret_key + +/*! + * \namespace crypto + * + * \brief crypto namespace. + */ +namespace crypto +{ + /*! + * \namespace crypto::ElectrumWords + * + * \brief Mnemonic seed word generation and wallet restoration helper functions. + */ + namespace ElectrumWords + { + /*! + * \brief Called to initialize it to work with a word list file. + * \param language Language of the word list file. + * \param old_word_list Whether it is to use the old style word list file. + */ + void init(const std::string &language, bool old_word_list=false); + + /*! + * \brief Converts seed words to bytes (secret key). + * \param words String containing the words separated by spaces. + * \param dst To put the secret key restored from the words. + * \return false if not a multiple of 3 words, or if word is not in the words list + */ + bool words_to_bytes(const std::string& words, crypto::secret_key& dst); + + /*! + * \brief Converts bytes (secret key) to seed words. + * \param src Secret key + * \param words Space delimited concatenated words get written here. + * \return true if successful false if not. Unsuccessful if wrong key size. + */ + bool bytes_to_words(const crypto::secret_key& src, std::string& words); + + /*! + * \brief Gets a list of seed languages that are supported. + * \param languages The vector is set to the list of languages. + */ + void get_language_list(std::vector<std::string> &languages); + + /*! + * \brief If the module is currenly using an old style word list. + * \return true if it is currenly using an old style word list false if not. + */ + bool get_is_old_style_word_list(); + + /*! + * \brief Tells if the seed passed is an old style seed or not. + * \param seed The seed to check (a space delimited concatenated word list) + * \return true if the seed passed is a old style seed false if not. + */ + bool get_is_old_style_seed(const std::string &seed); + } +} diff --git a/src/mnemonics/wordlists/languages/english b/src/mnemonics/wordlists/languages/english new file mode 100644 index 000000000..942040ed5 --- /dev/null +++ b/src/mnemonics/wordlists/languages/english @@ -0,0 +1,2048 @@ +abandon +ability +able +about +above +absent +absorb +abstract +absurd +abuse +access +accident +account +accuse +achieve +acid +acoustic +acquire +across +act +action +actor +actress +actual +adapt +add +addict +address +adjust +admit +adult +advance +advice +aerobic +affair +afford +afraid +again +age +agent +agree +ahead +aim +air +airport +aisle +alarm +album +alcohol +alert +alien +all +alley +allow +almost +alone +alpha +already +also +alter +always +amateur +amazing +among +amount +amused +analyst +anchor +ancient +anger +angle +angry +animal +ankle +announce +annual +another +answer +antenna +antique +anxiety +any +apart +apology +appear +apple +approve +april +arch +arctic +area +arena +argue +arm +armed +armor +army +around +arrange +arrest +arrive +arrow +art +artefact +artist +artwork +ask +aspect +assault +asset +assist +assume +asthma +athlete +atom +attack +attend +attitude +attract +auction +audit +august +aunt +author +auto +autumn +average +avocado +avoid +awake +aware +away +awesome +awful +awkward +axis +baby +bachelor +bacon +badge +bag +balance +balcony +ball +bamboo +banana +banner +bar +barely +bargain +barrel +base +basic +basket +battle +beach +bean +beauty +because +become +beef +before +begin +behave +behind +believe +below +belt +bench +benefit +best +betray +better +between +beyond +bicycle +bid +bike +bind +biology +bird +birth +bitter +black +blade +blame +blanket +blast +bleak +bless +blind +blood +blossom +blouse +blue +blur +blush +board +boat +body +boil +bomb +bone +bonus +book +boost +border +boring +borrow +boss +bottom +bounce +box +boy +bracket +brain +brand +brass +brave +bread +breeze +brick +bridge +brief +bright +bring +brisk +broccoli +broken +bronze +broom +brother +brown +brush +bubble +buddy +budget +buffalo +build +bulb +bulk +bullet +bundle +bunker +burden +burger +burst +bus +business +busy +butter +buyer +buzz +cabbage +cabin +cable +cactus +cage +cake +call +calm +camera +camp +can +canal +cancel +candy +cannon +canoe +canvas +canyon +capable +capital +captain +car +carbon +card +cargo +carpet +carry +cart +case +cash +casino +castle +casual +cat +catalog +catch +category +cattle +caught +cause +caution +cave +ceiling +celery +cement +census +century +cereal +certain +chair +chalk +champion +change +chaos +chapter +charge +chase +chat +cheap +check +cheese +chef +cherry +chest +chicken +chief +child +chimney +choice +choose +chronic +chuckle +chunk +churn +cigar +cinnamon +circle +citizen +city +civil +claim +clap +clarify +claw +clay +clean +clerk +clever +click +client +cliff +climb +clinic +clip +clock +clog +close +cloth +cloud +clown +club +clump +cluster +clutch +coach +coast +coconut +code +coffee +coil +coin +collect +color +column +combine +come +comfort +comic +common +company +concert +conduct +confirm +congress +connect +consider +control +convince +cook +cool +copper +copy +coral +core +corn +correct +cost +cotton +couch +country +couple +course +cousin +cover +coyote +crack +cradle +craft +cram +crane +crash +crater +crawl +crazy +cream +credit +creek +crew +cricket +crime +crisp +critic +crop +cross +crouch +crowd +crucial +cruel +cruise +crumble +crunch +crush +cry +crystal +cube +culture +cup +cupboard +curious +current +curtain +curve +cushion +custom +cute +cycle +dad +damage +damp +dance +danger +daring +dash +daughter +dawn +day +deal +debate +debris +decade +december +decide +decline +decorate +decrease +deer +defense +define +defy +degree +delay +deliver +demand +demise +denial +dentist +deny +depart +depend +deposit +depth +deputy +derive +describe +desert +design +desk +despair +destroy +detail +detect +develop +device +devote +diagram +dial +diamond +diary +dice +diesel +diet +differ +digital +dignity +dilemma +dinner +dinosaur +direct +dirt +disagree +discover +disease +dish +dismiss +disorder +display +distance +divert +divide +divorce +dizzy +doctor +document +dog +doll +dolphin +domain +donate +donkey +donor +door +dose +double +dove +draft +dragon +drama +drastic +draw +dream +dress +drift +drill +drink +drip +drive +drop +drum +dry +duck +dumb +dune +during +dust +dutch +duty +dwarf +dynamic +eager +eagle +early +earn +earth +easily +east +easy +echo +ecology +economy +edge +edit +educate +effort +egg +eight +either +elbow +elder +electric +elegant +element +elephant +elevator +elite +else +embark +embody +embrace +emerge +emotion +employ +empower +empty +enable +enact +end +endless +endorse +enemy +energy +enforce +engage +engine +enhance +enjoy +enlist +enough +enrich +enroll +ensure +enter +entire +entry +envelope +episode +equal +equip +era +erase +erode +erosion +error +erupt +escape +essay +essence +estate +eternal +ethics +evidence +evil +evoke +evolve +exact +example +excess +exchange +excite +exclude +excuse +execute +exercise +exhaust +exhibit +exile +exist +exit +exotic +expand +expect +expire +explain +expose +express +extend +extra +eye +eyebrow +fabric +face +faculty +fade +faint +faith +fall +false +fame +family +famous +fan +fancy +fantasy +farm +fashion +fat +fatal +father +fatigue +fault +favorite +feature +february +federal +fee +feed +feel +female +fence +festival +fetch +fever +few +fiber +fiction +field +figure +file +film +filter +final +find +fine +finger +finish +fire +firm +first +fiscal +fish +fit +fitness +fix +flag +flame +flash +flat +flavor +flee +flight +flip +float +flock +floor +flower +fluid +flush +fly +foam +focus +fog +foil +fold +follow +food +foot +force +forest +forget +fork +fortune +forum +forward +fossil +foster +found +fox +fragile +frame +frequent +fresh +friend +fringe +frog +front +frost +frown +frozen +fruit +fuel +fun +funny +furnace +fury +future +gadget +gain +galaxy +gallery +game +gap +garage +garbage +garden +garlic +garment +gas +gasp +gate +gather +gauge +gaze +general +genius +genre +gentle +genuine +gesture +ghost +giant +gift +giggle +ginger +giraffe +girl +give +glad +glance +glare +glass +glide +glimpse +globe +gloom +glory +glove +glow +glue +goat +goddess +gold +good +goose +gorilla +gospel +gossip +govern +gown +grab +grace +grain +grant +grape +grass +gravity +great +green +grid +grief +grit +grocery +group +grow +grunt +guard +guess +guide +guilt +guitar +gun +gym +habit +hair +half +hammer +hamster +hand +happy +harbor +hard +harsh +harvest +hat +have +hawk +hazard +head +health +heart +heavy +hedgehog +height +hello +helmet +help +hen +hero +hidden +high +hill +hint +hip +hire +history +hobby +hockey +hold +hole +holiday +hollow +home +honey +hood +hope +horn +horror +horse +hospital +host +hotel +hour +hover +hub +huge +human +humble +humor +hundred +hungry +hunt +hurdle +hurry +hurt +husband +hybrid +ice +icon +idea +identify +idle +ignore +ill +illegal +illness +image +imitate +immense +immune +impact +impose +improve +impulse +inch +include +income +increase +index +indicate +indoor +industry +infant +inflict +inform +inhale +inherit +initial +inject +injury +inmate +inner +innocent +input +inquiry +insane +insect +inside +inspire +install +intact +interest +into +invest +invite +involve +iron +island +isolate +issue +item +ivory +jacket +jaguar +jar +jazz +jealous +jeans +jelly +jewel +job +join +joke +journey +joy +judge +juice +jump +jungle +junior +junk +just +kangaroo +keen +keep +ketchup +key +kick +kid +kidney +kind +kingdom +kiss +kit +kitchen +kite +kitten +kiwi +knee +knife +knock +know +lab +label +labor +ladder +lady +lake +lamp +language +laptop +large +later +latin +laugh +laundry +lava +law +lawn +lawsuit +layer +lazy +leader +leaf +learn +leave +lecture +left +leg +legal +legend +leisure +lemon +lend +length +lens +leopard +lesson +letter +level +liar +liberty +library +license +life +lift +light +like +limb +limit +link +lion +liquid +list +little +live +lizard +load +loan +lobster +local +lock +logic +lonely +long +loop +lottery +loud +lounge +love +loyal +lucky +luggage +lumber +lunar +lunch +luxury +lyrics +machine +mad +magic +magnet +maid +mail +main +major +make +mammal +man +manage +mandate +mango +mansion +manual +maple +marble +march +margin +marine +market +marriage +mask +mass +master +match +material +math +matrix +matter +maximum +maze +meadow +mean +measure +meat +mechanic +medal +media +melody +melt +member +memory +mention +menu +mercy +merge +merit +merry +mesh +message +metal +method +middle +midnight +milk +million +mimic +mind +minimum +minor +minute +miracle +mirror +misery +miss +mistake +mix +mixed +mixture +mobile +model +modify +mom +moment +monitor +monkey +monster +month +moon +moral +more +morning +mosquito +mother +motion +motor +mountain +mouse +move +movie +much +muffin +mule +multiply +muscle +museum +mushroom +music +must +mutual +myself +mystery +myth +naive +name +napkin +narrow +nasty +nation +nature +near +neck +need +negative +neglect +neither +nephew +nerve +nest +net +network +neutral +never +news +next +nice +night +noble +noise +nominee +noodle +normal +north +nose +notable +note +nothing +notice +novel +now +nuclear +number +nurse +nut +oak +obey +object +oblige +obscure +observe +obtain +obvious +occur +ocean +october +odor +off +offer +office +often +oil +okay +old +olive +olympic +omit +once +one +onion +online +only +open +opera +opinion +oppose +option +orange +orbit +orchard +order +ordinary +organ +orient +original +orphan +ostrich +other +outdoor +outer +output +outside +oval +oven +over +own +owner +oxygen +oyster +ozone +pact +paddle +page +pair +palace +palm +panda +panel +panic +panther +paper +parade +parent +park +parrot +party +pass +patch +path +patient +patrol +pattern +pause +pave +payment +peace +peanut +pear +peasant +pelican +pen +penalty +pencil +people +pepper +perfect +permit +person +pet +phone +photo +phrase +physical +piano +picnic +picture +piece +pig +pigeon +pill +pilot +pink +pioneer +pipe +pistol +pitch +pizza +place +planet +plastic +plate +play +please +pledge +pluck +plug +plunge +poem +poet +point +polar +pole +police +pond +pony +pool +popular +portion +position +possible +post +potato +pottery +poverty +powder +power +practice +praise +predict +prefer +prepare +present +pretty +prevent +price +pride +primary +print +priority +prison +private +prize +problem +process +produce +profit +program +project +promote +proof +property +prosper +protect +proud +provide +public +pudding +pull +pulp +pulse +pumpkin +punch +pupil +puppy +purchase +purity +purpose +purse +push +put +puzzle +pyramid +quality +quantum +quarter +question +quick +quit +quiz +quote +rabbit +raccoon +race +rack +radar +radio +rail +rain +raise +rally +ramp +ranch +random +range +rapid +rare +rate +rather +raven +raw +razor +ready +real +reason +rebel +rebuild +recall +receive +recipe +record +recycle +reduce +reflect +reform +refuse +region +regret +regular +reject +relax +release +relief +rely +remain +remember +remind +remove +render +renew +rent +reopen +repair +repeat +replace +report +require +rescue +resemble +resist +resource +response +result +retire +retreat +return +reunion +reveal +review +reward +rhythm +rib +ribbon +rice +rich +ride +ridge +rifle +right +rigid +ring +riot +ripple +risk +ritual +rival +river +road +roast +robot +robust +rocket +romance +roof +rookie +room +rose +rotate +rough +round +route +royal +rubber +rude +rug +rule +run +runway +rural +sad +saddle +sadness +safe +sail +salad +salmon +salon +salt +salute +same +sample +sand +satisfy +satoshi +sauce +sausage +save +say +scale +scan +scare +scatter +scene +scheme +school +science +scissors +scorpion +scout +scrap +screen +script +scrub +sea +search +season +seat +second +secret +section +security +seed +seek +segment +select +sell +seminar +senior +sense +sentence +series +service +session +settle +setup +seven +shadow +shaft +shallow +share +shed +shell +sheriff +shield +shift +shine +ship +shiver +shock +shoe +shoot +shop +short +shoulder +shove +shrimp +shrug +shuffle +shy +sibling +sick +side +siege +sight +sign +silent +silk +silly +silver +similar +simple +since +sing +siren +sister +situate +six +size +skate +sketch +ski +skill +skin +skirt +skull +slab +slam +sleep +slender +slice +slide +slight +slim +slogan +slot +slow +slush +small +smart +smile +smoke +smooth +snack +snake +snap +sniff +snow +soap +soccer +social +sock +soda +soft +solar +soldier +solid +solution +solve +someone +song +soon +sorry +sort +soul +sound +soup +source +south +space +spare +spatial +spawn +speak +special +speed +spell +spend +sphere +spice +spider +spike +spin +spirit +split +spoil +sponsor +spoon +sport +spot +spray +spread +spring +spy +square +squeeze +squirrel +stable +stadium +staff +stage +stairs +stamp +stand +start +state +stay +steak +steel +stem +step +stereo +stick +still +sting +stock +stomach +stone +stool +story +stove +strategy +street +strike +strong +struggle +student +stuff +stumble +style +subject +submit +subway +success +such +sudden +suffer +sugar +suggest +suit +summer +sun +sunny +sunset +super +supply +supreme +sure +surface +surge +surprise +surround +survey +suspect +sustain +swallow +swamp +swap +swarm +swear +sweet +swift +swim +swing +switch +sword +symbol +symptom +syrup +system +table +tackle +tag +tail +talent +talk +tank +tape +target +task +taste +tattoo +taxi +teach +team +tell +ten +tenant +tennis +tent +term +test +text +thank +that +theme +then +theory +there +they +thing +this +thought +three +thrive +throw +thumb +thunder +ticket +tide +tiger +tilt +timber +time +tiny +tip +tired +tissue +title +toast +tobacco +today +toddler +toe +together +toilet +token +tomato +tomorrow +tone +tongue +tonight +tool +tooth +top +topic +topple +torch +tornado +tortoise +toss +total +tourist +toward +tower +town +toy +track +trade +traffic +tragic +train +transfer +trap +trash +travel +tray +treat +tree +trend +trial +tribe +trick +trigger +trim +trip +trophy +trouble +truck +true +truly +trumpet +trust +truth +try +tube +tuition +tumble +tuna +tunnel +turkey +turn +turtle +twelve +twenty +twice +twin +twist +two +type +typical +ugly +umbrella +unable +unaware +uncle +uncover +under +undo +unfair +unfold +unhappy +uniform +unique +unit +universe +unknown +unlock +until +unusual +unveil +update +upgrade +uphold +upon +upper +upset +urban +urge +usage +use +used +useful +useless +usual +utility +vacant +vacuum +vague +valid +valley +valve +van +vanish +vapor +various +vast +vault +vehicle +velvet +vendor +venture +venue +verb +verify +version +very +vessel +veteran +viable +vibrant +vicious +victory +video +view +village +vintage +violin +virtual +virus +visa +visit +visual +vital +vivid +vocal +voice +void +volcano +volume +vote +voyage +wage +wagon +wait +walk +wall +walnut +want +warfare +warm +warrior +wash +wasp +waste +water +wave +way +wealth +weapon +wear +weasel +weather +web +wedding +weekend +weird +welcome +west +wet +whale +what +wheat +wheel +when +where +whip +whisper +wide +width +wife +wild +will +win +window +wine +wing +wink +winner +winter +wire +wisdom +wise +wish +witness +wolf +woman +wonder +wood +wool +word +work +world +worry +worth +wrap +wreck +wrestle +wrist +write +wrong +yard +year +yellow +you +young +youth +zebra +zero +zone +zoo diff --git a/src/mnemonics/wordlists/languages/japanese b/src/mnemonics/wordlists/languages/japanese new file mode 100644 index 000000000..aa7673fce --- /dev/null +++ b/src/mnemonics/wordlists/languages/japanese @@ -0,0 +1,2048 @@ +あい +あいこくしん +あう +あお +あおぞら +あか +あかちゃん +あき +あきる +あく +あさ +あさひ +あし +あずき +あせ +あそぶ +あたる +あつい +あな +あに +あね +あひる +あまい +あみ +あめ +あめりか +あやまる +あゆむ +あらいぐま +あらし +あり +ある +あれ +あわ +あんこ +いう +いえ +いおん +いか +いがい +いかいよう +いけ +いけん +いこく +いこつ +いさん +いし +いじゅう +いす +いせい +いせえび +いせかい +いせき +いそうろう +いそがしい +いたりあ +いてざ +いてん +いと +いない +いなか +いぬ +いね +いのち +いのる +いはつ +いはん +いびき +いひん +いふく +いへん +いほう +いま +いみ +いみん +いも +いもうと +いもたれ +いもり +いや +いやす +いよかん +いよく +いらい +いらすと +いりぐち +いりょう +いりょうひ +いる +いれい +いれもの +いれる +いろ +いろえんぴつ +いわ +いわう +いわかん +いんげんまめ +うえ +うおざ +うかぶ +うきわ +うく +うくらいな +うくれれ +うけつぐ +うけつけ +うける +うごく +うこん +うさぎ +うし +うしなう +うしろ +うしろがみ +うすい +うすぎ +うせつ +うそ +うた +うちあわせ +うちがわ +うちき +うつ +うなぎ +うなじ +うに +うねる +うのう +うぶげ +うぶごえ +うま +うまれる +うみ +うむ +うめ +うめる +うもう +うやまう +うよく +うら +うらない +うる +うるさい +うれしい +うろこ +うわき +うわさ +えい +えいえん +えいが +えいぎょう +えいご +えおり +えき +えきたい +えくせる +えさ +えしゃく +えすて +えつらん +えと +えのぐ +えび +えほうまき +えほん +えま +えまき +えもじ +えもの +えらい +えらぶ +えり +えりあ +える +えん +えんえん +おきる +おく +おけ +おこる +おしえる +おやゆび +おらんだ +かあつ +かい +かう +かお +かがし +かき +かく +かこ +かさ +かす +かち +かつ +かなざわし +かに +かね +かのう +かほう +かほご +かまぼこ +かみ +かむ +かめれおん +かも +かゆい +からい +かるい +かろう +かわ +かわら +きあい +きあつ +きいろ +ぎいん +きうい +きうん +きえる +きおう +きおく +きおち +きおん +きか +きかい +きかく +きかん +きかんしゃ +きぎ +ききて +きく +きくばり +きくらげ +きけん +きけんせい +きこう +きこえる +きこく +きさい +きさく +きさま +きさらぎ +きし +きしゅ +きす +きすう +きせい +きせき +きせつ +きそ +きそう +きそく +きぞく +ぎそく +きぞん +きた +きたえる +きち +きちょう +きつえん +きつつき +きつね +きてい +きどう +きどく +きない +きなが +きぬ +きぬごし +きねん +きのう +きはく +きびしい +きひん +きふ +ぎふ +きふく +ぎぼ +きほう +きぼう +きほん +きまる +きみ +きみつ +ぎむ +きむずかしい +きめ +きめる +きもだめし +きもち +きやく +きよう +きらい +きらく +きり +きる +きれい +きれつ +きろく +ぎろん +きわめる +ぐあい +くい +くいず +くうかん +くうき +くうぐん +くうこう +くうそう +くうふく +くうぼ +くかん +くき +くきょう +くげん +ぐこう +くさ +くさい +くさき +くさばな +くさる +くし +くしゃみ +くしょう +くすのき +くすり +くすりゆび +くせ +くせげ +くせん +くたびれる +くち +くちこみ +くちさき +くつ +くつした +くつろぐ +くとうてん +くどく +くなん +くに +くねくね +くのう +くふう +くま +くみあわせ +くみたてる +くむ +くめる +くやくしょ +くらす +くり +くれる +くろ +くろう +くわしい +ぐんじょ +けあな +けいけん +けいこ +けいさい +けいさつ +げいのうじん +けいれき +けいれつ +けいれん +けいろ +けおとす +けおりもの +けが +げき +げきか +げきげん +げきだん +げきちん +げきど +げきは +げきやく +げこう +げこくじょう +けさ +げざい +けさき +げざん +けしき +けしごむ +けしょう +けす +げすと +けた +げた +けたば +けち +けちゃっぷ +けちらす +けつ +けつあつ +けつい +けつえき +けっこん +けつじょ +けってい +けつまつ +げつようび +げつれい +けつろん +げどく +けとばす +けとる +けなげ +けなす +けなみ +けぬき +げねつ +けねん +けはい +げひん +けぶかい +げぼく +けまり +けみかる +けむし +けむり +けもの +けらい +ける +げろ +けろけろ +けわしい +けんい +けんえつ +けんお +けんか +げんき +けんきゅう +けんきょ +けんけい +けんけつ +けんげん +けんこう +けんさ +けんさく +けんしゅう +けんしゅつ +けんしん +けんすう +けんそう +げんそう +けんそん +げんち +けんちく +けんてい +げんてい +けんとう +けんない +けんにん +げんぶつ +けんま +けんみん +けんめい +けんらん +けんり +けんりつ +こあくま +こい +ごい +こいびと +こうい +こうえん +こうか +こうかい +こうかん +こうさい +こうさん +こうしん +こうず +こうすい +こうせん +こうそう +こうそく +こうたい +こうちゃ +こうつう +こうてい +こうとうぶ +こうない +こうはい +こうはん +こうもく +こえ +こえる +こおり +ごがつ +こかん +こく +こくご +こくない +こくはく +こけい +こける +ここ +こころ +ごさ +こさめ +こし +こしつ +こす +こすう +こせい +こせき +こぜん +こそだて +こたい +こたえる +こたつ +こちょう +こっか +こつこつ +こつばん +こつぶ +こてい +こてん +こと +ことがら +ことし +こなごな +こねこね +このまま +このみ +このよ +こはん +ごはん +ごび +こひつじ +こふう +こふん +こぼれる +ごま +こまかい +こまつし +こまつな +こまる +こむ +こむぎこ +こめ +こもじ +こもち +こもの +こもん +こや +こやく +こやま +こゆう +こゆび +こよい +こよう +こりる +こる +これくしょん +ころっけ +こわもて +こわれる +こん +こんいん +こんかい +こんき +こんしゅう +こんしゅん +こんすい +こんだて +こんだん +こんとん +こんなん +こんびに +こんぽう +こんぽん +こんまけ +こんや +こんやく +こんれい +こんわく +さいかい +さいがい +さいきん +さいご +さいこん +さいしょ +さうな +さお +さかいし +さかな +さかみち +さき +さく +さくし +さくじょ +さくひん +さくら +さけ +さこく +さこつ +さたん +さつえい +さっか +さっきょく +さつじん +さつたば +さつまいも +さてい +さといも +さとう +さとおや +さとる +さのう +さば +さばく +さべつ +さほう +さほど +さます +さみしい +さみだれ +さむけ +さめ +さめる +さやえんどう +さゆう +さよう +さよく +さら +さらだ +さる +さわやか +さわる +さんいん +さんか +さんきゃく +さんこう +さんさい +さんざん +さんすう +さんせい +さんそ +さんそん +さんち +さんちょう +さんま +さんみ +さんらん +しあい +しあげ +しあさって +しあわせ +しいく +しいん +しうち +しえい +しお +しおけ +しか +しかい +しかく +じかん +した +したぎ +したて +したみ +しちょう +しちょうそん +しちりん +じつじ +してい +してき +してつ +してん +しとう +じどう +しなぎれ +しなもの +しなん +しねま +しねん +しのぐ +しのぶ +しはい +しばかり +しはつ +じはつ +しはらい +しはん +しひょう +じふ +しふく +じぶん +しへい +しほう +しほん +しま +しまう +しまる +しみ +じみ +しみん +じむ +しむける +しめい +しめる +しもん +しゃいん +しゃうん +しゃおん +しゃかい +じゃがいも +しやくしょ +しゃくほう +しゃけん +しゃこ +しゃこう +しゃざい +しゃしん +しゃせん +しゃそう +しゃたい +しゃたく +しゃちょう +しゃっきん +じゃま +じゃり +しゃりょう +しゃりん +しゃれい +しゅうえん +しゅうかい +しゅうきん +しゅうけい +しゅうりょう +しゅらば +しょうか +しょうかい +しょうきん +しょうじき +しょくざい +しょくたく +しょっけん +しょどう +しょもつ +しん +しんか +しんこう +しんせいじ +しんちく +しんりん +すあげ +すあし +すあな +ずあん +すいか +すいとう +すう +すうがく +すうじつ +すうせん +すおどり +すき +すきま +すく +すくう +すくない +すける +すこし +ずさん +すし +すずしい +すすめる +すそ +ずっしり +ずっと +すで +すてき +すてる +すな +すなっく +すなっぷ +すね +すねる +すのこ +すはだ +すばらしい +ずひょう +ずぶぬれ +すぶり +すふれ +すべて +すべる +ずほう +すぼん +すまい +すみ +すむ +すめし +すもう +すやき +すらいす +すらいど +すらすら +すり +する +するめ +すれちがう +すろっと +すわる +すんぜん +すんぽう +せあぶら +せいか +せいかい +せいかつ +せおう +せかい +せかいかん +せかいし +せかいじゅう +せき +せきにん +せきむ +せきゆ +せきらんうん +せけん +せこう +せすじ +せたい +せたけ +せっかい +せっかく +せっき +せっきゃく +せっきょく +せっきん +ぜっく +せっけん +せっこつ +せっさたくま +せつぞく +せつだん +せつでん +せっぱん +せつび +せつぶん +せつめい +せつりつ +せと +せなか +せのび +せはば +せぼね +せまい +せまる +せみ +せめる +せもたれ +せりふ +せわ +せん +ぜんあく +せんい +せんえい +せんか +せんきょ +せんく +せんけつ +せんげん +ぜんご +せんさい +せんし +せんしゅ +せんす +せんすい +せんせい +せんぞ +せんそう +せんたく +せんち +せんちゃ +せんちゃく +せんちょう +せんてい +せんとう +せんぬき +せんねん +ぜんぶ +せんぷうき +せんぷく +ぜんぽう +せんむ +せんめい +せんめんじょ +せんもん +せんやく +せんゆう +せんよう +ぜんら +ぜんりゃく +せんりょく +せんれい +せんろ +そあく +そいとげる +そいね +そう +ぞう +そうがんきょう +そうき +そうご +そうなん +そうび +そうひょう +そうめん +そうり +そうりょ +そえもの +そえん +そかい +そがい +そぐ +そげき +そこう +そこそこ +そざい +そし +そしな +そせい +そせん +そそぐ +そだてる +そつう +そつえん +そっかん +そつぎょう +そっけつ +そっこう +そっせん +そっと +そで +そと +そとがわ +そとづら +そなえる +そなた +そば +そふ +そふぼ +そぼ +そぼく +そぼろ +そまつ +そまる +そむく +そむりえ +そめる +そもそも +そよかぜ +そら +そらまめ +そり +そる +そろう +そんかい +そんけい +そんざい +そんしつ +そんしょう +そんぞく +そんちょう +ぞんび +ぞんぶん +そんみん +たあい +たいいん +たいうん +たいえき +たいおう +だいおう +たいか +たいかい +たいき +たいきけん +たいぐう +たいくつ +たいけい +たいけつ +たいけん +たいこ +たいこう +たいさ +たいさん +たいしゅつ +だいじょうぶ +たいしょく +だいず +だいすき +たいせい +たいせつ +たいせん +たいそう +たいちょう +だいちょう +たいとう +たいない +たいねつ +たいのう +たいは +たいはん +たいひ +たいふう +たいへん +たいほ +たいまつばな +たいまん +たいみんぐ +たいむ +たいめん +たいやき +たいやく +たいよう +たいら +たいりょう +たいりょく +たいる +たいわ +たいわん +たうえ +たえる +たおす +たおる +たかい +たかね +たき +たきび +たくさん +たけ +たこ +たこく +たこやき +たさい +ださい +たしざん +たす +たすける +たそがれ +たたかう +たたく +たちば +たちばな +たつ +だっかい +だっきゃく +だっこ +だっしめん +だっしゅつ +だったい +たて +たてる +たとえる +たな +たにん +たぬき +たね +たのしみ +たはつ +たび +たぶん +たべる +たぼう +たほうめん +たま +たまご +たまる +だむる +ためいき +ためす +ためる +たもつ +たやすい +たよる +たら +たらす +たりきほんがん +たりょう +たりる +たる +たると +たれる +たれんと +たろっと +たわむれる +たん +だんあつ +たんい +たんおん +たんか +たんき +たんけん +たんご +たんさく +たんさん +たんし +たんしゅく +たんじょうび +だんせい +たんそく +たんたい +たんち +だんち +たんちょう +たんてい +たんてき +たんとう +だんな +たんにん +だんねつ +たんのう +たんぴん +たんまつ +たんめい +だんれつ +だんろ +だんわ +ちあい +ちあん +ちい +ちいき +ちいさい +ちえ +ちえん +ちか +ちかい +ちきゅう +ちきん +ちけい +ちけいず +ちけん +ちこく +ちさい +ちしき +ちしりょう +ちず +ちせい +ちそう +ちたい +ちたん +ちちおや +ちつじょ +ちてき +ちてん +ちぬき +ちぬり +ちのう +ちひょう +ちへいせん +ちほう +ちまた +ちみつ +ちみどろ +ちめいど +ちゅうい +ちゅうおう +ちゅうおうく +ちゅうがっこう +ちゅうごく +ちゆりょく +ちょうさ +ちょうし +ちらし +ちらみ +ちり +ちりがみ +ちる +ちるど +ちわわ +ちんたい +ちんもく +ついか +つうか +つうじょう +つうじる +つうはん +つうわ +つえ +つかう +つかれる +つき +つく +つくね +つくる +つけね +つける +つごう +つた +つたえる +つち +つつじ +つとめる +つな +つながる +つなみ +つねづね +つの +つのる +つば +つぶ +つぶす +つぼ +つま +つまらない +つまる +つみ +つみき +つむ +つめたい +つもる +つや +つよい +つり +つるぼ +つるみく +つわもの +つわり +てあし +てあて +てあみ +ていか +ていき +ていけい +ていけつ +ていけつあつ +ていこく +ていさつ +ていし +ていしゃ +ていせい +ていたい +ていど +ていねい +ていひょう +ていへん +ていぼう +てうち +ておくれ +てき +てくび +てこ +てさぎょう +てさげ +でし +てすり +てそう +てちがい +てちょう +てつがく +てつづき +てつや +でぬかえ +てぬき +てぬぐい +てのひら +てはい +てふだ +てほどき +てほん +てま +てまえ +てまきずし +てみじか +てみやげ +てら +てらす +でる +てれび +てろ +てわけ +てわたし +でんあつ +てんい +てんいん +てんかい +てんき +てんぐ +てんけん +でんげん +てんごく +てんさい +てんすう +でんち +てんてき +てんとう +てんない +てんぷ +てんぷら +てんぼうだい +てんめつ +てんらく +てんらんかい +でんりゅう +でんりょく +でんわ +どあ +どあい +といれ +とうむぎ +とおい +とおす +とかい +とかす +ときおり +ときどき +とくい +とくてい +とくてん +とくべつ +とけい +とける +とさか +とし +としょかん +とそう +とたん +とち +とちゅう +とつぜん +とつにゅう +ととのえる +とない +となえる +となり +とのさま +とばす +とぶ +とほ +とほう +どま +とまる +とら +とり +とる +とんかつ +ない +ないか +ないかく +ないこう +ないしょ +ないす +ないせん +ないそう +ないぞう +なおす +なく +なこうど +なさけ +なし +なす +なぜ +なぞ +なたでここ +なつ +なっとう +なつやすみ +ななおし +なにごと +なにもの +なにわ +なは +なび +なふだ +なべ +なまいき +なまえ +なまみ +なみ +なみだ +なめらか +なめる +なやむ +ならぶ +なる +なれる +なわ +なわとび +なわばり +にあう +にいがた +にうけ +におい +にかい +にがて +にきび +にく +にくしみ +にくまん +にげる +にさんかたんそ +にし +にしき +にす +にせもの +にちじ +にちじょう +にちようび +にっか +にっき +にっけい +にっこう +にっさん +にっしょく +にっすう +にっせき +にってい +になう +にほん +にまめ +にもつ +にやり +にゅういん +にゅうか +にゅうし +にゅうしゃ +にゅうだん +にゅうぶ +にら +にりんしゃ +にる +にわ +にわとり +にんい +にんか +にんき +にんげん +にんしき +にんしょう +にんしん +にんずう +にんそう +にんたい +にんち +にんてい +にんにく +にんぷ +にんまり +にんむ +にんめい +にんよう +ぬう +ぬか +ぬく +ぬくもり +ぬし +ぬの +ぬま +ぬめり +ぬらす +ぬる +ぬんちゃく +ねあげ +ねいき +ねいる +ねいろ +ねぎ +ねぐせ +ねくたい +ねくら +ねこ +ねこぜ +ねこむ +ねさげ +ねすごす +ねそべる +ねつい +ねつぞう +ねったい +ねったいぎょ +ねぶそく +ねふだ +ねぼう +ねほりはほり +ねまき +ねまわし +ねみみ +ねむい +ねもと +ねらう +ねる +ねわざ +ねんいり +ねんおし +ねんかん +ねんき +ねんきん +ねんぐ +ねんざ +ねんし +ねんちゃく +ねんちょう +ねんど +ねんぴ +ねんぶつ +ねんまく +ねんまつ +ねんりき +ねんりょう +ねんれい +のいず +のう +のおづま +のがす +のきなみ +のこぎり +のこす +のせる +のぞく +のぞむ +のたまう +のちほど +のっく +のばす +のはら +のべる +のぼる +のむ +のやま +のらいぬ +のらねこ +のり +のる +のれん +のんき +ばあい +はあく +ばあさん +はい +ばいか +ばいく +はいけん +はいご +はいこう +はいし +はいしゅつ +はいしん +はいすい +はいせつ +はいせん +はいそう +はいち +ばいばい +はう +はえ +はえる +はおる +はか +ばか +はかい +はかる +はき +はく +はくしゅ +はけん +はこ +はこぶ +はさみ +はさん +はし +はしご +はしる +ばす +はせる +ぱそこん +はそん +はたん +はち +はちみつ +はっか +はっかく +はっき +はっきり +はっくつ +はっけん +はっこう +はっさん +はっしゃ +はっしん +はったつ +はっちゃく +はっちゅう +はってん +はっぴょう +はっぽう +はて +はな +はなす +はなび +はにかむ +はね +はは +はぶらし +はま +はみがき +はむ +はむかう +はめつ +はやい +はら +はらう +はり +はる +はれ +はろうぃん +はわい +はんい +はんえい +はんえん +はんおん +はんかく +はんかち +はんきょう +はんこ +はんこう +はんしゃ +はんしん +はんすう +はんたい +はんだん +ぱんち +ぱんつ +はんてい +はんてん +はんとし +はんのう +はんぱ +はんぶん +はんぺん +はんぼうき +はんめい +はんめん +はんらん +はんろん +ひいき +ひうん +ひえる +ひかく +ひかり +ひかん +ひく +ひくい +ひけつ +ひこうき +ひこく +ひざ +ぴざ +ひさい +ひさしぶり +ひさん +ひし +ひじ +ひしょ +ひじょう +ひそか +ひそむ +ひたむき +ひたる +ひつぎ +ひっこし +ひっし +ひっす +ひつぜん +ひつよう +ひてい +ひと +ひとごみ +ひな +ひなん +ひねる +ひはん +ひびく +ひひょう +ひふ +ひほう +ひま +ひまん +ひみつ +ひめ +ひめい +ひめじし +ひも +ひやけ +ひやす +ひゆ +ひよう +びょうき +ひらく +ひりつ +ひりょう +ひる +ひれい +ひろい +ひろう +ひわ +ひんかく +ひんけつ +ひんこん +ひんし +ひんしつ +ひんしゅ +ひんそう +ぴんち +ひんぱん +びんぼう +ふあん +ふいうち +ふうけい +ふうせん +ふうとう +ふうふ +ふえ +ふえる +ふおん +ふか +ふかい +ふきん +ふく +ふくざつ +ふこう +ふさい +ふざい +ふしぎ +ふじみ +ふすま +ふせい +ふせぐ +ふそく +ふた +ふたん +ふち +ふちょう +ふつう +ふっかつ +ふっき +ふっきん +ふっこく +ふとる +ふとん +ふね +ふのう +ふはい +ふひょう +ふへん +ふまん +ふみん +ふむ +ふめつ +ふめん +ふゆ +ふよう +ふりこ +ふりる +ふる +ふるい +ふろ +ふんいき +ふんか +ぶんか +ぶんぐ +ふんしつ +ぶんせき +ふんそう +へい +へいき +へいさ +へいわ +へきが +へこむ +へそ +へた +べつ +べっど +ぺっと +へび +へや +へる +へんか +へんかん +へんきゃく +へんきん +へんさい +へんたい +ほあん +ほいく +ほうほう +ほえる +ほおん +ほかん +ほきょう +ぼきん +ほくろ +ほけつ +ほけん +ほこう +ほこる +ほさ +ほし +ほしつ +ほしゅ +ほしょう +ほす +ほせい +ぼせい +ほそい +ほそく +ほたて +ほたる +ぼち +ほっきょく +ほっさ +ほったん +ほとんど +ほめる +ほる +ほんい +ほんき +ほんけ +ほんしつ +まいにち +まう +まかい +まかせる +まく +まける +まこと +まさつ +ますく +まぜる +まち +まつ +まつり +まとめ +まなぶ +まぬけ +まね +まねく +まひ +まほう +まめ +まもる +まゆげ +まよう +まる +まろやか +まわす +まわり +まんが +まんかい +まんきつ +まんぞく +みいら +みうち +みかた +みかん +みぎ +みけん +みこん +みすい +みすえる +みせ +みそ +みち +みてい +みとめる +みなみかさい +みねらる +みのう +みほん +みみ +みもと +みやげ +みらい +みりょく +みる +みわく +むえき +むえん +むかし +むく +むこ +むさぼる +むし +むすこ +むすめ +むせる +むせん +むだ +むち +むなしい +むね +むのう +むやみ +むよう +むら +むり +むりょう +むれ +むろん +もうどうけん +もえる +もぎ +もくし +もくてき +もし +もんく +もんだい +やすい +やすみ +やそう +やたい +やちん +やね +やぶる +やま +やみ +やめる +ややこしい +やよい +やり +やわらかい +ゆけつ +ゆしゅつ +ゆせん +ゆそう +ゆたか +ゆちゃく +ゆでる +ゆび +ゆびわ +ゆめ +ゆれる +よう +よかぜ +よかん +よきん +よくせい +よくぼう +よけい +よさん +よそう +よそく +よち +よてい +よどがわく +よねつ +よむ +よめ +よやく +よゆう +よる +よろこぶ +らいう +らくがき +らくご +らくさつ +らくだ +らくたん +らしんばん +らせん +らぞく +らたい +らち +らっか +らっかせい +られつ +りえき +りか +りかい +りきさく +りきせつ +りく +りくぐん +りくつ +りけん +りこう +りし +りす +りせい +りそう +りそく +りてん +りねん +りゅう +りゆう +りゅうがく +りゅうこう +りゅうし +りゅうねん +りよう +りょうかい +りょうきん +りょうしん +りょうて +りょうど +りょうほう +りょうり +りりく +りれき +りろん +りんご +るいじ +るす +れいかん +れいぎ +れいせい +れいぞうこ +れいとう +れきし +れきだい +れんあい +れんけい +れんけつ +れんこう +れんこん +れんさ +れんさい +れんさく +れんしゃ +れんしゅう +れんぞく +ろうか +ろうご +ろうじん +ろうそく +ろか +ろくが +ろこつ +ろしゅつ +ろせん +ろてん +ろめん +ろれつ +ろんぎ +ろんぱ +ろんぶん +ろんり +わじまし diff --git a/src/mnemonics/wordlists/languages/portuguese b/src/mnemonics/wordlists/languages/portuguese new file mode 100644 index 000000000..126fd2740 --- /dev/null +++ b/src/mnemonics/wordlists/languages/portuguese @@ -0,0 +1,1626 @@ +abaular +abdominal +abeto +abissinio +abjeto +ablucao +abnegar +abotoar +abrutalhar +absurdo +abutre +acautelar +accessorios +acetona +achocolatado +acirrar +acne +acovardar +acrostico +actinomicete +acustico +adaptavel +adeus +adivinho +adjunto +admoestar +adnominal +adotivo +adquirir +adriatico +adsorcao +adutora +advogar +aerossol +afazeres +afetuoso +afixo +afluir +afortunar +afrouxar +aftosa +afunilar +agentes +agito +aglutinar +aiatola +aimore +aino +aipo +airoso +ajeitar +ajoelhar +ajudante +ajuste +alazao +albumina +alcunha +alegria +alexandre +alforriar +alguns +alhures +alivio +almoxarife +alotropico +alpiste +alquimista +alsaciano +altura +aluviao +alvura +amazonico +ambulatorio +ametodico +amizades +amniotico +amovivel +amurada +anatomico +ancorar +anexo +anfora +aniversario +anjo +anotar +ansioso +anturio +anuviar +anverso +anzol +aonde +apaziguar +apito +aplicavel +apoteotico +aprimorar +aprumo +apto +apuros +aquoso +arauto +arbusto +arduo +aresta +arfar +arguto +aritmetico +arlequim +armisticio +aromatizar +arpoar +arquivo +arrumar +arsenio +arturiano +aruaque +arvores +asbesto +ascorbico +aspirina +asqueroso +assustar +astuto +atazanar +ativo +atletismo +atmosferico +atormentar +atroz +aturdir +audivel +auferir +augusto +aula +aumento +aurora +autuar +avatar +avexar +avizinhar +avolumar +avulso +axiomatico +azerbaijano +azimute +azoto +azulejo +bacteriologista +badulaque +baforada +baixote +bajular +balzaquiana +bambuzal +banzo +baoba +baqueta +barulho +bastonete +batuta +bauxita +bavaro +bazuca +bcrepuscular +beato +beduino +begonia +behaviorista +beisebol +belzebu +bemol +benzido +beocio +bequer +berro +besuntar +betume +bexiga +bezerro +biatlon +biboca +bicuspide +bidirecional +bienio +bifurcar +bigorna +bijuteria +bimotor +binormal +bioxido +bipolarizacao +biquini +birutice +bisturi +bituca +biunivoco +bivalve +bizarro +blasfemo +blenorreia +blindar +bloqueio +blusao +boazuda +bofete +bojudo +bolso +bombordo +bonzo +botina +boquiaberto +bostoniano +botulismo +bourbon +bovino +boximane +bravura +brevidade +britar +broxar +bruno +bruxuleio +bubonico +bucolico +buda +budista +bueiro +buffer +bugre +bujao +bumerangue +burundines +busto +butique +buzios +caatinga +cabuqui +cacunda +cafuzo +cajueiro +camurca +canudo +caquizeiro +carvoeiro +casulo +catuaba +cauterizar +cebolinha +cedula +ceifeiro +celulose +cerzir +cesto +cetro +ceus +cevar +chavena +cheroqui +chita +chovido +chuvoso +ciatico +cibernetico +cicuta +cidreira +cientistas +cifrar +cigarro +cilio +cimo +cinzento +cioso +cipriota +cirurgico +cisto +citrico +ciumento +civismo +clavicula +clero +clitoris +cluster +coaxial +cobrir +cocota +codorniz +coexistir +cogumelo +coito +colusao +compaixao +comutativo +contentamento +convulsivo +coordenativa +coquetel +correto +corvo +costureiro +cotovia +covil +cozinheiro +cretino +cristo +crivo +crotalo +cruzes +cubo +cucuia +cueiro +cuidar +cujo +cultural +cunilingua +cupula +curvo +custoso +cutucar +czarismo +dablio +dacota +dados +daguerreotipo +daiquiri +daltonismo +damista +dantesco +daquilo +darwinista +dasein +dativo +deao +debutantes +decurso +deduzir +defunto +degustar +dejeto +deltoide +demover +denunciar +deputado +deque +dervixe +desvirtuar +deturpar +deuteronomio +devoto +dextrose +dezoito +diatribe +dicotomico +didatico +dietista +difuso +digressao +diluvio +diminuto +dinheiro +dinossauro +dioxido +diplomatico +dique +dirimivel +disturbio +diurno +divulgar +dizivel +doar +dobro +docura +dodoi +doer +dogue +doloso +domo +donzela +doping +dorsal +dossie +dote +doutro +doze +dravidico +dreno +driver +dropes +druso +dubnio +ducto +dueto +dulija +dundum +duodeno +duquesa +durou +duvidoso +duzia +ebano +ebrio +eburneo +echarpe +eclusa +ecossistema +ectoplasma +ecumenismo +eczema +eden +editorial +edredom +edulcorar +efetuar +efigie +efluvio +egiptologo +egresso +egua +einsteiniano +eira +eivar +eixos +ejetar +elastomero +eldorado +elixir +elmo +eloquente +elucidativo +emaranhar +embutir +emerito +emfa +emitir +emotivo +empuxo +emulsao +enamorar +encurvar +enduro +enevoar +enfurnar +enguico +enho +enigmista +enlutar +enormidade +enpreendimento +enquanto +enriquecer +enrugar +entusiastico +enunciar +envolvimento +enxuto +enzimatico +eolico +epiteto +epoxi +epura +equivoco +erario +erbio +ereto +erguido +erisipela +ermo +erotizar +erros +erupcao +ervilha +esburacar +escutar +esfuziante +esguio +esloveno +esmurrar +esoterismo +esperanca +espirito +espurio +essencialmente +esturricar +esvoacar +etario +eterno +etiquetar +etnologo +etos +etrusco +euclidiano +euforico +eugenico +eunuco +europio +eustaquio +eutanasia +evasivo +eventualidade +evitavel +evoluir +exaustor +excursionista +exercito +exfoliado +exito +exotico +expurgo +exsudar +extrusora +exumar +fabuloso +facultativo +fado +fagulha +faixas +fajuto +faltoso +famoso +fanzine +fapesp +faquir +fartura +fastio +faturista +fausto +favorito +faxineira +fazer +fealdade +febril +fecundo +fedorento +feerico +feixe +felicidade +felipe +feltro +femur +fenotipo +fervura +festivo +feto +feudo +fevereiro +fezinha +fiasco +fibra +ficticio +fiduciario +fiesp +fifa +figurino +fijiano +filtro +finura +fiorde +fiquei +firula +fissurar +fitoteca +fivela +fixo +flavio +flexor +flibusteiro +flotilha +fluxograma +fobos +foco +fofura +foguista +foie +foliculo +fominha +fonte +forum +fosso +fotossintese +foxtrote +fraudulento +frevo +frivolo +frouxo +frutose +fuba +fucsia +fugitivo +fuinha +fujao +fulustreco +fumo +funileiro +furunculo +fustigar +futurologo +fuxico +fuzue +gabriel +gado +gaelico +gafieira +gaguejo +gaivota +gajo +galvanoplastico +gamo +ganso +garrucha +gastronomo +gatuno +gaussiano +gaviao +gaxeta +gazeteiro +gear +geiser +geminiano +generoso +genuino +geossinclinal +gerundio +gestual +getulista +gibi +gigolo +gilete +ginseng +giroscopio +glaucio +glacial +gleba +glifo +glote +glutonia +gnostico +goela +gogo +goitaca +golpista +gomo +gonzo +gorro +gostou +goticula +gourmet +governo +gozo +graxo +grevista +grito +grotesco +gruta +guaxinim +gude +gueto +guizo +guloso +gume +guru +gustativo +gustavo +gutural +habitue +haitiano +halterofilista +hamburguer +hanseniase +happening +harpista +hastear +haveres +hebreu +hectometro +hedonista +hegira +helena +helminto +hemorroidas +henrique +heptassilabo +hertziano +hesitar +heterossexual +heuristico +hexagono +hiato +hibrido +hidrostatico +hieroglifo +hifenizar +higienizar +hilario +himen +hino +hippie +hirsuto +historiografia +hitlerista +hodometro +hoje +holograma +homus +honroso +hoquei +horto +hostilizar +hotentote +huguenote +humilde +huno +hurra +hutu +iaia +ialorixa +iambico +iansa +iaque +iara +iatista +iberico +ibis +icar +iceberg +icosagono +idade +ideologo +idiotice +idoso +iemenita +iene +igarape +iglu +ignorar +igreja +iguaria +iidiche +ilativo +iletrado +ilharga +ilimitado +ilogismo +ilustrissimo +imaturo +imbuzeiro +imerso +imitavel +imovel +imputar +imutavel +inaveriguavel +incutir +induzir +inextricavel +infusao +ingua +inhame +iniquo +injusto +inning +inoxidavel +inquisitorial +insustentavel +intumescimento +inutilizavel +invulneravel +inzoneiro +iodo +iogurte +ioio +ionosfera +ioruba +iota +ipsilon +irascivel +iris +irlandes +irmaos +iroques +irrupcao +isca +isento +islandes +isotopo +isqueiro +israelita +isso +isto +iterbio +itinerario +itrio +iuane +iugoslavo +jabuticabeira +jacutinga +jade +jagunco +jainista +jaleco +jambo +jantarada +japones +jaqueta +jarro +jasmim +jato +jaula +javel +jazz +jegue +jeitoso +jejum +jenipapo +jeova +jequitiba +jersei +jesus +jetom +jiboia +jihad +jilo +jingle +jipe +jocoso +joelho +joguete +joio +jojoba +jorro +jota +joule +joviano +jubiloso +judoca +jugular +juizo +jujuba +juliano +jumento +junto +jururu +justo +juta +juventude +labutar +laguna +laico +lajota +lanterninha +lapso +laquear +lastro +lauto +lavrar +laxativo +lazer +leasing +lebre +lecionar +ledo +leguminoso +leitura +lele +lemure +lento +leonardo +leopardo +lepton +leque +leste +letreiro +leucocito +levitico +lexicologo +lhama +lhufas +liame +licoroso +lidocaina +liliputiano +limusine +linotipo +lipoproteina +liquidos +lirismo +lisura +liturgico +livros +lixo +lobulo +locutor +lodo +logro +lojista +lombriga +lontra +loop +loquaz +lorota +losango +lotus +louvor +luar +lubrificavel +lucros +lugubre +luis +luminoso +luneta +lustroso +luto +luvas +luxuriante +luzeiro +maduro +maestro +mafioso +magro +maiuscula +majoritario +malvisto +mamute +manutencao +mapoteca +maquinista +marzipa +masturbar +matuto +mausoleu +mavioso +maxixe +mazurca +meandro +mecha +medusa +mefistofelico +megera +meirinho +melro +memorizar +menu +mequetrefe +mertiolate +mestria +metroviario +mexilhao +mezanino +miau +microssegundo +midia +migratorio +mimosa +minuto +miosotis +mirtilo +misturar +mitzvah +miudos +mixuruca +mnemonico +moagem +mobilizar +modulo +moer +mofo +mogno +moita +molusco +monumento +moqueca +morubixaba +mostruario +motriz +mouse +movivel +mozarela +muarra +muculmano +mudo +mugir +muitos +mumunha +munir +muon +muquira +murros +musselina +nacoes +nado +naftalina +nago +naipe +naja +nalgum +namoro +nanquim +napolitano +naquilo +nascimento +nautilo +navios +nazista +nebuloso +nectarina +nefrologo +negus +nelore +nenufar +nepotismo +nervura +neste +netuno +neutron +nevoeiro +newtoniano +nexo +nhenhenhem +nhoque +nigeriano +niilista +ninho +niobio +niponico +niquelar +nirvana +nisto +nitroglicerina +nivoso +nobreza +nocivo +noel +nogueira +noivo +nojo +nominativo +nonuplo +noruegues +nostalgico +noturno +nouveau +nuanca +nublar +nucleotideo +nudista +nulo +numismatico +nunquinha +nupcias +nutritivo +nuvens +oasis +obcecar +obeso +obituario +objetos +oblongo +obnoxio +obrigatorio +obstruir +obtuso +obus +obvio +ocaso +occipital +oceanografo +ocioso +oclusivo +ocorrer +ocre +octogono +odalisca +odisseia +odorifico +oersted +oeste +ofertar +ofidio +oftalmologo +ogiva +ogum +oigale +oitavo +oitocentos +ojeriza +olaria +oleoso +olfato +olhos +oliveira +olmo +olor +olvidavel +ombudsman +omeleteira +omitir +omoplata +onanismo +ondular +oneroso +onomatopeico +ontologico +onus +onze +opalescente +opcional +operistico +opio +oposto +oprobrio +optometrista +opusculo +oratorio +orbital +orcar +orfao +orixa +orla +ornitologo +orquidea +ortorrombico +orvalho +osculo +osmotico +ossudo +ostrogodo +otario +otite +ouro +ousar +outubro +ouvir +ovario +overnight +oviparo +ovni +ovoviviparo +ovulo +oxala +oxente +oxiuro +oxossi +ozonizar +paciente +pactuar +padronizar +paete +pagodeiro +paixao +pajem +paludismo +pampas +panturrilha +papudo +paquistanes +pastoso +patua +paulo +pauzinhos +pavoroso +paxa +pazes +peao +pecuniario +pedunculo +pegaso +peixinho +pejorativo +pelvis +penuria +pequno +petunia +pezada +piauiense +pictorico +pierro +pigmeu +pijama +pilulas +pimpolho +pintura +piorar +pipocar +piqueteiro +pirulito +pistoleiro +pituitaria +pivotar +pixote +pizzaria +plistoceno +plotar +pluviometrico +pneumonico +poco +podridao +poetisa +pogrom +pois +polvorosa +pomposo +ponderado +pontudo +populoso +poquer +porvir +posudo +potro +pouso +povoar +prazo +prezar +privilegios +proximo +prussiano +pseudopode +psoriase +pterossauros +ptialina +ptolemaico +pudor +pueril +pufe +pugilista +puir +pujante +pulverizar +pumba +punk +purulento +pustula +putsch +puxe +quatrocentos +quetzal +quixotesco +quotizavel +rabujice +racista +radonio +rafia +ragu +rajado +ralo +rampeiro +ranzinza +raptor +raquitismo +raro +rasurar +ratoeira +ravioli +razoavel +reavivar +rebuscar +recusavel +reduzivel +reexposicao +refutavel +regurgitar +reivindicavel +rejuvenescimento +relva +remuneravel +renunciar +reorientar +repuxo +requisito +resumo +returno +reutilizar +revolvido +rezonear +riacho +ribossomo +ricota +ridiculo +rifle +rigoroso +rijo +rimel +rins +rios +riqueza +riquixa +rissole +ritualistico +rivalizar +rixa +robusto +rococo +rodoviario +roer +rogo +rojao +rolo +rompimento +ronronar +roqueiro +rorqual +rosto +rotundo +rouxinol +roxo +royal +ruas +rucula +rudimentos +ruela +rufo +rugoso +ruivo +rule +rumoroso +runico +ruptura +rural +rustico +rutilar +saariano +sabujo +sacudir +sadomasoquista +safra +sagui +sais +samurai +santuario +sapo +saquear +sartriano +saturno +saude +sauva +saveiro +saxofonista +sazonal +scherzo +script +seara +seborreia +secura +seduzir +sefardim +seguro +seja +selvas +sempre +senzala +sepultura +sequoia +sestercio +setuplo +seus +seviciar +sezonismo +shalom +siames +sibilante +sicrano +sidra +sifilitico +signos +silvo +simultaneo +sinusite +sionista +sirio +sisudo +situar +sivan +slide +slogan +soar +sobrio +socratico +sodomizar +soerguer +software +sogro +soja +solver +somente +sonso +sopro +soquete +sorveteiro +sossego +soturno +sousafone +sovinice +sozinho +suavizar +subverter +sucursal +sudoriparo +sufragio +sugestoes +suite +sujo +sultao +sumula +suntuoso +suor +supurar +suruba +susto +suturar +suvenir +tabuleta +taco +tadjique +tafeta +tagarelice +taitiano +talvez +tampouco +tanzaniano +taoista +tapume +taquion +tarugo +tascar +tatuar +tautologico +tavola +taxionomista +tchecoslovaco +teatrologo +tectonismo +tedioso +teflon +tegumento +teixo +telurio +temporas +tenue +teosofico +tepido +tequila +terrorista +testosterona +tetrico +teutonico +teve +texugo +tiara +tibia +tiete +tifoide +tigresa +tijolo +tilintar +timpano +tintureiro +tiquete +tiroteio +tisico +titulos +tive +toar +toboga +tofu +togoles +toicinho +tolueno +tomografo +tontura +toponimo +toquio +torvelinho +tostar +toto +touro +toxina +trazer +trezentos +trivialidade +trovoar +truta +tuaregue +tubular +tucano +tudo +tufo +tuiste +tulipa +tumultuoso +tunisino +tupiniquim +turvo +tutu +ucraniano +udenista +ufanista +ufologo +ugaritico +uiste +uivo +ulceroso +ulema +ultravioleta +umbilical +umero +umido +umlaut +unanimidade +unesco +ungulado +unheiro +univoco +untuoso +urano +urbano +urdir +uretra +urgente +urinol +urna +urologo +urro +ursulina +urtiga +urupe +usavel +usbeque +usei +usineiro +usurpar +utero +utilizar +utopico +uvular +uxoricidio +vacuo +vadio +vaguear +vaivem +valvula +vampiro +vantajoso +vaporoso +vaquinha +varziano +vasto +vaticinio +vaudeville +vazio +veado +vedico +veemente +vegetativo +veio +veja +veludo +venusiano +verdade +verve +vestuario +vetusto +vexatorio +vezes +viavel +vibratorio +victor +vicunha +vidros +vietnamita +vigoroso +vilipendiar +vime +vintem +violoncelo +viquingue +virus +visualizar +vituperio +viuvo +vivo +vizir +voar +vociferar +vodu +vogar +voile +volver +vomito +vontade +vortice +vosso +voto +vovozinha +voyeuse +vozes +vulva +vupt +western +xadrez +xale +xampu +xango +xarope +xaual +xavante +xaxim +xenonio +xepa +xerox +xicara +xifopago +xiita +xilogravura +xinxim +xistoso +xixi +xodo +xogum +xucro +zabumba +zagueiro +zambiano +zanzar +zarpar +zebu +zefiro +zeloso +zenite +zumbi diff --git a/src/mnemonics/wordlists/languages/spanish b/src/mnemonics/wordlists/languages/spanish new file mode 100644 index 000000000..d0900c2c7 --- /dev/null +++ b/src/mnemonics/wordlists/languages/spanish @@ -0,0 +1,2048 @@ +ábaco +abdomen +abeja +abierto +abogado +abono +aborto +abrazo +abrir +abuelo +abuso +acabar +academia +acceso +acción +aceite +acelga +acento +aceptar +ácido +aclarar +acné +acoger +acoso +activo +acto +actriz +actuar +acudir +acuerdo +acusar +adicto +admitir +adoptar +adorno +aduana +adulto +aéreo +afectar +afición +afinar +afirmar +ágil +agitar +agonía +agosto +agotar +agregar +agrio +agua +agudo +águila +aguja +ahogo +ahorro +aire +aislar +ajedrez +ajeno +ajuste +alacrán +alambre +alarma +alba +álbum +alcalde +aldea +alegre +alejar +alerta +aleta +alfiler +alga +algodón +aliado +aliento +alivio +alma +almeja +almíbar +altar +alteza +altivo +alto +altura +alumno +alzar +amable +amante +amapola +amargo +amasar +ámbar +ámbito +ameno +amigo +amistad +amor +amparo +amplio +ancho +anciano +ancla +andar +andén +anemia +ángulo +anillo +ánimo +anís +anotar +antena +antiguo +antojo +anual +anular +anuncio +añadir +añejo +año +apagar +aparato +apetito +apio +aplicar +apodo +aporte +apoyo +aprender +aprobar +apuesta +apuro +arado +araña +arar +árbitro +árbol +arbusto +archivo +arco +arder +ardilla +arduo +área +árido +aries +armonía +arnés +aroma +arpa +arpón +arreglo +arroz +arruga +arte +artista +asa +asado +asalto +ascenso +asegurar +aseo +asesor +asiento +asilo +asistir +asno +asombro +áspero +astilla +astro +astuto +asumir +asunto +atajo +ataque +atar +atento +ateo +ático +atleta +átomo +atraer +atroz +atún +audaz +audio +auge +aula +aumento +ausente +autor +aval +avance +avaro +ave +avellana +avena +avestruz +avión +aviso +ayer +ayuda +ayuno +azafrán +azar +azote +azúcar +azufre +azul +baba +babor +bache +bahía +baile +bajar +balanza +balcón +balde +bambú +banco +banda +baño +barba +barco +barniz +barro +báscula +bastón +basura +batalla +batería +batir +batuta +baúl +bazar +bebé +bebida +bello +besar +beso +bestia +bicho +bien +bingo +blanco +bloque +blusa +boa +bobina +bobo +boca +bocina +boda +bodega +boina +bola +bolero +bolsa +bomba +bondad +bonito +bono +bonsái +borde +borrar +bosque +bote +botín +bóveda +bozal +bravo +brazo +brecha +breve +brillo +brinco +brisa +broca +broma +bronce +brote +bruja +brusco +bruto +buceo +bucle +bueno +buey +bufanda +bufón +búho +buitre +bulto +burbuja +burla +burro +buscar +butaca +buzón +caballo +cabeza +cabina +cabra +cacao +cadáver +cadena +caer +café +caída +caimán +caja +cajón +cal +calamar +calcio +caldo +calidad +calle +calma +calor +calvo +cama +cambio +camello +camino +campo +cáncer +candil +canela +canguro +canica +canto +caña +cañón +caoba +caos +capaz +capitán +capote +captar +capucha +cara +carbón +cárcel +careta +carga +cariño +carne +carpeta +carro +carta +casa +casco +casero +caspa +castor +catorce +catre +caudal +causa +cazo +cebolla +ceder +cedro +celda +célebre +celoso +célula +cemento +ceniza +centro +cerca +cerdo +cereza +cero +cerrar +certeza +césped +cetro +chacal +chaleco +champú +chancla +chapa +charla +chico +chiste +chivo +choque +choza +chuleta +chupar +ciclón +ciego +cielo +cien +cierto +cifra +cigarro +cima +cinco +cine +cinta +ciprés +circo +ciruela +cisne +cita +ciudad +clamor +clan +claro +clase +clave +cliente +clima +clínica +cobre +cocción +cochino +cocina +coco +código +codo +cofre +coger +cohete +cojín +cojo +cola +colcha +colegio +colgar +colina +collar +colmo +columna +combate +comer +comida +cómodo +compra +conde +conejo +conga +conocer +consejo +contar +copa +copia +corazón +corbata +corcho +cordón +corona +correr +coser +cosmos +costa +cráneo +cráter +crear +crecer +creído +crema +cría +crimen +cripta +crisis +cromo +crónica +croqueta +crudo +cruz +cuadro +cuarto +cuatro +cubo +cubrir +cuchara +cuello +cuento +cuerda +cuesta +cueva +cuidar +culebra +culpa +culto +cumbre +cumplir +cuna +cuneta +cuota +cupón +cúpula +curar +curioso +curso +curva +cutis +dama +danza +dar +dardo +dátil +deber +débil +década +decir +dedo +defensa +definir +dejar +delfín +delgado +delito +demora +denso +dental +deporte +derecho +derrota +desayuno +deseo +desfile +desnudo +destino +desvío +detalle +detener +deuda +día +diablo +diadema +diamante +diana +diario +dibujo +dictar +diente +dieta +diez +difícil +digno +dilema +diluir +dinero +directo +dirigir +disco +diseño +disfraz +diva +divino +doble +doce +dolor +domingo +don +donar +dorado +dormir +dorso +dos +dosis +dragón +droga +ducha +duda +duelo +dueño +dulce +dúo +duque +durar +dureza +duro +ébano +ebrio +echar +eco +ecuador +edad +edición +edificio +editor +educar +efecto +eficaz +eje +ejemplo +elefante +elegir +elemento +elevar +elipse +élite +elixir +elogio +eludir +embudo +emitir +emoción +empate +empeño +empleo +empresa +enano +encargo +enchufe +encía +enemigo +enero +enfado +enfermo +engaño +enigma +enlace +enorme +enredo +ensayo +enseñar +entero +entrar +envase +envío +época +equipo +erizo +escala +escena +escolar +escribir +escudo +esencia +esfera +esfuerzo +espada +espejo +espía +esposa +espuma +esquí +estar +este +estilo +estufa +etapa +eterno +ética +etnia +evadir +evaluar +evento +evitar +exacto +examen +exceso +excusa +exento +exigir +exilio +existir +éxito +experto +explicar +exponer +extremo +fábrica +fábula +fachada +fácil +factor +faena +faja +falda +fallo +falso +faltar +fama +familia +famoso +faraón +farmacia +farol +farsa +fase +fatiga +fauna +favor +fax +febrero +fecha +feliz +feo +feria +feroz +fértil +fervor +festín +fiable +fianza +fiar +fibra +ficción +ficha +fideo +fiebre +fiel +fiera +fiesta +figura +fijar +fijo +fila +filete +filial +filtro +fin +finca +fingir +finito +firma +flaco +flauta +flecha +flor +flota +fluir +flujo +flúor +fobia +foca +fogata +fogón +folio +folleto +fondo +forma +forro +fortuna +forzar +fosa +foto +fracaso +frágil +franja +frase +fraude +freír +freno +fresa +frío +frito +fruta +fuego +fuente +fuerza +fuga +fumar +función +funda +furgón +furia +fusil +fútbol +futuro +gacela +gafas +gaita +gajo +gala +galería +gallo +gamba +ganar +gancho +ganga +ganso +garaje +garza +gasolina +gastar +gato +gavilán +gemelo +gemir +gen +género +genio +gente +geranio +gerente +germen +gesto +gigante +gimnasio +girar +giro +glaciar +globo +gloria +gol +golfo +goloso +golpe +goma +gordo +gorila +gorra +gota +goteo +gozar +grada +gráfico +grano +grasa +gratis +grave +grieta +grillo +gripe +gris +grito +grosor +grúa +grueso +grumo +grupo +guante +guapo +guardia +guerra +guía +guiño +guion +guiso +guitarra +gusano +gustar +haber +hábil +hablar +hacer +hacha +hada +hallar +hamaca +harina +haz +hazaña +hebilla +hebra +hecho +helado +helio +hembra +herir +hermano +héroe +hervir +hielo +hierro +hígado +higiene +hijo +himno +historia +hocico +hogar +hoguera +hoja +hombre +hongo +honor +honra +hora +hormiga +horno +hostil +hoyo +hueco +huelga +huerta +hueso +huevo +huida +huir +humano +húmedo +humilde +humo +hundir +huracán +hurto +icono +ideal +idioma +ídolo +iglesia +iglú +igual +ilegal +ilusión +imagen +imán +imitar +impar +imperio +imponer +impulso +incapaz +índice +inerte +infiel +informe +ingenio +inicio +inmenso +inmune +innato +insecto +instante +interés +íntimo +intuir +inútil +invierno +ira +iris +ironía +isla +islote +jabalí +jabón +jamón +jarabe +jardín +jarra +jaula +jazmín +jefe +jeringa +jinete +jornada +joroba +joven +joya +juerga +jueves +juez +jugador +jugo +juguete +juicio +junco +jungla +junio +juntar +júpiter +jurar +justo +juvenil +juzgar +kilo +koala +labio +lacio +lacra +lado +ladrón +lagarto +lágrima +laguna +laico +lamer +lámina +lámpara +lana +lancha +langosta +lanza +lápiz +largo +larva +lástima +lata +látex +latir +laurel +lavar +lazo +leal +lección +leche +lector +leer +legión +legumbre +lejano +lengua +lento +leña +león +leopardo +lesión +letal +letra +leve +leyenda +libertad +libro +licor +líder +lidiar +lienzo +liga +ligero +lima +límite +limón +limpio +lince +lindo +línea +lingote +lino +linterna +líquido +liso +lista +litera +litio +litro +llaga +llama +llanto +llave +llegar +llenar +llevar +llorar +llover +lluvia +lobo +loción +loco +locura +lógica +logro +lombriz +lomo +lonja +lote +lucha +lucir +lugar +lujo +luna +lunes +lupa +lustro +luto +luz +maceta +macho +madera +madre +maduro +maestro +mafia +magia +mago +maíz +maldad +maleta +malla +malo +mamá +mambo +mamut +manco +mando +manejar +manga +maniquí +manjar +mano +manso +manta +mañana +mapa +máquina +mar +marco +marea +marfil +margen +marido +mármol +marrón +martes +marzo +masa +máscara +masivo +matar +materia +matiz +matriz +máximo +mayor +mazorca +mecha +medalla +medio +médula +mejilla +mejor +melena +melón +memoria +menor +mensaje +mente +menú +mercado +merengue +mérito +mes +mesón +meta +meter +método +metro +mezcla +miedo +miel +miembro +miga +mil +milagro +militar +millón +mimo +mina +minero +mínimo +minuto +miope +mirar +misa +miseria +misil +mismo +mitad +mito +mochila +moción +moda +modelo +moho +mojar +molde +moler +molino +momento +momia +monarca +moneda +monja +monto +moño +morada +morder +moreno +morir +morro +morsa +mortal +mosca +mostrar +motivo +mover +móvil +mozo +mucho +mudar +mueble +muela +muerte +muestra +mugre +mujer +mula +muleta +multa +mundo +muñeca +mural +muro +músculo +museo +musgo +música +muslo +nácar +nación +nadar +naipe +naranja +nariz +narrar +nasal +natal +nativo +natural +náusea +naval +nave +navidad +necio +néctar +negar +negocio +negro +neón +nervio +neto +neutro +nevar +nevera +nicho +nido +niebla +nieto +niñez +niño +nítido +nivel +nobleza +noche +nómina +noria +norma +norte +nota +noticia +novato +novela +novio +nube +nuca +núcleo +nudillo +nudo +nuera +nueve +nuez +nulo +número +nutria +oasis +obeso +obispo +objeto +obra +obrero +observar +obtener +obvio +oca +ocaso +océano +ochenta +ocho +ocio +ocre +octavo +octubre +oculto +ocupar +ocurrir +odiar +odio +odisea +oeste +ofensa +oferta +oficio +ofrecer +ogro +oído +oír +ojo +ola +oleada +olfato +olivo +olla +olmo +olor +olvido +ombligo +onda +onza +opaco +opción +ópera +opinar +oponer +optar +óptica +opuesto +oración +orador +oral +órbita +orca +orden +oreja +órgano +orgía +orgullo +oriente +origen +orilla +oro +orquesta +oruga +osadía +oscuro +osezno +oso +ostra +otoño +otro +oveja +óvulo +óxido +oxígeno +oyente +ozono +pacto +padre +paella +página +pago +país +pájaro +palabra +palco +paleta +pálido +palma +paloma +palpar +pan +panal +pánico +pantera +pañuelo +papá +papel +papilla +paquete +parar +parcela +pared +parir +paro +párpado +parque +párrafo +parte +pasar +paseo +pasión +paso +pasta +pata +patio +patria +pausa +pauta +pavo +payaso +peatón +pecado +pecera +pecho +pedal +pedir +pegar +peine +pelar +peldaño +pelea +peligro +pellejo +pelo +peluca +pena +pensar +peñón +peón +peor +pepino +pequeño +pera +percha +perder +pereza +perfil +perico +perla +permiso +perro +persona +pesa +pesca +pésimo +pestaña +pétalo +petróleo +pez +pezuña +picar +pichón +pie +piedra +pierna +pieza +pijama +pilar +piloto +pimienta +pino +pintor +pinza +piña +piojo +pipa +pirata +pisar +piscina +piso +pista +pitón +pizca +placa +plan +plata +playa +plaza +pleito +pleno +plomo +pluma +plural +pobre +poco +poder +podio +poema +poesía +poeta +polen +policía +pollo +polvo +pomada +pomelo +pomo +pompa +poner +porción +portal +posada +poseer +posible +poste +potencia +potro +pozo +prado +precoz +pregunta +premio +prensa +preso +previo +primo +príncipe +prisión +privar +proa +probar +proceso +producto +proeza +profesor +programa +prole +promesa +pronto +propio +próximo +prueba +público +puchero +pudor +pueblo +puerta +puesto +pulga +pulir +pulmón +pulpo +pulso +puma +punto +puñal +puño +pupa +pupila +puré +quedar +queja +quemar +querer +queso +quieto +química +quince +quitar +rábano +rabia +rabo +ración +radical +raíz +rama +rampa +rancho +rango +rapaz +rápido +rapto +rasgo +raspa +rato +rayo +raza +razón +reacción +realidad +rebaño +rebote +recaer +receta +rechazo +recoger +recreo +recto +recurso +red +redondo +reducir +reflejo +reforma +refrán +refugio +regalo +regir +regla +regreso +rehén +reino +reír +reja +relato +relevo +relieve +relleno +reloj +remar +remedio +remo +rencor +rendir +renta +reparto +repetir +reposo +reptil +res +rescate +resina +respeto +resto +resumen +retiro +retorno +retrato +reunir +revés +revista +rey +rezar +rico +riego +rienda +riesgo +rifa +rígido +rigor +rincón +riñón +río +riqueza +risa +ritmo +rito +rizo +roble +roce +rociar +rodar +rodeo +rodilla +roer +rojizo +rojo +romero +romper +ron +ronco +ronda +ropa +ropero +rosa +rosca +rostro +rotar +rubí +rubor +rudo +rueda +rugir +ruido +ruina +ruleta +rulo +rumbo +rumor +ruptura +ruta +rutina +sábado +saber +sabio +sable +sacar +sagaz +sagrado +sala +saldo +salero +salir +salmón +salón +salsa +salto +salud +salvar +samba +sanción +sandía +sanear +sangre +sanidad +sano +santo +sapo +saque +sardina +sartén +sastre +satán +sauna +saxofón +sección +seco +secreto +secta +sed +seguir +seis +sello +selva +semana +semilla +senda +sensor +señal +señor +separar +sepia +sequía +ser +serie +sermón +servir +sesenta +sesión +seta +setenta +severo +sexo +sexto +sidra +siesta +siete +siglo +signo +sílaba +silbar +silencio +silla +símbolo +simio +sirena +sistema +sitio +situar +sobre +socio +sodio +sol +solapa +soldado +soledad +sólido +soltar +solución +sombra +sondeo +sonido +sonoro +sonrisa +sopa +soplar +soporte +sordo +sorpresa +sorteo +sostén +sótano +suave +subir +suceso +sudor +suegra +suelo +sueño +suerte +sufrir +sujeto +sultán +sumar +superar +suplir +suponer +supremo +sur +surco +sureño +surgir +susto +sutil +tabaco +tabique +tabla +tabú +taco +tacto +tajo +talar +talco +talento +talla +talón +tamaño +tambor +tango +tanque +tapa +tapete +tapia +tapón +taquilla +tarde +tarea +tarifa +tarjeta +tarot +tarro +tarta +tatuaje +tauro +taza +tazón +teatro +techo +tecla +técnica +tejado +tejer +tejido +tela +teléfono +tema +temor +templo +tenaz +tender +tener +tenis +tenso +teoría +terapia +terco +término +ternura +terror +tesis +tesoro +testigo +tetera +texto +tez +tibio +tiburón +tiempo +tienda +tierra +tieso +tigre +tijera +tilde +timbre +tímido +timo +tinta +tío +típico +tipo +tira +tirón +titán +títere +título +tiza +toalla +tobillo +tocar +tocino +todo +toga +toldo +tomar +tono +tonto +topar +tope +toque +tórax +torero +tormenta +torneo +toro +torpedo +torre +torso +tortuga +tos +tosco +toser +tóxico +trabajo +tractor +traer +tráfico +trago +traje +tramo +trance +trato +trauma +trazar +trébol +tregua +treinta +tren +trepar +tres +tribu +trigo +tripa +triste +triunfo +trofeo +trompa +tronco +tropa +trote +trozo +truco +trueno +trufa +tubería +tubo +tuerto +tumba +tumor +túnel +túnica +turbina +turismo +turno +tutor +ubicar +úlcera +umbral +unidad +unir +universo +uno +untar +uña +urbano +urbe +urgente +urna +usar +usuario +útil +utopía +uva +vaca +vacío +vacuna +vagar +vago +vaina +vajilla +vale +válido +valle +valor +válvula +vampiro +vara +variar +varón +vaso +vecino +vector +vehículo +veinte +vejez +vela +velero +veloz +vena +vencer +venda +veneno +vengar +venir +venta +venus +ver +verano +verbo +verde +vereda +verja +verso +verter +vía +viaje +vibrar +vicio +víctima +vida +vídeo +vidrio +viejo +viernes +vigor +vil +villa +vinagre +vino +viñedo +violín +viral +virgo +virtud +visor +víspera +vista +vitamina +viudo +vivaz +vivero +vivir +vivo +volcán +volumen +volver +voraz +votar +voto +voz +vuelo +vulgar +yacer +yate +yegua +yema +yerno +yeso +yodo +yoga +yogur +zafiro +zanja +zapato +zarza +zona +zorro +zumo +zurdo diff --git a/src/mnemonics/wordlists/old-word-list b/src/mnemonics/wordlists/old-word-list new file mode 100644 index 000000000..a5184a9ce --- /dev/null +++ b/src/mnemonics/wordlists/old-word-list @@ -0,0 +1,1626 @@ +like +just +love +know +never +want +time +out +there +make +look +eye +down +only +think +heart +back +then +into +about +more +away +still +them +take +thing +even +through +long +always +world +too +friend +tell +try +hand +thought +over +here +other +need +smile +again +much +cry +been +night +ever +little +said +end +some +those +around +mind +people +girl +leave +dream +left +turn +myself +give +nothing +really +off +before +something +find +walk +wish +good +once +place +ask +stop +keep +watch +seem +everything +wait +got +yet +made +remember +start +alone +run +hope +maybe +believe +body +hate +after +close +talk +stand +own +each +hurt +help +home +god +soul +new +many +two +inside +should +true +first +fear +mean +better +play +another +gone +change +use +wonder +someone +hair +cold +open +best +any +behind +happen +water +dark +laugh +stay +forever +name +work +show +sky +break +came +deep +door +put +black +together +upon +happy +such +great +white +matter +fill +past +please +burn +cause +enough +touch +moment +soon +voice +scream +anything +stare +sound +red +everyone +hide +kiss +truth +death +beautiful +mine +blood +broken +very +pass +next +forget +tree +wrong +air +mother +understand +lip +hit +wall +memory +sleep +free +high +realize +school +might +skin +sweet +perfect +blue +kill +breath +dance +against +fly +between +grow +strong +under +listen +bring +sometimes +speak +pull +person +become +family +begin +ground +real +small +father +sure +feet +rest +young +finally +land +across +today +different +guy +line +fire +reason +reach +second +slowly +write +eat +smell +mouth +step +learn +three +floor +promise +breathe +darkness +push +earth +guess +save +song +above +along +both +color +house +almost +sorry +anymore +brother +okay +dear +game +fade +already +apart +warm +beauty +heard +notice +question +shine +began +piece +whole +shadow +secret +street +within +finger +point +morning +whisper +child +moon +green +story +glass +kid +silence +since +soft +yourself +empty +shall +angel +answer +baby +bright +dad +path +worry +hour +drop +follow +power +war +half +flow +heaven +act +chance +fact +least +tired +children +near +quite +afraid +rise +sea +taste +window +cover +nice +trust +lot +sad +cool +force +peace +return +blind +easy +ready +roll +rose +drive +held +music +beneath +hang +mom +paint +emotion +quiet +clear +cloud +few +pretty +bird +outside +paper +picture +front +rock +simple +anyone +meant +reality +road +sense +waste +bit +leaf +thank +happiness +meet +men +smoke +truly +decide +self +age +book +form +alive +carry +escape +damn +instead +able +ice +minute +throw +catch +leg +ring +course +goodbye +lead +poem +sick +corner +desire +known +problem +remind +shoulder +suppose +toward +wave +drink +jump +woman +pretend +sister +week +human +joy +crack +grey +pray +surprise +dry +knee +less +search +bleed +caught +clean +embrace +future +king +son +sorrow +chest +hug +remain +sat +worth +blow +daddy +final +parent +tight +also +create +lonely +safe +cross +dress +evil +silent +bone +fate +perhaps +anger +class +scar +snow +tiny +tonight +continue +control +dog +edge +mirror +month +suddenly +comfort +given +loud +quickly +gaze +plan +rush +stone +town +battle +ignore +spirit +stood +stupid +yours +brown +build +dust +hey +kept +pay +phone +twist +although +ball +beyond +hidden +nose +taken +fail +float +pure +somehow +wash +wrap +angry +cheek +creature +forgotten +heat +rip +single +space +special +weak +whatever +yell +anyway +blame +job +choose +country +curse +drift +echo +figure +grew +laughter +neck +suffer +worse +yeah +disappear +foot +forward +knife +mess +somewhere +stomach +storm +beg +idea +lift +offer +breeze +field +five +often +simply +stuck +win +allow +confuse +enjoy +except +flower +seek +strength +calm +grin +gun +heavy +hill +large +ocean +shoe +sigh +straight +summer +tongue +accept +crazy +everyday +exist +grass +mistake +sent +shut +surround +table +ache +brain +destroy +heal +nature +shout +sign +stain +choice +doubt +glance +glow +mountain +queen +stranger +throat +tomorrow +city +either +fish +flame +rather +shape +spin +spread +ash +distance +finish +image +imagine +important +nobody +shatter +warmth +became +feed +flesh +funny +lust +shirt +trouble +yellow +attention +bare +bite +money +protect +amaze +appear +born +choke +completely +daughter +fresh +friendship +gentle +probably +six +deserve +expect +grab +middle +nightmare +river +thousand +weight +worst +wound +barely +bottle +cream +regret +relationship +stick +test +crush +endless +fault +itself +rule +spill +art +circle +join +kick +mask +master +passion +quick +raise +smooth +unless +wander +actually +broke +chair +deal +favorite +gift +note +number +sweat +box +chill +clothes +lady +mark +park +poor +sadness +tie +animal +belong +brush +consume +dawn +forest +innocent +pen +pride +stream +thick +clay +complete +count +draw +faith +press +silver +struggle +surface +taught +teach +wet +bless +chase +climb +enter +letter +melt +metal +movie +stretch +swing +vision +wife +beside +crash +forgot +guide +haunt +joke +knock +plant +pour +prove +reveal +steal +stuff +trip +wood +wrist +bother +bottom +crawl +crowd +fix +forgive +frown +grace +loose +lucky +party +release +surely +survive +teacher +gently +grip +speed +suicide +travel +treat +vein +written +cage +chain +conversation +date +enemy +however +interest +million +page +pink +proud +sway +themselves +winter +church +cruel +cup +demon +experience +freedom +pair +pop +purpose +respect +shoot +softly +state +strange +bar +birth +curl +dirt +excuse +lord +lovely +monster +order +pack +pants +pool +scene +seven +shame +slide +ugly +among +blade +blonde +closet +creek +deny +drug +eternity +gain +grade +handle +key +linger +pale +prepare +swallow +swim +tremble +wheel +won +cast +cigarette +claim +college +direction +dirty +gather +ghost +hundred +loss +lung +orange +present +swear +swirl +twice +wild +bitter +blanket +doctor +everywhere +flash +grown +knowledge +numb +pressure +radio +repeat +ruin +spend +unknown +buy +clock +devil +early +false +fantasy +pound +precious +refuse +sheet +teeth +welcome +add +ahead +block +bury +caress +content +depth +despite +distant +marry +purple +threw +whenever +bomb +dull +easily +grasp +hospital +innocence +normal +receive +reply +rhyme +shade +someday +sword +toe +visit +asleep +bought +center +consider +flat +hero +history +ink +insane +muscle +mystery +pocket +reflection +shove +silently +smart +soldier +spot +stress +train +type +view +whether +bus +energy +explain +holy +hunger +inch +magic +mix +noise +nowhere +prayer +presence +shock +snap +spider +study +thunder +trail +admit +agree +bag +bang +bound +butterfly +cute +exactly +explode +familiar +fold +further +pierce +reflect +scent +selfish +sharp +sink +spring +stumble +universe +weep +women +wonderful +action +ancient +attempt +avoid +birthday +branch +chocolate +core +depress +drunk +especially +focus +fruit +honest +match +palm +perfectly +pillow +pity +poison +roar +shift +slightly +thump +truck +tune +twenty +unable +wipe +wrote +coat +constant +dinner +drove +egg +eternal +flight +flood +frame +freak +gasp +glad +hollow +motion +peer +plastic +root +screen +season +sting +strike +team +unlike +victim +volume +warn +weird +attack +await +awake +built +charm +crave +despair +fought +grant +grief +horse +limit +message +ripple +sanity +scatter +serve +split +string +trick +annoy +blur +boat +brave +clearly +cling +connect +fist +forth +imagination +iron +jock +judge +lesson +milk +misery +nail +naked +ourselves +poet +possible +princess +sail +size +snake +society +stroke +torture +toss +trace +wise +bloom +bullet +cell +check +cost +darling +during +footstep +fragile +hallway +hardly +horizon +invisible +journey +midnight +mud +nod +pause +relax +shiver +sudden +value +youth +abuse +admire +blink +breast +bruise +constantly +couple +creep +curve +difference +dumb +emptiness +gotta +honor +plain +planet +recall +rub +ship +slam +soar +somebody +tightly +weather +adore +approach +bond +bread +burst +candle +coffee +cousin +crime +desert +flutter +frozen +grand +heel +hello +language +level +movement +pleasure +powerful +random +rhythm +settle +silly +slap +sort +spoken +steel +threaten +tumble +upset +aside +awkward +bee +blank +board +button +card +carefully +complain +crap +deeply +discover +drag +dread +effort +entire +fairy +giant +gotten +greet +illusion +jeans +leap +liquid +march +mend +nervous +nine +replace +rope +spine +stole +terror +accident +apple +balance +boom +childhood +collect +demand +depression +eventually +faint +glare +goal +group +honey +kitchen +laid +limb +machine +mere +mold +murder +nerve +painful +poetry +prince +rabbit +shelter +shore +shower +soothe +stair +steady +sunlight +tangle +tease +treasure +uncle +begun +bliss +canvas +cheer +claw +clutch +commit +crimson +crystal +delight +doll +existence +express +fog +football +gay +goose +guard +hatred +illuminate +mass +math +mourn +rich +rough +skip +stir +student +style +support +thorn +tough +yard +yearn +yesterday +advice +appreciate +autumn +bank +beam +bowl +capture +carve +collapse +confusion +creation +dove +feather +girlfriend +glory +government +harsh +hop +inner +loser +moonlight +neighbor +neither +peach +pig +praise +screw +shield +shimmer +sneak +stab +subject +throughout +thrown +tower +twirl +wow +army +arrive +bathroom +bump +cease +cookie +couch +courage +dim +guilt +howl +hum +husband +insult +led +lunch +mock +mostly +natural +nearly +needle +nerd +peaceful +perfection +pile +price +remove +roam +sanctuary +serious +shiny +shook +sob +stolen +tap +vain +void +warrior +wrinkle +affection +apologize +blossom +bounce +bridge +cheap +crumble +decision +descend +desperately +dig +dot +flip +frighten +heartbeat +huge +lazy +lick +odd +opinion +process +puzzle +quietly +retreat +score +sentence +separate +situation +skill +soak +square +stray +taint +task +tide +underneath +veil +whistle +anywhere +bedroom +bid +bloody +burden +careful +compare +concern +curtain +decay +defeat +describe +double +dreamer +driver +dwell +evening +flare +flicker +grandma +guitar +harm +horrible +hungry +indeed +lace +melody +monkey +nation +object +obviously +rainbow +salt +scratch +shown +shy +stage +stun +third +tickle +useless +weakness +worship +worthless +afternoon +beard +boyfriend +bubble +busy +certain +chin +concrete +desk +diamond +doom +drawn +due +felicity +freeze +frost +garden +glide +harmony +hopefully +hunt +jealous +lightning +mama +mercy +peel +physical +position +pulse +punch +quit +rant +respond +salty +sane +satisfy +savior +sheep +slept +social +sport +tuck +utter +valley +wolf +aim +alas +alter +arrow +awaken +beaten +belief +brand +ceiling +cheese +clue +confidence +connection +daily +disguise +eager +erase +essence +everytime +expression +fan +flag +flirt +foul +fur +giggle +glorious +ignorance +law +lifeless +measure +mighty +muse +north +opposite +paradise +patience +patient +pencil +petal +plate +ponder +possibly +practice +slice +spell +stock +strife +strip +suffocate +suit +tender +tool +trade +velvet +verse +waist +witch +aunt +bench +bold +cap +certainly +click +companion +creator +dart +delicate +determine +dish +dragon +drama +drum +dude +everybody +feast +forehead +former +fright +fully +gas +hook +hurl +invite +juice +manage +moral +possess +raw +rebel +royal +scale +scary +several +slight +stubborn +swell +talent +tea +terrible +thread +torment +trickle +usually +vast +violence +weave +acid +agony +ashamed +awe +belly +blend +blush +character +cheat +common +company +coward +creak +danger +deadly +defense +define +depend +desperate +destination +dew +duck +dusty +embarrass +engine +example +explore +foe +freely +frustrate +generation +glove +guilty +health +hurry +idiot +impossible +inhale +jaw +kingdom +mention +mist +moan +mumble +mutter +observe +ode +pathetic +pattern +pie +prefer +puff +rape +rare +revenge +rude +scrape +spiral +squeeze +strain +sunset +suspend +sympathy +thigh +throne +total +unseen +weapon +weary diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 37974088a..b10feb929 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -28,6 +28,12 @@ // // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers +/*! + * \file simplewallet.cpp + * + * \brief Source file that defines simple_wallet class. + */ + #include <thread> #include <iostream> #include <sstream> @@ -46,7 +52,8 @@ #include "wallet/wallet_rpc_server.h" #include "version.h" #include "crypto/crypto.h" // for crypto::secret_key definition -#include "crypto/electrum-words.h" +#include "mnemonics/electrum-words.h" +#include <stdexcept> #if defined(WIN32) #include <crtdbg.h> @@ -380,10 +387,18 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) } } - if (!crypto::ElectrumWords::words_to_bytes(m_electrum_seed, m_recovery_key)) + try { - fail_msg_writer() << "electrum-style word list failed verification"; - return false; + if (!crypto::ElectrumWords::words_to_bytes(m_electrum_seed, m_recovery_key)) + { + fail_msg_writer() << "electrum-style word list failed verification"; + return false; + } + } + catch (std::runtime_error &e) + { + fail_msg_writer() << e.what() << std::endl; + return false; } } bool r = new_wallet(m_wallet_file, pwd_container.password(), m_recovery_key, m_restore_deterministic_wallet, m_non_deterministic, testnet); @@ -430,6 +445,46 @@ bool simple_wallet::try_connect_to_daemon() return true; } +/*! + * \brief Gets the word seed language from the user. + * + * User is asked to choose from a list of supported languages. + * + * \return The chosen language. + */ +std::string simple_wallet::get_mnemonic_language() +{ + std::vector<std::string> language_list; + std::string language_choice; + int language_number = -1; + crypto::ElectrumWords::get_language_list(language_list); + std::cout << "List of available languages for your wallet's seed:" << std::endl; + int ii; + std::vector<std::string>::iterator it; + for (it = language_list.begin(), ii = 0; it != language_list.end(); it++, ii++) + { + std::cout << ii << " : " << *it << std::endl; + } + while (language_number < 0) + { + language_choice = command_line::input_line("Enter the number corresponding to the language of your choice: "); + try + { + language_number = std::stoi(language_choice); + if (!((language_number >= 0) && (static_cast<uint>(language_number) < language_list.size()))) + { + language_number = -1; + fail_msg_writer() << "Invalid language choice passed. Please try again.\n"; + } + } + catch (std::exception &e) + { + fail_msg_writer() << "Invalid language choice passed. Please try again.\n"; + } + } + return language_list[language_number]; +} + //---------------------------------------------------------------------------------------------------- bool simple_wallet::new_wallet(const string &wallet_file, const std::string& password, const crypto::secret_key& recovery_key, bool recover, bool two_random, bool testnet) { @@ -456,7 +511,41 @@ bool simple_wallet::new_wallet(const string &wallet_file, const std::string& pas // convert rng value to electrum-style word list std::string electrum_words; - crypto::ElectrumWords::bytes_to_words(recovery_val, electrum_words); + + bool was_deprecated_wallet = m_restore_deterministic_wallet && + (crypto::ElectrumWords::get_is_old_style_word_list() || + crypto::ElectrumWords::get_is_old_style_seed(m_electrum_seed)); + + // Ask for seed language if it is not a wallet restore or if it was a deprecated wallet + // that was earlier used before this restore. + if (!m_restore_deterministic_wallet || was_deprecated_wallet) + { + if (was_deprecated_wallet) + { + // The user had used an older version of the wallet with old style mnemonics. + message_writer(epee::log_space::console_color_green, false) << "\nYou had been using " << + "a deprecated version of the wallet. Please use the new seed that we provide.\n"; + } + std::string mnemonic_language = get_mnemonic_language(); + try + { + crypto::ElectrumWords::init(mnemonic_language); + } + catch (std::runtime_error &e) + { + fail_msg_writer() << e.what() << std::endl; + return false; + } + } + try + { + crypto::ElectrumWords::bytes_to_words(recovery_val, electrum_words); + } + catch (std::runtime_error &e) + { + fail_msg_writer() << e.what() << std::endl; + return false; + } std::string print_electrum = ""; diff --git a/src/simplewallet/simplewallet.h b/src/simplewallet/simplewallet.h index 17affd564..8567b2343 100644 --- a/src/simplewallet/simplewallet.h +++ b/src/simplewallet/simplewallet.h @@ -28,6 +28,11 @@ // // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers +/*! + * \file simplewallet.h + * + * \brief Header file that declares simple_wallet class. + */ #pragma once #include <memory> @@ -41,12 +46,15 @@ #include "password_container.h" #include "crypto/crypto.h" // for definition of crypto::secret_key - +/*! + * \namespace cryptonote + * \brief Holds cryptonote related classes and helpers. + */ namespace cryptonote { - /************************************************************************/ - /* */ - /************************************************************************/ + /*! + * \brief Manages wallet operations. This is the most abstracted wallet class. + */ class simple_wallet : public tools::i_wallet2_callback { public: @@ -93,6 +101,15 @@ namespace cryptonote bool try_connect_to_daemon(); bool ask_wallet_create_if_needed(); + /*! + * \brief Gets the word seed language from the user. + * + * User is asked to choose from a list of supported languages. + * + * \return The chosen language. + */ + std::string get_mnemonic_language(); + //----------------- i_wallet2_callback --------------------- virtual void on_new_block(uint64_t height, const cryptonote::block& block); virtual void on_money_received(uint64_t height, const cryptonote::transaction& tx, size_t out_index); diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 3161f3b16..b8f793d7c 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -46,7 +46,7 @@ using namespace epee; #include "crypto/crypto.h" #include "serialization/binary_utils.h" #include "cryptonote_protocol/blobdatatype.h" -#include "crypto/electrum-words.h" +#include "mnemonics/electrum-words.h" #include "common/dns_utils.h" extern "C" |