From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?UTF-8?Q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9_?= =?UTF-8?Q?=D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2?= via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#63757: 29.0.91 order of package paths changed: random old versions of packages in load-path Date: Sat, 3 Jun 2023 23:33:37 +1000 Message-ID: References: <83y1l7gzqw.fsf@gnu.org> <87ilcb2p1l.fsf@posteo.net> <87sfb8g85v.fsf@posteo.net> <83v8g496gm.fsf@gnu.org> Reply-To: =?UTF-8?Q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9_?= =?UTF-8?Q?=D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2?= Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="00000000000037fd6605fd39b8f8" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="27451"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Philip Kaludercic , 63757@debbugs.gnu.org, monnier@iro.umontreal.ca To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Jun 03 18:44:36 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1q5UMl-0006tV-Pm for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 03 Jun 2023 18:44:35 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1q5UMH-00019F-Gg; Sat, 03 Jun 2023 12:44:05 -0400 Original-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 1q5UMF-00018A-9L for bug-gnu-emacs@gnu.org; Sat, 03 Jun 2023 12:44:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1q5UMF-0007Nc-17 for bug-gnu-emacs@gnu.org; Sat, 03 Jun 2023 12:44:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1q5UME-0004xA-SV for bug-gnu-emacs@gnu.org; Sat, 03 Jun 2023 12:44:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: =?UTF-8?Q?=D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9_?= =?UTF-8?Q?=D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2?= Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 03 Jun 2023 16:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 63757 X-GNU-PR-Package: emacs Original-Received: via spool by 63757-submit@debbugs.gnu.org id=B63757.168581058918938 (code B ref 63757); Sat, 03 Jun 2023 16:44:02 +0000 Original-Received: (at 63757) by debbugs.gnu.org; 3 Jun 2023 16:43:09 +0000 Original-Received: from localhost ([127.0.0.1]:44204 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q5ULJ-0004vI-K7 for submit@debbugs.gnu.org; Sat, 03 Jun 2023 12:43:09 -0400 Original-Received: from smtp44.i.mail.ru ([95.163.41.82]:51354) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1q5ROG-0002cH-Ij for 63757@debbugs.gnu.org; Sat, 03 Jun 2023 09:34:00 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=list.ru; s=mail4; h=Content-Type:Cc:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version:From:Subject:Content-Type:Content-Transfer-Encoding:To:Cc; bh=esLMfk1pw7ic0pxCGSKcxsse+SMQRisuK++3jCxGhGY=; t=1685799236;x=1685889236; b=cen1VdsCj+T0rS8W4Xa1khgBkS8DZ9WWh2LM1ou5aChXdLYlsdQ02kQYhWMdIb/hnFA8jE36BAbNpyQKuyqk5VmYZsi3UOM8lisQ7GNJONCJNFBnyMbH69e/JLzqmDYn7qyyOYBG/qGNsPgK/ipmLjOcZehwCqf9abGef9dz2Vbwh0nh+8zXPhXON31zJmFPE2E5BSik24sgeji/Ziwg8wdi/E1C5cLx0KmBlxHfIy9M5iaLz5whU8ERz2ZCdd95aF4zydHVwDdixxuVnYihJc7yRKXjlyI2mc14Bi8ZIkk29ghrMLqdN5uNvWz8iFHJKruKiLrxTZAEmvoruIrTkg==; Original-Received: by smtp44.i.mail.ru with esmtpa (envelope-from ) id 1q5RO9-00BmcO-Ud for 63757@debbugs.gnu.org; Sat, 03 Jun 2023 16:33:50 +0300 Original-Received: by mail-wm1-f53.google.com with SMTP id 5b1f17b1804b1-3f6042d605dso27697355e9.2 for <63757@debbugs.gnu.org>; Sat, 03 Jun 2023 06:33:49 -0700 (PDT) X-Gm-Message-State: AC+VfDxBhAdFixGisdMDPjSwTn+CN83k5YkcTnEtZ6JtIpmWcXOCacIl G3XFHd4PSTlS45fw9bYu4fhdio1kiTL2sbSvSLg= X-Google-Smtp-Source: ACHHUZ75GDyoPCzz/Z1q3Jp7qw17I18ZTnIe8XKEv1Sf/bN5RjZI24dj7bUJ7Z2ZSAWeCB1wW/FFMmwDvUg6BL1/qZo= X-Received: by 2002:a05:600c:219a:b0:3f6:41f:5a68 with SMTP id e26-20020a05600c219a00b003f6041f5a68mr4151307wme.29.1685799229192; Sat, 03 Jun 2023 06:33:49 -0700 (PDT) In-Reply-To: X-Gmail-Original-Message-ID: Authentication-Results: smtp44.i.mail.ru; auth=pass smtp.auth=artscan@list.ru smtp.mailfrom=artscan@list.ru X-Mailru-Src: smtp X-7564579A: 78E4E2B564C1792B X-77F55803: 4F1203BC0FB41BD988F25420CCA9469A00ED12DDEDD8E56A1B2FC461420D33EE182A05F538085040002CDA0196A5B517A4EB36A58DD69E629EFE72CDA590939BD5684A03EB0AE40C X-7FA49CB5: FF5795518A3D127A4AD6D5ED66289B5278DA827A17800CE7D4A169723F56FEDEEA1F7E6F0F101C67BD4B6F7A4D31EC0BCC500DACC3FED6E28638F802B75D45FF8AA50765F790063716A4A39B750036BB8638F802B75D45FF36EB9D2243A4F8B5A6FCA7DBDB1FC311F39EFFDF887939037866D6147AF826D871C817C2D609B2903FD4F973BBEC46186F9789CCF6C18C3F8528715B7D10C86878DA827A17800CE7A6779F98BF527B7A9FA2833FD35BB23D27C277FBC8AE2E8B92E378BE266A6926A471835C12D1D977C4224003CC836476EB9C4185024447017B076A6E789B0E975F5C1EE8F4F765FCA185474B3EAB74723AA81AA40904B5D9CF19DD082D7633A078D18283394535A93AA81AA40904B5D98AA50765F790063776F60A7BEAA2A3BFD81D268191BDAD3D3666184CF4C3C14F3FC91FA280E0CE3D1A620F70A64A45A98AA50765F79006372E808ACE2090B5E1725E5C173C3A84C3C5EA940A35A165FF2DBA43225CD8A89F83C798A30B85E16BC6EABA9B74D0DA47B5C8C57E37DE458BEDA766A37F9254B7 X-C1DE0DAB: 0D63561A33F958A5152B24F6A81662867BF3BDE00DEDE1BD168BFE2458019D3DF87CCE6106E1FC07E67D4AC08A07B9B065B78C30F681404DCB5012B2E24CD356 X-C8649E89: 1C3962B70DF3F0ADE00A9FD3E00BEEDF77DD89D51EBB7742D3581295AF09D3DF87807E0823442EA2ED31085941D9CD0AF7F820E7B07EA4CF1A35CB512A612962F1CBCB3C28A632C0949E9DBB317D46A8EAB593E35CF184E0C7834276CD052397F4BC53521BD43B0107B86B9CDE04D2F447E3DF4CFBD9669BCAACD699CDC6F98202C26D483E81D6BE1362B2BFE906F14DEF4373B74A18CF49CC2E138FFB4ACBED X-D57D3AED: 3ZO7eAau8CL7WIMRKs4sN3D3tLDjz0dLbV79QFUyzQ2Ujvy7cMT6pYYqY16iZVKkSc3dCLJ7zSJH7+u4VD18S7Vl4ZUrpaVfd2+vE6kuoey4m4VkSEu530nj6fImhcD4MUrOEAnl0W826KZ9Q+tr5ycPtXkTV4k65bRjmOUUP8cvGozZ33TWg5HZplvhhXbhDGzqmQDTd6OAevLeAnq3Ra9uf7zvY2zzsIhlcp/Y7m53TZgf2aB4JOg4gkr2biojyw2weiAeMrrUOWdXI+j09A== X-Mailru-Sender: 4C235FE2E5D2D8902A401EE5AFAC8D5571FF174659C805142DD08B15BEE1866889172E9EEAD0233CA3C36B4D8423ABA5C77752E0C033A69EC36ED9D1848BBC3A06988B367FA93C37B4A721A3011E896F X-Mras: Ok X-Mailman-Approved-At: Sat, 03 Jun 2023 12:43:04 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:262874 Archived-At: --00000000000037fd6605fd39b8f8 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable By the way, is "Prefer builtin packages" related to (package-disabled-p p1 v1)? I think the comment and the code mean different things. On Sat, Jun 3, 2023 at 10:53=E2=80=AFPM =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0= =B8=D0=B9 =D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 wrote: > The idea is to split the list to 3 parts and to sort each of them by > version-list-< separately (but I am not sure which combination of > preference is correct) and to flatten at the end > > ((VC packages) (builtin packages) (the rest)) > > I use (package-vc-p p1) and (assq p1 package--builtins) predicates for > splitting (not sure for builtin). The code below needs refactoring. > > (require 'cl) > (defun package--get-activatable-pkg (pkg-name) > ;; Is "activatable" a word? > (let ((pkg-descs > (flatten-list > (mapcar (lambda (x) > (sort x > (lambda (p1 p2) > (let ((v1 (package-desc-version p1)) > (v2 (package-desc-version p2))) > (version-list-< v2 v1))))) > (let ((y (reduce > (lambda (p1 p2) > (if (package-vc-p p1) > (push p1 (first p2)) > (push p1 (second p2))) > p2) > (cdr (assq pkg-name package-alist)) > :initial-value (list nil nil) > :from-end t))) > (append (list (car y)) > (reduce > (lambda (p1 p2) > (if (assq p1 package--builtins) > (push p1 (first p2)) > (push p1 (second p2)) > p2)) > (cadr y) > :initial-value (list nil nil) > :from-end t))))))) > ;; Check if PACKAGE is available in `package-alist'. > (while > (when pkg-descs > (let ((available-version (package-desc-version (car pkg-descs))= )) > (package-disabled-p pkg-name available-version))) > (setq pkg-descs (cdr pkg-descs))) > (car pkg-descs))) > > > > On Sat, Jun 3, 2023 at 9:50=E2=80=AFPM =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0= =B8=D0=B9 =D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 wrote: > >> The fix above will not work. >> >> I can do it for "Prefer VC packages" only: >> >> (require 'cl) >> (defun package--get-activatable-pkg (pkg-name) >> ;; Is "activatable" a word? >> (let ((pkg-descs >> (flatten-list >> (mapcar (lambda (x) >> (sort x >> (lambda (p1 p2) >> (let ((v1 (package-desc-version p1)) >> (v2 (package-desc-version p2))) >> (version-list-< v2 v1))))) >> (reduce >> (lambda (p1 p2) >> (if (package-vc-p p1) >> (push p1 (first p2)) >> (push p1 (second p2))) >> p2) >> (cdr (assq pkg-name package-alist)) >> :initial-value (list nil nil) >> :from-end t))))) >> ;; Check if PACKAGE is available in `package-alist'. >> (while >> (when pkg-descs >> (let ((available-version (package-desc-version (car >> pkg-descs)))) >> (package-disabled-p pkg-name available-version))) >> (setq pkg-descs (cdr pkg-descs))) >> (car pkg-descs))) >> >> >> Still can't for "Prefer builtin packages". >> >> >> On Sat, Jun 3, 2023 at 8:37=E2=80=AFPM Eli Zaretskii wrot= e: >> >>> > From: Philip Kaludercic >>> > Cc: =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9 =D0=91=D0=BE=D0=B9=D0= =BA=D0=BE=D0=B2 , >>> > 63757@debbugs.gnu.org, Stefan >>> > Monnier >>> > Date: Sat, 03 Jun 2023 10:19:24 +0000 >>> > >>> > > Won't this work: >>> > > >>> > > diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.e= l >>> > > index 01826da273d..7eb185e7042 100644 >>> > > --- a/lisp/emacs-lisp/package.el >>> > > +++ b/lisp/emacs-lisp/package.el >>> > > @@ -927,7 +927,9 @@ package--get-activatable-pkg >>> > > (package-vc-p p2) >>> > > ;; Prefer builtin packages. >>> > > (package-disabled-p p1 v1) >>> > > - (not (package-disabled-p p2 v2))))))= )) >>> > > + (not (package-disabled-p p2 v2)) >>> > > + ;; Prever newer packages >>> > > + (version-list-< v2 v1))))))) >>> > > ;; Check if PACKAGE is available in `package-alist'. >>> > > (while >>> > > (when pkg-descs >>> > >>> > Ping? >>> >>> If there's no response, and you think this is the right fix, we can >>> simply install it, I guess. >>> >> >> >> -- >> __________________________ >> >> =D0=A1 =D1=83=D0=B2=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC, >> =D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0= =B8=D0=B9 =D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2=D0=B8=D1=87 >> =D1=81=D0=BE=D1=82. 8-924-202-25-65 >> e-mail: artscan@list.ru >> > > > -- > __________________________ > > =D0=A1 =D1=83=D0=B2=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC, > =D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8= =D0=B9 =D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2=D0=B8=D1=87 > =D1=81=D0=BE=D1=82. 8-924-202-25-65 > e-mail: artscan@list.ru > --=20 __________________________ =D0=A1 =D1=83=D0=B2=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC, =D0=91=D0=BE=D0=B9=D0=BA=D0=BE=D0=B2 =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8= =D0=B9 =D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B5=D0=B2=D0=B8=D1=87 =D1=81=D0=BE=D1=82. 8-924-202-25-65 e-mail: artscan@list.ru --00000000000037fd6605fd39b8f8 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdj5CeSB0aGUgd2F5LCBpcyAmcXVvdDtQcmVmZXIgYnVpbHRpbiBw YWNrYWdlcyZxdW90OyByZWxhdGVkIHRvIChwYWNrYWdlLWRpc2FibGVkLXAgcDEgdjEpPyBJIHRo aW5rIHRoZSBjb21tZW50IGFuZCB0aGUgY29kZSBtZWFuIGRpZmZlcmVudCB0aGluZ3MuPGJyPjwv ZGl2Pjxicj48L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIi IGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBTYXQsIEp1biAzLCAyMDIzIGF0IDEwOjUz4oCvUE0g0JXQ stCz0LXQvdC40Lkg0JHQvtC50LrQvtCyICZsdDs8YSBocmVmPSJtYWlsdG86YXJ0c2NhbkBsaXN0 LnJ1Ij5hcnRzY2FuQGxpc3QucnU8L2E+Jmd0OyB3cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUg Y2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRl ci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYg ZGlyPSJsdHIiPjxkaXY+PGRpdj5UaGUgaWRlYSBpcyB0byBzcGxpdCB0aGUgbGlzdCB0byAzIHBh cnRzIGFuZCB0byBzb3J0IGVhY2ggb2YgdGhlbSBieSB2ZXJzaW9uLWxpc3QtJmx0OyBzZXBhcmF0 ZWx5IChidXQgSSBhbSBub3Qgc3VyZSB3aGljaCBjb21iaW5hdGlvbiBvZiBwcmVmZXJlbmNlIGlz IGNvcnJlY3QpIGFuZCB0byBmbGF0dGVuIGF0IHRoZSBlbmQ8YnI+PGJyPjwvZGl2PigoVkMgcGFj a2FnZXMpIChidWlsdGluIHBhY2thZ2VzKSAodGhlIHJlc3QpKTxicj48YnI+PC9kaXY+SSB1c2Ug KHBhY2thZ2UtdmMtcCBwMSkgYW5kIChhc3NxIHAxIHBhY2thZ2UtLWJ1aWx0aW5zKSBwcmVkaWNh dGVzIGZvciBzcGxpdHRpbmcgKG5vdCBzdXJlIGZvciBidWlsdGluKS4gVGhlIGNvZGUgYmVsb3cg bmVlZHMgcmVmYWN0b3JpbmcuPGJyPjxicj4ocmVxdWlyZSAmIzM5O2NsKTxicj4oZGVmdW4gcGFj a2FnZS0tZ2V0LWFjdGl2YXRhYmxlLXBrZyAocGtnLW5hbWUpPGJyPsKgIDs7IElzICZxdW90O2Fj dGl2YXRhYmxlJnF1b3Q7IGEgd29yZD88YnI+wqAgKGxldCAoKHBrZy1kZXNjczxicj7CoCDCoCDC oCDCoCDCoChmbGF0dGVuLWxpc3Q8YnI+wqAgwqAgwqAgwqAgwqAgKG1hcGNhciAobGFtYmRhICh4 KSA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHNvcnQgeDxicj7CoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAobGFtYmRhIChwMSBwMik8YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGxldCAoKHYxIChwYWNrYWdlLWRlc2Mt dmVyc2lvbiBwMSkpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgICh2MiAocGFja2FnZS1kZXNjLXZlcnNpb24gcDIpKSk8YnI+wqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHZlcnNpb24tbGlzdC0mbHQ7IHYyIHYx KSkpKSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGxldCAoKHkgKHJlZHVjZTxicj7C oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAobGFtYmRhIChwMSBwMik8 YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGlmIChwYWNr YWdlLXZjLXAgcDEpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIChwdXNoIHAxIChmaXJzdCBwMikpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChwdXNoIHAxIChzZWNvbmQgcDIpKSk8YnI+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcDIpPGJyPsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIChjZHIgKGFzc3EgcGtnLW5hbWUgcGFja2Fn ZS1hbGlzdCkpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIDpp bml0aWFsLXZhbHVlIChsaXN0IG5pbCBuaWwpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIDpmcm9tLWVuZCB0KSkpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIChhcHBlbmQgKGxpc3QgKGNhciB5KSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgKHJlZHVjZTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoChsYW1iZGEgKHAxIHAyKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoChpZiAoYXNzcSBwMSBwYWNrYWdlLS1idWlsdGlucyk8 YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAo cHVzaCBwMSAoZmlyc3QgcDIpKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoChwdXNoIHAxIChzZWNvbmQgcDIpKTxicj7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHAyKSk8YnI+wqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoY2FkciB5KTxicj7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoDppbml0aWFsLXZhbHVlIChsaXN0IG5pbCBuaWwp PGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgOmZyb20tZW5k IHQpKSkpKSkpPGJyPsKgIMKgIDs7IENoZWNrIGlmIFBBQ0tBR0UgaXMgYXZhaWxhYmxlIGluIGBw YWNrYWdlLWFsaXN0JiMzOTsuPGJyPsKgIMKgICh3aGlsZTxicj7CoCDCoCDCoCDCoCAod2hlbiBw a2ctZGVzY3M8YnI+wqAgwqAgwqAgwqAgwqAgKGxldCAoKGF2YWlsYWJsZS12ZXJzaW9uIChwYWNr YWdlLWRlc2MtdmVyc2lvbiAoY2FyIHBrZy1kZXNjcykpKSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAg KHBhY2thZ2UtZGlzYWJsZWQtcCBwa2ctbmFtZSBhdmFpbGFibGUtdmVyc2lvbikpKTxicj7CoCDC oCDCoCAoc2V0cSBwa2ctZGVzY3MgKGNkciBwa2ctZGVzY3MpKSk8YnI+wqAgwqAgKGNhciBwa2ct ZGVzY3MpKSk8YnI+PGJyPjxicj48L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxk aXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBTYXQsIEp1biAzLCAyMDIzIGF0IDk6 NTDigK9QTSDQldCy0LPQtdC90LjQuSDQkdC+0LnQutC+0LIgJmx0OzxhIGhyZWY9Im1haWx0bzph cnRzY2FuQGxpc3QucnUiIHRhcmdldD0iX2JsYW5rIj5hcnRzY2FuQGxpc3QucnU8L2E+Jmd0OyB3 cm90ZTo8YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFy Z2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwy MDQpO3BhZGRpbmctbGVmdDoxZXgiPjxkaXYgZGlyPSJsdHIiPjxkaXY+PGRpdj5UaGUgZml4IGFi b3ZlIHdpbGwgbm90IHdvcmsuPGJyPjxicj5JIGNhbiBkbyBpdCBmb3IgJnF1b3Q7UHJlZmVyIFZD IHBhY2thZ2VzJnF1b3Q7IG9ubHk6PGJyPjxicj4ocmVxdWlyZSAmIzM5O2NsKTxicj4oZGVmdW4g cGFja2FnZS0tZ2V0LWFjdGl2YXRhYmxlLXBrZyAocGtnLW5hbWUpPGJyPsKgIDs7IElzICZxdW90 O2FjdGl2YXRhYmxlJnF1b3Q7IGEgd29yZD88YnI+wqAgKGxldCAoKHBrZy1kZXNjczxicj7CoCDC oCDCoCDCoCDCoChmbGF0dGVuLWxpc3Q8YnI+wqAgwqAgwqAgwqAgwqAgKG1hcGNhciAobGFtYmRh ICh4KSA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHNvcnQgeDxicj7CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAobGFtYmRhIChwMSBwMik8YnI+wqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKGxldCAoKHYxIChwYWNrYWdlLWRl c2MtdmVyc2lvbiBwMSkpPGJyPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgICh2MiAocGFja2FnZS1kZXNjLXZlcnNpb24gcDIpKSk8YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHZlcnNpb24tbGlzdC0mbHQ7IHYy IHYxKSkpKSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKHJlZHVjZTxicj7CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoChsYW1iZGEgKHAxIHAyKTxicj7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoChpZiAocGFja2FnZS12Yy1wIHAxKTxicj7CoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoChwdXNoIHAxIChmaXJzdCBwMikpPGJyPsKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHB1c2ggcDEgKHNlY29uZCBwMikpKTxicj7CoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoHAyKTxicj7CoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoChjZHIgKGFzc3EgcGtnLW5hbWUgcGFja2FnZS1hbGlzdCkpPGJyPsKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgOmluaXRpYWwtdmFsdWUgKGxpc3QgbmlsIG5pbCk8YnI+wqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqA6ZnJvbS1lbmQgdCkpKSkpPGJyPsKgIMKgIDs7IENoZWNrIGlm IFBBQ0tBR0UgaXMgYXZhaWxhYmxlIGluIGBwYWNrYWdlLWFsaXN0JiMzOTsuPGJyPsKgIMKgICh3 aGlsZTxicj7CoCDCoCDCoCDCoCAod2hlbiBwa2ctZGVzY3M8YnI+wqAgwqAgwqAgwqAgwqAgKGxl dCAoKGF2YWlsYWJsZS12ZXJzaW9uIChwYWNrYWdlLWRlc2MtdmVyc2lvbiAoY2FyIHBrZy1kZXNj cykpKSk8YnI+wqAgwqAgwqAgwqAgwqAgwqAgKHBhY2thZ2UtZGlzYWJsZWQtcCBwa2ctbmFtZSBh dmFpbGFibGUtdmVyc2lvbikpKTxicj7CoCDCoCDCoCAoc2V0cSBwa2ctZGVzY3MgKGNkciBwa2ct ZGVzY3MpKSk8YnI+wqAgwqAgKGNhciBwa2ctZGVzY3MpKSk8YnI+PGJyPjxicj48L2Rpdj5TdGls bCBjYW4mIzM5O3QgZm9yICZxdW90O1ByZWZlciBidWlsdGluIHBhY2thZ2VzJnF1b3Q7Ljxicj48 YnI+PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRy IiBjbGFzcz0iZ21haWxfYXR0ciI+T24gU2F0LCBKdW4gMywgMjAyMyBhdCA4OjM34oCvUE0gRWxp IFphcmV0c2tpaSAmbHQ7PGEgaHJlZj0ibWFpbHRvOmVsaXpAZ251Lm9yZyIgdGFyZ2V0PSJfYmxh bmsiPmVsaXpAZ251Lm9yZzwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFz cz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxl ZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+Jmd0OyBGcm9t OiBQaGlsaXAgS2FsdWRlcmNpYyAmbHQ7PGEgaHJlZj0ibWFpbHRvOnBoaWxpcGtAcG9zdGVvLm5l dCIgdGFyZ2V0PSJfYmxhbmsiPnBoaWxpcGtAcG9zdGVvLm5ldDwvYT4mZ3Q7PGJyPg0KJmd0OyBD Yzog0JXQstCz0LXQvdC40Lkg0JHQvtC50LrQvtCyICZsdDs8YSBocmVmPSJtYWlsdG86YXJ0c2Nh bkBsaXN0LnJ1IiB0YXJnZXQ9Il9ibGFuayI+YXJ0c2NhbkBsaXN0LnJ1PC9hPiZndDssPGJyPg0K Jmd0O8KgIMKgPGEgaHJlZj0ibWFpbHRvOjYzNzU3QGRlYmJ1Z3MuZ251Lm9yZyIgdGFyZ2V0PSJf YmxhbmsiPjYzNzU3QGRlYmJ1Z3MuZ251Lm9yZzwvYT4swqAgU3RlZmFuPGJyPg0KJmd0O8KgIE1v bm5pZXIgJmx0OzxhIGhyZWY9Im1haWx0bzptb25uaWVyQGlyby51bW9udHJlYWwuY2EiIHRhcmdl dD0iX2JsYW5rIj5tb25uaWVyQGlyby51bW9udHJlYWwuY2E8L2E+Jmd0Ozxicj4NCiZndDsgRGF0 ZTogU2F0LCAwMyBKdW4gMjAyMyAxMDoxOToyNCArMDAwMDxicj4NCiZndDsgPGJyPg0KJmd0OyAm Z3Q7IFdvbiYjMzk7dCB0aGlzIHdvcms6PGJyPg0KJmd0OyAmZ3Q7PGJyPg0KJmd0OyAmZ3Q7IGRp ZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3AvcGFja2FnZS5lbCBiL2xpc3AvZW1hY3MtbGlzcC9w YWNrYWdlLmVsPGJyPg0KJmd0OyAmZ3Q7IGluZGV4IDAxODI2ZGEyNzNkLi43ZWIxODVlNzA0MiAx MDA2NDQ8YnI+DQomZ3Q7ICZndDsgLS0tIGEvbGlzcC9lbWFjcy1saXNwL3BhY2thZ2UuZWw8YnI+ DQomZ3Q7ICZndDsgKysrIGIvbGlzcC9lbWFjcy1saXNwL3BhY2thZ2UuZWw8YnI+DQomZ3Q7ICZn dDsgQEAgLTkyNyw3ICs5MjcsOSBAQCBwYWNrYWdlLS1nZXQtYWN0aXZhdGFibGUtcGtnPGJyPg0K Jmd0OyAmZ3Q7wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg KHBhY2thZ2UtdmMtcCBwMik8YnI+DQomZ3Q7ICZndDvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA7OyBQcmVmZXIgYnVpbHRpbiBwYWNrYWdlcy48YnI+DQom Z3Q7ICZndDvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCAo cGFja2FnZS1kaXNhYmxlZC1wIHAxIHYxKTxicj4NCiZndDsgJmd0OyAtwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgKG5vdCAocGFja2FnZS1kaXNhYmxlZC1wIHAy IHYyKSkpKSkpKSk8YnI+DQomZ3Q7ICZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIChub3QgKHBhY2thZ2UtZGlzYWJsZWQtcCBwMiB2MikpPGJyPg0KJmd0 OyAmZ3Q7ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCA7OyBQ cmV2ZXIgbmV3ZXIgcGFja2FnZXM8YnI+DQomZ3Q7ICZndDsgK8KgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgICh2ZXJzaW9uLWxpc3QtJmx0OyB2MiB2MSkpKSkpKSk8 YnI+DQomZ3Q7ICZndDvCoCDCoCDCoCA7OyBDaGVjayBpZiBQQUNLQUdFIGlzIGF2YWlsYWJsZSBp biBgcGFja2FnZS1hbGlzdCYjMzk7Ljxicj4NCiZndDsgJmd0O8KgIMKgIMKgICh3aGlsZTxicj4N CiZndDsgJmd0O8KgIMKgIMKgIMKgIMKgICh3aGVuIHBrZy1kZXNjczxicj4NCiZndDsgPGJyPg0K Jmd0OyBQaW5nPzxicj4NCjxicj4NCklmIHRoZXJlJiMzOTtzIG5vIHJlc3BvbnNlLCBhbmQgeW91 IHRoaW5rIHRoaXMgaXMgdGhlIHJpZ2h0IGZpeCwgd2UgY2FuPGJyPg0Kc2ltcGx5IGluc3RhbGwg aXQsIEkgZ3Vlc3MuPGJyPg0KPC9ibG9ja3F1b3RlPjwvZGl2PjxiciBjbGVhcj0iYWxsIj48YnI+ PHNwYW4gY2xhc3M9ImdtYWlsX3NpZ25hdHVyZV9wcmVmaXgiPi0tIDwvc3Bhbj48YnI+PGRpdiBk aXI9Imx0ciIgY2xhc3M9ImdtYWlsX3NpZ25hdHVyZSI+PGZvbnQgY29sb3I9IiM4ODg4ODgiPl9f X19fX19fX19fX19fX19fX19fX19fX19fPGJyPg0KPGJyPg0K0KEg0YPQstCw0LbQtdC90LjQtdC8 LDxicj4NCtCR0L7QudC60L7QsiDQldCy0LPQtdC90LjQuSDQkNC70LXQutGB0LXQtdCy0LjRhzxi cj4NCtGB0L7Rgi4gOC05MjQtMjAyLTI1LTY1PGJyPg0KZS1tYWlsOiA8YSBocmVmPSJtYWlsdG86 YXJ0c2NhbkBsaXN0LnJ1IiB0YXJnZXQ9Il9ibGFuayI+YXJ0c2NhbkBsaXN0LnJ1PC9hPjwvZm9u dD48L2Rpdj4NCjwvYmxvY2txdW90ZT48L2Rpdj48YnIgY2xlYXI9ImFsbCI+PGJyPjxzcGFuIGNs YXNzPSJnbWFpbF9zaWduYXR1cmVfcHJlZml4Ij4tLSA8L3NwYW4+PGJyPjxkaXYgZGlyPSJsdHIi IGNsYXNzPSJnbWFpbF9zaWduYXR1cmUiPjxmb250IGNvbG9yPSIjODg4ODg4Ij5fX19fX19fX19f X19fX19fX19fX19fX19fXzxicj4NCjxicj4NCtChINGD0LLQsNC20LXQvdC40LXQvCw8YnI+DQrQ kdC+0LnQutC+0LIg0JXQstCz0LXQvdC40Lkg0JDQu9C10LrRgdC10LXQstC40Yc8YnI+DQrRgdC+ 0YIuIDgtOTI0LTIwMi0yNS02NTxicj4NCmUtbWFpbDogPGEgaHJlZj0ibWFpbHRvOmFydHNjYW5A bGlzdC5ydSIgdGFyZ2V0PSJfYmxhbmsiPmFydHNjYW5AbGlzdC5ydTwvYT48L2ZvbnQ+PC9kaXY+ DQo8L2Jsb2NrcXVvdGU+PC9kaXY+PGJyIGNsZWFyPSJhbGwiPjxicj48c3BhbiBjbGFzcz0iZ21h aWxfc2lnbmF0dXJlX3ByZWZpeCI+LS0gPC9zcGFuPjxicj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0i Z21haWxfc2lnbmF0dXJlIj48Zm9udCBjb2xvcj0iIzg4ODg4OCI+X19fX19fX19fX19fX19fX19f X19fX19fX188YnI+DQo8YnI+DQrQoSDRg9Cy0LDQttC10L3QuNC10LwsPGJyPg0K0JHQvtC50LrQ vtCyINCV0LLQs9C10L3QuNC5INCQ0LvQtdC60YHQtdC10LLQuNGHPGJyPg0K0YHQvtGCLiA4LTky NC0yMDItMjUtNjU8YnI+DQplLW1haWw6IDxhIGhyZWY9Im1haWx0bzphcnRzY2FuQGxpc3QucnUi IHRhcmdldD0iX2JsYW5rIj5hcnRzY2FuQGxpc3QucnU8L2E+PC9mb250PjwvZGl2Pg0K --00000000000037fd6605fd39b8f8--