log for com.github.shadowsocks.tv:5020650

== Installed Android Tools ==2022-05-10 03:32:09,950 DEBUG: Reading 'config.yml'2022-05-10 03:32:09,960 INFO: Using /opt/android-sdk/build-tools/29.0.3/apksigner2022-05-10 03:32:09,963 INFO: Creating log directory2022-05-10 03:32:09,963 INFO: Creating temporary directory2022-05-10 03:32:09,964 INFO: Creating output directory2022-05-10 03:32:09,966 DEBUG: Getting git vcs interface for https://github.com/shadowsocks/shadowsocks-android.git2022-05-10 03:32:09,966 DEBUG: > git --versiongit version 2.11.02022-05-10 03:32:10,178 INFO: Using git version 2.11.02022-05-10 03:32:10,178 DEBUG: Checking 5.2.6-nightly2022-05-10 03:32:10,178 INFO: Building version 5.2.6-nightly (5020650) of com.github.shadowsocks.tv2022-05-10 03:32:10,179 INFO: Running 'sudo' commands in /home/vagrant2022-05-10 03:32:10,179 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 updateIgn:1 http://deb.debian.org/debian stretch InReleaseGet:2 http://security.debian.org/debian-security stretch/updates InRelease [53.0 kB]Hit: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://security.debian.org/debian-security stretch/updates/main amd64 Packages [764 kB]Get:9 http://security.debian.org/debian-security stretch/updates/main i386 Packages [764 kB]Get:10 http://security.debian.org/debian-security stretch/updates/main Translation-en [357 kB]Get:11 http://deb.debian.org/debian testing/main i386 Packages.diff/Index [63.6 kB]Get:13 http://deb.debian.org/debian testing/main amd64 Packages.diff/Index [63.6 kB]Get:14 http://deb.debian.org/debian testing/main Translation-en.diff/Index [63.6 kB]Get:15 http://deb.debian.org/debian testing/main i386 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]Get:16 http://deb.debian.org/debian testing/main amd64 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]Get:15 http://deb.debian.org/debian testing/main i386 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]Get:16 http://deb.debian.org/debian testing/main amd64 Packages T-2022-05-10-0210.05-F-2022-05-09-2003.58.pdiff [26.3 kB]Get:17 http://deb.debian.org/debian testing/main Translation-en T-2022-05-10-0210.05-F-2022-05-10-0210.05.pdiff [3,194 B]Get:17 http://deb.debian.org/debian testing/main Translation-en T-2022-05-10-0210.05-F-2022-05-10-0210.05.pdiff [3,194 B]Fetched 2,454 kB in 4s (547 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 3s (72.4 MB/s)Selecting previously unselected package libasound2-data.(Reading database ... 64892 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-05-10 03:32:33,651 DEBUG: > sudo passwd --lock rootpasswd: password expiry information changed.2022-05-10 03:32:33,857 DEBUG: > sudo SUDO_FORCE_REMOVE=yes dpkg --purge sudo(Reading database ... 65549 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-05-10 03:32:38,721 INFO: Getting source for revision 1c73e48cc6e590aa628179ab6687558c901693a52022-05-10 03:32:38,721 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:38,721 DEBUG: > git rev-parse --show-toplevel2022-05-10 03:32:38,925 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:38,925 DEBUG: > git submodule foreach --recursive git reset --hard2022-05-10 03:32:39,332 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:39,332 DEBUG: > git reset --hard2022-05-10 03:32:39,828 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:39,828 DEBUG: > git submodule foreach --recursive git clean -dffx2022-05-10 03:32:40,307 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:40,308 DEBUG: > git clean -dffx2022-05-10 03:32:40,412 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:40,412 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-05-10 03:32:40,987 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:40,987 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-05-10 03:32:41,291 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:41,291 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-05-10 03:32:41,599 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:41,600 DEBUG: > git remote set-head origin --auto2022-05-10 03:32:42,005 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:42,005 DEBUG: > git checkout -f 1c73e48cc6e590aa628179ab6687558c901693a52022-05-10 03:32:42,220 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:42,221 DEBUG: > git clean -dffx2022-05-10 03:32:42,326 INFO: Initialising submodules2022-05-10 03:32:42,327 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:42,327 DEBUG: > git rev-parse --show-toplevel2022-05-10 03:32:42,544 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:42,545 DEBUG: > git submodule sync2022-05-10 03:32:42,861 DEBUG: Directory: build/com.github.shadowsocks.tv2022-05-10 03:32:42,861 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 'f35762cbb7f917261f6ea9735e760a1f1311215b'2022-05-10 03:32:43,366 INFO: Collecting source libraries2022-05-10 03:32:43,386 DEBUG: Removing debuggable flags from build/srclib/rustup2022-05-10 03:32:43,395 INFO: Creating local.properties file at build/com.github.shadowsocks.tv/local.properties2022-05-10 03:32:43,396 INFO: Creating local.properties file at build/com.github.shadowsocks.tv/tv/local.properties2022-05-10 03:32:43,396 DEBUG: Removing debuggable flags from build/com.github.shadowsocks.tv/tv2022-05-10 03:32:43,397 INFO: Removing specified files2022-05-10 03:32:43,397 INFO: Removing core/src/main/jni/badvpn/lime2022-05-10 03:32:43,398 INFO: Removing mobile2022-05-10 03:32:43,402 INFO: Removing core/src/main/jni/badvpn/lwip/test/fuzz/inputs2022-05-10 03:32:43,416 INFO: Running 'prebuild' commands in build/com.github.shadowsocks.tv/tv2022-05-10 03:32:43,416 DEBUG: Directory: build/com.github.shadowsocks.tv/tv2022-05-10 03:32:43,416 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 build.gradle.kts && sed -i -e '/gms/d' -e '/firebase/d' -e '/kotlinx-coroutines-play-services/d' ../core/build.gradle.kts && pushd ../core/src/main && 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 && sed -i -e '/OssLicensesMenuActivity/d' src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt && sed -i -z -E -e 's/<Preference[^<]+ossLicenses[^>]+>//' src/main/res/xml/pref_main.xml && 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 build.gradle.kts+ sed -i -e /gms/d -e /firebase/d -e /kotlinx-coroutines-play-services/d ../core/build.gradle.kts+ pushd ../core/src/main~/build/com.github.shadowsocks.tv/core/src/main ~/build/com.github.shadowsocks.tv/tv+ 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.tv/tv+ sed -i -e /OssLicensesMenuActivity/d src/main/java/com/github/shadowsocks/tv/MainPreferenceFragment.kt+ sed -i -z -E -e 's/<Preference[^<]+ossLicenses[^>]+>//' src/main/res/xml/pref_main.xml+ sed -i -e /isEnable/s/true/false/ ../buildSrc/src/main/kotlin/Helpers.kt2022-05-10 03:32:43,622 INFO: Cleaning Gradle project...2022-05-10 03:32:43,623 DEBUG: Directory: build/com.github.shadowsocks.tv/tv2022-05-10 03:32:43,623 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.tv/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks.tv/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-dirIO exception while downloading manifest:java.io.FileNotFoundException: https://dl.google.com/android/repository/sys-img/android-desktop/sys-img2-2.xmlat java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1915)at java.base/sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1515)at java.base/sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:250)at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openUrl(DownloadCache.java:246)at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.downloadAndCache(DownloadCache.java:622)at com.android.sdklib.repository.legacy.remote.internal.DownloadCache.openCachedUrl(DownloadCache.java:545)at com.android.sdklib.repository.legacy.LegacyDownloader.downloadAndStream(LegacyDownloader.java:65)at com.android.repository.impl.downloader.LocalFileAwareDownloader.downloadAndStream(LocalFileAwareDownloader.java:51)at com.android.repository.impl.manager.RemoteRepoLoaderImpl.lambda$fetchPackages$0(RemoteRepoLoaderImpl.java:138)at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)at java.base/java.lang.Thread.run(Thread.java:834)> Configure project :pluginChecking the license for package Android SDK Build-Tools 31 in /opt/android-sdk/licensesLicense for package Android SDK Build-Tools 31 accepted.Preparing "Install Android SDK Build-Tools 31 (revision: 31.0.0)"."Install Android SDK Build-Tools 31 (revision: 31.0.0)" ready.Installing Android SDK Build-Tools 31 in /opt/android-sdk/build-tools/31.0.0"Install Android SDK Build-Tools 31 (revision: 31.0.0)" complete."Install Android SDK Build-Tools 31 (revision: 31.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.> Configure project :tvWarning: No match found for [DefaultTaskExecutionRequest{args=[clean],projectPath='null',rootDir='null'}]> Task :tv: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 53s7 actionable tasks: 6 executed, 1 up-to-date2022-05-10 03:34:40,493 INFO: Scanning source for common problems...2022-05-10 03:34:40,500 INFO: Removing gradle-wrapper.jar at gradle/wrapper/gradle-wrapper.jar2022-05-10 03:34:40,593 INFO: Creating source tarball...2022-05-10 03:34:41,910 INFO: Running 'build' commands in build/com.github.shadowsocks.tv/tv2022-05-10 03:34:41,910 DEBUG: Directory: build/com.github.shadowsocks.tv/tv2022-05-10 03:34:41,910 DEBUG: > bash -x -c /home/vagrant/build/srclib/rustup/rustup-init.sh -y && source $HOME/.cargo/env && rustup default 1.60.0 && 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-04-07, rust version 1.60.0 (7737e0b5c 2022-04-04)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.60.0 (7737e0b5c 2022-04-04)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 default 1.60.0info: syncing channel updates for '1.60.0-x86_64-unknown-linux-gnu'info: latest update on 2022-04-07, rust version 1.60.0 (7737e0b5c 2022-04-04)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 '1.60.0-x86_64-unknown-linux-gnu'1.60.0-x86_64-unknown-linux-gnu installed - rustc 1.60.0 (7737e0b5c 2022-04-04)+ cd ../core/src/main/rust/shadowsocks-rust+ rustup target add armv7-linux-androideabi aarch64-linux-android i686-linux-android x86_64-linux-androidinfo: syncing channel updates for 'nightly-2021-06-03-x86_64-unknown-linux-gnu'info: latest update on 2021-06-03, rust version 1.54.0-nightly (dbe459ded 2021-06-02)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: 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-05-10 03:35:26,095 INFO: Building Gradle project...2022-05-10 03:35:26,095 DEBUG: Directory: build/com.github.shadowsocks.tv/tv2022-05-10 03:35:26,095 DEBUG: > /home/vagrant/fdroidserver/gradlew-fdroid assembleFreedomReleaseFound 7.2 via distributionUrlRunning /opt/gradle/versions/7.2/bin/gradle assembleFreedomReleaseTo 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.tv/buildSrc/src/main/kotlin/Helpers.kt: (2, 26): 'VariantOutput' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks.tv/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 :core:parseReleaseLocalResources> Task :plugin:parseReleaseLocalResources> Task :plugin:generateReleaseBuildConfig> Task :plugin:processReleaseManifest> Task :core:processReleaseManifest/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/AndroidManifest.xml:113:9-114:40 Warning:provider#com.google.firebase.provider.FirebaseInitProvider was tagged at AndroidManifest.xml:113 to remove other declarations but no other declaration present> Task :plugin:javaPreCompileRelease> Task :tv:preBuild UP-TO-DATE> Task :tv:preFreedomReleaseBuild UP-TO-DATE> Task :tv:compileFreedomReleaseAidl NO-SOURCE> Task :core:packageReleaseRenderscript NO-SOURCE> Task :tv:compileFreedomReleaseRenderscript NO-SOURCE> Task :core:javaPreCompileRelease> Task :tv:generateFreedomReleaseBuildConfig> Task :core:writeReleaseAarMetadata> Task :plugin:writeReleaseAarMetadata> Task :tv:generateFreedomReleaseResValues> Task :tv:generateFreedomReleaseResources> Task :tv:createFreedomReleaseCompatibleScreenManifests> Task :core:extractDeepLinksRelease> Task :plugin:extractDeepLinksRelease> Task :tv:extractDeepLinksFreedomRelease> Task :tv:javaPreCompileFreedomRelease> Task :tv:checkFreedomReleaseAarMetadata> Task :tv:mergeFreedomReleaseResources> Task :plugin:generateReleaseRFile> Task :tv:processFreedomReleaseMainManifest/home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/AndroidManifest.xml:124:9-126:35 Warning:provider#com.google.firebase.provider.FirebaseInitProvider was tagged at AndroidManifest.xml:124 to remove other declarations but no other declaration present> Task :tv:processFreedomReleaseManifest> Task :core:configureNdkBuildRelease> Task :core:buildNdkBuildReleaseC/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.c:32:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.c:37:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/udpgw_client/UdpGwClient.h:37:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/core/src/main/jni/badvpn/tun2socks/tun2socks.c:67:C/C++: In file included from /home/vagrant/build/com.github.shadowsocks.tv/core/src/main/jni/badvpn/tun2socks/SocksUdpGwClient.h:42:C/C++: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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 :generateLinkerWrapper> 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 :tv:processFreedomReleaseManifestForPackage> Task :core:cargoBuildArmDownloading crates ...Downloaded humantime v2.1.0Downloaded anyhow v1.0.42Downloaded qrcode v0.12.0Downloaded proc-macro-nested v0.1.7Downloaded exitcode v1.1.2Downloaded bloomfilter v1.0.5Downloaded futures-channel v0.3.16Downloaded spin v0.9.2Downloaded parking_lot v0.11.1Downloaded generic-array v0.12.4Downloaded rand v0.8.4Downloaded serde_yaml v0.8.17Downloaded async-trait v0.1.50Downloaded base64 v0.13.0Downloaded crossbeam-channel v0.5.1Downloaded sha-1 v0.8.2Downloaded rand_chacha v0.3.1Downloaded unicode-normalization v0.1.19Downloaded json5 v0.3.0Downloaded regex v1.5.4Downloaded thiserror v1.0.26Downloaded smallvec v1.6.1Downloaded linked-hash-map v0.5.4Downloaded shadowsocks-crypto v0.2.4Downloaded num-traits v0.2.14Downloaded unicode-width v0.1.8Downloaded socket2 v0.4.0Downloaded inotify-sys v0.1.5Downloaded same-file v1.0.6Downloaded proc-macro-hack v0.5.19Downloaded regex-syntax v0.6.25Downloaded pest v2.1.3Downloaded pin-project v1.0.8Downloaded unsafe-any v0.4.2Downloaded match_cfg v0.1.0Downloaded ipnet v2.3.1Downloaded bit-vec v0.6.3Downloaded traitobject v0.1.0Downloaded log v0.4.14Downloaded maplit v1.0.2Downloaded fake-simd v0.1.2Downloaded digest v0.8.1Downloaded byte-tools v0.3.1Downloaded boxfnonce v0.1.1Downloaded block-buffer v0.7.3Downloaded opaque-debug v0.2.3Downloaded hostname v0.3.1Downloaded futures-core v0.3.16Downloaded checked_int_cast v1.0.0Downloaded ansi_term v0.11.0Downloaded ring v0.16.20Downloaded serde_urlencoded v0.7.0Downloaded strsim v0.8.0Downloaded siphasher v0.3.5Downloaded mio v0.7.13Downloaded untrusted v0.7.1Downloaded quote v1.0.9Downloaded unicode-segmentation v1.8.0Downloaded slab v0.4.3Downloaded serde_derive v1.0.126Downloaded ucd-trie v0.1.3Downloaded unicode-xid v0.2.2Downloaded vec_map v0.8.2Downloaded tinyvec v1.3.1Downloaded memoffset v0.6.4Downloaded yaml-rust v0.4.5Downloaded unicode-bidi v0.3.5Downloaded tokio-macros v1.3.0Downloaded trust-dns-proto v0.20.3Downloaded matches v0.1.8Downloaded trust-dns-resolver v0.20.3Downloaded syn v1.0.74Downloaded thread-id v3.3.0Downloaded log4rs v1.0.0Downloaded pin-project-internal v1.0.8Downloaded resolv-conf v0.7.0Downloaded pest_derive v2.1.0Downloaded tokio-io-timeout v1.1.1Downloaded walkdir v2.3.2Downloaded tokio v1.9.0Downloaded time v0.1.43Downloaded futures-io v0.3.16Downloaded serde v1.0.126Downloaded bitflags v1.2.1Downloaded inotify v0.9.3Downloaded clap v2.33.3Downloaded thiserror-impl v1.0.26Downloaded crypto2 v0.1.2Downloaded chrono v0.4.19Downloaded daemonize v0.4.1Downloaded cc v1.0.69Downloaded bytes v1.0.1Downloaded libc v0.2.98Downloaded typenum v1.13.0Downloaded data-encoding v2.3.2Downloaded term_size v0.3.2Downloaded futures-sink v0.3.16Downloaded enum-as-inner v0.3.3Downloaded url v2.2.2Downloaded cfg-if v1.0.0Downloaded byteorder v1.4.3Downloaded textwrap v0.11.0Downloaded pest_meta v2.1.3Downloaded instant v0.1.10Downloaded ppv-lite86 v0.2.10Downloaded num-integer v0.1.44Downloaded signal-hook-registry v1.4.0Downloaded rand_core v0.6.3Downloaded quick-error v1.2.3Downloaded percent-encoding v2.1.0Downloaded lru-cache v0.1.2Downloaded lazy_static v1.4.0Downloaded num_cpus v1.13.0Downloaded aho-corasick v0.7.18Downloaded getrandom v0.2.3Downloaded futures-util v0.3.16Downloaded futures-executor v0.3.16Downloaded futures v0.3.16Downloaded filetime v0.2.14Downloaded crossbeam-utils v0.8.5Downloaded byte_string v1.0.0Downloaded arc-swap v1.3.0Downloaded futures-macro v0.3.16Downloaded lru_time_cache v0.11.11Downloaded form_urlencoded v1.0.1Downloaded serde_json v1.0.64Downloaded serde-value v0.7.0Downloaded ryu v1.0.5Downloaded pin-project-lite v0.2.7Downloaded parking_lot_core v0.8.3Downloaded once_cell v1.8.0Downloaded notify v5.0.0-pre.11Downloaded itoa v0.4.7Downloaded iprange v0.6.4Downloaded tinyvec_macros v0.1.0Downloaded spin v0.5.2Downloaded scopeguard v1.1.0Downloaded pin-utils v0.1.0Downloaded idna v0.2.3Downloaded heck v0.3.3Downloaded fnv v1.0.7Downloaded autocfg v1.0.1Downloaded arc-swap v0.4.8Downloaded memchr v2.4.0Downloaded proc-macro2 v1.0.28Downloaded ordered-float v2.7.0Downloaded nix v0.22.0Downloaded lock_api v0.4.4Downloaded futures-task v0.3.16Downloaded atty v0.2.14Downloaded block-padding v0.1.5Downloaded pest_generator v2.1.3Downloaded derivative v2.2.0Downloaded dtoa v0.4.8Downloaded log-mdc v0.1.0Downloaded typemap v0.3.3Downloading crates ...Downloaded env_logger v0.9.0Compiling libc v0.2.98Compiling proc-macro2 v1.0.28Compiling unicode-xid v0.2.2Compiling syn v1.0.74Compiling autocfg v1.0.1Compiling cfg-if v1.0.0Compiling serde_derive v1.0.126Compiling serde v1.0.126Compiling memchr v2.4.0Compiling scopeguard v1.1.0Compiling log v0.4.14Compiling proc-macro-hack v0.5.19Compiling futures-core v0.3.16Compiling futures-task v0.3.16Compiling matches v0.1.8Compiling futures-channel v0.3.16Compiling pin-project-lite v0.2.7Compiling proc-macro-nested v0.1.7Compiling smallvec v1.6.1Compiling futures-sink v0.3.16Compiling ppv-lite86 v0.2.10Compiling once_cell v1.8.0Compiling tinyvec_macros v0.1.0Compiling ryu v1.0.5Compiling linked-hash-map v0.5.4Compiling lazy_static v1.4.0Compiling percent-encoding v2.1.0Compiling futures-io v0.3.16Compiling bitflags v1.2.1Compiling slab v0.4.3Compiling pin-utils v0.1.0Compiling async-trait v0.1.50Compiling unicode-segmentation v1.8.0Compiling ucd-trie v0.1.3Compiling bytes v1.0.1Compiling cc v1.0.69Compiling crossbeam-utils v0.8.5Compiling ipnet v2.3.1Compiling itoa v0.4.7Compiling match_cfg v0.1.0Compiling maplit v1.0.2Compiling serde_json v1.0.64Compiling untrusted v0.7.1Compiling anyhow v1.0.42Compiling same-file v1.0.6Compiling data-encoding v2.3.2Compiling traitobject v0.1.0Compiling quick-error v1.2.3Compiling spin v0.5.2Compiling siphasher v0.3.5Compiling bit-vec v0.6.3Compiling crypto2 v0.1.2Compiling dtoa v0.4.8Compiling regex-syntax v0.6.25Compiling fnv v1.0.7Compiling log-mdc v0.1.0Compiling byte_string v1.0.0Compiling checked_int_cast v1.0.0Compiling arc-swap v0.4.8Compiling unicode-width v0.1.8Compiling humantime v2.1.0Compiling arc-swap v1.3.0Compiling base64 v0.13.0Compiling boxfnonce v0.1.1Compiling ansi_term v0.11.0Compiling byteorder v1.4.3Compiling vec_map v0.8.2Compiling lru_time_cache v0.11.11Compiling strsim v0.8.0Compiling exitcode v1.1.2Compiling instant v0.1.10Compiling futures-macro v0.3.16Compiling futures-util v0.3.16Compiling num-traits v0.2.14Compiling tokio v1.9.0Compiling memoffset v0.6.4Compiling num-integer v0.1.44Compiling lock_api v0.4.4Compiling unicode-bidi v0.3.5Compiling tinyvec v1.3.1Compiling yaml-rust v0.4.5Compiling lru-cache v0.1.2Compiling form_urlencoded v1.0.1Compiling pest v2.1.3Compiling iprange v0.6.4Compiling heck v0.3.3Compiling walkdir v2.3.2Compiling unsafe-any v0.4.2Compiling ring v0.16.20Compiling qrcode v0.12.0Compiling spin v0.9.2Compiling unicode-normalization v0.1.19Compiling typemap v0.3.3Compiling pest_meta v2.1.3Compiling aho-corasick v0.7.18Compiling quote v1.0.9Compiling getrandom v0.2.3Compiling parking_lot_core v0.8.3Compiling signal-hook-registry v1.4.0Compiling num_cpus v1.13.0Compiling hostname v0.3.1Compiling time v0.1.43Compiling filetime v0.2.14Compiling thread-id v3.3.0Compiling term_size v0.3.2Compiling socket2 v0.4.0Compiling atty v0.2.14Compiling daemonize v0.4.1Compiling crossbeam-channel v0.5.1Compiling nix v0.22.0Compiling idna v0.2.3Compiling regex v1.5.4Compiling ordered-float v2.7.0Compiling rand_core v0.6.3Compiling parking_lot v0.11.1Compiling resolv-conf v0.7.0Compiling textwrap v0.11.0Compiling notify v5.0.0-pre.11Compiling url v2.2.2Compiling chrono v0.4.19Compiling rand_chacha v0.3.1Compiling clap v2.33.3Compiling rand v0.8.4Compiling pest_generator v2.1.3Compiling bloomfilter v1.0.5Compiling shadowsocks-crypto v0.2.4Compiling thiserror-impl v1.0.26Compiling tokio-macros v1.3.0Compiling enum-as-inner v0.3.3Compiling pin-project-internal v1.0.8Compiling derivative v2.2.0Compiling pest_derive v2.1.0Compiling thiserror v1.0.26Compiling pin-project v1.0.8Compiling futures-executor v0.3.16Compiling futures v0.3.16Compiling serde-value v0.7.0Compiling serde_yaml v0.8.17Compiling serde_urlencoded v0.7.0Compiling json5 v0.3.0Compiling mio v0.7.13Compiling log4rs v1.0.0Compiling trust-dns-proto v0.20.3Compiling tokio-io-timeout v1.1.1Compiling trust-dns-resolver v0.20.3Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 3m 26s> 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 scopeguard v1.1.0Compiling matches v0.1.8Compiling pin-project-lite v0.2.7Compiling smallvec v1.6.1Compiling futures-sink v0.3.16Compiling tinyvec_macros v0.1.0Compiling ppv-lite86 v0.2.10Compiling once_cell v1.8.0Compiling pin-utils v0.1.0Compiling slab v0.4.3Compiling linked-hash-map v0.5.4Compiling futures-io v0.3.16Compiling percent-encoding v2.1.0Compiling lazy_static v1.4.0Compiling bytes v1.0.1Compiling ipnet v2.3.1Compiling itoa v0.4.7Compiling match_cfg v0.1.0Compiling data-encoding v2.3.2Compiling traitobject v0.1.0Compiling spin v0.5.2Compiling same-file v1.0.6Compiling untrusted v0.7.1Compiling quick-error v1.2.3Compiling dtoa v0.4.8Compiling siphasher v0.3.5Compiling regex-syntax v0.6.25Compiling bit-vec v0.6.3Compiling crypto2 v0.1.2Compiling ucd-trie v0.1.3Compiling base64 v0.13.0Compiling humantime v2.1.0Compiling arc-swap v1.3.0Compiling unicode-width v0.1.8Compiling log-mdc v0.1.0Compiling byte_string v1.0.0Compiling checked_int_cast v1.0.0Compiling fnv v1.0.7Compiling arc-swap v0.4.8Compiling byteorder v1.4.3Compiling strsim v0.8.0Compiling lru_time_cache v0.11.11Compiling vec_map v0.8.2Compiling ansi_term v0.11.0Compiling boxfnonce v0.1.1Compiling exitcode v1.1.2Compiling libc v0.2.98Compiling serde v1.0.126Compiling memchr v2.4.0Compiling log v0.4.14Compiling futures-core v0.3.16Compiling proc-macro-nested v0.1.7Compiling futures-task v0.3.16Compiling futures-channel v0.3.16Compiling instant v0.1.10Compiling unicode-bidi v0.3.5Compiling lock_api v0.4.4Compiling bitflags v1.2.1Compiling tinyvec v1.3.1Compiling form_urlencoded v1.0.1Compiling ryu v1.0.5Compiling crossbeam-utils v0.8.5Compiling lru-cache v0.1.2Compiling yaml-rust v0.4.5Compiling serde_json v1.0.64Compiling unsafe-any v0.4.2Compiling anyhow v1.0.42Compiling iprange v0.6.4Compiling walkdir v2.3.2Compiling pest v2.1.3Compiling qrcode v0.12.0Compiling num-traits v0.2.14Compiling futures-util v0.3.16Compiling tokio v1.9.0Compiling num-integer v0.1.44Compiling memoffset v0.6.4Compiling spin v0.9.2Compiling ring v0.16.20Compiling unicode-normalization v0.1.19Compiling typemap v0.3.3Compiling getrandom v0.2.3Compiling parking_lot_core v0.8.3Compiling signal-hook-registry v1.4.0Compiling num_cpus v1.13.0Compiling hostname v0.3.1Compiling time v0.1.43Compiling filetime v0.2.14Compiling term_size v0.3.2Compiling socket2 v0.4.0Compiling thread-id v3.3.0Compiling atty v0.2.14Compiling daemonize v0.4.1Compiling aho-corasick v0.7.18Compiling crossbeam-channel v0.5.1Compiling rand_core v0.6.3Compiling parking_lot v0.11.1Compiling idna v0.2.3Compiling resolv-conf v0.7.0Compiling textwrap v0.11.0Compiling nix v0.22.0Compiling rand_chacha v0.3.1Compiling regex v1.5.4Compiling ordered-float v2.7.0Compiling notify v5.0.0-pre.11Compiling url v2.2.2Compiling clap v2.33.3Compiling rand v0.8.4Compiling chrono v0.4.19Compiling thiserror v1.0.26Compiling pin-project v1.0.8Compiling bloomfilter v1.0.5Compiling shadowsocks-crypto v0.2.4Compiling serde_urlencoded v0.7.0Compiling serde_yaml v0.8.17Compiling serde-value v0.7.0Compiling json5 v0.3.0Compiling mio v0.7.13Compiling futures-executor v0.3.16Compiling log4rs v1.0.0Compiling futures v0.3.16Compiling trust-dns-proto v0.20.3Compiling tokio-io-timeout v1.1.1Compiling trust-dns-resolver v0.20.3Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 2m 37s> 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 scopeguard v1.1.0Compiling smallvec v1.6.1Compiling matches v0.1.8Compiling pin-project-lite v0.2.7Compiling tinyvec_macros v0.1.0Compiling futures-sink v0.3.16Compiling ppv-lite86 v0.2.10Compiling once_cell v1.8.0Compiling pin-utils v0.1.0Compiling linked-hash-map v0.5.4Compiling slab v0.4.3Compiling lazy_static v1.4.0Compiling percent-encoding v2.1.0Compiling futures-io v0.3.16Compiling bytes v1.0.1Compiling itoa v0.4.7Compiling ipnet v2.3.1Compiling match_cfg v0.1.0Compiling quick-error v1.2.3Compiling traitobject v0.1.0Compiling data-encoding v2.3.2Compiling untrusted v0.7.1Compiling spin v0.5.2Compiling same-file v1.0.6Compiling dtoa v0.4.8Compiling bit-vec v0.6.3Compiling siphasher v0.3.5Compiling ucd-trie v0.1.3Compiling crypto2 v0.1.2Compiling regex-syntax v0.6.25Compiling byte_string v1.0.0Compiling unicode-width v0.1.8Compiling arc-swap v0.4.8Compiling fnv v1.0.7Compiling checked_int_cast v1.0.0Compiling base64 v0.13.0Compiling humantime v2.1.0Compiling log-mdc v0.1.0Compiling arc-swap v1.3.0Compiling vec_map v0.8.2Compiling byteorder v1.4.3Compiling strsim v0.8.0Compiling lru_time_cache v0.11.11Compiling ansi_term v0.11.0Compiling boxfnonce v0.1.1Compiling exitcode v1.1.2Compiling libc v0.2.98Compiling serde v1.0.126Compiling memchr v2.4.0Compiling log v0.4.14Compiling futures-core v0.3.16Compiling proc-macro-nested v0.1.7Compiling futures-task v0.3.16Compiling futures-channel v0.3.16Compiling instant v0.1.10Compiling tinyvec v1.3.1Compiling lock_api v0.4.4Compiling unicode-bidi v0.3.5Compiling ryu v1.0.5Compiling bitflags v1.2.1Compiling crossbeam-utils v0.8.5Compiling lru-cache v0.1.2Compiling yaml-rust v0.4.5Compiling form_urlencoded v1.0.1Compiling serde_json v1.0.64Compiling anyhow v1.0.42Compiling unsafe-any v0.4.2Compiling iprange v0.6.4Compiling walkdir v2.3.2Compiling pest v2.1.3Compiling qrcode v0.12.0Compiling futures-util v0.3.16Compiling num-traits v0.2.14Compiling tokio v1.9.0Compiling num-integer v0.1.44Compiling memoffset v0.6.4Compiling spin v0.9.2Compiling ring v0.16.20Compiling unicode-normalization v0.1.19Compiling typemap v0.3.3Compiling aho-corasick v0.7.18Compiling getrandom v0.2.3Compiling parking_lot_core v0.8.3Compiling num_cpus v1.13.0Compiling signal-hook-registry v1.4.0Compiling hostname v0.3.1Compiling filetime v0.2.14Compiling time v0.1.43Compiling thread-id v3.3.0Compiling socket2 v0.4.0Compiling term_size v0.3.2Compiling atty v0.2.14Compiling daemonize v0.4.1Compiling crossbeam-channel v0.5.1Compiling nix v0.22.0Compiling idna v0.2.3Compiling regex v1.5.4Compiling ordered-float v2.7.0Compiling rand_core v0.6.3Compiling parking_lot v0.11.1Compiling resolv-conf v0.7.0Compiling textwrap v0.11.0Compiling notify v5.0.0-pre.11Compiling url v2.2.2Compiling chrono v0.4.19Compiling rand_chacha v0.3.1Compiling clap v2.33.3Compiling thiserror v1.0.26Compiling pin-project v1.0.8Compiling rand v0.8.4Compiling serde-value v0.7.0Compiling serde_urlencoded v0.7.0Compiling serde_yaml v0.8.17Compiling json5 v0.3.0Compiling mio v0.7.13Compiling bloomfilter v1.0.5Compiling shadowsocks-crypto v0.2.4Compiling log4rs v1.0.0Compiling futures-executor v0.3.16Compiling futures v0.3.16Compiling trust-dns-proto v0.20.3Compiling tokio-io-timeout v1.1.1Compiling trust-dns-resolver v0.20.3Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 2m 34s> 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 scopeguard v1.1.0Compiling smallvec v1.6.1Compiling pin-project-lite v0.2.7Compiling matches v0.1.8Compiling futures-sink v0.3.16Compiling tinyvec_macros v0.1.0Compiling once_cell v1.8.0Compiling ppv-lite86 v0.2.10Compiling lazy_static v1.4.0Compiling futures-io v0.3.16Compiling pin-utils v0.1.0Compiling linked-hash-map v0.5.4Compiling percent-encoding v2.1.0Compiling slab v0.4.3Compiling bytes v1.0.1Compiling ipnet v2.3.1Compiling match_cfg v0.1.0Compiling itoa v0.4.7Compiling traitobject v0.1.0Compiling quick-error v1.2.3Compiling untrusted v0.7.1Compiling data-encoding v2.3.2Compiling same-file v1.0.6Compiling spin v0.5.2Compiling siphasher v0.3.5Compiling ucd-trie v0.1.3Compiling regex-syntax v0.6.25Compiling dtoa v0.4.8Compiling crypto2 v0.1.2Compiling bit-vec v0.6.3Compiling base64 v0.13.0Compiling checked_int_cast v1.0.0Compiling unicode-width v0.1.8Compiling log-mdc v0.1.0Compiling fnv v1.0.7Compiling arc-swap v0.4.8Compiling arc-swap v1.3.0Compiling humantime v2.1.0Compiling byte_string v1.0.0Compiling ansi_term v0.11.0Compiling strsim v0.8.0Compiling vec_map v0.8.2Compiling byteorder v1.4.3Compiling boxfnonce v0.1.1Compiling lru_time_cache v0.11.11Compiling exitcode v1.1.2Compiling libc v0.2.98Compiling serde v1.0.126Compiling memchr v2.4.0Compiling futures-core v0.3.16Compiling log v0.4.14Compiling futures-channel v0.3.16Compiling futures-task v0.3.16Compiling proc-macro-nested v0.1.7Compiling unicode-bidi v0.3.5Compiling lock_api v0.4.4Compiling instant v0.1.10Compiling tinyvec v1.3.1Compiling bitflags v1.2.1Compiling ryu v1.0.5Compiling yaml-rust v0.4.5Compiling lru-cache v0.1.2Compiling crossbeam-utils v0.8.5Compiling form_urlencoded v1.0.1Compiling serde_json v1.0.64Compiling unsafe-any v0.4.2Compiling iprange v0.6.4Compiling anyhow v1.0.42Compiling walkdir v2.3.2Compiling pest v2.1.3Compiling qrcode v0.12.0Compiling futures-util v0.3.16Compiling num-traits v0.2.14Compiling tokio v1.9.0Compiling num-integer v0.1.44Compiling memoffset v0.6.4Compiling spin v0.9.2Compiling unicode-normalization v0.1.19Compiling ring v0.16.20Compiling typemap v0.3.3Compiling getrandom v0.2.3Compiling parking_lot_core v0.8.3Compiling signal-hook-registry v1.4.0Compiling num_cpus v1.13.0Compiling hostname v0.3.1Compiling filetime v0.2.14Compiling time v0.1.43Compiling socket2 v0.4.0Compiling thread-id v3.3.0Compiling term_size v0.3.2Compiling atty v0.2.14Compiling daemonize v0.4.1Compiling aho-corasick v0.7.18Compiling crossbeam-channel v0.5.1Compiling rand_core v0.6.3Compiling parking_lot v0.11.1Compiling idna v0.2.3Compiling resolv-conf v0.7.0Compiling textwrap v0.11.0Compiling nix v0.22.0Compiling rand_chacha v0.3.1Compiling notify v5.0.0-pre.11Compiling ordered-float v2.7.0Compiling regex v1.5.4Compiling url v2.2.2Compiling clap v2.33.3Compiling rand v0.8.4Compiling chrono v0.4.19Compiling thiserror v1.0.26Compiling pin-project v1.0.8Compiling bloomfilter v1.0.5Compiling futures-executor v0.3.16Compiling serde_urlencoded v0.7.0Compiling serde_yaml v0.8.17Compiling serde-value v0.7.0Compiling json5 v0.3.0Compiling futures v0.3.16Compiling mio v0.7.13Compiling shadowsocks-crypto v0.2.4Compiling log4rs v1.0.0Compiling trust-dns-proto v0.20.3Compiling tokio-io-timeout v1.1.1Compiling trust-dns-resolver v0.20.3Compiling shadowsocks v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks)Compiling shadowsocks-service v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust/crates/shadowsocks-service)Compiling shadowsocks-rust v1.11.2 (/home/vagrant/build/com.github.shadowsocks.tv/core/src/main/rust/shadowsocks-rust)Finished release [optimized] target(s) in 2m 36s> Task :core:cargoBuild> Task :core:mergeReleaseJniLibFolders> Task :core:mergeReleaseShaders> Task :core:compileReleaseShaders NO-SOURCE> Task :core:generateReleaseAssets UP-TO-DATE> Task :core:packageReleaseAssets> Task :core:prepareLintJarForPublish> Task :core:prepareReleaseArtProfile> Task :core:processReleaseJavaRes NO-SOURCE> Task :core:writeReleaseLintModelMetadata> Task :plugin:copyReleaseJniLibsProjectAndLocalJars> Task :core:generateReleaseRFile> Task :plugin:compileReleaseKotlin> Task :plugin:compileReleaseJavaWithJavac> Task :plugin:bundleLibCompileToJarReleasewarn: removing resource com.github.shadowsocks.tv:string/advanced without required default value.warn: removing resource com.github.shadowsocks.tv:string/auto_connect_summary_v24 without required default value.warn: removing resource com.github.shadowsocks.tv:string/invalid_server without required default value.warn: removing resource com.github.shadowsocks.tv:string/night_mode without required default value.warn: removing resource com.github.shadowsocks.tv:string/night_mode_auto without required default value.warn: removing resource com.github.shadowsocks.tv:string/night_mode_off without required default value.warn: removing resource com.github.shadowsocks.tv:string/night_mode_on without required default value.warn: removing resource com.github.shadowsocks.tv:string/night_mode_system without required default value.warn: removing resource com.github.shadowsocks.tv:string/received without required default value.warn: removing resource com.github.shadowsocks.tv:string/sent without required default value.warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_failure without required default value.warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_summary without required default value.warn: removing resource com.github.shadowsocks.tv:string/tcp_fastopen_summary_unsupported without required default value.> Task :tv:processFreedomReleaseResources> Task :core:kaptGenerateStubsReleaseKotlin> Task :core:externalNativeBuildRelease> Task :core:mergeReleaseNativeLibs> Task :core:kaptReleaseKotlin> Task :plugin:extractReleaseAnnotations> Task :core:compileReleaseKotlinw: /home/vagrant/build/com.github.shadowsocks.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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.tv/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: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:copyReleaseJniLibsProjectAndLocalJars> Task :tv:kaptGenerateStubsFreedomReleaseKotlin> Task :tv:kaptFreedomReleaseKotlin> Task :tv:compileFreedomReleaseKotlinw: /home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/java/com/github/shadowsocks/tv/MainFragment.kt: (48, 21): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Javaw: /home/vagrant/build/com.github.shadowsocks.tv/tv/src/main/java/com/github/shadowsocks/tv/MainFragment.kt: (56, 17): 'setTargetFragment(Fragment?, Int): Unit' is deprecated. Deprecated in Java> Task :tv:compileFreedomReleaseJavaWithJavac> Task :tv:compileFreedomReleaseSources> Task :core:extractReleaseAnnotations> Task :core:mergeReleaseGeneratedProguardFiles> Task :core:mergeReleaseConsumerProguardFiles> Task :plugin:mergeReleaseGeneratedProguardFiles> Task :plugin:mergeReleaseConsumerProguardFiles> Task :plugin:mergeReleaseShaders> Task :plugin:compileReleaseShaders NO-SOURCE> Task :plugin:generateReleaseAssets UP-TO-DATE> Task :plugin:packageReleaseAssets> Task :plugin:prepareLintJarForPublish> Task :plugin:prepareReleaseArtProfile> Task :plugin:processReleaseJavaRes NO-SOURCE> Task :plugin:writeReleaseLintModelMetadata> Task :plugin:bundleLibResRelease> Task :core:bundleLibResRelease> Task :plugin:bundleLibRuntimeToJarRelease> Task :tv:extractProguardFiles> Task :core:bundleLibRuntimeToJarRelease> Task :plugin:createFullJarRelease> Task :tv:mergeFreedomReleaseJniLibFolders> Task :tv:bundleFreedomReleaseClasses> Task :plugin:mergeReleaseJavaResource> Task :core:mergeReleaseJavaResource> Task :core:copyReleaseJniLibsProjectOnly> Task :core:syncReleaseLibJars> Task :core:bundleReleaseLocalLintAar> Task :plugin:syncReleaseLibJars> Task :plugin:bundleReleaseLocalLintAar> Task :core:createFullJarRelease> Task :core:exportReleaseConsumerProguardFiles> Task :plugin:exportReleaseConsumerProguardFiles> Task :tv:mergeFreedomReleaseNativeLibs> Task :tv:checkFreedomReleaseDuplicateClasses> Task :tv:stripFreedomReleaseDebugSymbols[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 :tv:mergeFreedomReleaseGeneratedProguardFiles> Task :tv:processFreedomReleaseJavaRes NO-SOURCE> Task :tv:extractFreedomReleaseNativeSymbolTables[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 :tv:mergeFreedomReleaseNativeDebugMetadata NO-SOURCE> Task :tv:mergeFreedomReleaseShaders> Task :tv:compileFreedomReleaseShaders NO-SOURCE> Task :tv:generateFreedomReleaseAssets UP-TO-DATE> Task :tv:mergeFreedomReleaseAssets> Task :tv:compressFreedomReleaseAssets> Task :tv:collectFreedomReleaseDependencies> Task :tv:sdkFreedomReleaseDependencyData> Task :tv:writeFreedomReleaseAppMetadata> Task :tv:writeFreedomReleaseSigningConfigVersions> Task :tv:mergeFreedomReleaseArtProfile> Task :tv:mergeFreedomReleaseJavaResource> Task :tv:minifyFreedomReleaseWithR8WARNING:/home/vagrant/build/com.github.shadowsocks.tv/tv/build/intermediates/merged_java_res/freedomRelease/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.tv/tv/build/outputs/mapping/freedomRelease/missing_rules.txt.WARNING:R8: Missing class lombok.Generated (referenced from: org.slf4j.Logger org.xbill.DNS.Compression.log and 1 other context)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 :tv:lintVitalAnalyzeFreedomRelease> Task :tv:lintVitalFreedomReleaseNo issues found.> Task :tv:shrinkFreedomReleaseRes> Task :tv:l8DexDesugarLibFreedomRelease> Task :tv:compileFreedomReleaseArtProfile> Task :tv:packageFreedomRelease> Task :tv:assembleFreedomReleaseDeprecated 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 14m 9s118 actionable tasks: 118 executed2022-05-10 03:49:35,700 DEBUG: Popen(['git', 'cat-file', '--batch-check'], cwd=/home/vagrant/build/com.github.shadowsocks.tv, universal_newlines=False, shell=None)2022-05-10 03:49:35,704 INFO: Successfully built version 5.2.6-nightly of com.github.shadowsocks.tv from 1c73e48cc6e590aa628179ab6687558c901693a52022-05-10 03:49:36,763 DEBUG: AXML contains a RESOURCE MAP2022-05-10 03:49:36,763 DEBUG: Start of Namespace mapping: prefix 42: 'android' --> uri 114: 'http://schemas.android.com/apk/res/android'2022-05-10 03:49:36,765 DEBUG: Checking build/com.github.shadowsocks.tv/tv/build/outputs/apk/freedom/release/tv-freedom-release-unsigned.apk2022-05-10 03:49:36,773 DEBUG: AXML contains a RESOURCE MAP2022-05-10 03:49:36,774 DEBUG: Start of Namespace mapping: prefix 42: 'android' --> uri 114: 'http://schemas.android.com/apk/res/android'2022-05-10 03:49:36,794 INFO: success: com.github.shadowsocks.tv2022-05-10 03:49:36,795 INFO: Finished2022-05-10 03:49:36,795 INFO: 1 build succeeded