From 2f85b1a3cb78e3b26ea98bfe30d90b221b302a0e Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Tue, 23 Aug 2016 11:51:27 +0200 Subject: [PATCH 01/16] Modify getting icon list Installer (now) provides xml:lang localization of icon items in platform manifest. This information is generated from folder based localization of wgt package. From now: - icon list returned by handler contains only valid tag related positions, this will prevent parser from modifing constant data, - client will need to pass icon list from handler to utility function (together with base path) to get localized custom and default icon list that can be used in runtime or for platform manifest tag assignment, - installer generates list of localized icons and for each available locale icon element in manifest_x is created. Submit together: - https://review.tizen.org/gerrit/85076 - https://review.tizen.org/gerrit/85078 Change-Id: I8797bfa57f185d679dd5b6cbea4278658bedd7a2 --- CMakeLists.txt | 1 + data/CMakeLists.txt | 1 + data/default.png | Bin 0 -> 57662 bytes packaging/wgt-backend.spec | 1 + src/wgt/step/configuration/step_parse.cc | 43 ++++++++++++++------ src/wgt/step/filesystem/step_wgt_patch_icons.cc | 51 ++++++++++++++++++------ src/wgt/step/pkgmgr/step_generate_xml.cc | 15 +++---- 7 files changed, 79 insertions(+), 33 deletions(-) create mode 100644 data/CMakeLists.txt create mode 100644 data/default.png diff --git a/CMakeLists.txt b/CMakeLists.txt index 20eafb2..f39937d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -52,4 +52,5 @@ PKG_CHECK_MODULES(TPK_INSTALLER_DEPS REQUIRED tpk-installer) FIND_PACKAGE(Boost REQUIRED COMPONENTS system filesystem regex program_options) FIND_PACKAGE(GTest REQUIRED) +ADD_SUBDIRECTORY(data) ADD_SUBDIRECTORY(src) diff --git a/data/CMakeLists.txt b/data/CMakeLists.txt new file mode 100644 index 0000000..ea0766f --- /dev/null +++ b/data/CMakeLists.txt @@ -0,0 +1 @@ +INSTALL(FILES "default.png" DESTINATION "${SHAREDIR}/wgt-backend/") diff --git a/data/default.png b/data/default.png new file mode 100644 index 0000000000000000000000000000000000000000..9765b1bda7e5bddf0925555ab204b887a873bf24 GIT binary patch literal 57662 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 kZ}gYfNaCF}xV$|1>H6z0+kD #include #include +#include #include #include #include #include #include -#include +#include #include @@ -154,17 +155,34 @@ bool StepParse::FillIconPaths(manifest_x* manifest) { return false; } auto icons_info = - GetManifestDataForKey( - app_keys::kIconsKey); - if (icons_info.get()) { - for (auto& application_icon : icons_info->icons()) { - icon_x* icon = reinterpret_cast (calloc(1, sizeof(icon_x))); - bf::path icon_path = context_->root_application_path.get() - / app_info->package() / "res" / "wgt" / application_icon.path(); - icon->text = strdup(icon_path.c_str()); + GetManifestDataForKey( + app_keys::kIconsKey); + if (!icons_info) { + icons_info.reset(new wgt::parse::ApplicationIconsInfo()); + } + wgt::parse::LocalizedApplicationIconsInfo localized_list = + wgt::parse::GetLocalizedIconList(*icons_info, + context_->unpacked_dir_path.get()); + // We need to generate icon for each locale and icons are already set into + // lookup order. There isn't said that all icons should be received from + // one tag position so we iterate utils we run out of icons creating + // any icon element that are possible for given locale. + std::set found_locales; + for (auto& application_icon : localized_list) { + const std::string& locale = application_icon.locale(); + if (found_locales.find(locale) != found_locales.end()) + continue; + found_locales.insert(locale); + + icon_x* icon = reinterpret_cast(calloc(1, sizeof(icon_x))); + bf::path icon_path = context_->root_application_path.get() + / app_info->package() / "res" / "wgt" / application_icon.path(); + icon->text = strdup(icon_path.c_str()); + if (!locale.empty()) + icon->lang = strdup(locale.c_str()); + else icon->lang = strdup(DEFAULT_LOCALE); - manifest->icon = g_list_append(manifest->icon, icon); - } + manifest->icon = g_list_append(manifest->icon, icon); } return true; } @@ -300,8 +318,7 @@ bool StepParse::FillMainApplicationInfo(manifest_x* manifest) { application->autorestart = strdup("false"); application->launch_mode = strdup(app_info->launch_mode().c_str()); - if (manifest->icon) { - icon_x* icon = reinterpret_cast(manifest->icon->data); + for (auto& icon : GListRange(manifest->icon)) { icon_x* app_icon = reinterpret_cast(calloc(1, sizeof(icon_x))); app_icon->text = strdup(icon->text); app_icon->lang = strdup(icon->lang); diff --git a/src/wgt/step/filesystem/step_wgt_patch_icons.cc b/src/wgt/step/filesystem/step_wgt_patch_icons.cc index 5bcb229..2a995b2 100644 --- a/src/wgt/step/filesystem/step_wgt_patch_icons.cc +++ b/src/wgt/step/filesystem/step_wgt_patch_icons.cc @@ -13,6 +13,12 @@ namespace bf = boost::filesystem; namespace bs = boost::system; namespace ci = common_installer; +namespace { + +const char kDefaultIconPath[] = "/usr/share/wgt-backend/default.png"; + +} // namespace + namespace wgt { namespace filesystem { @@ -25,24 +31,43 @@ common_installer::Step::Status StepWgtPatchIcons::process() { if (strcmp(app->type, "webapp") != 0) continue; if (app->icon) { - icon_x* icon = reinterpret_cast(app->icon->data); - bf::path icon_text(icon->text); - bf::path icon_path = common_icon_location / app->appid; - if (icon_text.has_extension()) - icon_path += icon_text.extension(); - else - icon_path += ".png"; + // edit icon->text and copy icons to common location + for (auto& icon : GListRange(app->icon)) { + bf::path icon_text(icon->text); + bf::path icon_path = common_icon_location / app->appid; + if (strcmp(icon->lang, DEFAULT_LOCALE)) { + icon_path += "."; + icon_path += icon->lang; + } + if (icon_text.has_extension()) + icon_path += icon_text.extension(); + else + icon_path += ".png"; - bf::copy_file(icon->text, icon_path, - bf::copy_option::overwrite_if_exists, error); + bf::copy_file(icon->text, icon_path, + bf::copy_option::overwrite_if_exists, error); + if (error) { + LOG(ERROR) << "Failed to move icon from " << icon->text << " to " + << icon_path; + return Status::ICON_ERROR; + } + if (icon->text) + free(const_cast(icon->text)); + icon->text = strdup(icon_path.c_str()); + } + } else { + // create default icon if there is no icon at all + bf::path icon_path = common_icon_location / app->appid; + icon_path += ".png"; + bf::copy_file(kDefaultIconPath, icon_path, error); if (error) { - LOG(ERROR) << "Failed to move icon from " << icon->text << " to " - << icon_path; + LOG(ERROR) << "Failed to create default icon for web application"; return Status::ICON_ERROR; } - if (icon->text) - free(const_cast(icon->text)); + icon_x* icon = reinterpret_cast(calloc(1, sizeof(icon_x))); icon->text = strdup(icon_path.c_str()); + icon->lang = strdup(DEFAULT_LOCALE); + app->icon = g_list_append(app->icon, icon); } } return Status::OK; diff --git a/src/wgt/step/pkgmgr/step_generate_xml.cc b/src/wgt/step/pkgmgr/step_generate_xml.cc index 16b27a0..8094412 100644 --- a/src/wgt/step/pkgmgr/step_generate_xml.cc +++ b/src/wgt/step/pkgmgr/step_generate_xml.cc @@ -209,13 +209,14 @@ common_installer::Step::Status StepGenerateXml::GenerateApplicationCommonXml( } } - if (app->icon) { - icon_x* iconx = reinterpret_cast(app->icon->data); - xmlTextWriterWriteFormatElement( - writer, BAD_CAST "icon", "%s", BAD_CAST iconx->text); - } else { - // Default icon setting is role of the platform - LOG(DEBUG) << "Icon was not found in application"; + for (auto& icon : GListRange(app->icon)) { + xmlTextWriterStartElement(writer, BAD_CAST "icon"); + if (icon->lang && strcmp(DEFAULT_LOCALE, icon->lang) != 0) { + xmlTextWriterWriteAttribute(writer, BAD_CAST "xml:lang", + BAD_CAST icon->lang); + } + xmlTextWriterWriteString(writer, BAD_CAST icon->text); + xmlTextWriterEndElement(writer); } for (image_x* image : GListRange(app->image)) { -- 2.7.4 From 8e4378497ce80451d613ac4f627452ed29dc21b1 Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Wed, 17 Aug 2016 10:06:08 +0200 Subject: [PATCH 02/16] Add StepChangeOwner for HybridInstaller Complementary changes to: https://review.tizen.org/gerrit/#/c/84185/ To verify, install hybrid package and check that files of installed package have owner's ownership. Change-Id: I8a644be5567acd1a6ce800225cb9050043c32f76 --- src/hybrid/hybrid_installer.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index 9099883..00bfcb3 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -132,6 +133,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); break; case ci::RequestType::Update: @@ -178,6 +180,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); + AddStep(); AddStep(); break; case ci::RequestType::Uninstall: @@ -254,6 +257,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); + AddStep(); AddStep(); break; case ci::RequestType::Recovery: @@ -318,6 +322,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); break; case ci::RequestType::MountUpdate: @@ -363,6 +368,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); + AddStep(); AddStep(); break; case ci::RequestType::ManifestDirectInstall: @@ -388,6 +394,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); break; case ci::RequestType::ManifestDirectUpdate: @@ -417,6 +424,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); + AddStep(); AddStep(); break; case ci::RequestType::EnablePkg: -- 2.7.4 From 0019e1abf93a2d5b1ed056c63a299f3e34db45de Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Tue, 30 Aug 2016 13:26:04 +0200 Subject: [PATCH 03/16] Force uninstall for external storage packages Now errors from StepAcquireExternalStorage are ignored in uninstall mode by using StepOptionalAcquireExternalStorage instead of old step. Requires: - https://review.tizen.org/gerrit/#/c/86078/ Change-Id: I07efa35829566b928208b6312180a24f6e1c66a4 --- src/hybrid/hybrid_installer.cc | 3 ++- src/wgt/wgt_installer.cc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index 00bfcb3..ea2cc76 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -194,7 +195,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) ci::Plugin::ActionType::Uninstall); AddStep(); AddStep(); - AddStep(true); + AddStep(); AddStep(); AddStep(); AddStep(); diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index ea96cf2..b728742 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -192,7 +193,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) ci::configuration::StepParseManifest::StoreLocation::NORMAL); AddStep(); AddStep(); - AddStep(true); + AddStep(); AddStep( ci::Plugin::ActionType::Uninstall); AddStep(); -- 2.7.4 From a1af58e5c609671447bbc3d455a3004bc4442c61 Mon Sep 17 00:00:00 2001 From: JongHeon Choi Date: Thu, 28 Jul 2016 15:19:06 +0900 Subject: [PATCH 04/16] File encryption method reading whole files into a dynamic stack buffer Related changes: [crosswalk-tizen] https://github.com/crosswalk-project/crosswalk-tizen/pull/135 https://review.tizen.org/gerrit/#/c/83459/ Change-Id: I87d41c578e161622035e65e324b3d9590e2c266e --- src/wgt/step/encryption/step_encrypt_resources.cc | 225 ++++++++++++++-------- 1 file changed, 146 insertions(+), 79 deletions(-) diff --git a/src/wgt/step/encryption/step_encrypt_resources.cc b/src/wgt/step/encryption/step_encrypt_resources.cc index ad5485f..4d5fb91 100644 --- a/src/wgt/step/encryption/step_encrypt_resources.cc +++ b/src/wgt/step/encryption/step_encrypt_resources.cc @@ -10,8 +10,10 @@ #include #include +#include #include +#include #include #include @@ -21,8 +23,51 @@ namespace { +const std::size_t kEncryptionChunkMaxSize = 8_kB; // bytes const std::set encryptSet { ".html", ".htm", ".css", ".js"}; +FILE* OpenFile(const std::string& path, const std::string& mode) { + FILE* result = nullptr; + + do { + result = fopen(path.c_str(), mode.c_str()); + } while ((nullptr == result)); + + return result; +} + +std::size_t ReadBytes(unsigned char* buffer, std::size_t count, FILE* stream) { + std::size_t result = std::fread(buffer, + 1, + count, + stream); + if (result != count) { + if (0 != std::ferror(stream)) { + LOG(ERROR) << "Error while reading data"; + } + } + + return result; +} + +void WriteBytes(unsigned char* buffer, std::size_t count, FILE* stream) { + // original file is treated as destination! + std::size_t bytes_written = 0; + std::size_t bytes_to_write = 0; + do { + bytes_to_write = count - bytes_written; + bytes_written = std::fwrite(buffer + bytes_written, + sizeof(unsigned char), + count - bytes_written, + stream); + if ((bytes_written != bytes_to_write)) { + LOG(ERROR) << "Error while writing data"; + free(buffer); + fclose(stream); + } + } while ((bytes_written != bytes_to_write)); +} + } // namespace @@ -105,102 +150,124 @@ bool StepEncryptResources::Encrypt(const bf::path &src) { } bool StepEncryptResources::EncryptFile(const bf::path &src) { - FILE *input = fopen(src.string().c_str(), "rb"); - if (!input) { - LOG(ERROR) << "Cannot open file for encryption: " << src; + bf::path encFile(src.string() + ".enc"); + struct stat info; + memset(&info, 0, sizeof(info)); + if (stat(src.string().c_str(), &info) != 0) { + LOG(ERROR) << "Could not access file " << src.string(); return false; } - - // read size - fseek(input , 0 , SEEK_END); - size_t length = ftell(input); - - // don't encrypt empty files because libwebappenc doesn't support it - if (length == 0) { - fclose(input); + const std::size_t fileSize = info.st_size; + if (0 == fileSize) { + LOG(ERROR) << src.string().c_str() << " size is 0, so encryption is skiped"; return true; } - rewind(input); - - char *input_buffer = new char[length]; - if (length != fread(input_buffer, sizeof(char), length, input)) { - LOG(ERROR) << "Read error, file: " << src; - fclose(input); - delete []input_buffer; + FILE *input = OpenFile(src.string().c_str(), "rb"); + if (input == nullptr) { + LOG(ERROR) << "Cannot open file for encryption: " << src.string(); return false; } - fclose(input); - unsigned char* encrypted_data = nullptr; - size_t enc_data_len = 0; - int ret; - if (context_->request_mode.get() == common_installer::RequestMode::GLOBAL) - ret = wae_encrypt_global_web_application( - context_->pkgid.get().c_str(), - context_->is_preload_request.get() ? - true : false, - reinterpret_cast(input_buffer), - length, - &encrypted_data, - &enc_data_len); - else - ret = wae_encrypt_web_application( - context_->uid.get(), - context_->pkgid.get().c_str(), - reinterpret_cast(input_buffer), - length, - &encrypted_data, - &enc_data_len); - delete []input_buffer; - if (WAE_ERROR_NONE != ret) { - switch (ret) { - case WAE_ERROR_INVALID_PARAMETER: - LOG(ERROR) << "Error during encrypting: WAE_ERROR_INVALID_PARAMETER"; - break; - case WAE_ERROR_PERMISSION_DENIED: - LOG(ERROR) << "Error during encrypting: WAE_ERROR_PERMISSION_DENIED"; - break; - case WAE_ERROR_NO_KEY: - LOG(ERROR) << "Error during encrypting: WAE_ERROR_NO_KEY"; - break; - case WAE_ERROR_KEY_MANAGER: - LOG(ERROR) << "Error during encrypting: WAE_ERROR_KEY_MANAGER"; - break; - case WAE_ERROR_CRYPTO: - LOG(ERROR) << "Error during encrypting: WAE_ERROR_CRYPTO"; - break; - case WAE_ERROR_UNKNOWN: - LOG(ERROR) << "Error during encrypting: WAE_ERROR_UNKNOWN"; - break; - default: - LOG(ERROR) << "Error during encrypting: UNKNOWN"; - break; - } + FILE *output = OpenFile(encFile.string().c_str(), "wb"); + if (output == nullptr) { + LOG(ERROR) << "Cannot create encrypted file: " << encFile.string(); return false; } - // original file is treated as destination! - FILE *output = fopen(src.string().c_str(), "wb"); - if (!output) { - LOG(ERROR) << "Cannot create encrypted file: " << src; - free(encrypted_data); + std::size_t chunkSize = (fileSize > kEncryptionChunkMaxSize + ? kEncryptionChunkMaxSize : fileSize); + + std::unique_ptr inChunk(new unsigned char[chunkSize]); + std::size_t bytesRead = 0; + + do { + bytesRead = ReadBytes(inChunk.get(), chunkSize, input); + if (0 != bytesRead) { + unsigned char* encrypted_data = nullptr; + size_t encrypted_size = 0; + // TODO(p.sikorski) check if it is Preloaded + int ret; + if (context_->request_mode.get() == common_installer::RequestMode::GLOBAL) { + ret = wae_encrypt_global_web_application( + context_->pkgid.get().c_str(), + context_->is_preload_request.get() ? + true : false, + inChunk.get(), + (size_t)bytesRead, + &encrypted_data, + &encrypted_size); + } else { + ret = wae_encrypt_web_application( + context_->uid.get(), + context_->pkgid.get().c_str(), + inChunk.get(), + (size_t)bytesRead, + &encrypted_data, + &encrypted_size); + } + + if (WAE_ERROR_NONE != ret) { + LOG(ERROR) << "Error during encrypting:"; + switch (ret) { + case WAE_ERROR_INVALID_PARAMETER: + LOG(ERROR) << "WAE_ERROR_INVALID_PARAMETER"; + break; + case WAE_ERROR_PERMISSION_DENIED: + LOG(ERROR) << "WAE_ERROR_PERMISSION_DENIED"; + break; + case WAE_ERROR_NO_KEY: + LOG(ERROR) << "WAE_ERROR_NO_KEY"; + break; + case WAE_ERROR_KEY_MANAGER: + LOG(ERROR) << "WAE_ERROR_KEY_MANAGER"; + break; + case WAE_ERROR_CRYPTO: + LOG(ERROR) << "WAE_ERROR_CRYPTO"; + break; + case WAE_ERROR_UNKNOWN: + LOG(ERROR) << "WAE_ERROR_UNKNOWN"; + break; + default: + LOG(ERROR) << "UNKNOWN"; + break; + } + fclose(output); + fclose(input); + return false; + } + + if (encrypted_size <= 0) { + LOG(ERROR) << "Encryption Failed using TrustZone"; + fclose(output); + fclose(input); + return false; + } + + std::stringstream toString; + toString << encrypted_size; + + WriteBytes((unsigned char*)toString.str().c_str(), sizeof(int), output); + WriteBytes((unsigned char*)encrypted_data, encrypted_size, output); + free(encrypted_data); + } + inChunk.reset(new unsigned char[chunkSize]); + + } while (!std::feof(input)); + + fclose(output); + fclose(input); + + LOG(DEBUG) << "File encrypted successfully"; + if (0 != unlink(src.string().c_str())) { return false; } - if (enc_data_len != fwrite(reinterpret_cast(encrypted_data), - sizeof(char), - enc_data_len, - output)) { - LOG(ERROR) << "Write error, file: " << src; - free(encrypted_data); - fclose(output); + LOG(DEBUG) << "Rename encrypted file"; + if (0 != std::rename(encFile.c_str(), src.string().c_str())) { return false; } - - fclose(output); - free(encrypted_data); return true; } -- 2.7.4 From 3b44494fae615048b82f7dac6905cc9aa23e2bfb Mon Sep 17 00:00:00 2001 From: JongHeon Choi Date: Wed, 31 Aug 2016 13:44:22 +0900 Subject: [PATCH 05/16] Revert "Force uninstall for external storage packages" This reverts commit 0019e1abf93a2d5b1ed056c63a299f3e34db45de. Change-Id: Ieafc64859bb0648aed01a21d71836d66ac5ad1a6 --- src/hybrid/hybrid_installer.cc | 3 +-- src/wgt/wgt_installer.cc | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index ea2cc76..00bfcb3 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -14,7 +14,6 @@ #include #include #include -#include #include #include #include @@ -195,7 +194,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) ci::Plugin::ActionType::Uninstall); AddStep(); AddStep(); - AddStep(); + AddStep(true); AddStep(); AddStep(); AddStep(); diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index b728742..ea96cf2 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -16,7 +16,6 @@ #include #include #include -#include #include #include #include @@ -193,7 +192,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) ci::configuration::StepParseManifest::StoreLocation::NORMAL); AddStep(); AddStep(); - AddStep(); + AddStep(true); AddStep( ci::Plugin::ActionType::Uninstall); AddStep(); -- 2.7.4 From 14bc5b8d0c1b3c944f4ae011fe293052b780388a Mon Sep 17 00:00:00 2001 From: JongHeon Choi Date: Wed, 31 Aug 2016 13:45:30 +0900 Subject: [PATCH 06/16] Revert "Revert "Force uninstall for external storage packages"" This reverts commit 3b44494fae615048b82f7dac6905cc9aa23e2bfb. Change-Id: I113e8f2ec6a37a630dd052513d7a88dc6712c407 --- src/hybrid/hybrid_installer.cc | 3 ++- src/wgt/wgt_installer.cc | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index 00bfcb3..ea2cc76 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -14,6 +14,7 @@ #include #include #include +#include #include #include #include @@ -194,7 +195,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) ci::Plugin::ActionType::Uninstall); AddStep(); AddStep(); - AddStep(true); + AddStep(); AddStep(); AddStep(); AddStep(); diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index ea96cf2..b728742 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -16,6 +16,7 @@ #include #include #include +#include #include #include #include @@ -192,7 +193,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) ci::configuration::StepParseManifest::StoreLocation::NORMAL); AddStep(); AddStep(); - AddStep(true); + AddStep(); AddStep( ci::Plugin::ActionType::Uninstall); AddStep(); -- 2.7.4 From 406e43b5ea1834f8048751ee1fb0b7c796bcd07f Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Tue, 30 Aug 2016 16:17:57 +0200 Subject: [PATCH 07/16] Smoke test for delta recovery To verify, run new smoke test. Requires: - https://review.tizen.org/gerrit/#/c/86119/ Change-Id: I612a4cf568646787463e05dc874f77af7f5c55e5 --- src/unit_tests/smoke_test.cc | 20 ++++++++++++++++++++ .../test_samples/smoke/RecoveryMode_ForDelta.delta | Bin 0 -> 5719 bytes .../test_samples/smoke/RecoveryMode_ForDelta.wgt | Bin 0 -> 38921 bytes .../test_samples/smoke/RecoveryMode_ForDelta_2.wgt | Bin 0 -> 38919 bytes 4 files changed, 20 insertions(+) create mode 100755 src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.wgt create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta_2.wgt diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index c56ebbd..75c0fa3 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -598,6 +598,26 @@ TEST_F(SmokeTest, RecoveryMode_ForUpdate) { ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "1\n")); } +TEST_F(SmokeTest, RecoveryMode_ForDelta) { + bf::path path_old = kSmokePackagesDirectory / "RecoveryMode_ForDelta.wgt"; + bf::path path_new = kSmokePackagesDirectory / "RecoveryMode_ForDelta.delta"; + RemoveAllRecoveryFiles(); + ASSERT_EQ(Install(path_old, PackageType::WGT), ci::AppInstaller::Result::OK); + Subprocess backend_crash("/usr/bin/wgt-backend-ut/smoke-test-helper"); + backend_crash.Run("-i", path_new.string(), "-u", kTestUserIdStr.c_str()); + ASSERT_NE(backend_crash.Wait(), 0); + + std::string pkgid = "smokeapp30"; + std::string appid = "smokeapp30.RecoveryModeForDelta"; + bf::path recovery_file = FindRecoveryFile(); + ASSERT_FALSE(recovery_file.empty()); + ASSERT_EQ(Recover(recovery_file, PackageType::WGT), + ci::AppInstaller::Result::OK); + ValidatePackage(pkgid, {appid}); + + ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "1\n")); +} + TEST_F(SmokeTest, InstallationMode_GoodSignature) { bf::path path = kSmokePackagesDirectory / "InstallationMode_GoodSignature.wgt"; // NOLINT ASSERT_EQ(Install(path, PackageType::WGT), ci::AppInstaller::Result::OK); diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta b/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta new file mode 100755 index 0000000000000000000000000000000000000000..7da64e4222c8129a640067f6c27acb95546b5561 GIT binary patch literal 5719 zcma)=Wl)@3wuYPF1oxl`?hqhA2yP)jf;SS}wV`ndPD5ziAwU|3gF|o$u8lhchd|>R zTrTHM)y!n(&OK9Kt*`cvz29ByU4Neaswg6(5CZ@J3_wl_pBxZ~{hl5Z03am-0Ehup z0Ap7dD+eb|XKPE4v5TvdIhTjMou&pR0C{Y>S>w-g^>_+ELU}w7_}^cPwoZAP0-^6k z`DenR_{56&9<6r_ZahZkzs!S?zNJtPp6{Z=Hqz5v52&mUd@43TMXg2UjjcOsev=dR zXE)xIEveAvJ+YSe*Wd4v0X^Vb9y;100W>3g6r>}J5;WuFp2MZ@tDVXY$KEiFefUWo zOpul~h-CwATZ1d#S~9?Ybn0?^Q_YrVRfD&@;;C0-4I^$nMnS^AJUSEm5_o|WoOHP4 zdyjETu~!Udet6&$`7B1{X{cd;R-aJB>_FLlS*rQDuCH&jSQ@#Pj9l{iv44bb6sq8|mh!R|QR)aiQ6i znL&F6ZRdNC+v3l;yP!{n@XJF>0K`bvTQ4W!qw8yKj*-YY)qJi~U*VpY6V!)JTX;80 zuieW{RW6IS8!3GnWq!62T*9)5RQJc!Q__d-baNGG=+yM6(rko6yLeuBXrW7h;8Z59 zPSOKBU&I*h#ItZ`#h4xcaM3xmP?!Bm)Cpnc>3+r2n)0&XnPp#NMxEkkVEI~%Xl>5X z#EJAdp8UE2aj3fc1#g!86D%tudob!8!8@n2uK4whYk_^Kpf0piO^&50drk2ULEYB9 zGR==J%eeP(eKh_n1>qauFp1HiZuna0?xE4c67f%0$S?;Sx6i5U`1*;#`PS8k@%_ZgmSRr&02ljmIw+#IipF4aLTs?cZ>hjxd4iyZx zy%9;qRPuFAEvCUkv? z2oqS=s~s_eSltf{%>}$2IJ_(O>o44&*qsNQ6{mKcnt@^%4%%LdouJU1a)7p{v5kv@ zgE;;WEEzV$SIEPZdIb&xGYfR;(}{gVF?d&GO4==nuQ0O`}aBD6K!Sk(l$SH%_>1y0qfQ$wQZYsZ6R7m%x_lTTnWX(#XrLuIJt}_o& zg3Ss6UtoN~SiH4jVmS7aT9Vv<2B`ddPCXDb?K{GL0zT!4DWSWa!bDAy)|fpI)s ztvw3-*?xzg0e=ZGTQLHWq;SXqjt#ADV)X6=FN`Uc*`ZeSeDirOJb&B+(IP_;S)MJS zY$rpb=8NazN$wAA?MvcpLaoSSBC?)T&;zSfi$HxQVp?}^6T~7 zLwMJeJF$*9{Emsp80oZNEHYZp6^#f3XGubYjhNWnM%S0)L~ibg15?X}SKjn_jm%jm zm#=iThUf)@q3Yn~vTk-Ucrr&(8v{fB261i3R^^eZwoPCMwJu9^L4f^H@Q>6ip2SG$ z#HNzvMosc|u|_1Pn%5Re4J>BfpKINpaNE9K@jrmN1a?aolrFs|`SPMg1d8q=5}wZm zLoaBlQsOo!+G%_mpssCDPS{c@JN3D9{UD?-q|u`hQ9EDhzShXF_6x z=&~?6pR%TvrXmIEe??QzYch5{UJ8*on~KauLHpLk$(rp|;+V}Kpd*jngpuI1;4Qrd zl6@v<+9kFwIGCO$+;}k8lu7h;J!Sq%9)_3>hCmZQ6HKb%gHTQT4Jq(aUM^?1VAEn) zHETwZgoSF6uCBw@Y;YWw*H5&ql^07evn$0cwG-(=)*B9uCxX5rLrg*H!8eiT!G_ij zr<$LNfosgivFnAR;mWSVa8$9GvYaV0@{D?HystG~&4v2#&W;@}j97<2HR#ZqQ1Ik8 z`D0pHVOTP)%yk-XmFHyagVwV-k)6H^bF(4Xu%G+jaY4tq%K%BbZfh~gmCM=)X_}SY zi{nkDl~9|Un5X&57rw1~4X2Tk?9f(j_x5DcAx*j_tX>355O{1wFh{Lnm%I~P#CR4} znjnHwJ_K}Qw4S_+YIZQ;pfa}!q+=V`-{lIg6`1k>zocrINOf`0bmPCl(wCSGTS1FP z3}zIcSJsj31Wj@TQP9`WE4RSR(~LLsCl8gc+?;f|aH$9>)>CDXYh6(KQrUhQ1b4fWKdF$Y|GBVPKapQj#F$o{J(@KbPK_(v%-HE! zVVBuJ$%AvQ)5(oXvZ&Na-OHf0m!1(~8=}29iBJlfBp=&+-WV`zU4SX{<|&X_ALnI* zp4=kM@%4w4cyFBH8Xl-Xu~1z@lS4zMyQBSZ(*5m# z3Zs0Q5CQnr5}z=J2i|Y* zuPNGISt93^tfR|J`go#V(eLdn^ZRj+JU`q`mTmR_0=v_j5b?U{Ir<^AGn0Q_pcNlo zTr8fz?Pf@^3|ma1=E+~h8g0RwxI9KV#cn>&ST1=uzgv49wG5dCK1l27{`!(h6LWaS zoVnFT11Jw;!^t_Rj90x$t~}<>H}vrlJboH2K2-XqZrJxVDXi80t@s1F%5T8MYOOOt zhy(zfJQmg?aG5%QEUYd63bX8EUOIF>$A?_pVs#nF@8nh4S%y`){xRQ>?Fjzxa^*=> z#{KnI>fZNLyx``;CDF23+*)Hx41yN+E4h-_$OSEuTFJNjt`A3DbyG!%vB?;+u6-dv4;JS?Hhx$Ia-V%DZNi*5p`G@5z{btQ z&n=75s`=-SY`PJ|>QU*}6q9VKGiH8#@aZ+wYUWNj-?KfRS;=@}%hGXX%}&vN9sdzr zww%8DbY|;A!ul?gQO38HM)Kb&_5a7O$Nzv#;P?Fp=9 zn@LxTdmN$7dBeJ)vFz81bMHT7U;T?#BVw_;`OM}Q&hM^v^eu-LJTfWEqpP@&u9}(K zxfmN-gDf2W(%EP@RtFEh?8O~4#)qjfHf-jbVb7zK$Niw; zl%*(iyALpI8=k&72PJHqSBQj8?3yQ+S!*&ug1ImVbLz=Ysst}dl5$gR zJxJDc%N5JoVr`12-5pXqu*D1h-mav#siqVL0HFLx?SHoWcU*t@SM5IXdUTo|q0g3< z4E0d_)X>hpI^lK|IWijMpvf(-319f!Aa1L#M@U1mzh6^fG&~yD&|xn6L8%#Tu$=-P-(3Hm8u;4yr8@JJ7ZY$NJ z{JZ-^0tKs$OK3)6oJ-w3{p0G02Wnh&(|&3=2Wy9clTx`!N?0inhz>6po@-#wp5SHc%&^Pu56Ack^o z4!k8?UdUpdRryYQ1mGGQ@w$w=$%PJYyv=D>Ko?})1annfHcW(jebgP|n1A>4hMZx# zP}m{|3!VE;FzSw4m`0x?x=C}e2lzcp9hXtM!kSx$zQJr_HFJZw^;ZuEeWKT+D#LuG-CV5>2UJ-}s;D(Rq`FBECd*VNDbuxU1zd z7@WVCM90RU;NlqanDapPjipt6YFF_>J;X5;wemHSAteh;!o?l&Fq{u@m#$_}*4?$zC3%=!n%Ws;m-Doe7d8TL1j)6 zobJ7-K4G|SvR-e2t%cuY6VZ8FZ3_TuZ2QDJi<8w&9BI=ET;79r->VDl&6z(C3GfCC zZ-LC^!~W>$wD5Ud$Jcm1qU0(7NGq`{p*A54&=n#ePPlW~<{VrM8&jZ@>~g(%=2auS z(2r&CkodzG%3)nx^<7NOKowE|&iF&_)gvC6WwNZmi5Vx*K_EN5yV(%782N`!n8Poc z><9?^=CMYJpWzJ3p;(e;Qb?oG)x2$pit?Agj>C;@BYUSWrEjMb&O0{Vmg}lxFd?C} z81!S7!1QzOt)0?UY3{e(L7=jvI7V!H(J z2(PtAY|XvuULn$vmKOt$reoRpD7(!9yUj;}>bi&VT6UZnFeQDXCQ5Z0m}$H*&O6M& znVr$iaW0u4Kd2t#QV^nMc8F!z=^J*P7$6a}k8iUUqCVi2~ z|3SVeX?406Sx`-h(AdINNr+&gX1B7C_~Me*+<;iJMbqt)T16SJk+*_Uwn4?m zF|DE&b0;#FcG~5@7ir|?`9WpJ;8cQB=$*R!k4df5?Z#Bad(3tX*Oo;L566X#lBtg_ zd|aY$of@6Fs}!Xq-AJ>MuxFf*{jXxDcjUs6aME&oXOOrIGM@NGdKL5;#5DuR5}j&? zTwWWaeKxm~`*CSCm*6{3Y21KCgj=o^Inr+ahPaR!!SvmoG&@2W2#V&jOcOI9LY{P6 z;n^xtiL~ND+pCt$lB*c(TOauHdQd}u%*M}t@&M$Rq6-u_u_l;*OJDVt@ZCW_6YKQ^ zXdIIg>R$H#R^9viVg-q)fSvzU=Fgs_b&u!cwPZZU9|$Q3o^#Z+R(KEhY;O_U&YbOJ z>(wUQ>Q!@0oKV_xXd?_Ni7$bb7a*p9)6!IuZ~BXDz9r%s-*7$cLUY}yZ1)@T&P|?z z18NI`v_9L{ojO$m&^=GaKDris%%b zXnhKa1o@FVH1gvgQ>)FXlh>|}1O9`;qf7CXK$#GYb{4}<2a;p?WRyurXfS6~8mMO) zWSiIf^5;R;!FYlJ+c&SM?nFnqi>`_{VIs@;Pb1W{q4dCx!N|b+jnDXV8VG|ej~-`c zmBSUXtwAQl_$wxvtscw6^t@9&yl3NuH?B>y6gXv6Y&9Q7`=j*VGDLgkzoSCsqTQ@V z%OQjeD zyA-5BK%oHuNC1E+q+CMj>#rFw008)(0Rg}TsER5oNy^KqC_@22bPE~PbTfz5T-;#* zK%i$J0Koq>F+nT*2Z8z@1SCKy7+-Rl3V4MC3IISy0RT|{gD`M$Hn(%6bFwhAHE?!u zG@*C5vHrjD{=?Gy|KfG4uf}YSA^WVVVH#~w7)<4f&{=~_Q$}!wogW7pmQW@blK1+S z*PFR!-P{0HKM4i5t7shTv?5kzWuK8b@_rnxYJea`KWZpx?B}x zUh~bl{hUBrB7&>LdG&WDPWXBU6oYZdJkY(}a0A zglex2^{_BzX-Ivd=986ghatrsAJ(w8kyuAkI(BF0j~LsI zCvrvZLG68N&4=^vz|knA;wPmq7?|`p2s;X3@()e-_QNls8nLEcHq|fY6Ar1j&I8H$ zLz|r{IV-pzG0`75KCBLBG8VmFw{=MV5Pf5m&Fj{78f|k^xkd9KcjR9fJ0%RG45{CV zPfj$MD1LGWxY#Y0znZ8dy*@opOkdWO)jVJJ?*gy?f&6fe-(o-lZ7+1!@J9HK-rUtH zsG_Yq5m~u2#k<3*QHP?!De4dYhIYm6Z7*X>_~;xA8T@ez&$F{#OYOXL(E=Wh)^(Uo&Hw}wX!JoW*_ZP)etze>& zhmmVpGQ>%rv4O;LS0LHDwM^@`)>He=ta@0UKbZZS1jQDJ=F)8ZGE%|uVjbUX-6Q@M zM<+_Vh&0cDE_t+UbUdiCFiA~ZKZxY5+0|j4+wa)_hL+hJ@LIIlruU01v`o6c1z>GV z?`se#K>@9sgM6ZeCr$whF^z&OfdrUBUXPexd5BV@#?Vj@&b{;%^^K6s_X!axglK}R z6`D|aYPz5CyU1d@PW#Z5iOvEtSy6*296pXTOBwg-da6oUj6y9EQ^Lpxu&Bq4UEpg7s$P!M~K zDIwpI#nAat+;pY(-WNkB>3T?~dO{uY6j%YsIn;TvS1?HHsAb9_W7)iqFGCsQarLwM zsBISVe<+}IZkNIA;gLEGP00D>!7R@^$4Fy!qWm*MTsEUF|NSgfg1Kz!(Aw(Zs$G9% zjZ4GR3w1oZOKfKu~X9c<|6-)6Il;&(=Ev z>&9=|_gD;*&o4e^2u{zQiuJMD`*lwBL&M$dZNOuc8LNSTvW--5(3~&#MEoDgH=M8? zrzOY~0iq7?KWj`Jhy?5uxi}A*q9>V68XLg`c{iRwCKEQf3-6>T%k=6koMY1CJc2H5 z6qR^bz)l!r}r5!U39TT?OJlzD^pF9n4(V zc4`+r^##nMh3}x8COJwxkTE3N?iP zChNkItt>?%HVC|Zw@Cj{iC{Et+$~9RqUQ`%jT=^EMVlNr4p;Lj%)jl@Y zpJ%XEWBIjQIz`K&>(UOBTlG0joFxU@O>{;ry_NWY!P3}rIr=3diR_H=rXg|qW_`&t zg3tMPeV#PwpVdnPcJF*38WgT_LS0vi1kq_ogo086XVaM70&)MR7AC=_G{q@cviZ1= z_KSZ_+TOW4AX1kyv@Ujz@~@HQAgbfZ;Jyvjdf=Rut!z^y!vx`j&dln z_G|~)GIq9g^Z=}wT1gG0>kvYA&}wOPHEVq1@kF+LCO4U8atbS}Z3cbEJtL{D(^N{3 z3Lfz+aU4H(`f|I?hz`s=l;<_)CFJDAJjp`RAmT5&pjhxgvnO%IBbZp}qYH~$4P29i z1~q%#k4&XhI@$30Cf;gKi4zl^Du-Af_3mz!2M@Vh{0K2IDh*D~=SN=nZ^HS~P7xG0KHzp^ z4d{OoaRrH?^&Qm4!t&#?EowpOc=wz2`L?PBx26jvCUx83($xM%%1F!jw3^Wx|?Cfs&X3cJZZ+=Wf^?q+j(cGG{9nlwcg^(b=@jZCTEpw}&$9ET(4z&L&HP zvW0e)$b*%zx(tY>Yh}3lVl!pI3a5vU?Wa=9I5`njn%&mVmNopW)`3Qqh&Utb4R&YRKOv>9P$`jEf zAs#bA2>Z`!IV5mO$g^;jEzL}eJBqno4QyRJor&|6Z6~FhVy0o2?R{3Xm-Lxc$z0Vr0RjiEgi%Zq)A}jBl6n`C`cQSN?up6ho5Blm!6nbuLuV*OHGxA}%PYe^7 zn&#n{_2oj()oU%x{RREsg6sMpz9f}}#v(Eh0PyhNfc{T#8QIyITA2MmGAk!z`2SC~ z*~Br~4H6;-zkWdv=}KG_H&~m6H@K88i6>Po^`GsZ|;~{xk!67uO1aD&9xU(ESLsg2&`oLbI z{<~`I$1=Hc0M0uuw zJ^3I;M8DnAwjmCd1RyDLX&ITNx4q2Vye2UE9nT_Xr^UBzI)$YDCMe#m=hxC+U50%l zAm3zbZRH5M1*Xu`Y!R|O(KJ^mH*_$%eaS^#o+Lx4>RR#Y7Ij3rzKv0abHH zbv6h@o>8CPl|L3RF1*Q>_d2I>rqc#2;yL~ayLs+D=u2p%D4V$SE0@ovz)s>1oX&v? zFIQq$2I2u3b>BNiYiB^~ki~P#D2~B4!ULm9h?A>?5}NKpkt)|AQbb2qCLU(WtR3SG zSN~Xubvkfs#11sw?r;+-?celc89BdH#f05w2uZhZH~j7|c&+TBt7lmog!x`NwaAt2 ziHft%Bl39h_xJDlyX7IUOA+W5H5<_2*JXq=cNDoNUWQxuO7s<-s=H3QdoPuS8*odc z)dif3_R)XR3yod4k%{)*VV`ivzrr{;%JuwgM{UpmJ65moln;l>>E4l2@j3gNbe+~e zkGN(mPSfV*Y2|@B+pp55r(7eh1iyrEia5I;***`aL6Gm9w!SCVF#qr9ik7;*j7tCj z{QLi7eQ*I5|0NB*y{*~*DX>c#P`oOeKYF9~_EV3v6pgUS`O+sO!bvju8X&TNTo&z} z%9BDei-->@Y)@Dz$xxA{kf>Q!lMpAIWlpnNSLS(FM_`KbO@dt08cF+;4Y#-3{bCD1R&(HDO6Cc zTD$07^_x}w1&DeS@HhU{M&&4g#dc&zTTiI*K*5^A&gJo&zsBFkHZSKYcM z3w!)Td-beVvYBvmRmN5NrrpNnX4eV-F)T|7y}cF|50lwsbED^z9s>x6vYXSpLQ6yd zhyCQ_k0`*kZPtssd;A;G*z{OtGOkwDNPW;MxxU~v9O zct=&xNE`uhCOB-a05nbg;LW+atNw9s_miQJ`p;kuoJ35>lo7U2t>9W1K~WRQr73{f zcfqOA{58lWi=g)xe16xx7Z3#nq9HE~`^SLynSBFn|3kzzg_5Es0^Cm6A?pxc8UEQx z)QgpW2_4?6q~h!5l4q8-*Mjs22zX%6&|c#nh9NuFJN4+?q7d}b46w@>Up{YSfbjSO z`_{pxZ#3X^G_(-2Mz9sDSAHVq6Wgsdq1y@>ggQW;jh#K3jx>ifxiJ&dP^_=4iNDb$ z_s$SOd8yA0wB{B>I3FDTAdm#RbWP4=dF}1RRh5>eb@Rq&@TftD-TVhI!p2Ovexk+2 z*=_7*vM@#sT=OyJZ}-`8*dbi|#3S!0J9~F*UAAxEWLipXx|Ve>)2NbC)u0CHU6spK z`hGCSNlp`Y?Y&HKMtys?idDpR)iPjf$5xCJwLH7Q73DK6C?oE4C(xA|Al&{FY`4_D zF5H4|QweJbo3Ut(q9Pa;`~5BmSka)lZ0jClW;h1#<7QHRY$?8y$WKxQ`dbs%SRUu* z8MMztb9_KdLqxN1g4n)|!^#|^UQXcWqNVE;bb|xq@eO=hJz5A1>Kw5}0G$R7Dd*`# zfm(4I{9v!1;t=VXh%*3%Bkw_-eVo#T%PvRXbco1RUG>JRJ>^j&TokYkoT_9SapU?R zT++E7C0AANf!f{%OUujb!#nHRA3WDNQ)2gaqvWWFK91YiKJw}LxC2&?gdFZr>$aQ7 z#AoE*{OR(c+8+YRB6a>1h@hzLIm~l9d+g#$72!DXF#yLK>An`rg;72oE#=Tw`XS+7pl*3M z07k)k-ITNwE)sSDjR#$d%AknOC8<%C;uJIeGh=7FOuWp#+^L=9*`#>*bZwkeki%iU zzqS}$f=d8B&LqDAn+k8ImhR>%9% zEbihFdmVa)a77~I{WUrqn-cO_Aw4STAo(r@A-NslAd^tTMW=JY?l&LUlXf#1nEJiV z$JWT^haBrI)Y0}-a3QK8tJAvFRMeEhs{3m2>ew2#!o;8M?W2X!jaBvIe98M zb)ZDf{-7d}&dUP%#1X$rXY+L>qw%>E=s5UU;O4wpKbA$Ecxh+jTaU!sSZypD>KLjQ zt~c(YQb4V-Y@l)55TKrF!X=3<8HtC%lhWh)ez8&MmI`+ugRw+^6>}L=8ExfLXR!RE zqPb4Bj?lWcd##;(#1@y`N@JZIzX~V+s$$h>Z9B57?2+ol!lA**W#+N;@bu5EN8ZkF z#y2PXL-4~@4X>VwWs~8vuJu+-au;HjITv2!SRBvS`3)n33gb82Gr;*><)Po}<{F(v z*J2A<%fY1Y>#i|gny;fLC;3mZiznWC!7=vm=7G+krL_;4kJAe-9=w3h!oEbiTvNJS zmbIjlhVSV@cVU3lCcJ9w$f(IM+H)!E4mKn18oPbL`D*G%uO+Gb`L)M)Q`AGJlUg#@ zZ7s&>t@$*hYXN8Q$Ih+l!gdkPxkKa2OAwBbh4QVCWFu4KcCTxiOB$`E#@a#i&v8K@ zgbBh#cFqSy6@pdqSJlwk6z5nO@Hi1QsNPFreoB7jddUdFkBG11%2u1hEX)x&pyia{dE^!D5;V2)Lk(RVoC<@aoHygL8k&@Cs?=&z9nwLl{BYmniuW7 z;=ZFNoQI&{Yd#UaFtX8)7`S`{9`tk6(OtCEo2{#_-LpLpQFI1w=d-TazIm1Q@t5y0 zRZdu0x*J8-l|=})l}lD^?KdB`_jeu-7e_FK(&tc*y3f5+p7ZXu^U3{sSl`5=#5Sjm zcDQbLb1ARhxw-Y*XEl<00b+`woTpufG~rm}2=XRYAKflex36I{urq3WZPwyv9RnER z(6=bAPxl>(9Ru*MY|AgTE)Pr3mfg2}9=y6MGG9mKGWBBP=J&amOPMcj<2iSJ_eYM4 z!CvL(!(5p(J{3NmJFVsvRp@O==->RB`WSvbgM2?L$*&*cqbaNxV!euXQ+ye+pH!>%`fj_0!E7vWwrGVF)x$Jf()G|BTMY=Lq&1e+3Pnr09 z86`4z<95GOX~?dnfL0*5y~=p2mBD-uLwwBOO`05*r`9QMX=*#Ssa+{o$Y(jZc zT#sOJr+WRyLN`b<>&gl|NPqjxphh}dp~On2-v=SS%V*09tC6SsJD1JTj@zGwEI~LP zvmRDr)t|IhlrrSI*z{!WDsZenJiLSy4(wGD>5?&Bn-cK3u!$u0quOx)`eyyQ>kS~7 ziiusHbXxE&jwek_Cs#lvJXt+G$VftM@7=fhG^437si+l(78K^ZeLDxOXw6ahRMr=j ziR|A$etW{KL|0{9Fu+iRtK3$csvfi!yPp8HJQ`oLg`V zcq=(1W=}E$;41)#j;Q`n;8$Mya@+*|J8%HZQ2^n&pYJyd4q(Tov9-l{Qy!puo4^VQ z3vT?)Kn@(x7s9=!?gc!;Jjn`PBOV=dOEmvG!R99$`1za46k}Hx^P2|A!lVDWu=baQ zkyV-OJ`Q$`Yi)TA(%K2q+S<_?G!W7FB=qVl3}WWsV?aKLo0n;kB?KslU&hQ|-kG}_ zNC9gdTWD;@5EkqzsC$*V~XlCZIK-dx|(61v5Lk&6q6oSeM> z?Ts@}vHZ@{5%z)YPfo=7`T0Rj&CJ!t#)iB;xc(C6F3eb?#)TWy1x9Lw{}CfIyDAzY zqB=x>!_nT}(!t^3@zLoaggxxtLqZxLIy#yOC_ODrpB)q(G-&-!@Brv!Z|}byKL*As zL9_@l(=7rVLQwrYlc@kJD=S#;a|k=%_tE32{OZKSL>!rX5LV=GNzF$mINGTuS5tHI zaB)%bH)r_Jv9<_38p&Env?I>yqnGD`m*H0Vc^26RSd<^ktScSA5Zgp1z8^k_!>CvO?@v`I0- z$HzwyAt50`Qc}=WCTRYb*P#A>ps;IWAmzHSQc+Pb`w7&v`kh|cvR$+?cgAYUB$c`6 z>p-a3n4%(3LDg`W@rNYlKN2WZ}O-|55y&EFmDV@XI@KYh9 zvB2S>p)|o)1X%x^99>l4iqZ0=$M<&+$vr#J*G>T1sVPy~N{$Hq0Y4@Qo3V)rfWg_R zySrN-01Zt5!89N^;Q6(|#P5s{nb~NAY1gbiFvJ}*Z*A45#bkMKa3JF!@8!Gu4fO1S zf^tal=;)->2ixXXuJv=0=PT*YIZa0!m8X((a(uX`7MBV_>2-Z`V;UH~5(G3zEokf$ zrZ5W)eo=3YA%K8%$%Zb^)Hi3h^xv_8V(#^w?rrhCz%9q{G1_{W>$c~N;dxxX3jOfo_iv^5?_kqKDjkbVB zb6z4}<(0fEOo5PTaR)>y$P}zbP5cX_HurXYUU#y=plBVVS;5b^q$E)L%Dl!#n5UemSwfO3kwU(pgjr8KQ?*3KuLpBTU(GTDdC0%1;!d&TyyL5{Zpp*d3*io zaC_@j=uW*=DS=W1QL#j%P@vtwK(P_i`VL=Ut-VnR#5+9W7T1YQ9*w3 zdEMRDiTG84j2;!J{=NM6RKk!4`q&sP)jx{{2b0~cJmrG9t{C6V^4{%sf$}AqcMq9j zY{|fD#LI|b8T#npp(sQ#=Ig5l3)~C+g97Ej8XzFe<67fojnSrym^|ZnM3wYGLR`au zSsT;T&zJ!yvA*S$j|&_yfn($2c8MD90FVyEOXc1W{Tb5h9AxJ2B+*+bXE462lHep_2)RsdL1*sj2f0 z|C{mTX3gvr?JMwniCq8%Iyi&j^s@(C#bv|kIyDdxLh17|fJL2>GgYIu>#uaY_>o*4 zL6fX-Mw-m5jic-St@AS1qg*MFX>Tu1X5wZ}P*=D!KIJU>Wu5sc*0b0fTt7ZKdTVZS zQ3L}8vp%7w4s2;*KcPY-UNPe85<3J75McWA8lPOJiA z#u^YX|7(3_1qgbVjTZYgJ07k*_2afMJRY4jkX>R_i@rCMilk!ch(*P%)&isEO^R&| zE>7Os5{D>ML3XmJiXsFA_)HT%U?v~V)JBu=0jK;g-q|_xn)VCu4S`>L zXqt{vR`m}HM)Gr%$^9kkk@+%zwnV8zQB924#oR0>fz(l0RSBAR#b;wb_1On~PUka3 zHcA|k-=7{B-oG1HRetl?IQlyLorvk zww$V4v+m3w2z{fvK%+=QChEx1(-yhhAD+3_%nlyCPa>owzlx$FcP#JPAP59cxD+vX zlmMQ8UNVB~9^e~RNrd3?-T6^lPmDG->JopY`BJCd0mS!|$zZFdP05wD9+#v|B^ zg|>3~D=kk#FTl){fUVcDXc&}b*tJahs44+n(DAC#JSi2UnJ)SuX7h-umwNh|&hI4IYL@M{H`uu+GJm<2erz!tH)ON*O33zspH)dXl@6hjm z>1y-R#nLKPDmoYnrTa1JCWDY)K;Kx1rYHpK7NK>#Trq~g`ry3AOpjSpW+r$n3J&## zAIFsTZm4xDKOhkJT21EnFS41=s>3F|PYpuBm}RxK4DhGHxwVzm(*mAP=5mLlkJnS_ z80B_HE|2X@K_dmRr#qEL_9=n;u+hMC*0#(Hph@ghxMIuT2~K-gw5xAy!zah+=#vS9 zGW2Xd+8V|R!%sFQNwVh$VXin&7&6BB8I5TAy;fTcrdm)=qWCV^Wx0?)hlpP!%G z^2@?hk`M;BG4PHQdL5)lG&%-4s(htVx#(^|^8~>=OadJ8!s+ykU4wy7ktL zyeE@r4HT8ua7kh@DbBqd@_CyQ?x~E&BQC z+`=WPY5x*M773iiX@@GQ2HN@?^U69i`@}f zaV4nxjE4VyghH(=B+{eK#%82rc>7)9U{v5dZh7Z${SBcaOKq5^w18q$Q&Tg8%jWq_ z+xXS(cDqwFd@IOnSj%3UyQ`e2n4p$}OcY^qDS*9C&psH*Ov%*%P+p)7MP!@DeKhWO zX~{*-lZ5S)<_wE!A>yb2ih!{%>E7U3D#rhc`8mPzHIB70e5Rgw)8s&i2W3v%jp;{t z$iid7tLEw73HPe1sK`l}G52C(V!q8658V}WF6*}0&o58-w2Ojc$`HtoI2U8Sz{KZ| z#ZL?`3Gba{Y;bdD$|1s0#SNycBx4INQJnIY&pX1Ay!MjIqrYyy@>pjUlBY=v@|wMi zE?^ipO4Pg@igo3xLFX~{J#=axX+OC0(?OF1$mO!iMEriX)fm+820pb~yai_-5O$gA z%chFo!QOkb6m)C|xEx7K_Z96jI{x9gQ)#xLFb9*B64}oE8Hvoitj%*`dcI*08^c$T z>n^77cM$~I0NctCm5ayGp4&CF;@DFkf_+e6mmsTI;}8yBFi-s0VQ3=|`3xeOP!f|N z%q-~|FciIlEQX$3dPRlsW0N@TE4p(W@E7jr6X`$jF$J zFg%iU*(kn=&h+$Tl2hS7PuPSh40citrp->SY+dUcfsM|AGa=Ws_?BMaS2`GIs zF)#t!VaB1Tt~$h{c~_EXjE7>EfUc(0xXK8Dv>MN7HzB4hXiP)tYvr7<8Y-5|_$kH3>n0w0FjVFwdo z(d%3IX|~%y)30UhU6mH_w~!mwal=^PsFJT0`=Kez$~a;s&h&(K|yz$(do31reg1!ZMrVEpAU&M`YlxRhM;QSc6N zKaP05_`J&~%bPHkzP`?jB5Ek~GfsR9kcUq_R!kmYVGavr24^P6Jaopk-ey+ePDZf2?MdKv?fNr_qkFH7exk|3O=e-njBp{;D^?gx z2ZKS^Vf9!dTR9f0#Q<17Tu?ZpP|y1Z%Smrq*B4b&=P(2pNBGWlqdhxYD%#?u!7CR8 zm3ebrRcf}&Be^X;tEghb6m2?Mvd)?(b)t!_FUmN~WO04!uf)P?GihfbXNWMZ&6o?^ zOt)kXODG_nv^jhuM~RtduglN(c%rNMzCZ-6jP|#SScb&XzDO|9{~FVQ9hPZwI+hsD z`mY2W`((+s(``}12Yf{LkGx3GsLL-9ZBalLXuPF#4X3{607!XdEkv7uYAHiPr>?5u z*(m?Ze|DLtFkS-3xUKxtcxxr9Va(I?Xk@l6pphB9 zweG$FLLyADSSj8GLp58XG|~C{3cJH*AN0ff_cSS0ibv3rQOUD0(E`re+&Bpvp+|bv z_sc4yA`C&WUXCIj^Tm5&GW{+t==EEkzchLFrYP_N6D^rikjMr=-KOkR22z$I)8~`| zQ`1Vdp)N<9RsE6Jwl5^*{YsJKxCw#=q3LA4^yD*rhNB7sOc1;%KQ6uj9v!o`_}`6z z4GGkt5+$@S%`A|-AmmS($5Q&0GMwOk$mnF%`!wD|4lA+8%(K)A%X#t z{z~Nuw17}XHCCM{QY;hi0Yf5Lx9@RhvYht;AnfNH=u9q46-}oZD7~C>@sH+G&p0Z} zB8L+bA?H9rva74BlmGkZn2Xm1OH=|$R#BljymyBr8I7%+ngZi0n1(WaukwaKQPjl% zkv<(Ma6$}-;dFd*=1mc=<>O3M3>swhW)~9r_l4RTf=r_9e1hoWeMj27o_lGAq-!MD z&Ilo48~2yUBNt*@kH0lL29KcR0=sxJ{}pKjhVzF>OnJpo#=3iCsD=0DiF0{cUNhyej*FWDAoir?I)G$L7y=X1+je$XCy%|2Pz)y`FFpCeWUIZ^?JiK&J@+QFy)Lf zIVsi3Z$laDVU)Lx4g;gxe(>S!dk5v|5W}lX!lA5sD|z1k`a(f#a-r&2y%RoF(?}os zuB$tHvb^0Ti>|gX61sG{pg+}Da*(Ih{k%9%^+X1-)y3Ui0`99TB_<{&#b&eRnsgO9 z#TrK;WIW>Gff>evRPo=0Hy)}z(}n(ESFX(QlP#Y&?C*Vp4+_QxL8qLVjHH1ub z6kICvJZoe==x90gQDpG@bfU0sfD~JPFPd%F60<% zf)i{}v_PseF8NM2S~qm^&LCSfwm&r7-7g#+@+V0pdTA>2HH%;>Jlic^gBh$Ais8fu zurY>dzU52tgmT6gwA8&nUZ_=7&w|6Dc}MvO`mTp-ux{h&P_94gYJ(0=PK_(2j>T9( zB-O|J`+qy`Lv9zE%9UKSljzL2_)O)J(^2Mq6JM=XzXQO*V=ll3AFFjOxx2))mgW9r zUOSdwj=1Z$X`6pKkRC^9V+_Gm8NH@YjgzpxZLoZd{!!PAPF)V`$)Al-W%*C*NR2I5 zPC>UU82KU7M1XmqVa0-<2#!0r&o}jcC(n?F?S2V!@9qkpy7>v7x>*+t#ea9eV+Xo9 zsPbjG156yjKP>>LSU&(%yaa7aY;&Vi5d?t;$ZdyFJZ#o55?-1@P1==d4GgaKKAV8y z--Ad7&lQ%cyOl1|;g6g`pTyL~@GlFIn*Jn*YF&yoLLfstDGY5GNJO$b=P$zOmmYcH z&rYhm7^Z+Yd!u>sZuf%h*nD84di6TZ{ZeH_)rwL+g=OJL;eNzyJUlI7OXOTA*m-x; z*U%#6COIl7O25iFTWU0IKaOa8K9TUA>ZG$BkwOSJo_RD;&@)~1L)?A?Ib*rn%F4xp zRPi#XiY1yZaV_7M#@zYBSpJK5&#>|dSLvAJczPw-wwuFPftuY=w>&~~pl|;6j;I5W zU)k=U&oaA@>Kdo1J$0jkB~Zl(jdD9Ci??&#iI;Bq!CdRYE+@S+Un2*{ynG?8TWj}> z@-kCxY%n0~%?6Ch!Cff@5Ld#r{t{k{^!+~1Sg7~qlV()&oa%O!(g@=$J*O#E*&+o| zJ}~s{KjjSaijJ4uQsp69xi3flV@zr}f+MYniz2Myjo@E^=S|b8G@;gQSDfyTi^`5_ z#L+tJ?;QipF5Wp^-**!_CiinP5Cq8}APp@oX%_HTMd!)HCa0b5CzY-jU>FVveXl4S zkQ;Q~1@ZhKg2e6a0O$oMI+cit$gv8_1!|a}Fo<5-g#0gHQcBmp9N8LOyhG)JappEU zJ>qR7^x^Ox1gdgeKlR|WrkS?%2P_P2IM=GI2I*VUi;hI*(ijEPTh#`5Z<(fFl2Hw} zX;=6R4t9161+rAB$y>wC>(*U49@ne6bu8WvE`kUU#6v8pPS@*#SpJW*KsEsxnWp&0 zQ>|rnD!*5U4W@7M59^QS8e8K+%GC~)zy#vZ4l3rl%mD~D1&4<$@P?*xxmKtP;6)2- zm@#FdpB}xMBx@X}nu|+gN1GzTsG=8|+N>&k`nyQuv>v3`Cw)yU&d-i<%ba82^!cp} zq(0(B(rNuvxxA?^94eMqv56cm(U*Yhq}E3~XuO;Gp+1hDV()>00d=`SS)U7vK#$)! zVTAdKWEz*xJ_Eu$tevODb9sU9CiL~L6BWl0+BZ?GFe7`Lt2?bFpMqS^6Yty^4DoVW z^UHTt0M@rPL9%Z{ICSijf=AjD%WyN=MYloD9m&D3BjNf@>SyF`NRfc5xPh18D}ok)omj)pU6btg4Gt| zZBglb$Y@pe`F5;H^EMl*Y|5I_v-H_A+dpX2Ig4^vj_&~%ZZlqC+V&`IF5Wf`bapGn#BY?wO9QbgWP%9sA-R(e8M2FpX>J^Iviu@ygvds|x~7 zu}BPt6;EUmZP%$-qhj-cX3#ICxWm8f-?!dJCf9_ ziSQqqnY@$~bnfb%dp#??;)(}O6}DB6ls01f8SiS?p|^157A<#bIVqHP6zB!u6Xb>K zRz}P0FBlc4+Wdcs!b!Mq{}$M$|5GV>CfeN-d!B-wt0PZ!PPI+?NgWi< ze}{88%1cYdV{gD<(C4n!8=pr$9J*vj#BV!q`7ds6R_LK2$or@o`b<0yqdA)Xk_S-% zqQ0%h=hyU;^?aU}JufdV9-`_SDPre~5_mnY%2hO*8eC?Z4&BllwHzM=XE+}H4^VNS zxQ+B@LM+BB?1w6!5Xd-K*?-FF7&S+^m+ja^xqBK&2a%-Mo4m3nq+u9PM_FBGyK^UE z!c75Ll;s6ot!n4x9B*NxF?fZqJ6^H6e%~$|t#-L9!k#h9vd}C6$zTVr-yhGq|6uy# zsI(yks;i@GI&Zi$_rmB7l;&9U!O=8W8CK=Sy}W z_!@YpR3bAE0svd>58p#42R$Khz=P*UKn6^Fi>cRjcW%LaLiN6%w69BYGl zxlVQVt0bj(K9glZDIiwzN0t^jWwucQs+s%JBv`@AQ%0WtuKv|{gUvzD0 z(h{~BcGUfZKvS)o+9Md7zlc~*t{R_&o4dRJ%@2BJDO)fSHMd5OlK;!0pB49@7>EzWi_Q=mTA zvZSm33)b9_04j1l!5YPg`yQyXp2BF3z}`B{5HmlsQFDWtlV|47bxzvKvQtk} zxYHrkZgo6U2|sq#3NDz?!S_#;oNGs6V_Jenej1wsgljFCLV8@d+4Mz zl{>%mG(X8r0zXg#cOt59fI;S*^<>q7aN3>GUZWGyES2*?bX;C`HwE%svZspg z{^TjI{bs)qh-8qEL2J;dq5@5WsuKfeFzif`a+0a`$P^u>mO*P)cGLF>myV)>ySh%% zvd#az?af7}*EV158&^R02RjAJg2TlsSK7Ig;)eyL)Nn^Ih7I+)|9;(V4FaOYzG})M z84;yhVCeLCJbCk7I(FPkDs&$=(3XR-sBEa^*Q12ZbaUrcPU;%+=hC=*@XZ?ojb8Ah z3TVzwms=Q+{T1x(c#5U;L!UqES{X(Vz*06}2Oz{hBbB8nej~ciD%=N_hve1_>Jxm8);o zA~|T_z~>oS*ydVHkz&1R(_hG27B0k&M;CqTINvt8o#h7MjLBnqs7n$la1zs{uG=Wq zZ4qV`DwT#(ZbG1ADHzE{)bt+1YcjJ4b7;HKsjMuejEVB0m0b%>_1uB-a+}{D3_I`o zybiDS6BBq{F@5I51>|Y36lm-Ny;0(D*cP?!cuxB7>igRiz69^)fvI8Np%e!=Y{3J< z0z!epK(nmHCnQ0pxlIHb6sdiNw|bA89BG1l2n=ZWHBEjH86e1y0MJOw4mNm9m_%3MvRmIzLC*IvdW`#Tlq}7;TrZmM zSD9)qt;op2C9@jdj2{mItZX*MQd2e#oM!njT63GF+fYpc3J+d3?Ml`3e3n-xPau?_ zSglZZ9^nXqs#5iQ(^Gt$fu_6P0CbGk+TNlpI-fk#u4q91W#yn|kT$Ae07`vKT62h> z)FrBRIFSDw%L-$hCP<1;tXGvZa~&r*QCWbWNFz{7WLu+D*{NLdN&!(M91>O{-)i}PydZ88*#ev|2>azrJ$_o`?) zIpVkt1~A15FUj&W06=<}%fC3%>z-ko6vjFt-poVrUjuC=V!Y#>?L zYe&TMb`P<7_Z#Ya`l8$U80`6JSvvFVwbnXcw6VT$33LKJx0rfRCvPZV!lQ1?8w0kC zrZF0~irz_XhvbfXAdlE!pj0#Y6z5nGT20iGFi+$iDvEYm@pe<7^hJ8}tb%5vjPaXy zLXAVo$Oc4bNl|<;!zyYjkZOOY6OIcH8HyurBRSNG(P$6FG(vFG11e8d?(H#N96#Ud zrhRlL5(uE7K4W1Jkj9_dH32JIQA1i=yaG60Y(W`pI&SuPn#%ky7;`Cm zz=z-aGxQy9Bwp6|X_T?D_g8BhQO8|3qa=G*P$fh~W7p1r)ylvt_Vy5n_1gElM zTK3on=&sv`bitdR|H5i!4VGKjNgQ;pI<*ggU6aHX9_kv@|z+rFgQKb-3X8P`^C~>dX>I zmkPc7i%b58OKuO?{dgjo-HhHYg;0YT&<`60o-B}$HfR783e>~m;`EJ)T4tudaO`Y) z!G=E9N6*dPM@$DOAQB7^b6&#YBUDinCAh{bO7?BR5I}=+s|9!cScePf(boc7DckkNuRaO5$5KzoStS7$APYAS@L&FcRMNz!WXb@SV zygECpM?p$|hq~@isdHzxWQcp8I#&E~W}22CSL2ND`y(LWx)-|2IK*StW&EA~1JhM; zD=>#+2Yn)8x~T99U6m31XI?qbNK|A&U1@$0P`1q2$HUG#XL#vqZJmK?vq#(F)@9Vj ztLhU!=GEF-EzB=q`U;wG?_{pKoxRaNmH?p)cGgZF)@e$?i{rHl0Tiw-emS|FEEv+RjNUMo*h~8lc-Vc4fF-_Txd2YmaZ=v%j#* z>N1(*cA=JS3>yU0cnTzo<=7EqL${dgPmHm-rfdHJ&KSuQrh^ji%0J8Qn= zO{tyovMOG;32Et*V&ipsadR(g_n<1f&XM=Avc133(R|V$t_DSRDpFig2_t1;b`*_18gq?#GMI)z!?il|0tJfKxyDYn$hMcXX8K2UsoJ7j zibzS!G;#zbqqVlM0$NLiKY8QF+iVJ*e;e(DBH^mF8t#9b4_$Mab0w1P1Cn7CP@0QF zwSvn3yxbi};ND1r@&}PSS}sTJ=W1f_ij3J!YCl- zbl4{3OEc~7-w>WlmJ$yLaf%&=0Whz9d;q@M9^^tE44>SWns-q})rnoHcdHoLlow)M zN!e{w{w>{pX=uf-6bjj%g(dCW4%E_80To5ue0^?CTvbg5N$?WKB3r_#LDai6AGB)+ zKYECHAymhee3V~${WK>AGRB6$5@PS_1XFfCPb35ivK+cr>vu<#fTYH>KU;k~zGU+DI?JF#1&*?BQ7?22oK9<<#={=Ub zB!Ab@R?po0bRgpDGz#iBd3d`A_7`I(kh?c?w<#zd!$}l@emYv)aN@Y$Y@BvQwpjNW zdxAYW&X-yVI0gAHX*_NIsq4${O~4t6;?Mad&bx60hRd@AKymkr*T3*w2!ft(?$L#xSy{c1`9w32H;>mKt{dBb*Ky57@xoE(MbIr3j`lqd+Dsv?|t0?blR?~XvVO+{Ab%*ppAZsOn zE&ls*CH(mJaCaKsEOS!oP}yS7F{00>lAlMyV~LCca~it2a;2*}=Ei^B1Kw!#M!&}Q zK(iZMDw;qI{!@W$FtHWmmyHPa^brLVjYV9(8^k6Bs^+RkTI0hbQVU$|LWMP&IWBXgL}vtzjA{tJb3HTInI5lMTr!0J;`o!9sov%Bh& zmQJ)(IOR2XG%|0n1z;$mP83EmuW5US^);tiM1*mkYunx}zW*LM9vo;c>%jbh+HY99m8m z8;D>IK2n;;A()9IZFZL|o(#S;7<16~)xb5DZX?0ZBOl_GE>)bdPO3H*Y!PB|vHh;I zR)6HyUX&mG=x35)wkv4OYPPl%VHf`(jf=!=5$waBKLgmJGB@!>q z_15M|dGk<1B_+Slwzna1lD}_6vi0P5D6V_HT(yu9)K&7Nv^kWHAKT(GoLB`yx+P63 z1jbk2{={@r8JmFcv`~7${Tp~b_f%nSm#;pq~L)Wh)0#1n$?;N+CF0=5a z6c3^fF?afK0{DepPP<74%*^t0xnn9Ut7OBkA7G1mK70rvgP&g}YiieQ8;?6cJ5dkm zY|TN1|Lm#P^oPns1wRivbwDLXk5l6ZV%-?x_T!l_GI<(48B-&%Gs5|_lyu%NFWe0a zl=@CWfD*Cjr8YFXiTx&-N7p^{HA#6{UrJq|+Rm{v_LA4151B!V(zUO$x?&=xR+80) zQrWUp5nx|v4-LJUL_bxYf}M^{khyNeAMc*8C{^<0h!GVdJN)O(%zE8<0zBz)3!TXi z;FFI~k<}*KTh7q#)P}8g@GDIm9X3a!EL5q3!Quj*Pt(*_YlDUOl5s@tJ}YZ zfD#l5_<{J~tDPt=K_kxGkJqB`1Vm#Qel(zR@kijtKPU>^C&Wjyc$VQ?C&F1&TNn6G!T_p|Cn<&Lomi#Pfo#| z0C8Q^_gPJie)yOd{MnMxwj|Z3^)y-G|CpUQIIIa~U#wFiAI8^O<-k9kyI z`qU(BU-yfZ8zd@fF>JB&guY~!2Rtx9~6sL zVh#e7xd^$hnm?4S(a6;0dds>M4+uN}jzuclBaKhlH&AR{bnNSv@>@Agxj<8__?`zt z#lg?9p%D4OV{A`m(f<5l#>_yl;CzLf`i2s5y4CJRV{u5JmJNj3of*l1%Qe+HkZ!Nk zDzyRA2CK=LKg+lQGwcwY^vI(ElNzKo5_24UdbZ=u@>vGMF?*fBp{`+jcX$j42n1eh0OOg?D4MHh?f`$qMzAF~9T~+6D#}7Cs(@ z41QKXyxI0F*Z)(*E9YF8S}s&ILpn4$Gm45GBCUNX?LL-ZgZ@zRjASG4d0X*Zyzs6= z(!jLg=T99%c3@Y|FYB~iM6Tg-(8ZmxJ5Q=y8nIC^tsW%}^C^w;+jbp0UPUD?IB_Zo zU!$;LmqWZC#!aTh0gJJfo9z=PKk0_8{%6UQjNjteZ?E+Wb5 zg*26f7pcq(^$-2Io}|5O1m!U}byY|F+sU<}#fOFaQiU)EiNOU20u|bnOx6jH=mk9e zgNxk9VgJOVCUeW$ClI^UC8;cSyLzJ{81|4BI9h`S&1HX3?lZ7Uf$p}9aCKhQMb>XoV~xpEG5+KFuFyMi+v-kLqRs1x!Llu>GlXY}uf0sJJ{JUpVR8i1LH zQ@_T&!Np`kSj;bCJHa-*_BpEpmv@^7($%%|c-oiuI;m^Ji0)@E;HCSoH3 zto8hu6paEE5VVCUWfG~e@1OC)atmqIH!_ggI2tmxo)_U4IP-hm`PDPWo1J(#1>@F9 zk6B)_eF^n|0NJvN!oq+jWWDQ?sF4@Ll`o0&Y=7s;M{L){lM4a6gISM>uL@a-m7bsYB?ZwNvr1dzL;+^2EXkGCP3y`H3gTecppNX1RL_vrYRus_3KTb%<2YT z9iD%^$w?JMQSXOUB2M;L)DutsN<<33Sbs*~JC1S=-hA3++w3cFVecrwllnU-tNhJ)W(rqHedxiTYO;Jz6>g$5SJJ-Kd4T_#KJ`e@ zJdSi@ODT>ctECH{?|Lz#8K&o5Z^#^&6z`adg_&}D*IHwmRRDS$P4_L%j1X?tNtJ#8 zX*lL*C{q%Hoj)0CZf-WfEjCFoEq^bk0xh>RbtOEYjqpEHjCEE*s~<4~bVM`i`f)}C zvbKV~JkgVhF7aWYyUc<&XFG>nfnZz^Y*jc1j=etnW;=7_8O$#(hN*V;9~=KQz$sHQ zgB9_6_}2dVjkA{YFFNu^41uXmRYzXc0%n2OEaowp4U6n_QMr5jKAuBiE|2vrLi}Iw z9XhMq2I@;P>>}Wh$xF>&9 zx?vi)_}1h1oYf`W|AFO1AEDAK>K-4q-6&S;>rk&V2qkCQwY`c}-nyGa)ARd2UrV{z z={hegHcwYjrl9ezsCv(Vcqb*809RJ4v#+Y<&BKW7fBouBu&v$@6>1}PAsb=DvC>X{ z>y$ZnLx%+}eUbr95TgSL*QRc3b9u`&_fHB~s zu7%QIDpqS%fASfyNY4h~^Lkz*k%&zDqQHFwK(cuY66eTkOl7j2TR{E#JFz>e^x3_r z$7iXcgy!EgN~{?GMQ17VGeuAm4?+*EydVULm_AqqQm+zi!&R|1$rUA8o|=-<9vxGI z=A?iqJ+v7WE`J9YGJuc?k@%XE=F@k2+9qW;&&qe*Iy&k1bmeo*bG+eUkc%PJtqoqe zQnwl+CT@UJewbdX8JE*VSvk4bPM;S56gvED<-C8nxVXR)2Bzv)E3o6KE=yt!mnfGz zdA0)@Z%w^^nOkJi!bslGAwQ?yG+MSN%cs+qmg{`ctK`(&h59jokMLy39vRILBiWJR zgD$d(Qi`HR4!{l+D1i162>>faFlpTHKc>vwtm-ukUwxM@F@0!5R&fmfV&u|Ktyx-p5JctjxWE~C$cf398eYLH;#=JYz1A1MK5QebZl(IpO-*UtLIfvL@jw4SRm4OMeH(}mmo=R>R%LJtoQ?_nM zU$P)^!z7eRew3N87-G@!bU1U6~PfytKFbFEu$gNVYN)Tvn5sVZ}_0~-6&>&=n(ujwRgR{22 zyzBuE@C03jrb0tK>{FdL$$FcUWII&0{LUEg)1$>Gy?x=e%Rw{&~S1qv87#i(X#hphRJ1iXqrVlQz!a+_vGX2wmT< zgfwGqHXb;(*O+#i@o)2Aa5i|)@Xfr@oH5?I-s+IoS_Rt~Te*%dLVzT$lP~CRLb$L# zowaxLg(o<*bFp@ly=J^JZ3wX^XPoH4z1n_>(U74hA+*(a6Au0>N9dG74YAoa)|GDh zVrWZ$lXus@=REujed_)p$FEjKMnRvKp*!X7Uusi6)93tUIGyg=lgmfh*FZG%HK!Z|27z??|rn#PhHyy(;{#BsJ$4`>q0FWdTFc0=19B4;#W3({c0KxCo< zQSpOp2-NRW()zk#f`F@!oPhn0sp^08E^UA8NB4Uso^)+;7R%eumR3EkT>iDSwDaY5 zH~;U#ZUO(}2g5?CLY{ShIN~`n3JR0)-auqsgT=J`x8_kkJ}PP~m)Gld+W71D)0fo# z9hFMS`^0qXbfs29B86Ng+V~X`0dFgK{GbW{zw=jvhKG~c!bZ-<(Um$Ak`lSBX0!L_ zn^h9=n4UmT@au0FM}E_&P~gx= z17%8uL?Gr0IoxjJ=}acXp7gnQP6kf_i;sht2CDenu9hB7#_yr90OnBG=d+3$JPQB} z8>FZKjis-AAQ~y;jBj;b#dp;Wv5y_bOb-|sbJqb>z`-!6LS-kdN zpY~ajQf5+l!|?=suRj~=1Upyhf@ZLa;+vCi+}<89XN#l&to9pNh&Zf*-^!Sr;c!IU z0<8vfApl~M5Id*6vQ=JIe9T|wY9Gq};G2%6;mfP-#!=1k^8234PM;_D6apS}4tx|# zfxCxqGW-lgtOrJMAIUl9fnvsgOPketVZ`fenUQ|w_{eig&YY`xze!qo?%wI`V|$IX z0S;4rlX?EmklDoC!d-zQ2}({;yUF@6P>e)VPC{N{7$A^;e)<*tuQWis)B9nj!|M)s zGevhkVfQ6C18U9VT%^&G>M&=k+!z^~tgp)|7!6xK1z2T6_Bar|K@~A#lpN-a5`?-;|Z&la& zIDr+C?&LGt2$#DrV@9dG^=f@_lBi{{5{EIr_2n1J1JdWO@Cbk5B$5D$JCgtj8qliA zIGZVcxO9A<3s1{oDW0}xHW7q7K6Tllc*5?qF0YMe-g>EioJfeGl}IuD;7+d_^U9g0 zbjZxQKlYk5zO9Z7f398$2(Mm1n;t&{+o33!zD8k@wgNgCL*N8a%vHO5sjOujT*)$g~&B8*P2`c3+^(i z16FJ}^$k409moPAJluI*1>Y>6ew4LcK`(G!li)lH+H^hC6EbqJLx9sWgg6KH#-UZ> znRgvIkzq@rFM4(W|NF?WXB303$r5bb3;b?8@jr5cNgbl${!02KR@T1DufO3-SYziG z$N{_d7~vUkEW%*v^A+Cy)+uXK|8h%$0MCvDf8Uj*3I(86>mF#^fb zEs>r#(e*u3v^P%Ao{0;Y(Tj_phNM6`GQfI_VIqoL(|$Fj{H@nJtFt?E3oYkCU;(<7%rrJ(e}7VVuu;P2>{n58u=rllm}K^lnC4P_T?c!E=2U zWfL*{p}Kkg-kGhcmJhrF?0T+V05pSrYluduor7&#L`#_6)j!X`_~q=oVaC5I8B)J9 z>d*b%n?!0DTD)2WVWo*?OtT+l^7#EeSE68SLcX20UFeiSFv(C^w-y2R(sG)b>H8Kb-3yisz~X^11269R4!(NK4yU>(WQwneoPM&K$S8rifwoj2)tlU(7a9a`yt zo4qz!S9_bG^GGu2wT3JUf1*+yEgH&^YOf-Mny^YA83k$k<&z-W1*=dJ_#JhOj3lf}5!7nuAw>83^XQ-{U#q*WciW!!!f-mv2=BVY``pa~Jfy zfAAP*aXhPE9u;S=^+F@|pJ`5_z#NfYF3bc0@uFFfDj=+OFzDKvt(15Nu(SChImz|6 z(HW=DXx1ng9X0eH`<0t1#16q-B1N}hUwSXlW4M4kDMk69cq}I3QKYgU@rR&bTl;8p zO$yTfcK;W2YlRK4=@nPBOfM+N0tQamyI^<37Ysd#UNR0vS1TxK+HuhgbPmYIEKgy< z3To6BS7Ua4t;C~vqmnz;7bBe&t@KA0duEp6Iz-mHwyq^?usfEnBa(QtipWhRFhrN+ z-TRxX`VC;f*Jr2Zz=RC!5aPtfoW%zczK}Ws0XqVpxm}=zC0vx8lpjPRGNI*9{+TG+ z&LGqqY$VG=gc*H(U)1k!`-A%ZVY;t8{wqaKcA|%S`*8vB=Ao| z{6%@s2}NS+p@+0ie}Lv(U{vBL9{adlbNIT-k05<$9iDs_-HvB5mlETNKDq0Afk4y* z38iGR#-`|LtBildnKLK= zAvXd))JkAKn>+p{G$$!q+A0LV@}-ocDJ@pQt;-B71{ z9exO3$L}RD_P8A>9P*TZ&{~Kz4>v6-5wv=Y%>6`sJK1d;=zeJcq#GA356z>E|bPrs#x+w52(PkpyEe zOmbO9UY#o$E$+2L5E)-_-#2Jf-l*^C7$9r#$cS~pRb)oGHXdDhelC9gd5+3Gl{`>5 zPM#dkc@n7ZJ12#f>kbEL5h*&=Mg)wU$Ix{mWmZjB=lmBAuHEIeJY(I1b+Oq9MG=Q5 zY^{wmmCY6MjXZb1t$myx|M0$n=t0Z3vU;yC48GO(rM{yprb2^$|4P8jXgJ@sgVmRT z_XFvtfoPO#x(e~+@!|8<-H`!lju>~8g%cF76UPne{*guqL4sEO#qe&*0;3B$$E_-Tva%dib`L5-w8rnN8EZOUoV1^R3 zqV)v|TGsEqB+2?qT4Bi6-&o|N8p!P@)Y6mOQQ|p1oSkpqC~C}TJK&3tfZz9|<*Ms# zs?O)>-|oN7zpVjR)eYO>{g^0ob|kz8mxARt5=y4lIB=2@usJlxcVvR5?nVxg1I?I#9!(w4>yTu z_zVQwpL4uo69nE=;PaW}^RcCyYx=1e-h^L|#L!M;b)=t?pK0)vDBm=#|7?7O&<8y% zO;_Zmc$v(7OHeE_M@@Y@IbRGTS7B@@%c;C}Mz%j7&c$k+KSd)OCUD2nbu7_9;``L}f)q>Dbz4zWUwH_v zt@u-Wu4T3iRe#RDwe1c~c-b1Q&2yFi@2H~e$t*y?Qv0~5eI=u*iyW$6;onm!EdJm5 z1m1Kjau+Z}kjtk_)h&XwYZtv5Cbu(HJbquS7W++SymDG#0(xG|3Y5Y=r|L;ksCM2D zH^Du<@s>AEv8d*4W8;2+QMwzq8kWUU$H$0WHbRy%yL z#Os0MnG|&GyGv(anB+S(WgvR=->A8pWkvrNHwmOX{hY|-<;?+_bB8^|gnke9ZQ%#I z79|moiq3NaoQt-2@;5@D(t+o$v&G0d5s zlXHp16NDR>yxAzjq4W~n1asK|l>&7oxN77>kkY?ufy{hW0Ipd!P(vIYrbirMmZmoh zps@#@{XyWRaeg-5lj~^y3GWbz*VXdC&R>N0uOr&~?^XWI);G&?4XTa*iByG(lrL1# z{7E}Um!%HKi2nhX8mQE6F`bM3xU&RN)TNZkG|pAjdfBs4|Fb@5+bpqG3aT<$j_!u&IIqb7ri@H%M>us%-nph#5Aj9l?b&qcenq>dVSWjej7s-s}sckjZ?Z`PM_5P`hQgIS8p@`7>M?l36jb}2@oWZZdur(EIh~#C*k5{+vNY4IK2v#u55Ug(31eYZ4q|~!KM3F%u9YyhQWU?V9 z9@BSjvekSIq&s-SFibu1$W|Ik5@$`PK{r(`FYxKg(H?l>h?*$8t~Mr_#8{nY#e?f4 zd=EvBCp}g)F5BiWer*EpKzE5Qk<$I`!tro`d}+fdGO!=IdhhAqCJ!-(x?;fJf0KgC z`#)ysPf0VyMDvB-s^g1l+JA+YG;#Bs&b%-XFmQ9Pm5VAOv1O5H`pVV9kYWo_%)dZr zgSU>=KT78&4R<>qMww{T=npp8EaRylTSXw@JNGQD{WLMYi`%@p-&sWMMk>5c1|&|E zk_=#Wf9K*0Gl5nXfvEehvZ*|qR zzED`hswDaR%ll%>`Gy)7ef{oc9g}qa<2Ri3A{H?S2w9xYK{}+2vLqpVcU=tY01Cb% z&@}=KJATSe%RwVnJi_SqoG!;~tCBkF?7O+}(|1fdCZ<`Zk_>+pI9Mzb#NLAJgr5+$ z%hh^iDy4B>t>!)C>84q!xth)eRGzH-7Ggo@&as#sWKkYr%DLO0?y2CKCl~YA6MqAJ zP18Wsg%4_DMvTG^mler&+evXbLiI8{#Xx*i4z6=1wVrz@BHTQ-gp$xDW|^Jowfzn| z>C$t87qh=vn`a@XBw@&L=oJi&T2d1#Qsu-+0-1RR#$LuBJrgBj2Y3vM5&uXo0@H5g ziYVCDTreMsH5Rq}(V8U03f0%E<4nNiOs+rT_Gr~PMv4S4j3<8ng~3`CDxFSe>ffe< zNz|w0LBk$;B{~mfZE%;oCMG7vYg3OnB?dTCwxtr~N(5;p=y>n(tvajq#*Wi=il)!8`D(t(^VXRa-v+NPU z{g$(J1{n&=&%|HD&cVj=`hA2iATs{(G-I0wvC!$!DR|i)!c7d`)V$qCG1_u{(`H5nOIE~XaFxy$QU4pHcY(pP!zlmG#6YT z8aYmGD1nWbm0VdcY=KzLNkoCwWWxvAa|w1b++N37zOLhvVbx&9rs+SMUnq6pw;>R^ zol{)gjvbC+?>k-2i3wh_bTbNU z>JT`L4B;bWh}4D&+Y~@ja`XNDJ>F2R!f`vKj~>0@ll0|xlj8?-PkFS>A`OR|B5ArrXbm^sP{;QanWOPP&=kt(}2a#@vD zS=S5s7C>BWy$2*ahy$Wb10c2!S%$eJ$xbH7M<=Kz*BU-HUQ;kuPeVx*GBYNUT9AYH z{ok%r)N%J0=(c2GIcCZ*2$|yFx8k)U#9&P36IfReWwqa?DjwTfa)sOr5cBEOB&Rsz z=OwpvZ2NQ&bZqR%Z?_&X+XLs(RQ7Jn*Z0f^dd3aco@Lw~qzxU__P1;w%(#gQ2)P4! z7SAcDo!(+n-SMKPyKdkZnz-3sPAsS66AVdnw?SQM`_TL#SXGCo!CdFKYE1hp*tU_WGnJVY^`iGiMZfkw@h3aX)st04o& zU=@qg7{$7N8P^#{)9=N~f8ehgP3*Yx!?(A)=j~J(bQ4%vS@~0$%GP5yI_?Tb{DcVG zHmfb|r_{1#06nz9->9&9$i9h?fuQU(Wsg8HZHL9;nf|j_@u9^qou(rt?}sx|b98Jk z&i3DvB}I>tZ_257sj?`HOyf3xAvln4Ap@)76_;=3GHpEd1-;d=9u}f#z!uCv&zPy{ zAL`2|5~C@}K+xkm0}J38fHT2&FgXDP=n|FJ!wA8mQYH_%J52JHAQqK7I5FS7ffL+r zeni$Ss%GtS1f%!34h9KZ)I{r-EU~1Nl$1O)QOKw%zAlTuaw=@5`p1j!@l?)~r?g3l zPUoULEf{+LCh2@k6=pFC=7~yWycU@rGRSSAI3k- zK~deIw_xg8U`^?Qu!Rt1ePF6VSk>{I5x==Ckhwod&)6S_kO)-F2JwckTM)T~Mww9= zGN;UYJ-=%hQx-Vam(7VzH#yNn22RSwYCoy?C2upmNG5DweuL2)AySw3DI$nWZIt)~LF!|dD3$)?wt^jz7bV8>>zOfKTsN0anJ;k(n!?^l*W~ybfr@;LG1;iat6DclJk%gPJuV7AOTv*+mre1 z8EXFMmNDmf;e|!7(TW~vaZ&0~7}Kth!SRbeP>Gx>`g@Z9sK8do*DEb|=E?K2jJ}{DEr;%hQC6lC~RE2Mkg=Uh!xgcuT4FT>0uO)m9k^B9pwYLqrvW`iMMqbBy-E= z`~IlttINp<5danxy;7U zEG`D7TjQ_5T<%r%afiK4q4DJlX_@1k(t%A9(z#;=LrgAnN&BK;>!sp=u=;#|L6S6u6fy=g!Wp*NFc_DH zV~(As%HWNYcQ|2~aO#;7dVIWG|5z=U$}gu)RBP`D3`CL5bs0@0n`+9U>cSts(9WmJ zGHw5g==FBnTD$iY9<&%!`kzZjddMfJDj)C_vpEf zFk-|%U=)3nf&~%RgP22_^HsNFVNR)untq8$o^y6QKWMvVcHob5Tnv>rCVj5urxs4Y zL4%U~hBzCD1Wb9#^8COabiekSPai3>z4dO~goxU4q82?5nW};D-2(WT+YYYjm4+I9 zX^#{J*6Drce)ep%x!}8(<7L%N+{f!2ihTSre=|^%8~NS9N(TLl&B2((jIqVDMR7uv%6@H9x{G7eSXuvr7mCo|(tW4%fS=0_|4)HXf{RY8p`TY}!U z=tWt708qLN3DvLoV<)n-_;;8OTZyBcoTgl(+@V@-{$zNrnCR#h(8rq`b#H{HxEQ3 znEV^hu4Dx@DFD)%=oTcgg)JNWl#`OW$qF8V3!4f&pT1jF9+*CP$K=P4`qQ~w;Ctl; zbJ{4JY{`)Fn#@l+k6P*GjuN*HkgyKozb2iJX9B^C}<}E)#dWpr9bT z)nv;@4jNeyGOAvR{A?v!D*UsfGH$)GeadDgOh~OuKgN06UbO8qOHrSI#`iC**;};) zjEP-zaoL6ooA|(Gnhkg8gUoS(++T%{oL*CvTKQaDL%7U~Bo{Ch(t=DmxfWu_T3C4( zusHd7?De>uzlQH8yT5Yz*4wn=6vCd^vY{Pc%^u4dOMp)7;Q%Lz_g$p}&`bo<%-G|WjLR|!r#FsQTTV-~V+9`p* zmkqVgaDh=#W1Xox!Ak8pLU+8M^1uw$4FAs=2$QT&ptOEl1x3l0=vU% zpZYqqFH|yqmPaFO!yP13qGp#Sup;r`s*#CViB!JzDmPl+J*~q=hbA}CUI1IDx-u)J zYGMCt%bcFqc8EB~|0KrAueD)};TMvk3O1Rs>c*^hA=S*}SE9mY*O#2dAuyBQ7Gyrf z31FRavRd5Iy(=5vXhbM>F@sBPV~oI;$dMT?!%K8ShpHA#sCzTRa_$**gdcYljjhR< zKB%)C;7|Uw0`;8zL0!jf_w<+%rN;cO?Zn5o#NOF0mXC;mB>Dk{w&wEO%gOfFdq|c317{?!k4LSlpTNwOMxocbfv{Ugu*Gl`4)Xlajj5o zto1(DdjNhJ3ZA}-j*;Wbe)9{yb>l<_S-HW;-8qgiR~e}RYfd$CeBm=x61$PS!F^!* zZw%cx)7&QyS^i9=wf9V#-VDxIp5@K=zvk*)#DTQ4RV}S*g_Fv%KsAvV7QD(tI^U@< zR$Z2nRnxJ&HYj~i5*9A;dK%c0_mfFv2pLcpa2XBo2JL+G0PgmQvL={}l&IgU<<}F+ zJh0QU+JCMR-1}@;U{0Kdc@rd1*v-3K@bE>mj@ZqL0V(W`{5`?j2)ofHH|}tRmR;m6 zoSrnWDhZ0e=$}5s4D%HT*2{R;J(~uk=FWLf$tg3!1 z`{-fueP`G@xUaNA!ikr@R0+CL3m4A)7NB0V0W;>$;{s9x!3<$~aXrBDWF@b+GYW`W z$*|3hjk+z8!9up}2jseDHtFJ48=IgfgC0F_QPa__@!?T8gNK%7rBT(ZU5$0jkJOGm zSVzc*u<1_D(4wuV9VXtt3mHU#dcLNS&4{T}K1%NA3+2%q+z)Q)YPR;&QFBK{1;3`@ z<_kL2f02V=pwSRvaA%QMW@SdjlUF;VVh+`AyrWF`3cTgMA^LU5sbuF_Suoi@&^Jh= zHw|y>=>h%HH=PW}rKRGhxk=o|G$%4!K-@B$d!P|B^S%3z_~Bg$w$q*#I%*CZyeE;D znj!)n2VW);@5o^yl=y-7k0ecPb}#2xj}Z_U^5nWPpSb3fo91b1Xs!`&RPBY5PB@uT$prXUZ8^G7}a zi7Qc+^Of{=IysO*s0(Q795#F*RENT&Xgs2xj9rUz_(n!tw5i;&;(*W0!b#cv$#4o_ zxdO0U+FHXMP2`4ge+&_`9^s8K$a++6^r=v`5N+1g!^`K}PEaMI(8y&ufbdMiS6Vz$ zEyVnCGcKqpx|hUAUq-rI=WyUCb^%a_uTquC2;OIHs!W8Ees>Slai@eSBfdosZs~z+ z42j}`(EGhUB`~aFi%e5cB%I)iSPe+}C z9Q2{K)73^@=X^;$fTQrXz*QC1Cm7?6p@I@*j`~-M!A_HNBUUh#lfyqM)>rnvNP|bu z@u}3!q2|=Y!w(BWQ}_gi3ul@6%ij7N>`a>Q+j`{@UpcSE$nhU*0g)7#dG2^(7Rl)p z^?;l+NZasuGrX0!)mYU2L?!DT^W@7Gf?TAVGA2?cXhCwtWC`=%qobo!Anh_1S6_il zI(Do7RCxbVqASpGk+|b1%oX9Q`Kg=DT7lj-5~@NrS2ETYG&Xs?(SHWDuKQ{LH66-l zYu=2|?Qe^>>`{;B00c&|KmznKrz5BIawe;?pRhf5(endJdkAC72xP~kQBkBA>65Cj zoVRj(QD6X343bCS^YtYqmn6t}7KFkZr!R5fX-;Yh3Z;2$C4;jZlm`DzN4s=7lKFe( zx(iXRfj7?d>|V!XceXudj6-rfhRVLEy9Zf_=b6eJ>n_vMqq?V^Kiw;GHua zk9W{C2)Ecy(3TuZd&sQ2rdv+Zy^|~hBS$PkH46O{rAHdJKMK|`45Ah}(j?bP0)_h& z8BXk<*sN0WARXmfRhkjIVX~Nc6kbwY_^5%)et~LLmm>Ov%}>ik5{%tLGYdQ)sS7df zckB-20G#Q0w3*^Bu=~!S`J9zvS!N2#NudUv#F8BK_gvxaFY6v(AY!cyRY2$|-*}83 z;XQV=Mrxj0c3-aSX?ZP?T(B>7)HD~B(*?vW$~XEx%JUU9brOh*!O+5MpOoU|#ZTK! zGLrJIO`o#qO-CK^9F$EKfeAL-Ix4)a;@If~G!WKMWDnZVbUaeatqnbPcD%Ny-E9=jq{%RrR<@#J!2Lf z^EZ&=M32*oxu1AoN+S z8nGK?DJq3#vD=h>{ z*w3pHPt;xX1WDG(z%2}ddjd&oJW4OMs=$+!O-t*-9WJ{>EwFA_)9d<|e*5xI8Jiy) zzqStnVU(XB0Hh+ili{+sZu5cLZ}ZKwVG;un~kh*k4#tBnZ4F=Pl|5QnfX zQmDv5jZ;y6wWj3PKXwyj1HEt?ig?aRkdF&Go1Z zUm0e#x|1*_9LB%h_A+s|#>Hy6DP^GLEs77otaSxI$G4a$)#d^!GkbH(nz}P%Gl5gD z@NwWPHrrZcH$ujJG~=XzXqn;pXodW-K33IVT#?LRnl~o^O47i?ET@T4v^zO|Qm2^6 zVR_G2+krdc=n8Km4|DHJ5dXJRtl!HRnoLi;lJ?cxus}%ADj8a|LN>J zpqkpYH5{rUy(7Iym5zWErT5-@4T=E-L8^36s(|z+5UNxu0g>K&6_Ae71Of?FX%TY6 z@!fOuopSGc*<&R;V~_P^t~u8l`PbNE?#T;IG0uu~{e%EpO!cJ5)ob$Uo+B3A7+6D(}?djdSS!Yokh|tH+v?3{kaK;g;yT-klBj_FrUKv-A0a^Rt4Qp1cDrR)!tzqDG zopv@@xcxq_q<|f%Vr*sj5BpX_2ho%E5WZ;}c8iL#I@E03qyt%}_(DS3>bdL1t z42XB&$D5mNdX}ggJE+?`z#bM6@?=|0@M1Gr5=nd1=>4#e&MKly-I0RO{g?C6uX3Bl zZwpfMnAQbf&UrB!rc1vU7=Ep<-+LfjSnYFL#aJXqDY_z+h;7<^f_c;Q8|_90ReggT zOVI^$7IN$?)EQ)5J9oXlCh-&7I<|2|Sj_md9fjwQZTQGR#O)3^)(p7T-*1;VpwH5v z&kmtesp)IsSSMpu9ikh9(8`Uc1jsTt6YfGIf;_Y*&izkqostq6wb7xo(rZ%n2R2~c z%=8bX@gN&3LfM7&p+_tf(-4=~!`C#S@S_{Xfujtqu8E|E#EPug)YXvSDff_kPRNlS zaSY8}m;-St2c=&Rv`~YJRD?e$M=qugeRdn-%`O8l%Z@cl$?n8eYYw`{l%O0&9%Y*> z=XB^w_A2-(d_ZMuJ}?ck9~Nr!t|!}E*ebJqmV$dXLweu5qHjbY)8zJdso>l`f_K{b zIcoNrN#pyQm(h){n=^vmiKba1C=L_MRR=C7xq5hjJ%^&ZEePn zVynfvZ*T<0TxC(?hQX{|en+Ojnm!%^JGh4StFCrs~PdVIHQc zF`yR_qRvdI8W?Xz13SiS#6DlGW~K63N_(p+m+$ceF7mdzkG(_nZg5B|kDha4Xj{+X z!$J57th={gJTRBg6q$|;yEGHUaV(EmbW0SfSLY%+ast(|_ASoDiXESFijKq4YVWn) zNZQ!(@q^noK*vg~zkj0Hu@emX*2H#tVeHUks;S@^80TO`7FR^QjfTSo5 zAE)kI03AaEzxJxu_OG9&^!jC(4fONq@CR1|^}sN0)T3Q&pH&GMRRN)Aen%#2$f{Dr z+N}4&OLOgnbl%L-8*JguqmVCLv#rjROH{UAQPPnwceSu@XsgJ$;GDaBx{JjtIHwjQ zL96Vr7yt_QP`ST(EBCBHHSNgkyf-MV(&MxBn)uVti|QvIb9#ut1T&RZZ8Li!708@s z*9Y36*!bA}3UAT~@HRM(8Z26#VBD{lX~fCM@VBhr8!{Gp@fbN$mU&4d%A1xHy~m?D z+hgf?Y%RJB>u$#$jH#F>9#$gtrs023fukbp3B;CoQ7V0EQ(NL|5)RxXsqa8_E zb6FAdervwRdFeQW=w+Z<;X9rxGpY=|>;2rg9FWeP!kfY~d};z?utgRO`1)N6Nv+*K ze2wTmY?8!|>tRUpS)BPcb9{B=)LcmE*1oks<=C2{NOu0<$G)ca^`jT#}e)yx-!lS{6vy!mB#zF)cAI9r1?C_z!ey`q$g-s z3CCCGZMoyoR7?zTku7Sf;4C>p%>MMbFK%J%HXS}T7lw83N44C`9m-?Z1gyBTYY$cL zY!i02P9_^EDkU@14n9ZA>G~{b#%+yg^s%V023qqk6-R$#9{e=IJI0lt1*&>991LLu zud3d`R~31qCP&G{x{Om7XgHd$i0cdNn51gljk~*^e#c-Y0n7;Ps!JH-t(nuvcm;gT zujd|*Fjl|H@IC?+oE?&t=yp^0%#P`zqkSTOIG z+)v=bCwcCh9|~o?G+LQ_n3V+e3;FsM01aBNaJ5x4OBtx~78tq`*M&+nn?`-}UF?r! zL4!zF#G!f3fbF>;Pwez`?JO5;zV_*)`^s&Jmu#nQo9RiLx%}Yb3@WvqJv`y^7i4bq)FJ0Du-L06>76bx%R|&Nl8I zZVv=_z5i$CS!MPZT{RDHTmTy87HazZ_SRxN=axB7;=g%YS96Iyd89xfxxhi_IvRSU z$-Y~(3ZAVXXD9wTI@=&RIMP=bNgZf7I!{f;Ly z9)xt4uTs%oGF?Y!x$UjLU&?XneG>ewbx}vhAT@q+%I7S^^@RM~&*$Kth{VPkF38@8 zqQR2{-;?f3`tpp;u0KHKRjLkMQQMR7P7XI$uf3DqmS{~#oR^hUmrLlqCci`E!hZkP z-i`YsYDl2T+=;;>Amps)1EF{RwK=Kt!kmW7YZ?#R7NND}RT2lXsZr={rJteR^5>@` zOO6qg@=Kc3$g=0u>`i0(3NTZD75>B}F2$K93n5aBs?SfOWjDpT$pjP;ZWxWGvNP%3XZs!R&zYD)X(=IdK}(D#?R-FndOT#w4jy1)M%5wx#K0dQ#U!(>6^Dc;Zi6x-B)^SUMJo zdG5u7jnkPnB8_ff$kcA@|lN= zn*~&*Y||{nuj0Eugv69b6$g;8hl-AT?qO;zV5!T8Fe%$R#K-| z5Ad2zSQq>37A}{ko;RpB@BqUoj36q9;$tIaTpjmY(wTNPQj8zVu^*bHOJvYR&%Jn63FcbAC-|HG1O0uM~YkY2WB%bu6_&m09FAI1Z^v*DrogZpY z006vD%}_@ zNMy~_iiT2 zuy3mi*1rUSh0d4bFFz0%mffPa z1rnK)a|JhWN`_yMe7lX2jSe-iA`;ocevAPs4(~sLb4MdZQ$9CA>zE_j!WOv+qImsSgQx%CuZNEsVtmw(fg?RVtFFwmP_H9pc^-fry>bxMU9OK6B00SWR~!hPvg6u zZ|hQ(u&{_z1Qr;oeNUy1{1E<0k<8f4LVT3Fqrk4kE zqD9zwAGjtfRS%dEpP|?i$-RApYXO%`f>b}3)V4y1x8_tOtgU}_r#U1*xaxA`=a1G* zBkrf)1#ND?b25yJJcdLeSYd0VxniL?uYkD(1PfT2b@NJ=R~-Rv^yjV|1kHy(;fbF9WZx;1c`l$(7(Kb1 zJnPyqAMwugFww#}&v?zVLsnSfU96E#9phR_B7dJE7@H6xcO64UQBZ~5Q{22ZQLznA z6Nku$u+dCVq(+*Qi|Px_X$3PqlqAS+oiQMMtteF}W@av3xM)%0j(>{IZJ$rvRRtSb z#e#IlO2KRMP!g60VRmmE19p3CbgL(?&rKKSL1^K=q+77nxZOyV56SlGMJ=hXzw2ek zAe~t<_%n`*%ywT=q!QN67i`&$IoXDE`Axnyl{CY{H4oK^m)}fQZNFX+-Uq9N9;;-f zyeL7qc;5NGeK)L)ZbE|ncDm*hQR8qd~3v-(_DJmBmT|J$jz#mss+uX z^-N4LGVnyEZm7MoPxt^{mOPf=VjPou^z+mv4s*Vbtr@8{QYQ4O`!jP zEAEETLGsxiHv8sYBrHVYej9j6wi(>a-r9czQM0``Jjt`O`kF%*!0z1z*Qyc7%>Qc2 zWo5i(F~rf4{E%k$(L{{-Okk<)1~!-vcmE0F=c2|8>Shbp}5D zPrcF5=`m2&qtp{qSc$UUcO83ll=)Zf8i4AzfuQ6zpf>pG)KEcJPen`9KpzW$VVTeW zzr~cc+7*lp1-t&6D@Hicr&(|S01A{WBl`s=hl1I7xIc1n-{HQ zZSW0T6c6RZr|v#Z4|q{$|IOg9kP2@+j|Y?ifcq;~&i&!ZD<9SdZ{Yy|Ae4K!<0#(G+qM79 z`?IwFnYR%I_><5_G53(0f2`(dQdwX-lVH<{{psJ?#2KB literal 0 HcmV?d00001 diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta_2.wgt b/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta_2.wgt new file mode 100644 index 0000000000000000000000000000000000000000..080dada683a6ad304ed1e0d6c6f78a41cbe5f08c GIT binary patch literal 38919 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 Date: Thu, 1 Sep 2016 15:37:33 +0200 Subject: [PATCH 08/16] Fixes after cppcheck > [wgt-backend/src/wgt/step/encryption/step_encrypt_resources.cc:175]: (error) Resource leak: input > [wgt-backend/src/wgt/step/encryption/step_encrypt_resources.cc:251]: (error) Deallocating a deallocated pointer: output > [wgt-backend/src/wgt/extension_config_parser.cc:27]: (performance) Variable 'config_xml_' is assigned in constructor body. Consider performing initialization in initialization list. Change-Id: I4386dd4b5923566cc2e7ce941144496200fe139b --- src/wgt/extension_config_parser.cc | 5 ++--- src/wgt/step/encryption/step_encrypt_resources.cc | 23 +++++++++++++---------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/src/wgt/extension_config_parser.cc b/src/wgt/extension_config_parser.cc index 4813d72..1a1258d 100755 --- a/src/wgt/extension_config_parser.cc +++ b/src/wgt/extension_config_parser.cc @@ -23,9 +23,8 @@ const char kExtensionPath[] = "extension.privilege"; const char kExtensionNameKey[] = "@name"; } // namespace -ExtensionConfigParser::ExtensionConfigParser(std::string config_xml) { - config_xml_ = config_xml; -} +ExtensionConfigParser::ExtensionConfigParser(std::string config_xml) + : config_xml_(config_xml) {} std::unique_ptr ExtensionConfigParser::LoadExtensionConfig(const std::string& config_xml) { diff --git a/src/wgt/step/encryption/step_encrypt_resources.cc b/src/wgt/step/encryption/step_encrypt_resources.cc index 4d5fb91..b2ec518 100644 --- a/src/wgt/step/encryption/step_encrypt_resources.cc +++ b/src/wgt/step/encryption/step_encrypt_resources.cc @@ -52,20 +52,22 @@ std::size_t ReadBytes(unsigned char* buffer, std::size_t count, FILE* stream) { void WriteBytes(unsigned char* buffer, std::size_t count, FILE* stream) { // original file is treated as destination! + if (count <= 0) { + return; + } std::size_t bytes_written = 0; - std::size_t bytes_to_write = 0; do { - bytes_to_write = count - bytes_written; - bytes_written = std::fwrite(buffer + bytes_written, - sizeof(unsigned char), - count - bytes_written, - stream); - if ((bytes_written != bytes_to_write)) { + std::size_t bytes_appended = std::fwrite( + buffer + bytes_written, + sizeof(unsigned char), + count - bytes_written, + stream); + if ((bytes_appended == 0)) { LOG(ERROR) << "Error while writing data"; - free(buffer); - fclose(stream); + return; } - } while ((bytes_written != bytes_to_write)); + bytes_written += bytes_appended; + } while ((bytes_written < count)); } } // namespace @@ -172,6 +174,7 @@ bool StepEncryptResources::EncryptFile(const bf::path &src) { FILE *output = OpenFile(encFile.string().c_str(), "wb"); if (output == nullptr) { LOG(ERROR) << "Cannot create encrypted file: " << encFile.string(); + fclose(input); return false; } -- 2.7.4 From cc95a56f9b634aec29c42b7924cbe4c887b9a53e Mon Sep 17 00:00:00 2001 From: Bartlomiej Kunikowski Date: Mon, 5 Sep 2016 15:29:49 +0200 Subject: [PATCH 09/16] Fix double parsing of config.xml in delta wgt mode Fixed by add a optional delay in checking existence of start files and adding new step Requires: - https://review.tizen.org/gerrit/#/c/86941/ Change-Id: I9efed825d5f04af28493a6bd0003e3b9d6efb3c8 --- src/wgt/CMakeLists.txt | 1 + .../step/configuration/step_check_start_files.cc | 48 ++++++++++++++++++++++ .../step/configuration/step_check_start_files.h | 48 ++++++++++++++++++++++ src/wgt/step/configuration/step_parse.cc | 24 ++++++++--- src/wgt/wgt_backend_data.h | 4 ++ src/wgt/wgt_installer.cc | 6 +-- 6 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 src/wgt/step/configuration/step_check_start_files.cc create mode 100644 src/wgt/step/configuration/step_check_start_files.h diff --git a/src/wgt/CMakeLists.txt b/src/wgt/CMakeLists.txt index fece9b1..3124963 100755 --- a/src/wgt/CMakeLists.txt +++ b/src/wgt/CMakeLists.txt @@ -1,5 +1,6 @@ # Target - sources SET(SRCS + step/configuration/step_check_start_files.cc step/configuration/step_parse.cc step/encryption/step_encrypt_resources.cc step/encryption/step_remove_encryption_data.cc diff --git a/src/wgt/step/configuration/step_check_start_files.cc b/src/wgt/step/configuration/step_check_start_files.cc new file mode 100644 index 0000000..7bf3ad6 --- /dev/null +++ b/src/wgt/step/configuration/step_check_start_files.cc @@ -0,0 +1,48 @@ +// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved +// Use of this source code is governed by a apache 2.0 license that can be +// found in the LICENSE file. + +#include "wgt/step/configuration/step_check_start_files.h" + +#include + +#include +#include +#include + +#include + +#include +#include + +namespace bf = boost::filesystem; + +namespace wgt { +namespace configuration { + +common_installer::Step::Status StepCheckStartFiles::process() { + bool flag = false; // it's not important in this step to use this flag + std::string error; + bool result_check = CheckStartFile(static_cast + (context_->backend_data.get())->content.get(), + context_->unpacked_dir_path.get(), + &flag); + if (!result_check) { + LOG(ERROR) << "Could not find valid start file"; + return common_installer::Step::Status::PARSE_ERROR; + } + + result_check = CheckServicesStartFiles(static_cast( + context_->backend_data.get())->service_list.get(), + context_->unpacked_dir_path.get(), + &error); + if (!result_check) { + LOG(ERROR) << error; + return common_installer::Step::Status::PARSE_ERROR; + } + + return common_installer::Step::Status::OK; +} + +} // namespace configuration +} // namespace wgt diff --git a/src/wgt/step/configuration/step_check_start_files.h b/src/wgt/step/configuration/step_check_start_files.h new file mode 100644 index 0000000..7fc7025 --- /dev/null +++ b/src/wgt/step/configuration/step_check_start_files.h @@ -0,0 +1,48 @@ +// Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved +// Use of this source code is governed by a apache 2.0 license that can be +// found in the LICENSE file. +#ifndef WGT_STEP_CONFIGURATION_STEP_CHECK_START_FILES_H_ +#define WGT_STEP_CONFIGURATION_STEP_CHECK_START_FILES_H_ + +#include + +#include +#include +#include + +#include + +#include + +#include +#include +#include +#include +#include + +namespace wgt { +namespace configuration { + +/** + * \brief The StepCheckStartFiles class + * Checks if valid start files exists. + * It needs content info from wgt_backend_data. + * + * Step is used in delta mode. + */ +class StepCheckStartFiles : public common_installer::Step { + public: + using Step::Step; + + Status process() override; + Status clean() override { return Status::OK; } + Status undo() override { return Status::OK; } + Status precheck() override { return Status::OK; } + + STEP_NAME(CheckStartFiles) +}; + +} // namespace configuration +} // namespace wgt + +#endif // WGT_STEP_CONFIGURATION_STEP_CHECK_START_FILES_H_ diff --git a/src/wgt/step/configuration/step_parse.cc b/src/wgt/step/configuration/step_parse.cc index b2a12bf..0218240 100644 --- a/src/wgt/step/configuration/step_parse.cc +++ b/src/wgt/step/configuration/step_parse.cc @@ -650,15 +650,31 @@ common_installer::Step::Status StepParse::process() { LOG(ERROR) << "[Parse] Parse failed. " << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } + + WgtBackendData* backend_data = + static_cast(context_->backend_data.get()); + if (check_start_file_) { - if (!parser_->HasValidStartFile()) { + if (!parser_->CheckValidStartFile()) { LOG(ERROR) << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } - if (!parser_->HasValidServicesStartFiles()) { + if (!parser_->CheckValidServicesStartFiles()) { LOG(ERROR) << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } + } else { + // making backup of content data and services content data + auto content_info = + GetManifestDataForKey( + wgt::application_widget_keys::kTizenContentKey); + auto service_list = + GetManifestDataForKey( + wgt::application_widget_keys::kTizenServiceKey); + if (content_info) + backend_data->content.set(*content_info); + if (service_list) + backend_data->service_list.set(*service_list); } manifest_x* manifest = @@ -711,9 +727,6 @@ common_installer::Step::Status StepParse::process() { if (perm_info) permissions = perm_info->GetAPIPermissions(); - WgtBackendData* backend_data = - static_cast(context_->backend_data.get()); - auto settings_info = GetManifestDataForKey( wgt::application_widget_keys::kTizenSettingKey); @@ -736,7 +749,6 @@ common_installer::Step::Status StepParse::process() { LOG(DEBUG) << " ]-"; LOG(DEBUG) << "]-"; - // TODO(t.iwanek): In delta mode this step is running two times if (context_->manifest_data.get()) pkgmgr_parser_free_manifest_xml(context_->manifest_data.get()); diff --git a/src/wgt/wgt_backend_data.h b/src/wgt/wgt_backend_data.h index 3d2791d..c36cbad 100644 --- a/src/wgt/wgt_backend_data.h +++ b/src/wgt/wgt_backend_data.h @@ -9,6 +9,8 @@ #include #include +#include +#include #include #include @@ -28,6 +30,8 @@ class WgtBackendData : public common_installer::BackendData { Property settings; Property appwidgets; + Property content; + Property service_list; }; } // namespace wgt diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index b728742..282b3c0 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -72,6 +72,7 @@ #include #include +#include "wgt/step/configuration/step_check_start_files.h" #include "wgt/step/configuration/step_parse.h" #include "wgt/step/encryption/step_encrypt_resources.h" #include "wgt/step/encryption/step_remove_encryption_data.h" @@ -233,10 +234,8 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) case ci::RequestType::Delta: { AddStep(pkgmgr_); AddStep(); - // TODO(t.iwanek): manifest is parsed twice... AddStep( wgt::configuration::StepParse::ConfigLocation::PACKAGE, false); - // start file may not have changed AddStep( ci::configuration::StepParseManifest::ManifestLocation::INSTALLED, ci::configuration::StepParseManifest::StoreLocation::BACKUP); @@ -244,8 +243,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep("res/wgt/"); AddStep(); - AddStep( - wgt::configuration::StepParse::ConfigLocation::PACKAGE, true); + AddStep(); AddStep(); AddStep(); AddStep(); -- 2.7.4 From afcad01824f508a6c1b0e0f16f0eaded38d7157b Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Wed, 31 Aug 2016 11:48:58 +0200 Subject: [PATCH 10/16] Set correct exec label for smoke tests Otherwise, running from shell gives "System::Privileged" instead of "System". To verify run: $ usermod -s /bin/bash app_fw $ chsmack -a _ /etc/passwd $ su - app_fw $ /usr/bin/wgt-backend-ut/smoke-test Change-Id: If2f314f77daeb28b4af4cd3568cc3ac52bbd1354 --- packaging/wgt-backend-tests.manifest | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packaging/wgt-backend-tests.manifest b/packaging/wgt-backend-tests.manifest index 0d58b09..17bba51 100644 --- a/packaging/wgt-backend-tests.manifest +++ b/packaging/wgt-backend-tests.manifest @@ -3,7 +3,7 @@ - - + + -- 2.7.4 From e261fce0c47da98af1c2812c25e1810ebf3a422a Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Thu, 1 Sep 2016 13:54:40 +0200 Subject: [PATCH 11/16] Recovery mode for mount install and mount update To verify, run new smoke tests. Recovery mode requires mounting zip package. Signature files which needs to be read in next step are within zip package. Requires: - https://review.tizen.org/gerrit/86739 Change-Id: I857ecea3dae3836cf9a0af2c11766481a016847e --- src/hybrid/hybrid_installer.cc | 2 + src/unit_tests/smoke_test.cc | 57 ++++++++++++++++++++- .../test_samples/smoke/RecoveryMode_ForDelta.delta | Bin .../smoke/RecoveryMode_ForInstallation.wgt | Bin 37654 -> 37578 bytes .../smoke/RecoveryMode_ForMountInstall.wgt | Bin 0 -> 38679 bytes .../smoke/RecoveryMode_ForMountUpdate.wgt | Bin 0 -> 38923 bytes .../smoke/RecoveryMode_ForMountUpdate_2.wgt | Bin 0 -> 38921 bytes src/wgt/wgt_installer.cc | 2 + 8 files changed, 59 insertions(+), 2 deletions(-) mode change 100755 => 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForMountInstall.wgt create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate.wgt create mode 100644 src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate_2.wgt diff --git a/src/hybrid/hybrid_installer.cc b/src/hybrid/hybrid_installer.cc index ea2cc76..6760416 100644 --- a/src/hybrid/hybrid_installer.cc +++ b/src/hybrid/hybrid_installer.cc @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -273,6 +274,7 @@ HybridInstaller::HybridInstaller(common_installer::PkgMgrPtr pkgmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 75c0fa3..49905e2 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -61,17 +61,26 @@ class ScopedTzipInterface { explicit ScopedTzipInterface(const std::string& pkgid) : pkg_path_(bf::path(ci::GetRootAppPath(false, kTestUserId)) / pkgid), - interface_(ci::GetMountLocation(pkg_path_)) { + interface_(ci::GetMountLocation(pkg_path_)), + mounted_(true) { interface_.MountZip(ci::GetZipPackageLocation(pkg_path_, pkgid)); } + void Release() { + if (mounted_) { + interface_.UnmountZip(); + mounted_ = false; + } + } + ~ScopedTzipInterface() { - interface_.UnmountZip(); + Release(); } private: bf::path pkg_path_; ci::TzipInterface interface_; + bool mounted_; }; class TestPkgmgrInstaller : public ci::PkgmgrInstallerInterface { @@ -618,6 +627,50 @@ TEST_F(SmokeTest, RecoveryMode_ForDelta) { ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "1\n")); } +TEST_F(SmokeTest, RecoveryMode_ForMountInstall) { + bf::path path = kSmokePackagesDirectory / "RecoveryMode_ForMountInstall.wgt"; + RemoveAllRecoveryFiles(); + Subprocess backend_crash("/usr/bin/wgt-backend-ut/smoke-test-helper"); + backend_crash.Run("-w", path.string(), "-u", kTestUserIdStr.c_str()); + ASSERT_NE(backend_crash.Wait(), 0); + + std::string pkgid = "smokeapp31"; + std::string appid = "smokeapp31.RecoveryModeForMountInstall"; + bf::path recovery_file = FindRecoveryFile(); + ASSERT_FALSE(recovery_file.empty()); + ASSERT_EQ(Recover(recovery_file, PackageType::WGT), + ci::AppInstaller::Result::OK); + CheckPackageNonExistance(pkgid, {appid}); +} + +TEST_F(SmokeTest, RecoveryMode_ForMountUpdate) { + bf::path path_old = + kSmokePackagesDirectory / "RecoveryMode_ForMountUpdate.wgt"; + bf::path path_new = + kSmokePackagesDirectory / "RecoveryMode_ForMountUpdate_2.wgt"; + std::string pkgid = "smokeapp32"; + std::string appid = "smokeapp32.RecoveryModeForMountUpdate"; + RemoveAllRecoveryFiles(); + ASSERT_EQ(MountInstall(path_old, PackageType::WGT), + ci::AppInstaller::Result::OK); + Subprocess backend_crash("/usr/bin/wgt-backend-ut/smoke-test-helper"); + backend_crash.Run("-w", path_new.string(), "-u", kTestUserIdStr.c_str()); + ASSERT_NE(backend_crash.Wait(), 0); + + // Filesystem may be mounted after crash + ScopedTzipInterface poweroff_unmount_interface(pkgid); + poweroff_unmount_interface.Release(); + + bf::path recovery_file = FindRecoveryFile(); + ASSERT_FALSE(recovery_file.empty()); + ASSERT_EQ(Recover(recovery_file, PackageType::WGT), + ci::AppInstaller::Result::OK); + + ScopedTzipInterface interface(pkgid); + ValidatePackage(pkgid, {appid}); + ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "1\n")); +} + TEST_F(SmokeTest, InstallationMode_GoodSignature) { bf::path path = kSmokePackagesDirectory / "InstallationMode_GoodSignature.wgt"; // NOLINT ASSERT_EQ(Install(path, PackageType::WGT), ci::AppInstaller::Result::OK); diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta b/src/unit_tests/test_samples/smoke/RecoveryMode_ForDelta.delta old mode 100755 new mode 100644 diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForInstallation.wgt b/src/unit_tests/test_samples/smoke/RecoveryMode_ForInstallation.wgt index 3990f8069dc8be2e79f5820e13ec6fde4dfeb9ac..7f9dc0e6f11dd8ab6ad1c429283afcce5e43283f 100644 GIT binary patch delta 453 zcmbQXjOo-;CiVbtW)=|!hRKE##W%`vaXNu{92^WA@)SJ-Sk$XT85tOU0x=hZ3`25$ zURq|lUPW$BXb2|*^KP*d;oE??w1S&~k>v$50|S`Y9LFinC&rXzJWSIPHqN1oH4+BFcFx>PC^3oBi zWF{#x%1ySLBnMO#3uL!UuAc-9=*d$jDT<$HV_?WC*3V7M%+t#%M(8;^Ns;ML$K(%_ OWVk*6-F9RG$dLe&mT#E= delta 634 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 bJ+ys)yCm$ZCnNv}&<7lyUWB554*>iN$NrNB literal 0 HcmV?d00001 diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate.wgt b/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate.wgt new file mode 100644 index 0000000000000000000000000000000000000000..17ab974a98a26ca6b4be39d531189d43f718e833 GIT binary patch literal 38923 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

}u>wPY) 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 B-QfTL literal 0 HcmV?d00001 diff --git a/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate_2.wgt b/src/unit_tests/test_samples/smoke/RecoveryMode_ForMountUpdate_2.wgt new file mode 100644 index 0000000000000000000000000000000000000000..374b66dbfc05782a23986bd78da5e877dbb79ed6 GIT binary patch literal 38921 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 #include #include +#include #include #include #include @@ -289,6 +290,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(); -- 2.7.4 From 2ea4a43278a47cac72cdce96997f46be958deb5c Mon Sep 17 00:00:00 2001 From: Piotr Dabrowski Date: Wed, 7 Sep 2016 14:31:12 +0200 Subject: [PATCH 12/16] Fix installation of icons for hybrid applications Change-Id: I41ce7308a6e7abb7f55b3fb002639fad580a4c57 --- src/wgt/step/configuration/step_parse.cc | 14 +++++++------- src/wgt/step/configuration/step_parse.h | 2 +- src/wgt/step/filesystem/step_wgt_patch_icons.cc | 1 + 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/wgt/step/configuration/step_parse.cc b/src/wgt/step/configuration/step_parse.cc index 0218240..b2b4822 100644 --- a/src/wgt/step/configuration/step_parse.cc +++ b/src/wgt/step/configuration/step_parse.cc @@ -55,6 +55,7 @@ const char kTizenPackageXmlNamespace[] = "http://tizen.org/ns/packages"; const char kImeCategoryName[] = "http://tizen.org/category/ime"; const char kResWgt[] = "res/wgt"; +const char kConfigFileName[] = "config.xml"; GList* GenerateMetadataListX(const wgt::parse::MetaDataInfo& meta_info) { GList* list = nullptr; @@ -161,8 +162,7 @@ bool StepParse::FillIconPaths(manifest_x* manifest) { icons_info.reset(new wgt::parse::ApplicationIconsInfo()); } wgt::parse::LocalizedApplicationIconsInfo localized_list = - wgt::parse::GetLocalizedIconList(*icons_info, - context_->unpacked_dir_path.get()); + wgt::parse::GetLocalizedIconList(*icons_info, widget_path_); // We need to generate icon for each locale and icons are already set into // lookup order. There isn't said that all icons should be received from // one tag position so we iterate utils we run out of icons creating @@ -646,7 +646,7 @@ common_installer::Step::Status StepParse::process() { } parser_.reset(new wgt::parse::WidgetConfigParser()); - if (!parser_->ParseManifest(config_)) { + if (!parser_->ParseManifest(widget_path_ / kConfigFileName)) { LOG(ERROR) << "[Parse] Parse failed. " << parser_->GetErrorMessage(); return common_installer::Step::Status::PARSE_ERROR; } @@ -757,14 +757,14 @@ common_installer::Step::Status StepParse::process() { } bool StepParse::Check(const boost::filesystem::path& widget_path) { - boost::filesystem::path config = widget_path / "config.xml"; + LOG(DEBUG) << "unpacked widget path: " << widget_path; - LOG(DEBUG) << "config.xml path: " << config; + widget_path_ = widget_path; + boost::filesystem::path config = widget_path / kConfigFileName; + LOG(DEBUG) << "config.xml path: " << config; if (!boost::filesystem::exists(config)) return false; - - config_ = config; return true; } diff --git a/src/wgt/step/configuration/step_parse.h b/src/wgt/step/configuration/step_parse.h index 0effc8f..d2a42dc 100644 --- a/src/wgt/step/configuration/step_parse.h +++ b/src/wgt/step/configuration/step_parse.h @@ -47,7 +47,7 @@ class StepParse : public common_installer::Step { virtual bool LocateConfigFile(); bool Check(const boost::filesystem::path& widget_path); - boost::filesystem::path config_; + boost::filesystem::path widget_path_; private: std::set ExtractPrivileges( diff --git a/src/wgt/step/filesystem/step_wgt_patch_icons.cc b/src/wgt/step/filesystem/step_wgt_patch_icons.cc index 2a995b2..01b62fd 100644 --- a/src/wgt/step/filesystem/step_wgt_patch_icons.cc +++ b/src/wgt/step/filesystem/step_wgt_patch_icons.cc @@ -56,6 +56,7 @@ common_installer::Step::Status StepWgtPatchIcons::process() { icon->text = strdup(icon_path.c_str()); } } else { + LOG(INFO) << "Application provides no icon. Using Tizen default icon."; // create default icon if there is no icon at all bf::path icon_path = common_icon_location / app->appid; icon_path += ".png"; -- 2.7.4 From 64c508da71cc52b695a29bd8b090b5928d923e23 Mon Sep 17 00:00:00 2001 From: Piotr Ganicz Date: Thu, 8 Sep 2016 10:56:32 +0200 Subject: [PATCH 13/16] Unit test for User Definded Plugin Change-Id: I3ca99aae0e79320941a1bb2b8ef9ee410ac75738 --- src/unit_tests/smoke_test.cc | 18 ++++++++++++++++++ .../test_samples/smoke/SimpleEchoPrivilege.wgt | Bin 0 -> 45719 bytes 2 files changed, 18 insertions(+) create mode 100644 src/unit_tests/test_samples/smoke/SimpleEchoPrivilege.wgt diff --git a/src/unit_tests/smoke_test.cc b/src/unit_tests/smoke_test.cc index 49905e2..4e6606e 100644 --- a/src/unit_tests/smoke_test.cc +++ b/src/unit_tests/smoke_test.cc @@ -782,6 +782,24 @@ TEST_F(SmokeTest, MountUpdateMode) { ASSERT_TRUE(ValidateFileContentInPackage(pkgid, "res/wgt/VERSION", "2\n")); } +TEST_F(SmokeTest, UserDefinedPlugins) { + bf::path path = kSmokePackagesDirectory / "SimpleEchoPrivilege.wgt"; + std::string pkgid = "0CSPVhKmRk"; + std::string appid = "0CSPVhKmRk.SimpleEcho"; + std::string call_privilege = "http://tizen.org/privilege/call"; + std::string location_privilege = "http://tizen.org/privilege/location"; + std::string power_privilege = "http://tizen.org/privilege/power"; + + ASSERT_EQ(Install(path, PackageType::WGT), ci::AppInstaller::Result::OK); + ValidatePackage(pkgid, {appid}); + std::vector res; + ASSERT_TRUE(ci::QueryPrivilegesForPkgId(pkgid, kTestUserId, &res)); + ASSERT_TRUE(std::find(res.begin(), res.end(), call_privilege) != res.end()); + ASSERT_TRUE(std::find(res.begin(), res.end(), location_privilege) + != res.end()); + ASSERT_TRUE(std::find(res.begin(), res.end(), power_privilege) != res.end()); +} + } // namespace common_installer int main(int argc, char** argv) { diff --git a/src/unit_tests/test_samples/smoke/SimpleEchoPrivilege.wgt b/src/unit_tests/test_samples/smoke/SimpleEchoPrivilege.wgt new file mode 100644 index 0000000000000000000000000000000000000000..e48d684d87f29070b100a44530402e7d83e7f38c GIT binary patch literal 45719 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 F{{WlGw^9HA literal 0 HcmV?d00001 -- 2.7.4 From 0ef0eba225ae78f6c748b337f830cc781ab1299c Mon Sep 17 00:00:00 2001 From: Piotr Ganicz Date: Thu, 8 Sep 2016 14:33:54 +0200 Subject: [PATCH 14/16] Fix installation User Defined Plugins Change-Id: I0e71b358bf437a40980881c5fc23ce095bd5012b --- src/wgt/step/security/step_check_extension_privileges.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/wgt/step/security/step_check_extension_privileges.cc b/src/wgt/step/security/step_check_extension_privileges.cc index 15b305a..c28071a 100755 --- a/src/wgt/step/security/step_check_extension_privileges.cc +++ b/src/wgt/step/security/step_check_extension_privileges.cc @@ -115,7 +115,7 @@ bool StepCheckExtensionPrivileges::CheckPrivilegeLevel( std::string error_message; if (!common_installer::ValidatePrivilegeLevel( context_->privilege_level.get(), - false, + context_->pkg_type.get(), context_->manifest_data.get()->api_version, privileges, &error_message)) { -- 2.7.4 From 4d8b0f4845ff867b1b94161d1f6da5b392d97741 Mon Sep 17 00:00:00 2001 From: Junghyun Yeon Date: Thu, 8 Sep 2016 16:07:32 +0900 Subject: [PATCH 15/16] add and fix step for fota and direct install - Add StepWgtPatchIcons at ManifestDirectInstall and Update to work it properly - Fix StepWgtPatchIcons to overwrite icon even exists Related changes [pkgmgr-tool] : https://review.tizen.org/gerrit/#/c/83327/ [app-installers] : https://review.tizen.org/gerrit/#/c/86789/ [tpk-backend] : https://review.tizen.org/gerrit/#/c/86846/ Change-Id: I9a13d6af490832e0a48fd8e837a7bc29aeb60648 Signed-off-by: Junghyun Yeon --- src/wgt/step/filesystem/step_wgt_patch_icons.cc | 2 +- src/wgt/wgt_installer.cc | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/wgt/step/filesystem/step_wgt_patch_icons.cc b/src/wgt/step/filesystem/step_wgt_patch_icons.cc index 01b62fd..c01c1c8 100644 --- a/src/wgt/step/filesystem/step_wgt_patch_icons.cc +++ b/src/wgt/step/filesystem/step_wgt_patch_icons.cc @@ -60,7 +60,7 @@ common_installer::Step::Status StepWgtPatchIcons::process() { // create default icon if there is no icon at all bf::path icon_path = common_icon_location / app->appid; icon_path += ".png"; - bf::copy_file(kDefaultIconPath, icon_path, error); + bf::copy_file(kDefaultIconPath, icon_path, bf::copy_option::overwrite_if_exists, error); if (error) { LOG(ERROR) << "Failed to create default icon for web application"; return Status::ICON_ERROR; diff --git a/src/wgt/wgt_installer.cc b/src/wgt/wgt_installer.cc index d137fab..59cfa91 100755 --- a/src/wgt/wgt_installer.cc +++ b/src/wgt/wgt_installer.cc @@ -395,6 +395,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep(); AddStep(ci::Plugin::ActionType::Install); @@ -422,6 +423,7 @@ WgtInstaller::WgtInstaller(ci::PkgMgrPtr pkgrmgr) AddStep(); AddStep(); AddStep(); + AddStep(); AddStep(); AddStep( ci::Plugin::ActionType::Upgrade); -- 2.7.4 From 89264dcafd21988f596a4bbdbb888fac41855445 Mon Sep 17 00:00:00 2001 From: Tomasz Iwanek Date: Mon, 12 Sep 2016 10:25:28 +0200 Subject: [PATCH 16/16] Buildbreak fix Change-Id: Id966e9f9b2c75ea572c8c8184afc329dfd134053 --- src/wgt/step/configuration/step_check_start_files.cc | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/wgt/step/configuration/step_check_start_files.cc b/src/wgt/step/configuration/step_check_start_files.cc index 7bf3ad6..6db5b8e 100644 --- a/src/wgt/step/configuration/step_check_start_files.cc +++ b/src/wgt/step/configuration/step_check_start_files.cc @@ -23,17 +23,21 @@ namespace configuration { common_installer::Step::Status StepCheckStartFiles::process() { bool flag = false; // it's not important in this step to use this flag std::string error; - bool result_check = CheckStartFile(static_cast - (context_->backend_data.get())->content.get(), - context_->unpacked_dir_path.get(), - &flag); + auto backend_data = + static_cast(context_->backend_data.get()); + auto content = std::make_shared(); + if (!backend_data->content.get().src().empty()) { + content.reset(new parse::ContentInfo(backend_data->content.get())); + } + + bool result_check = CheckStartFile(content, context_->unpacked_dir_path.get(), + &flag); if (!result_check) { LOG(ERROR) << "Could not find valid start file"; return common_installer::Step::Status::PARSE_ERROR; } - result_check = CheckServicesStartFiles(static_cast( - context_->backend_data.get())->service_list.get(), + result_check = CheckServicesStartFiles(backend_data->service_list.get(), context_->unpacked_dir_path.get(), &error); if (!result_check) { -- 2.7.4