Last active
September 21, 2018 02:13
-
-
Save jamesray1/74da2fd535cf79b5e90218ccc89eb462 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
➜ jrl git:(master) cargo build | |
Compiling eth-secp256k1 v0.5.7 (https://github.com/paritytech/rust-secp256k1#db81cfea) | |
Compiling aio-limited v0.1.0 (https://github.com/paritytech/aio-limited.git#1f42497d) | |
Compiling aes-ctr v0.1.0 | |
Compiling ring v0.12.1 | |
Compiling multistream-select v0.1.0 (file:///home/james/Rust/jrl/misc/multistream-select) | |
error: could not find native static library `secp256k1`, perhaps an -L flag is missing? | |
error: aborting due to previous error | |
The following warnings were emitted during compilation: | |
warning: In file included from depend/secp256k1/src/secp256k1.c:13, | |
warning: from depend/secp256k1/src/ext.c:8: | |
warning: depend/secp256k1/src/group_impl.h:686:12: warning: ‘secp256k1_gej_has_quad_y_var’ defined but not used [-Wunused-function] | |
warning: static int secp256k1_gej_has_quad_y_var(const secp256k1_gej *a) { | |
warning: ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ | |
warning: depend/secp256k1/src/group_impl.h:267:12: warning: ‘secp256k1_gej_is_valid_var’ defined but not used [-Wunused-function] | |
warning: static int secp256k1_gej_is_valid_var(const secp256k1_gej *a) { | |
warning: ^~~~~~~~~~~~~~~~~~~~~~~~~~ | |
warning: In file included from depend/secp256k1/src/ext.c:8: | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_pubkey_parse’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:154:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘input’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:156:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(input != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_pubkey_serialize’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘output’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:175:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(output != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘outputlen’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:171:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(outputlen != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:177:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_signature_parse_der’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:216:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘input’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:217:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(input != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_signature_parse_compact’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:234:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘input64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:235:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(input64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_signature_serialize_der’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘output’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:253:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(output != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘outputlen’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:254:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(outputlen != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:255:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_signature_serialize_compact’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘output64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:265:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(output64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:266:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_signature_normalize’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sigin’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:279:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sigin != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_verify’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:300:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:299:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:301:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_sign’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘signature’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:353:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(signature != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:352:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:354:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_seckey_verify’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:396:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_pubkey_create’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:411:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:414:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_privkey_negate’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:430:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_pubkey_negate’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:443:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_privkey_tweak_add’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:460:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘tweak’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:461:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(tweak != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_pubkey_tweak_add’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:484:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘tweak’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:485:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(tweak != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_privkey_tweak_mul’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:507:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘tweak’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:508:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(tweak != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_pubkey_tweak_mul’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:530:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘tweak’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:531:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(tweak != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ec_pubkey_combine’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubnonce’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:559:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubnonce != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubnonces’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/secp256k1.c:562:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubnonces != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdh’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘result’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/ecdh/main_impl.h:20:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(result != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘point’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/ecdh/main_impl.h:21:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(point != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘scalar’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/ecdh/main_impl.h:22:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(scalar != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_schnorr_sign’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:31:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:30:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:32:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_schnorr_verify’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:66:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:65:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:67:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_schnorr_recover’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:80:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:79:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:78:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_schnorr_generate_nonce_pair’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubnonce’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:102:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubnonce != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘privnonce32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:103:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(privnonce32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_schnorr_partial_sign’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:140:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:139:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sec32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:141:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sec32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubnonce_others’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:143:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubnonce_others != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘secnonce32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:142:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(secnonce32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_schnorr_partial_combine’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:158:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig64sin’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/schnorr/main_impl.h:160:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig64sin != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_recoverable_signature_parse_compact’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:44:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘input64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:45:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(input64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_recoverable_signature_serialize_compact’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘output64’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:64:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(output64 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘recid’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:66:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(recid != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:65:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_recoverable_signature_convert’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sig’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:79:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sig != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘sigin’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:80:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(sigin != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_sign_recoverable’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘signature’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:132:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(signature != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:131:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘seckey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:133:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(seckey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/ext.c: In function ‘secp256k1_ecdsa_recover’: | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘pubkey’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:179:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(pubkey != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘signature’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:178:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(signature != NULL); | |
warning: ^~~~~~~~~ | |
warning: depend/secp256k1/src/secp256k1.c:22:8: warning: nonnull argument ‘msg32’ compared to NULL [-Wnonnull-compare] | |
warning: if (EXPECT(!(cond), 0)) { \ | |
warning: ^ | |
warning: depend/secp256k1/src/modules/recovery/main_impl.h:177:5: note: in expansion of macro ‘ARG_CHECK’ | |
warning: ARG_CHECK(msg32 != NULL); | |
warning: ^~~~~~~~~ | |
error: Could not compile `eth-secp256k1`. | |
warning: build failed, waiting for other jobs to finish... | |
error: build failed |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
➜ secp256k1 git:(master) ./autogen.sh | |
libtoolize: putting auxiliary files in AC_CONFIG_AUX_DIR, 'build-aux'. | |
libtoolize: copying file 'build-aux/ltmain.sh' | |
libtoolize: putting macros in AC_CONFIG_MACRO_DIRS, 'build-aux/m4'. | |
libtoolize: copying file 'build-aux/m4/libtool.m4' | |
libtoolize: copying file 'build-aux/m4/ltoptions.m4' | |
libtoolize: copying file 'build-aux/m4/ltsugar.m4' | |
libtoolize: copying file 'build-aux/m4/ltversion.m4' | |
libtoolize: copying file 'build-aux/m4/lt~obsolete.m4' | |
configure.ac:10: installing 'build-aux/compile' | |
configure.ac:5: installing 'build-aux/config.guess' | |
configure.ac:5: installing 'build-aux/config.sub' | |
configure.ac:9: installing 'build-aux/install-sh' | |
configure.ac:9: installing 'build-aux/missing' | |
Makefile.am: installing 'build-aux/depcomp' | |
parallel-tests: installing 'build-aux/test-driver' | |
➜ secp256k1 git:(master) ./configure | |
checking build system type... x86_64-pc-linux-gnu | |
checking host system type... x86_64-pc-linux-gnu | |
checking for a BSD-compatible install... /usr/bin/install -c | |
checking whether build environment is sane... yes | |
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p | |
checking for gawk... gawk | |
checking whether make sets $(MAKE)... yes | |
checking whether make supports nested variables... yes | |
checking how to print strings... printf | |
checking for style of include used by make... GNU | |
checking for gcc... gcc | |
checking whether the C compiler works... yes | |
checking for C compiler default output file name... a.out | |
checking for suffix of executables... | |
checking whether we are cross compiling... no | |
checking for suffix of object files... o | |
checking whether we are using the GNU C compiler... yes | |
checking whether gcc accepts -g... yes | |
checking for gcc option to accept ISO C89... none needed | |
checking whether gcc understands -c and -o together... yes | |
checking dependency style of gcc... gcc3 | |
checking for a sed that does not truncate output... /usr/bin/sed | |
checking for grep that handles long lines and -e... /usr/bin/grep | |
checking for egrep... /usr/bin/grep -E | |
checking for fgrep... /usr/bin/grep -F | |
checking for ld used by gcc... /usr/bin/ld | |
checking if the linker (/usr/bin/ld) is GNU ld... yes | |
checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B | |
checking the name lister (/usr/bin/nm -B) interface... BSD nm | |
checking whether ln -s works... yes | |
checking the maximum length of command line arguments... 1572864 | |
checking how to convert x86_64-pc-linux-gnu file names to x86_64-pc-linux-gnu format... func_convert_file_noop | |
checking how to convert x86_64-pc-linux-gnu file names to toolchain format... func_convert_file_noop | |
checking for /usr/bin/ld option to reload object files... -r | |
checking for objdump... objdump | |
checking how to recognize dependent libraries... pass_all | |
checking for dlltool... no | |
checking how to associate runtime and link libraries... printf %s\n | |
checking for ar... ar | |
checking for archiver @FILE support... @ | |
checking for strip... strip | |
checking for ranlib... ranlib | |
checking command to parse /usr/bin/nm -B output from gcc object... ok | |
checking for sysroot... no | |
checking for a working dd... /usr/bin/dd | |
checking how to truncate binary pipes... /usr/bin/dd bs=4096 count=1 | |
checking for mt... no | |
checking if : is a manifest tool... no | |
checking how to run the C preprocessor... gcc -E | |
checking for ANSI C header files... yes | |
checking for sys/types.h... yes | |
checking for sys/stat.h... yes | |
checking for stdlib.h... yes | |
checking for string.h... yes | |
checking for memory.h... yes | |
checking for strings.h... yes | |
checking for inttypes.h... yes | |
checking for stdint.h... yes | |
checking for unistd.h... yes | |
checking for dlfcn.h... yes | |
checking for objdir... .libs | |
checking if gcc supports -fno-rtti -fno-exceptions... no | |
checking for gcc option to produce PIC... -fPIC -DPIC | |
checking if gcc PIC flag -fPIC -DPIC works... yes | |
checking if gcc static flag -static works... yes | |
checking if gcc supports -c -o file.o... yes | |
checking if gcc supports -c -o file.o... (cached) yes | |
checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes | |
checking whether -lc should be explicitly linked in... no | |
checking dynamic linker characteristics... GNU/Linux ld.so | |
checking how to hardcode library paths into programs... immediate | |
checking whether stripping libraries is possible... yes | |
checking if libtool supports shared libraries... yes | |
checking whether to build shared libraries... yes | |
checking whether to build static libraries... yes | |
checking whether make supports nested variables... (cached) yes | |
checking for pkg-config... /usr/bin/pkg-config | |
checking pkg-config is at least version 0.9.0... yes | |
checking for ar... /usr/bin/ar | |
checking for ranlib... /usr/bin/ranlib | |
checking for strip... /usr/bin/strip | |
checking for gcc... gcc | |
checking whether we are using the GNU C compiler... (cached) yes | |
checking whether gcc accepts -g... yes | |
checking for gcc option to accept ISO C89... (cached) none needed | |
checking whether gcc understands -c and -o together... (cached) yes | |
checking dependency style of gcc... (cached) gcc3 | |
checking how to run the C preprocessor... gcc -E | |
checking for gcc option to accept ISO C89... (cached) none needed | |
checking dependency style of gcc... gcc3 | |
checking if gcc supports -std=c89 -pedantic -Wall -Wextra -Wcast-align -Wnested-externs -Wshadow -Wstrict-prototypes -Wno-unused-function -Wno-long-long -Wno-overlength-strings... yes | |
checking if gcc supports -fvisibility=hidden... yes | |
checking for __int128... yes | |
checking for __builtin_expect... yes | |
checking native compiler: gcc... ok | |
checking for x86_64 assembly availability... yes | |
checking gmp.h usability... yes | |
checking gmp.h presence... yes | |
checking for gmp.h... yes | |
checking for __gmpz_init in -lgmp... yes | |
checking for CRYPTO... yes | |
checking for main in -lcrypto... yes | |
checking for EC functions in libcrypto... yes | |
checking whether byte ordering is bigendian... no | |
configure: Using static precomputation: yes | |
configure: Using assembly optimizations: x86_64 | |
configure: Using field implementation: 64bit | |
configure: Using bignum implementation: gmp | |
configure: Using scalar implementation: 64bit | |
configure: Using endomorphism optimizations: no | |
configure: Building benchmarks: yes | |
configure: Building for coverage analysis: no | |
configure: Building ECDH module: no | |
configure: Building ECDSA pubkey recovery module: no | |
configure: Using jni: no | |
checking that generated files are newer than configure... done | |
configure: creating ./config.status | |
config.status: creating Makefile | |
config.status: creating libsecp256k1.pc | |
config.status: creating src/libsecp256k1-config.h | |
config.status: executing depfiles commands | |
config.status: executing libtool commands | |
➜ secp256k1 git:(master) make | |
gcc -I. -g -O2 -Wall -Wextra -Wno-unused-function -c src/gen_context.c -o gen_context.o | |
gcc gen_context.o -o gen_context | |
./gen_context | |
CC src/libsecp256k1_la-secp256k1.lo | |
CCLD libsecp256k1.la | |
CC src/bench_verify.o | |
CCLD bench_verify | |
CC src/bench_sign.o | |
CCLD bench_sign | |
CC src/bench_internal-bench_internal.o | |
CCLD bench_internal | |
CC src/bench_ecmult-bench_ecmult.o | |
CCLD bench_ecmult | |
CC src/tests-tests.o | |
CCLD tests | |
CC src/exhaustive_tests-tests_exhaustive.o | |
CCLD exhaustive_tests | |
➜ secp256k1 git:(master) ./tests | |
test count = 64 | |
random seed = 6164f9457eaaac2d6c83aead8b9f2f33 | |
random run = 3bb96736a726d867cdd90540cfc31f9e | |
no problems found | |
➜ secp256k1 git:(master) sudo make install | |
[sudo] password for james: | |
make[1]: Entering directory '/home/james/Rust/secp256k1' | |
/usr/bin/mkdir -p '/usr/local/lib' | |
/bin/sh ./libtool --mode=install /usr/bin/install -c libsecp256k1.la '/usr/local/lib' | |
libtool: install: /usr/bin/install -c .libs/libsecp256k1.so.0.0.0 /usr/local/lib/libsecp256k1.so.0.0.0 | |
libtool: install: (cd /usr/local/lib && { ln -s -f libsecp256k1.so.0.0.0 libsecp256k1.so.0 || { rm -f libsecp256k1.so.0 && ln-s libsecp256k1.so.0.0.0 libsecp256k1.so.0; }; }) | |
libtool: install: (cd /usr/local/lib && { ln -s -f libsecp256k1.so.0.0.0 libsecp256k1.so || { rm -f libsecp256k1.so && ln -s libsecp256k1.so.0.0.0 libsecp256k1.so; }; }) | |
libtool: install: /usr/bin/install -c .libs/libsecp256k1.lai /usr/local/lib/libsecp256k1.la | |
libtool: install: /usr/bin/install -c .libs/libsecp256k1.a /usr/local/lib/libsecp256k1.a | |
libtool: install: chmod 644 /usr/local/lib/libsecp256k1.a | |
libtool: install: /usr/bin/ranlib /usr/local/lib/libsecp256k1.a | |
libtool: finish: PATH="/home/james/.cargo/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/sbin" ldconfig -n /usr/local/lib | |
---------------------------------------------------------------------- | |
Libraries have been installed in: | |
/usr/local/lib | |
If you ever happen to want to link against installed libraries | |
in a given directory, LIBDIR, you must either use libtool, and | |
specify the full pathname of the library, or use the '-LLIBDIR' | |
flag during linking and do at least one of the following: | |
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable | |
during execution | |
- add LIBDIR to the 'LD_RUN_PATH' environment variable | |
during linking | |
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag | |
- have your system administrator add LIBDIR to '/etc/ld.so.conf' | |
See any operating system documentation about shared libraries for | |
more information, such as the ld(1) and ld.so(8) manual pages. | |
---------------------------------------------------------------------- | |
/usr/bin/mkdir -p '/usr/local/include' | |
/usr/bin/install -c -m 644 include/secp256k1.h '/usr/local/include' | |
/usr/bin/mkdir -p '/usr/local/lib/pkgconfig' | |
/usr/bin/install -c -m 644 libsecp256k1.pc '/usr/local/lib/pkgconfig' | |
make[1]: Leaving directory '/home/james/Rust/secp256k1' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment