From patchwork Fri Dec 1 12:14:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomas Volf <~@wolfsden.cz> X-Patchwork-Id: 57175 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id C3CCF27BBEB; Fri, 1 Dec 2023 14:02:50 +0000 (GMT) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_ADSP_ALL, DKIM_INVALID,DKIM_SIGNED,LOTS_OF_MONEY,MAILING_LIST_MULTI, SPF_HELO_PASS,URIBL_BLOCKED autolearn=no autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 4907227BBE9 for ; Fri, 1 Dec 2023 14:02:45 +0000 (GMT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r945j-0003le-Uq; Fri, 01 Dec 2023 09:02:04 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r945b-0003je-IS for guix-patches@gnu.org; Fri, 01 Dec 2023 09:01:55 -0500 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r945b-0004wZ-AC for guix-patches@gnu.org; Fri, 01 Dec 2023 09:01:55 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r945k-0001fI-0M for guix-patches@gnu.org; Fri, 01 Dec 2023 09:02:04 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#67557] [PATCH 5/5] gnu: libtorrent-rasterbar: Update to 2.0.9. Resent-From: Tomas Volf <~@wolfsden.cz> Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Fri, 01 Dec 2023 14:02:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67557 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 67557@debbugs.gnu.org Cc: Tomas Volf <~@wolfsden.cz> Received: via spool by 67557-submit@debbugs.gnu.org id=B67557.17014392756288 (code B ref 67557); Fri, 01 Dec 2023 14:02:03 +0000 Received: (at 67557) by debbugs.gnu.org; 1 Dec 2023 14:01:15 +0000 Received: from localhost ([127.0.0.1]:55316 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r944v-0001dC-Le for submit@debbugs.gnu.org; Fri, 01 Dec 2023 09:01:15 -0500 Received: from wolfsden.cz ([37.205.8.62]:40218) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r92Q3-0004Oj-LL for 67557@debbugs.gnu.org; Fri, 01 Dec 2023 07:15:01 -0500 Received: by wolfsden.cz (Postfix, from userid 104) id 64A792615F8; Fri, 1 Dec 2023 12:14:45 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1701432885; bh=H5EF8pyrKcUAtHuJ1riX18JgKwz37DECUL+OEPV0obU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=DGTrhjU4nuI0raGNSUphGXtcEMTRrm6s7HdlTyBoK95tN+OZQ1xa+Vo/ajjrdWBFr 91aBwAsgmalrTHsQh2allegCwfq9EdKZCQsQsRIsnpCYU8/vuJv7LmnaR5d/YuIeQ2 Mxu0kJVtyQW/UvdDj0IUyyXgx71xYMIGkI1quGshAeiPXvSx96vj7VaTKKq3aALZg6 LmSTqjt6jDwES6hFqexZPkOULZje9h9EFObiO/6KVehi/8Guf+QR4nQcJGyh49ayzu fSu0Q1Ab8GlcGk3pdmQtY2AYlPbcP+C2beJGG6rA1hUXRUdo/Q8Qb6LWBnms7oGoeo EiS8OQjvfsVHvKS3gPq3KDORe/zy13SQX5Et8jiF6orpDK2DTi2motGgFTSE29EQE0 COZQJLi+wmVey9YSMW9s8MkKvVxHGvhPQvi2OHuGWlZPcD5yo4qqdb8ZB1BY8b+488 W/65rOVgVq5OHZ7Fegls/mgAraJK+33cB1dCcLxAwQ0I6fyiJ3W1n9/adPv1M25lzx +WS40SXAVk/Nq5pjuV8jx+vbcg77wxYMxiz8tJNNCN3y/b+S3JiSIP+4qOtMNtfS1x LdtIsRZk2XjJRGka2NMbkOyvc4ncRkSMxryDvyBzfYxKHH1X1RIQBtS3HomaoeKEsM SkJlY20ik5ix3rNLshloOv+4= Received: from localhost (unknown [193.32.127.144]) by wolfsden.cz (Postfix) with ESMTPSA id C2095262701; Fri, 1 Dec 2023 12:14:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=wolfsden.cz; s=mail; t=1701432882; bh=H5EF8pyrKcUAtHuJ1riX18JgKwz37DECUL+OEPV0obU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=zC44+FuZkO2QBBXgAOsWSPbdht0t9DCTdGf0rFkxWUZe72mqDCRo5+H6qbyC6mtSc 9SRSJST0lIKD8QRmmtS99EGXX6D/A2j6c6fda3VAWjvYuagU7+4y6R3IHL3mVfLBGp i87NnBq3BtVJwV4m8vVfZ3T2VaSRl/jwnxfF88cNN3y5InoYtoUXLWt5Cxjzg1WlbT 4EtasAeW5vRkpkkh77GxAPfnP6F0hj3z9Smngn+zmsUbcjsluciAdmCqDainG/ldE0 Psv/4SyZ9Eur0X69C2xU/OlKOGzBEPPhFVAkJ7k8yuPu2HOqtSmNLBVgdIgUF5CWn4 4Rcf515f61/h9j105wUAOLyuNPXtTGQpv8hF0Yi25uwFCONosMhJBDlf2E2p/aVuI7 PDh+o7vzROZXQiu9ooQwOYBy7VZrE4ivQhrcCAbInG2UGM1xGRN+QeStQ38wd6pwQQ wKJkEZ7sTS8I3PZtGlH3/3TG6UneISfzJCWHAXiqkD953aMBcEiRzphDUaqfvLUNwD OanJsNdFCMWsQ0YKL1dGWQCiD2NSCC7Li9wg9zYM8qv5vfJ0nToY33TC06QiuvCvvB sRat1fT9TBu7+UF9ETo7zIP3BK9PyfIrWVt1FxFwjQjnK092iOxw9kWHxWBIKetiHE hAhnAULBbcYX+EQIoVZFhbxI= Received: from localhost (localhost [local]) by localhost (OpenSMTPD) with ESMTPA id 28cbb0d7; Fri, 1 Dec 2023 12:14:41 +0000 (UTC) From: Tomas Volf <~@wolfsden.cz> Date: Fri, 1 Dec 2023 13:14:37 +0100 Message-ID: X-Mailer: git-send-email 2.41.0 In-Reply-To: References: MIME-Version: 1.0 X-Mailman-Approved-At: Fri, 01 Dec 2023 09:01:07 -0500 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches Update the package. Since other packages do depend on the previous version (and according to their documentation do recommend it), the previous version is exposed as libtorrent-rasterbar-1.2. The v2.0.9 requires patching to get tests working. Sadly one of the changes is to introduce new binary file, which is not supported by the (patches) block. So snippet is used instead to do the patching using git. * gnu/local.mk (dist_patch_DATA): Register new patch. * gnu/packages/bittorrent.scm (libtorrent-rasterbar)[version]: Update to 2.0.9. (libtorrent-rasterbar)[source]: Apply the patch. * gnu/packages/bittorrent.scm (libtorrent-rasterbar-1.2): New variable. (qbittorrent)[inputs]: Use libtorrent-rasterbar-1.2. * gnu/packages/enlightenment.scm (epour)[inputs]: Use libtorrent-rasterbar-1.2. * gnu/packages/patches/libtorrent-rasterbar-fix-tests.patch: New file. Change-Id: Ifbbbf02a671f6a3db653499a7a5f2504fd23c255 --- gnu/local.mk | 1 + gnu/packages/bittorrent.scm | 36 ++- gnu/packages/enlightenment.scm | 2 +- .../libtorrent-rasterbar-fix-tests.patch | 304 ++++++++++++++++++ 4 files changed, 339 insertions(+), 4 deletions(-) create mode 100644 gnu/packages/patches/libtorrent-rasterbar-fix-tests.patch diff --git a/gnu/local.mk b/gnu/local.mk index a8142bb0f2..78b51a1c65 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1573,6 +1573,7 @@ dist_patch_DATA = \ %D%/packages/patches/libtirpc-hurd.patch \ %D%/packages/patches/libtommath-fix-linkage.patch \ %D%/packages/patches/libtommath-integer-overflow.patch \ + %D%/packages/patches/libtorrent-rasterbar-fix-tests.patch \ %D%/packages/patches/libtool-grep-compat.patch \ %D%/packages/patches/libtool-skip-tests2.patch \ %D%/packages/patches/libtree-fix-check-non-x86.patch \ diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index f9098b1a56..813636d526 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -80,6 +80,7 @@ (define-module (gnu packages bittorrent) #:use-module (gnu packages sqlite) #:use-module (gnu packages ssh) #:use-module (gnu packages tls) + #:use-module (gnu packages version-control) #:use-module (gnu packages web) #:use-module (gnu packages xml)) @@ -416,10 +417,19 @@ (define-public mktorrent (license (list l:public-domain ; sha1.*, used to build without OpenSSL l:gpl2+)))) ; with permission to link with OpenSSL +;;; The patch fixing tests contains a binary section, and regular (patches) +;;; section cannot handle it. So collect the patches here and patch using +;;; `git apply' in the (snippet) block. +(define %libtorrent-rasterbar-patches + (list + (local-file + (assume-valid-file-name + (search-patch "libtorrent-rasterbar-fix-tests.patch"))))) + (define-public libtorrent-rasterbar (package (name "libtorrent-rasterbar") - (version "1.2.19") + (version "2.0.9") (source (origin (method url-fetch) @@ -428,7 +438,13 @@ (define-public libtorrent-rasterbar "releases/download/v" version "/" "libtorrent-rasterbar-" version ".tar.gz")) (sha256 - (base32 "03p4nvsll568zlyqifid0cn135sg5whbk7g48gkbapnw92ayks7f")))) + (base32 "13kry578ifzz4m2f291bbd7v5v9zsi8y3mf38146cnqw0sv95kch")) + (modules '((guix build utils))) + (snippet + #~(begin + (use-modules (guix build utils)) + (invoke (string-append #$git "/bin/git") "apply" + #$@%libtorrent-rasterbar-patches))))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-Dpython-bindings=ON" @@ -485,6 +501,20 @@ (define-public libtorrent-rasterbar desktops.") (license l:bsd-2))) +(define-public libtorrent-rasterbar-1.2 + (package + (inherit libtorrent-rasterbar) + (version "1.2.19") + (source + (origin + (method url-fetch) + (uri + (string-append "https://github.com/arvidn/libtorrent/" + "releases/download/v" version "/" + "libtorrent-rasterbar-" version ".tar.gz")) + (sha256 + (base32 "03p4nvsll568zlyqifid0cn135sg5whbk7g48gkbapnw92ayks7f")))))) + (define-public qbittorrent (package (name "qbittorrent") @@ -506,7 +536,7 @@ (define-public qbittorrent (list qttools-5)) (inputs (list boost - libtorrent-rasterbar + libtorrent-rasterbar-1.2 openssl python-wrapper qtsvg-5 diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 64d8945f8e..7860c43fef 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -585,7 +585,7 @@ (define-public epour (native-inputs (list intltool python-distutils-extra)) (inputs - (list libtorrent-rasterbar python-dbus python-efl python-pyxdg)) + (list libtorrent-rasterbar-1.2 python-dbus python-efl python-pyxdg)) (home-page "https://www.enlightenment.org") (synopsis "EFL Bittorrent client") (description "Epour is a BitTorrent client based on the @dfn{Enlightenment diff --git a/gnu/packages/patches/libtorrent-rasterbar-fix-tests.patch b/gnu/packages/patches/libtorrent-rasterbar-fix-tests.patch new file mode 100644 index 0000000000..40e016a5fc --- /dev/null +++ b/gnu/packages/patches/libtorrent-rasterbar-fix-tests.patch @@ -0,0 +1,304 @@ +From 757a13aa68254eae5b2f4fd3bd51122d5eab0a3b Mon Sep 17 00:00:00 2001 +From: Tomas Volf <~@wolfsden.cz> +Date: Thu, 30 Nov 2023 21:49:29 +0100 +Subject: [PATCH] libtorrent-rasterbar: Fix tests. + +In Guix build environment, TMPFS might be used for the build directory. If that +happens, the test_copy_file fails, since it thinks TMPFS does not support sparse +files (it does though). + +For some reason, the v2_empty_file.torrent is missing from the release +archive (it is present in the v2.0.9 git tag). So copy it over to allow +test_create_torrent to pass. + +* test/test_copy_file.cpp (fs_supports_sparse_files): Consider TMPFS a sparse +file-system. +* test/test_torrents/v2_empty_file.torrent: New file. +--- + test/test_copy_file.cpp | 1 + + test/test_torrents/v2_empty_file.torrent | Bin 0 -> 13529 bytes + 2 files changed, 1 insertion(+) + create mode 100644 test/test_torrents/v2_empty_file.torrent + +diff --git a/test/test_copy_file.cpp b/test/test_copy_file.cpp +index b4a9761..316ec57 100644 +--- a/test/test_copy_file.cpp ++++ b/test/test_copy_file.cpp +@@ -119,6 +119,7 @@ bool fs_supports_sparse_files() + using fsword_t = decltype(statfs::f_type); + static fsword_t const ufs = 0x00011954; + static const std::set sparse_filesystems{ ++ TMPFS_MAGIC, + EXT4_SUPER_MAGIC, EXT3_SUPER_MAGIC, XFS_SUPER_MAGIC, fsword_t(BTRFS_SUPER_MAGIC) + , ufs, REISERFS_SUPER_MAGIC + }; +diff --git a/test/test_torrents/v2_empty_file.torrent b/test/test_torrents/v2_empty_file.torrent +new file mode 100644 +index 0000000000000000000000000000000000000000..6c77b9a69812435d8a272f8627782363c01fbca1 +GIT binary patch +literal 13529 +zcma)iQ;;ysl4aYrZQI>n+qP}nwr#t=wr$(CZM%E_xqD|~CN?&9Un;6HGfrlnsE4W( +zY0SvLW#njL;A~<{VCccf%;jw7=xAc=OzUiCXYKUQ`Cm>8J6i(de_|{c*;rUP8CaQ_ +zI80c$ENo5fj5)bXEv!uloE=R}j9LG+XEbKuGG^nlHnBBxHn-qlTpwe@&y&R9>vmrMO^*_raCFx&s`>nCv9gFzq?g7}KdG`?d35cuv;;XVENN +z_6E-8*8lG7pAP@4Erx&k|8G8~|L*(GTK-1_^FN6gnYe6BoDB$EO&p#6q11xu9}rsu +zn}1ek6DQ|?y#Hc|;NQ%#v9dC=nXvtvHr9Vg +z^zg*$)EsD46!|f~@uXeEKE`j7&86JzkuTED8xRC6TjCCS(#b$9WuxZ2cvxm&a +zsdzdJkL&>Er);gyCnXt=lbU*ZLtMSDc2(}uWX~nGahSb1ge+cKlxo8297nn%vLTV) +z8D2Qyw>Q<78ia?tDfOMpdhafRm|RlfaTHP-YG3I*F9)}UE2!nK`g4JkyGvSDvir$4 +z+oSy)ZpguWa9!Y@BOq#dwbi`UmGGDb42@Xs_`68fE^RCSo(ZvR(!(Y7s}t*~fL&@5Iaik4Vr&grxEm)A+pl)%Aj!4U+x+ +zdS6BEN#Ie)amSeT^Nr03S@DNBO#B+AjB&r&hc;c+)sK->>n7>VKJtmA%S+C( +zIw(cYHhH9_=9fL61+yJIj&6+znp}Z6`f<)_&d*d>86M=3E}gJW%dx1i5V-=~A2EId +zo5Y_A39em0dbkgmey294%p?=ca +z^7amTqw9FO){Pz&NGNJt(0k}>myW?4LL}En54QpH?q3mN!f2eLO>BRi%0zJJS?;%9 +zll^XUMe`(M&b95jt7N!e7VK +zvPd&O5m|yGk1z8PjilWmo3V!mD}B&t*$?lsu>xu+`N?E1pFxy?f!Aa}A?uF6@_2Gu +zWXX_87lqHS67{F~i`obuwP%T=PcKQHj-E$Os~*6zS%t%5)Y_?+SQ`g81$&jsbnH!$ +zzDJIcn@1Mrw}(7>L^#-_an~hLyftP{mH4+bxW{yjWA~&`k2R4XXX5D`_4py$&E~e> +zF=F#!zzjl{g#jb9qG)15K~j$nyKtF@P(h4ffZ!~<(CstX?49_dk~nLS)bZCneU;7m +zSd{~_fn<#^`Ioi@77HM|;ySWYLmgb{q2Yf8HWm~{lq^YJ#W`}l;m4WCVUPP^B^{O5 +zP6FVBs_IC)NMpMVlCc$X2))su56Uj>7qpAH(uF4$2q#&zNRv +zukLh(&fb2OtoR!m_?L0am(=d|CF%39W%idar3Y+cB`JGj!UghlRHCGyhGip!r&lG! +z2H_JSvx4F51_$1-EQ)Kngq;Z(?U5u5GwwrG)h1B%bK?Acv%nm{u9(^vlkw)kB9MU2 +zSnq7QnUN(oO60wf!k9tsm!1s!$trwY?*WSjeNLl#_Pj;&p15dL4-!R2C=VgoaZU0@ +zTwlV6eDxDxJ;iCqGgtJfkJlt;ml(pF_g(vEmo;OKV*8%7=dMpnk+X+lJ0 +z#C1vXsnrGdH64ScB1M_&METvsOLDLj=YkQ&q7|LsMC_$*W$Nxw{t^{yBNbq6zQu@9 +z$oEt)d$s0f&Fy64>4o~`g=2HO>_r3EC=JTa2s0=P&J}UhQc* +zJ^X?sYkYg<1&pu^=vmgSHpNvqeI;%)d0~t0OX~sCo5{=qoGqD=xS~RT;fYeV$Wu*p +zw^f1Z&U4(rkx_kDqrl0@tE>EkYc7)~D08x`tLQ;-n?KZ|&C}x#W~Z$tLpxvWi9%DX +z(8%l>E2*`T_#Q_kte|hB)!kZI`2UJ*+Qp?+p@C$ +zJYK_o@l390d~?MwVwrf39gZ}^4oHa}zF>kqjdS5)i`t5fR)@+tG}K+fe5~B9u7yf{ +zk3oq!(WUjsu9&Y%+KK@{)Zee`#=5Y$w|kSm@b`tYHGIPJ5<5?bN^id#e6fA^nGeMP +z_Ot_VkP)&3>NHOnp~QU+cxi?S^7PHH2zs86~tTG{kL3(@$G`Zu +zv;u#o_$}6ZiiJ?3&41?PIv4uj(stK-an?Ju#1@5d{T?>QMzixii!qHZ3e*tJ%NDXI +z3CTj)FCDg|rjZXw$;@ao!UD!reAHhnWzvqg+2&pZPb_7&V)6)@m&|e?1Y7_-fieoV +zGHr+z2_~t +zzGniKYr0iU`tVm7*EK0l_q5ygV%cFdv@KYlF%)wX2mxA>)jBR}<&@VV^rjWI)3>x*Ht-mR+5v=41gXh=h_{ +zLk~Hx!CJbN9Kul^w=IJ7f}0u1L(bpmexS}wsx0nU3VuG4;)BxtU+}n$X1#ISw4zef +zIE`xz3MKgN^HG8~PRi3w-oVRTEHpIHRkeAJKY7jVkpd`a_{g(}A}IkBrePAv)-=@< +z(Y+%$kz~{g1<`*pOLY5kG&FsVZm_0#hp5zIWocDUY%vcbb~4l|d0@I#2O*ye4HzLq +z-OCjuK_DHFyxGAuFKW<1VG&1QJB_-U1F9X6UbRU2wi5C0r`Ekd!Mgrln2VFE0WGZQ +zx** +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 +zXkAm7g-4|AlB5@2sM?N3X9@CDfoZ$IhyiQZC +zcq#UC7(DcD^QqE)XHa)e5p#5szgPoR{-+~t4s8B_9#D0GjszZfejMDt5IuK)SFh0$ +z>Krla!&j{;UF-Qlfq2d}&kxtY7G&pMx+BIot?2La;eybS(8(Rn4`)TlK1i8+dLKD# +zB(3^2;PCnSg5~m0aDGQ1s>!2H>$|#}?-S~cH2OUO +ztip;K$!Z=Vh335AM(YB~PR07nJKUk0hSKWpFW&}K!rJysk~JEy)#O^j@QE3y!!SGR +zJ8+b#R9LDJPSmr +zUY+A7X&Ek=14%QOc6SC2oVUvL*RuQ|5wD?iuOsa7{O5>9t+v-o678$6D0qCggHu*qDBoZb!HXH1N1uPfH; +zZ-I;o#`sztF|Vpp>b~v!o4Moe%n+L__X}MzD6_vwST+Xxa(V$ZB{jgegRyn&iqoOE-z;=E5&7s?*}W=IoozL8q6s=MZqj}KX(WFE?O1% +z2>@ZIofCAGQ8qJXi6s;N?N#Fql%mvcgX)Z`h{q($-~LN9yJ0?$y`MoAsmES;sD4n* +zAv(+$<+nzz%(%S{02F(QM-37W->M_5KT(FWtkK`Z2&MV?E$PE9T#Z4{mWcAmleHj< +zYkFZ3DS|xkes{1L3ncc}GCo49sH-T7;^wcY;0G{unPa7ZEi*Z93dR9GauB5>`%_#XdGOSQQ7P3L4c#Y%o; +zkF<1Fr;y(Y=H+wFDBv#jqeq$ptB^|WvYu)0@JfA-h_UOA{2r^ti!*tT^v?ow`jjjT +zpCH8t@fv+pi?KDK|J3vQ6?%yu5vms5hKcn?2&rhdfmp$iw1NKe;nuQ=%+~0h@v`sv +zo_;x^HqR%xGU_h;7tjwnE%Txr(weTrZ!^`~m~*(=zSx*_j@oZL#652bmwaRrLtFNn +z=#<#EGLNp&f^c=sU0&XA*j}!>y$9TR_nzj5tNNk2_@NI>*46Q8_ZKJ- +zYH4mQ@TV_{haw|d@K5>kMfYCiDg;seHub`P|eQXDIM +zmo`dnfv|NRd$$fv(83}Co5!I7rZ~IFPSR{uv`(K1;>giujw>pmwtJ~X(FXfxn$jU_$esW^3=-4iw*n%uHT8?S9+=F8%V9D&aA!{GKmk`nuZKC0MiBXlQaC@?XR@1! +z&n!+(7!L8h+DPdUlA1sp=mPK}P$)OKVf7C^fu568o*G$;JLh;!5BNj+*4s)LfdLAX +z&1KVsNQWo12s5JMP#eu1J;a!s`D!B^@!6M5C|W7F5{1nnI>t%MOGx;ab@CZbc@Qk+ +z3IlL(NEzQZoO)okD{PX548>D*v9-N8XPDL7!O$6e!XF;#NGOjuV}Fm~%r-|keIUw? +zok_2C=E8>I754aNzag7J_Pp2w1$2cDI +zzJA;lebw_E(DtjRPBVxCo&WUkzNv6wTzK( +zt`;Lldp6m7#HMgW4W*T14@gc)8Btlr$=fyD~;~w+#=bHGm^1AH_RdURh`4y+zu2tm>P_0Z9Jep@a +zUuKz52n;8FA|mY+&h-vl^tF&0i_$zC8jXQ2aLcq&vt9MnP8G?AXR4=w3%psuXQVQO +zp!es_u8IhC-3kHOY~yTQuT77<&i>5d+&&MdD$^kB^GC7Fgrzg^wg7qUE`?ib%T5 +z2r!M9Qh)zNuY$k2=ls;t_r+P>$>|ZPkwl+R%2?Hq${eZ9!v9IK6pJy0R?RKc^7) +zeAG_-2RY=jK6tnhaDzpoj5J5;m*f}xgApYND=4)^S=l2@2V~iqzB2v=0_8o#;(4U+ +zQkvPU8|g%mpzp&ZetZIc*M4r?RB{>GgPhES4YZ;Q;x{I#IUmPiei&sQU5um~SkW)r +zA;WDUC-oK&vaYtBz4k+-XrMwmD*1*%NkZ?+NwI2@f{Pg5T8w!6sHiC@*wSiKgvy2N +z8*+EjR5>l)MPWr(rO)lpBwc7?ntYSrL$sn};Vo+#G#mi)2I|dXKGWe5+EAq|`UsQX +zYG1Mtf&cNQgV8Ns6*^;(z4^xzAFdoEL-qAGiWqNX?40hA^3iOxV^cEs2gMtWh`q5AZ}5Y9h!2;yGtka=4)q7 +z!QEEDUWft|=FgQEmg=S;5|#^iPLk%X(5 +zr=+y9lql%}(3hXH%aJ-YA;<|e6lYUjyyu~G_N-RmHYNwn>V2Hx5aP>UCvrJ0s$lY{ +zvv!~O`V&oGoAwI3D@{)=hkj>43^!Q7y$i<~`2vIw?HFS&e{PIX88CS4;2zDkFE1~d +zZlY%3E+HXlMu`JJc|X||pY-wNxf^~y*(QAZ{()`K6QWYTIF*kXduh>{+t%k}IdEq0@V^-h8onJvkm0V5Fk8_;x&3ibJ*!0F +z&K}13oC7q|*8$PYQNUh>!_NB4MFqaQP8=fV(m|>Qu#D~%TSG9toXs>cL#VA$!m_@& +zHM0B-uB_2#HhfJ4m1!gVPIlyFwpJ9vE@mm4zmKlu!-rCuS(9c%DCb8}C2*DsxdiNo +zS%@t5mofrodYlpqC(XG2G4L#hD8!}|axM+R9Sdr!$Q!jKi6!v+0m7C1?LL_67bg*OV@OV@qs1oqSZ^($!g7!&~`YLIWJIGwhn~!C*?J +z?%VNUnF4Ik2`JpRDw8q>CIjTg$|uG_4E#jN +zJMwBs7goHmuAa!VQqLc`%=_;7uFN29M7Jz7onV|DkxCth) +zb+^9T4VYP~?8tMQ@0%8{NP`(8KY{j%w}pRlNV7fIkn|Aaf&I$RVG({F +zz?V)(+g1R%?|Ss|P%oZ+%q$c2(c^}H0w3DUH#??me{cO`x=HHY9@7R_;K8n25N5LZ +z=2bg<90f&at+>`nEUQwd;^WV&;dq=lXCvfjj#V+oq$#(fTL(vzM(oMCiY_&V=9SQe +z<78xee6=DOo$FH^!*pSxT!m>|=X8o!+eQf1h5h|ruM~ZAFVs4*nw)zt1ugiicY9X3p`2I +z1lu&xGCQpcGOk|GbT3S$5CD_eL@P_1zLN7f%@FKdMhc=RW%KknD+k)1N#C;l7r`Ve +z&ZWL$6Z^ANrPI*tgOdj~$FTPqo==X3?+=uF(!{Lyq5RFIkBzo)HQ?e<3@;}(jpXov +zv~wT34RbP+4dYqmbKv~!xc`jyNXX)h#k_!) +z*JABZBm&pvR0P>$4e=L?Ak^4xWYRIbJ8`&tC@yrr^qK{jMA`wI6#L4I@tO9pO&L}g +zxR{sN$O3VbFnsUVu2aa@eC&TNNe>>1R<@iQ+|*T*#07M^HY^B7tufLDu5sz#=IZ6U +zzr&u*0=`uZ9fb+xh>YmwOiAqN<-!;t^u@`8Tmm62nGdK_15VbBi69G-@O1+{Y`6)+Glc$ +z=wR?+Vm%a$6)IG9n$6>xu<4;!az?<}-xE=*$iwCX9+FjQa;~9FSx>?E2!vyaskUrZ +z%21y~sWl`X*~$UjH#m23rGt?yz1GGmHaGF8A7|1MrtF6+dHKcWXAoWPN;eBuGf +z@P7uVr#o%GKAI-O>?TcCHyC58V6`vEvFG&UgAO1jX@?u$>BxC9OicVt<4SRRt83#n +zhoD2nP^6sVtP=z1FxL{c-J5e^cfqxkh}ttS2S6YE6*JQb9Sh3|WakMcOS4N>=C>=| +zW0C<%AYqrosXeL?U5DvnI+1RQI?@Ib^w#5<^H){|8%F_-9rw~-r%MMb9uneT_fA@7+5 +z3Xu`E@Csd0LzPeaYFLL0#ws8a*^|WlJYPs6?8)^8$>5r1aO}``&Yy| +zqXpDW>slNTlTCF0wPTj6X4!R_1j>5cT?}Yj?-6P;Z)XXqbgemnb#rJUj5#U;fDS1g +z$O*krlOr4(gx=ZKd$d0St{L<*WRLRasn$FQ6#xr}?k@F^55$bYvC8|6Kl<;8L%C+S +zSgmpL$`9;*?i&>kxWx0v91g>B4}B|#b_;dE*PiSEafFUIKpm9yH!GntJ%1NiaJeG^ +zJ1Qi|KD-L`;Nn~S#$$0xi`SgarK}sl$&+3MExeEd!%lU(!M9RfQXqoDvT#2GgI{I{ +z$a$l{_J`$y5|)%Lq2%JSS?SB?P5;kt!MXVdMnSjP4E&*d?|3(r%kiqI&z>CaS^GL! +zMQ9jNGwfOfWQJpE;CSjw7?DS%!xW0QtKsl +zXf(FVAwAp$t7u%W}$xEfHgEbBq_fi8!7Mo9w2#y*euwkvsbACXd^RkzDNr~3GF1AURIy+xk +zi@pAA+6)YI?`O`;vNk>}uReh1(7fEEmcAFdm}50Xxq+FQ5W<&K1@#`e+FEL`Ff%d~ +z(Ke?!V!YrIc6MCPJg*@_$2W9Astx?^|Z@VgD;7>V?u{|KY36gC8;0#ODC~{5nkrV +zFhogEB$k!@Qa>ACiK)2gpgdR^l&i!iLxV(tr2D4Z2*lH$-e~}|-;(2ykxeh8opN7q +zE96fP=I&v5G?vD6QN{eQEeR#I@_l?L$}E*C!Zw#-9WN=$F{fqmPB<8$KuB8PsQYrN +z0f%|;A`)iQNz6{p$ZHIpL8cg@0?96}Ro^3BFLM+`63)NL;oV+Z0CK+eF5&k`YbrI_ +z0j|3*O0TlzAkVMQSc^MKaFnYs +zHpKyQ(UN6-Znvi&EZOM<%^tZg(%r#DW1pU7O%)>ZFiNY-pl0ql6M#<>!=I*+79~1sJj&P#zRjVrW5Zm5{2?u~1iRX{PobO_rQI +z1hpp~1(f*<`nF0Q=c^x8=;{UMDj7#8j>#fH#n0RgIE3d?=}pWc287(?fU{em2}(_@ +z*i8F}t&Z7E5ftkY7-7mk$%A$3o-oeX3-gEcJd|4}+c~JEkS+G)PiI@mSvklr2wqOc +zlMbOWLS7!WP92e2x9@Z&n&WP%R)DM*bH$4Ty=#<)j!rE4)U=5$jg)aUU)!nqk_0Qs +zdom~?gP-VOaos`qhK_{RM_3UDnp)R6?`N!7HaEeFss3u*{(*@#+k|I2P4H)Nq&aize +zPCnBt%+ZhF6!!(Mu6VybwDnv9Dde{rwu-Kdb2MP`)P>Gqg>aGbp)>r8yBqCXoI2?m +zM%Dfk>pFsU#oG_(i!ak5N}2ug%-=%$8z3$IE-1_v8YqLXj=TeIDK;6Ja%(`Z2=95;NAQweQ>&y_nx38@ +zKktR31La6GH6IlrPw9xZZ@$=fy?FSG>6C@NJh^uu7O)eGf5m`U^@_HfceB&H6UL}g +z(b$CGbpq;nK5*);Z#3|_e7w@*_{WRbXn*oU#GE?(gPDfgAq02$V6jB*1ImIl@yE9a +z3L1Yy!AvYseu)N`1)=c(y}{w`Dz82BFc0|^>d7mU^C^RAo55ttCBAW5X6;+pKM6WC +zU}&?S>#Uadp!Zg<&TMXcin*P|aSJBpI3O8Uma^6f0~{r*4WX2&PmBDn2hz(I7E0)&MvMR7Wxoq)klz7uzrlIRF3v + +literal 0 +HcmV?d00001 + +-- +2.41.0 +