WebDriver需要做一下简单的修改,
参考一下这篇文章。
https://www.jianshu.com/p/b1283023c1b4
修改完成之后,可以自己把Webdriver的安装文件搞到自己的include目录下面。
然后给webdriverxx弄一个CMakeLists.txt,以便到不同的平台下可以随时安装,不用再进行修改,如图所示,
CMakeLists.txt文件内容如下,
非常简单,把include目录安装上去就行了。
cmake_minimum_required(VERSION 3.5)
project(webdriverxx)
install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/include/
DESTINATION include/${PROJECT_NAME}
FILES_MATCHING PATTERN "*")
本例还用到了一个github上面star数为8的工程,html-parser,是用来解析HTML的。
说起来也是比较坑,解析HTML这事儿也太不靠谱了。CPP的library只有为数不多的几个star不高的。好在凑合能用。Google的gumbo比较高端,但是是一个纯C的库。API很恶心,很难用,放弃了。
html-parser这个库我也写了一个CMakeLists.txt,然后把std::cerr的log用glog输出了。这样把日志级别调高点就可以免得满屏都是日志了,太蛋疼了。
html-parser CMakeLists.txt文件如下,
cmake_minimum_required(VERSION 3.0)
project(html-parser)
set(CMAKE_CXX_FLAGS "-Wall -std=c++17")
set(CMAKE_CXX_FLAGS_DEBUG "-g")
if(APPLE)
message(STATUS "This is Apple, set CMAKE_PREFIX_PATH.")
set(CMAKE_MACOSX_RPATH 1)
set(CMAKE_PREFIX_PATH /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/share)
elseif(UNIX)
message(STATUS "This is linux, set CMAKE_PREFIX_PATH.")
set(CMAKE_PREFIX_PATH /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/share)
endif(APPLE)
if(APPLE)
MESSAGE(STATUS "This is APPLE, set INCLUDE_DIRS")
set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include /usr/local/iODBC/include /opt/snowflake/snowflakeodbc/include/ ${CMAKE_CURRENT_SOURCE_DIR}/../../)
elseif(UNIX)
MESSAGE(STATUS "This is linux, set INCLUDE_DIRS")
set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include ${CMAKE_CURRENT_SOURCE_DIR}/../../)
endif(APPLE)
if(APPLE)
MESSAGE(STATUS "This is APPLE, set LINK_DIRS")
set(LINK_DIRS /usr/local/lib /usr/local/iODBC/lib /opt/snowflake/snowflakeodbc/lib/universal /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/lib)
elseif(UNIX)
MESSAGE(STATUS "This is linux, set LINK_DIRS")
set(LINK_DIRS ${Boost_INCLUDE_DIRS} /usr/local/lib /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/lib)
endif(APPLE)
find_package(glog REQUIRED)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
file( GLOB APP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/*.cc ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
file( GLOB APP_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/*.h)
# Remove test files from app sources
list(REMOVE_ITEM APP_SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/main.cc")
message(STATUS "${APP_SOURCES}")
add_library(${PROJECT_NAME} SHARED ${APP_SOURCES})
target_link_libraries(${PROJECT_NAME} glog::glog)
add_library(${PROJECT_NAME}_static STATIC ${APP_SOURCES})
target_link_libraries(${PROJECT_NAME}_static glog::glog)
INSTALL (TARGETS ${PROJECT_NAME} ${PROJECT_NAME}_static LIBRARY DESTINATION lib ARCHIVE DESTINATION lib)
INSTALL (FILES ${APP_HEADERS} DESTINATION include/${PROJECT_NAME})
html-parser工程目录如下,
Webdriver目录是我们的主测试目录工程,用来做页面可达性测试的。因为一共有好几十个页面,一直点来点去也很蛋疼。关键是开发修改一次就让你点一次。
webdriver工程目录如下,
程序代码如下,
CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
project(wd_test)
if(APPLE)
message(STATUS "This is Apple, set CMAKE_PREFIX_PATH.")
set(CMAKE_MACOSX_RPATH 1)
set(CMAKE_PREFIX_PATH /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/share)
elseif(UNIX)
message(STATUS "This is linux, set CMAKE_PREFIX_PATH.")
set(CMAKE_PREFIX_PATH /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/share)
endif(APPLE)
set(CMAKE_CXX_STANDARD 17)
add_definitions(-g)
add_definitions(-w)
set(CURL_LIBRARY "-lcurl")
find_package(CURL REQUIRED)
find_package(Boost REQUIRED COMPONENTS
system
filesystem
serialization
program_options
thread
)
find_package(ZLIB)
find_package(OpenCV REQUIRED )
find_package(Boost REQUIRED COMPONENTS
system
filesystem
serialization
program_options
thread
)
find_package(DataFrame REQUIRED)
if(APPLE)
MESSAGE(STATUS "This is APPLE, set INCLUDE_DIRS")
set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include /usr/local/iODBC/include /opt/snowflake/snowflakeodbc/include/ ${CMAKE_CURRENT_SOURCE_DIR}/../../ ${CURL_INCLUDE_DIR})
elseif(UNIX)
MESSAGE(STATUS "This is linux, set INCLUDE_DIRS")
set(INCLUDE_DIRS ${Boost_INCLUDE_DIRS} /usr/local/include ${CMAKE_CURRENT_SOURCE_DIR}/../../)
endif(APPLE)
if(APPLE)
MESSAGE(STATUS "This is APPLE, set LINK_DIRS")
set(LINK_DIRS /usr/local/lib /usr/local/iODBC/lib /opt/snowflake/snowflakeodbc/lib/universal /Users/aabjfzhu/software/vcpkg/ports/cppwork/vcpkg_installed/x64-osx/lib)
elseif(UNIX)
MESSAGE(STATUS "This is linux, set LINK_DIRS")
set(LINK_DIRS ${Boost_INCLUDE_DIRS} /usr/local/lib /vcpkg/ports/cppwork/vcpkg_installed/x64-linux/lib)
endif(APPLE)
if(APPLE)
MESSAGE(STATUS "This is APPLE, set ODBC_LIBS")
set(ODBC_LIBS iodbc iodbcinst)
elseif(UNIX)
MESSAGE(STATUS "This is linux, set LINK_DIRS")
set(ODBC_LIBS odbc odbcinst ltdl)
endif(APPLE)
include_directories(${INCLUDE_DIRS})
LINK_DIRECTORIES(${LINK_DIRS})
file( GLOB test_file_list ${CMAKE_CURRENT_SOURCE_DIR}/*.cpp)
file( GLOB APP_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/../impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../api_accuracy/utils/io_util.cpp ${CMAKE_CURRENT_SOURCE_DIR}/*.h ${CMAKE_CURRENT_SOURCE_DIR}/../../http/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../yaml/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../df/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../death_handler/impl/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/../../html/impl/*.cpp)
add_library(${PROJECT_NAME}_lib SHARED ${APP_SOURCES} ${test_file})
target_link_libraries(${PROJECT_NAME}_lib ${Boost_LIBRARIES} ZLIB::ZLIB DataFrame::DataFrame ${OpenCV_LIBS} ${CURL_LIBRARIES})
target_link_libraries(${PROJECT_NAME}_lib ssl crypto libgtest.a pystring libyaml-cpp.a libgmock.a ${ODBC_LIBS} libnanodbc.a pthread dl backtrace html-parser)
foreach( test_file ${test_file_list} )
file(RELATIVE_PATH filename ${CMAKE_CURRENT_SOURCE_DIR} ${test_file})
string(REPLACE ".cpp" "" file ${filename})
add_executable(${file} ${test_file})
target_link_libraries(${file} ${PROJECT_NAME}_lib)
endforeach( test_file ${test_file_list})
bread_crumb_test.cpp
#include <glog/logging.h>
#include <gtest/gtest.h>
#include <webdriverxx/webdriverxx.h>
#include <fstream>
#include <chrono>
#include <thread>
#include "death_handler/death_handler.h"
#include "html/html_.h"
#include "pystring/pystring.h"
#include "webdriver/link_item.h"
#include "webdriver/test_cfg.h"
using namespace webdriverxx;
int main(int argc, char** argv) {
FLAGS_log_dir = "./";
FLAGS_alsologtostderr = true;
// 日志级别 INFO, WARNING, ERROR, FATAL 的值分别为0、1、2、3
FLAGS_minloglevel = 1;
Debug::DeathHandler dh;
google::InitGoogleLogging("./logs.log");
testing::InitGoogleTest(&argc, argv);
int ret = RUN_ALL_TESTS();
return ret;
}
class BreadCrumbTests : public testing::Test {
protected:
virtual void SetUp() {
std::ifstream ifs{test_data_path};
auto doc = Html::get_html_doc(ifs);
auto eles = doc.getElementsByTagName("a");
for (auto&& ele : eles) {
auto url = (std::string)ele.getAttribute("href");
auto name = (std::string)ele.getTextContent();
LinkItem item{name, url};
auto index = pystring::find(url, test_host_name);
if (index >= 0) {
link_items_.emplace_back(std::move(item));
}
}
for (auto&& item : link_items_) {
LOG(WARNING) << item.name;
LOG(WARNING) << item.url;
LOG(WARNING) << "\n";
}
}
void saveScreenshot(const WebDriver& driver, const std::string& file_name, const int& i) {
std::stringstream ss;
ss << screenshot_file_path << i << "_" <<file_name << ".jpg";
driver.GetScreenshotAsFile(ss.str());
}
WebDriver initWebDriver() {
auto caps = Capabilities();
caps.SetVersion("93.0.4577.63");
caps.SetBrowserName(browser::Chrome);
caps.SetPlatform(platform::Any);
WebDriver driver = Start(Chrome(caps));
return std::move(driver);
}
void loginToPage(WebDriver& driver, const std::string& url) {
driver.Navigate(url.c_str());
std::this_thread::sleep_for(std::chrono::seconds(1));
driver.FindElement(ByName("username")).SendKeys("[email protected]");
driver.FindElement(ByXPath(R"(//input[@placeholder="Password"])"))
.SendKeys("{YOUR_PASSWORD}");
driver.FindElement(ByXPath(R"(//button[@type="submit"])")).Click();
std::this_thread::sleep_for(std::chrono::seconds(20));
}
virtual void TearDown() {}
std::vector<LinkItem> link_items_;
};
TEST_F(BreadCrumbTests, TestWebSites) {
auto driver = initWebDriver();
int i = 0;
bool is_case_pass = true;
for (auto&& item : link_items_) {
if(i==0) {
loginToPage(driver, item.url);
}else {
driver.Navigate(item.url);
std::this_thread::sleep_for(std::chrono::seconds(10));
auto disable_index = pystring::find(item.name, "disabled domain");
if(disable_index >= 0) {
auto ele = driver.FindElement(ByClass("Typography__Title-sc-h8dyzi-0 gHUdzW"));
auto _404_text = ele.GetText();
saveScreenshot(driver, item.name, i);
if(_404_text != "Oops! 404") {
LOG(ERROR) << "Url disabled is not 404 status [" << item.name << "] [" << item.url << "]" << "\n";
is_case_pass = false;
}
}else {
auto breadcrumb = driver.FindElement(ByXPath("//nav[@aria-label='Breadcrumb']"));
saveScreenshot(driver, item.name, i);
if(!breadcrumb.IsDisplayed()) {
is_case_pass = false;
LOG(ERROR) << "Url breadcrumb is not 200 status [" << item.name << "] [" << item.url << "]" << "\n";
}
}
}
++i;
}
ASSERT_TRUE(is_case_pass);
}
test_cfg.h
#ifndef _FREDIRC_TEST_CFG_H_
#define _FREDIRC_TEST_CFG_H_
#include <string>
#include <vector>
extern std::string test_data_path;
extern std::string test_host_name;
extern std::string screenshot_file_path;
#endif
impl/test_cfg.cpp
#include "webdriver/test_cfg.h"
std::string test_data_path = "../data/bookmarks_11_11_21.html";
std::string test_host_name = "tai4.appannie.com";
std::string screenshot_file_path = "../results/";
link_item.h
#ifndef _FREDIRC_LINK_ITEM_H_
#define _FREDIRC_LINK_ITEM_H_
#include <string>
struct LinkItem {
std::string name;
std::string url;
};
#endif
test/data/bookmarks_11_11_21.html
<!DOCTYPE NETSCAPE-Bookmark-file-1>
<!-- This is an automatically generated file.
It will be read and overwritten.
DO NOT EDIT! -->
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
<TITLE>Bookmarks</TITLE>
<H1>Bookmarks</H1>
<DL><p>
<DT><H3 ADD_DATE="1626233287" LAST_MODIFIED="1626233287">Breadcrumb-Prod</H3>
<DL><p>
<DT><A HREF="https://www.appannie.com/company/1000200000000111?device_code=ios-all&country_code=US&date=!(%272020-09-01%27,%272020-11-30%27)&granularity=monthly" ADD_DATE="1610770311" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Google | App Annie</A>
<DT><A HREF="https://www.appannie.com/company/1000200000000122/publishers" ADD_DATE="1610770319" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Tencent | App Annie - Top App Publisher Companies by Rankings, Downloads and Revenues</A>
<DT><A HREF="https://www.appannie.com/company/1000200000000138/publishers?company_slug=1000200000000138" ADD_DATE="1610770323" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Apple | App Annie - Top App Publisher Companies by Rankings, Downloads and Revenues</A>
<DT><A HREF="https://www.appannie.com/company/1000200000000010?device_code=ios-all&country_code=US&date=!(%272020-09-01%27,%272020-11-30%27)&granularity=monthly" ADD_DATE="1610770326" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Baidu | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/google-play/publisher/20200001770104?country_code=US&date=!(%272020-09-01%27,%272020-11-30%27)&granularity=monthly" ADD_DATE="1610770331" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Think Out Srl | App Annie</A>
<DT><A HREF="https://www.appannie.com/company/1000200000004911/publishers?company_slug=1000200000004911" ADD_DATE="1610770334" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Spotify | App Annie - Top App Publisher Companies by Rankings, Downloads and Revenues</A>
<DT><A HREF="https://www.appannie.com/dashboard/199104/item/14/storeviews/?order_by=app_store_views&order_type=desc&breakdown=country&chart_type=app_store_views&devices=All%20Devices&countries=ALL&date=2016-04-30~2016-05-29&chart_style=line&stack&percent=false&series=US,FR,GB,SG,SE,RU,Others&table_selections=US,FR,GB,SG,SE,RU" ADD_DATE="1610770340" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Flying Dragon | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/ios/app/14/details?date=!(%272020-09-20%27,%272020-12-12%27)&granularity=weekly&country_code=US" ADD_DATE="1610770344" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Flying Dragon | App Annie</A>
<DT><A HREF="https://www.appannie.com/dashboard/283703/item/20600001773882/storeviews/?order_by=app_store_views&order_type=desc&breakdown=country&chart_type=app_store_views&countries=ALL&date=2020-09-26~2020-10-25&chart_style=line&stack&percent=false&series=UN,MX,ZW,ZA,YE,XK,Others&table_selections=UN,MX,ZW,ZA,YE,XK" ADD_DATE="1610770355" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">App Annie | App Annie</A>
<DT><A HREF="https://www.appannie.com/account/apps/" ADD_DATE="1610770359" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Account Detail | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/google-play/app/com.baidu.baike/details?date=!(%272020-09-27%27,%272020-12-19%27)&granularity=weekly&country_code=WW" ADD_DATE="1610770368" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">百度百科 | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/ios/app/476943146/details?date=!(%272020-10-04%27,%272020-12-26%27)&granularity=weekly&country_code=US" ADD_DATE="1610770371" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Flood–It! | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/ios/app/1032446395/details?date=!(%272020-09-20%27,%272020-12-12%27)&granularity=weekly&country_code=US" ADD_DATE="1610770375" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Action Movie Kit | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/ios/app/698445671/details?date=!(%272020-09-20%27,%272020-12-12%27)&granularity=weekly&country_code=US" ADD_DATE="1610770378" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Saber Movie FX | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000652668" ADD_DATE="1610770382" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Arena of Valor | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000797998" ADD_DATE="1610770385" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">街霸:对决 | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000579812" ADD_DATE="1610770388" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Thoma Bravo Meetings | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000734541" ADD_DATE="1610770390" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">POKO | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/amazon-appstore/publisher/30200000013823/" ADD_DATE="1610770395" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">Mojang | App Annie</A>
<DT><A HREF="https://www.appannie.com/domains/70010000000004/usage?chart_mobile_website_usage_chart$device=(aggr:!f,alignByLaunch:!f,percent:!f,softLaunch:!f,stack:!f,type:line)&mobile_website_usage_chart$device$chart_compare_facets=!(est_average_active_users__aggr)&breakdowns=(country_code:!n,device_code:())&device_code=all-phone&country_code=US&date=!(%272020-09-06%27,%272020-12-12%27)&granularity=weekly&chart_facets=!(est_usage_penetration__aggr)&table_facets=!(est_usage_penetration__aggr,est_average_active_users__aggr,est_average_session_per_user__aggr,est_average_session_duration__aggr,est_total_sessions__aggr,est_average_time_per_user__aggr,est_total_time__aggr)&order_by=!((name:est_usage_penetration__aggr,order:desc))" ADD_DATE="1610770398" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">youtube.com | App Annie</A>
<DT><A HREF="https://www.appannie.com/apps/all-stores/app/1000600000000441" ADD_DATE="1610770401" ICON="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAACyElEQVQ4jW2TT2jcRRiGn5n5YbVomqQ0UCtGoZUmgiBWRE+9qdCKxUJroSiC0EIF6cWDQdpeqgfRBkELihAjBIOBxirxD1ZEehGVgNsKic26JpsmTdZtYtdkfzPf62F3Y0QH5vTOOwPfPA+SDkqalZSa28zMYh4VY1Qeo/I8KpmZJFt3blbSQSdpAdgMGODMDO+943+Wmcl7DyDAA4tOktbKyfDBu98nSvz80y/Us0COuLFa56Fd97JzRzcxJWUhrF3iW2Wl1ChfmuLTt0c0MngeD9Rj5N2Bc5w+M6jxwiRZCC6lBOAAw8yU8lwm6VqhqJEX+21prqKZ6Tmd6uvXSy+/qZnyvKbL8zp09KSNFyYkSXmey8zkkeSyjPzKnOY+/EaPvfKsu62rgyx4qtVlFheu45xj29YtvHHqBXd2YFSTU9PKsgxJcmameHmG5ZMfkw4/TP3OzSxUl/jyi+94+vmnWFqt03/2I/bt3U1HextTpTIDw2O81neUnh3deIBUvIZmKqzWc+YvFbl4/lt6e7ezrft2eu65i96euxkevcB4YZKVlTpXfiszVZrFOQcpRknSn+e+V7F/VJJUXazqndPvKcaoep7reN8ZVf64Lkk68fr7Gv7kQnMOUd55j8XExid2sdq5ka9fHWRT5ybMOxbnKxRLs9yy4SY62ts4fuIttnZ1sn/PbmKMeO9xTbqQGT4Ed/GDMZZrNUJ3FzdnGVdrNTZkGYVfS7S33cqRZ54kxqSQBVyTPAEgYWaELOOroc/54cfLbNl+B9W/VpgolXnwgV6eO7SHPEaCD7gWqy3+/3EglySNDo3pkfv3a+d9+zQw9Jkkqd74+5YTJillTaYNcM45fAiKMbq9Bx6lcqOGOTh84HFijGQhyK093UD5PzK1spTMhQbzpJQIwWstXieTB44BV9cFgMN7T0qJlBINA/9Vptk59jd8YO4vNzhUMQAAAABJRU5ErkJggg==">YouTube | App Annie</A>
<DT><A HREF="https://www.appannie.com/sdks/60100000000836?device_code=(equal:all)&country_code=(equal:WW)&unified_category_id=(equal:800000)&sdk_install_status_code=(equal:installed)&product_id=(in:(breakdowns:(product_id:()),facets:!(est