log for com.github.shadowsocks:5030050

== Installed Android Tools ==2022-06-24 23:10:48,240 DEBUG: Reading 'config.yml'2022-06-24 23:10:48,249 INFO: Using /opt/android-sdk/build-tools/29.0.3/apksigner2022-06-24 23:10:48,252 INFO: Creating log directory2022-06-24 23:10:48,252 INFO: Creating temporary directory2022-06-24 23:10:48,252 INFO: Creating output directory2022-06-24 23:10:48,256 DEBUG: Getting git vcs interface for https://github.com/shadowsocks/shadowsocks-android.git2022-06-24 23:10:48,256 DEBUG: > git --versiongit version 2.11.02022-06-24 23:10:48,488 INFO: Using git version 2.11.02022-06-24 23:10:48,489 DEBUG: Checking 5.3.0-nightly2022-06-24 23:10:48,489 INFO: Building version 5.3.0-nightly (5030050) of com.github.shadowsocks2022-06-24 23:10:48,489 WARNING: Android NDK version 'r21e' could not be found!2022-06-24 23:10:48,489 WARNING: Configured versions:2022-06-24 23:10:48,489 WARNING:   r23b: /opt/android-sdk/ndk/23.1.77796202022-06-24 23:10:48,490 INFO: Downloading https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip2022-06-24 23:10:48,503 DEBUG: Starting new HTTPS connection (1): dl.google.com2022-06-24 23:10:48,559 DEBUG: https://dl.google.com:443 "GET /android/repository/android-ndk-r21e-linux-x86_64.zip HTTP/1.1" 200 11906700722022-06-24 23:11:24,425 INFO: Unzipping to /opt/android-sdk/ndk2022-06-24 23:11:51,523 INFO: Set NDK r21e (21.4.7075529) up2022-06-24 23:11:51,530 INFO: Running 'sudo' commands in /home/vagrant2022-06-24 23:11:51,531 DEBUG: > sudo DEBIAN_FRONTEND=noninteractive bash -x -c apt-get update || apt-get update && apt-get install openjdk-11-jdk-headless && update-alternatives --auto java+ apt-get updateHit:1 http://security.debian.org/debian-security stretch/updates InReleaseIgn:2 http://deb.debian.org/debian stretch InReleaseHit:3 http://deb.debian.org/debian stretch-updates InReleaseGet:4 http://deb.debian.org/debian stretch-backports-sloppy InRelease [46.7 kB]Get:5 http://deb.debian.org/debian stretch-backports InRelease [91.8 kB]Get:6 http://deb.debian.org/debian testing InRelease [130 kB]Hit:7 http://deb.debian.org/debian stretch ReleaseGet:8 http://deb.debian.org/debian testing/main amd64 Packages.diff/Index [63.6 kB]Get:10 http://deb.debian.org/debian testing/main i386 Packages.diff/Index [63.6 kB]Get:11 http://deb.debian.org/debian testing/main Translation-en.diff/Index [63.6 kB]Get:12 http://deb.debian.org/debian testing/main amd64 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,438 B]Get:13 http://deb.debian.org/debian testing/main i386 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,431 B]Get:12 http://deb.debian.org/debian testing/main amd64 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,438 B]Get:13 http://deb.debian.org/debian testing/main i386 Packages T-2022-06-24-2010.09-F-2022-06-24-1413.16.pdiff [1,431 B]Get:14 http://deb.debian.org/debian testing/main Translation-en T-2022-06-24-1413.16-F-2022-06-24-1413.16.pdiff [85 B]Get:14 http://deb.debian.org/debian testing/main Translation-en T-2022-06-24-1413.16-F-2022-06-24-1413.16.pdiff [85 B]Fetched 462 kB in 5s (80.1 kB/s)Reading package lists...+ apt-get install openjdk-11-jdk-headlessReading package lists...Building dependency tree...Reading state information...The following additional packages will be installed:libasound2 libasound2-data openjdk-11-jre-headlessSuggested packages:libasound2-plugins alsa-utils openjdk-11-demo openjdk-11-source libnss-mdnsfonts-dejavu-extra fonts-ipafont-gothic fonts-ipafont-minchofonts-wqy-microhei | fonts-wqy-zenhei fonts-indicThe following NEW packages will be installed:libasound2 libasound2-data openjdk-11-jdk-headless openjdk-11-jre-headless0 upgraded, 4 newly installed, 0 to remove and 2 not upgraded.Need to get 230 MB of archives.After this operation, 374 MB of additional disk space will be used.Get:1 http://deb.debian.org/debian stretch/main amd64 libasound2-data all 1.1.3-5 [173 kB]Get:2 http://deb.debian.org/debian stretch/main amd64 libasound2 amd64 1.1.3-5 [497 kB]Get:3 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jre-headless amd64 11.0.6+10-1~bpo9+1 [37.4 MB]Get:4 http://deb.debian.org/debian stretch-backports/main amd64 openjdk-11-jdk-headless amd64 11.0.6+10-1~bpo9+1 [192 MB]Fetched 230 MB in 2s (101 MB/s)Selecting previously unselected package libasound2-data.(Reading database ... 65038 files and directories currently installed.)Preparing to unpack .../libasound2-data_1.1.3-5_all.deb ...Unpacking libasound2-data (1.1.3-5) ...Selecting previously unselected package libasound2:amd64.Preparing to unpack .../libasound2_1.1.3-5_amd64.deb ...Unpacking libasound2:amd64 (1.1.3-5) ...Selecting previously unselected package openjdk-11-jre-headless:amd64.Preparing to unpack .../openjdk-11-jre-headless_11.0.6+10-1~bpo9+1_amd64.deb ...Unpacking openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...Selecting previously unselected package openjdk-11-jdk-headless:amd64.Preparing to unpack .../openjdk-11-jdk-headless_11.0.6+10-1~bpo9+1_amd64.deb ...Unpacking openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...Setting up libasound2-data (1.1.3-5) ...Setting up libasound2:amd64 (1.1.3-5) ...Processing triggers for libc-bin (2.24-11+deb9u4) ...Setting up openjdk-11-jre-headless:amd64 (11.0.6+10-1~bpo9+1) ...Setting up openjdk-11-jdk-headless:amd64 (11.0.6+10-1~bpo9+1) ...update-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jdeprscan to provide /usr/bin/jdeprscan (jdeprscan) in auto modeupdate-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jimage to provide /usr/bin/jimage (jimage) in auto modeupdate-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jlink to provide /usr/bin/jlink (jlink) in auto modeupdate-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jmod to provide /usr/bin/jmod (jmod) in auto modeupdate-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jshell to provide /usr/bin/jshell (jshell) in auto modeupdate-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jaotc to provide /usr/bin/jaotc (jaotc) in auto modeupdate-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/jhsdb to provide /usr/bin/jhsdb (jhsdb) in auto mode+ update-alternatives --auto javaupdate-alternatives: using /usr/lib/jvm/java-11-openjdk-amd64/bin/java to provide /usr/bin/java (java) in auto mode2022-06-24 23:13:06,227 DEBUG: > sudo passwd --lock rootpasswd: password expiry information changed.2022-06-24 23:13:06,432 DEBUG: > sudo SUDO_FORCE_REMOVE=yes dpkg --purge sudo(Reading database ... 65695 files and directories currently installed.)Removing sudo (1.8.19p1-2.1+deb9u3) ...Purging configuration files for sudo (1.8.19p1-2.1+deb9u3) ...Processing triggers for systemd (232-25+deb9u13) ...2022-06-24 23:13:12,991 INFO: Getting source for revision 09c2290c1ba07336b11a6b7576886d202e14ac712022-06-24 23:13:12,992 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:12,992 DEBUG: > git rev-parse --show-toplevel2022-06-24 23:13:13,204 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:13,204 DEBUG: > git submodule foreach --recursive git reset --hard2022-06-24 23:13:13,813 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:13,813 DEBUG: > git reset --hard2022-06-24 23:13:14,023 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:14,024 DEBUG: > git submodule foreach --recursive git clean -dffx2022-06-24 23:13:14,330 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:14,330 DEBUG: > git clean -dffx2022-06-24 23:13:14,436 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:14,436 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch origin2022-06-24 23:13:15,145 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:15,146 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com remote prune origin2022-06-24 23:13:15,456 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:15,456 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com fetch --prune --tags --force origin2022-06-24 23:13:15,763 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:15,764 DEBUG: > git remote set-head origin --auto2022-06-24 23:13:16,186 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:16,187 DEBUG: > git checkout -f 09c2290c1ba07336b11a6b7576886d202e14ac712022-06-24 23:13:16,470 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:16,470 DEBUG: > git clean -dffx2022-06-24 23:13:16,577 INFO: Initialising submodules2022-06-24 23:13:16,578 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:16,578 DEBUG: > git rev-parse --show-toplevel2022-06-24 23:13:16,879 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:16,879 DEBUG: > git submodule sync2022-06-24 23:13:17,197 DEBUG: Directory: build/com.github.shadowsocks2022-06-24 23:13:17,198 DEBUG: > git -c core.askpass=/bin/true -c core.sshCommand=/bin/false -c url.https://.insteadOf=ssh:// -c url.https://u:p@bitbucket.org/.insteadOf=git@bitbucket.org: -c url.https://u:p@bitbucket.org.insteadOf=git://bitbucket.org -c url.https://u:p@bitbucket.org.insteadOf=https://bitbucket.org -c url.https://u:p@github.com/.insteadOf=git@github.com: -c url.https://u:p@github.com.insteadOf=git://github.com -c url.https://u:p@github.com.insteadOf=https://github.com -c url.https://u:p@gitlab.com/.insteadOf=git@gitlab.com: -c url.https://u:p@gitlab.com.insteadOf=git://gitlab.com -c url.https://u:p@gitlab.com.insteadOf=https://gitlab.com submodule update --init --force --recursiveSubmodule path 'core/src/main/jni/badvpn': checked out 'fb01eb983915c9a09a690ad44c6028dd87500ec7'Submodule path 'core/src/main/jni/libancillary': checked out '311e5d14f593f16c785bc6605220517eb1f21f6b'Submodule path 'core/src/main/jni/libevent': checked out 'f29f07bc8c43eec96f227e6f6eede32b3af66168'Submodule path 'core/src/main/jni/redsocks': checked out 'd9954892ba96627748efab2901f38d7e20d6d0a2'Submodule path 'core/src/main/rust/shadowsocks-rust': checked out 'e84e76a6821abdf75b5ba393d405b42d07d2dcdd'2022-06-24 23:13:17,708 INFO: Collecting source libraries2022-06-24 23:13:17,726 DEBUG: Removing debuggable flags from build/srclib/rustup2022-06-24 23:13:17,736 INFO: Creating local.properties file at build/com.github.shadowsocks/local.properties2022-06-24 23:13:17,736 INFO: Creating local.properties file at build/com.github.shadowsocks/mobile/local.properties2022-06-24 23:13:17,737 DEBUG: Removing debuggable flags from build/com.github.shadowsocks/mobile2022-06-24 23:13:17,738 INFO: Removing specified files2022-06-24 23:13:17,739 INFO: Removing tv2022-06-24 23:13:17,740 INFO: Removing core/src/main/jni/badvpn/lwip/test/fuzz/inputs2022-06-24 23:13:17,741 INFO: Removing mobile/src/main/java/com/github/shadowsocks/ScannerActivity.kt2022-06-24 23:13:17,741 INFO: Removing core/src/main/jni/badvpn/lime2022-06-24 23:13:17,756 INFO: Running 'prebuild' commands in build/com.github.shadowsocks/mobile2022-06-24 23:13:17,756 DEBUG: Directory: build/com.github.shadowsocks/mobile2022-06-24 23:13:17,756 DEBUG: > bash -x -c -- echo "rust.rustcCommand=$HOME/.cargo/bin/rustc" >> ../local.properties && echo "rust.cargoCommand=$HOME/.cargo/bin/cargo" >> ../local.properties && echo "rust.pythonCommand=/usr/bin/python3" >> ../local.properties && sed -i -e '/gms/d' -e '/firebase/d' ../build.gradle.kts && sed -i -e '/gms/d' -e '/firebase/d' -e '/kotlinx-coroutines-play-services/d' ../core/build.gradle.kts && sed -i -e '/gms/d' -e '/firebase/d' -e '/mlkit/d' -e '/camera/d' build.gradle.kts && pushd ../core/src/main && sed -i -e '/firebase/,/>$/d' -e '/gms/,/>$/d' AndroidManifest.xml && sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/*/strings.xml && cd java/com/github/shadowsocks && sed -i -e '/firebase/Id' Core.kt bg/BaseService.kt && popd && pushd src/main && sed -i -z -E -e 's/<activity[^<]+ScannerActivity[^>]+>//' AndroidManifest.xml && sed -i -e '/CAMERA/d' AndroidManifest.xml && sed -i -e '/"scan"/,/shortcut>/d' res/xml/shortcuts.xml && sed -i -z -E -e 's/<item[^<]+action_scan_qr_code[^>]+>//' res/menu/profile_manager_menu.xml && cd java/com/github/shadowsocks && sed -i -e '/firebase/Id' MainActivity.kt && sed -i -e '/OssLicensesMenuActivity/d' AboutFragment.kt && sed -i -e '/ScannerActivity/d' -e '/action_scan_qr_code/,/^\s\+}/d' ProfilesFragment.kt && popd && sed -i -e '/isEnable/s/true/false/' ../buildSrc/src/main/kotlin/Helpers.kt+ echo rust.rustcCommand=/home/vagrant/.cargo/bin/rustc+ echo rust.cargoCommand=/home/vagrant/.cargo/bin/cargo+ echo rust.pythonCommand=/usr/bin/python3+ sed -i -e /gms/d -e /firebase/d ../build.gradle.kts+ sed -i -e /gms/d -e /firebase/d -e /kotlinx-coroutines-play-services/d ../core/build.gradle.kts+ sed -i -e /gms/d -e /firebase/d -e /mlkit/d -e /camera/d build.gradle.kts+ pushd ../core/src/main~/build/com.github.shadowsocks/core/src/main ~/build/com.github.shadowsocks/mobile+ sed -i -e '/firebase/,/>$/d' -e '/gms/,/>$/d' AndroidManifest.xml+ sed -i -E -e '/service_subscription_working/s/%d(.*)%d/%1$d\1%2$d/' res/values-ar/strings.xml res/values-es/strings.xml res/values-fa/strings.xml res/values-fr/strings.xml res/values-ja/strings.xml res/values-ko/strings.xml res/values-ru/strings.xml res/values/strings.xml res/values-tr/strings.xml res/values-zh-rCN/strings.xml res/values-zh-rTW/strings.xml+ cd java/com/github/shadowsocks+ sed -i -e /firebase/Id Core.kt bg/BaseService.kt+ popd~/build/com.github.shadowsocks/mobile+ pushd src/main~/build/com.github.shadowsocks/mobile/src/main ~/build/com.github.shadowsocks/mobile+ sed -i -z -E -e 's/<activity[^<]+ScannerActivity[^>]+>//' AndroidManifest.xml+ sed -i -e /CAMERA/d AndroidManifest.xml+ sed -i -e '/"scan"/,/shortcut>/d' res/xml/shortcuts.xml+ sed -i -z -E -e 's/<item[^<]+action_scan_qr_code[^>]+>//' res/menu/profile_manager_menu.xml+ cd java/com/github/shadowsocks+ sed -i -e /firebase/Id MainActivity.kt+ sed -i -e /OssLicensesMenuActivity/d AboutFragment.kt+ sed -i -e /ScannerActivity/d -e '/action_scan_qr_code/,/^\s\+}/d' ProfilesFragment.kt+ popd~/build/com.github.shadowsocks/mobile+ sed -i -e /isEnable/s/true/false/ ../buildSrc/src/main/kotlin/Helpers.kt2022-06-24 23:13:17,975 INFO: Cleaning Gradle project...2022-06-24 23:13:17,976 DEBUG: Directory: build/com.github.shadowsocks/mobile2022-06-24 23:13:17,976 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid cleanFound 7.2 via distributionUrlDownloading missing gradle version 7.2cachedir /home/vagrant/.cache/fdroidserver/home/vagrant/.cache/fdroidserver/gradle-7.2-bin.zip: OKRunning /opt/gradle/versions/7.2/bin/gradle cleanWelcome to Gradle 7.2!Here are the highlights of this release:- Toolchain support for Scala- More cache hits when Java source files have platform-specific line endings- More resilient remote HTTP build cache behaviorFor more details see https://docs.gradle.org/7.2/release-notes.htmlTo honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.Daemon will be stopped at the end of the build> Task :buildSrc:compileKotlinw: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java> Task :buildSrc:compileJava NO-SOURCE> Task :buildSrc:compileGroovy NO-SOURCE> Task :buildSrc:pluginDescriptors> Task :buildSrc:processResources NO-SOURCE> Task :buildSrc:classes UP-TO-DATE> Task :buildSrc:inspectClassesForKotlinIC> Task :buildSrc:jar:jar: No valid plugin descriptors were found in META-INF/gradle-plugins> Task :buildSrc:assemble> Task :buildSrc:compileTestKotlin NO-SOURCE> Task :buildSrc:pluginUnderTestMetadata> Task :buildSrc:compileTestJava NO-SOURCE> Task :buildSrc:compileTestGroovy NO-SOURCE> Task :buildSrc:processTestResources NO-SOURCE> Task :buildSrc:testClasses UP-TO-DATE> Task :buildSrc:test NO-SOURCE> Task :buildSrc:validatePlugins> Task :buildSrc:check> Task :buildSrc:build> Configure project :coreWARNING:The option setting 'android.enableR8.fullMode=true' is experimental.The current default is 'false'.WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.The current default is 'true'.It will be removed in version 8.0 of the Android Gradle plugin.Warning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}][CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir> Configure project :mobileWarning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]Checking the license for package Android SDK Build-Tools 32 in /opt/android-sdk/licensesLicense for package Android SDK Build-Tools 32 accepted.Preparing "Install Android SDK Build-Tools 32 (revision: 32.0.0)"."Install Android SDK Build-Tools 32 (revision: 32.0.0)" ready.Installing Android SDK Build-Tools 32 in /opt/android-sdk/build-tools/32.0.0"Install Android SDK Build-Tools 32 (revision: 32.0.0)" complete."Install Android SDK Build-Tools 32 (revision: 32.0.0)" finished.Checking the license for package Android SDK Platform 31 in /opt/android-sdk/licensesLicense for package Android SDK Platform 31 accepted.Preparing "Install Android SDK Platform 31 (revision: 1)"."Install Android SDK Platform 31 (revision: 1)" ready.Installing Android SDK Platform 31 in /opt/android-sdk/platforms/android-31"Install Android SDK Platform 31 (revision: 1)" complete."Install Android SDK Platform 31 (revision: 1)" finished.> Task :mobile:clean UP-TO-DATEDeprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warningsBUILD SUCCESSFUL in 1m 41s7 actionable tasks: 6 executed, 1 up-to-date2022-06-24 23:15:03,413 INFO: Scanning source for common problems...2022-06-24 23:15:03,426 INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar2022-06-24 23:15:03,530 INFO: Creating source tarball...2022-06-24 23:15:04,899 INFO: Running 'build' commands in build/com.github.shadowsocks/mobile2022-06-24 23:15:04,899 DEBUG: Directory: build/com.github.shadowsocks/mobile2022-06-24 23:15:04,899 DEBUG: > bash -x -c /home/vagrant/build/srclib/rustup/rustup-init.sh -y && source $HOME/.cargo/env && rustup toolchain install nightly-2022-06-21 && rustup default nightly-2022-06-21 && cd ../core/src/main/rust/shadowsocks-rust && rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-android+ /home/vagrant/build/srclib/rustup/rustup-init.sh -yinfo: downloading installerinfo: profile set to 'default'info: default host triple is x86_64-unknown-linux-gnuinfo: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'info: latest update on 2022-05-19, rust version 1.61.0 (fe5b13d68 2022-05-18)info: downloading component 'cargo'info: downloading component 'clippy'info: downloading component 'rust-docs'info: downloading component 'rust-std'info: downloading component 'rustc'info: downloading component 'rustfmt'info: installing component 'cargo'info: installing component 'clippy'info: installing component 'rust-docs'info: installing component 'rust-std'info: installing component 'rustc'info: installing component 'rustfmt'info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'stable-x86_64-unknown-linux-gnu installed - rustc 1.61.0 (fe5b13d68 2022-05-18)Rust is installed now. Great!To get started you may need to restart your current shell.This would reload your PATH environment variable to includeCargo's bin directory ($HOME/.cargo/bin).To configure your current shell, run:source $HOME/.cargo/env+ source /home/vagrant/.cargo/env++ case ":${PATH}:" in++ export PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin++ PATH=/home/vagrant/.cargo/bin:/opt/android-sdk/ndk/21.4.7075529:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/opt/android-sdk/tools:/opt/android-sdk/platform-tools:/opt/gradle/bin+ rustup toolchain install nightly-2022-06-21info: syncing channel updates for 'nightly-2022-06-21-x86_64-unknown-linux-gnu'info: latest update on 2022-06-21, rust version 1.63.0-nightly (5750a6aa2 2022-06-20)info: downloading component 'cargo'info: downloading component 'clippy'info: downloading component 'rust-docs'info: downloading component 'rust-std'info: downloading component 'rustc'info: downloading component 'rustfmt'info: installing component 'cargo'info: installing component 'clippy'info: installing component 'rust-docs'info: installing component 'rust-std'info: installing component 'rustc'info: installing component 'rustfmt'nightly-2022-06-21-x86_64-unknown-linux-gnu installed - rustc 1.63.0-nightly (5750a6aa2 2022-06-20)info: checking for self-updates+ rustup default nightly-2022-06-21info: using existing install for 'nightly-2022-06-21-x86_64-unknown-linux-gnu'info: default toolchain set to 'nightly-2022-06-21-x86_64-unknown-linux-gnu'nightly-2022-06-21-x86_64-unknown-linux-gnu unchanged - rustc 1.63.0-nightly (5750a6aa2 2022-06-20)+ cd ../core/src/main/rust/shadowsocks-rust+ rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-androidinfo: downloading component 'rust-std' for 'armv7-linux-androideabi'info: installing component 'rust-std' for 'armv7-linux-androideabi'info: downloading component 'rust-std' for 'aarch64-linux-android'info: installing component 'rust-std' for 'aarch64-linux-android'info: downloading component 'rust-std' for 'i686-linux-android'info: installing component 'rust-std' for 'i686-linux-android'info: downloading component 'rust-std' for 'x86_64-linux-android'info: installing component 'rust-std' for 'x86_64-linux-android'2022-06-24 23:15:51,932 INFO: Building Gradle project...2022-06-24 23:15:51,933 DEBUG: Directory: build/com.github.shadowsocks/mobile2022-06-24 23:15:51,933 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid assembleReleaseFound 7.2 via distributionUrlRunning /opt/gradle/versions/7.2/bin/gradle assembleReleaseTo honour the JVM settings for this build a single-use Daemon process will be forked. See https://docs.gradle.org/7.2/userguide/gradle_daemon.html#sec:disabling_the_daemon.Daemon will be stopped at the end of the build> Task :buildSrc:compileKotlinw: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/buildSrc/src/main/kotlin/Helpers.kt: (115, 65): 'VariantOutput' is deprecated. Deprecated in Java> Task :buildSrc:compileJava NO-SOURCE> Task :buildSrc:compileGroovy NO-SOURCE> Task :buildSrc:pluginDescriptors> Task :buildSrc:processResources NO-SOURCE> Task :buildSrc:classes UP-TO-DATE> Task :buildSrc:inspectClassesForKotlinIC> Task :buildSrc:jar:jar: No valid plugin descriptors were found in META-INF/gradle-plugins> Task :buildSrc:assemble> Task :buildSrc:compileTestKotlin NO-SOURCE> Task :buildSrc:pluginUnderTestMetadata> Task :buildSrc:compileTestJava NO-SOURCE> Task :buildSrc:compileTestGroovy NO-SOURCE> Task :buildSrc:processTestResources NO-SOURCE> Task :buildSrc:testClasses UP-TO-DATE> Task :buildSrc:test NO-SOURCE> Task :buildSrc:validatePlugins> Task :buildSrc:check> Task :buildSrc:build> Configure project :coreWARNING:The option setting 'android.enableR8.fullMode=true' is experimental.The current default is 'false'.WARNING:The option setting 'android.enableResourceOptimizations=false' is deprecated.The current default is 'true'.It will be removed in version 8.0 of the Android Gradle plugin.[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirWARNING:[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir> Task :core:preBuild UP-TO-DATE> Task :core:preReleaseBuild UP-TO-DATE> Task :plugin:preBuild UP-TO-DATE> Task :plugin:preReleaseBuild UP-TO-DATE> Task :plugin:compileReleaseAidl NO-SOURCE> Task :plugin:packageReleaseRenderscript NO-SOURCE> Task :core:compileReleaseRenderscript NO-SOURCE> Task :core:generateReleaseBuildConfig> Task :core:generateReleaseResValues> Task :core:generateReleaseResources> Task :core:compileReleaseAidl> Task :core:packageReleaseResources> Task :plugin:compileReleaseRenderscript NO-SOURCE> Task :plugin:generateReleaseResValues> Task :plugin:generateReleaseResources> Task :plugin:packageReleaseResources> Task :plugin:generateReleaseBuildConfig> Task :plugin:parseReleaseLocalResources> Task :core:parseReleaseLocalResources> Task :plugin:processReleaseManifest> Task :core:processReleaseManifest> Task :plugin:javaPreCompileRelease> Task :mobile:preBuild UP-TO-DATE> Task :mobile:preReleaseBuild UP-TO-DATE> Task :mobile:compileReleaseAidl NO-SOURCE> Task :core:packageReleaseRenderscript NO-SOURCE> Task :mobile:compileReleaseRenderscript NO-SOURCE> Task :core:javaPreCompileRelease> Task :mobile:generateReleaseBuildConfig> Task :mobile:generateReleaseResValues> Task :plugin:writeReleaseAarMetadata> Task :core:writeReleaseAarMetadata> Task :mobile:generateReleaseResources> Task :plugin:generateReleaseRFile> Task :mobile:createReleaseCompatibleScreenManifests> Task :core:extractDeepLinksRelease> Task :mobile:extractDeepLinksRelease> Task :plugin:extractDeepLinksRelease> Task :mobile:processReleaseMainManifest> Task :mobile:processReleaseManifest> Task :mobile:javaPreCompileRelease> Task :mobile:checkReleaseAarMetadata> Task :mobile:mergeReleaseResources> Task :mobile:processReleaseManifestForPackage> Task :core:generateReleaseRFile> Task :plugin:compileReleaseKotlin> Task :plugin:compileReleaseJavaWithJavac> Task :plugin:bundleLibCompileToJarRelease> Task :core:configureNdkBuildRelease> Task :core:buildNdkBuildReleaseC/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);C/C++:                         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]C/C++:         arc4random_addrandom((unsigned char*)buf,C/C++:         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warningC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:            (                                                          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:                      ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 4 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 1 warning generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warningC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:            (                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:                 ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         } while (p = p->next);C/C++:                  ~~^~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warningC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                  (          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparisonC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                    ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 13 warnings generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);C/C++:                         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]C/C++:         arc4random_addrandom((unsigned char*)buf,C/C++:         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warningC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:            (                                                          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:                      ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 4 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 1 warning generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {C/C++:                                                               ^~C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' hereC/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);C/C++:                                                                       ^C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warningC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:            (                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:                 ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         } while (p = p->next);C/C++:                  ~~^~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warningC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                  (          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparisonC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                    ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 14 warnings generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);C/C++:                         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]C/C++:         arc4random_addrandom((unsigned char*)buf,C/C++:         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warningC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:            (                                                          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:                      ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 4 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 1 warning generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warningC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:            (                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:                 ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         } while (p = p->next);C/C++:                  ~~^~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warningC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                  (          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparisonC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                    ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 13 warnings generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/redsocks/redsocks.c:625:11: warning: implicit declaration of function 'pipe2' is invalid in C99 [-Wimplicit-function-declaration]C/C++:                 error = pipe2(&pump->request.read, O_NONBLOCK);C/C++:                         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/libevent/evutil_rand.c:198:2: warning: implicit declaration of function 'arc4random_addrandom' is invalid in C99 [-Wimplicit-function-declaration]C/C++:         arc4random_addrandom((unsigned char*)buf,C/C++:         ^C/C++: 1 warning generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:87:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:            ~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: place parentheses around the assignment to silence this warningC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:            (                                                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:130:18: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (timer = (ref = BReactor__TimersTree_GetFirst(&bsys->timers_tree, 0)).link) {C/C++:                  ^C/C++:                  ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:183:56: warning: taking address of packed member 'data' of class or structure 'epoll_event' may result in an unaligned pointer value [-Waddress-of-packed-member]C/C++:         bfd->epoll_returned_ptr = (BFileDescriptor **)&event->data.ptr;C/C++:                                                        ^~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: place parentheses around the assignment to silence this warningC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:            (                                                          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:544:22: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (list_node = LinkedList1_GetFirst(&bsys->active_limits_list)) {C/C++:                      ^C/C++:                      ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/system/BReactor_badvpn.c:1021:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 5 warnings generated.C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/flow/PacketPassFairQueue.c:174:20: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(res)C/C++:                    ^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 1 warning generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: 10 warnings generated.C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:353:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:356:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = n1->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:360:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = n1->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[!side] = c) {C/C++:             ~~~~~~~~~~~~~~~~^~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:             (                  )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:368:29: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[!side] = c) {C/C++:                             ^C/C++:                             ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->parent = n2->parent) {C/C++:             ~~~~~~~~~~~^~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:             (                      )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:376:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->parent = n2->parent) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->parent = temp) {C/C++:             ~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:             (                )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:381:24: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->parent = temp) {C/C++:                        ^C/C++:                        ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[0] = n2->link[0]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:389:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[0] = n2->link[0]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[0] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:392:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[0] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n1->link[1] = n2->link[1]) {C/C++:             ~~~~~~~~~~~~^~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:             (                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:398:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n1->link[1] = n2->link[1]) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         if (n2->link[1] = temp) {C/C++:             ~~~~~~~~~~~~^~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: place parentheses around the assignment to silence this warningC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:             (                 )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/structure/BAVL.h:401:25: note: use '==' to turn this assignment into an equality comparisonC/C++:         if (n2->link[1] = temp) {C/C++:                         ^C/C++:                         ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:450:63: warning: passing 'int *' to parameter of type 'socklen_t *' (aka 'unsigned int *') converts between pointers to integer types with different sign [-Wpointer-sign]C/C++:         if ((sock2 = accept(sock, (struct sockaddr *)&remote, &t)) == -1) {C/C++:                                                               ^~C/C++: /opt/android-sdk/ndk/21.4.7075529/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/sys/socket.h:301:71: note: passing argument to parameter '__addr_length' hereC/C++: __socketcall int accept(int __fd, struct sockaddr* __addr, socklen_t* __addr_length);C/C++:                                                                       ^C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:            ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: place parentheses around the assignment to silence this warningC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:            (                                        )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:676:17: note: use '==' to turn this assignment into an equality comparisonC/C++:     while (node = LinkedList1_GetFirst(&tcp_clients)) {C/C++:                 ^C/C++:                 ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: warning: using the result of an assignment as a condition without parentheses [-Wparentheses]C/C++:         } while (p = p->next);C/C++:                  ~~^~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: place parentheses around the assignment to silence this warningC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                  (          )C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1592:20: note: use '==' to turn this assignment into an equality comparisonC/C++:         } while (p = p->next);C/C++:                    ^C/C++:                    ==C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/tun2socks/tun2socks.c:1924:88: warning: expression result unused [-Wunused-value]C/C++:     ASSERT_EXECUTE(pbuf_copy_partial(p, client->buf + client->buf_used, p->tot_len, 0) == p->tot_len)C/C++:                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^  ~~~~~~~~~~C/C++: /home/vagrant/build/com.github.shadowsocks/core/src/main/jni/badvpn/misc/debug.h:116:34: note: expanded from macro 'ASSERT_EXECUTE'C/C++:     #define ASSERT_EXECUTE(e) { (e); }C/C++:                                  ^C/C++: 14 warnings generated.> Task :plugin:mergeReleaseJniLibFolders> Task :plugin:mergeReleaseNativeLibs NO-SOURCE> Task :plugin:stripReleaseDebugSymbols NO-SOURCE> Task :plugin:copyReleaseJniLibsProjectOnly> Task :generateLinkerWrapperwarn: removing resource com.github.shadowsocks:string/advanced without required default value.warn: removing resource com.github.shadowsocks:string/auto_connect_summary_v24 without required default value.warn: removing resource com.github.shadowsocks:string/invalid_server without required default value.warn: removing resource com.github.shadowsocks:string/night_mode without required default value.warn: removing resource com.github.shadowsocks:string/night_mode_auto without required default value.warn: removing resource com.github.shadowsocks:string/night_mode_off without required default value.warn: removing resource com.github.shadowsocks:string/night_mode_on without required default value.warn: removing resource com.github.shadowsocks:string/night_mode_system without required default value.warn: removing resource com.github.shadowsocks:string/received without required default value.warn: removing resource com.github.shadowsocks:string/sent without required default value.warn: removing resource com.github.shadowsocks:string/tcp_fastopen_failure without required default value.warn: removing resource com.github.shadowsocks:string/tcp_fastopen_summary without required default value.warn: removing resource com.github.shadowsocks:string/tcp_fastopen_summary_unsupported without required default value.> Task :mobile:processReleaseResources> Task :core:kaptGenerateStubsReleaseKotlin> Task :core:externalNativeBuildRelease> Task :core:cargoBuildArm[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirUpdating crates.io index> Task :core:kaptReleaseKotlin> Task :core:cargoBuildArmDownloading crates ...Downloaded chacha20poly1305 v0.9.0Downloaded block-buffer v0.10.2Downloaded arrayvec v0.7.2Downloaded const-oid v0.7.1Downloaded cipher v0.4.3Downloaded inout v0.1.3Downloaded spin v0.9.3Downloaded md5-asm v0.5.0Downloaded aes-gcm-siv v0.10.3Downloaded byte-tools v0.3.1Downloaded cipher v0.3.0Downloaded autocfg v1.1.0Downloaded aes v0.8.1Downloaded log-mdc v0.1.0Downloaded futures-sink v0.3.21Downloaded form_urlencoded v1.0.1Downloaded ordered-float v2.10.0Downloaded indexmap v1.8.2Downloaded crypto-bigint v0.3.2Downloaded build-time v0.1.1Downloaded byte_string v1.0.0Downloaded pin-project-lite v0.2.9Downloaded idna v0.2.3Downloaded clap v3.1.18Downloaded ecdsa v0.13.4Downloaded fake-simd v0.1.2Downloaded futures-core v0.3.21Downloaded ghash v0.4.4Downloaded hostname v0.3.1Downloaded lru-cache v0.1.2Downloaded scopeguard v1.1.0Downloaded json5 v0.4.1Downloaded num-traits v0.2.15Downloaded log v0.4.17Downloaded termcolor v1.1.3Downloaded enum-as-inner v0.4.0Downloaded p256 v0.10.1Downloaded arc-swap v1.5.0Downloaded anyhow v1.0.57Downloaded aes-gcm v0.9.4Downloaded chrono v0.4.19Downloaded der v0.5.1Downloaded constant_time_eq v0.1.5Downloaded chacha20 v0.8.1Downloaded digest v0.8.1Downloaded crypto-common v0.1.3Downloaded crossbeam-utils v0.8.8Downloaded crossbeam-channel v0.5.4Downloaded libc v0.2.126Downloaded clap_lex v0.2.0Downloaded data-encoding v2.3.2Downloaded futures-io v0.3.21Downloaded linked-hash-map v0.5.4Downloaded exitcode v1.1.2Downloaded directories v4.0.1Downloaded unicode-ident v1.0.0Downloaded zeroize v1.3.0Downloaded xdg v2.4.1Downloaded derivative v2.2.0Downloaded cc v1.0.73Downloaded socket2 v0.4.4Downloaded dirs-sys v0.3.7Downloaded untrusted v0.7.1Downloaded universal-hash v0.4.1Downloaded version_check v0.9.4Downloaded yaml-rust v0.4.5Downloaded url v2.2.2Downloaded thread-id v4.0.0Downloaded iprange v0.6.7Downloaded block-padding v0.1.5Downloaded tinyvec_macros v0.1.0Downloaded tokio-macros v1.7.0Downloaded typemap v0.3.3Downloaded trust-dns-resolver v0.21.2Downloaded tokio-tfo v0.2.0Downloaded terminal_size v0.1.17Downloaded sha-1 v0.8.2Downloaded thiserror-impl v1.0.31Downloaded ucd-trie v0.1.3Downloaded opaque-debug v0.2.3Downloaded tokio v1.18.2Downloaded pest v2.1.3Downloaded sha1 v0.10.1Downloaded pin-project-internal v1.0.10Downloaded p384 v0.9.0Downloaded futures-task v0.3.21Downloaded mio v0.8.3Downloaded parking_lot_core v0.9.3Downloaded matches v0.1.9Downloaded pest_meta v2.1.3Downloaded subtle v2.4.1Downloaded signal-hook-registry v1.4.0Downloaded serde v1.0.137Downloaded signature v1.4.0Downloaded sha1-asm v0.5.1Downloaded pest_generator v2.1.3Downloaded serde-value v0.7.0Downloaded resolv-conf v0.7.0Downloaded strsim v0.10.0Downloaded syn v1.0.96Downloaded poly1305 v0.7.2Downloaded hkdf v0.12.3Downloaded typenum v1.15.0Downloaded textwrap v0.15.0Downloaded regex-syntax v0.6.26Downloaded sendfd v0.4.1Downloaded ring-compat v0.4.1Downloaded trust-dns-proto v0.21.2Downloaded rand_chacha v0.3.1Downloaded tinyvec v1.6.0Downloaded serde_yaml v0.8.24Downloaded serde_urlencoded v0.7.1Downloaded proc-macro2 v1.0.39Downloaded percent-encoding v2.1.0Downloaded pin-project v1.0.10Downloaded traitobject v0.1.0Downloaded smallvec v1.8.0Downloaded serde_derive v1.0.137Downloaded regex v1.5.6Downloaded ring v0.16.20Downloaded spin v0.5.2Downloaded slab v0.4.6Downloaded rand_core v0.6.3Downloaded quote v1.0.18Downloaded os_str_bytes v6.1.0Downloaded md-5 v0.10.1Downloaded parking_lot v0.12.1Downloaded quick-error v1.2.3Downloaded match_cfg v0.1.0Downloaded num_cpus v1.13.1Downloaded sec1 v0.2.1Downloaded serde_json v1.0.81Downloaded rand v0.8.5Downloaded ryu v1.0.10Downloaded pin-utils v0.1.0Downloaded pest_derive v2.1.0Downloaded once_cell v1.12.0Downloaded num-integer v0.1.45Downloaded time v0.1.43Downloaded thiserror v1.0.31Downloaded ppv-lite86 v0.2.16Downloaded notify v5.0.0-pre.15Downloaded same-file v1.0.6Downloaded opaque-debug v0.3.0Downloaded lru_time_cache v0.11.11Downloaded itoa v1.0.2Downloaded heck v0.4.0Downloaded ipnet v2.5.0Downloaded humantime v2.1.0Downloaded log4rs v1.1.1Downloaded shadowsocks-crypto v0.4.0Downloaded memchr v2.5.0Downloaded byteorder v1.4.3Downloaded ed25519 v1.5.2Downloaded block-buffer v0.7.3Downloaded unicode-normalization v0.1.19Downloaded maplit v1.0.2Downloaded hashbrown v0.11.2Downloaded polyval v0.5.3Downloaded lock_api v0.4.7Downloaded rpassword v6.0.1Downloaded inotify-sys v0.1.5Downloaded inotify v0.9.6Downloaded futures-macro v0.3.21Downloaded elliptic-curve v0.11.12Downloaded bitflags v1.3.2Downloaded unicode-bidi v0.3.8Downloaded filetime v0.2.16Downloaded digest v0.9.0Downloaded base64 v0.13.0Downloaded async-trait v0.1.56Downloaded walkdir v2.3.2Downloaded bytes v1.1.0Downloaded unsafe-any v0.4.2Downloaded generic-array v0.12.4Downloaded generic-array v0.14.5Downloaded boxfnonce v0.1.1Downloaded digest v0.10.3Downloaded cpufeatures v0.2.2Downloaded ccm v0.4.4Downloaded aho-corasick v0.7.18Downloaded aes v0.7.5Downloaded arrayref v0.3.6Downloaded atty v0.2.14Downloaded aead v0.4.3Downloaded getrandom v0.2.6Downloaded lazy_static v1.4.0Downloaded hmac v0.12.1Downloaded futures v0.3.21Downloaded futures-executor v0.3.21Downloaded fnv v1.0.7Downloaded dirs v4.0.0Downloaded daemonize v0.4.1Downloaded ctr v0.8.0Downloaded blake3 v1.3.1Downloaded futures-util v0.3.21Downloaded futures-channel v0.3.21Downloaded base16ct v0.1.1Downloaded cfg-if v1.0.0Downloading crates ...Downloaded env_logger v0.9.0Compiling libc v0.2.126Compiling proc-macro2 v1.0.39Compiling unicode-ident v1.0.0Compiling syn v1.0.96Compiling autocfg v1.1.0Compiling cfg-if v1.0.0Compiling version_check v0.9.4Compiling typenum v1.15.0Compiling serde_derive v1.0.137Compiling serde v1.0.137Compiling subtle v2.4.1Compiling memchr v2.5.0Compiling parking_lot_core v0.9.3Compiling futures-core v0.3.21Compiling scopeguard v1.1.0Compiling log v0.4.17Compiling pin-project-lite v0.2.9Compiling smallvec v1.8.0Compiling opaque-debug v0.3.0Compiling futures-channel v0.3.21Compiling futures-task v0.3.21Compiling futures-sink v0.3.21Compiling futures-util v0.3.21Compiling futures-io v0.3.21Compiling bytes v1.1.0Compiling matches v0.1.9Compiling pin-utils v0.1.0Compiling slab v0.4.6Compiling tinyvec_macros v0.1.0Compiling once_cell v1.12.0Compiling ryu v1.0.10Compiling percent-encoding v2.1.0Compiling linked-hash-map v0.5.4Compiling lazy_static v1.4.0Compiling ppv-lite86 v0.2.16Compiling ucd-trie v0.1.3Compiling unicode-bidi v0.3.8Compiling crossbeam-utils v0.8.8Compiling itoa v1.0.2Compiling async-trait v0.1.56Compiling serde_json v1.0.81Compiling cc v1.0.73Compiling zeroize v1.3.0Compiling heck v0.4.0Compiling maplit v1.0.2Compiling ipnet v2.5.0Compiling match_cfg v0.1.0Compiling data-encoding v2.3.2Compiling arrayvec v0.7.2Compiling quick-error v1.2.3Compiling hashbrown v0.11.2Compiling arrayref v0.3.6Compiling same-file v1.0.6Compiling constant_time_eq v0.1.5Compiling bitflags v1.3.2Compiling arc-swap v1.5.0Compiling traitobject v0.1.0Compiling anyhow v1.0.57Compiling os_str_bytes v6.1.0Compiling base64 v0.13.0Compiling regex-syntax v0.6.26Compiling byte_string v1.0.0Compiling lru_time_cache v0.11.11Compiling humantime v2.1.0Compiling termcolor v1.1.3Compiling strsim v0.10.0Compiling boxfnonce v0.1.1Compiling log-mdc v0.1.0Compiling fnv v1.0.7Compiling byteorder v1.4.3Compiling exitcode v1.1.2Compiling lock_api v0.4.7Compiling num-integer v0.1.45Compiling num-traits v0.2.15Compiling indexmap v1.8.2Compiling generic-array v0.14.5Compiling tinyvec v1.6.0Compiling form_urlencoded v1.0.1Compiling lru-cache v0.1.2Compiling yaml-rust v0.4.5Compiling pest v2.1.3Compiling iprange v0.6.7Compiling walkdir v2.3.2Compiling unsafe-any v0.4.2Compiling clap_lex v0.2.0Compiling blake3 v1.3.1Compiling typemap v0.3.3Compiling pest_meta v2.1.3Compiling unicode-normalization v0.1.19Compiling aho-corasick v0.7.18Compiling quote v1.0.18Compiling getrandom v0.2.6Compiling num_cpus v1.13.1Compiling socket2 v0.4.4Compiling signal-hook-registry v1.4.0Compiling hostname v0.3.1Compiling dirs-sys v0.3.7Compiling filetime v0.2.16Compiling time v0.1.43Compiling terminal_size v0.1.17Compiling atty v0.2.14Compiling thread-id v4.0.0Compiling daemonize v0.4.1Compiling crossbeam-channel v0.5.4Compiling idna v0.2.3Compiling spin v0.9.3Compiling regex v1.5.6Compiling ordered-float v2.10.0Compiling crypto-common v0.1.3Compiling cipher v0.3.0Compiling universal-hash v0.4.1Compiling block-buffer v0.10.2Compiling aead v0.4.3Compiling inout v0.1.3Compiling parking_lot v0.12.1Compiling rand_core v0.6.3Compiling dirs v4.0.0Compiling directories v4.0.1Compiling resolv-conf v0.7.0Compiling textwrap v0.15.0Compiling notify v5.0.0-pre.15Compiling chrono v0.4.19Compiling ctr v0.8.0Compiling chacha20 v0.8.1Compiling polyval v0.5.3Compiling poly1305 v0.7.2Compiling digest v0.10.3Compiling cipher v0.4.3Compiling xdg v2.4.1Compiling rand_chacha v0.3.1Compiling clap v3.1.18Compiling aes v0.7.5Compiling ccm v0.4.4Compiling ghash v0.4.4Compiling chacha20poly1305 v0.9.0Compiling hmac v0.12.1Compiling md-5 v0.10.1Compiling sha1 v0.10.1Compiling aes v0.8.1Compiling rand v0.8.5Compiling aes-gcm-siv v0.10.3Compiling aes-gcm v0.9.4Compiling hkdf v0.12.3Compiling pest_generator v2.1.3Compiling shadowsocks-crypto v0.4.0Compiling futures-macro v0.3.21Compiling tokio-macros v1.7.0Compiling thiserror-impl v1.0.31Compiling pin-project-internal v1.0.10Compiling enum-as-inner v0.4.0Compiling pest_derive v2.1.0Compiling derivative v2.2.0Compiling build-time v0.1.1Compiling thiserror v1.0.31Compiling pin-project v1.0.10Compiling futures-executor v0.3.21Compiling futures v0.3.21Compiling url v2.2.2Compiling serde_urlencoded v0.7.1Compiling json5 v0.4.1Compiling serde-value v0.7.0Compiling serde_yaml v0.8.24Compiling mio v0.8.3Compiling rpassword v6.0.1Compiling tokio v1.18.2Compiling log4rs v1.1.1Compiling trust-dns-proto v0.21.2Compiling tokio-tfo v0.2.0Compiling sendfd v0.4.1Compiling trust-dns-resolver v0.21.2Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 3m 19s> Task :core:compileReleaseKotlinw: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/Core.kt: (144, 23): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/Core.kt: (145, 27): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (72, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (78, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (82, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/aidl/ShadowsocksConnection.kt: (121, 26): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (266, 13): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/BaseService.kt: (343, 34): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (82, 21): The value 'true' assigned to 'var running: Boolean defined in com.github.shadowsocks.bg.GuardedProcessPool.Guard.looper' is never usedw: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/GuardedProcessPool.kt: (87, 17): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/bg/VpnService.kt: (196, 38): Type mismatch: inferred type is String? but String was expectedw: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/database/PrivateDatabase.kt: (50, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/database/PublicDatabase.kt: (43, 36): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 32): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (51, 44): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/DefaultNetworkListener.kt: (55, 25): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ObsoleteCoroutinesApi' or '@OptIn(kotlinx.coroutines.ObsoleteCoroutinesApi::class)'w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/HttpsTest.kt: (92, 19): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 46): Type mismatch: inferred type is String? but String was expectedw: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/net/Subnet.kt: (81, 71): Unsafe use of a nullable receiver of type String?w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (111, 36): This declaration is experimental and its usage should be marked with '@kotlinx.coroutines.ExperimentalCoroutinesApi' or '@OptIn(kotlinx.coroutines.ExperimentalCoroutinesApi::class)'w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/subscription/SubscriptionService.kt: (114, 21): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (86, 64): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.w: /home/vagrant/build/com.github.shadowsocks/core/src/main/java/com/github/shadowsocks/utils/Utils.kt: (88, 9): This is a delicate API and its use requires care. Make sure you fully read and understand documentation of the declaration that is marked as a delicate API.> Task :core:compileReleaseJavaWithJavac> Task :core:bundleLibCompileToJarRelease> Task :core:cargoBuildArm64[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirCompiling cfg-if v1.0.0Compiling subtle v2.4.1Compiling zeroize v1.3.0Compiling opaque-debug v0.3.0Compiling scopeguard v1.1.0Compiling smallvec v1.8.0Compiling pin-project-lite v0.2.9Compiling const-oid v0.7.1Compiling futures-sink v0.3.21Compiling tinyvec_macros v0.1.0Compiling futures-io v0.3.21Compiling bytes v1.1.0Compiling slab v0.4.6Compiling matches v0.1.9Compiling base16ct v0.1.1Compiling pin-utils v0.1.0Compiling once_cell v1.12.0Compiling ppv-lite86 v0.2.16Compiling ryu v1.0.10Compiling lazy_static v1.4.0Compiling linked-hash-map v0.5.4Compiling percent-encoding v2.1.0Compiling itoa v1.0.2Compiling unicode-bidi v0.3.8Compiling match_cfg v0.1.0Compiling untrusted v0.7.1Compiling spin v0.5.2Compiling ipnet v2.5.0Compiling data-encoding v2.3.2Compiling hashbrown v0.11.2Compiling constant_time_eq v0.1.5Compiling same-file v1.0.6Compiling arrayvec v0.7.2Compiling arrayref v0.3.6Compiling quick-error v1.2.3Compiling bitflags v1.3.2Compiling traitobject v0.1.0Compiling arc-swap v1.5.0Compiling ucd-trie v0.1.3Compiling lru_time_cache v0.11.11Compiling base64 v0.13.0Compiling os_str_bytes v6.1.0Compiling byte_string v1.0.0Compiling regex-syntax v0.6.26Compiling termcolor v1.1.3Compiling humantime v2.1.0Compiling fnv v1.0.7Compiling boxfnonce v0.1.1Compiling strsim v0.10.0Compiling log-mdc v0.1.0Compiling byteorder v1.4.3Compiling exitcode v1.1.2Compiling libc v0.2.126Compiling typenum v1.15.0Compiling serde v1.0.137Compiling memchr v2.5.0Compiling parking_lot_core v0.9.3Compiling log v0.4.17Compiling futures-core v0.3.21Compiling futures-channel v0.3.21Compiling ring v0.16.20Compiling futures-task v0.3.21Compiling futures-util v0.3.21Compiling tinyvec v1.6.0Compiling der v0.5.1Compiling serde_json v1.0.81Compiling crossbeam-utils v0.8.8Compiling lru-cache v0.1.2Compiling yaml-rust v0.4.5Compiling form_urlencoded v1.0.1Compiling walkdir v2.3.2Compiling iprange v0.6.7Compiling anyhow v1.0.57Compiling unsafe-any v0.4.2Compiling pest v2.1.3Compiling clap_lex v0.2.0Compiling generic-array v0.14.5Compiling lock_api v0.4.7Compiling num-integer v0.1.45Compiling num-traits v0.2.15Compiling indexmap v1.8.2Compiling blake3 v1.3.1Compiling unicode-normalization v0.1.19Compiling typemap v0.3.3Compiling getrandom v0.2.6Compiling cpufeatures v0.2.2Compiling socket2 v0.4.4Compiling num_cpus v1.13.1Compiling signal-hook-registry v1.4.0Compiling hostname v0.3.1Compiling dirs-sys v0.3.7Compiling filetime v0.2.16Compiling time v0.1.43Compiling terminal_size v0.1.17Compiling thread-id v4.0.0Compiling atty v0.2.14Compiling daemonize v0.4.1Compiling aho-corasick v0.7.18Compiling crossbeam-channel v0.5.4Compiling spin v0.9.3Compiling rand_core v0.6.3Compiling parking_lot v0.12.1Compiling idna v0.2.3Compiling resolv-conf v0.7.0Compiling dirs v4.0.0Compiling directories v4.0.1Compiling textwrap v0.15.0Compiling regex v1.5.6Compiling signature v1.4.0Compiling rand_chacha v0.3.1Compiling notify v5.0.0-pre.15Compiling crypto-common v0.1.3Compiling cipher v0.3.0Compiling block-buffer v0.10.2Compiling universal-hash v0.4.1Compiling crypto-bigint v0.3.2Compiling sec1 v0.2.1Compiling aead v0.4.3Compiling inout v0.1.3Compiling digest v0.9.0Compiling xdg v2.4.1Compiling ordered-float v2.10.0Compiling clap v3.1.18Compiling thiserror v1.0.31Compiling pin-project v1.0.10Compiling ed25519 v1.5.2Compiling rand v0.8.5Compiling ctr v0.8.0Compiling chacha20 v0.8.1Compiling digest v0.10.3Compiling polyval v0.5.3Compiling poly1305 v0.7.2Compiling cipher v0.4.3Compiling elliptic-curve v0.11.12Compiling chrono v0.4.19Compiling aes v0.7.5Compiling ccm v0.4.4Compiling hmac v0.12.1Compiling md-5 v0.10.1Compiling sha1 v0.10.1Compiling ghash v0.4.4Compiling chacha20poly1305 v0.9.0Compiling aes v0.8.1Compiling ecdsa v0.13.4Compiling url v2.2.2Compiling serde_urlencoded v0.7.1Compiling serde_yaml v0.8.24Compiling json5 v0.4.1Compiling serde-value v0.7.0Compiling futures-executor v0.3.21Compiling aes-gcm-siv v0.10.3Compiling hkdf v0.12.3Compiling aes-gcm v0.9.4Compiling p256 v0.10.1Compiling p384 v0.9.0Compiling mio v0.8.3Compiling rpassword v6.0.1Compiling log4rs v1.1.1Compiling futures v0.3.21Compiling ring-compat v0.4.1Compiling tokio v1.18.2Compiling shadowsocks-crypto v0.4.0Compiling trust-dns-proto v0.21.2Compiling tokio-tfo v0.2.0Compiling sendfd v0.4.1Compiling trust-dns-resolver v0.21.2Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 2m 14s> Task :core:cargoBuildX86[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirCompiling cfg-if v1.0.0Compiling subtle v2.4.1Compiling cpufeatures v0.2.2Compiling scopeguard v1.1.0Compiling pin-project-lite v0.2.9Compiling smallvec v1.8.0Compiling opaque-debug v0.3.0Compiling futures-sink v0.3.21Compiling bytes v1.1.0Compiling slab v0.4.6Compiling tinyvec_macros v0.1.0Compiling futures-io v0.3.21Compiling matches v0.1.9Compiling pin-utils v0.1.0Compiling once_cell v1.12.0Compiling ryu v1.0.10Compiling linked-hash-map v0.5.4Compiling percent-encoding v2.1.0Compiling lazy_static v1.4.0Compiling ppv-lite86 v0.2.16Compiling unicode-bidi v0.3.8Compiling itoa v1.0.2Compiling zeroize v1.3.0Compiling ipnet v2.5.0Compiling match_cfg v0.1.0Compiling hashbrown v0.11.2Compiling same-file v1.0.6Compiling arrayvec v0.7.2Compiling data-encoding v2.3.2Compiling arrayref v0.3.6Compiling constant_time_eq v0.1.5Compiling bitflags v1.3.2Compiling quick-error v1.2.3Compiling ucd-trie v0.1.3Compiling traitobject v0.1.0Compiling arc-swap v1.5.0Compiling base64 v0.13.0Compiling lru_time_cache v0.11.11Compiling regex-syntax v0.6.26Compiling os_str_bytes v6.1.0Compiling byte_string v1.0.0Compiling humantime v2.1.0Compiling log-mdc v0.1.0Compiling strsim v0.10.0Compiling boxfnonce v0.1.1Compiling byteorder v1.4.3Compiling termcolor v1.1.3Compiling fnv v1.0.7Compiling exitcode v1.1.2Compiling libc v0.2.126Compiling typenum v1.15.0Compiling serde v1.0.137Compiling md5-asm v0.5.0Compiling sha1-asm v0.5.1Compiling memchr v2.5.0Compiling futures-core v0.3.21Compiling parking_lot_core v0.9.3Compiling log v0.4.17Compiling futures-task v0.3.21Compiling futures-channel v0.3.21Compiling futures-util v0.3.21Compiling tinyvec v1.6.0Compiling form_urlencoded v1.0.1Compiling lru-cache v0.1.2Compiling yaml-rust v0.4.5Compiling crossbeam-utils v0.8.8Compiling serde_json v1.0.81Compiling walkdir v2.3.2Compiling iprange v0.6.7Compiling anyhow v1.0.57Compiling pest v2.1.3Compiling unsafe-any v0.4.2Compiling clap_lex v0.2.0Compiling generic-array v0.14.5Compiling lock_api v0.4.7Compiling num-integer v0.1.45Compiling num-traits v0.2.15Compiling indexmap v1.8.2Compiling blake3 v1.3.1Compiling typemap v0.3.3Compiling unicode-normalization v0.1.19Compiling getrandom v0.2.6Compiling num_cpus v1.13.1Compiling socket2 v0.4.4Compiling signal-hook-registry v1.4.0Compiling hostname v0.3.1Compiling filetime v0.2.16Compiling dirs-sys v0.3.7Compiling terminal_size v0.1.17Compiling time v0.1.43Compiling atty v0.2.14Compiling thread-id v4.0.0Compiling daemonize v0.4.1Compiling aho-corasick v0.7.18Compiling crossbeam-channel v0.5.4Compiling spin v0.9.3Compiling rand_core v0.6.3Compiling parking_lot v0.12.1Compiling resolv-conf v0.7.0Compiling dirs v4.0.0Compiling directories v4.0.1Compiling textwrap v0.15.0Compiling idna v0.2.3Compiling crypto-common v0.1.3Compiling cipher v0.3.0Compiling block-buffer v0.10.2Compiling universal-hash v0.4.1Compiling aead v0.4.3Compiling inout v0.1.3Compiling rand_chacha v0.3.1Compiling xdg v2.4.1Compiling notify v5.0.0-pre.15Compiling regex v1.5.6Compiling thiserror v1.0.31Compiling pin-project v1.0.10Compiling ordered-float v2.10.0Compiling clap v3.1.18Compiling ctr v0.8.0Compiling chacha20 v0.8.1Compiling polyval v0.5.3Compiling poly1305 v0.7.2Compiling digest v0.10.3Compiling cipher v0.4.3Compiling rand v0.8.5Compiling chrono v0.4.19Compiling aes v0.7.5Compiling ccm v0.4.4Compiling ghash v0.4.4Compiling hmac v0.12.1Compiling sha1 v0.10.1Compiling md-5 v0.10.1Compiling chacha20poly1305 v0.9.0Compiling aes v0.8.1Compiling futures-executor v0.3.21Compiling aes-gcm-siv v0.10.3Compiling aes-gcm v0.9.4Compiling hkdf v0.12.3Compiling url v2.2.2Compiling serde_urlencoded v0.7.1Compiling serde-value v0.7.0Compiling json5 v0.4.1Compiling serde_yaml v0.8.24Compiling futures v0.3.21Compiling shadowsocks-crypto v0.4.0Compiling mio v0.8.3Compiling rpassword v6.0.1Compiling log4rs v1.1.1Compiling tokio v1.18.2Compiling trust-dns-proto v0.21.2Compiling sendfd v0.4.1Compiling tokio-tfo v0.2.0Compiling trust-dns-resolver v0.21.2Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 2m 08s> Task :core:cargoBuildX86_64[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dirCompiling cfg-if v1.0.0Compiling subtle v2.4.1Compiling cpufeatures v0.2.2Compiling zeroize v1.3.0Compiling scopeguard v1.1.0Compiling opaque-debug v0.3.0Compiling pin-project-lite v0.2.9Compiling const-oid v0.7.1Compiling smallvec v1.8.0Compiling futures-sink v0.3.21Compiling slab v0.4.6Compiling matches v0.1.9Compiling pin-utils v0.1.0Compiling base16ct v0.1.1Compiling bytes v1.1.0Compiling tinyvec_macros v0.1.0Compiling futures-io v0.3.21Compiling ppv-lite86 v0.2.16Compiling lazy_static v1.4.0Compiling ryu v1.0.10Compiling linked-hash-map v0.5.4Compiling once_cell v1.12.0Compiling percent-encoding v2.1.0Compiling unicode-bidi v0.3.8Compiling itoa v1.0.2Compiling match_cfg v0.1.0Compiling ipnet v2.5.0Compiling spin v0.5.2Compiling untrusted v0.7.1Compiling arrayref v0.3.6Compiling arrayvec v0.7.2Compiling bitflags v1.3.2Compiling same-file v1.0.6Compiling hashbrown v0.11.2Compiling constant_time_eq v0.1.5Compiling quick-error v1.2.3Compiling data-encoding v2.3.2Compiling traitobject v0.1.0Compiling arc-swap v1.5.0Compiling ucd-trie v0.1.3Compiling base64 v0.13.0Compiling os_str_bytes v6.1.0Compiling lru_time_cache v0.11.11Compiling byte_string v1.0.0Compiling regex-syntax v0.6.26Compiling log-mdc v0.1.0Compiling termcolor v1.1.3Compiling strsim v0.10.0Compiling byteorder v1.4.3Compiling fnv v1.0.7Compiling boxfnonce v0.1.1Compiling humantime v2.1.0Compiling exitcode v1.1.2Compiling libc v0.2.126Compiling typenum v1.15.0Compiling serde v1.0.137Compiling memchr v2.5.0Compiling log v0.4.17Compiling parking_lot_core v0.9.3Compiling futures-core v0.3.21Compiling futures-channel v0.3.21Compiling futures-task v0.3.21Compiling futures-util v0.3.21Compiling der v0.5.1Compiling tinyvec v1.6.0Compiling crossbeam-utils v0.8.8Compiling lru-cache v0.1.2Compiling yaml-rust v0.4.5Compiling serde_json v1.0.81Compiling form_urlencoded v1.0.1Compiling walkdir v2.3.2Compiling iprange v0.6.7Compiling anyhow v1.0.57Compiling unsafe-any v0.4.2Compiling pest v2.1.3Compiling clap_lex v0.2.0Compiling generic-array v0.14.5Compiling lock_api v0.4.7Compiling num-integer v0.1.45Compiling num-traits v0.2.15Compiling md5-asm v0.5.0Compiling sha1-asm v0.5.1Compiling ring v0.16.20Compiling blake3 v1.3.1Compiling indexmap v1.8.2Compiling unicode-normalization v0.1.19Compiling typemap v0.3.3Compiling getrandom v0.2.6Compiling signal-hook-registry v1.4.0Compiling num_cpus v1.13.1Compiling socket2 v0.4.4Compiling hostname v0.3.1Compiling dirs-sys v0.3.7Compiling filetime v0.2.16Compiling time v0.1.43Compiling terminal_size v0.1.17Compiling thread-id v4.0.0Compiling atty v0.2.14Compiling daemonize v0.4.1Compiling aho-corasick v0.7.18Compiling crossbeam-channel v0.5.4Compiling spin v0.9.3Compiling rand_core v0.6.3Compiling parking_lot v0.12.1Compiling idna v0.2.3Compiling resolv-conf v0.7.0Compiling dirs v4.0.0Compiling directories v4.0.1Compiling textwrap v0.15.0Compiling notify v5.0.0-pre.15Compiling regex v1.5.6Compiling signature v1.4.0Compiling rand_chacha v0.3.1Compiling ordered-float v2.10.0Compiling crypto-common v0.1.3Compiling cipher v0.3.0Compiling block-buffer v0.10.2Compiling universal-hash v0.4.1Compiling sec1 v0.2.1Compiling crypto-bigint v0.3.2Compiling aead v0.4.3Compiling digest v0.9.0Compiling inout v0.1.3Compiling xdg v2.4.1Compiling clap v3.1.18Compiling thiserror v1.0.31Compiling pin-project v1.0.10Compiling ed25519 v1.5.2Compiling rand v0.8.5Compiling chrono v0.4.19Compiling ctr v0.8.0Compiling chacha20 v0.8.1Compiling polyval v0.5.3Compiling poly1305 v0.7.2Compiling digest v0.10.3Compiling cipher v0.4.3Compiling elliptic-curve v0.11.12Compiling futures-executor v0.3.21Compiling aes v0.7.5Compiling ccm v0.4.4Compiling ghash v0.4.4Compiling url v2.2.2Compiling serde_urlencoded v0.7.1Compiling json5 v0.4.1Compiling serde_yaml v0.8.24Compiling serde-value v0.7.0Compiling chacha20poly1305 v0.9.0Compiling hmac v0.12.1Compiling sha1 v0.10.1Compiling md-5 v0.10.1Compiling aes v0.8.1Compiling ecdsa v0.13.4Compiling futures v0.3.21Compiling aes-gcm-siv v0.10.3Compiling aes-gcm v0.9.4Compiling mio v0.8.3Compiling rpassword v6.0.1Compiling log4rs v1.1.1Compiling hkdf v0.12.3Compiling p256 v0.10.1Compiling p384 v0.9.0Compiling tokio v1.18.2Compiling ring-compat v0.4.1Compiling shadowsocks-crypto v0.4.0Compiling trust-dns-proto v0.21.2Compiling tokio-tfo v0.2.0Compiling sendfd v0.4.1Compiling trust-dns-resolver v0.21.2Compiling shadowsocks v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.15.0 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.15.0-alpha.5 (/home/vagrant/build/com.github.shadowsocks/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 2m 13s> Task :core:cargoBuild> Task :core:mergeReleaseJniLibFolders> Task :core:mergeReleaseNativeLibs> Task :core:extractReleaseAnnotations> Task :core:stripReleaseDebugSymbols[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir> Task :core:mergeReleaseGeneratedProguardFiles> Task :core:mergeReleaseConsumerProguardFiles> Task :core:mergeReleaseShaders> Task :core:compileReleaseShaders NO-SOURCE> Task :core:generateReleaseAssets UP-TO-DATE> Task :core:packageReleaseAssets> Task :core:prepareLintJarForPublish> Task :core:copyReleaseJniLibsProjectAndLocalJars> Task :mobile:compileReleaseKotlinw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt: (166, 13): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfileConfigFragment.kt: (217, 17): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (242, 50): 'locale: Locale!' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (379, 40): 'getter for adapterPosition: Int' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (386, 49): 'getter for adapterPosition: Int' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/ProfilesFragment.kt: (386, 73): 'getter for adapterPosition: Int' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt: (91, 34): Conditional branch result of type URL is implicitly cast to Anyw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt: (91, 49): Conditional branch result of type Comparable<{String & Subnet}> is implicitly cast to Anyw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/acl/CustomRulesFragment.kt: (416, 47): 'getter for adapterPosition: Int' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks/mobile/src/main/java/com/github/shadowsocks/subscription/SubscriptionFragment.kt: (234, 47): 'getter for adapterPosition: Int' is deprecated. Deprecated in Java> Task :mobile:compileReleaseJavaWithJavac> Task :mobile:compileReleaseSources> Task :core:prepareReleaseArtProfile> Task :core:processReleaseJavaRes NO-SOURCE> Task :core:writeReleaseLintModelMetadata> Task :plugin:copyReleaseJniLibsProjectAndLocalJars> Task :plugin:extractReleaseAnnotations> Task :plugin:mergeReleaseGeneratedProguardFiles> Task :plugin:mergeReleaseConsumerProguardFiles> Task :plugin:mergeReleaseShaders> Task :plugin:compileReleaseShaders NO-SOURCE> Task :plugin:generateReleaseAssets UP-TO-DATE> Task :core:mergeReleaseJavaResource> Task :plugin:packageReleaseAssets> Task :core:syncReleaseLibJars> Task :plugin:prepareLintJarForPublish> Task :plugin:prepareReleaseArtProfile> Task :plugin:processReleaseJavaRes NO-SOURCE> Task :plugin:mergeReleaseJavaResource> Task :core:bundleReleaseLocalLintAar> Task :plugin:syncReleaseLibJars> Task :plugin:writeReleaseLintModelMetadata> Task :core:bundleLibResRelease> Task :plugin:bundleReleaseLocalLintAar> Task :mobile:extractProguardFiles> Task :plugin:bundleLibResRelease> Task :core:bundleLibRuntimeToJarRelease> Task :mobile:bundleReleaseClasses> Task :plugin:bundleLibRuntimeToJarRelease> Task :core:createFullJarRelease> Task :mobile:mergeReleaseJniLibFolders> Task :core:exportReleaseConsumerProguardFiles> Task :plugin:exportReleaseConsumerProguardFiles> Task :plugin:createFullJarRelease> Task :core:copyReleaseJniLibsProjectOnly> Task :mobile:checkReleaseDuplicateClasses> Task :mobile:mergeReleaseGeneratedProguardFiles> Task :mobile:processReleaseJavaRes NO-SOURCE> Task :mobile:mergeReleaseShaders> Task :mobile:compileReleaseShaders NO-SOURCE> Task :mobile:generateReleaseAssets UP-TO-DATE> Task :mobile:mergeReleaseAssets> Task :mobile:mergeReleaseArtProfile> Task :mobile:compressReleaseAssets> Task :mobile:mergeReleaseNativeLibs> Task :mobile:collectReleaseDependencies> Task :mobile:stripReleaseDebugSymbols[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir> Task :mobile:mergeReleaseJavaResource> Task :mobile:extractReleaseNativeSymbolTables[CXX5106] NDK was located by using ndk.dir property. This method is deprecated and will be removed in a future release. Please delete ndk.dir from local.properties and set android.ndkVersion to [21.4.7075529] in all native modules in the project. https://developer.android.com/r/studio-ui/ndk-dir> Task :mobile:sdkReleaseDependencyData> Task :mobile:mergeReleaseNativeDebugMetadata NO-SOURCE> Task :mobile:minifyReleaseWithR8WARNING:/home/vagrant/build/com.github.shadowsocks/mobile/build/intermediates/merged_java_res/release/base.jar: R8: Unexpected reference to missing service class: META-INF/services/sun.net.spi.nameservice.NameServiceDescriptor.WARNING:Missing classes detected while running R8. Please add the missing classes or apply additional keep rules that are generated in /home/vagrant/build/com.github.shadowsocks/mobile/build/outputs/mapping/release/missing_rules.txt.WARNING:R8: Missing class lombok.Generated (referenced from: org.slf4j.Logger org.xbill.DNS.Compression.log and 2 other contexts)Missing class org.slf4j.impl.StaticLoggerBinder (referenced from: void org.slf4j.LoggerFactory.bind() and 3 other contexts)Missing class sun.net.spi.nameservice.NameServiceDescriptor (referenced from: org.xbill.DNS.spi.DNSJavaNameServiceDescriptor)> Task :mobile:lintVitalAnalyzeRelease> Task :mobile:lintVitalReleaseNo issues found.> Task :mobile:writeReleaseAppMetadata> Task :mobile:writeReleaseSigningConfigVersions> Task :mobile:shrinkReleaseRes> Task :mobile:l8DexDesugarLibRelease> Task :mobile:compileReleaseArtProfile> Task :mobile:packageRelease> Task :mobile:assembleReleaseDeprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.See https://docs.gradle.org/7.2/userguide/command_line_interface.html#sec:command_line_warningsBUILD SUCCESSFUL in 13m 2s116 actionable tasks: 116 executed2022-06-24 23:28:54,871 DEBUG: Popen(['git', 'cat-file', '--batch-check'], cwd=/home/vagrant/build/com.github.shadowsocks, universal_newlines=False, shell=None)2022-06-24 23:28:54,875 INFO: Successfully built version 5.3.0-nightly of com.github.shadowsocks from 09c2290c1ba07336b11a6b7576886d202e14ac712022-06-24 23:28:55,572 DEBUG: AXML contains a RESOURCE MAP2022-06-24 23:28:55,572 DEBUG: Start of Namespace mapping: prefix 44: 'android' --> uri 135: 'http://schemas.android.com/apk/res/android'2022-06-24 23:28:55,574 DEBUG: Checking build/com.github.shadowsocks/mobile/build/outputs/apk/release/mobile-release-unsigned.apk2022-06-24 23:28:55,582 DEBUG: AXML contains a RESOURCE MAP2022-06-24 23:28:55,583 DEBUG: Start of Namespace mapping: prefix 44: 'android' --> uri 135: 'http://schemas.android.com/apk/res/android'2022-06-24 23:28:55,605 INFO: success: com.github.shadowsocks2022-06-24 23:28:55,606 INFO: Finished2022-06-24 23:28:55,606 INFO: 1 build succeeded