├── .circleci └── config.yml ├── .dockerignore ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── Dockerfile ├── LICENSE ├── README.md ├── cli ├── Cargo.toml ├── README.md ├── src │ └── main.rs └── tests │ └── integration.rs ├── dictionary ├── Cargo.toml └── src │ ├── adjectives.rs │ ├── adverbs.rs │ ├── case.rs │ ├── lib.rs │ ├── nouns.rs │ ├── phrase.rs │ └── sha.rs └── web ├── Cargo.toml ├── README.md └── src ├── index.rs ├── main.rs ├── param.rs ├── random.rs └── show.rs /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: rust:latest 6 | steps: 7 | - checkout 8 | - restore_cache: 9 | keys: 10 | - deps-{{ checksum "Cargo.lock" }} 11 | - deps- # used if checksum fails 12 | - run: 13 | name: Test 14 | command: cargo test --all 15 | - save_cache: 16 | key: deps-{{ checksum "Cargo.lock" }} 17 | paths: 18 | - target/debug/deps 19 | 20 | deploy-master: 21 | docker: 22 | - image: rust:latest 23 | steps: 24 | - checkout 25 | - restore_cache: 26 | keys: 27 | - deps-{{ checksum "Cargo.lock" }} 28 | - deps- # used if checksum fails 29 | - run: 30 | name: Setup git user info 31 | command: | 32 | git config --global user.email "chewbacha@gmail.com" 33 | git config --global user.name "Kevin Choubacha" 34 | - run: 35 | name: Tag commit 36 | command: git tag -m "$(cargo run -p git-release-name-cli -- $(git rev-parse HEAD) -f sentence)" $(cargo run -p git-release-name-cli -- $(git rev-parse HEAD) -f kebab) 37 | - run: 38 | name: Push tag 39 | command: git push origin --tags 40 | workflows: 41 | version: 2 42 | build-deploy: 43 | jobs: 44 | - build 45 | - deploy-master: 46 | requires: 47 | - build 48 | filters: 49 | branches: 50 | only: master 51 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | **/*.rs.bk 3 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | [[package]] 2 | name = "Inflector" 3 | version = "0.11.2" 4 | source = "registry+https://github.com/rust-lang/crates.io-index" 5 | dependencies = [ 6 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 7 | "regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 8 | ] 9 | 10 | [[package]] 11 | name = "actix" 12 | version = "0.5.6" 13 | source = "registry+https://github.com/rust-lang/crates.io-index" 14 | dependencies = [ 15 | "actix_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 16 | "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 17 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 18 | "crossbeam-channel 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 19 | "failure 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 20 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 21 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 22 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 23 | "skeptic 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", 24 | "smallvec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 25 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 26 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 27 | "tokio-signal 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 28 | "trust-dns-resolver 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", 29 | "uuid 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", 30 | ] 31 | 32 | [[package]] 33 | name = "actix-web" 34 | version = "0.6.1" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | dependencies = [ 37 | "actix 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 38 | "base64 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 39 | "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 40 | "brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 41 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 42 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 43 | "cookie 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 44 | "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 45 | "failure 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 46 | "flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 47 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 48 | "futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 49 | "h2 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 50 | "http 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 51 | "http-range 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 52 | "httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", 53 | "language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 54 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 55 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 56 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 57 | "mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 58 | "mime_guess 2.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", 59 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 60 | "net2 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 61 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 62 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 63 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 64 | "regex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 65 | "serde 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 66 | "serde_json 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", 67 | "serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 68 | "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 69 | "slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 70 | "smallvec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 71 | "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 72 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 73 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 74 | "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 75 | "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 76 | ] 77 | 78 | [[package]] 79 | name = "actix_derive" 80 | version = "0.2.0" 81 | source = "registry+https://github.com/rust-lang/crates.io-index" 82 | dependencies = [ 83 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 84 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 85 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 86 | "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 87 | ] 88 | 89 | [[package]] 90 | name = "aho-corasick" 91 | version = "0.6.4" 92 | source = "registry+https://github.com/rust-lang/crates.io-index" 93 | dependencies = [ 94 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 95 | ] 96 | 97 | [[package]] 98 | name = "ansi_term" 99 | version = "0.11.0" 100 | source = "registry+https://github.com/rust-lang/crates.io-index" 101 | dependencies = [ 102 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 103 | ] 104 | 105 | [[package]] 106 | name = "arrayvec" 107 | version = "0.4.7" 108 | source = "registry+https://github.com/rust-lang/crates.io-index" 109 | dependencies = [ 110 | "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 111 | ] 112 | 113 | [[package]] 114 | name = "assert_cli" 115 | version = "0.5.4" 116 | source = "registry+https://github.com/rust-lang/crates.io-index" 117 | dependencies = [ 118 | "colored 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 119 | "difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 120 | "environment 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 121 | "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 122 | "serde_json 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", 123 | "skeptic 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)", 124 | ] 125 | 126 | [[package]] 127 | name = "atty" 128 | version = "0.2.10" 129 | source = "registry+https://github.com/rust-lang/crates.io-index" 130 | dependencies = [ 131 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 132 | "termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 133 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 134 | ] 135 | 136 | [[package]] 137 | name = "backtrace" 138 | version = "0.2.3" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | dependencies = [ 141 | "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 142 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 143 | "dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 144 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 145 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 146 | "rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 147 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 148 | ] 149 | 150 | [[package]] 151 | name = "backtrace" 152 | version = "0.3.7" 153 | source = "registry+https://github.com/rust-lang/crates.io-index" 154 | dependencies = [ 155 | "backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 156 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 157 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 158 | "rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", 159 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 160 | ] 161 | 162 | [[package]] 163 | name = "backtrace-sys" 164 | version = "0.1.16" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | dependencies = [ 167 | "cc 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", 168 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 169 | ] 170 | 171 | [[package]] 172 | name = "base64" 173 | version = "0.6.0" 174 | source = "registry+https://github.com/rust-lang/crates.io-index" 175 | dependencies = [ 176 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 177 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 178 | ] 179 | 180 | [[package]] 181 | name = "base64" 182 | version = "0.9.1" 183 | source = "registry+https://github.com/rust-lang/crates.io-index" 184 | dependencies = [ 185 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 186 | "safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 187 | ] 188 | 189 | [[package]] 190 | name = "bitflags" 191 | version = "0.9.1" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | 194 | [[package]] 195 | name = "bitflags" 196 | version = "1.0.3" 197 | source = "registry+https://github.com/rust-lang/crates.io-index" 198 | 199 | [[package]] 200 | name = "brotli-sys" 201 | version = "0.3.2" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | dependencies = [ 204 | "cc 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", 205 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 206 | ] 207 | 208 | [[package]] 209 | name = "brotli2" 210 | version = "0.3.2" 211 | source = "registry+https://github.com/rust-lang/crates.io-index" 212 | dependencies = [ 213 | "brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 214 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 215 | ] 216 | 217 | [[package]] 218 | name = "bytecount" 219 | version = "0.2.0" 220 | source = "registry+https://github.com/rust-lang/crates.io-index" 221 | 222 | [[package]] 223 | name = "byteorder" 224 | version = "1.2.2" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | 227 | [[package]] 228 | name = "bytes" 229 | version = "0.4.7" 230 | source = "registry+https://github.com/rust-lang/crates.io-index" 231 | dependencies = [ 232 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 233 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 234 | ] 235 | 236 | [[package]] 237 | name = "cargo_metadata" 238 | version = "0.3.3" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | dependencies = [ 241 | "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 242 | "semver 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 243 | "serde 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 244 | "serde_derive 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 245 | "serde_json 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", 246 | ] 247 | 248 | [[package]] 249 | name = "cc" 250 | version = "1.0.15" 251 | source = "registry+https://github.com/rust-lang/crates.io-index" 252 | 253 | [[package]] 254 | name = "cfg-if" 255 | version = "0.1.3" 256 | source = "registry+https://github.com/rust-lang/crates.io-index" 257 | 258 | [[package]] 259 | name = "clap" 260 | version = "2.31.2" 261 | source = "registry+https://github.com/rust-lang/crates.io-index" 262 | dependencies = [ 263 | "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 264 | "atty 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", 265 | "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 266 | "strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 267 | "textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 268 | "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 269 | "vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 270 | ] 271 | 272 | [[package]] 273 | name = "cloudabi" 274 | version = "0.0.3" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | dependencies = [ 277 | "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 278 | ] 279 | 280 | [[package]] 281 | name = "colored" 282 | version = "1.6.0" 283 | source = "registry+https://github.com/rust-lang/crates.io-index" 284 | dependencies = [ 285 | "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 286 | ] 287 | 288 | [[package]] 289 | name = "cookie" 290 | version = "0.10.1" 291 | source = "registry+https://github.com/rust-lang/crates.io-index" 292 | dependencies = [ 293 | "base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 294 | "ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)", 295 | "time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)", 296 | "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 297 | ] 298 | 299 | [[package]] 300 | name = "crossbeam-channel" 301 | version = "0.1.2" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | dependencies = [ 304 | "crossbeam-epoch 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 305 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 306 | "parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 307 | ] 308 | 309 | [[package]] 310 | name = "crossbeam-deque" 311 | version = "0.2.0" 312 | source = "registry+https://github.com/rust-lang/crates.io-index" 313 | dependencies = [ 314 | "crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 315 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 316 | ] 317 | 318 | [[package]] 319 | name = "crossbeam-deque" 320 | version = "0.3.1" 321 | source = "registry+https://github.com/rust-lang/crates.io-index" 322 | dependencies = [ 323 | "crossbeam-epoch 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 324 | "crossbeam-utils 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 325 | ] 326 | 327 | [[package]] 328 | name = "crossbeam-epoch" 329 | version = "0.2.0" 330 | source = "registry+https://github.com/rust-lang/crates.io-index" 331 | dependencies = [ 332 | "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 333 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 334 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 335 | "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 336 | "memoffset 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 337 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 338 | ] 339 | 340 | [[package]] 341 | name = "crossbeam-epoch" 342 | version = "0.3.1" 343 | source = "registry+https://github.com/rust-lang/crates.io-index" 344 | dependencies = [ 345 | "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 346 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 347 | "crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 348 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 349 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 350 | "nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 351 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 352 | ] 353 | 354 | [[package]] 355 | name = "crossbeam-epoch" 356 | version = "0.4.1" 357 | source = "registry+https://github.com/rust-lang/crates.io-index" 358 | dependencies = [ 359 | "arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 360 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 361 | "crossbeam-utils 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 362 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 363 | "memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 364 | "scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 365 | ] 366 | 367 | [[package]] 368 | name = "crossbeam-utils" 369 | version = "0.2.2" 370 | source = "registry+https://github.com/rust-lang/crates.io-index" 371 | dependencies = [ 372 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 373 | ] 374 | 375 | [[package]] 376 | name = "crossbeam-utils" 377 | version = "0.3.2" 378 | source = "registry+https://github.com/rust-lang/crates.io-index" 379 | dependencies = [ 380 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 381 | ] 382 | 383 | [[package]] 384 | name = "dbghelp-sys" 385 | version = "0.2.0" 386 | source = "registry+https://github.com/rust-lang/crates.io-index" 387 | dependencies = [ 388 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 389 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 390 | ] 391 | 392 | [[package]] 393 | name = "difference" 394 | version = "1.0.0" 395 | source = "registry+https://github.com/rust-lang/crates.io-index" 396 | 397 | [[package]] 398 | name = "dtoa" 399 | version = "0.4.2" 400 | source = "registry+https://github.com/rust-lang/crates.io-index" 401 | 402 | [[package]] 403 | name = "encoding" 404 | version = "0.2.33" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | dependencies = [ 407 | "encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 408 | "encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 409 | "encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 410 | "encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 411 | "encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)", 412 | ] 413 | 414 | [[package]] 415 | name = "encoding-index-japanese" 416 | version = "1.20141219.5" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | dependencies = [ 419 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 420 | ] 421 | 422 | [[package]] 423 | name = "encoding-index-korean" 424 | version = "1.20141219.5" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | dependencies = [ 427 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 428 | ] 429 | 430 | [[package]] 431 | name = "encoding-index-simpchinese" 432 | version = "1.20141219.5" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | dependencies = [ 435 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 436 | ] 437 | 438 | [[package]] 439 | name = "encoding-index-singlebyte" 440 | version = "1.20141219.5" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | dependencies = [ 443 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 444 | ] 445 | 446 | [[package]] 447 | name = "encoding-index-tradchinese" 448 | version = "1.20141219.5" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | dependencies = [ 451 | "encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 452 | ] 453 | 454 | [[package]] 455 | name = "encoding_index_tests" 456 | version = "0.1.4" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | 459 | [[package]] 460 | name = "environment" 461 | version = "0.1.1" 462 | source = "registry+https://github.com/rust-lang/crates.io-index" 463 | 464 | [[package]] 465 | name = "error-chain" 466 | version = "0.1.12" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | dependencies = [ 469 | "backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 470 | ] 471 | 472 | [[package]] 473 | name = "error-chain" 474 | version = "0.8.1" 475 | source = "registry+https://github.com/rust-lang/crates.io-index" 476 | dependencies = [ 477 | "backtrace 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 478 | ] 479 | 480 | [[package]] 481 | name = "error-chain" 482 | version = "0.11.0" 483 | source = "registry+https://github.com/rust-lang/crates.io-index" 484 | dependencies = [ 485 | "backtrace 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 486 | ] 487 | 488 | [[package]] 489 | name = "failure" 490 | version = "0.1.1" 491 | source = "registry+https://github.com/rust-lang/crates.io-index" 492 | dependencies = [ 493 | "backtrace 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 494 | "failure_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 495 | ] 496 | 497 | [[package]] 498 | name = "failure_derive" 499 | version = "0.1.1" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | dependencies = [ 502 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 503 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 504 | "synstructure 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 505 | ] 506 | 507 | [[package]] 508 | name = "flate2" 509 | version = "1.0.1" 510 | source = "registry+https://github.com/rust-lang/crates.io-index" 511 | dependencies = [ 512 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 513 | "miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 514 | ] 515 | 516 | [[package]] 517 | name = "fnv" 518 | version = "1.0.6" 519 | source = "registry+https://github.com/rust-lang/crates.io-index" 520 | 521 | [[package]] 522 | name = "fuchsia-zircon" 523 | version = "0.3.3" 524 | source = "registry+https://github.com/rust-lang/crates.io-index" 525 | dependencies = [ 526 | "bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 527 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 528 | ] 529 | 530 | [[package]] 531 | name = "fuchsia-zircon-sys" 532 | version = "0.3.3" 533 | source = "registry+https://github.com/rust-lang/crates.io-index" 534 | 535 | [[package]] 536 | name = "futures" 537 | version = "0.1.21" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | 540 | [[package]] 541 | name = "futures-cpupool" 542 | version = "0.1.8" 543 | source = "registry+https://github.com/rust-lang/crates.io-index" 544 | dependencies = [ 545 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 546 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 547 | ] 548 | 549 | [[package]] 550 | name = "gcc" 551 | version = "0.3.54" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | 554 | [[package]] 555 | name = "git-release-name" 556 | version = "0.2.0" 557 | dependencies = [ 558 | "Inflector 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", 559 | ] 560 | 561 | [[package]] 562 | name = "git-release-name-cli" 563 | version = "0.1.0" 564 | dependencies = [ 565 | "assert_cli 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)", 566 | "atty 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", 567 | "clap 2.31.2 (registry+https://github.com/rust-lang/crates.io-index)", 568 | "git-release-name 0.2.0", 569 | "rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", 570 | ] 571 | 572 | [[package]] 573 | name = "git-release-name-web" 574 | version = "0.1.0" 575 | dependencies = [ 576 | "actix-web 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 577 | "git-release-name 0.2.0", 578 | "rand 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 579 | "serde 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 580 | "serde_derive 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 581 | "serde_json 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", 582 | ] 583 | 584 | [[package]] 585 | name = "glob" 586 | version = "0.2.11" 587 | source = "registry+https://github.com/rust-lang/crates.io-index" 588 | 589 | [[package]] 590 | name = "h2" 591 | version = "0.1.6" 592 | source = "registry+https://github.com/rust-lang/crates.io-index" 593 | dependencies = [ 594 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 595 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 596 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 597 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 598 | "http 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 599 | "indexmap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 600 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 601 | "slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 602 | "string 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 603 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 604 | ] 605 | 606 | [[package]] 607 | name = "hostname" 608 | version = "0.1.4" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | dependencies = [ 611 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 612 | "winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 613 | ] 614 | 615 | [[package]] 616 | name = "http" 617 | version = "0.1.5" 618 | source = "registry+https://github.com/rust-lang/crates.io-index" 619 | dependencies = [ 620 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 621 | "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", 622 | ] 623 | 624 | [[package]] 625 | name = "http-range" 626 | version = "0.1.1" 627 | source = "registry+https://github.com/rust-lang/crates.io-index" 628 | 629 | [[package]] 630 | name = "httparse" 631 | version = "1.2.4" 632 | source = "registry+https://github.com/rust-lang/crates.io-index" 633 | 634 | [[package]] 635 | name = "idna" 636 | version = "0.1.4" 637 | source = "registry+https://github.com/rust-lang/crates.io-index" 638 | dependencies = [ 639 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 640 | "unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 641 | "unicode-normalization 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 642 | ] 643 | 644 | [[package]] 645 | name = "indexmap" 646 | version = "1.0.1" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | 649 | [[package]] 650 | name = "iovec" 651 | version = "0.1.2" 652 | source = "registry+https://github.com/rust-lang/crates.io-index" 653 | dependencies = [ 654 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 655 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 656 | ] 657 | 658 | [[package]] 659 | name = "ipconfig" 660 | version = "0.1.6" 661 | source = "registry+https://github.com/rust-lang/crates.io-index" 662 | dependencies = [ 663 | "error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)", 664 | "socket2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 665 | "widestring 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 666 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 667 | "winreg 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", 668 | ] 669 | 670 | [[package]] 671 | name = "itoa" 672 | version = "0.3.4" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | 675 | [[package]] 676 | name = "itoa" 677 | version = "0.4.1" 678 | source = "registry+https://github.com/rust-lang/crates.io-index" 679 | 680 | [[package]] 681 | name = "kernel32-sys" 682 | version = "0.2.2" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | dependencies = [ 685 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 686 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 687 | ] 688 | 689 | [[package]] 690 | name = "language-tags" 691 | version = "0.2.2" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | 694 | [[package]] 695 | name = "lazy_static" 696 | version = "0.2.11" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | 699 | [[package]] 700 | name = "lazy_static" 701 | version = "1.0.0" 702 | source = "registry+https://github.com/rust-lang/crates.io-index" 703 | 704 | [[package]] 705 | name = "lazycell" 706 | version = "0.6.0" 707 | source = "registry+https://github.com/rust-lang/crates.io-index" 708 | 709 | [[package]] 710 | name = "libc" 711 | version = "0.2.40" 712 | source = "registry+https://github.com/rust-lang/crates.io-index" 713 | 714 | [[package]] 715 | name = "linked-hash-map" 716 | version = "0.4.2" 717 | source = "registry+https://github.com/rust-lang/crates.io-index" 718 | 719 | [[package]] 720 | name = "log" 721 | version = "0.4.1" 722 | source = "registry+https://github.com/rust-lang/crates.io-index" 723 | dependencies = [ 724 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 725 | ] 726 | 727 | [[package]] 728 | name = "lru-cache" 729 | version = "0.1.1" 730 | source = "registry+https://github.com/rust-lang/crates.io-index" 731 | dependencies = [ 732 | "linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 733 | ] 734 | 735 | [[package]] 736 | name = "matches" 737 | version = "0.1.6" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | 740 | [[package]] 741 | name = "memchr" 742 | version = "2.0.1" 743 | source = "registry+https://github.com/rust-lang/crates.io-index" 744 | dependencies = [ 745 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 746 | ] 747 | 748 | [[package]] 749 | name = "memoffset" 750 | version = "0.1.0" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | 753 | [[package]] 754 | name = "memoffset" 755 | version = "0.2.1" 756 | source = "registry+https://github.com/rust-lang/crates.io-index" 757 | 758 | [[package]] 759 | name = "mime" 760 | version = "0.3.5" 761 | source = "registry+https://github.com/rust-lang/crates.io-index" 762 | dependencies = [ 763 | "unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 764 | ] 765 | 766 | [[package]] 767 | name = "mime_guess" 768 | version = "2.0.0-alpha.4" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | dependencies = [ 771 | "mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 772 | "phf 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 773 | "phf_codegen 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 774 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 775 | ] 776 | 777 | [[package]] 778 | name = "miniz-sys" 779 | version = "0.1.10" 780 | source = "registry+https://github.com/rust-lang/crates.io-index" 781 | dependencies = [ 782 | "cc 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)", 783 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 784 | ] 785 | 786 | [[package]] 787 | name = "mio" 788 | version = "0.6.14" 789 | source = "registry+https://github.com/rust-lang/crates.io-index" 790 | dependencies = [ 791 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 792 | "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 793 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 794 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 795 | "lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 796 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 797 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 798 | "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 799 | "net2 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 800 | "slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 801 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 802 | ] 803 | 804 | [[package]] 805 | name = "mio-uds" 806 | version = "0.6.5" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | dependencies = [ 809 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 810 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 811 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 812 | ] 813 | 814 | [[package]] 815 | name = "miow" 816 | version = "0.2.1" 817 | source = "registry+https://github.com/rust-lang/crates.io-index" 818 | dependencies = [ 819 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 820 | "net2 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)", 821 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 822 | "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 823 | ] 824 | 825 | [[package]] 826 | name = "net2" 827 | version = "0.2.32" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | dependencies = [ 830 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 831 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 832 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 833 | ] 834 | 835 | [[package]] 836 | name = "nodrop" 837 | version = "0.1.12" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | 840 | [[package]] 841 | name = "num_cpus" 842 | version = "1.8.0" 843 | source = "registry+https://github.com/rust-lang/crates.io-index" 844 | dependencies = [ 845 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 846 | ] 847 | 848 | [[package]] 849 | name = "owning_ref" 850 | version = "0.3.3" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | dependencies = [ 853 | "stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 854 | ] 855 | 856 | [[package]] 857 | name = "parking_lot" 858 | version = "0.4.8" 859 | source = "registry+https://github.com/rust-lang/crates.io-index" 860 | dependencies = [ 861 | "owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 862 | "parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", 863 | ] 864 | 865 | [[package]] 866 | name = "parking_lot_core" 867 | version = "0.2.14" 868 | source = "registry+https://github.com/rust-lang/crates.io-index" 869 | dependencies = [ 870 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 871 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 872 | "smallvec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 873 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 874 | ] 875 | 876 | [[package]] 877 | name = "percent-encoding" 878 | version = "1.0.1" 879 | source = "registry+https://github.com/rust-lang/crates.io-index" 880 | 881 | [[package]] 882 | name = "phf" 883 | version = "0.7.22" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | dependencies = [ 886 | "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 887 | ] 888 | 889 | [[package]] 890 | name = "phf_codegen" 891 | version = "0.7.22" 892 | source = "registry+https://github.com/rust-lang/crates.io-index" 893 | dependencies = [ 894 | "phf_generator 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 895 | "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 896 | ] 897 | 898 | [[package]] 899 | name = "phf_generator" 900 | version = "0.7.22" 901 | source = "registry+https://github.com/rust-lang/crates.io-index" 902 | dependencies = [ 903 | "phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)", 904 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 905 | ] 906 | 907 | [[package]] 908 | name = "phf_shared" 909 | version = "0.7.22" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | dependencies = [ 912 | "siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 913 | "unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 914 | ] 915 | 916 | [[package]] 917 | name = "proc-macro2" 918 | version = "0.3.8" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | dependencies = [ 921 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 922 | ] 923 | 924 | [[package]] 925 | name = "pulldown-cmark" 926 | version = "0.1.2" 927 | source = "registry+https://github.com/rust-lang/crates.io-index" 928 | dependencies = [ 929 | "bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)", 930 | ] 931 | 932 | [[package]] 933 | name = "quick-error" 934 | version = "1.2.1" 935 | source = "registry+https://github.com/rust-lang/crates.io-index" 936 | 937 | [[package]] 938 | name = "quote" 939 | version = "0.3.15" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | 942 | [[package]] 943 | name = "quote" 944 | version = "0.5.2" 945 | source = "registry+https://github.com/rust-lang/crates.io-index" 946 | dependencies = [ 947 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 948 | ] 949 | 950 | [[package]] 951 | name = "rand" 952 | version = "0.3.22" 953 | source = "registry+https://github.com/rust-lang/crates.io-index" 954 | dependencies = [ 955 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 956 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 957 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 958 | ] 959 | 960 | [[package]] 961 | name = "rand" 962 | version = "0.4.2" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | dependencies = [ 965 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 966 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 967 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 968 | ] 969 | 970 | [[package]] 971 | name = "rand" 972 | version = "0.5.0" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | dependencies = [ 975 | "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 976 | "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 977 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 978 | "rand_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 979 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 980 | ] 981 | 982 | [[package]] 983 | name = "rand_core" 984 | version = "0.2.0" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | 987 | [[package]] 988 | name = "rayon" 989 | version = "0.8.2" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | dependencies = [ 992 | "rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 993 | ] 994 | 995 | [[package]] 996 | name = "rayon-core" 997 | version = "1.4.0" 998 | source = "registry+https://github.com/rust-lang/crates.io-index" 999 | dependencies = [ 1000 | "crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1001 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1002 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 1003 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1004 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "redox_syscall" 1009 | version = "0.1.37" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | 1012 | [[package]] 1013 | name = "redox_termios" 1014 | version = "0.1.1" 1015 | source = "registry+https://github.com/rust-lang/crates.io-index" 1016 | dependencies = [ 1017 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 1018 | ] 1019 | 1020 | [[package]] 1021 | name = "regex" 1022 | version = "0.2.11" 1023 | source = "registry+https://github.com/rust-lang/crates.io-index" 1024 | dependencies = [ 1025 | "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1026 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1027 | "regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)", 1028 | "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 1029 | "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1030 | ] 1031 | 1032 | [[package]] 1033 | name = "regex" 1034 | version = "1.0.0" 1035 | source = "registry+https://github.com/rust-lang/crates.io-index" 1036 | dependencies = [ 1037 | "aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", 1038 | "memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1039 | "regex-syntax 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 1040 | "thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", 1041 | "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1042 | ] 1043 | 1044 | [[package]] 1045 | name = "regex-syntax" 1046 | version = "0.5.6" 1047 | source = "registry+https://github.com/rust-lang/crates.io-index" 1048 | dependencies = [ 1049 | "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1050 | ] 1051 | 1052 | [[package]] 1053 | name = "regex-syntax" 1054 | version = "0.6.0" 1055 | source = "registry+https://github.com/rust-lang/crates.io-index" 1056 | dependencies = [ 1057 | "ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "remove_dir_all" 1062 | version = "0.5.1" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | dependencies = [ 1065 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1066 | ] 1067 | 1068 | [[package]] 1069 | name = "resolv-conf" 1070 | version = "0.6.0" 1071 | source = "registry+https://github.com/rust-lang/crates.io-index" 1072 | dependencies = [ 1073 | "hostname 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1074 | "quick-error 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1075 | ] 1076 | 1077 | [[package]] 1078 | name = "ring" 1079 | version = "0.12.1" 1080 | source = "registry+https://github.com/rust-lang/crates.io-index" 1081 | dependencies = [ 1082 | "gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)", 1083 | "lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1084 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 1085 | "rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", 1086 | "untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1087 | ] 1088 | 1089 | [[package]] 1090 | name = "rustc-demangle" 1091 | version = "0.1.8" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | 1094 | [[package]] 1095 | name = "safemem" 1096 | version = "0.2.0" 1097 | source = "registry+https://github.com/rust-lang/crates.io-index" 1098 | 1099 | [[package]] 1100 | name = "same-file" 1101 | version = "0.1.3" 1102 | source = "registry+https://github.com/rust-lang/crates.io-index" 1103 | dependencies = [ 1104 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1105 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1106 | ] 1107 | 1108 | [[package]] 1109 | name = "scoped-tls" 1110 | version = "0.1.2" 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" 1112 | 1113 | [[package]] 1114 | name = "scopeguard" 1115 | version = "0.3.3" 1116 | source = "registry+https://github.com/rust-lang/crates.io-index" 1117 | 1118 | [[package]] 1119 | name = "semver" 1120 | version = "0.8.0" 1121 | source = "registry+https://github.com/rust-lang/crates.io-index" 1122 | dependencies = [ 1123 | "semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1124 | "serde 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 1125 | ] 1126 | 1127 | [[package]] 1128 | name = "semver-parser" 1129 | version = "0.7.0" 1130 | source = "registry+https://github.com/rust-lang/crates.io-index" 1131 | 1132 | [[package]] 1133 | name = "serde" 1134 | version = "1.0.45" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | 1137 | [[package]] 1138 | name = "serde_derive" 1139 | version = "1.0.45" 1140 | source = "registry+https://github.com/rust-lang/crates.io-index" 1141 | dependencies = [ 1142 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1143 | "quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1144 | "serde_derive_internals 0.23.1 (registry+https://github.com/rust-lang/crates.io-index)", 1145 | "syn 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", 1146 | ] 1147 | 1148 | [[package]] 1149 | name = "serde_derive_internals" 1150 | version = "0.23.1" 1151 | source = "registry+https://github.com/rust-lang/crates.io-index" 1152 | dependencies = [ 1153 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1154 | "syn 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)", 1155 | ] 1156 | 1157 | [[package]] 1158 | name = "serde_json" 1159 | version = "1.0.17" 1160 | source = "registry+https://github.com/rust-lang/crates.io-index" 1161 | dependencies = [ 1162 | "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1163 | "itoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1164 | "serde 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 1165 | ] 1166 | 1167 | [[package]] 1168 | name = "serde_urlencoded" 1169 | version = "0.5.1" 1170 | source = "registry+https://github.com/rust-lang/crates.io-index" 1171 | dependencies = [ 1172 | "dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1173 | "itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1174 | "serde 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 1175 | "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1176 | ] 1177 | 1178 | [[package]] 1179 | name = "sha1" 1180 | version = "0.6.0" 1181 | source = "registry+https://github.com/rust-lang/crates.io-index" 1182 | 1183 | [[package]] 1184 | name = "siphasher" 1185 | version = "0.2.2" 1186 | source = "registry+https://github.com/rust-lang/crates.io-index" 1187 | 1188 | [[package]] 1189 | name = "skeptic" 1190 | version = "0.13.2" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | dependencies = [ 1193 | "bytecount 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1194 | "cargo_metadata 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1195 | "error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 1196 | "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", 1197 | "pulldown-cmark 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1198 | "serde_json 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)", 1199 | "tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", 1200 | "walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)", 1201 | ] 1202 | 1203 | [[package]] 1204 | name = "slab" 1205 | version = "0.4.0" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | 1208 | [[package]] 1209 | name = "smallvec" 1210 | version = "0.6.1" 1211 | source = "registry+https://github.com/rust-lang/crates.io-index" 1212 | 1213 | [[package]] 1214 | name = "socket2" 1215 | version = "0.3.5" 1216 | source = "registry+https://github.com/rust-lang/crates.io-index" 1217 | dependencies = [ 1218 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1219 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 1220 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1221 | ] 1222 | 1223 | [[package]] 1224 | name = "stable_deref_trait" 1225 | version = "1.0.0" 1226 | source = "registry+https://github.com/rust-lang/crates.io-index" 1227 | 1228 | [[package]] 1229 | name = "string" 1230 | version = "0.1.0" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | 1233 | [[package]] 1234 | name = "strsim" 1235 | version = "0.7.0" 1236 | source = "registry+https://github.com/rust-lang/crates.io-index" 1237 | 1238 | [[package]] 1239 | name = "syn" 1240 | version = "0.11.11" 1241 | source = "registry+https://github.com/rust-lang/crates.io-index" 1242 | dependencies = [ 1243 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 1244 | "synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)", 1245 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 1246 | ] 1247 | 1248 | [[package]] 1249 | name = "syn" 1250 | version = "0.13.4" 1251 | source = "registry+https://github.com/rust-lang/crates.io-index" 1252 | dependencies = [ 1253 | "proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1254 | "quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1255 | "unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1256 | ] 1257 | 1258 | [[package]] 1259 | name = "synom" 1260 | version = "0.11.3" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | dependencies = [ 1263 | "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", 1264 | ] 1265 | 1266 | [[package]] 1267 | name = "synstructure" 1268 | version = "0.6.1" 1269 | source = "registry+https://github.com/rust-lang/crates.io-index" 1270 | dependencies = [ 1271 | "quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", 1272 | "syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)", 1273 | ] 1274 | 1275 | [[package]] 1276 | name = "tempdir" 1277 | version = "0.3.7" 1278 | source = "registry+https://github.com/rust-lang/crates.io-index" 1279 | dependencies = [ 1280 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1281 | "remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1282 | ] 1283 | 1284 | [[package]] 1285 | name = "termion" 1286 | version = "1.5.1" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | dependencies = [ 1289 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 1290 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 1291 | "redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1292 | ] 1293 | 1294 | [[package]] 1295 | name = "textwrap" 1296 | version = "0.9.0" 1297 | source = "registry+https://github.com/rust-lang/crates.io-index" 1298 | dependencies = [ 1299 | "unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1300 | ] 1301 | 1302 | [[package]] 1303 | name = "thread_local" 1304 | version = "0.3.5" 1305 | source = "registry+https://github.com/rust-lang/crates.io-index" 1306 | dependencies = [ 1307 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1308 | "unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1309 | ] 1310 | 1311 | [[package]] 1312 | name = "time" 1313 | version = "0.1.39" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | dependencies = [ 1316 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 1317 | "redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)", 1318 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1319 | ] 1320 | 1321 | [[package]] 1322 | name = "tokio" 1323 | version = "0.1.6" 1324 | source = "registry+https://github.com/rust-lang/crates.io-index" 1325 | dependencies = [ 1326 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1327 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 1328 | "tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1329 | "tokio-fs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1330 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1331 | "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1332 | "tokio-tcp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1333 | "tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1334 | "tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1335 | "tokio-udp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1336 | ] 1337 | 1338 | [[package]] 1339 | name = "tokio-core" 1340 | version = "0.1.17" 1341 | source = "registry+https://github.com/rust-lang/crates.io-index" 1342 | dependencies = [ 1343 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1344 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1345 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1346 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1347 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 1348 | "scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1349 | "tokio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1350 | "tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1351 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1352 | "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1353 | "tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 1354 | ] 1355 | 1356 | [[package]] 1357 | name = "tokio-executor" 1358 | version = "0.1.2" 1359 | source = "registry+https://github.com/rust-lang/crates.io-index" 1360 | dependencies = [ 1361 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1362 | ] 1363 | 1364 | [[package]] 1365 | name = "tokio-fs" 1366 | version = "0.1.0" 1367 | source = "registry+https://github.com/rust-lang/crates.io-index" 1368 | dependencies = [ 1369 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1370 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1371 | "tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1372 | ] 1373 | 1374 | [[package]] 1375 | name = "tokio-io" 1376 | version = "0.1.6" 1377 | source = "registry+https://github.com/rust-lang/crates.io-index" 1378 | dependencies = [ 1379 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1380 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1381 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1382 | ] 1383 | 1384 | [[package]] 1385 | name = "tokio-reactor" 1386 | version = "0.1.1" 1387 | source = "registry+https://github.com/rust-lang/crates.io-index" 1388 | dependencies = [ 1389 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1390 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1391 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 1392 | "slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1393 | "tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1394 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1395 | ] 1396 | 1397 | [[package]] 1398 | name = "tokio-signal" 1399 | version = "0.1.5" 1400 | source = "registry+https://github.com/rust-lang/crates.io-index" 1401 | dependencies = [ 1402 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1403 | "libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)", 1404 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 1405 | "mio-uds 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", 1406 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 1407 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1408 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1409 | ] 1410 | 1411 | [[package]] 1412 | name = "tokio-tcp" 1413 | version = "0.1.0" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | dependencies = [ 1416 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1417 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1418 | "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1419 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 1420 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1421 | "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1422 | ] 1423 | 1424 | [[package]] 1425 | name = "tokio-threadpool" 1426 | version = "0.1.3" 1427 | source = "registry+https://github.com/rust-lang/crates.io-index" 1428 | dependencies = [ 1429 | "crossbeam-deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1430 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1431 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1432 | "num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1433 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1434 | "tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1435 | ] 1436 | 1437 | [[package]] 1438 | name = "tokio-timer" 1439 | version = "0.2.3" 1440 | source = "registry+https://github.com/rust-lang/crates.io-index" 1441 | dependencies = [ 1442 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1443 | "tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 1444 | ] 1445 | 1446 | [[package]] 1447 | name = "tokio-udp" 1448 | version = "0.1.0" 1449 | source = "registry+https://github.com/rust-lang/crates.io-index" 1450 | dependencies = [ 1451 | "bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)", 1452 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1453 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1454 | "mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)", 1455 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1456 | "tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1457 | ] 1458 | 1459 | [[package]] 1460 | name = "trust-dns-proto" 1461 | version = "0.3.3" 1462 | source = "registry+https://github.com/rust-lang/crates.io-index" 1463 | dependencies = [ 1464 | "byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1465 | "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1466 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1467 | "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1468 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1469 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1470 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1471 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 1472 | "tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1473 | "url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 1474 | ] 1475 | 1476 | [[package]] 1477 | name = "trust-dns-resolver" 1478 | version = "0.8.2" 1479 | source = "registry+https://github.com/rust-lang/crates.io-index" 1480 | dependencies = [ 1481 | "error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1482 | "futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)", 1483 | "ipconfig 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1484 | "lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1485 | "log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", 1486 | "lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1487 | "resolv-conf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", 1488 | "tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)", 1489 | "trust-dns-proto 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1490 | ] 1491 | 1492 | [[package]] 1493 | name = "ucd-util" 1494 | version = "0.1.1" 1495 | source = "registry+https://github.com/rust-lang/crates.io-index" 1496 | 1497 | [[package]] 1498 | name = "unicase" 1499 | version = "1.4.2" 1500 | source = "registry+https://github.com/rust-lang/crates.io-index" 1501 | dependencies = [ 1502 | "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1503 | ] 1504 | 1505 | [[package]] 1506 | name = "unicase" 1507 | version = "2.1.0" 1508 | source = "registry+https://github.com/rust-lang/crates.io-index" 1509 | dependencies = [ 1510 | "version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1511 | ] 1512 | 1513 | [[package]] 1514 | name = "unicode-bidi" 1515 | version = "0.3.4" 1516 | source = "registry+https://github.com/rust-lang/crates.io-index" 1517 | dependencies = [ 1518 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1519 | ] 1520 | 1521 | [[package]] 1522 | name = "unicode-normalization" 1523 | version = "0.1.6" 1524 | source = "registry+https://github.com/rust-lang/crates.io-index" 1525 | 1526 | [[package]] 1527 | name = "unicode-width" 1528 | version = "0.1.4" 1529 | source = "registry+https://github.com/rust-lang/crates.io-index" 1530 | 1531 | [[package]] 1532 | name = "unicode-xid" 1533 | version = "0.0.4" 1534 | source = "registry+https://github.com/rust-lang/crates.io-index" 1535 | 1536 | [[package]] 1537 | name = "unicode-xid" 1538 | version = "0.1.0" 1539 | source = "registry+https://github.com/rust-lang/crates.io-index" 1540 | 1541 | [[package]] 1542 | name = "unreachable" 1543 | version = "1.0.0" 1544 | source = "registry+https://github.com/rust-lang/crates.io-index" 1545 | dependencies = [ 1546 | "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1547 | ] 1548 | 1549 | [[package]] 1550 | name = "untrusted" 1551 | version = "0.5.1" 1552 | source = "registry+https://github.com/rust-lang/crates.io-index" 1553 | 1554 | [[package]] 1555 | name = "url" 1556 | version = "1.7.0" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | dependencies = [ 1559 | "encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 1560 | "idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", 1561 | "matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1562 | "percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1563 | ] 1564 | 1565 | [[package]] 1566 | name = "utf8-ranges" 1567 | version = "1.0.0" 1568 | source = "registry+https://github.com/rust-lang/crates.io-index" 1569 | 1570 | [[package]] 1571 | name = "uuid" 1572 | version = "0.6.3" 1573 | source = "registry+https://github.com/rust-lang/crates.io-index" 1574 | dependencies = [ 1575 | "cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1576 | "rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1577 | ] 1578 | 1579 | [[package]] 1580 | name = "vec_map" 1581 | version = "0.8.0" 1582 | source = "registry+https://github.com/rust-lang/crates.io-index" 1583 | 1584 | [[package]] 1585 | name = "version_check" 1586 | version = "0.1.3" 1587 | source = "registry+https://github.com/rust-lang/crates.io-index" 1588 | 1589 | [[package]] 1590 | name = "void" 1591 | version = "1.0.2" 1592 | source = "registry+https://github.com/rust-lang/crates.io-index" 1593 | 1594 | [[package]] 1595 | name = "walkdir" 1596 | version = "1.0.7" 1597 | source = "registry+https://github.com/rust-lang/crates.io-index" 1598 | dependencies = [ 1599 | "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1600 | "same-file 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1601 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1602 | ] 1603 | 1604 | [[package]] 1605 | name = "widestring" 1606 | version = "0.2.2" 1607 | source = "registry+https://github.com/rust-lang/crates.io-index" 1608 | 1609 | [[package]] 1610 | name = "winapi" 1611 | version = "0.2.8" 1612 | source = "registry+https://github.com/rust-lang/crates.io-index" 1613 | 1614 | [[package]] 1615 | name = "winapi" 1616 | version = "0.3.4" 1617 | source = "registry+https://github.com/rust-lang/crates.io-index" 1618 | dependencies = [ 1619 | "winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1620 | "winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1621 | ] 1622 | 1623 | [[package]] 1624 | name = "winapi-build" 1625 | version = "0.1.1" 1626 | source = "registry+https://github.com/rust-lang/crates.io-index" 1627 | 1628 | [[package]] 1629 | name = "winapi-i686-pc-windows-gnu" 1630 | version = "0.4.0" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | 1633 | [[package]] 1634 | name = "winapi-x86_64-pc-windows-gnu" 1635 | version = "0.4.0" 1636 | source = "registry+https://github.com/rust-lang/crates.io-index" 1637 | 1638 | [[package]] 1639 | name = "winreg" 1640 | version = "0.5.0" 1641 | source = "registry+https://github.com/rust-lang/crates.io-index" 1642 | dependencies = [ 1643 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1644 | ] 1645 | 1646 | [[package]] 1647 | name = "winutil" 1648 | version = "0.1.1" 1649 | source = "registry+https://github.com/rust-lang/crates.io-index" 1650 | dependencies = [ 1651 | "winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)", 1652 | ] 1653 | 1654 | [[package]] 1655 | name = "ws2_32-sys" 1656 | version = "0.2.1" 1657 | source = "registry+https://github.com/rust-lang/crates.io-index" 1658 | dependencies = [ 1659 | "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 1660 | "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1661 | ] 1662 | 1663 | [metadata] 1664 | "checksum Inflector 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1b33cd9b653730fc539c53c7b3c672d2f47108fa20c6df571fa5817178f5a14c" 1665 | "checksum actix 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "e767e3170dc7cdec50fe1b74d22fd9d2f4b78b97b2052a254b5acb07dae68634" 1666 | "checksum actix-web 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f27d17fe48d0dccb7915e58145cc3b00080342616c042f833718f89d61a99ed5" 1667 | "checksum actix_derive 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c4b1dc922654b9aca7a8a31eab875fde804fa9fbd67f220f2e457787b23590f2" 1668 | "checksum aho-corasick 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "d6531d44de723825aa81398a6415283229725a00fa30713812ab9323faa82fc4" 1669 | "checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b" 1670 | "checksum arrayvec 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "a1e964f9e24d588183fcb43503abda40d288c8657dfc27311516ce2f05675aef" 1671 | "checksum assert_cli 0.5.4 (registry+https://github.com/rust-lang/crates.io-index)" = "72342c21057a3cb5f7c2d849bf7999a83795434dd36d74fa8c24680581bd1930" 1672 | "checksum atty 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "2fc4a1aa4c24c0718a250f0681885c1af91419d242f29eb8f2ab28502d80dbd1" 1673 | "checksum backtrace 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "346d7644f0b5f9bc73082d3b2236b69a05fd35cce0cfa3724e184e6a5c9e2a2f" 1674 | "checksum backtrace 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "8ea58cd16fd6c9d120b5bcb01d63883ae4cc7ba2aed35c1841b862a3c7ef6639" 1675 | "checksum backtrace-sys 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "44585761d6161b0f57afc49482ab6bd067e4edef48c12a152c237eb0203f7661" 1676 | "checksum base64 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "96434f987501f0ed4eb336a411e0631ecd1afa11574fe148587adc4ff96143c9" 1677 | "checksum base64 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9263aa6a38da271eec5c91a83ce1e800f093c8535788d403d626d8d5c3f8f007" 1678 | "checksum bitflags 0.9.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4efd02e230a02e18f92fc2735f44597385ed02ad8f831e7c1c1156ee5e1ab3a5" 1679 | "checksum bitflags 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d0c54bb8f454c567f21197eefcdbf5679d0bd99f2ddbe52e84c77061952e6789" 1680 | "checksum brotli-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4445dea95f4c2b41cde57cc9fee236ae4dbae88d8fcbdb4750fc1bb5d86aaecd" 1681 | "checksum brotli2 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0cb036c3eade309815c15ddbacec5b22c4d1f3983a774ab2eac2e3e9ea85568e" 1682 | "checksum bytecount 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "af27422163679dea46a1a7239dffff64d3dcdc3ba5fe9c49c789fbfe0eb949de" 1683 | "checksum byteorder 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "73b5bdfe7ee3ad0b99c9801d58807a9dbc9e09196365b0203853b99889ab3c87" 1684 | "checksum bytes 0.4.7 (registry+https://github.com/rust-lang/crates.io-index)" = "2f1d50c876fb7545f5f289cd8b2aee3f359d073ae819eed5d6373638e2c61e59" 1685 | "checksum cargo_metadata 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1f56ec3e469bca7c276f2eea015aa05c5e381356febdbb0683c2580189604537" 1686 | "checksum cc 1.0.15 (registry+https://github.com/rust-lang/crates.io-index)" = "0ebb87d1116151416c0cf66a0e3fb6430cccd120fd6300794b4dfaa050ac40ba" 1687 | "checksum cfg-if 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "405216fd8fe65f718daa7102ea808a946b6ce40c742998fbfd3463645552de18" 1688 | "checksum clap 2.31.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f0f16b89cbb9ee36d87483dc939fe9f1e13c05898d56d7b230a0d4dff033a536" 1689 | "checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1690 | "checksum colored 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b0aa3473e85a3161b59845d6096b289bb577874cafeaf75ea1b1beaa6572c7fc" 1691 | "checksum cookie 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "746858cae4eae40fff37e1998320068df317bc247dc91a67c6cfa053afdc2abb" 1692 | "checksum crossbeam-channel 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9d7b07a3084d8718d95338443d5a46aab38ce16d5f991d4027a0906b369f70a3" 1693 | "checksum crossbeam-deque 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f739f8c5363aca78cfb059edf753d8f0d36908c348f3d8d1503f03d8b75d9cf3" 1694 | "checksum crossbeam-deque 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fe8153ef04a7594ded05b427ffad46ddeaf22e63fd48d42b3e1e3bb4db07cae7" 1695 | "checksum crossbeam-epoch 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9898f21d6d647793e163c804944941fb19aecd1f4a1a4c254bbb0bee15ccdea5" 1696 | "checksum crossbeam-epoch 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "927121f5407de9956180ff5e936fe3cf4324279280001cd56b669d28ee7e9150" 1697 | "checksum crossbeam-epoch 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9b4e2817eb773f770dcb294127c011e22771899c21d18fce7dd739c0b9832e81" 1698 | "checksum crossbeam-utils 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2760899e32a1d58d5abb31129f8fae5de75220bc2176e77ff7c627ae45c918d9" 1699 | "checksum crossbeam-utils 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d636a8b3bcc1b409d7ffd3facef8f21dcb4009626adbd0c5e6c4305c07253c7b" 1700 | "checksum dbghelp-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "97590ba53bcb8ac28279161ca943a924d1fd4a8fb3fa63302591647c4fc5b850" 1701 | "checksum difference 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b3304d19798a8e067e48d8e69b2c37f0b5e9b4e462504ad9e27e9f3fce02bba8" 1702 | "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab" 1703 | "checksum encoding 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" 1704 | "checksum encoding-index-japanese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" 1705 | "checksum encoding-index-korean 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" 1706 | "checksum encoding-index-simpchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" 1707 | "checksum encoding-index-singlebyte 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" 1708 | "checksum encoding-index-tradchinese 1.20141219.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" 1709 | "checksum encoding_index_tests 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" 1710 | "checksum environment 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f4b14e20978669064c33b4c1e0fb4083412e40fe56cbea2eae80fd7591503ee" 1711 | "checksum error-chain 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "faa976b4fd2e4c2b2f3f486874b19e61944d3de3de8b61c9fcf835d583871bcc" 1712 | "checksum error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3" 1713 | "checksum error-chain 0.8.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6930e04918388a9a2e41d518c25cf679ccafe26733fb4127dbf21993f2575d46" 1714 | "checksum failure 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "934799b6c1de475a012a02dab0ace1ace43789ee4b99bcfbf1a2e3e8ced5de82" 1715 | "checksum failure_derive 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c7cdda555bb90c9bb67a3b670a0f42de8e73f5981524123ad8578aafec8ddb8b" 1716 | "checksum flate2 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9fac2277e84e5e858483756647a9d0aa8d9a2b7cba517fd84325a0aaa69a0909" 1717 | "checksum fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "2fad85553e09a6f881f739c29f0b00b0f01357c743266d478b68951ce23285f3" 1718 | "checksum fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 1719 | "checksum fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 1720 | "checksum futures 0.1.21 (registry+https://github.com/rust-lang/crates.io-index)" = "1a70b146671de62ec8c8ed572219ca5d594d9b06c0b364d5e67b722fc559b48c" 1721 | "checksum futures-cpupool 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "ab90cde24b3319636588d0c35fe03b1333857621051837ed769faefb4c2162e4" 1722 | "checksum gcc 0.3.54 (registry+https://github.com/rust-lang/crates.io-index)" = "5e33ec290da0d127825013597dbdfc28bee4964690c7ce1166cbc2a7bd08b1bb" 1723 | "checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" 1724 | "checksum h2 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c91a0ee01fcf961ae004d88f1a77fc47dc5db6164f7d57605cc9f2c93d535686" 1725 | "checksum hostname 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "58fab6e177434b0bb4cd344a4dabaa5bd6d7a8d792b1885aebcae7af1091d1cb" 1726 | "checksum http 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "75df369fd52c60635208a4d3e694777c099569b3dcf4844df8f652dc004644ab" 1727 | "checksum http-range 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5f2e4003e6fd05ea9109db00415e670b11f511a42e567ff2d5d771cbdfa24e02" 1728 | "checksum httparse 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c2f407128745b78abc95c0ffbe4e5d37427fdc0d45470710cfef8c44522a2e37" 1729 | "checksum idna 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "014b298351066f1512874135335d62a789ffe78a9974f94b43ed5621951eaf7d" 1730 | "checksum indexmap 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08173ba1e906efb6538785a8844dd496f5d34f0a2d88038e95195172fc667220" 1731 | "checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1732 | "checksum ipconfig 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9ec4e18c0a0d4340870c14284293632d8421f419008371422dd327892b88877c" 1733 | "checksum itoa 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8324a32baf01e2ae060e9de58ed0bc2320c9a2833491ee36cd3b4c414de4db8c" 1734 | "checksum itoa 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c069bbec61e1ca5a596166e55dfe4773ff745c3d16b700013bcaff9a6df2c682" 1735 | "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1736 | "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" 1737 | "checksum lazy_static 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "76f033c7ad61445c5b347c7382dd1237847eb1bce590fe50365dcb33d546be73" 1738 | "checksum lazy_static 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c8f31047daa365f19be14b47c29df4f7c3b581832407daabe6ae77397619237d" 1739 | "checksum lazycell 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a6f08839bc70ef4a3fe1d566d5350f519c5912ea86be0df1740a7d247c7fc0ef" 1740 | "checksum libc 0.2.40 (registry+https://github.com/rust-lang/crates.io-index)" = "6fd41f331ac7c5b8ac259b8bf82c75c0fb2e469bbf37d2becbba9a6a2221965b" 1741 | "checksum linked-hash-map 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7860ec297f7008ff7a1e3382d7f7e1dcd69efc94751a2284bafc3d013c2aa939" 1742 | "checksum log 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "89f010e843f2b1a31dbd316b3b8d443758bc634bed37aabade59c686d644e0a2" 1743 | "checksum lru-cache 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "4d06ff7ff06f729ce5f4e227876cb88d10bc59cd4ae1e09fbb2bde15c850dc21" 1744 | "checksum matches 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "100aabe6b8ff4e4a7e32c1c13523379802df0772b82466207ac25b013f193376" 1745 | "checksum memchr 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "796fba70e76612589ed2ce7f45282f5af869e0fdd7cc6199fa1aa1f1d591ba9d" 1746 | "checksum memoffset 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e163e5baece1a039e71e75b074de17a9b4114982aa109921fc20253bdf91a53c" 1747 | "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" 1748 | "checksum mime 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e2e00e17be181010a91dbfefb01660b17311059dc8c7f48b9017677721e732bd" 1749 | "checksum mime_guess 2.0.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "130ea3c9c1b65dba905ab5a4d9ac59234a9585c24d135f264e187fe7336febbd" 1750 | "checksum miniz-sys 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "609ce024854aeb19a0ef7567d348aaa5a746b32fb72e336df7fcc16869d7e2b4" 1751 | "checksum mio 0.6.14 (registry+https://github.com/rust-lang/crates.io-index)" = "6d771e3ef92d58a8da8df7d6976bfca9371ed1de6619d9d5a5ce5b1f29b85bfe" 1752 | "checksum mio-uds 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "914c9238b09a99d89afe4a98625a160d3e946e5dbda65c6486695deb119f005e" 1753 | "checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1754 | "checksum net2 0.2.32 (registry+https://github.com/rust-lang/crates.io-index)" = "9044faf1413a1057267be51b5afba8eb1090bd2231c693664aa1db716fe1eae0" 1755 | "checksum nodrop 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "9a2228dca57108069a5262f2ed8bd2e82496d2e074a06d1ccc7ce1687b6ae0a2" 1756 | "checksum num_cpus 1.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c51a3322e4bca9d212ad9a158a02abc6934d005490c054a2778df73a70aa0a30" 1757 | "checksum owning_ref 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cdf84f41639e037b484f93433aa3897863b561ed65c6e59c7073d7c561710f37" 1758 | "checksum parking_lot 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "149d8f5b97f3c1133e3cfcd8886449959e856b557ff281e292b733d7c69e005e" 1759 | "checksum parking_lot_core 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "4db1a8ccf734a7bce794cc19b3df06ed87ab2f3907036b693c68f56b4d4537fa" 1760 | "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" 1761 | "checksum phf 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "7d37a244c75a9748e049225155f56dbcb98fe71b192fd25fd23cb914b5ad62f2" 1762 | "checksum phf_codegen 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "4e4048fe7dd7a06b8127ecd6d3803149126e9b33c7558879846da3a63f734f2b" 1763 | "checksum phf_generator 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "05a079dd052e7b674d21cb31cbb6c05efd56a2cd2827db7692e2f1a507ebd998" 1764 | "checksum phf_shared 0.7.22 (registry+https://github.com/rust-lang/crates.io-index)" = "c2261d544c2bb6aa3b10022b0be371b9c7c64f762ef28c6f5d4f1ef6d97b5930" 1765 | "checksum proc-macro2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "1b06e2f335f48d24442b35a19df506a835fb3547bc3c06ef27340da9acf5cae7" 1766 | "checksum pulldown-cmark 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d6fdf85cda6cadfae5428a54661d431330b312bc767ddbc57adbedc24da66e32" 1767 | "checksum quick-error 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "eda5fe9b71976e62bc81b781206aaa076401769b2143379d3eb2118388babac4" 1768 | "checksum quote 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e920b65c65f10b2ae65c831a81a073a89edd28c7cce89475bff467ab4167a" 1769 | "checksum quote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9949cfe66888ffe1d53e6ec9d9f3b70714083854be20fd5e271b232a017401e8" 1770 | "checksum rand 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "15a732abf9d20f0ad8eeb6f909bf6868722d9a06e1e50802b6a70351f40b4eb1" 1771 | "checksum rand 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "eba5f8cb59cc50ed56be8880a5c7b496bfd9bd26394e176bc67884094145c2c5" 1772 | "checksum rand 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a89abf8d34faf9783692392dca7bcdc6e82fa84eca86ccb6301ec87f3497185" 1773 | "checksum rand_core 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1b7a5f27547c49e5ccf8a586db3f3782fd93cf849780b21853b9d981db203302" 1774 | "checksum rayon 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b614fe08b6665cb9a231d07ac1364b0ef3cb3698f1239ee0c4c3a88a524f54c8" 1775 | "checksum rayon-core 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9d24ad214285a7729b174ed6d3bcfcb80177807f959d95fafd5bfc5c4f201ac8" 1776 | "checksum redox_syscall 0.1.37 (registry+https://github.com/rust-lang/crates.io-index)" = "0d92eecebad22b767915e4d529f89f28ee96dbbf5a4810d2b844373f136417fd" 1777 | "checksum redox_termios 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7e891cfe48e9100a70a3b6eb652fef28920c117d366339687bd5576160db0f76" 1778 | "checksum regex 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "9329abc99e39129fcceabd24cf5d85b4671ef7c29c50e972bc5afe32438ec384" 1779 | "checksum regex 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "75ecf88252dce580404a22444fc7d626c01815debba56a7f4f536772a5ff19d3" 1780 | "checksum regex-syntax 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d707a4fa2637f2dca2ef9fd02225ec7661fe01a53623c1e6515b6916511f7a7" 1781 | "checksum regex-syntax 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8f1ac0f60d675cc6cf13a20ec076568254472551051ad5dd050364d70671bf6b" 1782 | "checksum remove_dir_all 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3488ba1b9a2084d38645c4c08276a1752dcbf2c7130d74f1569681ad5d2799c5" 1783 | "checksum resolv-conf 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8e1b086bb6a2659d6ba66e4aa21bde8a53ec03587cd5c80b83bdc3a330f35cab" 1784 | "checksum ring 0.12.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6f7d28b30a72c01b458428e0ae988d4149c20d902346902be881e3edc4bb325c" 1785 | "checksum rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "76d7ba1feafada44f2d38eed812bd2489a03c0f5abb975799251518b68848649" 1786 | "checksum safemem 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e27a8b19b835f7aea908818e871f5cc3a5a186550c30773be987e155e8163d8f" 1787 | "checksum same-file 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d931a44fdaa43b8637009e7632a02adc4f2b2e0733c08caa4cf00e8da4a117a7" 1788 | "checksum scoped-tls 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "332ffa32bf586782a3efaeb58f127980944bbc8c4d6913a86107ac2a5ab24b28" 1789 | "checksum scopeguard 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "94258f53601af11e6a49f722422f6e3425c52b06245a5cf9bc09908b174f5e27" 1790 | "checksum semver 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bee2bc909ab2d8d60dab26e8cad85b25d795b14603a0dcb627b78b9d30b6454b" 1791 | "checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1792 | "checksum serde 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "6a49d806123bcdaacdefe7aab3721c64ec11d05921bf64d888a857d3a92024a0" 1793 | "checksum serde_derive 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "0409f5130e9b06444e07d4c71f55d6a2c4d1290d79faa612d9b0b540a9703fcd" 1794 | "checksum serde_derive_internals 0.23.1 (registry+https://github.com/rust-lang/crates.io-index)" = "9d30c4596450fd7bbda79ef15559683f9a79ac0193ea819db90000d7e1cae794" 1795 | "checksum serde_json 1.0.17 (registry+https://github.com/rust-lang/crates.io-index)" = "f3ad6d546e765177cf3dded3c2e424a8040f870083a0e64064746b958ece9cb1" 1796 | "checksum serde_urlencoded 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ce0fd303af908732989354c6f02e05e2e6d597152870f2c6990efb0577137480" 1797 | "checksum sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2579985fda508104f7587689507983eadd6a6e84dd35d6d115361f530916fa0d" 1798 | "checksum siphasher 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0df90a788073e8d0235a67e50441d47db7c8ad9debd91cbf43736a2a92d36537" 1799 | "checksum skeptic 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c8431f8fca168e2db4be547bd8329eac70d095dff1444fee4b0fa0fabc7df75a" 1800 | "checksum slab 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fdeff4cd9ecff59ec7e3744cbca73dfe5ac35c2aedb2cfba8a1c715a18912e9d" 1801 | "checksum smallvec 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "03dab98ab5ded3a8b43b2c80751194608d0b2aa0f1d46cf95d1c35e192844aa7" 1802 | "checksum socket2 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "ff606e0486e88f5fc6cfeb3966e434fb409abbc7a3ab495238f70a1ca97f789d" 1803 | "checksum stable_deref_trait 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "15132e0e364248108c5e2c02e3ab539be8d6f5d52a01ca9bbf27ed657316f02b" 1804 | "checksum string 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "31f98b200e7caca9efca50fc0aa69cd58a5ec81d5f6e75b2f3ecaad2e998972a" 1805 | "checksum strsim 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bb4f380125926a99e52bc279241539c018323fab05ad6368b56f93d9369ff550" 1806 | "checksum syn 0.11.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d3b891b9015c88c576343b9b3e41c2c11a51c219ef067b264bd9c8aa9b441dad" 1807 | "checksum syn 0.13.4 (registry+https://github.com/rust-lang/crates.io-index)" = "90d5efaad92a0f96c629ae16302cc9591915930fd49ff0dcc6b4cde146782397" 1808 | "checksum synom 0.11.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a393066ed9010ebaed60b9eafa373d4b1baac186dd7e008555b0f702b51945b6" 1809 | "checksum synstructure 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3a761d12e6d8dcb4dcf952a7a89b475e3a9d69e4a69307e01a470977642914bd" 1810 | "checksum tempdir 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "15f2b5fb00ccdf689e0149d1b1b3c03fead81c2b37735d812fa8bddbbf41b6d8" 1811 | "checksum termion 1.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "689a3bdfaab439fd92bc87df5c4c78417d3cbe537487274e9b0b2dce76e92096" 1812 | "checksum textwrap 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c0b59b6b4b44d867f1370ef1bd91bfb262bf07bf0ae65c202ea2fbc16153b693" 1813 | "checksum thread_local 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279ef31c19ededf577bfd12dfae728040a21f635b06a24cd670ff510edd38963" 1814 | "checksum time 0.1.39 (registry+https://github.com/rust-lang/crates.io-index)" = "a15375f1df02096fb3317256ce2cee6a1f42fc84ea5ad5fc8c421cfe40c73098" 1815 | "checksum tokio 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "7d00555353b013e170ed8bc4e13f648a317d1fd12157dbcae13f7013f6cf29f5" 1816 | "checksum tokio-core 0.1.17 (registry+https://github.com/rust-lang/crates.io-index)" = "aeeffbbb94209023feaef3c196a41cbcdafa06b4a6f893f68779bb5e53796f71" 1817 | "checksum tokio-executor 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "8cac2a7883ff3567e9d66bb09100d09b33d90311feca0206c7ca034bc0c55113" 1818 | "checksum tokio-fs 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "76766830bbf9a2d5bfb50c95350d56a2e79e2c80f675967fff448bc615899708" 1819 | "checksum tokio-io 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6af9eb326f64b2d6b68438e1953341e00ab3cf54de7e35d92bfc73af8555313a" 1820 | "checksum tokio-reactor 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b3cedc8e5af5131dc3423ffa4f877cce78ad25259a9a62de0613735a13ebc64b" 1821 | "checksum tokio-signal 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e8f46863230f9a05cf52d173721ec391b9c5782a2465f593029922b8782b9ffe" 1822 | "checksum tokio-tcp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ec9b094851aadd2caf83ba3ad8e8c4ce65a42104f7b94d9e6550023f0407853f" 1823 | "checksum tokio-threadpool 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5783254b10c7c84a56f62c74766ef7e5b83d1f13053218c7cab8d3f2c826fa0e" 1824 | "checksum tokio-timer 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "535fed0ccee189f3d48447587697ba3fd234b3dbbb091f0ec4613ddfec0a7c4c" 1825 | "checksum tokio-udp 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "137bda266504893ac4774e0ec4c2108f7ccdbcb7ac8dced6305fe9e4e0b5041a" 1826 | "checksum trust-dns-proto 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "cbbddb93547eeee847367d8f59b68002294a7b4df31c143fbee4109ce0c61a04" 1827 | "checksum trust-dns-resolver 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9b0a0c9d4f8dd56481209c5ae1a8965ed022461d352c81fb92466ec9d846929e" 1828 | "checksum ucd-util 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fd2be2d6639d0f8fe6cdda291ad456e23629558d466e2789d2c3e9892bda285d" 1829 | "checksum unicase 1.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7f4765f83163b74f957c797ad9253caf97f103fb064d3999aea9568d09fc8a33" 1830 | "checksum unicase 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "284b6d3db520d67fbe88fd778c21510d1b0ba4a551e5d0fbb023d33405f6de8a" 1831 | "checksum unicode-bidi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "49f2bd0c6468a8230e1db229cff8029217cf623c767ea5d60bfbd42729ea54d5" 1832 | "checksum unicode-normalization 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "90d662d111b0dbb08a180f2761026cba648c258023c355954a7c00e00e354636" 1833 | "checksum unicode-width 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bf3a113775714a22dcb774d8ea3655c53a32debae63a063acc00a91cc586245f" 1834 | "checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" 1835 | "checksum unicode-xid 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 1836 | "checksum unreachable 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 1837 | "checksum untrusted 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f392d7819dbe58833e26872f5f6f0d68b7bbbe90fc3667e98731c4a15ad9a7ae" 1838 | "checksum url 1.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f808aadd8cfec6ef90e4a14eb46f24511824d1ac596b9682703c87056c8678b7" 1839 | "checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" 1840 | "checksum uuid 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "8630752f979f1b6b87c49830a5e3784082545de63920d59fbaac252474319447" 1841 | "checksum vec_map 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "887b5b631c2ad01628bbbaa7dd4c869f80d3186688f8d0b6f58774fbe324988c" 1842 | "checksum version_check 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "6b772017e347561807c1aa192438c5fd74242a670a6cffacc40f2defd1dc069d" 1843 | "checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 1844 | "checksum walkdir 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "bb08f9e670fab86099470b97cd2b252d6527f0b3cc1401acdb595ffc9dd288ff" 1845 | "checksum widestring 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7157704c2e12e3d2189c507b7482c52820a16dfa4465ba91add92f266667cadb" 1846 | "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 1847 | "checksum winapi 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)" = "04e3bd221fcbe8a271359c04f21a76db7d0c6028862d1bb5512d85e1e2eb5bb3" 1848 | "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 1849 | "checksum winapi-i686-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1850 | "checksum winapi-x86_64-pc-windows-gnu 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1851 | "checksum winreg 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9338067aba07889a38beaad4dbb77fa2e62e87c423b770824b3bdf412874bd2c" 1852 | "checksum winutil 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7daf138b6b14196e3830a588acf1e86966c694d3e8fb026fb105b8b5dca07e6e" 1853 | "checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 1854 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = ["dictionary", "web", "cli"] 3 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:latest 2 | RUN mkdir /code 3 | WORKDIR /code 4 | COPY . . 5 | RUN cargo build --release -p git-release-name-web 6 | 7 | FROM debian:stretch-slim 8 | RUN mkdir /app 9 | WORKDIR /app 10 | COPY --from=0 /code/target/release/git-release-name-web /app/git-release-name-web 11 | EXPOSE 6767 12 | STOPSIGNAL 15 13 | CMD ["./git-release-name-web"] 14 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright 2018 Kevin Choubacha 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # `git-release-name` 2 | 3 | A simple tool that takes a sha and returns a random name for the release. The name will be 4 | deterministic based on the version of the tool. This project is broken into three crates. 5 | Each crate provides a different interface to the dictionary. The main library with functionality 6 | is the libray (found in `rn-dictionary`). The other two are `rn-cli` and `rn-web`. 7 | 8 | ## Installation 9 | 10 | Clone this repo and setup the rust compiler and cargo using rustup: 11 | https://rustup.rs/ 12 | 13 | ### CLI 14 | Once that works (test: `cargo -v`) you can install the cli: 15 | 16 | ```bash 17 | $ cargo install --force --path=cli 18 | ``` 19 | 20 | ### Web 21 | If you want to use the web app, there's a docker container for it: 22 | 23 | ```bash 24 | docker run -it -p 6767:6767 kbacha/git-release-name 25 | ``` 26 | 27 | Then you can use curl: 28 | 29 | ```bash 30 | $ curl "0.0.0.0:6767/api/release-name/$(git rev-parse HEAD)" 31 | ``` 32 | 33 | ## License 34 | 35 | Repo is licensed under MIT. 36 | -------------------------------------------------------------------------------- /cli/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "git-release-name-cli" 3 | version = "0.1.0" 4 | authors = ["Kevin Choubacha "] 5 | 6 | [[bin]] 7 | name = "git-release-name" 8 | path = "./src/main.rs" 9 | 10 | [dependencies] 11 | rand = "*" 12 | atty = "^0.2" 13 | clap = "^2.29" 14 | git-release-name = { path = "../dictionary" } 15 | 16 | [dev-dependencies] 17 | assert_cli = "0.5" 18 | -------------------------------------------------------------------------------- /cli/README.md: -------------------------------------------------------------------------------- 1 | # git-release-name 2 | 3 | This is a CLI for the release name library. It has a few options and can be called via either STDIN 4 | or with command args. 5 | 6 | 7 | ### Installation 8 | 9 | From this directory: 10 | ``` 11 | $ cargo install -f 12 | ``` 13 | 14 | From root: 15 | ``` 16 | $ cargo install -f --path rn-cli/ 17 | ``` 18 | 19 | ### Usage 20 | 21 | Help instructions: 22 | ``` 23 | Takes a git sha and uses it's relatively unique combination of letters and number to generate a release name 24 | 25 | USAGE: 26 | git-release-name [OPTIONS] [SHA]... 27 | 28 | FLAGS: 29 | -h, --help Prints help information 30 | -V, --version Prints version information 31 | 32 | OPTIONS: 33 | -f, --format Declares the return format of the phrase. [values: snake, kebab, camel, pascal, title, 34 | sentence, upper, lower] 35 | 36 | ARGS: 37 | ... Each arg should be a sha. If they are less than 8 characters they will be padded 38 | ``` 39 | 40 | #### For HEAD 41 | Many times you'll want to just send in the current head: 42 | ``` 43 | $ git-release-name $(git rev-parse HEAD) 44 | obediently purer headspring 45 | ``` 46 | 47 | #### STDIN 48 | 49 | If you want to see all the possible release names you can pipe to it: 50 | ``` 51 | $ git rev-list HEAD | git-release-name 52 | intentionally mirky swineherds 53 | subversively nestlike cablets 54 | laggardly wifeless faker 55 | issuably twinning verso 56 | drawlingly about scapegoat 57 | coordinately spaceless trigraphs 58 | windily vorant bugler 59 | hyperbatically nodose shutter 60 | bumpily sketchy hoodies 61 | saltishly effete prescript 62 | voluntarily velate klaxons 63 | girlishly sketchy gremlins 64 | illusively tangy raggle 65 | reproductively nettly hassock 66 | caressingly blotto fris 67 | forwardly globate benders 68 | independently barbate linkboy 69 | whimperingly tabu caring 70 | unavailably lanose milepost 71 | indigently ternate stitcher 72 | unfairly tawie premiere 73 | ascetically spaceless fantigue 74 | prayerlessly brinded lodger 75 | conjunctly revived navette 76 | transactionally lovesick hoodies 77 | ``` 78 | 79 | #### Formatting 80 | 81 | You can also change the format of the returned release name using the `--format` flag: 82 | 83 | ``` 84 | $ git-release-name --format snake $(git rev-parse HEAD) 85 | bumpily_sketchy_hoodies 86 | ``` 87 | -------------------------------------------------------------------------------- /cli/src/main.rs: -------------------------------------------------------------------------------- 1 | extern crate atty; 2 | extern crate clap; 3 | extern crate git_release_name; 4 | extern crate rand; 5 | 6 | use atty::Stream; 7 | use clap::{App, Arg, ArgMatches, SubCommand}; 8 | use std::io::{self, BufRead}; 9 | 10 | use git_release_name::Case; 11 | 12 | fn main() { 13 | let matches = app_matches(); 14 | 15 | if let Some(matches) = matches.subcommand_matches("list") { 16 | list::list_dictionary(matches); 17 | } else { 18 | let format = if let Some(fmt) = matches.value_of("format") { 19 | fmt.parse().expect("Invalid format specified") 20 | } else { 21 | Case::Lower 22 | }; 23 | 24 | if let Some(shas) = matches.values_of("SHA") { 25 | shas.for_each(|sha| { 26 | println!( 27 | "{}", 28 | git_release_name::lookup(&sha) 29 | .expect("Invalid sha") 30 | .with_case(format) 31 | ) 32 | }); 33 | } else if atty::is(Stream::Stdin) { 34 | from_random_sha(format) 35 | } else { 36 | // no args, check stdin 37 | from_stdin(format); 38 | }; 39 | } 40 | } 41 | 42 | const FORMAT_OPTIONS: [&'static str; 8] = [ 43 | "snake", "kebab", "camel", "pascal", "title", "sentence", "upper", "lower", 44 | ]; 45 | 46 | fn app_matches() -> ArgMatches<'static> { 47 | App::new("Git Release Names") 48 | .author("Kevin Choubacha ") 49 | .about( 50 | "Takes a git sha and uses it's relatively unique combination of letters and number \ 51 | to generate a release name", 52 | ) 53 | .subcommand( 54 | SubCommand::with_name("list") 55 | .about("List out the dictionary words that are in use.") 56 | .arg( 57 | Arg::with_name("includes") 58 | .long("include") 59 | .short("i") 60 | .takes_value(true) 61 | .possible_values(&["nouns", "n", "adjectives", "adj", "adverbs", "adv"]) 62 | .multiple(true) 63 | .help("Specify which types of words to list."), 64 | ) 65 | .arg( 66 | Arg::with_name("format") 67 | .long("format") 68 | .short("f") 69 | .takes_value(true) 70 | .possible_values(&["csv", "fixed"]) 71 | .help("Specify the row format to use"), 72 | ), 73 | ) 74 | .arg( 75 | Arg::with_name("format") 76 | .long("format") 77 | .short("f") 78 | .takes_value(true) 79 | .possible_values(&FORMAT_OPTIONS) 80 | .alias("f") 81 | .help("Declares the return format of the phrase."), 82 | ) 83 | .arg(Arg::with_name("bench").long("bench")) 84 | .arg(Arg::with_name("SHA").multiple(true).help( 85 | "Each arg should be a sha. If they are less than 8 characters they will be padded", 86 | )) 87 | .get_matches() 88 | } 89 | 90 | mod list { 91 | use clap::ArgMatches; 92 | use git_release_name::{list, Entry, Kind}; 93 | 94 | struct List { 95 | n: bool, 96 | adv: bool, 97 | adj: bool, 98 | } 99 | 100 | impl List { 101 | fn new() -> List { 102 | List { 103 | n: false, 104 | adv: false, 105 | adj: false, 106 | } 107 | } 108 | 109 | fn apply(&mut self, val: &str) { 110 | match val { 111 | "n" | "nouns" => self.n = true, 112 | "adv" | "adverbs" => self.adv = true, 113 | "adj" | "adjectives" => self.adj = true, 114 | _ => {} 115 | } 116 | } 117 | 118 | fn entries(self) -> Vec { 119 | let mut entries = Vec::new(); 120 | if self.n { 121 | entries.append(&mut list(Kind::Noun)); 122 | } 123 | if self.adv { 124 | entries.append(&mut list(Kind::Adv)); 125 | } 126 | if self.adj { 127 | entries.append(&mut list(Kind::Adj)); 128 | } 129 | if !(self.n || self.adv || self.adj) { 130 | entries.append(&mut list(Kind::Noun)); 131 | entries.append(&mut list(Kind::Adv)); 132 | entries.append(&mut list(Kind::Adj)); 133 | } 134 | entries 135 | } 136 | } 137 | 138 | pub fn list_dictionary(matches: &ArgMatches) { 139 | let mut list = List::new(); 140 | if let Some(includes) = matches.values_of("includes") { 141 | for val in includes { 142 | list.apply(val) 143 | } 144 | } 145 | let entries = list.entries(); 146 | 147 | match matches.value_of("format") { 148 | Some("csv") => print_csv(&entries), 149 | Some("fixed") => print_fixed(&entries), 150 | _ => print_fixed(&entries), 151 | } 152 | } 153 | 154 | fn print_fixed(entries: &[Entry]) { 155 | println!( 156 | "{kind:>4} {word:<20} {index}", 157 | kind = "type", 158 | word = "word", 159 | index = "index" 160 | ); 161 | 162 | for entry in entries { 163 | println!( 164 | "{kind:>4} {word:<20} {index}", 165 | kind = match entry.kind { 166 | Kind::Noun => "noun", 167 | Kind::Adj => "adj", 168 | Kind::Adv => "adv", 169 | }, 170 | index = entry.index, 171 | word = entry.word 172 | ) 173 | } 174 | } 175 | 176 | fn print_csv(entries: &[Entry]) { 177 | println!( 178 | "{kind},{word},{index}", 179 | kind = "type", 180 | word = "word", 181 | index = "index" 182 | ); 183 | 184 | for entry in entries { 185 | println!( 186 | "{kind},{word},{index}", 187 | kind = match entry.kind { 188 | Kind::Noun => "noun", 189 | Kind::Adj => "adj", 190 | Kind::Adv => "adv", 191 | }, 192 | index = entry.index, 193 | word = entry.word 194 | ) 195 | } 196 | } 197 | } 198 | 199 | fn from_random_sha(format: Case) { 200 | println!( 201 | "{}", 202 | git_release_name::lookup(&format!("{:08x}", rand::random::())) 203 | .unwrap() 204 | .with_case(format) 205 | ); 206 | } 207 | 208 | fn from_stdin(format: Case) { 209 | let stdin = io::stdin(); 210 | let mut reader = stdin.lock(); 211 | loop { 212 | let mut line = String::new(); 213 | match reader.read_line(&mut line) { 214 | Ok(size) if size > 0 => println!( 215 | "{}", 216 | git_release_name::lookup(&line.trim()) 217 | .unwrap() 218 | .with_case(format) 219 | ), 220 | _ => break, 221 | } 222 | } 223 | } 224 | -------------------------------------------------------------------------------- /cli/tests/integration.rs: -------------------------------------------------------------------------------- 1 | extern crate assert_cli; 2 | 3 | #[cfg(test)] 4 | mod integration { 5 | use assert_cli::Assert; 6 | 7 | #[test] 8 | fn it_can_generate_a_random_name() { 9 | Assert::main_binary().succeeds().unwrap(); 10 | } 11 | 12 | #[test] 13 | fn it_can_generate_a_name_based_on_a_sha() { 14 | Assert::main_binary() 15 | .with_args(&["017020733fecef58761259d5d307c83876f9b428"]) 16 | .succeeds() 17 | .stdout() 18 | .contains("issuably twinning verso") 19 | .unwrap(); 20 | } 21 | 22 | #[test] 23 | fn it_can_generate_a_name_based_on_a_sha_with_casing() { 24 | Assert::main_binary() 25 | .with_args(&[ 26 | "--format", 27 | "camel", 28 | "017020733fecef58761259d5d307c83876f9b428", 29 | ]) 30 | .succeeds() 31 | .stdout() 32 | .contains("issuablyTwinningVerso") 33 | .unwrap(); 34 | Assert::main_binary() 35 | .with_args(&["-f", "camel", "017020733fecef58761259d5d307c83876f9b428"]) 36 | .succeeds() 37 | .stdout() 38 | .contains("issuablyTwinningVerso") 39 | .unwrap(); 40 | } 41 | 42 | #[test] 43 | fn it_can_generate_a_name_based_on_a_sha_from_stdin() { 44 | Assert::main_binary() 45 | .stdin("017020733fecef58761259d5d307c83876f9b428") 46 | .succeeds() 47 | .stdout() 48 | .contains("issuably twinning verso") 49 | .unwrap(); 50 | } 51 | 52 | #[test] 53 | fn it_can_generate_a_name_based_on_a_sha_from_stdin_with_casing() { 54 | Assert::main_binary() 55 | .with_args(&["--format", "camel"]) 56 | .stdin("017020733fecef58761259d5d307c83876f9b428") 57 | .succeeds() 58 | .stdout() 59 | .contains("issuablyTwinningVerso") 60 | .unwrap(); 61 | Assert::main_binary() 62 | .with_args(&["-f", "camel"]) 63 | .stdin("017020733fecef58761259d5d307c83876f9b428") 64 | .succeeds() 65 | .stdout() 66 | .contains("issuablyTwinningVerso") 67 | .unwrap(); 68 | } 69 | 70 | #[test] 71 | fn formats_sets_of_words() { 72 | Assert::main_binary() 73 | .with_args(&["list", "-i", "nouns", "-f", "csv"]) 74 | .succeeds() 75 | .stdout() 76 | .contains("noun,aba,3230") 77 | .unwrap(); 78 | Assert::main_binary() 79 | .with_args(&["list", "-i", "nouns", "--format", "csv"]) 80 | .succeeds() 81 | .stdout() 82 | .contains("noun,aba,3230") 83 | .unwrap(); 84 | Assert::main_binary() 85 | .with_args(&["list", "-i", "nouns", "-f", "fixed"]) 86 | .succeeds() 87 | .stdout() 88 | .contains("noun aba 3230") 89 | .unwrap(); 90 | Assert::main_binary() 91 | .with_args(&["list", "-i", "nouns", "--format", "fixed"]) 92 | .succeeds() 93 | .stdout() 94 | .contains("noun aba 3230") 95 | .unwrap(); 96 | } 97 | 98 | #[test] 99 | fn lists_sets_of_words() { 100 | macro_rules! test_list_command { 101 | () => {}; 102 | 103 | (when including $($type:tt),* contains $($word:expr),*;$($tail:tt)*) => { 104 | Assert::main_binary() 105 | .with_args(&["list" $(, "--include", $type)*]) 106 | .succeeds() 107 | $( 108 | .stdout() 109 | .contains($word) 110 | )* 111 | .unwrap(); 112 | Assert::main_binary() 113 | .with_args(&["list", "-i" $(, $type)*]) 114 | .succeeds() 115 | $( 116 | .stdout() 117 | .contains($word) 118 | )* 119 | .unwrap(); 120 | test_list_command!($($tail)*); 121 | }; 122 | 123 | (without args contains $($word:expr),*;$($tail:tt)*) => { 124 | Assert::main_binary() 125 | .with_args(&["list"]) 126 | .succeeds() 127 | $( 128 | .stdout() 129 | .contains($word) 130 | )* 131 | .unwrap(); 132 | test_list_command!($($tail)*); 133 | }; 134 | } 135 | 136 | test_list_command! { 137 | without args contains "verso", "twinning", "issuably"; 138 | 139 | when including "nouns" contains "verso"; 140 | when including "n" contains "verso"; 141 | when including "adjectives" contains "twinning"; 142 | when including "adj" contains "twinning"; 143 | when including "adverbs" contains "issuably"; 144 | when including "adv" contains "issuably"; 145 | when including "nouns", "adv" contains "issuably", "verso"; 146 | when including "nouns", "adj" contains "twinning", "verso"; 147 | when including "adv", "adj" contains "twinning", "issuably"; 148 | when including "nouns", "adv", "adj" contains "verso", "twinning", "issuably"; 149 | }; 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /dictionary/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "git-release-name" 3 | version = "0.2.0" 4 | authors = ["Kevin Choubacha "] 5 | license = "MIT" 6 | description = "A simple library for turning git shas into release names" 7 | repository = "https://github.com/kbacha/git-release-name" 8 | homepage = "http://releasename.com/" 9 | readme = "../README.md" 10 | keywords = ["release", "sha", "random", "funny", "git"] 11 | 12 | [dependencies] 13 | Inflector = "0.11" 14 | -------------------------------------------------------------------------------- /dictionary/src/adjectives.rs: -------------------------------------------------------------------------------- 1 | pub const WORDS: [&'static str; 256] = [ 2 | "timeless", 3 | "courant", 4 | "twinning", 5 | "travelled", 6 | "nestlike", 7 | "clawless", 8 | "unsnuffed", 9 | "valanced", 10 | "tinkly", 11 | "unplanked", 12 | "endways", 13 | "moonstruck", 14 | "bullate", 15 | "unmarked", 16 | "ajar", 17 | "sketchy", 18 | "unstack", 19 | "aurous", 20 | "avid", 21 | "dragging", 22 | "ungilt", 23 | "aubergine", 24 | "prostrate", 25 | "owllike", 26 | "bunchy", 27 | "sanguine", 28 | "truncate", 29 | "dreamlike", 30 | "ocker", 31 | "plaided", 32 | "lathlike", 33 | "thyrsoid", 34 | "scombrid", 35 | "checky", 36 | "dextrorse", 37 | "aghast", 38 | "speeding", 39 | "tidied", 40 | "crossed", 41 | "corbelled", 42 | "fifteen", 43 | "about", 44 | "blaring", 45 | "doggy", 46 | "bughouse", 47 | "glandered", 48 | "refer", 49 | "whiskered", 50 | "hackneyed", 51 | "ternate", 52 | "unwed", 53 | "elite", 54 | "prunted", 55 | "submerged", 56 | "farci", 57 | "yearling", 58 | "lovesick", 59 | "festive", 60 | "fluffy", 61 | "stifling", 62 | "uncoined", 63 | "formless", 64 | "haunting", 65 | "wordy", 66 | "looser", 67 | "guardless", 68 | "pollened", 69 | "infantile", 70 | "naiant", 71 | "blameless", 72 | "guilty", 73 | "nobby", 74 | "mirthful", 75 | "designed", 76 | "unspun", 77 | "sister", 78 | "awnless", 79 | "laden", 80 | "sclerous", 81 | "beveled", 82 | "offside", 83 | "storied", 84 | "nodose", 85 | "risky", 86 | "unthanked", 87 | "velate", 88 | "scurvy", 89 | "beetle", 90 | "shadeless", 91 | "farrow", 92 | "misused", 93 | "subdued", 94 | "unpeeled", 95 | "fearless", 96 | "hempy", 97 | "gadrooned", 98 | "gelid", 99 | "tangy", 100 | "histoid", 101 | "distraught", 102 | "sollar", 103 | "unstilled", 104 | "idlest", 105 | "baneful", 106 | "branching", 107 | "filar", 108 | "spryest", 109 | "sonsy", 110 | "perverse", 111 | "effete", 112 | "lento", 113 | "super", 114 | "joyous", 115 | "teasing", 116 | "bosomed", 117 | "longhand", 118 | "routed", 119 | "chopping", 120 | "virgate", 121 | "mirky", 122 | "unbrushed", 123 | "undrained", 124 | "flameproof", 125 | "aching", 126 | "spaceless", 127 | "dustless", 128 | "sighful", 129 | "scrimpy", 130 | "plumate", 131 | "dockside", 132 | "coreless", 133 | "socko", 134 | "restless", 135 | "furzy", 136 | "tabu", 137 | "lanose", 138 | "repand", 139 | "costly", 140 | "florid", 141 | "globate", 142 | "reckless", 143 | "dernier", 144 | "fretty", 145 | "templed", 146 | "textbook", 147 | "bardy", 148 | "randy", 149 | "gracious", 150 | "starving", 151 | "jurant", 152 | "hopping", 153 | "zany", 154 | "lidless", 155 | "plastics", 156 | "mimic", 157 | "eastbound", 158 | "sporty", 159 | "priggish", 160 | "carsick", 161 | "purer", 162 | "patent", 163 | "uncurbed", 164 | "untrenched", 165 | "weary", 166 | "unmanned", 167 | "wretched", 168 | "unplaced", 169 | "aged", 170 | "bogus", 171 | "mowburnt", 172 | "lapelled", 173 | "smileless", 174 | "brinded", 175 | "soupy", 176 | "beefy", 177 | "moanful", 178 | "noisome", 179 | "revived", 180 | "barbate", 181 | "xyloid", 182 | "alvine", 183 | "superb", 184 | "often", 185 | "earthen", 186 | "tawie", 187 | "blooming", 188 | "lobose", 189 | "sternmost", 190 | "kilted", 191 | "dateless", 192 | "phony", 193 | "proxy", 194 | "unscaled", 195 | "payoff", 196 | "unclean", 197 | "nettly", 198 | "ticklish", 199 | "sunrise", 200 | "bardic", 201 | "ablest", 202 | "sinful", 203 | "thinnish", 204 | "wanting", 205 | "baleful", 206 | "only", 207 | "hazy", 208 | "controlled", 209 | "spiffy", 210 | "traplike", 211 | "cozy", 212 | "jarring", 213 | "stylish", 214 | "fanfold", 215 | "venous", 216 | "ramstam", 217 | "escaped", 218 | "dinkies", 219 | "truthless", 220 | "eerie", 221 | "feral", 222 | "chiefless", 223 | "jagged", 224 | "snotty", 225 | "ablush", 226 | "sulkies", 227 | "nascent", 228 | "boneless", 229 | "breasted", 230 | "rending", 231 | "bearlike", 232 | "unfit", 233 | "snuffy", 234 | "shipless", 235 | "liney", 236 | "callow", 237 | "tarry", 238 | "gadoid", 239 | "frightful", 240 | "knifeless", 241 | "thecal", 242 | "stintless", 243 | "discalced", 244 | "headfirst", 245 | "wormy", 246 | "rainier", 247 | "sneaky", 248 | "blotto", 249 | "buckish", 250 | "pensile", 251 | "unhired", 252 | "vorant", 253 | "umbrose", 254 | "enate", 255 | "crackers", 256 | "vast", 257 | "gleeful", 258 | ]; 259 | -------------------------------------------------------------------------------- /dictionary/src/case.rs: -------------------------------------------------------------------------------- 1 | use std::str::FromStr; 2 | 3 | /// The various cases that can be supported. This is a type used to coerce 4 | /// from a string to the enum. 5 | #[derive(Debug, Eq, PartialEq, Copy, Clone)] 6 | pub enum Case { 7 | Snake, 8 | Kebab, 9 | Pascal, 10 | Camel, 11 | Title, 12 | Sentence, 13 | Lower, 14 | Upper, 15 | } 16 | 17 | #[derive(Debug, Eq, PartialEq)] 18 | pub enum ParseCaseError { 19 | InvalidFormat, 20 | } 21 | 22 | impl FromStr for Case { 23 | type Err = ParseCaseError; 24 | 25 | fn from_str(format: &str) -> Result { 26 | let case = match format { 27 | "snake" => Case::Snake, 28 | "kebab" => Case::Kebab, 29 | "pascal" => Case::Pascal, 30 | "camel" => Case::Camel, 31 | "title" => Case::Title, 32 | "sentence" => Case::Sentence, 33 | "lower" => Case::Lower, 34 | "upper" => Case::Upper, 35 | _ => return Err(ParseCaseError::InvalidFormat), 36 | }; 37 | 38 | Ok(case) 39 | } 40 | } 41 | 42 | #[cfg(test)] 43 | mod tests { 44 | use super::*; 45 | 46 | #[test] 47 | fn str_can_be_parsed_to_a_format() { 48 | assert_eq!(Case::Snake, "snake".parse::().unwrap()); 49 | assert_eq!(Case::Kebab, "kebab".parse::().unwrap()); 50 | assert_eq!(Case::Camel, "camel".parse::().unwrap()); 51 | assert_eq!(Case::Pascal, "pascal".parse::().unwrap()); 52 | assert_eq!(Case::Title, "title".parse::().unwrap()); 53 | assert_eq!(Case::Sentence, "sentence".parse::().unwrap()); 54 | assert_eq!(Case::Lower, "lower".parse::().unwrap()); 55 | assert_eq!(Case::Upper, "upper".parse::().unwrap()); 56 | assert!("alsdkfj".parse::().is_err()); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /dictionary/src/lib.rs: -------------------------------------------------------------------------------- 1 | extern crate inflector; 2 | 3 | mod adjectives; 4 | mod adverbs; 5 | mod case; 6 | mod nouns; 7 | mod phrase; 8 | mod sha; 9 | 10 | pub use self::case::Case; 11 | pub use self::phrase::{ParsePhraseError, Phrase}; 12 | 13 | /// Looks up a phrase from a given str slice. It should be able to look up 14 | /// any sized string but only if it's a valid hexadecimal. 15 | pub fn lookup(sha: &str) -> Result { 16 | sha.parse() 17 | } 18 | 19 | /// The kind of word. 20 | #[derive(Copy, Debug, Clone, PartialEq, Eq)] 21 | pub enum Kind { 22 | /// Noun 23 | Noun, 24 | /// Adjective 25 | Adj, 26 | /// Adverb 27 | Adv, 28 | } 29 | 30 | /// A word entry in the dictionary. 31 | #[derive(Debug, Clone, PartialEq, Eq)] 32 | pub struct Entry { 33 | pub kind: Kind, 34 | pub word: String, 35 | pub index: usize, 36 | } 37 | 38 | /// Lists out the word for a particular kind of word. 39 | pub fn list(kind: Kind) -> Vec { 40 | let list = match kind { 41 | Kind::Noun => &nouns::WORDS[..], 42 | Kind::Adv => &adverbs::WORDS[..], 43 | Kind::Adj => &adjectives::WORDS[..], 44 | }; 45 | 46 | list.iter() 47 | .map(|s| String::from(*s)) 48 | .enumerate() 49 | .map(|(index, word)| Entry { kind, index, word }) 50 | .collect() 51 | } 52 | 53 | #[cfg(test)] 54 | mod tests { 55 | use super::*; 56 | use std::collections::HashSet; 57 | use std::hash::Hash; 58 | 59 | fn has_unique_elements(iter: T) -> bool 60 | where 61 | T: IntoIterator, 62 | T::Item: Eq + Hash, 63 | { 64 | let mut uniq = HashSet::new(); 65 | iter.into_iter().all(move |x| uniq.insert(x)) 66 | } 67 | 68 | #[test] 69 | fn unique_function_detects_non_unique() { 70 | assert!(!has_unique_elements(vec![1, 1].iter())); 71 | } 72 | 73 | #[test] 74 | fn adverbs_are_unique() { 75 | assert!(has_unique_elements(adverbs::WORDS.iter())); 76 | } 77 | 78 | #[test] 79 | fn adjectives_are_unique() { 80 | assert!(has_unique_elements(adjectives::WORDS.iter())); 81 | } 82 | 83 | #[test] 84 | fn nouns_are_unique() { 85 | assert!(has_unique_elements(nouns::WORDS.iter())); 86 | } 87 | 88 | #[test] 89 | fn listing() { 90 | assert_eq!(list(Kind::Noun).len(), 4096); 91 | assert_eq!( 92 | list(Kind::Noun)[0], 93 | Entry { 94 | word: String::from("kisses"), 95 | index: 0, 96 | kind: Kind::Noun 97 | } 98 | ) 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /dictionary/src/nouns.rs: -------------------------------------------------------------------------------- 1 | pub const WORDS: [&'static str; 4096] = [ 2 | "kisses", 3 | "ombre", 4 | "whippets", 5 | "hoofbeat", 6 | "taproot", 7 | "bummers", 8 | "dubbing", 9 | "bordel", 10 | "remains", 11 | "ayah", 12 | "borings", 13 | "commodes", 14 | "stearates", 15 | "jackboot", 16 | "surfing", 17 | "vibist", 18 | "buglers", 19 | "cobnut", 20 | "drivels", 21 | "pledgor", 22 | "beagles", 23 | "staterooms", 24 | "piecers", 25 | "instance", 26 | "storehouse", 27 | "metrist", 28 | "whangee", 29 | "misprints", 30 | "moonbeam", 31 | "servals", 32 | "dabber", 33 | "moquettes", 34 | "shortie", 35 | "quartets", 36 | "dowses", 37 | "dawdler", 38 | "forehand", 39 | "legging", 40 | "rushees", 41 | "karats", 42 | "bradawls", 43 | "micher", 44 | "waddings", 45 | "tablings", 46 | "sackcloths", 47 | "users", 48 | "haemin", 49 | "digits", 50 | "motile", 51 | "tankfuls", 52 | "adieus", 53 | "dancer", 54 | "inkling", 55 | "blazers", 56 | "pavers", 57 | "thrusters", 58 | "amie", 59 | "smytries", 60 | "tailskid", 61 | "owls", 62 | "blitheness", 63 | "shinnies", 64 | "windburns", 65 | "crosses", 66 | "woolpacks", 67 | "linhays", 68 | "temblor", 69 | "kiosk", 70 | "snoozers", 71 | "fireweed", 72 | "eyeshades", 73 | "cassias", 74 | "auteurs", 75 | "headrests", 76 | "bedtime", 77 | "tiglons", 78 | "faubourg", 79 | "talkie", 80 | "petite", 81 | "hyson", 82 | "chimpanzee", 83 | "dullard", 84 | "feedstuffs", 85 | "napkin", 86 | "lutists", 87 | "nocturns", 88 | "spinney", 89 | "berthage", 90 | "chains", 91 | "woodchuck", 92 | "nibble", 93 | "plugger", 94 | "harpers", 95 | "chlorates", 96 | "vermeil", 97 | "flashers", 98 | "budgets", 99 | "veges", 100 | "pricer", 101 | "expo", 102 | "jamming", 103 | "sargos", 104 | "warder", 105 | "faction", 106 | "shoemaker", 107 | "benes", 108 | "rudder", 109 | "chaser", 110 | "tripes", 111 | "backstitch", 112 | "clubrooms", 113 | "morro", 114 | "mastheads", 115 | "boardroom", 116 | "jingles", 117 | "verso", 118 | "selfhood", 119 | "dowsers", 120 | "benches", 121 | "carcass", 122 | "blackbuck", 123 | "tampers", 124 | "shocker", 125 | "serai", 126 | "pantries", 127 | "roasters", 128 | "jiber", 129 | "crisper", 130 | "burster", 131 | "bowlders", 132 | "coupons", 133 | "tenor", 134 | "plower", 135 | "crackbrains", 136 | "carvers", 137 | "greeter", 138 | "dearie", 139 | "poplin", 140 | "snuffbox", 141 | "scholars", 142 | "migrants", 143 | "toddy", 144 | "klaxons", 145 | "zanders", 146 | "goliards", 147 | "keystone", 148 | "mallow", 149 | "lechwes", 150 | "moonquake", 151 | "bloodstream", 152 | "nevus", 153 | "scrawler", 154 | "soras", 155 | "flyweights", 156 | "cutworm", 157 | "guanos", 158 | "shammy", 159 | "starworts", 160 | "tackers", 161 | "snickers", 162 | "neckwear", 163 | "woodcuts", 164 | "simpers", 165 | "lessors", 166 | "brollies", 167 | "mayday", 168 | "angler", 169 | "drinker", 170 | "alleles", 171 | "rounces", 172 | "slather", 173 | "pipsqueak", 174 | "tumours", 175 | "dampness", 176 | "dorter", 177 | "spindling", 178 | "dazzler", 179 | "remakes", 180 | "outboard", 181 | "devise", 182 | "coatees", 183 | "jampans", 184 | "augur", 185 | "oiler", 186 | "thymus", 187 | "paroles", 188 | "trepan", 189 | "clearway", 190 | "bracken", 191 | "satire", 192 | "preserves", 193 | "rampikes", 194 | "linkboy", 195 | "bungee", 196 | "spinels", 197 | "dynasts", 198 | "pewit", 199 | "lockets", 200 | "panchax", 201 | "enclaves", 202 | "umlauts", 203 | "pumas", 204 | "hocket", 205 | "dearness", 206 | "hurries", 207 | "ovens", 208 | "sampans", 209 | "brickyard", 210 | "petcock", 211 | "frailness", 212 | "throstle", 213 | "ketches", 214 | "hornets", 215 | "schooling", 216 | "flippers", 217 | "furan", 218 | "ghazi", 219 | "maulsticks", 220 | "phonies", 221 | "tapper", 222 | "salmis", 223 | "intake", 224 | "rhino", 225 | "clanger", 226 | "waker", 227 | "floppies", 228 | "hopers", 229 | "mischiefs", 230 | "doodads", 231 | "riddles", 232 | "questers", 233 | "havens", 234 | "ethmoid", 235 | "swindlers", 236 | "schnauzer", 237 | "udos", 238 | "mortars", 239 | "tympan", 240 | "chipmunk", 241 | "tillite", 242 | "shaveling", 243 | "broadswords", 244 | "walnut", 245 | "beanie", 246 | "steenbok", 247 | "junto", 248 | "volvas", 249 | "mansards", 250 | "bluecoat", 251 | "subclass", 252 | "clampers", 253 | "nilgai", 254 | "desponds", 255 | "idols", 256 | "obtund", 257 | "handset", 258 | "scampers", 259 | "marblers", 260 | "sackbuts", 261 | "webbings", 262 | "verism", 263 | "hansels", 264 | "raphe", 265 | "inning", 266 | "quahog", 267 | "parades", 268 | "budgie", 269 | "mukluk", 270 | "jato", 271 | "mueslis", 272 | "velure", 273 | "minyans", 274 | "towpath", 275 | "cantling", 276 | "wites", 277 | "swineherds", 278 | "nursers", 279 | "backseat", 280 | "transit", 281 | "bareness", 282 | "coddles", 283 | "statures", 284 | "malmseys", 285 | "corncribs", 286 | "mutants", 287 | "racquets", 288 | "decease", 289 | "pothook", 290 | "upstarts", 291 | "deadness", 292 | "chondrites", 293 | "rancor", 294 | "recaps", 295 | "trippers", 296 | "moorhens", 297 | "trauchles", 298 | "chasers", 299 | "sedum", 300 | "gunyah", 301 | "rennet", 302 | "gougers", 303 | "dreadnaughts", 304 | "donor", 305 | "goldstone", 306 | "clippers", 307 | "tristich", 308 | "forel", 309 | "calkin", 310 | "gallate", 311 | "digraph", 312 | "soakers", 313 | "shrinkage", 314 | "beanpole", 315 | "frippets", 316 | "scutches", 317 | "brushworks", 318 | "spoilers", 319 | "fouters", 320 | "influx", 321 | "cupules", 322 | "gelders", 323 | "kyat", 324 | "greybeard", 325 | "strangles", 326 | "banians", 327 | "dartboard", 328 | "affray", 329 | "wholefoods", 330 | "nylghaus", 331 | "didrachms", 332 | "prefect", 333 | "havocs", 334 | "longness", 335 | "penult", 336 | "greenflies", 337 | "cerate", 338 | "djebel", 339 | "garfish", 340 | "spicules", 341 | "coucal", 342 | "kantars", 343 | "selvedge", 344 | "goblets", 345 | "noyaus", 346 | "quivers", 347 | "pittas", 348 | "banquet", 349 | "hurdles", 350 | "shooters", 351 | "nephews", 352 | "dazzles", 353 | "gentleman", 354 | "bailees", 355 | "efflux", 356 | "rival", 357 | "nixes", 358 | "hearer", 359 | "latches", 360 | "legend", 361 | "solstice", 362 | "junket", 363 | "hagbuts", 364 | "fibroids", 365 | "chasteness", 366 | "sachets", 367 | "scullions", 368 | "sardines", 369 | "cyma", 370 | "tourers", 371 | "thumbprint", 372 | "chagrin", 373 | "cleaner", 374 | "racers", 375 | "postcard", 376 | "burses", 377 | "aesthetes", 378 | "smokings", 379 | "horsetails", 380 | "gunfire", 381 | "trauchle", 382 | "toothbrush", 383 | "quasar", 384 | "facade", 385 | "gryphons", 386 | "freebie", 387 | "topspins", 388 | "skillets", 389 | "murine", 390 | "lyrist", 391 | "invites", 392 | "hoodoo", 393 | "remount", 394 | "outbursts", 395 | "tsarists", 396 | "citers", 397 | "stillage", 398 | "chinos", 399 | "burgher", 400 | "schnecken", 401 | "hairpin", 402 | "sallows", 403 | "scapegoat", 404 | "mohair", 405 | "draftsman", 406 | "bonzes", 407 | "spinules", 408 | "sculpture", 409 | "bragger", 410 | "grisaille", 411 | "fuchsite", 412 | "vaivodes", 413 | "footman", 414 | "costards", 415 | "sardine", 416 | "lameness", 417 | "scyphus", 418 | "lexeme", 419 | "bwanas", 420 | "crocking", 421 | "dredges", 422 | "kickbacks", 423 | "babbler", 424 | "koftgars", 425 | "whitlows", 426 | "pismire", 427 | "ergot", 428 | "wabbles", 429 | "hectare", 430 | "gossoon", 431 | "lupin", 432 | "snotties", 433 | "cithers", 434 | "password", 435 | "fascine", 436 | "terrain", 437 | "housemaids", 438 | "convoy", 439 | "gargoyle", 440 | "bordels", 441 | "scaler", 442 | "gunsmith", 443 | "islet", 444 | "rallyes", 445 | "tautog", 446 | "workshops", 447 | "guilloche", 448 | "girthline", 449 | "headcloths", 450 | "daddy", 451 | "downtimes", 452 | "bedbug", 453 | "sweeties", 454 | "chancroids", 455 | "vending", 456 | "brute", 457 | "gemsboks", 458 | "higglers", 459 | "jihad", 460 | "jangler", 461 | "mongrel", 462 | "venule", 463 | "peewit", 464 | "hoodlums", 465 | "tightness", 466 | "pratique", 467 | "aptness", 468 | "rootage", 469 | "discos", 470 | "billfish", 471 | "prowess", 472 | "stilbites", 473 | "hatrack", 474 | "quipu", 475 | "vent", 476 | "borstals", 477 | "blaubok", 478 | "socle", 479 | "fulmars", 480 | "saver", 481 | "notelets", 482 | "grantee", 483 | "seizing", 484 | "paletot", 485 | "wedlock", 486 | "revanche", 487 | "nations", 488 | "spreader", 489 | "bottlers", 490 | "jehads", 491 | "blemish", 492 | "tridents", 493 | "springbuck", 494 | "waistband", 495 | "boree", 496 | "loges", 497 | "samba", 498 | "captions", 499 | "kneader", 500 | "hawthorns", 501 | "microhms", 502 | "phytons", 503 | "collards", 504 | "dais", 505 | "bearding", 506 | "garpike", 507 | "makefasts", 508 | "dita", 509 | "ilex", 510 | "workhouse", 511 | "woodsman", 512 | "woodland", 513 | "shutter", 514 | "riddance", 515 | "noontides", 516 | "truncheon", 517 | "rattlings", 518 | "tricorn", 519 | "soilage", 520 | "wretches", 521 | "southlands", 522 | "tollbooths", 523 | "lexis", 524 | "scrambler", 525 | "harden", 526 | "hijacks", 527 | "drinkers", 528 | "cartoon", 529 | "sollar", 530 | "fantoms", 531 | "rebuke", 532 | "spoonful", 533 | "grumness", 534 | "tourneys", 535 | "recap", 536 | "streakers", 537 | "stucco", 538 | "mastiff", 539 | "paviour", 540 | "rescues", 541 | "urchin", 542 | "ceder", 543 | "tontine", 544 | "tussore", 545 | "toucans", 546 | "leaner", 547 | "venters", 548 | "grandsires", 549 | "sprinkles", 550 | "aleph", 551 | "shellbacks", 552 | "cloison", 553 | "fantails", 554 | "visas", 555 | "humdrums", 556 | "booklouse", 557 | "maggot", 558 | "parrels", 559 | "cripplers", 560 | "braunite", 561 | "collop", 562 | "hoolies", 563 | "spiremes", 564 | "hooey", 565 | "orpins", 566 | "gantlines", 567 | "twiddles", 568 | "cushions", 569 | "trangams", 570 | "hugeness", 571 | "wordplay", 572 | "stepdames", 573 | "nonces", 574 | "bravas", 575 | "rhonchus", 576 | "numskulls", 577 | "modistes", 578 | "gulfweeds", 579 | "freezer", 580 | "replay", 581 | "bazar", 582 | "debouch", 583 | "honewort", 584 | "affects", 585 | "lyddite", 586 | "scrooges", 587 | "landsknechts", 588 | "paletots", 589 | "premies", 590 | "refrains", 591 | "neckcloth", 592 | "monism", 593 | "cavefish", 594 | "hoedowns", 595 | "witling", 596 | "fattest", 597 | "geodes", 598 | "bridlers", 599 | "fireside", 600 | "prismoid", 601 | "cheeseboards", 602 | "swamis", 603 | "kebbuck", 604 | "proustite", 605 | "sunsuits", 606 | "guldens", 607 | "chanty", 608 | "flusher", 609 | "slapstick", 610 | "mislike", 611 | "actin", 612 | "infills", 613 | "furore", 614 | "qiblas", 615 | "stardom", 616 | "lakin", 617 | "yucca", 618 | "mashie", 619 | "shallop", 620 | "missies", 621 | "hajis", 622 | "taproots", 623 | "corrals", 624 | "carafes", 625 | "sylphids", 626 | "folders", 627 | "mouldwarp", 628 | "catsups", 629 | "chaplain", 630 | "bandores", 631 | "fogeys", 632 | "outride", 633 | "coaster", 634 | "drammocks", 635 | "perchers", 636 | "tootses", 637 | "baryes", 638 | "padlock", 639 | "zygote", 640 | "birdbrains", 641 | "packets", 642 | "baldrick", 643 | "neddy", 644 | "egis", 645 | "selvas", 646 | "ditto", 647 | "pasta", 648 | "minims", 649 | "kalifs", 650 | "tenrecs", 651 | "namers", 652 | "dicast", 653 | "packsack", 654 | "anthems", 655 | "ovoids", 656 | "sailplanes", 657 | "checker", 658 | "sculler", 659 | "recount", 660 | "crowfoots", 661 | "navette", 662 | "receipts", 663 | "cracklings", 664 | "genappe", 665 | "jinker", 666 | "rappers", 667 | "katakanas", 668 | "siskins", 669 | "stamper", 670 | "broacher", 671 | "pronghorn", 672 | "hummers", 673 | "mimer", 674 | "cervid", 675 | "boxrooms", 676 | "azide", 677 | "virgates", 678 | "beefcakes", 679 | "scribble", 680 | "swingboats", 681 | "cermet", 682 | "rattans", 683 | "protests", 684 | "remex", 685 | "mambo", 686 | "schnorkels", 687 | "zloty", 688 | "weanling", 689 | "sunhats", 690 | "akee", 691 | "goslings", 692 | "forepaws", 693 | "wheelworks", 694 | "springbucks", 695 | "hurter", 696 | "coamings", 697 | "sheepskin", 698 | "gnomon", 699 | "tayras", 700 | "janglers", 701 | "armoire", 702 | "poncho", 703 | "herald", 704 | "ridgels", 705 | "teamer", 706 | "forestay", 707 | "haffets", 708 | "foulmart", 709 | "yawpers", 710 | "billionth", 711 | "corries", 712 | "clubhouse", 713 | "crossette", 714 | "grabbers", 715 | "gimbals", 716 | "rouser", 717 | "oblique", 718 | "poljes", 719 | "lentil", 720 | "crenels", 721 | "tsardom", 722 | "bruises", 723 | "tychism", 724 | "quartes", 725 | "tailplane", 726 | "tressures", 727 | "maggots", 728 | "vignettes", 729 | "tangrams", 730 | "crossbow", 731 | "settlers", 732 | "closures", 733 | "dairies", 734 | "pointers", 735 | "foyer", 736 | "pigsty", 737 | "waddles", 738 | "sirup", 739 | "angelicas", 740 | "henchman", 741 | "sophism", 742 | "deftness", 743 | "burners", 744 | "coyotes", 745 | "houseguest", 746 | "piano", 747 | "flyway", 748 | "gallets", 749 | "housefuls", 750 | "charlocks", 751 | "indrafts", 752 | "guaco", 753 | "taro", 754 | "hatchbacks", 755 | "wadmal", 756 | "tenches", 757 | "eyefuls", 758 | "kelters", 759 | "outcomes", 760 | "flavine", 761 | "twinkle", 762 | "ducats", 763 | "cesses", 764 | "cinquain", 765 | "raceway", 766 | "scourges", 767 | "sheepwalks", 768 | "felloe", 769 | "almonds", 770 | "meddler", 771 | "agraffe", 772 | "deadlight", 773 | "sippets", 774 | "armures", 775 | "doilies", 776 | "burgers", 777 | "lashes", 778 | "jettons", 779 | "culvers", 780 | "rascals", 781 | "barongs", 782 | "zeugma", 783 | "trousseaus", 784 | "turbots", 785 | "lichen", 786 | "gusher", 787 | "carpings", 788 | "tearing", 789 | "outswing", 790 | "potsherds", 791 | "yielding", 792 | "greenstone", 793 | "deray", 794 | "trepans", 795 | "goglets", 796 | "handmaid", 797 | "mama", 798 | "airman", 799 | "region", 800 | "mugworts", 801 | "trembles", 802 | "sememe", 803 | "jotun", 804 | "bughouse", 805 | "renin", 806 | "helpmate", 807 | "cuboid", 808 | "blinkard", 809 | "bebops", 810 | "charpoy", 811 | "fitchews", 812 | "sparid", 813 | "xylem", 814 | "barrios", 815 | "lying", 816 | "eucrite", 817 | "culler", 818 | "stringers", 819 | "parka", 820 | "lotting", 821 | "faquirs", 822 | "basis", 823 | "direness", 824 | "woodworks", 825 | "alloys", 826 | "roundels", 827 | "soutache", 828 | "viscus", 829 | "jurors", 830 | "tellins", 831 | "hinges", 832 | "glosser", 833 | "malvas", 834 | "cablets", 835 | "lacqueys", 836 | "dorsum", 837 | "novice", 838 | "puppets", 839 | "bombs", 840 | "bunkos", 841 | "freewheels", 842 | "kunzite", 843 | "hornwort", 844 | "borates", 845 | "halides", 846 | "locket", 847 | "steelwork", 848 | "tunnies", 849 | "nopals", 850 | "taxon", 851 | "forewind", 852 | "riskers", 853 | "towage", 854 | "corpsman", 855 | "quitches", 856 | "penman", 857 | "archway", 858 | "corset", 859 | "buzzers", 860 | "swampland", 861 | "hoarseness", 862 | "mossies", 863 | "qintar", 864 | "flection", 865 | "pepos", 866 | "stoneworts", 867 | "billions", 868 | "lexemes", 869 | "percale", 870 | "rollocks", 871 | "fetich", 872 | "finders", 873 | "snakeroot", 874 | "bowshots", 875 | "tripwire", 876 | "draper", 877 | "eighteen", 878 | "rages", 879 | "posies", 880 | "pyrite", 881 | "blenders", 882 | "vineyard", 883 | "trindles", 884 | "blushes", 885 | "doolie", 886 | "crinoids", 887 | "solums", 888 | "minglers", 889 | "hoggin", 890 | "classmate", 891 | "eyelets", 892 | "sauts", 893 | "slider", 894 | "muckles", 895 | "howdie", 896 | "jimpness", 897 | "droning", 898 | "turbo", 899 | "wailing", 900 | "earphones", 901 | "nurselings", 902 | "pucker", 903 | "fowlers", 904 | "reedbuck", 905 | "cockscomb", 906 | "grysboks", 907 | "ruler", 908 | "locknuts", 909 | "stippler", 910 | "cartes", 911 | "rollbars", 912 | "cippus", 913 | "yawper", 914 | "strumpet", 915 | "moonscapes", 916 | "drachma", 917 | "dodger", 918 | "shoer", 919 | "pasteboards", 920 | "brisures", 921 | "consort", 922 | "blabbers", 923 | "vanguard", 924 | "spikelets", 925 | "coastlines", 926 | "metres", 927 | "reffo", 928 | "chronons", 929 | "dumper", 930 | "shipwright", 931 | "quartette", 932 | "frogbit", 933 | "mandirs", 934 | "veneer", 935 | "alsikes", 936 | "milepost", 937 | "cookouts", 938 | "sawyers", 939 | "caffeine", 940 | "moly", 941 | "purfle", 942 | "pledges", 943 | "eatage", 944 | "hoopers", 945 | "keening", 946 | "melder", 947 | "trannies", 948 | "abode", 949 | "pipette", 950 | "roadster", 951 | "texture", 952 | "lysol", 953 | "jitney", 954 | "monas", 955 | "tamper", 956 | "hawking", 957 | "algae", 958 | "powwow", 959 | "studies", 960 | "shutes", 961 | "roebuck", 962 | "dinmont", 963 | "centroids", 964 | "seatings", 965 | "birdseeds", 966 | "spunkies", 967 | "blueprints", 968 | "howling", 969 | "rimus", 970 | "bumkin", 971 | "hokkus", 972 | "doodlers", 973 | "sphygmus", 974 | "offshoot", 975 | "groining", 976 | "banian", 977 | "charades", 978 | "squids", 979 | "termite", 980 | "behoofs", 981 | "circlet", 982 | "perron", 983 | "miscue", 984 | "retakes", 985 | "jumbler", 986 | "patient", 987 | "hoodies", 988 | "lathing", 989 | "bowler", 990 | "tapelines", 991 | "fantasms", 992 | "drumfire", 993 | "nutters", 994 | "franchise", 995 | "shipment", 996 | "nostrums", 997 | "questors", 998 | "ouster", 999 | "milliard", 1000 | "doddles", 1001 | "gabs", 1002 | "lummox", 1003 | "coolers", 1004 | "softwood", 1005 | "fainter", 1006 | "lacker", 1007 | "stemson", 1008 | "grampus", 1009 | "coati", 1010 | "standpoints", 1011 | "collies", 1012 | "stria", 1013 | "hapten", 1014 | "wiverns", 1015 | "blauboks", 1016 | "cleansers", 1017 | "beagle", 1018 | "peddling", 1019 | "cowitch", 1020 | "facades", 1021 | "sleddings", 1022 | "sateens", 1023 | "lion", 1024 | "springald", 1025 | "jujube", 1026 | "pluggers", 1027 | "spoondrift", 1028 | "saurel", 1029 | "crutches", 1030 | "dobbins", 1031 | "durrie", 1032 | "tropism", 1033 | "calving", 1034 | "papa", 1035 | "greasepaint", 1036 | "ebons", 1037 | "platter", 1038 | "extract", 1039 | "routes", 1040 | "salters", 1041 | "dynode", 1042 | "swamper", 1043 | "rebus", 1044 | "resist", 1045 | "faddists", 1046 | "conoids", 1047 | "levees", 1048 | "drunkard", 1049 | "accord", 1050 | "mescal", 1051 | "twinkling", 1052 | "rinsings", 1053 | "fresher", 1054 | "cutin", 1055 | "possum", 1056 | "jarveys", 1057 | "shyster", 1058 | "pamphlet", 1059 | "oakum", 1060 | "bending", 1061 | "sadists", 1062 | "stannate", 1063 | "bailor", 1064 | "drachmas", 1065 | "ailettes", 1066 | "tailplanes", 1067 | "morsel", 1068 | "cruets", 1069 | "picrites", 1070 | "debugs", 1071 | "rowboat", 1072 | "nascence", 1073 | "sawpits", 1074 | "tinctures", 1075 | "swiftlet", 1076 | "spongers", 1077 | "earthquake", 1078 | "foxholes", 1079 | "chapeau", 1080 | "holster", 1081 | "hexads", 1082 | "rhinestone", 1083 | "acclaims", 1084 | "treenails", 1085 | "claro", 1086 | "pipsqueaks", 1087 | "softie", 1088 | "showcase", 1089 | "trommels", 1090 | "crosslight", 1091 | "bugler", 1092 | "musings", 1093 | "errhine", 1094 | "akees", 1095 | "windrows", 1096 | "phyles", 1097 | "ambos", 1098 | "mambos", 1099 | "muddlers", 1100 | "chaos", 1101 | "mizzens", 1102 | "searching", 1103 | "weavers", 1104 | "piggins", 1105 | "hitting", 1106 | "planchets", 1107 | "pontes", 1108 | "kinins", 1109 | "shibahs", 1110 | "kivas", 1111 | "mystiques", 1112 | "pencil", 1113 | "nightfalls", 1114 | "murgeons", 1115 | "cancroid", 1116 | "sylva", 1117 | "snoring", 1118 | "wrynecks", 1119 | "rattle", 1120 | "bigheads", 1121 | "sideman", 1122 | "darkness", 1123 | "pecker", 1124 | "gerent", 1125 | "weighers", 1126 | "cerements", 1127 | "oncer", 1128 | "viands", 1129 | "jurant", 1130 | "sewers", 1131 | "cyders", 1132 | "subset", 1133 | "shyness", 1134 | "ichor", 1135 | "tapa", 1136 | "downstage", 1137 | "hurly", 1138 | "navvy", 1139 | "ruchings", 1140 | "snuffle", 1141 | "naming", 1142 | "breasting", 1143 | "swearers", 1144 | "louseworts", 1145 | "crossroad", 1146 | "polje", 1147 | "baguette", 1148 | "replies", 1149 | "treatment", 1150 | "wisecracks", 1151 | "picul", 1152 | "sample", 1153 | "burrstone", 1154 | "stickup", 1155 | "bornite", 1156 | "faders", 1157 | "grappas", 1158 | "hangbirds", 1159 | "cormel", 1160 | "wishbones", 1161 | "streamers", 1162 | "ropeway", 1163 | "baldricks", 1164 | "rascasse", 1165 | "gofers", 1166 | "spareness", 1167 | "numdahs", 1168 | "brickbats", 1169 | "crossworts", 1170 | "armlet", 1171 | "patcher", 1172 | "bookrests", 1173 | "scapegrace", 1174 | "gigglers", 1175 | "delict", 1176 | "ruggings", 1177 | "fireguards", 1178 | "lintel", 1179 | "hollo", 1180 | "wurtzite", 1181 | "sonnets", 1182 | "raver", 1183 | "aphis", 1184 | "durmasts", 1185 | "giraffe", 1186 | "merchets", 1187 | "lender", 1188 | "voyeurs", 1189 | "turquoise", 1190 | "default", 1191 | "pendant", 1192 | "whitethroats", 1193 | "matzoons", 1194 | "platings", 1195 | "serfdom", 1196 | "taction", 1197 | "idol", 1198 | "wurleys", 1199 | "talers", 1200 | "niter", 1201 | "busker", 1202 | "platypus", 1203 | "kowtow", 1204 | "gestures", 1205 | "linage", 1206 | "busman", 1207 | "pookas", 1208 | "woodchucks", 1209 | "outfall", 1210 | "askers", 1211 | "gonads", 1212 | "swaddle", 1213 | "limpet", 1214 | "supine", 1215 | "searchlights", 1216 | "lymphads", 1217 | "rondeau", 1218 | "beldam", 1219 | "branching", 1220 | "catties", 1221 | "noisettes", 1222 | "caudex", 1223 | "potherb", 1224 | "dimples", 1225 | "crowboots", 1226 | "stoopes", 1227 | "caller", 1228 | "carby", 1229 | "newshawk", 1230 | "chiffon", 1231 | "caption", 1232 | "viking", 1233 | "aglet", 1234 | "carrot", 1235 | "extents", 1236 | "brasier", 1237 | "unwit", 1238 | "stayers", 1239 | "drifters", 1240 | "monists", 1241 | "razoos", 1242 | "longways", 1243 | "speedings", 1244 | "stymies", 1245 | "oxcart", 1246 | "kiwi", 1247 | "rakehell", 1248 | "tarn", 1249 | "seaweed", 1250 | "syndic", 1251 | "nightcaps", 1252 | "salvor", 1253 | "bogongs", 1254 | "conduit", 1255 | "drammock", 1256 | "blowhard", 1257 | "confab", 1258 | "sambars", 1259 | "textiles", 1260 | "torso", 1261 | "extracts", 1262 | "ampuls", 1263 | "hydros", 1264 | "pixies", 1265 | "zigzag", 1266 | "hellos", 1267 | "bruisers", 1268 | "complaints", 1269 | "tagmeme", 1270 | "bondstone", 1271 | "homie", 1272 | "memo", 1273 | "lumpers", 1274 | "doodle", 1275 | "unite", 1276 | "nasute", 1277 | "guesser", 1278 | "goliard", 1279 | "snowcap", 1280 | "westing", 1281 | "freshers", 1282 | "spaceman", 1283 | "forehock", 1284 | "bogbean", 1285 | "roubles", 1286 | "stibine", 1287 | "sisal", 1288 | "stainer", 1289 | "lungi", 1290 | "paddock", 1291 | "revoke", 1292 | "thiol", 1293 | "teacher", 1294 | "propane", 1295 | "gunflint", 1296 | "judging", 1297 | "aedile", 1298 | "sourness", 1299 | "segars", 1300 | "jeerer", 1301 | "fizzes", 1302 | "curate", 1303 | "firebugs", 1304 | "pulley", 1305 | "gristle", 1306 | "asphalts", 1307 | "venter", 1308 | "gahnite", 1309 | "floatplane", 1310 | "cravens", 1311 | "kalpis", 1312 | "dreadnought", 1313 | "pickaxe", 1314 | "felworts", 1315 | "friendships", 1316 | "dingle", 1317 | "yogurt", 1318 | "foeman", 1319 | "kago", 1320 | "hummocks", 1321 | "rappees", 1322 | "friseurs", 1323 | "shanteys", 1324 | "tincal", 1325 | "tabling", 1326 | "cavil", 1327 | "totter", 1328 | "saris", 1329 | "rundle", 1330 | "gassings", 1331 | "recoils", 1332 | "crazes", 1333 | "airline", 1334 | "disease", 1335 | "wobblers", 1336 | "rooster", 1337 | "octet", 1338 | "lasters", 1339 | "bagwig", 1340 | "halfpace", 1341 | "wisecrack", 1342 | "squirearch", 1343 | "yearners", 1344 | "dosses", 1345 | "cistvaens", 1346 | "legwork", 1347 | "forefronts", 1348 | "weirdness", 1349 | "potions", 1350 | "stiller", 1351 | "vengeance", 1352 | "squander", 1353 | "souchongs", 1354 | "indole", 1355 | "chantry", 1356 | "locker", 1357 | "classroom", 1358 | "videttes", 1359 | "chestnuts", 1360 | "nodule", 1361 | "skysail", 1362 | "pompey", 1363 | "tombstones", 1364 | "construct", 1365 | "knapweed", 1366 | "lungis", 1367 | "torques", 1368 | "shrinking", 1369 | "sopor", 1370 | "rosewood", 1371 | "crosiers", 1372 | "weirdos", 1373 | "centas", 1374 | "dusting", 1375 | "hexose", 1376 | "splicing", 1377 | "quittor", 1378 | "durras", 1379 | "phoneme", 1380 | "conoid", 1381 | "visors", 1382 | "boobooks", 1383 | "garnish", 1384 | "sterol", 1385 | "ephors", 1386 | "postiches", 1387 | "confine", 1388 | "doucepere", 1389 | "poultice", 1390 | "tarok", 1391 | "khanates", 1392 | "peltast", 1393 | "whackings", 1394 | "lictors", 1395 | "glazer", 1396 | "salep", 1397 | "curses", 1398 | "ensure", 1399 | "hernshaw", 1400 | "douter", 1401 | "panders", 1402 | "reproofs", 1403 | "crumples", 1404 | "memoir", 1405 | "potiches", 1406 | "bedsore", 1407 | "dewlap", 1408 | "sememes", 1409 | "clerkess", 1410 | "villein", 1411 | "dander", 1412 | "dimwits", 1413 | "britzkas", 1414 | "chaffinch", 1415 | "fieldpiece", 1416 | "ghazals", 1417 | "mzungu", 1418 | "vellum", 1419 | "hunkses", 1420 | "throstles", 1421 | "haunter", 1422 | "beaters", 1423 | "hireling", 1424 | "quartet", 1425 | "pirates", 1426 | "wrenches", 1427 | "terret", 1428 | "grazers", 1429 | "mohel", 1430 | "coupler", 1431 | "joinders", 1432 | "makos", 1433 | "princedoms", 1434 | "lira", 1435 | "blueness", 1436 | "segment", 1437 | "turncoat", 1438 | "mridang", 1439 | "bullocks", 1440 | "zigzags", 1441 | "calkers", 1442 | "wallets", 1443 | "garrets", 1444 | "censures", 1445 | "giro", 1446 | "info", 1447 | "amice", 1448 | "symptom", 1449 | "butane", 1450 | "meanwhile", 1451 | "softhead", 1452 | "strumpets", 1453 | "monarchs", 1454 | "blaring", 1455 | "dapple", 1456 | "buddle", 1457 | "simnels", 1458 | "rata", 1459 | "tazza", 1460 | "fluxions", 1461 | "trismus", 1462 | "washers", 1463 | "dobby", 1464 | "spinach", 1465 | "gerahs", 1466 | "carnets", 1467 | "clubbing", 1468 | "hailer", 1469 | "parlays", 1470 | "shames", 1471 | "gizmos", 1472 | "blockades", 1473 | "ugli", 1474 | "rebates", 1475 | "brangles", 1476 | "squirters", 1477 | "heckles", 1478 | "chigoe", 1479 | "sulky", 1480 | "scooter", 1481 | "fitment", 1482 | "parpens", 1483 | "swellings", 1484 | "upsweep", 1485 | "empress", 1486 | "trapans", 1487 | "filchers", 1488 | "whydah", 1489 | "mandrils", 1490 | "breakfasts", 1491 | "dirhem", 1492 | "stonechat", 1493 | "douceurs", 1494 | "benders", 1495 | "drummock", 1496 | "infares", 1497 | "carpers", 1498 | "gamblers", 1499 | "girdle", 1500 | "matzos", 1501 | "quandangs", 1502 | "ration", 1503 | "thirteen", 1504 | "arrack", 1505 | "surra", 1506 | "agings", 1507 | "layings", 1508 | "pintails", 1509 | "garments", 1510 | "floozie", 1511 | "yearling", 1512 | "quanta", 1513 | "scallop", 1514 | "buggy", 1515 | "nombril", 1516 | "doorstep", 1517 | "tearers", 1518 | "yeti", 1519 | "crammer", 1520 | "esthete", 1521 | "jackfish", 1522 | "patens", 1523 | "pasteboard", 1524 | "smoko", 1525 | "jaguar", 1526 | "primage", 1527 | "bedlam", 1528 | "gumshield", 1529 | "rugging", 1530 | "bearskins", 1531 | "models", 1532 | "diver", 1533 | "galahs", 1534 | "clutches", 1535 | "oysters", 1536 | "imposts", 1537 | "banger", 1538 | "brewing", 1539 | "lobworm", 1540 | "zircon", 1541 | "purfles", 1542 | "reply", 1543 | "dissolve", 1544 | "faker", 1545 | "podzols", 1546 | "detours", 1547 | "rejects", 1548 | "renege", 1549 | "illness", 1550 | "cropper", 1551 | "plowboy", 1552 | "rigor", 1553 | "mumblers", 1554 | "dovecote", 1555 | "fishponds", 1556 | "knotters", 1557 | "garderobe", 1558 | "solvates", 1559 | "softy", 1560 | "boranes", 1561 | "archons", 1562 | "spearworts", 1563 | "pitchfork", 1564 | "wellness", 1565 | "geoid", 1566 | "donees", 1567 | "clingstone", 1568 | "sloucher", 1569 | "smatches", 1570 | "formwork", 1571 | "gathers", 1572 | "arching", 1573 | "vassal", 1574 | "quisling", 1575 | "korma", 1576 | "sparers", 1577 | "burettes", 1578 | "seaquakes", 1579 | "leasehold", 1580 | "golfers", 1581 | "bromism", 1582 | "tattoos", 1583 | "dweller", 1584 | "carports", 1585 | "nymphets", 1586 | "capsule", 1587 | "reredos", 1588 | "thrashing", 1589 | "frostwork", 1590 | "stonecrops", 1591 | "inquests", 1592 | "blouson", 1593 | "vendors", 1594 | "rosefish", 1595 | "readers", 1596 | "trona", 1597 | "cistron", 1598 | "hitcher", 1599 | "oddment", 1600 | "tempos", 1601 | "walnuts", 1602 | "lories", 1603 | "dado", 1604 | "proband", 1605 | "groper", 1606 | "tertian", 1607 | "mermaids", 1608 | "tightwads", 1609 | "axils", 1610 | "wordings", 1611 | "ichors", 1612 | "tsotsi", 1613 | "salade", 1614 | "mislikes", 1615 | "buyers", 1616 | "jerkers", 1617 | "qadis", 1618 | "fourscores", 1619 | "puffins", 1620 | "craftwork", 1621 | "puffer", 1622 | "foretime", 1623 | "zibets", 1624 | "hawses", 1625 | "tillage", 1626 | "spadefuls", 1627 | "fishbowls", 1628 | "gangplank", 1629 | "moonstone", 1630 | "umbrettes", 1631 | "uhlans", 1632 | "punctures", 1633 | "slowworm", 1634 | "chartist", 1635 | "hatracks", 1636 | "taskwork", 1637 | "estrays", 1638 | "raisins", 1639 | "duppy", 1640 | "kakis", 1641 | "traverse", 1642 | "gimmals", 1643 | "goatherds", 1644 | "fitments", 1645 | "neatness", 1646 | "solving", 1647 | "spahi", 1648 | "frithstool", 1649 | "stingy", 1650 | "samiels", 1651 | "allure", 1652 | "conflicts", 1653 | "posit", 1654 | "away", 1655 | "weaklings", 1656 | "acmite", 1657 | "fleeces", 1658 | "courtships", 1659 | "dixies", 1660 | "elvers", 1661 | "biscuits", 1662 | "bloodline", 1663 | "wading", 1664 | "cordials", 1665 | "labels", 1666 | "fleuron", 1667 | "crying", 1668 | "scarper", 1669 | "napkins", 1670 | "tirade", 1671 | "flagman", 1672 | "forecasts", 1673 | "peignoirs", 1674 | "seating", 1675 | "monthlies", 1676 | "rectos", 1677 | "mountie", 1678 | "aegis", 1679 | "taper", 1680 | "sweeting", 1681 | "wagtails", 1682 | "urging", 1683 | "strudels", 1684 | "nightshirt", 1685 | "assents", 1686 | "trovers", 1687 | "blindfold", 1688 | "choices", 1689 | "playbill", 1690 | "threescore", 1691 | "britskas", 1692 | "fieldfare", 1693 | "cassis", 1694 | "cruses", 1695 | "lamas", 1696 | "solum", 1697 | "frazzle", 1698 | "travails", 1699 | "breakings", 1700 | "wastry", 1701 | "farcy", 1702 | "stemsons", 1703 | "timbale", 1704 | "disputes", 1705 | "kiltie", 1706 | "jabots", 1707 | "mandrills", 1708 | "pencel", 1709 | "carrots", 1710 | "dicers", 1711 | "therbligs", 1712 | "envoi", 1713 | "provosts", 1714 | "purpures", 1715 | "rouleaus", 1716 | "catfish", 1717 | "banquette", 1718 | "chauffers", 1719 | "backsaws", 1720 | "meuses", 1721 | "admins", 1722 | "bothies", 1723 | "allures", 1724 | "chording", 1725 | "ducky", 1726 | "fados", 1727 | "quittors", 1728 | "sanjak", 1729 | "hatchment", 1730 | "sima", 1731 | "mudir", 1732 | "cosine", 1733 | "quillet", 1734 | "airframe", 1735 | "trusses", 1736 | "tizzy", 1737 | "pendent", 1738 | "stodges", 1739 | "spinet", 1740 | "septum", 1741 | "swerver", 1742 | "rooty", 1743 | "choses", 1744 | "peak", 1745 | "portholes", 1746 | "synods", 1747 | "pluton", 1748 | "gnawing", 1749 | "hustler", 1750 | "vidette", 1751 | "indults", 1752 | "inwall", 1753 | "blabber", 1754 | "babble", 1755 | "marksman", 1756 | "shrinkers", 1757 | "murder", 1758 | "thwarters", 1759 | "bookplate", 1760 | "lades", 1761 | "shrewdie", 1762 | "swifter", 1763 | "palings", 1764 | "boudoir", 1765 | "prises", 1766 | "mynahs", 1767 | "climber", 1768 | "scarfskins", 1769 | "bani", 1770 | "weed", 1771 | "kelpy", 1772 | "mantels", 1773 | "haters", 1774 | "crackjaw", 1775 | "nicknack", 1776 | "raster", 1777 | "dashboard", 1778 | "venoms", 1779 | "chaplet", 1780 | "madness", 1781 | "dazzlers", 1782 | "mountains", 1783 | "hotbeds", 1784 | "strobile", 1785 | "bingies", 1786 | "learner", 1787 | "slicers", 1788 | "ranking", 1789 | "flimsy", 1790 | "dazzle", 1791 | "telfer", 1792 | "boattail", 1793 | "dryer", 1794 | "snorters", 1795 | "calottes", 1796 | "cancans", 1797 | "blacktop", 1798 | "prescript", 1799 | "clubber", 1800 | "nazirs", 1801 | "gangrels", 1802 | "pekan", 1803 | "poplins", 1804 | "acme", 1805 | "shoemakers", 1806 | "custom", 1807 | "dishpans", 1808 | "buroo", 1809 | "pipettes", 1810 | "pickle", 1811 | "coacher", 1812 | "ponceau", 1813 | "incog", 1814 | "bluefish", 1815 | "dearies", 1816 | "throttle", 1817 | "vernier", 1818 | "outhouse", 1819 | "smelters", 1820 | "mopes", 1821 | "hairspring", 1822 | "clubroom", 1823 | "bawbees", 1824 | "inkers", 1825 | "bobsleigh", 1826 | "pausers", 1827 | "boulevards", 1828 | "sixteens", 1829 | "excise", 1830 | "sonars", 1831 | "pensil", 1832 | "heptane", 1833 | "renters", 1834 | "looker", 1835 | "oater", 1836 | "stooges", 1837 | "cowherd", 1838 | "bezels", 1839 | "trannie", 1840 | "stokers", 1841 | "ragwort", 1842 | "manchet", 1843 | "pinite", 1844 | "spacewalk", 1845 | "schusses", 1846 | "shoetree", 1847 | "baffies", 1848 | "lightweights", 1849 | "pulsar", 1850 | "glandule", 1851 | "dabbers", 1852 | "limper", 1853 | "buckbeans", 1854 | "capos", 1855 | "oatmeals", 1856 | "harebells", 1857 | "raises", 1858 | "lancejack", 1859 | "earthquakes", 1860 | "spaer", 1861 | "ha'p'orths", 1862 | "maintop", 1863 | "playground", 1864 | "twelvemos", 1865 | "hatchways", 1866 | "stabile", 1867 | "assureds", 1868 | "compress", 1869 | "bedder", 1870 | "epochs", 1871 | "septettes", 1872 | "hydrates", 1873 | "juicer", 1874 | "fantast", 1875 | "ingroup", 1876 | "sutler", 1877 | "argol", 1878 | "tahsil", 1879 | "griffons", 1880 | "potfuls", 1881 | "tripods", 1882 | "footfalls", 1883 | "drudges", 1884 | "tipster", 1885 | "regals", 1886 | "docket", 1887 | "rabbins", 1888 | "stockades", 1889 | "atmans", 1890 | "flasher", 1891 | "bagful", 1892 | "sturgeons", 1893 | "griffon", 1894 | "udals", 1895 | "deli", 1896 | "revanches", 1897 | "tropic", 1898 | "trimmings", 1899 | "hipparchs", 1900 | "bibcocks", 1901 | "fundi", 1902 | "fortis", 1903 | "server", 1904 | "dunlin", 1905 | "dotage", 1906 | "lordings", 1907 | "bustard", 1908 | "catchers", 1909 | "caschroms", 1910 | "pressing", 1911 | "keepnets", 1912 | "firefly", 1913 | "epos", 1914 | "lotto", 1915 | "fires", 1916 | "venue", 1917 | "tuchuns", 1918 | "mazzard", 1919 | "settling", 1920 | "ernes", 1921 | "stabling", 1922 | "skin", 1923 | "stockade", 1924 | "humans", 1925 | "entrants", 1926 | "cleanings", 1927 | "longboat", 1928 | "starkness", 1929 | "clotting", 1930 | "chisels", 1931 | "tusser", 1932 | "kotwal", 1933 | "orchils", 1934 | "present", 1935 | "hatchments", 1936 | "dirndl", 1937 | "argots", 1938 | "muslin", 1939 | "dreamers", 1940 | "dagger", 1941 | "surety", 1942 | "hawsers", 1943 | "ungulate", 1944 | "chibouk", 1945 | "icebergs", 1946 | "shekels", 1947 | "heddle", 1948 | "sinning", 1949 | "bettor", 1950 | "cobweb", 1951 | "boatbills", 1952 | "comal", 1953 | "aircrews", 1954 | "floozies", 1955 | "cirrus", 1956 | "glowing", 1957 | "bramblings", 1958 | "kylin", 1959 | "stopper", 1960 | "founding", 1961 | "gammers", 1962 | "debate", 1963 | "whimpers", 1964 | "soreness", 1965 | "forelimb", 1966 | "magnate", 1967 | "brusqueness", 1968 | "roughcast", 1969 | "engram", 1970 | "euphroe", 1971 | "farmsteads", 1972 | "firesides", 1973 | "pauses", 1974 | "buckskin", 1975 | "outfields", 1976 | "fogey", 1977 | "bomber", 1978 | "vermouth", 1979 | "alap", 1980 | "hammocks", 1981 | "throwbacks", 1982 | "rias", 1983 | "vaulting", 1984 | "gheraos", 1985 | "civism", 1986 | "tinhorns", 1987 | "lutestring", 1988 | "catling", 1989 | "citrus", 1990 | "gallons", 1991 | "handsels", 1992 | "missis", 1993 | "kampongs", 1994 | "pratiques", 1995 | "usance", 1996 | "seamer", 1997 | "broncos", 1998 | "dagga", 1999 | "hooters", 2000 | "consent", 2001 | "showbread", 2002 | "scutcheon", 2003 | "linkwork", 2004 | "pillion", 2005 | "beguines", 2006 | "linkage", 2007 | "schnitzels", 2008 | "tailpiece", 2009 | "somethings", 2010 | "gamings", 2011 | "berets", 2012 | "scramblers", 2013 | "couching", 2014 | "jumbuck", 2015 | "elfish", 2016 | "califs", 2017 | "drawler", 2018 | "roundel", 2019 | "facet", 2020 | "pippin", 2021 | "sending", 2022 | "windle", 2023 | "venin", 2024 | "flanker", 2025 | "sweetmeat", 2026 | "percher", 2027 | "tergum", 2028 | "basswood", 2029 | "slippage", 2030 | "tadpoles", 2031 | "succor", 2032 | "cresset", 2033 | "delvers", 2034 | "scrubbing", 2035 | "boudoirs", 2036 | "handbag", 2037 | "lava", 2038 | "cozes", 2039 | "lorgnons", 2040 | "onsets", 2041 | "lapels", 2042 | "serail", 2043 | "midden", 2044 | "bracing", 2045 | "stackyards", 2046 | "slingers", 2047 | "tresses", 2048 | "cutlers", 2049 | "serge", 2050 | "bridgings", 2051 | "jurants", 2052 | "aigrets", 2053 | "surcoat", 2054 | "trinket", 2055 | "seigneurs", 2056 | "burble", 2057 | "coffret", 2058 | "sidecars", 2059 | "subsoil", 2060 | "cowpoke", 2061 | "pouter", 2062 | "shiksas", 2063 | "sackings", 2064 | "cootie", 2065 | "swishes", 2066 | "falsework", 2067 | "brickfields", 2068 | "firman", 2069 | "rouble", 2070 | "spillway", 2071 | "dicot", 2072 | "latter", 2073 | "discharge", 2074 | "clouter", 2075 | "weregild", 2076 | "townships", 2077 | "stannites", 2078 | "ravines", 2079 | "hurlies", 2080 | "dealing", 2081 | "species", 2082 | "menthol", 2083 | "foreheads", 2084 | "mumbler", 2085 | "ligand", 2086 | "railes", 2087 | "nuptials", 2088 | "airs", 2089 | "afrit", 2090 | "rankness", 2091 | "laker", 2092 | "business", 2093 | "outcome", 2094 | "sonants", 2095 | "watchers", 2096 | "doyennes", 2097 | "civies", 2098 | "dunnage", 2099 | "procaine", 2100 | "cholent", 2101 | "research", 2102 | "hassocks", 2103 | "seasick", 2104 | "brashes", 2105 | "grainings", 2106 | "homer", 2107 | "holdback", 2108 | "methane", 2109 | "troubler", 2110 | "zea", 2111 | "longings", 2112 | "hewer", 2113 | "cincture", 2114 | "mourner", 2115 | "brulyie", 2116 | "leader", 2117 | "rebbe", 2118 | "sexfoil", 2119 | "hinters", 2120 | "moonworts", 2121 | "meantime", 2122 | "regrant", 2123 | "courants", 2124 | "trishaw", 2125 | "downturn", 2126 | "nooky", 2127 | "toddies", 2128 | "vikings", 2129 | "yapon", 2130 | "chiggers", 2131 | "gibers", 2132 | "stridor", 2133 | "beeline", 2134 | "trumpets", 2135 | "savings", 2136 | "swipples", 2137 | "spaceport", 2138 | "poilu", 2139 | "oilstone", 2140 | "postern", 2141 | "shewbreads", 2142 | "bocce", 2143 | "shoguns", 2144 | "godded", 2145 | "truism", 2146 | "fenman", 2147 | "keenness", 2148 | "seraphs", 2149 | "keelage", 2150 | "bloodstain", 2151 | "okay", 2152 | "liqueurs", 2153 | "kotow", 2154 | "rego", 2155 | "rennin", 2156 | "creepers", 2157 | "presa", 2158 | "potholes", 2159 | "kraken", 2160 | "knackwursts", 2161 | "bagnio", 2162 | "birdman", 2163 | "quinsy", 2164 | "scanty", 2165 | "goshawk", 2166 | "minis", 2167 | "frostbites", 2168 | "nutmegs", 2169 | "routines", 2170 | "boozes", 2171 | "monisms", 2172 | "syndics", 2173 | "splatters", 2174 | "spouter", 2175 | "coalfield", 2176 | "backstairs", 2177 | "sealers", 2178 | "misfire", 2179 | "pactions", 2180 | "mouflons", 2181 | "baggage", 2182 | "proem", 2183 | "mustang", 2184 | "stoppings", 2185 | "insults", 2186 | "bluebeards", 2187 | "lightings", 2188 | "sparklet", 2189 | "winker", 2190 | "sainfoin", 2191 | "yodlers", 2192 | "glibness", 2193 | "roebucks", 2194 | "coiffeurs", 2195 | "flatters", 2196 | "abele", 2197 | "feline", 2198 | "lepers", 2199 | "lessees", 2200 | "doyen", 2201 | "pinna", 2202 | "waistcloth", 2203 | "dreamer", 2204 | "swelling", 2205 | "flanches", 2206 | "thumbnail", 2207 | "thetas", 2208 | "transept", 2209 | "gagsters", 2210 | "crackle", 2211 | "utu", 2212 | "brassards", 2213 | "ampere", 2214 | "jobbers", 2215 | "kirpans", 2216 | "salver", 2217 | "gunshots", 2218 | "muon", 2219 | "fiber", 2220 | "sakkos", 2221 | "firepans", 2222 | "squabble", 2223 | "samplings", 2224 | "causeys", 2225 | "flickers", 2226 | "blather", 2227 | "postiche", 2228 | "splitters", 2229 | "ediles", 2230 | "beadings", 2231 | "tillers", 2232 | "proffer", 2233 | "standish", 2234 | "scouter", 2235 | "weeknight", 2236 | "president", 2237 | "mako", 2238 | "streamlet", 2239 | "pacas", 2240 | "deutons", 2241 | "crossfire", 2242 | "gremlins", 2243 | "adepts", 2244 | "toolmaker", 2245 | "kailyards", 2246 | "gambol", 2247 | "amperes", 2248 | "cassette", 2249 | "adage", 2250 | "veeries", 2251 | "exploits", 2252 | "detent", 2253 | "wardroom", 2254 | "porthole", 2255 | "fornent", 2256 | "titlark", 2257 | "faqirs", 2258 | "gaud", 2259 | "exams", 2260 | "phonon", 2261 | "squaccos", 2262 | "trapes", 2263 | "lozenge", 2264 | "tomfool", 2265 | "gerunds", 2266 | "sandblast", 2267 | "caddies", 2268 | "treatments", 2269 | "forestage", 2270 | "tussles", 2271 | "sealants", 2272 | "homestall", 2273 | "goutweed", 2274 | "leister", 2275 | "pusher", 2276 | "crinites", 2277 | "dancings", 2278 | "laitance", 2279 | "urgers", 2280 | "osmund", 2281 | "wordsmiths", 2282 | "khamsins", 2283 | "camshaft", 2284 | "prodding", 2285 | "sasses", 2286 | "luggies", 2287 | "maxixe", 2288 | "flybooks", 2289 | "eons", 2290 | "downcome", 2291 | "urine", 2292 | "fustics", 2293 | "grafter", 2294 | "puddock", 2295 | "marcher", 2296 | "outspread", 2297 | "lodger", 2298 | "ether", 2299 | "frogmarch", 2300 | "dowry", 2301 | "burbot", 2302 | "chevies", 2303 | "jameses", 2304 | "guavas", 2305 | "torches", 2306 | "cheerers", 2307 | "feuar", 2308 | "dojos", 2309 | "offal", 2310 | "slurries", 2311 | "brushers", 2312 | "solace", 2313 | "kincob", 2314 | "chuckle", 2315 | "whittling", 2316 | "plateaus", 2317 | "toecap", 2318 | "piglet", 2319 | "millefleurs", 2320 | "rapper", 2321 | "tanker", 2322 | "slapper", 2323 | "haji", 2324 | "staggards", 2325 | "remit", 2326 | "tussle", 2327 | "hearties", 2328 | "rebecs", 2329 | "refit", 2330 | "margin", 2331 | "machan", 2332 | "manille", 2333 | "throwsters", 2334 | "guessers", 2335 | "crownwork", 2336 | "smutches", 2337 | "draughty", 2338 | "tribades", 2339 | "pontiff", 2340 | "pinoles", 2341 | "fris", 2342 | "northward", 2343 | "pentene", 2344 | "folkmoot", 2345 | "blindworms", 2346 | "speedwell", 2347 | "woodhouse", 2348 | "poolrooms", 2349 | "sunhat", 2350 | "riggers", 2351 | "shellbark", 2352 | "rerun", 2353 | "comings", 2354 | "inmates", 2355 | "stammel", 2356 | "muchness", 2357 | "amps", 2358 | "ha'p'orth", 2359 | "profounds", 2360 | "naphthol", 2361 | "thalweg", 2362 | "alien", 2363 | "yakka", 2364 | "nightie", 2365 | "cleruch", 2366 | "afro", 2367 | "bevers", 2368 | "horseback", 2369 | "showboats", 2370 | "textbooks", 2371 | "sokeman", 2372 | "landfalls", 2373 | "treasons", 2374 | "fusils", 2375 | "skiings", 2376 | "gunfires", 2377 | "airports", 2378 | "matelots", 2379 | "tinkles", 2380 | "priestcraft", 2381 | "bashaw", 2382 | "wabbler", 2383 | "eunuchs", 2384 | "leucite", 2385 | "bayou", 2386 | "forgings", 2387 | "keepsakes", 2388 | "glossers", 2389 | "toadstools", 2390 | "pushers", 2391 | "dredgers", 2392 | "fibril", 2393 | "nightshirts", 2394 | "spaniel", 2395 | "proneness", 2396 | "prostyle", 2397 | "breathers", 2398 | "finches", 2399 | "whipsaws", 2400 | "civet", 2401 | "dogfish", 2402 | "tablet", 2403 | "weakfish", 2404 | "shearer", 2405 | "stockhorn", 2406 | "shiver", 2407 | "fastback", 2408 | "spectra", 2409 | "whitebeam", 2410 | "fizzer", 2411 | "heelings", 2412 | "karri", 2413 | "oraches", 2414 | "margents", 2415 | "kibbutz", 2416 | "yamens", 2417 | "forcers", 2418 | "cornet", 2419 | "petting", 2420 | "unseens", 2421 | "driftpin", 2422 | "byssus", 2423 | "lea", 2424 | "tanna", 2425 | "torch", 2426 | "tamers", 2427 | "jukebox", 2428 | "closure", 2429 | "cullion", 2430 | "matric", 2431 | "addict", 2432 | "rounding", 2433 | "appeal", 2434 | "aplite", 2435 | "knowing", 2436 | "topsails", 2437 | "sateen", 2438 | "gurnard", 2439 | "woolshed", 2440 | "quarters", 2441 | "vulcan", 2442 | "invite", 2443 | "brookweed", 2444 | "jupon", 2445 | "mixtures", 2446 | "schoolie", 2447 | "telpher", 2448 | "camping", 2449 | "basements", 2450 | "tonemes", 2451 | "peahen", 2452 | "paternosters", 2453 | "kami", 2454 | "ochres", 2455 | "strawboards", 2456 | "pretext", 2457 | "orbits", 2458 | "upstate", 2459 | "glycine", 2460 | "ectype", 2461 | "ferrules", 2462 | "scarecrows", 2463 | "forefront", 2464 | "patrick", 2465 | "helmets", 2466 | "krummhorns", 2467 | "freer", 2468 | "dealer", 2469 | "cockades", 2470 | "ferrates", 2471 | "rowboats", 2472 | "statist", 2473 | "segos", 2474 | "cesser", 2475 | "plainsong", 2476 | "picot", 2477 | "cosmists", 2478 | "lobule", 2479 | "volosts", 2480 | "dwellers", 2481 | "mantraps", 2482 | "woodlands", 2483 | "hareems", 2484 | "preemie", 2485 | "geishas", 2486 | "bowman", 2487 | "hairline", 2488 | "chancre", 2489 | "joinder", 2490 | "matzah", 2491 | "philtre", 2492 | "jube", 2493 | "prologs", 2494 | "lynchings", 2495 | "hullos", 2496 | "chancels", 2497 | "fairing", 2498 | "bradawl", 2499 | "desmans", 2500 | "spinner", 2501 | "placements", 2502 | "warehouse", 2503 | "scorpers", 2504 | "dismays", 2505 | "tores", 2506 | "climate", 2507 | "scuffles", 2508 | "psalmist", 2509 | "forewing", 2510 | "pismires", 2511 | "railroad", 2512 | "yokels", 2513 | "yashmak", 2514 | "woolpack", 2515 | "bohunks", 2516 | "wrestles", 2517 | "sermons", 2518 | "yodel", 2519 | "sayyids", 2520 | "xylyl", 2521 | "cabman", 2522 | "jubbahs", 2523 | "slotters", 2524 | "sculptress", 2525 | "punnings", 2526 | "urnings", 2527 | "bosuns", 2528 | "wanter", 2529 | "snipes", 2530 | "shadings", 2531 | "goldcrests", 2532 | "foulard", 2533 | "steroid", 2534 | "glassman", 2535 | "moujiks", 2536 | "lumber", 2537 | "grogram", 2538 | "swallet", 2539 | "naphthas", 2540 | "snowflake", 2541 | "mailsack", 2542 | "cheesewood", 2543 | "shover", 2544 | "caciques", 2545 | "pontoons", 2546 | "peafowl", 2547 | "quillings", 2548 | "phosphide", 2549 | "punkah", 2550 | "noyau", 2551 | "noyades", 2552 | "chives", 2553 | "bwana", 2554 | "slipware", 2555 | "pinchers", 2556 | "lipoids", 2557 | "batters", 2558 | "cesspits", 2559 | "kestrel", 2560 | "juju", 2561 | "backside", 2562 | "fuller", 2563 | "greatcoat", 2564 | "pistole", 2565 | "hazers", 2566 | "sjambok", 2567 | "weeper", 2568 | "pledger", 2569 | "nutlet", 2570 | "langoustes", 2571 | "coatracks", 2572 | "tuis", 2573 | "mating", 2574 | "piolets", 2575 | "nepit", 2576 | "ploughman", 2577 | "eighties", 2578 | "couters", 2579 | "lyssa", 2580 | "pursuit", 2581 | "longueur", 2582 | "striping", 2583 | "footbridge", 2584 | "salvors", 2585 | "cookshops", 2586 | "larva", 2587 | "purslanes", 2588 | "matzoh", 2589 | "mridangs", 2590 | "murrains", 2591 | "chapbooks", 2592 | "owl", 2593 | "evzone", 2594 | "heartbreaks", 2595 | "thickset", 2596 | "silvans", 2597 | "pizzas", 2598 | "headsquares", 2599 | "earmuffs", 2600 | "armful", 2601 | "cankers", 2602 | "namesakes", 2603 | "welcome", 2604 | "gnamma", 2605 | "rumour", 2606 | "stingo", 2607 | "waggle", 2608 | "whidah", 2609 | "pluses", 2610 | "nightshade", 2611 | "crumbles", 2612 | "pipa", 2613 | "howler", 2614 | "bogy", 2615 | "floozy", 2616 | "tonguing", 2617 | "icker", 2618 | "copal", 2619 | "pollsters", 2620 | "lobworms", 2621 | "brainpan", 2622 | "judges", 2623 | "proceeds", 2624 | "rentier", 2625 | "daring", 2626 | "victims", 2627 | "kazoos", 2628 | "loser", 2629 | "breastplate", 2630 | "barstools", 2631 | "forklift", 2632 | "epoch", 2633 | "sundae", 2634 | "retails", 2635 | "bleater", 2636 | "jotunns", 2637 | "symphile", 2638 | "strokings", 2639 | "corncrib", 2640 | "armets", 2641 | "roughers", 2642 | "para", 2643 | "coiner", 2644 | "hexes", 2645 | "swaddles", 2646 | "sigils", 2647 | "doorbell", 2648 | "simar", 2649 | "rapines", 2650 | "pyxes", 2651 | "barbule", 2652 | "monger", 2653 | "pleadings", 2654 | "prexy", 2655 | "clothier", 2656 | "jesters", 2657 | "missals", 2658 | "haler", 2659 | "flatlet", 2660 | "moorfowls", 2661 | "reclaims", 2662 | "salpas", 2663 | "veinlet", 2664 | "kowhais", 2665 | "felloes", 2666 | "biffin", 2667 | "reccos", 2668 | "kaiak", 2669 | "lottos", 2670 | "reject", 2671 | "flashlights", 2672 | "manila", 2673 | "twinkler", 2674 | "swineherd", 2675 | "thigger", 2676 | "debris", 2677 | "areg", 2678 | "dockers", 2679 | "sobbing", 2680 | "zaddik", 2681 | "lasket", 2682 | "templet", 2683 | "peeing", 2684 | "archon", 2685 | "quantong", 2686 | "engrams", 2687 | "lota", 2688 | "sereins", 2689 | "halyards", 2690 | "scantness", 2691 | "estreats", 2692 | "moses", 2693 | "paring", 2694 | "zonule", 2695 | "septime", 2696 | "sheepfold", 2697 | "courses", 2698 | "jillets", 2699 | "seaboard", 2700 | "danseurs", 2701 | "hakims", 2702 | "southpaws", 2703 | "knaidel", 2704 | "scamper", 2705 | "crawfish", 2706 | "cellar", 2707 | "paynim", 2708 | "fullbacks", 2709 | "gibbsite", 2710 | "baggies", 2711 | "moron", 2712 | "doornail", 2713 | "footboy", 2714 | "grubbers", 2715 | "astroids", 2716 | "canvas", 2717 | "shortbreads", 2718 | "tuba", 2719 | "tentage", 2720 | "movers", 2721 | "wester", 2722 | "gourdes", 2723 | "privates", 2724 | "woolfell", 2725 | "breadlines", 2726 | "yuletides", 2727 | "tuggers", 2728 | "hajji", 2729 | "seeders", 2730 | "shea", 2731 | "puddlers", 2732 | "brushwoods", 2733 | "daces", 2734 | "prelim", 2735 | "durbar", 2736 | "fireman", 2737 | "second", 2738 | "subplot", 2739 | "grassland", 2740 | "listings", 2741 | "scalper", 2742 | "gabfest", 2743 | "vesting", 2744 | "bowsprit", 2745 | "givers", 2746 | "lucre", 2747 | "pharos", 2748 | "germen", 2749 | "burrstones", 2750 | "gemot", 2751 | "genu", 2752 | "furans", 2753 | "titters", 2754 | "genet", 2755 | "bowser", 2756 | "bleacher", 2757 | "theism", 2758 | "tumors", 2759 | "goggler", 2760 | "fowler", 2761 | "batter", 2762 | "lacebarks", 2763 | "jurats", 2764 | "fumble", 2765 | "queries", 2766 | "pikeman", 2767 | "discard", 2768 | "rulings", 2769 | "essence", 2770 | "scaffolds", 2771 | "dancing", 2772 | "middays", 2773 | "carats", 2774 | "bargee", 2775 | "slalom", 2776 | "cookout", 2777 | "groupie", 2778 | "pilus", 2779 | "cantos", 2780 | "felines", 2781 | "tapas", 2782 | "boneyards", 2783 | "cistrons", 2784 | "scurry", 2785 | "hackles", 2786 | "seer", 2787 | "morass", 2788 | "dentil", 2789 | "flashlight", 2790 | "tundras", 2791 | "ersatz", 2792 | "markkas", 2793 | "exon", 2794 | "squacco", 2795 | "chronon", 2796 | "halite", 2797 | "cecum", 2798 | "voidance", 2799 | "sizzlers", 2800 | "epacts", 2801 | "azine", 2802 | "raja", 2803 | "skyways", 2804 | "tumbril", 2805 | "unthatch", 2806 | "baccies", 2807 | "mending", 2808 | "naphthene", 2809 | "triune", 2810 | "rasure", 2811 | "pavane", 2812 | "shingler", 2813 | "trembling", 2814 | "hirers", 2815 | "shakers", 2816 | "phloxes", 2817 | "fennecs", 2818 | "knotter", 2819 | "dados", 2820 | "bobstay", 2821 | "vulvas", 2822 | "stickwork", 2823 | "theists", 2824 | "telly", 2825 | "tugrik", 2826 | "linhay", 2827 | "derricks", 2828 | "scudo", 2829 | "ranges", 2830 | "goondas", 2831 | "sarcasms", 2832 | "whinges", 2833 | "droghers", 2834 | "hoofbeats", 2835 | "vendor", 2836 | "sillers", 2837 | "broadsword", 2838 | "knothole", 2839 | "paction", 2840 | "buffo", 2841 | "wrinkle", 2842 | "blazons", 2843 | "piglets", 2844 | "nappa", 2845 | "coaler", 2846 | "monos", 2847 | "roundlet", 2848 | "pitchman", 2849 | "moonbeams", 2850 | "sarcasm", 2851 | "flautists", 2852 | "lurdan", 2853 | "graspers", 2854 | "backstop", 2855 | "vileness", 2856 | "springalds", 2857 | "menhirs", 2858 | "uni", 2859 | "hobnail", 2860 | "coupees", 2861 | "pailfuls", 2862 | "flapping", 2863 | "scumble", 2864 | "tabours", 2865 | "pulsing", 2866 | "bailiffs", 2867 | "blacklists", 2868 | "whitebaits", 2869 | "nilgais", 2870 | "zombie", 2871 | "clinkstone", 2872 | "braising", 2873 | "curtness", 2874 | "gurgle", 2875 | "brander", 2876 | "gansey", 2877 | "hallan", 2878 | "almah", 2879 | "tortoise", 2880 | "canters", 2881 | "tussores", 2882 | "backsides", 2883 | "drillers", 2884 | "mutters", 2885 | "priestess", 2886 | "squiredom", 2887 | "guru", 2888 | "missile", 2889 | "caber", 2890 | "bawler", 2891 | "sindons", 2892 | "casebooks", 2893 | "corymb", 2894 | "ingrates", 2895 | "outspan", 2896 | "screeching", 2897 | "poler", 2898 | "rhizoid", 2899 | "stogey", 2900 | "compline", 2901 | "cackles", 2902 | "foundings", 2903 | "bubbies", 2904 | "troika", 2905 | "tickles", 2906 | "tabard", 2907 | "toting", 2908 | "pecans", 2909 | "offprints", 2910 | "scrounger", 2911 | "toxoids", 2912 | "compute", 2913 | "cresol", 2914 | "redeal", 2915 | "rater", 2916 | "mammal", 2917 | "tinny", 2918 | "bootstrap", 2919 | "titian", 2920 | "daybreaks", 2921 | "volplane", 2922 | "hurleys", 2923 | "bangle", 2924 | "squeezer", 2925 | "simoon", 2926 | "packer", 2927 | "gobbler", 2928 | "headrace", 2929 | "complots", 2930 | "pointing", 2931 | "saffrons", 2932 | "gushers", 2933 | "missteps", 2934 | "ganger", 2935 | "cricoids", 2936 | "woggle", 2937 | "floggings", 2938 | "platters", 2939 | "briar", 2940 | "mahouts", 2941 | "horme", 2942 | "ponce", 2943 | "conclave", 2944 | "urus", 2945 | "shikar", 2946 | "crawlings", 2947 | "gullies", 2948 | "midships", 2949 | "pepsins", 2950 | "warner", 2951 | "tribute", 2952 | "hoggets", 2953 | "boarhound", 2954 | "firedamp", 2955 | "relics", 2956 | "polyp", 2957 | "gadoid", 2958 | "phosphite", 2959 | "talkfests", 2960 | "saplings", 2961 | "causeways", 2962 | "goatherd", 2963 | "fuses", 2964 | "scrapes", 2965 | "snivel", 2966 | "swifties", 2967 | "hatband", 2968 | "product", 2969 | "manors", 2970 | "colters", 2971 | "creeper", 2972 | "knappers", 2973 | "falters", 2974 | "cocksfoot", 2975 | "bandogs", 2976 | "wigwags", 2977 | "playboys", 2978 | "rumple", 2979 | "sphincters", 2980 | "stimy", 2981 | "testons", 2982 | "wristlets", 2983 | "thymol", 2984 | "shorelines", 2985 | "pieces", 2986 | "buckthorns", 2987 | "cassia", 2988 | "touters", 2989 | "prevue", 2990 | "caring", 2991 | "pother", 2992 | "gharries", 2993 | "unau", 2994 | "daughters", 2995 | "nektons", 2996 | "plummet", 2997 | "discourse", 2998 | "fusee", 2999 | "birdcalls", 3000 | "era", 3001 | "crosstown", 3002 | "gorcocks", 3003 | "playlet", 3004 | "wenchers", 3005 | "graders", 3006 | "churchyard", 3007 | "gemots", 3008 | "mono", 3009 | "dogcart", 3010 | "broughams", 3011 | "yeanlings", 3012 | "shirtwaist", 3013 | "rumbas", 3014 | "bister", 3015 | "midis", 3016 | "dachas", 3017 | "sunstones", 3018 | "horsewhip", 3019 | "seemer", 3020 | "arrear", 3021 | "madame", 3022 | "bondmaids", 3023 | "vintner", 3024 | "muzzler", 3025 | "nocturn", 3026 | "pardner", 3027 | "storax", 3028 | "tressure", 3029 | "cowslip", 3030 | "premiere", 3031 | "sifter", 3032 | "eddo", 3033 | "blackjacks", 3034 | "showing", 3035 | "todays", 3036 | "scrapie", 3037 | "mention", 3038 | "busby", 3039 | "shoogle", 3040 | "cuppa", 3041 | "redoubt", 3042 | "hyrax", 3043 | "racecourse", 3044 | "technique", 3045 | "corbans", 3046 | "nighties", 3047 | "kali", 3048 | "kindred", 3049 | "fennels", 3050 | "dousers", 3051 | "betrothed", 3052 | "dibbles", 3053 | "ludos", 3054 | "pentarchs", 3055 | "losels", 3056 | "demons", 3057 | "menus", 3058 | "brio", 3059 | "fibros", 3060 | "vagrants", 3061 | "archlute", 3062 | "hazer", 3063 | "oilcan", 3064 | "gemmule", 3065 | "haslet", 3066 | "looters", 3067 | "tarns", 3068 | "surfie", 3069 | "nankeens", 3070 | "trundlers", 3071 | "friezes", 3072 | "firework", 3073 | "yodler", 3074 | "brusher", 3075 | "mesons", 3076 | "fuzee", 3077 | "cubeb", 3078 | "yearnings", 3079 | "ricin", 3080 | "grievers", 3081 | "prickle", 3082 | "vitrines", 3083 | "crossness", 3084 | "hoarder", 3085 | "sideswipes", 3086 | "mufflers", 3087 | "ranchman", 3088 | "sheldrakes", 3089 | "trocars", 3090 | "malars", 3091 | "classmates", 3092 | "mashes", 3093 | "patterns", 3094 | "roulette", 3095 | "wreckage", 3096 | "stitcher", 3097 | "greaser", 3098 | "daman", 3099 | "absinth", 3100 | "courser", 3101 | "plutons", 3102 | "blackbutt", 3103 | "twopence", 3104 | "forceps", 3105 | "pickax", 3106 | "quandongs", 3107 | "keyhole", 3108 | "saddler", 3109 | "canons", 3110 | "masker", 3111 | "handcarts", 3112 | "session", 3113 | "chapstick", 3114 | "aments", 3115 | "usage", 3116 | "lotted", 3117 | "pharmacist", 3118 | "schilling", 3119 | "artels", 3120 | "striper", 3121 | "nakers", 3122 | "query", 3123 | "oblong", 3124 | "pugging", 3125 | "mahout", 3126 | "campgrounds", 3127 | "scabies", 3128 | "ridgepoles", 3129 | "touses", 3130 | "shoogles", 3131 | "pomfrets", 3132 | "gurnards", 3133 | "kraters", 3134 | "outcaste", 3135 | "linin", 3136 | "broachers", 3137 | "spignel", 3138 | "wiper", 3139 | "booklets", 3140 | "rostra", 3141 | "diseuse", 3142 | "hackler", 3143 | "volplanes", 3144 | "liers", 3145 | "footstalks", 3146 | "shindigs", 3147 | "strivers", 3148 | "holler", 3149 | "reheats", 3150 | "coupon", 3151 | "knower", 3152 | "furloughs", 3153 | "forefeels", 3154 | "viewing", 3155 | "passel", 3156 | "tattles", 3157 | "textile", 3158 | "chincough", 3159 | "trouncings", 3160 | "frontlets", 3161 | "liege", 3162 | "sidelight", 3163 | "dicasts", 3164 | "sabra", 3165 | "shinbone", 3166 | "benzyl", 3167 | "borecoles", 3168 | "loadstone", 3169 | "hates", 3170 | "mayoress", 3171 | "crabber", 3172 | "teeter", 3173 | "leadsman", 3174 | "jurat", 3175 | "pratfall", 3176 | "eyas", 3177 | "marquise", 3178 | "sorees", 3179 | "ana", 3180 | "endings", 3181 | "bevvies", 3182 | "amines", 3183 | "lysine", 3184 | "vicomtes", 3185 | "eatings", 3186 | "swayers", 3187 | "lama", 3188 | "cranesbills", 3189 | "midday", 3190 | "switcher", 3191 | "baby", 3192 | "being", 3193 | "licker", 3194 | "oeuvres", 3195 | "wencher", 3196 | "bolters", 3197 | "drugging", 3198 | "quarrians", 3199 | "whipstall", 3200 | "jestings", 3201 | "sallets", 3202 | "whatnot", 3203 | "tippet", 3204 | "skiplanes", 3205 | "halliard", 3206 | "pinners", 3207 | "kiddies", 3208 | "misprint", 3209 | "covin", 3210 | "flambeau", 3211 | "caoutchouc", 3212 | "proleg", 3213 | "slithers", 3214 | "tuchun", 3215 | "runlet", 3216 | "pastille", 3217 | "phoney", 3218 | "bodgie", 3219 | "oxters", 3220 | "betrotheds", 3221 | "macers", 3222 | "stablings", 3223 | "casemate", 3224 | "chakras", 3225 | "shamble", 3226 | "carrells", 3227 | "refer", 3228 | "bumbles", 3229 | "biplanes", 3230 | "keeners", 3231 | "nosebags", 3232 | "aba", 3233 | "drainboard", 3234 | "bugbear", 3235 | "sarcode", 3236 | "kitling", 3237 | "fahlbands", 3238 | "schoolrooms", 3239 | "sprinkler", 3240 | "sweetings", 3241 | "jillion", 3242 | "whitecaps", 3243 | "chin", 3244 | "diktats", 3245 | "crannog", 3246 | "lustre", 3247 | "hijinks", 3248 | "harims", 3249 | "leaguer", 3250 | "schooner", 3251 | "firkins", 3252 | "panthers", 3253 | "bluegrass", 3254 | "permit", 3255 | "migraines", 3256 | "chicane", 3257 | "princedom", 3258 | "pretty", 3259 | "xylose", 3260 | "kwacha", 3261 | "schlemiels", 3262 | "goshawks", 3263 | "hedger", 3264 | "grumbler", 3265 | "wording", 3266 | "fantigue", 3267 | "dingbat", 3268 | "shipwreck", 3269 | "ensures", 3270 | "nautches", 3271 | "yuccas", 3272 | "assays", 3273 | "didrachm", 3274 | "campaigns", 3275 | "fibers", 3276 | "titer", 3277 | "testis", 3278 | "elite", 3279 | "wantons", 3280 | "forepart", 3281 | "sawpit", 3282 | "plushness", 3283 | "piercers", 3284 | "manhunts", 3285 | "grackle", 3286 | "parings", 3287 | "brilliant", 3288 | "wordbook", 3289 | "hazing", 3290 | "kinas", 3291 | "stylists", 3292 | "foozles", 3293 | "disgust", 3294 | "rajas", 3295 | "bookstall", 3296 | "stinkstone", 3297 | "signors", 3298 | "peans", 3299 | "hurler", 3300 | "sporules", 3301 | "clubroot", 3302 | "bookstands", 3303 | "placement", 3304 | "tannates", 3305 | "paupers", 3306 | "cursive", 3307 | "flavor", 3308 | "peacetime", 3309 | "debut", 3310 | "anas", 3311 | "garotte", 3312 | "tinder", 3313 | "feldsher", 3314 | "rompers", 3315 | "mooters", 3316 | "seesaw", 3317 | "ensign", 3318 | "haybox", 3319 | "saunter", 3320 | "buzzard", 3321 | "trephine", 3322 | "civvies", 3323 | "midpoints", 3324 | "baler", 3325 | "tocsins", 3326 | "nudgers", 3327 | "hotchpot", 3328 | "claimant", 3329 | "nozzles", 3330 | "opus", 3331 | "nestlings", 3332 | "purport", 3333 | "tunesmiths", 3334 | "sickies", 3335 | "tackle", 3336 | "skylight", 3337 | "wirings", 3338 | "fartlek", 3339 | "cakewalk", 3340 | "nervures", 3341 | "plates", 3342 | "alephs", 3343 | "achkan", 3344 | "sigla", 3345 | "bagwash", 3346 | "puggree", 3347 | "hundredth", 3348 | "responds", 3349 | "bootie", 3350 | "racoon", 3351 | "counter", 3352 | "crayfish", 3353 | "redwings", 3354 | "bridegrooms", 3355 | "byways", 3356 | "gyrons", 3357 | "bantengs", 3358 | "nightlife", 3359 | "simoons", 3360 | "nasutes", 3361 | "ganoid", 3362 | "sacker", 3363 | "tunics", 3364 | "rapport", 3365 | "blondes", 3366 | "killdee", 3367 | "snashes", 3368 | "duchies", 3369 | "formates", 3370 | "downfall", 3371 | "gladness", 3372 | "catchfly", 3373 | "woodman", 3374 | "pontiffs", 3375 | "cinquains", 3376 | "laddies", 3377 | "milieu", 3378 | "sixteen", 3379 | "famille", 3380 | "reglets", 3381 | "aged", 3382 | "eyots", 3383 | "scrawlers", 3384 | "headstands", 3385 | "sandstone", 3386 | "knighthoods", 3387 | "fireboats", 3388 | "pulpits", 3389 | "ecu", 3390 | "muskies", 3391 | "brokers", 3392 | "rumbler", 3393 | "birthmark", 3394 | "southing", 3395 | "bailies", 3396 | "collard", 3397 | "snicket", 3398 | "goffers", 3399 | "dieldrin", 3400 | "rollmop", 3401 | "telfers", 3402 | "uncus", 3403 | "lites", 3404 | "pinfold", 3405 | "rheboks", 3406 | "tractates", 3407 | "satchels", 3408 | "mickies", 3409 | "mucro", 3410 | "freckle", 3411 | "rabbler", 3412 | "fencings", 3413 | "buying", 3414 | "piton", 3415 | "dienes", 3416 | "kidding", 3417 | "fetas", 3418 | "chufas", 3419 | "bidding", 3420 | "crackdowns", 3421 | "backsword", 3422 | "descant", 3423 | "newsboy", 3424 | "zany", 3425 | "cavy", 3426 | "dairy", 3427 | "kobold", 3428 | "greening", 3429 | "lurchers", 3430 | "dovetail", 3431 | "loggings", 3432 | "vanguards", 3433 | "flippant", 3434 | "scalpels", 3435 | "cousins", 3436 | "tholus", 3437 | "spender", 3438 | "crickets", 3439 | "placet", 3440 | "spheroids", 3441 | "entrails", 3442 | "laddie", 3443 | "scourgers", 3444 | "behalf", 3445 | "glia", 3446 | "malting", 3447 | "sippers", 3448 | "clamber", 3449 | "cornstone", 3450 | "owlets", 3451 | "chenille", 3452 | "checkpoint", 3453 | "fanner", 3454 | "starboards", 3455 | "redoubts", 3456 | "greensand", 3457 | "wrestlings", 3458 | "nosings", 3459 | "shyers", 3460 | "bucker", 3461 | "ouzels", 3462 | "udal", 3463 | "shysters", 3464 | "braveness", 3465 | "drilling", 3466 | "queller", 3467 | "hacek", 3468 | "horntail", 3469 | "grinners", 3470 | "matchwood", 3471 | "trypsin", 3472 | "eaglet", 3473 | "fluxion", 3474 | "whimsey", 3475 | "gollies", 3476 | "pixes", 3477 | "biddings", 3478 | "alcoves", 3479 | "prunelle", 3480 | "rapine", 3481 | "furlongs", 3482 | "brevier", 3483 | "eyelid", 3484 | "mangos", 3485 | "gassing", 3486 | "nurtures", 3487 | "hogshead", 3488 | "landslips", 3489 | "holloas", 3490 | "loathings", 3491 | "swillers", 3492 | "mores", 3493 | "harim", 3494 | "divi", 3495 | "patins", 3496 | "almug", 3497 | "many", 3498 | "kinsfolk", 3499 | "subfuscs", 3500 | "gateway", 3501 | "coccid", 3502 | "bazars", 3503 | "chromo", 3504 | "warpers", 3505 | "bailors", 3506 | "bustler", 3507 | "kindness", 3508 | "mileage", 3509 | "mildness", 3510 | "naga", 3511 | "garefowls", 3512 | "samshu", 3513 | "pipit", 3514 | "dowries", 3515 | "turnkeys", 3516 | "lunges", 3517 | "psephite", 3518 | "jinni", 3519 | "ascents", 3520 | "hoofer", 3521 | "spanners", 3522 | "lauders", 3523 | "hoistway", 3524 | "grantors", 3525 | "knighthood", 3526 | "ledges", 3527 | "feoffer", 3528 | "pinkie", 3529 | "pouters", 3530 | "stonefish", 3531 | "cockle", 3532 | "buckshot", 3533 | "brownout", 3534 | "fogy", 3535 | "gumdrop", 3536 | "shicker", 3537 | "baubles", 3538 | "lather", 3539 | "grower", 3540 | "mackles", 3541 | "teazle", 3542 | "slogger", 3543 | "duads", 3544 | "emblem", 3545 | "guildhall", 3546 | "umbels", 3547 | "ratlins", 3548 | "guddle", 3549 | "hallmarks", 3550 | "handshakes", 3551 | "sublease", 3552 | "sinkage", 3553 | "hangdog", 3554 | "quellers", 3555 | "jazzes", 3556 | "atoll", 3557 | "casas", 3558 | "hassock", 3559 | "gobbet", 3560 | "encore", 3561 | "raploch", 3562 | "mises", 3563 | "satrap", 3564 | "pinny", 3565 | "agnates", 3566 | "brassiere", 3567 | "reproach", 3568 | "outrush", 3569 | "sousing", 3570 | "quintet", 3571 | "totes", 3572 | "jetting", 3573 | "bringer", 3574 | "chessels", 3575 | "singlet", 3576 | "stifles", 3577 | "shadoof", 3578 | "gallops", 3579 | "burlaps", 3580 | "legume", 3581 | "escarps", 3582 | "backwoods", 3583 | "vertex", 3584 | "worsted", 3585 | "auxin", 3586 | "splendors", 3587 | "cousin", 3588 | "snugness", 3589 | "kindlers", 3590 | "fenders", 3591 | "chestnut", 3592 | "vacherins", 3593 | "lawing", 3594 | "beeswax", 3595 | "bookstalls", 3596 | "fratry", 3597 | "phyllite", 3598 | "checkmate", 3599 | "parkas", 3600 | "captain", 3601 | "sitar", 3602 | "rethinks", 3603 | "shagreens", 3604 | "stinters", 3605 | "smatters", 3606 | "stemmer", 3607 | "sparoids", 3608 | "cheddite", 3609 | "kavas", 3610 | "shofar", 3611 | "leanness", 3612 | "meathead", 3613 | "citer", 3614 | "drizzles", 3615 | "umbel", 3616 | "trainings", 3617 | "pretties", 3618 | "lockouts", 3619 | "cadre", 3620 | "tourney", 3621 | "grenades", 3622 | "noondays", 3623 | "sheepskins", 3624 | "plywood", 3625 | "chocos", 3626 | "gayal", 3627 | "riflers", 3628 | "crispbreads", 3629 | "tomboys", 3630 | "pauldron", 3631 | "pipage", 3632 | "probers", 3633 | "stotters", 3634 | "numen", 3635 | "hunchback", 3636 | "juicers", 3637 | "saiga", 3638 | "headwinds", 3639 | "shrinker", 3640 | "grouters", 3641 | "filasse", 3642 | "earthling", 3643 | "briquette", 3644 | "daftness", 3645 | "tassels", 3646 | "imaum", 3647 | "nullahs", 3648 | "banker", 3649 | "demon", 3650 | "kylie", 3651 | "dastards", 3652 | "convicts", 3653 | "outshoots", 3654 | "freeing", 3655 | "lawings", 3656 | "ditcher", 3657 | "yens", 3658 | "singers", 3659 | "pageants", 3660 | "workers", 3661 | "logos", 3662 | "jostle", 3663 | "sirventes", 3664 | "juntos", 3665 | "bondsman", 3666 | "mantlets", 3667 | "mainframes", 3668 | "cummer", 3669 | "cristas", 3670 | "triers", 3671 | "schemers", 3672 | "cudgels", 3673 | "trigraphs", 3674 | "hornfels", 3675 | "wholism", 3676 | "mastic", 3677 | "surfers", 3678 | "frolic", 3679 | "livres", 3680 | "ribalds", 3681 | "axle", 3682 | "towropes", 3683 | "valance", 3684 | "notum", 3685 | "pronghorns", 3686 | "matin", 3687 | "muddy", 3688 | "natheless", 3689 | "bulrush", 3690 | "fetcher", 3691 | "portent", 3692 | "protest", 3693 | "clutter", 3694 | "pastors", 3695 | "grabbler", 3696 | "nosing", 3697 | "phoneys", 3698 | "tiling", 3699 | "headspring", 3700 | "quillai", 3701 | "grisons", 3702 | "quines", 3703 | "planchette", 3704 | "ogams", 3705 | "ictus", 3706 | "landside", 3707 | "mullions", 3708 | "plaudits", 3709 | "liking", 3710 | "surges", 3711 | "playback", 3712 | "santir", 3713 | "pressie", 3714 | "upthrust", 3715 | "dimple", 3716 | "warring", 3717 | "grabens", 3718 | "bomb", 3719 | "glasses", 3720 | "boyar", 3721 | "squiffers", 3722 | "bellpull", 3723 | "starfish", 3724 | "seltzer", 3725 | "plastids", 3726 | "fibster", 3727 | "gadroon", 3728 | "suitors", 3729 | "gauntness", 3730 | "druggists", 3731 | "spates", 3732 | "pacers", 3733 | "ducking", 3734 | "octrois", 3735 | "toucher", 3736 | "cardoon", 3737 | "sondage", 3738 | "teapoy", 3739 | "scrubber", 3740 | "sweepers", 3741 | "tollers", 3742 | "fireweeds", 3743 | "sponges", 3744 | "fifty", 3745 | "wolfers", 3746 | "slighter", 3747 | "tunes", 3748 | "sennit", 3749 | "loess", 3750 | "pigswills", 3751 | "fossa", 3752 | "oblates", 3753 | "bedsock", 3754 | "slaughter", 3755 | "nescience", 3756 | "angling", 3757 | "hangnail", 3758 | "stoplights", 3759 | "phratry", 3760 | "frisker", 3761 | "blacklegs", 3762 | "caverns", 3763 | "torans", 3764 | "compacts", 3765 | "deltoid", 3766 | "cooey", 3767 | "dockland", 3768 | "rootstock", 3769 | "rollbar", 3770 | "towline", 3771 | "baboo", 3772 | "davits", 3773 | "clonus", 3774 | "tremblers", 3775 | "nickers", 3776 | "widdy", 3777 | "payoff", 3778 | "moistness", 3779 | "bombasts", 3780 | "rearmouse", 3781 | "yardman", 3782 | "cupid", 3783 | "sarcenets", 3784 | "azides", 3785 | "bogle", 3786 | "midnoons", 3787 | "tannas", 3788 | "inroads", 3789 | "wriggle", 3790 | "hurlers", 3791 | "gladdons", 3792 | "hectares", 3793 | "multure", 3794 | "bowhead", 3795 | "feaster", 3796 | "mamzer", 3797 | "cisterns", 3798 | "lessor", 3799 | "sheepwalk", 3800 | "bloomers", 3801 | "villus", 3802 | "chippies", 3803 | "construe", 3804 | "chuckhole", 3805 | "laggings", 3806 | "tantrum", 3807 | "reffos", 3808 | "daystar", 3809 | "manteaus", 3810 | "grandees", 3811 | "sanguines", 3812 | "deanship", 3813 | "delaine", 3814 | "wrongers", 3815 | "cusses", 3816 | "ensigns", 3817 | "scanner", 3818 | "squinters", 3819 | "magpie", 3820 | "macules", 3821 | "eras", 3822 | "botels", 3823 | "lysis", 3824 | "logwood", 3825 | "lifetime", 3826 | "dikes", 3827 | "trillion", 3828 | "cottier", 3829 | "spital", 3830 | "pitchblende", 3831 | "rowlocks", 3832 | "postboy", 3833 | "mouflon", 3834 | "potheen", 3835 | "borough", 3836 | "toiles", 3837 | "hemline", 3838 | "grosgrains", 3839 | "narwhal", 3840 | "fifteenth", 3841 | "headphone", 3842 | "traitor", 3843 | "squama", 3844 | "offside", 3845 | "snippets", 3846 | "expert", 3847 | "duckbill", 3848 | "doab", 3849 | "segno", 3850 | "excerpts", 3851 | "frazzles", 3852 | "lyings", 3853 | "airbrush", 3854 | "capons", 3855 | "foreman", 3856 | "plainsman", 3857 | "greeters", 3858 | "barbels", 3859 | "biters", 3860 | "phloems", 3861 | "guitar", 3862 | "telson", 3863 | "britches", 3864 | "maidhood", 3865 | "gyron", 3866 | "trigness", 3867 | "floccus", 3868 | "bedroom", 3869 | "sternsons", 3870 | "cording", 3871 | "foreshocks", 3872 | "anting", 3873 | "biggie", 3874 | "wifehood", 3875 | "chances", 3876 | "wireman", 3877 | "limen", 3878 | "humpy", 3879 | "subfloors", 3880 | "mimics", 3881 | "tankage", 3882 | "viol", 3883 | "legends", 3884 | "plaices", 3885 | "russets", 3886 | "japans", 3887 | "fillet", 3888 | "fixings", 3889 | "encrust", 3890 | "motif", 3891 | "stiflers", 3892 | "foursomes", 3893 | "ragout", 3894 | "springtide", 3895 | "debits", 3896 | "zakat", 3897 | "idylls", 3898 | "cashbox", 3899 | "sportsman", 3900 | "hayride", 3901 | "blinders", 3902 | "soogee", 3903 | "asset", 3904 | "spahis", 3905 | "scarer", 3906 | "locksmiths", 3907 | "puddles", 3908 | "percents", 3909 | "cageling", 3910 | "giron", 3911 | "sharkskins", 3912 | "dogshores", 3913 | "aves", 3914 | "loudmouth", 3915 | "scannings", 3916 | "gabbler", 3917 | "flexor", 3918 | "summons", 3919 | "misdates", 3920 | "slapjack", 3921 | "stooker", 3922 | "spicule", 3923 | "hitches", 3924 | "soapbox", 3925 | "cruet", 3926 | "probing", 3927 | "czarism", 3928 | "duppies", 3929 | "devoir", 3930 | "tusker", 3931 | "dragline", 3932 | "kilter", 3933 | "limmers", 3934 | "curbstone", 3935 | "solvers", 3936 | "shinbones", 3937 | "tinkers", 3938 | "smokehos", 3939 | "sayer", 3940 | "perpents", 3941 | "framers", 3942 | "biltong", 3943 | "bloodshed", 3944 | "lappers", 3945 | "godspeeds", 3946 | "gannets", 3947 | "cabers", 3948 | "sumachs", 3949 | "greenhorn", 3950 | "nyanzas", 3951 | "stockyard", 3952 | "fother", 3953 | "gumdrops", 3954 | "callet", 3955 | "saccule", 3956 | "twicer", 3957 | "mizzle", 3958 | "startlers", 3959 | "eucrites", 3960 | "highbrow", 3961 | "kalong", 3962 | "ducklings", 3963 | "coughers", 3964 | "bombards", 3965 | "cushats", 3966 | "fieldworks", 3967 | "skerries", 3968 | "booties", 3969 | "gluons", 3970 | "houri", 3971 | "outreach", 3972 | "chambray", 3973 | "paigle", 3974 | "sexist", 3975 | "lahar", 3976 | "redcap", 3977 | "forepeaks", 3978 | "rifling", 3979 | "surname", 3980 | "levin", 3981 | "downright", 3982 | "pheon", 3983 | "trier", 3984 | "spoiler", 3985 | "thornbill", 3986 | "beyond", 3987 | "skidpans", 3988 | "hamster", 3989 | "racemes", 3990 | "gluttons", 3991 | "sinus", 3992 | "input", 3993 | "catchings", 3994 | "pentose", 3995 | "scratchers", 3996 | "codeine", 3997 | "landgraves", 3998 | "fellahs", 3999 | "losel", 4000 | "staidness", 4001 | "dandruff", 4002 | "wainscot", 4003 | "gangsters", 4004 | "raggle", 4005 | "intro", 4006 | "quatrains", 4007 | "hymnbook", 4008 | "flushness", 4009 | "latke", 4010 | "scribbles", 4011 | "sanjaks", 4012 | "sachems", 4013 | "languor", 4014 | "camlet", 4015 | "keisters", 4016 | "borehole", 4017 | "tinges", 4018 | "envoy", 4019 | "scratcher", 4020 | "retreat", 4021 | "bankrupts", 4022 | "figworts", 4023 | "patin", 4024 | "grinning", 4025 | "weirdie", 4026 | "hostler", 4027 | "hymnbooks", 4028 | "titlarks", 4029 | "crooners", 4030 | "baron", 4031 | "chokedamp", 4032 | "rhythmic", 4033 | "noonday", 4034 | "linsangs", 4035 | "lappings", 4036 | "dimers", 4037 | "newness", 4038 | "hymnist", 4039 | "languette", 4040 | "kampong", 4041 | "calces", 4042 | "hospice", 4043 | "trackers", 4044 | "strutters", 4045 | "roosters", 4046 | "doubters", 4047 | "gizmo", 4048 | "playmate", 4049 | "ornis", 4050 | "carbine", 4051 | "slurry", 4052 | "numbskulls", 4053 | "psyllids", 4054 | "ramblers", 4055 | "tribrach", 4056 | "teaspoon", 4057 | "switchers", 4058 | "orach", 4059 | "fifteens", 4060 | "barnyards", 4061 | "douters", 4062 | "sorghos", 4063 | "spenders", 4064 | "lordlings", 4065 | "incuse", 4066 | "sidewall", 4067 | "alerts", 4068 | "backer", 4069 | "dangles", 4070 | "gopak", 4071 | "backspin", 4072 | "cocci", 4073 | "rebec", 4074 | "tartan", 4075 | "gadders", 4076 | "dumpling", 4077 | "chasing", 4078 | "mollies", 4079 | "sextons", 4080 | "sundowns", 4081 | "certes", 4082 | "kiddo", 4083 | "clambake", 4084 | "yodles", 4085 | "phthisis", 4086 | "arvo", 4087 | "wailers", 4088 | "kneeling", 4089 | "jasey", 4090 | "neckline", 4091 | "airlines", 4092 | "menswear", 4093 | "grades", 4094 | "carload", 4095 | "poleyn", 4096 | "nudism", 4097 | "tipsters", 4098 | ]; 4099 | -------------------------------------------------------------------------------- /dictionary/src/phrase.rs: -------------------------------------------------------------------------------- 1 | use adjectives; 2 | use adverbs; 3 | use case::Case; 4 | use nouns; 5 | use sha::{ParseShaError, Sha}; 6 | use std::fmt::{Display, Error, Formatter}; 7 | use std::str::FromStr; 8 | 9 | /// A phrase that is made up of an adverb, adjective, noun. 10 | /// 11 | /// When parsed from a slice it will lookup the sha parts in the dictionary. 12 | /// It knows how to properly format itself if a different case is selected. 13 | #[derive(Debug, Eq, PartialEq, Clone)] 14 | pub struct Phrase { 15 | adj: String, 16 | adv: String, 17 | noun: String, 18 | format: Case, 19 | } 20 | 21 | impl Phrase { 22 | /// Consumes the current phrase and returns a new one with a different 23 | /// case. 24 | /// 25 | /// # Example 26 | /// 27 | /// ``` 28 | /// use std::str::FromStr; 29 | /// use git_release_name::{Phrase, Case}; 30 | /// 31 | /// let phrase = "1234".parse::().unwrap().with_case(Case::Upper); 32 | /// assert_eq!(phrase.case(), Case::Upper); 33 | /// ``` 34 | pub fn with_case(mut self, f: Case) -> Self { 35 | self.format = f; 36 | self 37 | } 38 | 39 | /// The adjective component of this phrase 40 | /// 41 | /// # Example 42 | /// 43 | /// ``` 44 | /// use std::str::FromStr; 45 | /// use git_release_name::Phrase; 46 | /// 47 | /// let phrase: Phrase = "1234".parse().unwrap(); 48 | /// assert_eq!(phrase.adjective(), "courant"); 49 | /// ``` 50 | pub fn adjective(&self) -> &str { 51 | &self.adj 52 | } 53 | 54 | /// The adverb component of this phrase 55 | /// 56 | /// # Example 57 | /// 58 | /// ``` 59 | /// use std::str::FromStr; 60 | /// use git_release_name::Phrase; 61 | /// 62 | /// let phrase: Phrase = "1234".parse().unwrap(); 63 | /// assert_eq!(phrase.adverb(), "ambitiously"); 64 | /// ``` 65 | pub fn adverb(&self) -> &str { 66 | &self.adv 67 | } 68 | 69 | /// The noun component of this phrase 70 | /// 71 | /// # Example 72 | /// 73 | /// ``` 74 | /// use std::str::FromStr; 75 | /// use git_release_name::Phrase; 76 | /// 77 | /// let phrase: Phrase = "1234".parse().unwrap(); 78 | /// assert_eq!(phrase.noun(), "gantlines"); 79 | /// ``` 80 | pub fn noun(&self) -> &str { 81 | &self.noun 82 | } 83 | 84 | /// The case the phrase will be formated with 85 | /// 86 | /// # Example 87 | /// 88 | /// ``` 89 | /// use std::str::FromStr; 90 | /// use git_release_name::{Phrase, Case}; 91 | /// 92 | /// let phrase: Phrase = "1234".parse().unwrap(); 93 | /// assert_eq!(phrase.case(), Case::Lower); 94 | /// ``` 95 | pub fn case(&self) -> Case { 96 | self.format 97 | } 98 | } 99 | 100 | /// Represents failures during parsing. 101 | #[derive(Debug, Eq, PartialEq, Clone, Copy)] 102 | pub enum ParsePhraseError { 103 | /// The word was not found in the dictionary 104 | WordNotFound, 105 | Sha(ParseShaError), 106 | #[doc(hidden)] 107 | __NonExhaustive, 108 | } 109 | 110 | fn lookup(index: usize, words: &[&str]) -> Result { 111 | words 112 | .get(index % words.len()) 113 | .map(|s| s.to_string()) 114 | .ok_or(ParsePhraseError::WordNotFound) 115 | } 116 | 117 | impl FromStr for Phrase { 118 | type Err = ParsePhraseError; 119 | 120 | fn from_str(sha: &str) -> Result { 121 | let sha = if sha.len() < 8 { &sha } else { &sha[..8] }; 122 | let sha: Sha = sha.parse().map_err(|e| ParsePhraseError::Sha(e))?; 123 | 124 | let adv = lookup(sha.adverb(), &adverbs::WORDS)?; 125 | let adj = lookup(sha.adjective(), &adjectives::WORDS)?; 126 | let noun = lookup(sha.noun(), &nouns::WORDS)?; 127 | 128 | Ok(Phrase { 129 | adv, 130 | adj, 131 | noun, 132 | format: Case::Lower, 133 | }) 134 | } 135 | } 136 | 137 | impl Display for Phrase { 138 | fn fmt(&self, f: &mut Formatter) -> Result<(), Error> { 139 | use inflector::Inflector; 140 | 141 | let ret = format!("{} {} {}", self.adv, self.adj, self.noun); 142 | match self.format { 143 | Case::Snake => write!(f, "{}", ret.to_snake_case()), 144 | Case::Kebab => write!(f, "{}", ret.to_kebab_case()), 145 | Case::Pascal => write!(f, "{}", ret.to_pascal_case()), 146 | Case::Camel => write!(f, "{}", ret.to_camel_case()), 147 | Case::Title => write!(f, "{}", ret.to_title_case()), 148 | Case::Sentence => write!(f, "{}", ret.to_sentence_case()), 149 | Case::Lower => write!(f, "{}", ret), 150 | Case::Upper => write!(f, "{}", ret.to_uppercase()), 151 | } 152 | } 153 | } 154 | 155 | #[cfg(test)] 156 | mod tests { 157 | use super::*; 158 | 159 | fn make_simple_phrase() -> Phrase { 160 | "0a00a00a".parse::().expect("Invalid phrase") 161 | } 162 | 163 | #[test] 164 | fn a_phrase_can_be_generated_from_a_str() { 165 | let phrase = make_simple_phrase(); 166 | assert_eq!("immeasurably endways borings", format!("{}", phrase)); 167 | } 168 | 169 | #[test] 170 | fn it_pads_the_string() { 171 | let unpadded = "abc".parse::().expect("Invalid phrase"); 172 | let padded = "00000abc".parse::().expect("Invalid phrase"); 173 | assert_eq!(padded, unpadded); 174 | } 175 | 176 | #[test] 177 | fn it_only_respects_first_eight() { 178 | let overflow = "00000abcffff".parse::().expect("Invalid phrase"); 179 | let underflow = "abc".parse::().expect("Invalid phrase"); 180 | assert_eq!(overflow, underflow); 181 | } 182 | 183 | #[test] 184 | fn a_phrase_can_be_formatted_as_snake_case() { 185 | let phrase = make_simple_phrase().with_case(Case::Snake); 186 | assert_eq!("immeasurably_endways_borings", format!("{}", phrase)); 187 | } 188 | 189 | #[test] 190 | fn a_phrase_can_be_formatted_as_kebab_case() { 191 | let phrase = make_simple_phrase().with_case(Case::Kebab); 192 | assert_eq!("immeasurably-endways-borings", format!("{}", phrase)); 193 | } 194 | 195 | #[test] 196 | fn a_phrase_can_be_formatted_as_camel_case() { 197 | let phrase = make_simple_phrase().with_case(Case::Camel); 198 | assert_eq!("immeasurablyEndwaysBorings", format!("{}", phrase)); 199 | } 200 | 201 | #[test] 202 | fn a_phrase_can_be_formatted_as_pascal_case() { 203 | let phrase = make_simple_phrase().with_case(Case::Pascal); 204 | assert_eq!("ImmeasurablyEndwaysBorings", format!("{}", phrase)); 205 | } 206 | 207 | #[test] 208 | fn a_phrase_can_be_formatted_as_title_case() { 209 | let phrase = make_simple_phrase().with_case(Case::Title); 210 | assert_eq!("Immeasurably Endways Borings", format!("{}", phrase)); 211 | } 212 | 213 | #[test] 214 | fn a_phrase_can_be_formatted_as_capital_case() { 215 | let phrase = make_simple_phrase().with_case(Case::Sentence); 216 | assert_eq!("Immeasurably endways borings", format!("{}", phrase)); 217 | } 218 | 219 | #[test] 220 | fn a_phrase_can_be_formatted_as_upper_case() { 221 | let phrase = make_simple_phrase().with_case(Case::Upper); 222 | assert_eq!("IMMEASURABLY ENDWAYS BORINGS", format!("{}", phrase)); 223 | } 224 | 225 | #[test] 226 | fn a_phrase_can_be_formatted_as_lower_case() { 227 | let phrase = make_simple_phrase().with_case(Case::Lower); 228 | assert_eq!("immeasurably endways borings", format!("{}", phrase)); 229 | } 230 | } 231 | -------------------------------------------------------------------------------- /dictionary/src/sha.rs: -------------------------------------------------------------------------------- 1 | use std::str::FromStr; 2 | 3 | /// Represents a sha. Provides convenience functions for library 4 | /// indexes. 5 | #[derive(Debug, PartialEq, Eq, Copy, Clone)] 6 | pub struct Sha(u32); 7 | 8 | /// Error types for parsing a sha into a phrase/word. 9 | #[derive(Debug, Eq, PartialEq, Clone, Copy)] 10 | pub enum ParseShaError { 11 | /// The sha had non-hex characters in it 12 | NonHexadecimalCharacters, 13 | #[doc(hidden)] 14 | __NonExhaustive, 15 | } 16 | 17 | impl FromStr for Sha { 18 | type Err = ParseShaError; 19 | 20 | fn from_str(sha: &str) -> Result { 21 | if let Ok(hash) = u32::from_str_radix(&sha, 16) { 22 | Ok(Sha(hash)) 23 | } else { 24 | Err(ParseShaError::NonHexadecimalCharacters) 25 | } 26 | } 27 | } 28 | 29 | const NIBBLES: u32 = 4; 30 | 31 | impl Sha { 32 | /// Returns the adverb index for this sha 33 | pub fn adverb(&self) -> usize { 34 | const ADV_MASK: u32 = 0xfff00000; 35 | ((self.0 & ADV_MASK) >> (5 * NIBBLES)) as usize 36 | } 37 | 38 | /// Returns the adjective index for this sha 39 | pub fn adjective(&self) -> usize { 40 | const ADJ_MASK: u32 = 0x000ff000; 41 | ((self.0 & ADJ_MASK) >> (3 * NIBBLES)) as usize 42 | } 43 | 44 | /// Returns the noun index for this sha 45 | pub fn noun(&self) -> usize { 46 | const NOUN_MASK: u32 = 0x00000fff; 47 | (self.0 & NOUN_MASK) as usize 48 | } 49 | } 50 | 51 | #[cfg(test)] 52 | mod tests { 53 | use super::*; 54 | 55 | #[test] 56 | fn it_can_parse_into_a_sha() { 57 | assert_eq!("a".parse::().unwrap().0, 10); 58 | } 59 | 60 | #[test] 61 | fn it_can_detect_non_hex_chars_when_parsing() { 62 | assert!("z".parse::().is_err()); 63 | } 64 | 65 | #[test] 66 | fn it_can_identify_indexes_for_each_type() { 67 | let sha = Sha(0xffffffff); 68 | assert_eq!(sha.adverb(), 4095); 69 | assert_eq!(sha.adjective(), 255); 70 | assert_eq!(sha.noun(), 4095); 71 | 72 | let sha = Sha(0xfff00000); 73 | assert_eq!(sha.adverb(), 4095); 74 | assert_eq!(sha.adjective(), 0); 75 | assert_eq!(sha.noun(), 0); 76 | 77 | let sha = Sha(0x00ff000); 78 | assert_eq!(sha.adverb(), 0); 79 | assert_eq!(sha.adjective(), 255); 80 | assert_eq!(sha.noun(), 0); 81 | 82 | let sha = Sha(0x00000fff); 83 | assert_eq!(sha.adverb(), 0); 84 | assert_eq!(sha.adjective(), 0); 85 | assert_eq!(sha.noun(), 4095); 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /web/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "git-release-name-web" 3 | version = "0.1.0" 4 | authors = ["Kevin Choubacha "] 5 | 6 | [dependencies] 7 | git-release-name = { path = "../dictionary" } 8 | actix-web = "0.6" 9 | serde = "1.0" 10 | serde_derive = "1.0" 11 | serde_json = "1.0" 12 | rand = "0.5" 13 | -------------------------------------------------------------------------------- /web/README.md: -------------------------------------------------------------------------------- 1 | # git-release-name-web 2 | 3 | This is a small web server that handles requests and will return the specified SHA in the body. 4 | 5 | ### Usage 6 | 7 | From the root directory you can run: 8 | ``` 9 | $ cargo run -p release-name-web 10 | Listening on http://0.0.0.0:6767 11 | Ctrl-C to shutdown serve 12 | ``` 13 | 14 | ### API 15 | 16 | #### One name 17 | 18 | ``` 19 | GET /api/release-name/:sha => text 20 | ``` 21 | 22 | ##### Example 23 | 24 | ``` 25 | $ curl "0.0.0.0:6767/api/release-name/a9677113edf998d260e69554dcd4fce200312605" 26 | intentionally mirky swineherds 27 | ``` 28 | #### Bulk names 29 | 30 | ``` 31 | GET /api/release-name?shas=CSV => JSON 32 | ``` 33 | 34 | ##### Example 35 | 36 | ``` 37 | $ curl "0.0.0.0:6767/api/release-name?shas=a9677113edf99,8d260e69554,dcd4fce200312605" | jq 38 | { 39 | "data": { 40 | "names": { 41 | "a9677113edf99": "intentionally mirky swineherds", 42 | "dcd4fce200312605": "smoothly beveled sporules", 43 | "8d260e69554": "contemptibly gelid portent" 44 | } 45 | } 46 | } 47 | ``` 48 | -------------------------------------------------------------------------------- /web/src/index.rs: -------------------------------------------------------------------------------- 1 | use super::Response; 2 | use actix_web::{Json, Query}; 3 | use git_release_name::{self, Case}; 4 | use param; 5 | use std::collections::HashMap; 6 | 7 | #[derive(Deserialize)] 8 | pub struct Params { 9 | shas: param::CSV, 10 | format: Option, 11 | } 12 | 13 | #[derive(Serialize, Debug, Eq, PartialEq)] 14 | pub struct BulkNames { 15 | names: HashMap>, 16 | } 17 | 18 | impl BulkNames { 19 | fn new(names: HashMap>) -> Self { 20 | Self { names } 21 | } 22 | 23 | fn from_list(case: Case, shas: &[String]) -> Self { 24 | let mut map = HashMap::new(); 25 | for sha in shas { 26 | let name = git_release_name::lookup(&sha) 27 | .map(|name| name.with_case(case).to_string()) 28 | .ok(); 29 | map.insert(sha.to_string(), name); 30 | } 31 | Self::new(map) 32 | } 33 | } 34 | 35 | pub fn handler(q: Query) -> Json> { 36 | let format = q.format.unwrap_or(Case::Lower.into()); 37 | 38 | Json(Response::new(BulkNames::from_list(*format, &q.shas))) 39 | } 40 | 41 | #[cfg(test)] 42 | mod test { 43 | use super::*; 44 | 45 | #[test] 46 | fn bulk_names_can_be_formed_from_list() { 47 | let bulk_names = 48 | BulkNames::from_list(Case::Snake, &[String::from("abc"), String::from("xyz")]); 49 | assert_eq!( 50 | bulk_names, 51 | BulkNames { 52 | names: [ 53 | ( 54 | String::from("abc"), 55 | Some(String::from("ambitiously_timeless_gemot")) 56 | ), 57 | (String::from("xyz"), None), 58 | ].iter() 59 | .cloned() 60 | .collect() 61 | } 62 | ); 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /web/src/main.rs: -------------------------------------------------------------------------------- 1 | extern crate actix_web; 2 | extern crate git_release_name; 3 | extern crate serde; 4 | #[macro_use] 5 | extern crate serde_derive; 6 | extern crate rand; 7 | extern crate serde_json; 8 | 9 | use actix_web::{http, server, App}; 10 | use serde::Serialize; 11 | 12 | mod index; 13 | mod param; 14 | mod random; 15 | mod show; 16 | 17 | #[derive(Serialize)] 18 | pub struct Response 19 | where 20 | T: Serialize, 21 | { 22 | data: T, 23 | } 24 | 25 | impl Response 26 | where 27 | T: Serialize, 28 | { 29 | pub fn new(data: T) -> Self { 30 | Self { data } 31 | } 32 | } 33 | 34 | fn main() { 35 | server::new(|| { 36 | App::new() 37 | .route("/api/release-name", http::Method::GET, index::handler) 38 | .route( 39 | "/api/release-name/random", 40 | http::Method::GET, 41 | random::handler, 42 | ) 43 | .resource("/api/release-name/{sha}", |r| { 44 | r.method(http::Method::GET).with2(show::handler) 45 | }) 46 | }).bind("0.0.0.0:6767") 47 | .unwrap() 48 | .run(); 49 | } 50 | -------------------------------------------------------------------------------- /web/src/param.rs: -------------------------------------------------------------------------------- 1 | use git_release_name::Case; 2 | use serde::{de, Deserialize, Deserializer}; 3 | use std::ops::Deref; 4 | 5 | pub struct CSV(Vec); 6 | 7 | impl Deref for CSV { 8 | type Target = Vec; 9 | 10 | fn deref(&self) -> &Self::Target { 11 | &self.0 12 | } 13 | } 14 | 15 | impl<'de> Deserialize<'de> for CSV { 16 | fn deserialize(d: D) -> Result 17 | where 18 | D: Deserializer<'de>, 19 | { 20 | let s = String::deserialize(d)?; 21 | Ok(CSV(s.split(',').map(|s| s.to_string()).collect())) 22 | } 23 | } 24 | 25 | #[cfg(test)] 26 | mod csv_test { 27 | use super::*; 28 | use serde_json; 29 | 30 | #[test] 31 | fn it_can_parse_to_a_vec() { 32 | let data = "\"abc,123\""; 33 | let csv: CSV = serde_json::from_str(&data).unwrap(); 34 | assert_eq!(*csv, vec!["abc", "123"]); 35 | } 36 | } 37 | 38 | #[derive(Debug, Eq, PartialEq, Clone, Copy)] 39 | pub struct Format(Case); 40 | 41 | impl Deref for Format { 42 | type Target = Case; 43 | 44 | fn deref(&self) -> &Self::Target { 45 | &self.0 46 | } 47 | } 48 | 49 | impl<'de> Deserialize<'de> for Format { 50 | fn deserialize(d: D) -> Result 51 | where 52 | D: Deserializer<'de>, 53 | { 54 | let s = String::deserialize(d)?; 55 | let case = s.parse::() 56 | .map_err(|_| de::Error::custom("Invalid case format"))?; 57 | Ok(Format(case)) 58 | } 59 | } 60 | 61 | impl From for Format { 62 | fn from(case: Case) -> Format { 63 | Format(case) 64 | } 65 | } 66 | 67 | #[cfg(test)] 68 | mod format_test { 69 | use super::*; 70 | use serde_json; 71 | 72 | #[test] 73 | fn it_can_parse_to_a_vec() { 74 | let data = "\"snake\""; 75 | let fmt: Format = serde_json::from_str(&data).unwrap(); 76 | assert_eq!(*fmt, Case::Snake); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /web/src/random.rs: -------------------------------------------------------------------------------- 1 | use super::Response; 2 | use actix_web::{Json, Query}; 3 | use git_release_name::{self, Case}; 4 | use param::Format; 5 | use rand; 6 | 7 | #[derive(Deserialize)] 8 | pub struct Params { 9 | format: Option, 10 | } 11 | 12 | #[derive(Serialize)] 13 | pub struct Name { 14 | name: String, 15 | sha: String, 16 | } 17 | 18 | pub fn handler(q: Query) -> Json> { 19 | let format = q.format.unwrap_or(Case::Lower.into()); 20 | let sha = format!("{:08x}", rand::random::()); 21 | let name = git_release_name::lookup(&sha) 22 | .map(|p| p.with_case(*format).to_string()) 23 | .unwrap_or(String::new()); 24 | 25 | Json(Response::new(Name { name, sha })) 26 | } 27 | -------------------------------------------------------------------------------- /web/src/show.rs: -------------------------------------------------------------------------------- 1 | use actix_web::{http::StatusCode, HttpResponse, Path, Query}; 2 | use git_release_name::{self, Case}; 3 | use param::Format; 4 | 5 | #[derive(Deserialize)] 6 | pub struct Params { 7 | format: Option, 8 | } 9 | 10 | pub fn handler(info: Path, q: Query) -> HttpResponse { 11 | let format = q.format.unwrap_or(Case::Lower.into()); 12 | match git_release_name::lookup(&info.into_inner()) { 13 | Ok(name) => HttpResponse::build(StatusCode::OK).body(name.with_case(*format).to_string()), 14 | Err(_) => HttpResponse::build(StatusCode::NOT_FOUND).finish(), 15 | } 16 | } 17 | --------------------------------------------------------------------------------