Skip to content

Instantly share code, notes, and snippets.

@springmeyer
Created February 12, 2014 18:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save springmeyer/8961826 to your computer and use it in GitHub Desktop.
Save springmeyer/8961826 to your computer and use it in GitHub Desktop.
testing node-mapnik install via node-pre-gyp binaries

install protoc

For now you still need the protobuf depedency installed.

For OS X do:

brew install protobuf

The protoc command should then be on your path.

package.json

In your package.json point to:

"mapnik": "https://github.com/mapnik/node-mapnik/tarball/binary",

This will give you a binary for node-mapnik@1.3.0-alpha

You might see a warning like did not find lib/binding/mapnik.node - ignore this.

@max-mapper
Copy link

$ npm i
npm WARN package.json carmen@0.2.0-beta4 No repository field.
npm http GET https://registry.npmjs.org/sphericalmercator
npm http GET https://registry.npmjs.org/unidecode/0.1.3
npm http GET https://registry.npmjs.org/tilelive
npm http GET https://registry.npmjs.org/mbtiles
npm http GET https://registry.npmjs.org/tilelive-s3
npm http GET https://registry.npmjs.org/benchmark
npm http GET https://github.com/mapnik/node-mapnik/tarball/binary
npm http GET https://registry.npmjs.org/minimist/0.0.5
npm http GET https://registry.npmjs.org/split
npm http GET https://registry.npmjs.org/queue-async
npm http GET https://registry.npmjs.org/nan
npm http GET https://registry.npmjs.org/mocha
npm http 200 https://registry.npmjs.org/unidecode/0.1.3
npm http GET https://registry.npmjs.org/unidecode/-/unidecode-0.1.3.tgz
npm http 200 https://registry.npmjs.org/sphericalmercator
npm http GET https://registry.npmjs.org/sphericalmercator/-/sphericalmercator-1.0.2.tgz
npm http 200 https://registry.npmjs.org/minimist/0.0.5
npm http GET https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz
npm http 200 https://registry.npmjs.org/unidecode/-/unidecode-0.1.3.tgz
npm http 304 https://registry.npmjs.org/split
npm http 200 https://registry.npmjs.org/mbtiles
npm http 200 https://registry.npmjs.org/benchmark
npm http 200 https://registry.npmjs.org/tilelive
npm http 304 https://registry.npmjs.org/nan
npm http 200 https://registry.npmjs.org/tilelive-s3
npm http GET https://registry.npmjs.org/mbtiles/-/mbtiles-0.4.2.tgz
npm http 304 https://registry.npmjs.org/mocha
npm http GET https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz
npm http 200 https://registry.npmjs.org/minimist/-/minimist-0.0.5.tgz
npm http 200 https://registry.npmjs.org/sphericalmercator/-/sphericalmercator-1.0.2.tgz
npm http GET https://registry.npmjs.org/tilelive/-/tilelive-4.5.3.tgz
npm http 304 https://registry.npmjs.org/queue-async
npm http GET https://registry.npmjs.org/tilelive-s3/-/tilelive-s3-0.10.3.tgz
npm http 200 https://registry.npmjs.org/benchmark/-/benchmark-1.0.0.tgz
npm http 200 https://registry.npmjs.org/tilelive-s3/-/tilelive-s3-0.10.3.tgz
npm http 200 https://registry.npmjs.org/tilelive/-/tilelive-4.5.3.tgz
npm http 200 https://github.com/mapnik/node-mapnik/tarball/binary
npm http 200 https://registry.npmjs.org/mbtiles/-/mbtiles-0.4.2.tgz
npm http GET https://registry.npmjs.org/through
npm http 304 https://registry.npmjs.org/through
npm http GET https://registry.npmjs.org/knox
npm http GET https://registry.npmjs.org/tilejson
npm http GET https://registry.npmjs.org/commander/0.6.1
npm http GET https://registry.npmjs.org/growl
npm http GET https://registry.npmjs.org/jade/0.26.3
npm http GET https://registry.npmjs.org/diff/1.0.7
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/mkdirp/0.3.5
npm http GET https://registry.npmjs.org/glob/3.2.3
npm http 304 https://registry.npmjs.org/commander/0.6.1
npm http 304 https://registry.npmjs.org/growl
npm http 304 https://registry.npmjs.org/jade/0.26.3
npm http 304 https://registry.npmjs.org/diff/1.0.7
npm http 304 https://registry.npmjs.org/debug
npm http 304 https://registry.npmjs.org/mkdirp/0.3.5
npm http 200 https://registry.npmjs.org/knox
npm http GET https://registry.npmjs.org/knox/-/knox-0.8.9.tgz
npm http 200 https://registry.npmjs.org/tilejson
npm http GET https://registry.npmjs.org/tilejson/-/tilejson-0.6.3.tgz
npm http 304 https://registry.npmjs.org/glob/3.2.3
npm http 200 https://registry.npmjs.org/knox/-/knox-0.8.9.tgz
npm http 200 https://registry.npmjs.org/tilejson/-/tilejson-0.6.3.tgz
npm http GET https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/get
npm http GET https://registry.npmjs.org/agentkeepalive
npm http 304 https://registry.npmjs.org/minimatch
npm http GET https://registry.npmjs.org/xml2js
npm http GET https://registry.npmjs.org/retry/0.6.0
npm http GET https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/stream-counter
npm http 304 https://registry.npmjs.org/inherits
npm http 200 https://registry.npmjs.org/retry/0.6.0
npm http 304 https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/retry/-/retry-0.6.0.tgz
npm http 200 https://registry.npmjs.org/stream-counter
npm http GET https://registry.npmjs.org/stream-counter/-/stream-counter-0.1.0.tgz
npm http GET https://registry.npmjs.org/mkdirp/0.3.0
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/lru-cache
npm http 200 https://registry.npmjs.org/stream-counter/-/stream-counter-0.1.0.tgz
npm http 200 https://registry.npmjs.org/retry/-/retry-0.6.0.tgz
npm http 304 https://registry.npmjs.org/mkdirp/0.3.0
npm http 200 https://registry.npmjs.org/get
npm http 200 https://registry.npmjs.org/agentkeepalive
npm http 304 https://registry.npmjs.org/sigmund
npm http 304 https://registry.npmjs.org/lru-cache
npm http GET https://registry.npmjs.org/get/-/get-1.3.0.tgz
npm http GET https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-0.1.5.tgz
npm http 200 https://registry.npmjs.org/xml2js
npm http 200 https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-0.1.5.tgz
npm http 200 https://registry.npmjs.org/get/-/get-1.3.0.tgz
npm http GET https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz
npm http 200 https://registry.npmjs.org/xml2js/-/xml2js-0.2.8.tgz
npm http GET https://registry.npmjs.org/readable-stream
npm http GET https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/sax
npm http 304 https://registry.npmjs.org/readable-stream
npm http 304 https://registry.npmjs.org/optimist
npm http GET https://registry.npmjs.org/string_decoder
npm http GET https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/string_decoder
npm http 200 https://registry.npmjs.org/sax
npm http 304 https://registry.npmjs.org/wordwrap

> tilelive-s3@0.10.3 install /Users/max/src/js/carmen/node_modules/tilelive-s3
> node-gyp rebuild

  CXX(target) Release/obj.target/decoder/src/decode.o
  CXX(target) Release/obj.target/decoder/src/reader.o
  SOLINK_MODULE(target) Release/decoder.node
  SOLINK_MODULE(target) Release/decoder.node: Finished
  ACTION binding_gyp_action_after_build_target_move_node_module lib/decoder.node
  TOUCH Release/obj.target/action_after_build.stamp
npm http GET https://registry.npmjs.org/node-pre-gyp
npm http GET https://registry.npmjs.org/mapnik-vector-tile
npm http 200 https://registry.npmjs.org/node-pre-gyp
npm http GET https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.4.1.tgz
npm http 200 https://registry.npmjs.org/mapnik-vector-tile
npm http GET https://registry.npmjs.org/mapnik-vector-tile/-/mapnik-vector-tile-0.3.4.tgz
npm http 200 https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.4.1.tgz
npm http 200 https://registry.npmjs.org/mapnik-vector-tile/-/mapnik-vector-tile-0.3.4.tgz
npm http GET https://registry.npmjs.org/sqlite3
npm http GET https://registry.npmjs.org/tar-pack
npm http GET https://registry.npmjs.org/aws-sdk
npm http GET https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/npmlog
npm http GET https://registry.npmjs.org/request
npm http GET https://registry.npmjs.org/semver
npm http GET https://registry.npmjs.org/tar
npm http GET https://registry.npmjs.org/mkdirp
npm http GET https://registry.npmjs.org/rimraf
npm http GET https://registry.npmjs.org/rc
npm http 200 https://registry.npmjs.org/sqlite3
npm http 304 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/sqlite3/-/sqlite3-2.2.0.tgz
npm http 304 https://registry.npmjs.org/request
npm http 304 https://registry.npmjs.org/semver
npm http 200 https://registry.npmjs.org/tar-pack
npm http 200 https://registry.npmjs.org/tar
npm http 304 https://registry.npmjs.org/mkdirp
npm http 200 https://registry.npmjs.org/npmlog
npm http 304 https://registry.npmjs.org/rimraf
npm http 304 https://registry.npmjs.org/rc
npm http GET https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz
npm http 200 https://registry.npmjs.org/sqlite3/-/sqlite3-2.2.0.tgz
npm http 200 https://registry.npmjs.org/aws-sdk
npm http GET https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.0.0-rc9.tgz
npm http 200 https://registry.npmjs.org/tar-pack/-/tar-pack-2.0.0.tgz
npm http 200 https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.0.0-rc9.tgz

> mapnik-vector-tile@0.3.4 install /Users/max/src/js/carmen/node_modules/mapnik/node_modules/mapnik-vector-tile
> protoc -Iproto/ --cpp_out=./src/ ./proto/vector_tile.proto

npm http GET https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.2.6.tgz
npm http 200 https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.2.6.tgz
npm http GET https://registry.npmjs.org/ansi
npm http GET https://registry.npmjs.org/deep-extend
npm http GET https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/ini
npm http GET https://registry.npmjs.org/uid-number/0.0.3
npm http GET https://registry.npmjs.org/fstream-ignore/0.0.7
npm http GET https://registry.npmjs.org/once
npm http GET https://registry.npmjs.org/debug
npm http GET https://registry.npmjs.org/fstream
npm http GET https://registry.npmjs.org/readable-stream
npm http GET https://registry.npmjs.org/graceful-fs
npm http 200 https://registry.npmjs.org/ansi
npm http 200 https://registry.npmjs.org/uid-number/0.0.3
npm http 200 https://registry.npmjs.org/fstream-ignore/0.0.7
npm http 304 https://registry.npmjs.org/deep-extend
npm http 304 https://registry.npmjs.org/ini
npm http 304 https://registry.npmjs.org/once
npm http GET https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz
npm http 304 https://registry.npmjs.org/graceful-fs
npm http GET https://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz
npm http 304 https://registry.npmjs.org/readable-stream
npm http 200 https://registry.npmjs.org/fstream
npm http 304 https://registry.npmjs.org/abbrev
npm http 304 https://registry.npmjs.org/debug
npm http 200 https://registry.npmjs.org/fstream-ignore/-/fstream-ignore-0.0.7.tgz
npm http 200 https://registry.npmjs.org/uid-number/-/uid-number-0.0.3.tgz
npm http GET https://registry.npmjs.org/mime
npm http GET https://registry.npmjs.org/qs
npm http GET https://registry.npmjs.org/json-stringify-safe
npm http GET https://registry.npmjs.org/forever-agent
npm http GET https://registry.npmjs.org/tough-cookie
npm http GET https://registry.npmjs.org/form-data
npm http GET https://registry.npmjs.org/node-uuid
npm http GET https://registry.npmjs.org/tunnel-agent
npm http GET https://registry.npmjs.org/oauth-sign
npm http GET https://registry.npmjs.org/http-signature
npm http GET https://registry.npmjs.org/aws-sign2
npm http GET https://registry.npmjs.org/hawk
npm http 304 https://registry.npmjs.org/mime
npm http 304 https://registry.npmjs.org/qs
npm http 304 https://registry.npmjs.org/forever-agent
npm http 304 https://registry.npmjs.org/json-stringify-safe
npm http 304 https://registry.npmjs.org/tough-cookie
npm http 304 https://registry.npmjs.org/form-data
npm http 304 https://registry.npmjs.org/node-uuid
npm http 304 https://registry.npmjs.org/tunnel-agent
npm http 304 https://registry.npmjs.org/http-signature
npm http 304 https://registry.npmjs.org/oauth-sign
npm http 304 https://registry.npmjs.org/aws-sign2
npm http 304 https://registry.npmjs.org/hawk
npm http GET https://registry.npmjs.org/combined-stream
npm http GET https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/block-stream
npm http 304 https://registry.npmjs.org/combined-stream
npm http 304 https://registry.npmjs.org/async
npm http GET https://registry.npmjs.org/assert-plus/0.1.2
npm http GET https://registry.npmjs.org/asn1/0.1.11
npm http GET https://registry.npmjs.org/ctype/0.5.2
npm http 200 https://registry.npmjs.org/block-stream
npm http 304 https://registry.npmjs.org/inherits
npm http GET https://registry.npmjs.org/wordwrap
npm http 304 https://registry.npmjs.org/ctype/0.5.2
npm http 304 https://registry.npmjs.org/assert-plus/0.1.2
npm http 304 https://registry.npmjs.org/asn1/0.1.11
npm http 304 https://registry.npmjs.org/wordwrap
npm http GET https://registry.npmjs.org/delayed-stream/0.0.5
npm http GET https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/delayed-stream/0.0.5
npm http GET https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/minimatch
npm http 304 https://registry.npmjs.org/punycode
npm http GET https://registry.npmjs.org/sntp
npm http GET https://registry.npmjs.org/hoek
npm http GET https://registry.npmjs.org/boom
npm http GET https://registry.npmjs.org/cryptiles
npm http 304 https://registry.npmjs.org/string_decoder
npm http 304 https://registry.npmjs.org/sntp
npm http 304 https://registry.npmjs.org/hoek
npm http 304 https://registry.npmjs.org/cryptiles
npm http 200 https://registry.npmjs.org/boom
npm http GET https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/lru-cache
npm http 304 https://registry.npmjs.org/lru-cache
npm http 304 https://registry.npmjs.org/sigmund
npm http GET https://registry.npmjs.org/xml2js/0.2.4
npm http GET https://registry.npmjs.org/xmlbuilder/0.4.2
npm http 200 https://registry.npmjs.org/xml2js/0.2.4
npm http GET https://registry.npmjs.org/xml2js/-/xml2js-0.2.4.tgz
npm http 200 https://registry.npmjs.org/xmlbuilder/0.4.2
npm http GET https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.2.tgz
npm http 200 https://registry.npmjs.org/xml2js/-/xml2js-0.2.4.tgz
npm http 200 https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-0.4.2.tgz
npm http GET https://registry.npmjs.org/sax
npm http 304 https://registry.npmjs.org/sax
npm http GET https://registry.npmjs.org/sax/-/sax-0.6.0.tgz
npm http 200 https://registry.npmjs.org/sax/-/sax-0.6.0.tgz

> mapnik@1.3.0-alpha install /Users/max/src/js/carmen/node_modules/mapnik
> node-pre-gyp install --fallback-to-build

did not find /Users/max/src/js/carmen/node_modules/mapnik lib/binding/mapnik.node
node-pre-gyp http GET https://node-mapnik.s3-us-west-1.amazonaws.com/v1.3.0-alpha/mapnik-v1.3.0-alpha-node-v11-darwin-x64.tar.gz
node-pre-gyp http 200 https://node-mapnik.s3-us-west-1.amazonaws.com/v1.3.0-alpha/mapnik-v1.3.0-alpha-node-v11-darwin-x64.tar.gz
[mapnik] Success: "lib/binding/mapnik.node" is installed

> sqlite3@2.2.0 install /Users/max/src/js/carmen/node_modules/mbtiles/node_modules/sqlite3
> node-pre-gyp install --fallback-to-build

node-pre-gyp http GET http://node-sqlite3.s3.amazonaws.com/Release/node_sqlite3-v2.2.0-node-v11-darwin-x64.tar.gz
node-pre-gyp http 200 http://node-sqlite3.s3.amazonaws.com/Release/node_sqlite3-v2.2.0-node-v11-darwin-x64.tar.gz
[sqlite3] Success: "lib/node_sqlite3.node" is installed

> carmen@0.2.0-beta4 install /Users/max/src/js/carmen
> node-gyp rebuild

  ACTION binding_gyp_action_before_build_target_run_protoc Release/obj/gen/index.pb.cc
  TOUCH Release/obj.target/action_before_build.stamp
  CXX(target) Release/obj.target/binding/src/binding.o
  CXX(target) Release/obj.target/binding/gen/index.pb.o
  SOLINK_MODULE(target) Release/binding.node
ld: warning: option -s is obsolete and being ignored
ld: warning: option -s is obsolete and being ignored
  SOLINK_MODULE(target) Release/binding.node: Finished
  COPY ../lib/util/binding.node
  TOUCH Release/obj.target/action_after_build.stamp
sphericalmercator@1.0.2 node_modules/sphericalmercator

queue-async@1.0.7 node_modules/queue-async

minimist@0.0.5 node_modules/minimist

nan@0.4.4 node_modules/nan

split@0.2.10 node_modules/split
└── through@2.3.4

benchmark@1.0.0 node_modules/benchmark

unidecode@0.1.3 node_modules/unidecode

mocha@1.13.0 node_modules/mocha
├── diff@1.0.7
├── debug@0.7.4
├── growl@1.7.0
├── commander@0.6.1
├── mkdirp@0.3.5
├── glob@3.2.3 (inherits@2.0.1, graceful-fs@2.0.1, minimatch@0.2.14)
└── jade@0.26.3 (mkdirp@0.3.0)

tilelive@4.5.3 node_modules/tilelive
└── optimist@0.6.1 (wordwrap@0.0.2)

tilelive-s3@0.10.3 node_modules/tilelive-s3
├── tilejson@0.6.3 (get@1.3.0, retry@0.6.0, agentkeepalive@0.1.5)
└── knox@0.8.9 (debug@0.7.4, mime@1.2.11, stream-counter@0.1.0, xml2js@0.2.8)

mapnik@1.3.0-alpha node_modules/mapnik
├── mapnik-vector-tile@0.3.4
└── node-pre-gyp@0.4.1 (rimraf@2.2.6, mkdirp@0.3.5, semver@2.1.0, nopt@2.1.2, npmlog@0.0.6, rc@0.3.3, tar@0.1.19, request@2.33.0, tar-pack@2.0.0, aws-sdk@2.0.0-rc9)

mbtiles@0.4.2 node_modules/mbtiles
└── sqlite3@2.2.0 (node-pre-gyp@0.2.6)
Macintosh-3:carmen max$ ls
Makefile    bench       build       configure   fixtures    lib     package.json    scripts     test
README.md   binding.gyp common.gypi deps        index.js    node_modules    proto       src
Macintosh-3:carmen max$ npm test

> carmen@0.2.0-beta4 pretest /Users/max/src/js/carmen
> ./scripts/install-dbs.sh

Downloading 01-ne.country...
Downloading 02-ne.province...
Downloading 03-tiger.zipcode...
Downloading 04-mb.place...

> carmen@0.2.0-beta4 test /Users/max/src/js/carmen
> mocha


  [▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․]
  geocode country 99.2% (502/506) at 9.3ms/query

  country
  -------
  28.164718,-29.61478 => Thaba-Tseka, South Africa
  63.383888,45.978332 => Qyzylorda, Kazakhstan
  12.439912,43.937618 => Borgo Maggiore, Italy
  South Georgia and South Sandwich Islands => Sandwich, Kent, United Kingdom
  [▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․․]
  geocode province 99.8% (798/800) at 12.5ms/query

  province
  --------
  Al Hizam Al Akhdar => Altay, Russia
  Al Jabal al Akhdar => Altay, Russia
  [▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬․․․․․․․․․․․․․․․․․․․․․․]
  geocode zipcode 99.0% (792/800) at 20.0ms/query

  zipcode
  -------
  -74.008669,40.712626 => New York, 10007
  -73.975934,40.755139 => New York, 10017, New York, United States...
  -73.975003,40.751441 => New York, 10017, New York, United States...
  -73.978722,40.752131 => New York, 10017, New York, United States...
  -73.972487,40.757779 => New York, 10022, New York, United States...
  -73.972031,40.758404 => New York, 10022, New York, United States...
  -94.880601,36.917847 => North Miami, 74354, Oklahoma, United Sta...
  -78.380108,42.061991 => Westons Mills, 14760, New York, United S...
  [▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬]
  geocode place 99.3% (794/800) at 30.8ms/query

  place
  -----
  -16.848692,32.783577 => Faial, Madeira, Portugal
  23.152156,53.129617 => Białystok, Podlachian, Poland
  -9.303886,38.748368 => Talaide, Lisboa, Portugal
  9.511562,47.668747 => Großbuch, Baden-Württemberg, Germany
  -6.135289,31.258288 => Souss - Massa - Draâ, Morocco
  10.504751,43.828572 => Lucca, Italy
  [▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬]

  3273 passing (26s)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment