rpminspect-1.1-1.el7> 6 6`d63!}|J^>j/5,d_[t j/5,d岏Saӿ(po9-nrUBzHֶ=@n8z?n4#`ʩH-o <մvKubf?14ChO3^:3e xq@6V)CdK73ϊauvlm=FI(*)N^50˲G.KVXPi[~ּ'57.Сwi`.BׄU&6N܅c1 OG bd2ݼISPIW'^A2|bZo˨\za4!ZƯJ7:F!T.nINYm&\ dV#g*d]TJjioP}G*:܀z-SͦB8;gL)ft [H<6|g;Qq1 3 \i(" +9c78bc56fa0627efe27c6cf96504a27d460b224a!3!}|J^>j/5,d_[t j/5,dj]/p8pCy S+>7w>ChF$Yd>Wu/͸\ <9^yW>1%|Č&vZ!L%0%;]7fu=# d,x tȈegN3dx(>G6!9X_6 }bHeGJ^"p a\LnH0>:?d   748`ds $ 4 D d  <d  8 (f8p 9 : G|HIXY\]^[bdye~fltuvwx y@`dCrpminspect1.11.el7Build deviation compliance toolBuild deviation and compliance tool. This program runs a number of tests against one or two builds of source RPM files. The built artifacts are inspected and compared to report changes and validate policy compliance against the defined parameters._[buildhw-x86-15.iad2.fedoraproject.orgCFedora ProjectFedora ProjectGPLv3+ and LGPLv2+ and ASL 2.0 and CC-BYFedora ProjectDevelopment/Toolshttps://github.com/rpminspect/rpminspectlinuxx86_64^5-7M3A큤A큤_[_[_[_[_[_[_[_[e671e697fb34bfd1cbebcdb8688860af53d425991f25cac6a95d07de5f6db7083dc860e35699a833c22cecbc874b3932e6c8c1cd4f559d16a43927b53b4ea56d893d77ff37554d0df42a3aa0f1eaebcc473002adfb832c607b9bc7398538df75a6bbb144c1eaeb6f90e7dbf07a5f5baa0e5ff2fc7d8b62efb00ff6e0e42d84653972dc9744f6499f0f9b2dbf76696f2ae7ad8af9b23dde66d6af86c9dfb369867423e2fc2b908b80023ac4ac5010ccdfbca05e4ab661c2b8ebbb03a25df989e3rootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrpminspect-1.1-1.el7.src.rpmrpminspectrpminspect(x86-64)@@@@@@@   @ libc.so.6()(64bit)libc.so.6(GLIBC_2.2.5)(64bit)libc.so.6(GLIBC_2.3.4)(64bit)libc.so.6(GLIBC_2.4)(64bit)libc.so.6(GLIBC_2.8)(64bit)librpm.so.3()(64bit)librpminspect(x86-64)librpminspect.so.0()(64bit)rpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PayloadFilesHavePrefix)rtld(GNU_HASH)rpmlib(PayloadIsXz)1.1-1.el73.0.4-14.6.0-14.0-15.2-14.11.3_[f^^@@^x^@^@^F]7@]*]A]ADavid Cantrell - 1.1-1David Cantrell - 1.0-1David Cantrell - 0.13-2David Cantrell - 0.13-1Björn Esser - 0.12-2David Cantrell - 0.12-1David Cantrell - 0.11-1David Cantrell - 0.10-1David Cantrell - 0.9-3David Cantrell - 0.9-2David Cantrell - 0.9-1- Formatting fixes in Makefile help output - Begin config file restructuring starting with rpminspect-data-generic - Support multiple configuration files. - Docs work in progress. - Only fail the annocheck inspection for RESULT_VERIFY. - Read debuginfo if available when running the 'annocheck' inspection. - Add the '%files' inspection to librpminspect - Add __attribute__((__sentinel__)) to the run_cmd() prototype - Add test suite cases for the '%files' inspection. - Added the 'types' inspection to compare MIME types between builds. - Update TODO file - Update the MISSING file - s/rpminspect.yaml/generic.yaml/ in the Makefile and README - Skip debuginfo and debugsource packages in the 'types' inspection - Add test_types.py to the test suite - Note the 'types' inspection generic.yaml - Modify add_entry() in init.c to skip duplicate entries - Start GitHub Action workflow files for rpminspect. - Install meson in ci-ubuntu.yml - Change 'nls' option in meson_options.txt to a boolean - Install gettext for ci-ubuntu - Add more build dependencies to ci-ubuntu.yml - Drop the 'method' parameter from dependency() lines in meson.build - Split xmlrpc libs to separate dependency() lines in meson.build - More xmlrpc updates for meson.build and lib/meson.build - Try to support systems with xmlrpc-c without the pkgconfig file. - Changes to build on Ubuntu, specifically the GitHub Actions system - Syntax error in ci-ubuntu.yml - Add ci-fedora.yml for GitHub Action CI on Fedora - Fix errors in ci-fedora.yml - Put all of the ci-ubuntu.yml steps in ci-ubuntu.yml - Remove install-libmandoc.sh and ubuntu-pkgs.sh helper scripts. - Install python3-setuptools in ci-ubuntu.yml - Install rpm-build in ci-fedora.yml - Install libxmlrpc-core-c3-dev in ci-ubuntu.yml - Disable ci-ubuntu.yml for now, enable code coverage in ci-fedora.yml - Remove Travis-CI files. - coverage fixes for ci-fedora.yml - Install git in ci-fedora.yml - Enable manual dispatching of the CI on Fedora tests - Remove actionspanel thing for GitHub Actions, drop Coveralls block - Comment the ci-fedora-yaml file - Fix the 'elf' inspection and test_elf.py on Ubuntu - Enable the ci-ubuntu GitHub Action again - Check all return values of getcwd() - Ignore installed Python modules with pip3 in ci-ubuntu.yml - Build 'execstack' test program with -Wl,-z,lazy - Add ci-centos8.yml to enable CI on CentOS 8 as a GitHub Action - s/centos8:latest/centos8/g - Trying 'container: centos:centos8' - Drop 'sudo' from ci-centos8.yml - Rename README to README.md - Enable GitHub Action for CI on CentOS 7 - Drop -I from the pip install line in ci-centos7.yml - Use the 'make instreqs' target for install test suite deps. - Add back 'dnf -y install 'dnf-command(builddep)'' to ci-fedora.yml - Nope, that doesn't do it. Just install make in ci-fedora.yml first - More 'make instreqs' fixes. - s/scripts/utils/g in the Makefile - s/TOPDIR/topdir/g in the Makefile - Install make in ci-centos7.yml - Move REQS and PIP lists out of the Makefile to files in osdep/ - '^$$' -> '^$' - Slightly different sourcing of the osdep/ files - Set OS using := in the Makefile - Make the reqs.txt files in osdep/ contain all deps - linux-headers -> linux-headers-$(uname -r) for Ubuntu - Remove html401-dtds from osdep/centos8/reqs.txt - Use `` instead of $() since this list goes through make(1) - Does $(shell uname -r) work in this case? - More osdep/ work and simplification. - Rename 'osdep' to 'osdeps' - meson patches for opensuse - Move mandoc installation to post.sh in osdep/ubuntu - Add GitHub Action for CI on OpenSUSE - opensuse:latest -> opensuse/leap:latest - Install tar in ci-opensuse.yml - Install gzip in ci-opensuse.yml - More fixes for ci-opensuse.yml - Small fixes to determine-os.sh - ci: Add Python linting jobs - ShellCheck fixes for the regress/ scripts - ci: Add ShellCheck to lint shell scripts - Adjust how the Makefile reports unknown operating system. - Just check $ID in determine-os.sh for opensuse - Use pip for PIP_CMD on opensuse-leap - Update the centos images before doing anything else. - Install curl in opensuse-leap - Get 'rc' from Fedora on opensuse and copy it to /usr/local - Install kernel-default-devel for opensuse CI - Move the 'uses' part of the centos CI jobs to the first step - ShellCheck fixes for the utils/ scripts. - Some flake8 fixes in test/, using yapf - Combine all of the GitHub Actions CI runs in to ci.yml - Manually install rpmfluff on CentOS 7; pip is failing here - Use rpmfluff-0.5.7 explicitly for centos7 - Use rpmfluff-0.5.6 on centos7 - OK, let's try rpmfluff-0.5 for centos7 - Last try, rpmfluff-0.5.4.1 for centos7 - Back to trying to manually install rpmfluff for centos7 - Style the Python code with Black - Add the Black formatting commit to blame revision ignore list - OK, just copy rpmfluff.py in place - Make sure to manually install rpmfluff-0.5.7.1 for centos7 - Don't assume we have a header or even a list of files (#161) - python: flake8: drop * imports - python: flake8: wrap long lines to less than 100 characters - python: flake8: drop unused imports - python: flake8: remove unused local variables - python: flake8: add PEP8 whitespace - python: flake8: mark in-line bash scripts as raw strings - python: rename several duplicate test cases - ci: merge style workflows - Adjust rpminspect.spec.in for file moves and default changes. - Return the reallybadword to the metadata tests - Adjust test_metadata.LosingVendorCompareKojiBuild to expect VERIFY - The shared libmandoc check should not look for a static libmandoc - Update the AUTHORS file - Rename ipv6_blacklist to forbidden_ipv6_functions - Rename stat-whitelist to fileinfo - Rename 'caps_whitelist' to 'caps' and drop the use of 'whitelist' - Rename abi-checking-whitelist/ to abi/ in /usr/share/rpminspect - Rename 'version-whitelist/' to 'rebaseable/' in /usr/share/rpminspect - Rename "political-whitelist/" to "politics/" in /usr/share/rpminspect - Drop unnecessary method re-definitions in base test classes - Use super() rather than explicitly calling the parent class - Call configFile() on object instance rather than using the parent class - Upload coverage report to codecov - Improve the error reporting for test result checking - Convert to AUTHORS.md file, add Makefile target to generate it. - Introduce the 'movedfiles' inspection and a lot of other fixes (#155) - AUTHORS -> AUTHORS.md in rpminspect.spec.in - Add basic tests for the filesize inspection - Multiply the file size difference before dividing - Update README.md - Update README.md (more Markdown changes) - Update POTFILES and rpminspect.pot - chmod 0755 test_filesize.py - tests: optionally check the result message - tests: add further filesize tests for shrinking files - inspect_filesize: drop extra - from the message about file shrinkage - Enable 'permissions' inspect for single build analysis. - Add 24 new test cases to cover the 'permissions' inspection. - chmod 0755 test_permissions.py - Make sure all RESULT_INFO results are set to NOT_WAIVABLE - Fix some specific problems with the 'permissions' inspection. - Pass "-r GENERIC" to rpminspect in the TestCompareKoji class - Add 12 more permissions test cases for setuid file checks - Update TODO list - Update test_symlink.py tests for new waiver_auth values - Add a fedora-rawhide job and renamed 'fedora' to fedora-stable - Update the rpminspect.pot translation template - Relicense librpminspect (lib/ and include/) as LGPL-3.0-or-later - Ignore .tox/ subdirectory - License the rpminspect-data-generic subpackage as CC-BY-4.0 - Add a copy of the Apache 2.0 license for the 5 files in librpminspect - Update the License tag in the spec file and the %license lines - Add debian-testing as a CI workflow; add missing osdeps files. - Update determine-os.sh to handle Fedora stable and rawhide - Drop the use of 'sudo' in ci.yml - sudo required for Ubuntu CI job, install make for debian-testing - See what $ID is set to in determine-os.sh - Workaround a bug in meson 0.55.0 for Fedora CI jobs - Add 'debian' catch to utils/determine-os.sh - Rename 'osdeps/debian-testing/' to 'osdeps/debian/' - Add opensuse-tumbleweed to the CI job list - Add libmagic-dev to osdeps/debian/reqs.txt - Fix memory corruption in init_rpminspect - Add comment clarifying the License tag in the spec file. - If check_results() raises AssertionError, dump the JSON output - Fix test_changelog.py test cases that are failing. - Fix UnbalancedChangeLogEditCompareKoji - Handle rpm versions with x.y.z.w version numbers in test_symlinks.py - Fix mandoc build problems in opensuse-tumbleweed CI job - Install gcovr using pip on opensuse-tumbleweed - Handle systems that lack pkg-config files for libelf and libcap - Add archlinux CI job in GitHub Actions - Forgot --noconfirm on the 'pacman -Syu' line. - Add missing DESC_MOVEDFILES block to inspection_desc() - More minor fixes to the Arch Linux CI job. - Install gcovr with pip for the Arch Linux CI job. - Support building on systems that lack - Add detection for to meson.build - Ensure an int is used for snprintf() in inspect_manpage_path() - WIP: 'abidiff' inspection - Only report permissions change if there is a mode_diff (#181) - Fix -Werror failures in inspect_abidiff.c - Add sl_run_cmd() to librpminspect. - Add get_arches() to librpminspect - WIP: abidiff inspection - Some minor edits to the README.md file - More minor updates to the README.md file - Replace get_arches() with init_arches() - Add test_addedfiles.py to the integration test suite - Expand find_one_peer() to soft match versioned ELF shared libraries - Add the beginnings of the 'abidiff' inspection code. - Report out findings in the abidiff inspection. - Update the test suite to cover rpmfluff 0.6 - libmandoc configure workaround needed on Debian too - shellcheck fixes for the scripts in utils/ - Add abi.c, the code that reads in the ABI compat level files (#144) - Be sure to close the open file before exiting init_fileinfo() - Python formatting cleanups - Add --diff to the Python format checker - Add new setting to abidiff section of the config file - Add -n/--no-rebase command line option to disable rebase detection - Store size_threshold as a long int rather than a char * - Check abidiff(1) results against the ABI compat level definitions (#144) - Add 'apt-get -y install libgcc-s1:i386' to pre.sh for Debian - Add integration test cases for the abidiff inspection (#144) - Add 'dpkg --configure -a' to pre.sh for debian - Install libterm-readline-perl-perl for debian CI - Install libabigail for Fedora and CentOS CI jobs - libgcc-s1:i386 -> lib32gcc-s1 for debian CI - Install libabigail for opensuse-leap, opensuse-tumbleweed, and arch CI - Install libabigail for debian and ubuntu CI - Install libabigail-dev for debian and ubuntu, not libabigail - Install libabigail-tools on opensuse-leap and opensuse-tumbleweed - Install libabigail-git for arch linux CI - Move free_argv_table() to runcmd.c - Install 'abigail-tools' for debian-testing and ubuntu CI - Install libabigail using the Arch User Repo on arch CI - Explain the osdeps/ subdirectory. - No, just clone libabigail from git and build it manually on arch - Add beginning of kmidiff inspection, put ABI functions in abi.c - Read list of possible kernel executable filenames from the config file. - Drop abidiff_ and kmidiff_ from extra_args; add kernel_filenames - Just call the abidiff and kmidiff extra args settings "extra_args" - Define 'kmi_ignore_pattern' in the config file. - Handle builds that lack all debuginfo packages (#186) - Do not assume peer->after_hdr exists (#187) - Store copy of original pointer in strsplit() to free at the end. - Use mmap() and strsplit() in read_file() rather than a getline() loop - Fix memory leaks in abi.c functions - open() failure in readfile() is not fatal, just return NULL - Add utils/gate.sh - Have check_abi() pass back the ABI compat level found - Update descriptions for abidiff and kmidiff inspections - Hook up the kmidiff inspection. - Use read_file() in init_fileinfo() and init_caps() - Use read_file() in validate_desktop_contents() - Use read_file() in disttag_driver() - Adjust how init_fileinfo() and init_caps() iterate over file contents - Fix 'tox -e format' style problems found. - Avoid comparing elf files that are not shared libraries - Support --kmi-whitelist in the kmidiff inspection - Trim worksubdir from paths in reported abidiff and kmidiff commands - Remove the kmi_ignore_pattern setting for the config file. - Create include/queue.h to replace the _COMPAT_QUEUE blocks everywhere - Update AUTHORS.md - Report metadata changes for rebased packages as INFO - Do not fail the specname inspection when given a non-SRPM - For passing upstream inspections, do not report a remedy string. - Do not fail the lostpayload inspections if it only gives INFO messages - Clarify unapproved license message in the license inspection - Use FOPEN_MAX for nopenfd parameter in nftw() calls - Make sure to close open file descriptors from get_elf() calls. - Include 'src' architecture in the rpminspect runs in gate.sh - Make sure kmidiff is listed in the spec file - TODO updates - Update rpminspect.pot and POTFILES for translations- Use this project's user.name and user.email for Koji builds - Use YAML for the rpminspect configuration file and profiles - Reduce the number if (null) prints in debug mode for shellsyntax - Update README - Fixes a ValueError if hostname has no periods - Remove '#include ' from rpminspect.h - Install python3-pyyaml in the Docker test environment. - Use fedora:rawhide for the Docker tests. - Try multiple ways of finding the kernel development files in test_kmod.py - Syntax error in test_kmod.py - Force kver in list iteration to a string. - Update 'hardened' annocheck definition, add another LTO prefix - Debugging output in inspect_lto.c - In test_ownership.py, use the built rpminspect rather than a script. - More debugging output in inspect_lto.c - In find_lto_symbols(), start at SHT_PROGBITS instead of SHT_SYMTAB. - In test_symlinks, use built rpminspect rather than a shell script. - Use built executables in test_upstream.py tests rather than scripts. - Add '%global __os_install_post %{nil}' to rpmfluff spec headers. - Make sure man pages we expect gzipped are gzipped in test_manpage.py - Set QA_SKIP_BUILD_ROOT=1 in %install in test_symlinks.py tests. - Add '%global __arch_install_post %{nil}' to symlinks spec headers. - Install kernel-core for the test suite. - Find the kernel build directory in test/data/derp-kmod/Makefile - Skip ELOOP symlink tests if rpm >= 4.15.90 is used - Pass the kernel build directory to derp-kmod/Makefile from test_kmod.py - Install 'make' in the Docker test environment - Support Linux 5.6.0 struct proc_ops in derp-kmod - Final derp-kmod fixes for the 5.6.0 and higher kernels. - rpminspect.conf -> rpminspect.yaml in rpminspect.spec.in - Set default JVM byte code version to 43 in rpminspect.yaml - Update the local test instructions to run individual test scripts. - Report changed files as RESULT_INFO when rebasing packages (#150) - Ignore missing XML entity definition errors (#148) - Add some basic verbose output from rpminspect(1) - Split 'emptyrpm' inspection in to 'lostpayload' and 'emptyrpm' (#147) - Move _() usage for DESC_* macros to inspect.h - Handle INSPECT_LOSTPAYLOAD in inspection_desc() - Search correct files for POTFILES additions. - Update POTFILES and rpminspect.pot template - Add DESC_PATHMIGRATION and reformat the struct inspect for reading. - Small update to the MISSING file. - Install python3-devel for the test suite. - Install libffi-devel for the test suite - Use the rpm Python module in test_syslinks.py to get rpm version. - Add check_results() to test/baseclass.py - Report %changelog section differences as INFO (#123) - Report dangling symlinks as INFO for now (#145) - Add get_specfile_macros() and get_macros() to librpminspect (#152) - Fix ELF_K_AR handling in get_elf_machine() (#153) - Remove stray 7 from an #include line - Don't worry about EM_BPF objects in ELF_K_AR file types (#153) - Fix -fPIC loss/gain reporting in the elf inspection (#153) - Support macros in the Release tag in the 'disttag' inspection (#152) - Simplify the get_elf_section() function a bit. - Do not report all after objects without -fPIC as having lost PIC (#153) - Drop eu-elfcmp(1) usage in the changedfiles inspection. - Rename on_stat_whitelist() to on_stat_whitelist_mode(), fix some errors. - Add on_stat_whitelist_owner() and on_stat_whitelist_group() - Ignore debug paths in the symlinks inspection. - Install 'setup' in the Docker test image - Add mock(1) in the Docker test environment. - Remove DEBUG_PRINT for the config file name read in init.c - Display errno value when getpwnam_r() or getgrnam_r() fail - Handle missing users and groups from the system - Add sssd-client to the Docker test environment - More debugging output while working on Travis-CI problems - Further Travis-CI debugging for the ownership inspection. - Continuing to debug this problem in Travis-CI - And continued Travis-CI test_ownership debugging... - Fix problem constructing package download URLs in librpminspect. - Only try to read the UID or GID in the ownership inspection. - Update translation template file. - Update po/POTFILES list - Final getpwnam_r()/getgrnam_r() changes for whitelist.c - Restrict RPM spec file macro gathering to %define and %global. - If shdr in _get_elf_helper() is NULL, return NULL. - s/%%/%/g in results.h - Account for whitespace other than ' ' on Release: lines (#157) - Add a new disttag test case to cover tab field separators. - Ignore multiline macros in get_specfile_macros() - Add more example data to test_disttag.py to cover recent bug reports. - Add ignore_path() function to librpminspect - Expand foreach_peer_file() with use_ignores parameter. - Revert work-in-place changes in inspect_elf.c so the test suite passes. - Update the 'ignore' section in rpminspect.yaml - Expand strreplace() to support removing substrings. - Trim rpminspect working directory from annocheck(1) details. - Skip debuginfo files in the annocheck inspection. - If reltarget is "", do not try to further modify it (#159) - Add manually-invoked regression testing scripts. - BR libmandoc-devel >= 1.14.5 - BR libmandoc-devel without specific version for EPEL-7 and F-30 - Make sure all static path buffers use PATH_MAX consistently. - Support a positional parameter on 'make check' to run part of test suite. - Followup to the PIC check for static ELF libraries (#153) - Create TARGET_ARG to get optional target arguments. - Change *-dtds packages from Requires to Suggests for el8 and fedora. - 'sort | uniq' -> 'sort -u' - Rename 'make release' to 'make new-release'; add 'make release' - Fix build_module() in test_kmod.py- Rebuild against latest mandoc package (#1850375)- Remove the GitHub Release page stuff from utils/release.sh - Drop meson_version from meson.build - Change meson.build to require xmlrpc-c >= 1.32.5 - Fix some errors when running with libiniparser 3.1 - Only set CURLOPT_TCP_FASTOPEN if we have it available. - Expand the template rpminspect.conf file for the test suite. - Handle 'localhost.localdomain' FQDN in the test suite base clases - Rework the test_manpage.py tests to work with rpm >= 4.11.x - BR xmlrpc-c >= 1.32.5 and iniparser >= 3.1 - README updates - Modify the Makefile so it works with 'ninja' or 'ninja-build' - Rename the tests/ subdirectory to test/ - Split meson.build out in to different meson.build files. - Move builds.c to lib/, remove builds.h from src/ - Move rpminspect.conf to data/, expand data/meson.build - Fix the --version output to remove '@' wrapping the version number. - Remove diff.3, the code is gone from lib/ - Begin doc/Doxyfile for API documentation. - Add Doxygen documentation for badwords.c, builds.c, and checksums.c - Make sure the changelog inspection runs with before/after pairs (#130) - Ignore debuginfo and debugsource packages in the kmod inspection. - Skip the kmod inspection if there is no peer_file (#131) - Handle kernel modules that move paths between builds (#131) - Test cases for kernel modules changing paths between builds (#131) - Add Doxygen documentation to four C files, update others. - First part of reworking the add_result() API. - Add init_result_params() to reset the struct result_params structures. - Additional Doxygen documentation blocks for librpminspect. - More librpminspect documentation work. - Un-static some of the inspect_elf.c functions. - Remove MPARSE_MAN to let libmandoc autodetect the type (#132) - Revise list_to_string() to support optional delimiter. - Add get_elf_section_names() to librpminspect - Support [lto] section with lto_symbol_name_prefixes in rpminspect.conf - Add 'LTO' inspection to librpminspect (#129) - Add 'LTO' inspection test cases (#129) - Fix free(): double free detected in tcache 2 (#134) - Do not strdup() header and remedy in add_result_entry() - Store package extract root in rpmpeer_entry_t for each package. - Add strtype() to librpminspect to return string indicating file type. - Add the 'symlinks' inspection to librpminspect (#133) - Add tests for the 'symlinks' inspection to the test suite - Update README file - chmod 0755 test_symlinks.py - symlink inspection adjustments based on feedback (#135 & #136) - Simplify the license inspection routine (#138) - Add get_elf_machine() to readelf.c (#139) - Elf64_Half -> GElf_Half in dt_needed_driver() - Skip eBPF ELF objects in the 'elf' inspection (#139) - Stop appending a newline to string in strappend() - Collect all results from getLatestBuild Koji XML-RPC call (#137) - Return EM_NONE in get_elf_machine() - In download_build(), fix how srcfmt is set. - Fix some memory errors associated with the results and parameters. - Add a new faux-result to the results output for 'rpminspect' - Use params.msg for reporting in check_bin_rpm_changelog() - Add teardown steps in baseclass to clean up rpm build files - Adding tests to validate file ownership and capabilities tests - Added build cleanup in baseclass and fixed setUp typo - still testing - Many more tests fixed - down to six failures. - Fixes to mockbuild tests - Fixed some duplicate class names and now passing all tests - Added docstrings to all tests and other small bugfixes - Added docstrings to all tests and other small bugfixes - Formatting and style fixes - Make sure only RPM files are passed to get_rpm_info() - Update TODO list - Return get_rpm_info() and add_peer() have void returns. - When public headers change in 'changedfiles', do not free param.details - Check is eptr->data is NULL in find_one_peer (#142) - Define EM_BPF if we lack it. - Skip 'upstream' inspection if no source packages are provided. - Add explicit librpminspect Requires to the main package. - Add test cases for the 'upstream' inspection. - Simplify how the versions are collected in inspect_upstream() - Update translation template.- Rebuild (json-c)- Do not use headerLink() in extract_rpm() - Expand the 'kmod' inspection to check module dependencies. - Expand 'kmod' inspection to cover PCI device IDs - Update the TODO list - Update Dockerfile.test for Fedora 31 - Updates for the MISSING file - Add DEBUG_PRINT() macro to librpminspect. - Add 'favor_release' setting in rpminspect.conf under [vendor] (#98) - Add more lines to [inspections] in src/rpminspect.conf - Change up the DEBUG_PRINT() macro - Don't assume favor_release is set in rpminspect.conf - Format stdout and stderr correctly from baseclass, run with -d - Correctly recognize parenthesized license substrings (#101) - Shorten the names of test classes. - Generate a dummy 'changelog' for the CI tests - Adjust how the dummy changelog is made for Travis-CI - One more slight change to how .travis.yml runs mkrpmchangelog.sh - Nope, just can't spell the name of my own script. - Copy the dummy changelog to /root/rpmbuild/SOURCES - Add /bin to PATH in mkrpmchangelog.sh - Make sure glibc[-devel].i686 is installed for the test suite. - Add test kernel module for use in the integration test suite. - Update the TODO list - Note the test suite needs kernel-devel installed. - Expand the derp kernel module for depends and alias support. - Fix up some of the kmod functions in librpminspect - In the test suite, use the same before & after package version. - Add test_kmod.py to the test suite. - Stub out test_ownership.py and test_shellsyntax.py - * extract_rpm -> *extract_rpm - Handle parenthesized license substrings with all tokens (#102) - Combine prototype sections in rpminspect.h for kmods.c - Implement the 'arch' inspection. - Add a section to the README file explaining how to run the tests. - Add the 'subpackages' inspection. - Ignore 'build' directory. - Fix the kernel module alias tests in test_kmod.py - Follow the pep8 style - Remove unused import in tests - Start some spec file changes to support building on OpenSUSE - Update TODO and MISSING - Move the assert() for ri in inspect_modularity() up. - Use 'pip3' in .travis.yml and Dockerfil.test - More updates to Travis-CI control files. - And another change for the .travis.yml file - Revert "Start some spec file changes to support building on OpenSUSE" - Handle return code 1000 from the Koji hub. - Expand meson.build and rpminspect.spec.in for EPEL-8 - Support libiniparser v3.x and v4.x APIs - Added the 'changelog' inspection. - Add possibility to run integration test suites separately - Begin i18n support for string translations. - Mark strings in lib/ for translation, update rpminspect.pot - How to run and debug integration tests - Fixes for i18n string marking changes. - More build fixes for the change to translatable strings. - Favor libmandoc.a when build rpminspect - Display the line number in DEBUG_PRINT() - Expand the config file with [pathmigration] and [ignore] - Fix double free in list_free() (#107) - Really fix the double free() in arch/subpackages (#107) - Do not require a tty when running (#109). - Add the 'pathmigration' inspection and test cases. - Rework the 'xml' inspection to better handle DTDs and SVG files (#110) - Default rpminspect.conf updates - Expand 'filesize' to report changes at different levels by percentage - Update TODO list. - Fix bug in shellsyntax where before and after builds are invalid. - Add shellsyntax tests for /bin/sh - Add libdiff code snapshot to librpminspect - Patch diff.c so it builds in librpminspect - Include diff.h in rpminspect.h - Refactor variable names - Add some helper functions for reading and working with text files. - Implement the unified_diff() library function. - Add two utility functions to librpminspect. - Change upstream_driver() to use unified_diff() - Use unified_diff() in changedfiles rather than running DIFF_CMD - Fix for 'error: format not a string literal and no format arguments' - Split unified_diff() in to unified_file_diff() and unified_str_diff() - Change 'make POTFILES' to 'make update-pot', update po/rpminspect.pot - Add /bin/bash tests - Add DEBUG_PRINT() to annocheck_driver() - Rename 'Screendump' to 'Details' in the output listings. - s/depends/dependencies/ in meson.build - Fix SIGSEGV in inspect_changelog() (#115) - Add tests for shellsyntax for /bin/ksh - Handle RPMs with empty or missing changelogs (#116) - Update the AUTHORS file. - Add tests for shellsyntax for /bin/zsh - Add tests for shellsyntax for /bin/tcsh - Add tests for shellsyntax for /bin/csh - Refactor the unified_diff.c code to be more reliable (#116) - Correct RPM %changelog output to match rpm (#116) - Stop adding DIFF_COMMON lines twice when the hunk continues (#116) - Adjust the unified_output() function for more output control (#116). - Remove libdiff code and return to using diff(1) via fork and exec. - Fix some memory leaks in inspect_changelog.c - Update the test_changelog.py to do list. - Added the tests for losing the %changelog in the after builds - Update the 'make instreqs' target, README, and rpminspect.spec.in - Unify the readme with yum as rpminspect works on yum as well as dnf - Require xmlrpc >= 1.51.0 - Add get_nevr() and get_rpmtag_str() to lib/rpm.c - Do not abort if the hdr is NULL in get_changelog() (#127) - Update test_changelog.py with more changelog inspection tests. - Remaining set of changelog inspection fixes. - Make sure remaining test_changelog.py test cases pass. - Handle shell syntax tests that don't return non-zero on failure. - Add tests for shellsyntax for /bin/rc - Add release.c to librpminspect source. - If no new %changelog entry is found, report OK if NVRs match. (#127) - Modify license inspection reporting. - Split add_result() in to add_result() and add_result_entry() - Prevent reporting unapproved license tokens for approved expressions. - Disable empty license tag tests, add ValidGlibcLicenseTagKoji - Temporarily disable UnprofessinalChangeLogEntryCompareKoji - Update po/ files. - Adjust how GitHub release assets are uploaded.- Change the way get_mime_type() works so it caches the type. - Support an optional [annocheck] section in the config file (#62) - Add a 'make help' target in the helper Makefile - Add 'annocheck' inspection to librpminspect (#62) - Add weak dependency for /usr/bin/annocheck (#62) - EM_S390 maps to R_390_* macros in /usr/include/elf.h - Only run the changedfiles inspection under certain conditions (#74) - Skip source packages in the changedfiles inspection (#74) - Add back missing free() in rpminspect.c, but in the right place. - Simplify the returns out of changedfiles_driver() - Add the 'DT_NEEDED' inspection to librpminspect. - Expand 'elf' inspection description to mention forbidden function check. - Change result severity in 'upstream' based on package versions. - Cache rpmfile_entry_t checksums. - Add 'filesize' inspection to librpminspect. - Updated top level docs. - Check all license abbreviations in the 'license' inspection (#83) - Use MESON_BUILD_DIR in the Makefile 'all' target. - Drop MAGIC_SYMLINK from magic_open() in get_mime_type() - Move stat-whitelist checker to whitelist.c - fixup! Move stat-whitelist checker to whitelist.c - Change the prototype for add_result() - Add the 'permissions' inspection. - Replace check_stat_whitelist() with on_stat_whitelist() - Add 'make instreqs' target to install build and runtime dependencies. - Handle ENOENT failures from realpath() in unpack_archive() (#84) - Only run the DT_NEEDED check for ET_DYN files (#85) - Update the HISTORY file - Add a [specname] config file setting to rpminspect.conf (#86) - Boilerplate updates - Implement runtime profiles (#82) - Update TODO list - Compare JVM major version against the minimum JVM version (#89) - When reporting public header changes, skip first 3 lines from diff(1) - Address errors reported in DT_NEEDED inspection in BZ#1793113 - Various word fixes in the rpminspect.1 man page - PRIMARY_BASENAME -> PRIMARY_FILENAME - Correct the javabytecode major JVM version comparison (#89) - Reset field to MODE when reading the stat-whitelist (#90) - Add vendor_data_dir setting to rpminspect.conf - Rename [tests] section in rpminspect.conf to [settings] - Expand rpminspect.conf with an [inspections] section - Improve failure reporting in the integration test suite - Handle symlinks in copytree() in src/builds.c (#92) - Make sure "noarch" and "src" are always honored as package arches (#93) - Update TODO list. - Formatting changes on MISSING - Add get_rpm_header_arch() to librpminspect - Further improve the handling of 'noarch' and 'src' for -a (#93) - Use get_rpm_header_arch() to retrieve RPMTAG_ARCH - Move to using libcap instead of libcap-ng - Fix Koji scratch build download support in librpminspect (#94) - Add the 'capabilities' inspection to librpminspect. - Renamed [vendor-data] to just [vendor] in the config file. - Implement an RPM header cache in librpminspect - Restrict get_cap() to S_IFREG files. - Note the licenses for all of the dependent components. - get_rpm_header() pointer fixes - Implement Freedesktop.org icon lookup routine for 'desktop' (#95) - updating imports to use libcap, matching BuildRequires in specfile - If vendor is not set in rpminspect.conf, skip tag check. - Handle upstream source adds/removes with pkg version changes (#96) - Boilerplate updates - Improve "Missing license database" error message. - Update TODO list - Use xasprintf() instead of strdup() here for parameters - Begin the 'kmod' inspection for kernel modules. - Typo fix in src/rpminspect.conf: s/not/no/ - Remove some memory leaks in librpminspect and rpminspect. - Shorten -l output, use -v to get current output. - Remove -x from #! in utils/release.sh- Disable jq usage in the release script for now - Generate a complete %changelog block for the spec file - Force overwrite of generate .tar file in .copr/Makefile - Run srpm and check targets before koji, pass name of tarball - Add utils/submit-koji-builds.sh, which drives 'make koji' - Genericize submit-koji-builds.sh a bit more - Start a .gitignore file - Changes to the release and build automation for the RPM changelog - Handle int32 and int64 size results from Koji over XMLRPC (#61) - Make --copr mode on utils/mkrpmchangelog.sh generic - Existing packages that go away in a comparison are VERIFY (#59) - inspect_elf() RESULT_OK should be NOT_WAIVABLE - Refactor strprefix() - Fix a memory leak in init_rpminspect() with the javabytecode array. - Fix a memory leak in the license inspection. - Update release and build steps in the README - test_elf.py tests that verify passing tests are Not Waviable - Build package download URLs correctly, drop use_volume_name setting - Clean up rpminspect error messages when downloading. - For fetch-only mode (-f), default workdir to getcwd() - The new libmandoc API works, drop explicit 1.14.4 BuildRequires - Add is_text_file() to librpminspect - Handle multiline results in run_cmd() correctly (#59) - Show diff(1) output for changing upstream text sources (#59) - Adjust run_cmd() calls to match the new API - Explain how the -w option works with the -f option in the man page - In REMEDY_LICENSE, explain that valid licenses need to be in licdb - Fix some memory leaks in the license inspection. - Add a [products] section to the config file for mapping release strings (#68) - Fix json-c memory leak. - Small memory leak fixes for the product release string gathering. - Trying to get the automated release notice posting working on github. - Use printf to build github release body text - changelog -> ${CWD}/changelog - Make upstream spec file include the changelog like downstream. - Syntax errors fixed in utils/release.sh - Escape newlines in the release body text. - Run the release script with -x for now, for debugging. - Shift things around a bit in the release.sh script - Use jq(1) in utils/release.sh to generate the JSON data for GitHub. - Slight changes to the jq(1) commands. - Even more small changes to the jq(1) command. - Do not build the spec file or SRPM in the release.sh script - Correctly generate the git log entry for the release. - Edit the release on github rather than create a new one. - Still working out problems with automating releases on github. - Fix 'Builds have different product release (el7 != el7) (#70) - Remove unnecessary free() - Shorten the eu-elfcmp reporting (#71) - Switch to using a BUFSIZ buffer for getline() in run_cmd() - Expand the get_product_release() functionality (#72) - Detect product release strings correctly with underscores (#76) - Support SRPM files that lack RPMTAG_SOURCE entries (#78) - Handle subpackages with different version numbers (#77) - Add support for Koji scratch builds in rpminspect (#60) - Make get_product_release() even if [products] is missing. - Drop the extra strdup(), xmlrpc_decompose_value() handles it for us. - Update the rpminspect(1) man page. - line-buffer stdout - makes "rpminspect ... | tee" behave better - Clean up memory leaks with the Koji task handling code. - Add a SIGABRT handler to rpminspect(1) - bad free() - Change the task member of koji_task_entry_t to be 'struct koji_task *' - Skip shellsyntax inspection on source packages (#79) - Fix set_worksubdir() TASK_WORKDIR test (#80)- Drop explicit versioned BR for libmandoc-devel- Fix a %changelog mishap- Complete the tests/test_manpage.py integration tests - Add xml inspection integration tests. - disttag inspection failures should be not waivable - All RESULT_OK results should be NOT_WAIVABLE - Expand integration test suite to support waiver auth checking - Improve forbidden_path_prefixes results reporting (#59) - Add a HISTORY file explaining a bit about the history of rpminspect - Use lstat(2) in copyfile() so symlinks are correctly handled - Fix a problem with peer detection when comparing single RPM files. - Stop setting whichbuild in so many places in build.c - Two hidden bugs in inspect_elf.c resolved via the integration suite - Add test_elf.py to the tests/ subdirectory - Add elf_ipv6_blacklist to the sample rpminspect.conf file - chmod 0644 fortify.c - Reformat a line in get_elf_section() to make it more readable. - Add forbidden IPv6 function use tests to tests/test_elf.py - Forgot to add tests/data/forbidden-ipv6.c - Add test_elf.py test cases for DT_TEXTREL on 32-bit architectures - Use headerGetString() throughout librpminspect - Add some missing free() calls in run_cmd() - Use string_list_t ** for user_data in elf_archive_iterate() - Add losing -fPIC on 32-bit builds test in test_elf.py - Add get_nevra() to librpminspect to get RPMTAG_NEVRA - Do not output Waiver Authorization for RESULT_INFO results - Call rpmFreeRpmrc() from main() before the program exits - Adjust how and where rpmtdFree() is called - Use the GNU version of basename(3) and ensure we don't use the libgen version. - Fix forbidden_path_prefixes check in the addedfiles inspection (#59) - Add missing free() to inspect_desktop.c - Simplify the is_valid_license() code that concatenates tokens - Simple Makefile to drive different parts of the build. - Add the git log to the release notification published to github - Fix error in the 'make release' target - If asset ID cannot be found, dump what github returned on stdout - Use jq(1) to escape strings for JSON1.1-1.el71.1-1.el7rpminspectrpminspect-1.1AUTHORS.mdREADME.mdTODOrpminspect-1.1COPYINGrpminspect.1.gz/usr/bin//usr/share/doc//usr/share/doc/rpminspect-1.1//usr/share/licenses//usr/share/licenses/rpminspect-1.1//usr/share/man/man1/-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=genericcpioxz2x86_64-redhat-linux-gnuELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=e23a8379c90cfa641705c4138665686e2cfd4cd3, strippeddirectoryASCII texttroff or preprocessor input, ASCII text (gzip compressed data, from Unix, max compression)RRRRRRRR https://bugz.fedoraproject.org/rpminspect?`7zXZ !#,H/{] b2u y-iSq^)x}eG-A 4U5щ"?͟_*:6{6n;nO>Yܘ4w4 S/| zdmc5VW]?.Q\BJ\~>_T~WKluMZ T@Y~j3Zm157~&(n!r"s~o?>U!4&afb/:wYPu0h@8ĊW/HsZwFUQmb-? *5o_"v & ɫ"gEO4Yɯ9}#F\G(ΖE+T[WH~YnQ}c^yvt$b׮KճpUHcOӻ}hH:k':#aq v$6:M{/|^x> u*}btCs^!dR#Z|Bd^%qy6+/l%̏^Z4v!u }Ĩd*/Q,2Dޏ&>Ҿ}+oHl@3Cd`z_4W"QGJU̱O`o6:J0ǀ؝t6pikD[jÒ/L}.I t;{F2!6*҇o$XE^؞ );& W:j7Uh-=v)ʸ %[?"wY ^V.%2P@i! NBs,bS295-g t,T Y?m_$|Vٿ~%uatzH0iNébmV/ťfsgY>$0جŠD ~`Ӈ˒C9z-AqB}"d5P +N@֧!&m_MvRl֐iS[T,.^Z\Ϋ8 !Ld.Ljs9YgP_Ie$aNÖE X9l1IG92tG\2|& /atemCqſrT8!Zn 8/'kfayx;Cؤ*!-] ŏm8i9ƌ χ(Bj5x<Ǝ U0jKkj,$O\u}6g<]5s<5Bȥ6=K8VbB$q3$b`xBwRlln(x-'"-Ul #M |s =.k(Ffida=[.IaX27Bl[_M#F~0&8!^B?3puBy[ŧB] `\3E$1#=n=h!NNH9ҽjcZ8g6.4vlw oVu,켿Yќ$NK M"-,NM/0ɷR}^YN#D?/49Ӓ/rdrz;ڀ  QZ$^b(f.pKIF/ y$|9&^.XQ7;G*"{=F\RϧU<*b#-o @?l#8Y@gu >ۋ72gTFF [XxX1HIc!cxݘ~e'+qj!Tmᴱ*i<*ege"VYi$9E@ͅ n/oƒQerRL(>]S6qƒ@|Vѵ֜eK ^ZH,$y}h y[( y0@ٚ,A ~{9(f䔔D{ASIDE-&sQ⣕+f!nB+tPy^v!OFB~<LsF,:XMbfm3ڃV<"6-D=9SQ_WUTiW(/KiljX1Ws|hqiT@gta ޙu>j.ٟkvy.9*YӭvA͗k%l%n8=?qlƷ 60>:{sd|-AD<-ӑ/ B?z! qVm~$vz*o{ E귮?K-ˑ.6PհHb. z[(=Iiv<"u+"V]YZ J>bҸ}_[P!'QiN^x4ŋR}t a{P])w<Jxz8R+g5_GDꕲB;vL29Amo _e9<$C/X`Lx$VNJ4xЛWbfx L#Ӽ>?t;P^.w^azi; RGb H%5>kLzLH|KnU\KlIDC2*$!<ɵK%M 4 H2*wCP+e& %N3 %BxPI/Tu4hޜEHf"lI(Zũa _vލZH63B(UW!k~^dJdp7ɨ-N>=GBk^%wQg"]%TB esjjzڅC1+3mۖ7ǝil'ִ"4Nv:i!e7L=wjI-H'W݉i[<0iR XxF_I+4 M_8;SB1jŬ †\}%NnNXWatɿYG;Y`GcLtC9jґPRGoO}rYa,l6jH4FZLЄpO\mhhY@oq%+aQxNll_al%[5̧&}׮ظ0K[֋7447ZױZW1<  ӾeH{oU9U8cr%|U6L&W̫VUm\BwFIWW럣C [6jE+ rM|O ܬD&&Q/aWy4r"`M7 gnȸA/{{RhO'dPϏI;O4}f"ྩvrOMOzPn,Q&sJY}ȭzdٲCS7Mc ^@rʎav-w)TpNz2^sw+sOۺގsVb~=P$#m 7{3/8(4ŇZy:䇕6AGL5p{w[砀}@'jC~^yt6Uu}N+}tsA;lD@AEBE} V&Β^(/?=ҮF~^7sImW\Rc)=]wӞ K_p 'g /'K!xy_Vur"`|Q޻lFƂPg?t~7kSH$.>gPSPv_}s*jR*pcnP} Rh/{sY-BU,&zox*gE"^f|@e~M];ӿS? E<7?=cu튩5^yeMC2wWT]'^#Bƚ\ q@8y{{ym4~OEW Sese :1sߓ 76 Wx]2i+0}%%XBumpC*&8otӢܱVRlĻd3OH:"qV_pNY+S=70bb(DI6iKE.Fᖒt5zR> @_#37 {8kJ!j 1*Mt5:h(Wq@#qz;bk oV^lmr |Fڵ=a>h@iC).QkJ荒FId7@4[C|ՊD޻yC, Q4!b8BʆCZ8/ ]x$SLc< ]߇ jvQsE]SjG}\-Q}; d& hd ; [](rTEq1]-Q~GwFBb$(ڨ薫& 2ǁ~GTy^A'Q5NJцɑhfv@: ĀzDg&^p@i$SOi6JWUcUa.&֩UB~O=T~mqQچ1]H)J90CO,f1H`bg(q#rkrK)5| A&_n6?veK_N]}ܣN#m4@:v#F a#$Țli5wlCZxzl@+3* >ϭ`**δ;%S1tvZbAMJN% x(n\P{qruŘLl?e]$z}סbRJB!N0'5gP`:xI/:G=tRII?" Td-!|6pެ"dSD |q: 0/ "a9;jmiJ;I̍J>;5a@| ~472R~W7%UɳgY/<7fir^mv 0sLIRM~)ۛb#*y~P#N _ tM* 1ӗ8U;iH'7T]NQQFhqbT64T-= QٗXϦ7]{!889'"*|q* Q2 0+$z#:@=CZIbsχ5+{oh $@>IҨ '9E8Kn8LVkh^}boГ;~-zxu2!^U]݅@{Pe=XPKN:E"ؼ6 [HןRɹff!6"Qt)h_^?`* Scnȕ::478ЄwJ4ZXw1paQze[ƥoS(^ d]TO2@9&]%bO 3KMx(ֺ!6)͞ҍTtl16J7ZOzEnß}$2 WR/KsQ%M PKSsdej H[˯Q+Sqʂ2+tZONpzde uOۈȯl5z]b.v~y SU EyPzsc4YQR? ڠSH(E}.:aAlNđuaTU!u "V Ň0흱3:,ʶN8k5=BLen,tN@YE_r2FXVEJo81@;~ƙ :%ڦz(TlY_WzxxzmvmcҘs $rR*S{ s"!DTBEIhA yWXf܋`7Kx"&>!YpRI8󺗋BA,p5qÁpE -_)Kpz-ǡEf8T `37^X;s6XQ>IR$7>M3Dr* )n^8 dZVUD5(6\t+ M05+{8y!61\vJiu} 6k)F2uz0DqZhIaT|Êq7z{14[}7bء 8+ #ᬪc& ^:kG J!J3Z3ބ(|cUW7 \+B}_%1:pЎie+$Rh)&?!^XZ+3%4̱(NlJ#MPH|2)}?38 g?#NRƆNw6Х> g4y@cKhtgczAW^0W QFAlMzj0" 9nmgGL:\YBybƴ-e*-[ (S"}u9Eɬ?MvZ$2X) $|6E8SX>70,FU4WͧqYMPiȲÈѮ-/6`kq `G>)5!VtՓ4@'&ցf뢭j&N"kF,Z<}΃TЂ@a~5n"tHZd4zIJgsn"`ٳ8p4fH:wmhSL,mX% ERO ]GJ9$zٟA[8RK Z0A䡈7وNQ6-,)*rٺo?Be3wNR b+YPkwg 5aFA+X)J8j$BeEFNtB0%^Z׿Y4.AkAc-7Z_KȮظAp"b)&=A b Voxx_:$i7Ѽno6R <\~^CkQ(g\eg7gYR} $ UA7WB`˙+y vWq %)ߝy%o}YW 7/KCLb\Y~"h!Y5XU9Cz5SWkv5-DzFmdͫ޻`ڑѮyI!\7vؽ%,qjAiK>$d} m?*R^E82aF} *,z[7Kv O" )R7H!8ryK;^)j-CS<o:-GHzoil +﨔fk6>Za fEi6.%yU-i2\$+YU֔I4祑U_!Oz"dZT=JS܉w߫i\Q„?#['DZϺ|Ac6!WQiY"=in oz/ХWqeM |yBIA9uLCK^U.fи-˺>.X6;B>803%?DGrL9`~ k-U*^s}~ F{d7A )~2FD[D"!$Aa5B$ &%xPP"9#S)_ޗxPmj%P[<]$r)1fY]5ne xRUK+$٪p{qx w+^9^ΌR[?i9BZb 3醄vzgfCd,¸\|gR{ǪKAq@ȳMmg>X,UJGˌB-bagp(C>A@z~h́8@ Sn&-ԟ:ٰNj5BrݦPx.?q5v=i׹6 CLL %] (xօ}^ޓ Q#-.K"2{&>F C4N\/5p˺y@]_@A\S@58͝h댚x& ur'W1sZhT QٮD餺ۖYC$ zZ 1: f4* 9#1Љ t ]ɃWsH9| w63Qxw9Q\^hOpp1&o Fc=e:RQB@;֣E gSb"/3[kEqjD:.~LwjnW9GN,=% oa._<l*s&HGĞ|Q|&R { >'Շ`U^Lr%D5w^c騕FJX{/xRBFYNfZ潀==MY|֕v?U0*%|08DP>>׌37J3E`V иSbJ|iM ipgȚ4sLTO*tV~*YN'owu:"1#h>/c&"TpnZL퀫;p@][ڕIn4(P6fFfak.d4o0bl^ѷ &h-7:F.ad%y-G0%W@* Wa&2ʼuwYBz,KӔX?fY,Fg6U6\d}?۰Ӌ[R n)`$ IgP$qz>+ YNrztY\NBk7{悚V1]"U69vBFYr󰁭ܷ_|ʤT$SsM2+EG]/v\}\#WV0u dxa@^ ;u@:J^ O[jgݪۡLEdٷ`~li(Ju~ o=MHFRۭ:Lê3?@k.S`;@۽ `ȾDrLhGkafiJҏ;@ȂҊ/vF9xӌAEOW2l*z3Ӧ)/[˿;r`ѡ5 /`OZ8m;!Lg1M'v )6/'fl}u2o1C(X}?(ϐE+1b_T0#5=e:=yMe'jȏ -#V $阊+?- A7ĠƂow41W<xZem %L\lio&RFּa轣Ԧ0EШ ^XIsGJ,yv-[Mv2{B@i^\mji >Y}F28 >jzS=# 9ו P)yvAASWߌO .s6.LN,=E"#&طim Vd84X(?x~MN1LkX"}PJVyhhyɠ(.{1Yj >mK$ۑ̝[^@,|(KY^[xyu|dEF%HزQC3C#;}~$J#lGJm&q"|^tIʈUdcpaf}|#i="6#Ҕ4[3F4G=/WȗnBE}iѿ}uBl{RSCJe?oyr@I"@!H)Pn'&YA /64VW\RɇUv۟ݰx89*:`P"S+Ƈ*hW*&]el^x3d fZfutԉK@W8=^={lxMYA%)9<_ϴt\C9u $`Նc!&LY]ε$, ?b!̇v9K)"(,}! xY I["m{ |9Ӻβ <9ʕ}08Ⱆ40utSlY"7kY3wݣ-cM\#"/"+8Fa"[/ G;voY~ܴYgl=YSz˺j(PPsq?k߆׈Ly_d-ۀp*]uJ:80o TG]Wo>VûCG ڲ'/eѻDX^ #k,QFH댽®:9CR_,V:oc:81ouĕϜ- ƨ*ҌhS?؎O $8XZcQ j.*\>2mpmd9O}.~`%F3U>pўf%tblfesזkW^Oc{ xJ6 ^wdr1$ S{t p&#Hڞ[/82jXcFB1"ʀ`Zs:8SN4"ĉ!HH<ԢE?ުM|rXfs֒> ݃{3y3̬rL=]|~CM1'qVJ/U2#kCy(>0b Ilfd$ #vi#,T@uY5\jNwXF[kh5TKIn$ }FL "2I1k˚.g5w/IRyV~ ͩO,U-GCMp<5 T=}3Xʁ#WxU#lijě$o84Got%QCmJmi]$~#ѳE,t/^HJ3 ~S^p7ٺ0SR5 ^&!wjU_OqHT6ȵtaT}C{5ec/6]JuG\#`'8Y߆l K&' i߻p6~%Ž8զݶX4ʎ(dܽi'!i\aAh:F?-~umIt]+ `?9Y" vn49*"S;{!3WHk.2nUe Q=zWD[fl=d%7gs!oV֨ hK@d3 ИYuu:F~ :hZ^RO9fb: *at cSOiH#C2@"tFt`f:8=.K@L^!" @4^v6KQp.F@9 T]DHɕ,pp(MCJ)i2`_ӎ1F-3 |>5%t LUZ;<=yFT\HtN#* ǟx@ L. 1k\ Ti4Tk"IsږŸP4R*x4ol. 7IQ,G\ΨVwu~܋'S)qKT*!- 2MBcU^%PrT50OQ"d!c:~ZQ"mDJk^t, I.0K7o/)[Xtam :) @+bC(GJtUO=K ?[O2<d1~>o$DǤ[!!Tk>  x9ÚA! mZO/N`YуO+bݱ-S@eQI6?U?):aAm"P# \3 {f~|gL 'xzMҦQzوZG0d>&bEE&؂9^K~Vد۟l@HadGחN L?rG-=N倞 ʩ]mS/ުaFb;=Sʴ;$+K m ܆bΧ 4woaKb\`2&w皳W~tw2(!;)_wHqd뚵\Z .9jj̒/̱G-ssľ6Lsy[4@+}^I3~+V77$kLZ6Of0'D 1+J> e)2x !ma%#V:tZ ENuu_% (G E:7]r#/p<ÑzD (H5~aw25mp6l*u kY:B6-^6I)LOJ^'&awQ_q&8=0O}uaL_cPJl)0of jSq Z/rl! Zy1$|g[#8^Dqd.vDnYK36y̦v#þ a9'wzS7E?Ϙ1UGTLb:|A!gWf$ $SVBwC6`v WA^;_.ID;Ki\Q[G \VFs_mqQ!Sr7)z|e]9O%@Rf0,z1U0C[J#azSEūJ VrѷL6k I<9<}3o⛸A/64PB R1AwZz3l/{K Ke:VG?M"52m0KQZF'A @1D%ϗbbA_C F9H~ߜtC2-<9NXUغc* O7ly' }!ݳѢH7yya$woOu  L^1XQy6x]c5Ut7WU$<w~s Pb''ʏBTn}D_M'/%EǨ>QJ0 zHi̬ԓjCLiϺ"v{œeb3+"k0]TxKϚ B8%mc!W];sєj}=v=$GpiENA!u[X}NJBbӗ!bbS/gbŢBUiWC^L iқav .\v c;40X$ho~g+9,_և7@r/#b)⡿y(nf Q74hz"Jaie!,9>}T"(s"ȱQ4#5>.a2 vQD[\+T%dj~&|fLp>a Zڜ(B:/9F br[bg4c&" [Hz`fIySZz' q\CjP=;$>@6C^}T%]ߍ Y|uR b[Co6CLH OrDjPzDQt! nc7tJxܒ-f v3n;P6ZZ{1"-S[X-})^,q3Ɗl>u&̎M ͥB|txQF,& EjfT}@s4UIj 83fgn{Yi~ۄ&w}Ӥhgu(?XPoN^εN1( I?ߊ]yyyKS2&/szMA9ѺC1z9N/πEjuS>~#Wv”sEJ0tzL/}P|;cWuF!;q ;wXK<;+ fARiM^N/k {ze~iJZD桥G ׃:hxd g] ޵lt,AEK.;@2B9ONx|3&BD}1PlFKN@ZQ5T1HMS)tل.{Q/DR2Lu`d?I 8|nzk#;Z^r}r&H }4^xTopGK:bq5b:/P^cƲ(H=TcVB乙qŽyZZ R}F~Nx *lC#`#RU*\Ek6n&g#؉O')—VPͤ#.* >צƭ t(04lhxp*EUv ]B2)0+y~ӧIVA٥#P)V@؍-a|;(&)1wO zdi8&'' @.vN%0X\5Zaa4>tf:51Nq9rDqe,Rг2)m9?nP% zЙ5O0rk$\8 +6ZbN̟-\r^m`oƴ 4Wp.*ݟIJҙ^sa?y/01֧k0[5gG&ܨ>=2{GK% ~b"9!Omfɍ55 /xk^+=݅ (/!| MAvCY+34͒`5b[;a.l"I24(ƘFP q<䰎#6lثvs%̖ #ߌg*糧Z% W4{c1kYeNp'Ok*2Fo}tn@ѓ 88U ֽx~d% 0NbvܜǞ9#|63Օ(".J`F{61WE\aWUiA$>,̘no%oD9Cl:\^L&,R3GV<'_UfCq,)M*Eȸ`XݞS#>b^R#Mv0Ӕ5z2ӏC/7q Un iMӾ0Sک1*Yq|- 2bjD>\wM0d| s/cMYM"s|WT@L;I:J^7ǐtsYK{k.Hy1ץJ4iK;SKSLᇗ[b :$k5y"פ*>gyOwtockV!BmFX6Hsy)hֶPC7{1 yg8Qi$qBLn;~آI&"ZR2?jhHY[!:W]c]XEǸOL|Ď^|"a.Hu<. .~o= ĨΑ<@|hWO!nDH/³9hm%:?eE%u-dG>* r|w.\#ͻ/2LD^KT,/i rjc$mEv"ݎ5KǺ<01ucAne ;BU}% ZZH"C%ъl!:2R 3{rUv_{Y=@h=?8%UCpOл&Nh.`Lt.V,"y%{zԣ8 e6t^;Mq4rLO$$y w -CR횪{]=_PfB!<FW#C)ףyX>\N֊`WZyE- y!0^W`À{r(=(FP:6a8Lڸ ';d5,ċ:^)ZzIţi*GNtU_VzYXm5ܧLtZ|9Ioo0E]dfqjrZGll5I搝tUja% E9\ә ̦ sTI>3۵erz9Q|Ŧ~='.qHkU?$jk joS*#Ũ _e@Q@<,);cR7^x2kCVKBjWʠV 9HL++-ZTN 0uY"Zh$Mr9J!u; iͱIUOqPr;ImYMҽ %ajȋ]߄ nCv:L29K\CJ~Wӭ<\fVHbH[_dB㲦kx31oj=%/b nfgҞ["DV]+/SᲤcs{)SQeCmA#QAG%=˧c̸i3*?keJ8@a: '‚(U|SMv |R;q_g&?hhw cHsvnP]e ܆`Ϊi忢{W|eF˝ `(:g)p]T>Em`Qv$Z R!v_L3U^ On#V[Jrh+#΢>'=~-0ᡋq [̼mBsl)j7$ &8n;xEg2Wo']A8Ah5)E:l _{5 ^&୹,x)-]x10BcE7Ћ2M}tv$&ާkO%^ @]e<])=?ȥgW1t}v,>iO^~u=zxvIݍ?o+_GuuK>9ø?t3-X㏟|Rxp]_ 4~$>_9uxZ@N\{fwh jE;^Cܯ cR}g%mkHd",mPAzg(/w>D:]qk/7/1$iP$[5Le0{zƬlA̳jd31y9h_Y<i^`]ݚe\ !o%+Fvw^3y5A&8&+̦+U29!Ux#5F=gPԄPKVHn[apg: 'WE"tuO5]t˄ݷ-ZRHSNNKF{bz&$sCfzȵ}ah(=ё+ Rxiӧb?'Bc[;tGa+'$N=%ܹ^_.zФ 9 tDLX`~b*|!{$WJ!I#Mϔ#n> ZSTZ}Tb__4B{Zd{g9)2dv8*ohlm 98_8^rRab&8/tm5zB1ݭMcB4x_͵I%/M|TzCAș9'W2k9cXZ|lί>j↞\2/N~o$L#B8Gަ8|Pp if`ޓ{_eWR4f+@b)҆ղ'kd+ێ NFS*a.bY֕8ևwϰ'&z;dl&RVA̙9֯Ut(fB=,7w3;)ؔ>9Ta> 0<ԣN,pW:!)Vp-J/b K c]ak<@؊֮y"|z5ȧ4G q>](t T4,DL&p;'\߱ L _It2:GQ^/gōF<e@Q@72YU+PyZ&ǯ/ .i 07z;.BiS(*-=h1OjmCmO`x7' ͗iGӿ:ڹC90Z gb٪5ØJ*9/? *~᥽_4.Qlv?/FRwȤ V""Qv:O\WOKa /6\m;X >#Vɤ6&Of>3k(>*lAc r+ޔ7"gѱ6ÏD_:>CNpC:ZF#&B \7^5¨q܋סٔyUwV}fжx"-'nj;~‘q̖r@K]^bGb0U 8q6%hYr)ѻ1jf#-jsUш+h.>nt^?=ƹ6~GʣT # Q-NMZ&++0rsm>䒝oz HRe|C6Fž#SF Js>ʡNCea'^;^"<)yG\a"M) %`B ǙiX2q uXW#+U0 Oe֡ղRI{ԴZv>Ed[J*# FqI, `)%xf ƵhCmFiMѭtplo5}ey3ܭ͍̱e@g0r-;2EQeyYJ^TBEߦ>ê{dpUqWAc\ǹDk{u;_V$|+JT=M0t? m(f/YZ-^@L:0QY0!co`v(Q MOE`ȼUO ͬ͜Aq0=?eK(V7);mS]{.:(J+Ji=qlŗP "t=( /9,@0bcܫ ^IwSu }%lhJDyDZVrZ" 8 MJ}#JFX< K/&4R6r@4Ƌ.q(#=3S~z[Ʉx?cOYk`&##rڿ^"9>0@ HKi k`t…g7NKDY8(sג' & ;۟^O⎮SmvW ؟^}}jm<8~YBpdE.%{/}%Gڰ=/TDR%tRWLW $pn˲|dJi΋V3tlj~Mup)`IiihTlSWX\MSԘpMCB<͇rUR4گrЋ0 "fm/ys+^ <?:.{eprwj#$_{x %dIdHHs(P4_/23GMr!~5h6t!K ڭI>NvK @Oa \ZJ٭q1X*4\w)xk[.@yo{ɕz$hbݲ@*I"V?N}dSZ8-S c\6W.W1ɬZwr0{dbl)GUݾnt&1BV./ʪ13'xeuHXgRE&9/3q TYI}ph,ճ8W>[;)}n:0@V|QsQnaK+  W}ņÍf+.6Me0t껮_n.hY9saVY|HSV"Ḇ@!q[\Wr3[Ŭ^H+tW@}dBt,ԦUGpF[(k8~yݿy1+}:\˅v];, +sny3D\ ms.Դ-natx56.[G9S_1Kt,>mGE΁7烬@r, 霅8On듷I@b},) ?u 1s2#l5&s Y)sc|4̛u j5@x@nu˧{<_@DQr|҈Ty+t{6RI@b1JHEP?;ò;+قZdT~+}8=S/nQ! nS2^^>==#꠩l L蠷2K1X>u/~63(_@LUNL9T<; Hˉ=8*B F .]A%G~I޹afTstO=wȢv@hڷ̪bm/wH'trK df5{/ڢflnt7ۄЉNPEb̳zU4׮4*^=gA=ޞJ?9-/$`R? tRGqehpH#{Ga‹3E#$im ;}y/ӶdO7Ppv疃0gZ7nEw .s<+p-OvH \ĵmn em#񃝈\g juTa40B6༛?>/%Ҧn&J3VK`+D:^T,+w q;pQ}DBVOF}Ž<;jd?gu@Y7Jד@f[&Ms}\z[L@A Y Gr,D>_ȰA Kt*ok)b\FUi8 5뎺Ppe6¶~&xSpfOޫogHIYe}d]r*Vh5uI™n__sۿ%n%暋l w 1ysWf!O qZl'״-v=qV*1d#OM8yM!1:e̛̋Ğnu[3U3Dl q3<HTUVCL$Ǵo-ߎx^c7fl!5muoIԽʰ (

lڒ-Y b^gK'?h\*? #k x]\6,!Au`f}rL/$;LC*u_;Nv~(L-F15wF\O/1XPa:v杷.5c+=TԃU>hq(՘o),7@'b6i)NыT'48c q]Ѹd96⒤]ʽ@,\U %d,/t2y,P$n{6GnJ7~XTXFU,Fy87J_ ǩD$9u$7S+ǫս4CWeQpDO\4YkD?Qhkʜɟv~rm6=.XlTP,S2_槨uX u Z(r4 rP/ (ըb-->10$4VnYQ=v<`lkx>K*\U&glnBy-lt)[i!.*ԣOEC;=snJi1SHi2bY] Or1Y7w"\.|x$81Kw0Џ'73;Օxف@$p ܞBuɂbB_hkѹp6Z_i]B2~S̺0XBEՈXۼǭѸ2v.v3}L̷(l5fvUoUIM=G E.4^!Yf"hloب8 {V3kzl{0YTyԐʜpNr^&Ș[Cmֽ SJ= 2ۢFk4-uq0KHť#byp&S)fYba+/ΕY&YNao|Kc^C&{ׁڬP5qRS:XX@B?Rp)3Fc_u4^mWj EInU\x]%".EGЈe<'\K QZ(>n(kQo׌A3ex.Ķ"a>NBAlOm[/qcA1r*/{a .Y } m1*T / z F[AJ&3Z}! Epkbȕ` ;r,evnz8"` >R"Oc~v?( TMKY%x69ˣ{:(2YH8qZ5Xvs XaQ_-rhfHT2BbB+QŢBAB" u4ѵ Ds]N VrIsة,KǶﰪHOzO@E&ي u|Aoe(Fhk,-G:q5? $UgS`2e=vEtacm|@70~d ն4 ƆFUI']B e<ȎN4Gs+E3?Es.*,m6IRPFP`ݔEcm@|V+YU ;|Ի"5_GIp,~#9 ;3V kβ>.]]t}zrE,HÅO}uw!OS|岱°.%Ps9`@@P0}[2qNѳh\ Sr ݹgA1)?s]ALn)P~{4O2$R 'Ԥ` 4z:EQzy'F9~pMaSZΆӭBk$+L1/ȼ@h\|jC@ı_D9[6 fݡ3n[Onf1y"},',R?V񾉓2Y=4[<2<:UBmzumN@_%PynԼ઻֧,>/H=2Q-N9}dz&vwƩt*Y,7u;)KyU(⩙t9`މ `Z$>bD-K]dJZUm=g\B!JЏw]֬((SQZ\%7)Fo\'q3ۘ|ï0HoBKPEܛRs'KJni,%]Hdو AVxЪ9⇰aIn,&!Q/,T lHhZkm7Fd,A#lF~52^B߳:H¹er\q*^5Q/q]lx<،% x>%bZJew'}6 }6ewbX0V8y4l4&WztPѢa>EHX};YsL Yvxqיɝ=>xdaDw^g! bppPAA *6 }aճ$auvIk yg5ǎ=Z;5j4isҒA-N7^mʹyv##l4f'HEɎ ؎]^C\ gae&1,Dy&̀MZ f!##YaPQcW*m |E`-E?*ICV-;B{LVS%w:N*j /MT. o3n TԴoImF28w*)qQf~rdLI F͙z.E9y ctkN&Q* T<iw^C6_ 6V6eVzܠuL@Cv0Y}4<=-RDV- <^ "%qlf>sͱDD4|q YZ